/* ========================================================
   Code Theme — syntax highlighting for code blocks (highlight.js).

   每套调色板只定义一次（CSS 变量），规则本身只写一遍：此前每条规则都带一份
   `[data-theme="dark"]` 副本，改一个颜色要改两处、加一个语言类别容易漏。

   层次（后者覆盖前者）：
     1. `:root`            —— 浅色，默认；
     2. `[data-theme=…]`   —— 应用主题（Theme 切换）；
     3. `[data-code-theme]`—— `ui.code_theme` 下发（auto 时不设属性，即跟随应用主题）。
   所以"深色界面 + 浅色代码块"这种组合也能表达，而默认行为与从前一致。
   `html[...]` 比 `[data-theme=…]` 多一个类型选择器 —— 代码主题是显式配置，
   必须压过应用主题，不能靠源码顺序。
   ======================================================== */

:root, html[data-code-theme="light"] {
  --code-fg: #24292e;
  --code-bg: #f6f8fa;
  --code-comment: #6a737d;
  --code-keyword: #d73a49;
  --code-string: #032f62;
  --code-number: #005cc5;
  --code-title: #6f42c1;
  --code-builtin: #e36209;
  --code-deletion-bg: #ffeef0;
  --code-deletion-fg: #b31d28;
  --code-addition-bg: #f0fff4;
  --code-addition-fg: #22863a;
  --code-template-tag: #22863a;
}

[data-theme="dark"], html[data-code-theme="dark"] {
  --code-fg: #c9d1d9;
  --code-bg: #161b22;
  --code-comment: #8b949e;
  --code-keyword: #ff7b72;
  --code-string: #a5d6ff;
  --code-number: #79c0ff;
  --code-title: #d2a8ff;
  --code-builtin: #ffa657;
  --code-deletion-bg: #490202;
  --code-deletion-fg: #ffa198;
  --code-addition-bg: #04260f;
  --code-addition-fg: #7ee787;
  --code-template-tag: #7ee787;
}

.hljs {
  display: block;
  overflow-x: auto;
  padding: var(--spacing-md) var(--spacing-lg);
  color: var(--code-fg);
  background: var(--code-bg);
}

/* Comments */ .hljs-comment, .hljs-quote { color: var(--code-comment); font-style: italic; }
/* Keywords */ .hljs-keyword, .hljs-selector-tag, .hljs-subst { color: var(--code-keyword); }
/* Strings */ .hljs-string, .hljs-doctag, .hljs-regexp { color: var(--code-string); }
/* Numbers */ .hljs-number, .hljs-literal, .hljs-variable, .hljs-template-variable, .hljs-tag .hljs-attr { color: var(--code-number); }
/* Function / title */ .hljs-title, .hljs-name, .hljs-attr { color: var(--code-title); }
/* Built-ins */ .hljs-built_in, .hljs-type { color: var(--code-builtin); }
/* Symbols */ .hljs-symbol, .hljs-bullet, .hljs-link { color: var(--code-number); }

/* Deletion / Addition */
.hljs-deletion { background: var(--code-deletion-bg); color: var(--code-deletion-fg); }
.hljs-addition { background: var(--code-addition-bg); color: var(--code-addition-fg); }

/* Emphasis */
.hljs-emphasis { font-style: italic; }
.hljs-strong { font-weight: 600; }

/* Section */ .hljs-section { color: var(--code-number); font-weight: 600; }
/* Meta */ .hljs-meta { color: var(--code-comment); }
.hljs-meta-keyword { color: var(--code-keyword); }
.hljs-meta-string { color: var(--code-string); }
/* Tags */ .hljs-selector-class, .hljs-selector-id, .hljs-selector-attr, .hljs-selector-pseudo { color: var(--code-title); }
/* Template */ .hljs-template-tag { color: var(--code-template-tag); }
/* Form */ .hljs-formula { color: var(--code-fg); }
/* Attribute */ .hljs-attribute { color: var(--code-number); }
