/* ============================================================================
   @pascal/design-tokens — 唯一真源是仓库根 DESIGN.md §2（颜色 / 字体 / 间距）。
   任何新增视觉决定先写进 DESIGN.md 再改这个文件；两处不一致时以 DESIGN.md 为准，
   由 scripts/check-design-tokens.mjs 在构建/测试期断言。
   本文件只含自定义属性（token），不含任何选择器规则或字体子集引用 —— 那些仍归
   site/src/styles/global.css（M0，DESIGN.md 附录：MCP 平台方案 §5.1 / TODOS 抽出记录）。
   ========================================================================== */

/* ---------- Token：:root 定义 light 全套（DESIGN §2.1） ---------- */
:root {
  color-scheme: light;

  --bg: #f3f5f8;
  --surface: #ffffff;
  --surface-read: #ffffff;
  /* 相邻表面色：白底/卡底上要「抬一档」的行（搜索结果选中行）。不是第二种卡片底，别当 --surface 用。 */
  --surface-2: #eef1f5;
  --fg: #16233a;
  --mute: #5b6982;
  --line: #c9d2e0;
  /* 2026-09-12 收敛：浅色强调色 #b8791a → #9c6414。旧值白字 3.63、当正文 3.32，都低于 AA 4.5；
     新值 正文 4.53 / 白字 4.95 / 白底 4.95，只深一档，视觉位移最小。深色 #f2b441 是 10.15，不动。
     --warn 浅色与 --accent 同值（DESIGN §2.1），一起改。--heat-0…5 是填充不是文字，不动。 */
  --accent: #9c6414;
  --accent-fg: #ffffff;
  --ok: #2f8f5b;
  --warn: #9c6414;
  --fail: #c4433a;
  --selection-bg: #b8791a;
  --selection-fg: #ffffff;

  /* 弹层遮罩：两个主题同值 —— 深浅底下都要把页面压暗。搜索弹层 ::backdrop 用它，
     全站不再留第二处硬编码颜色（2026-09-12，DESIGN §2.1）。 */
  --scrim: rgba(10, 14, 24, 0.45);

  /* hero 底：同色系极淡径向亮度（DESIGN §4.1 例外，2026-09-10 拍板）——不是彩色渐变，只给星图一层深空感 */
  --hero-glow: radial-gradient(1400px 700px at 50% 42%, #e6ebf2 0%, #f3f5f8 60%);

  /* 星图：浅色是线稿风（描边节点 + 蓝图蓝边线，DESIGN §1 / §2.1） */
  --graph-edge-rgb: 31, 78, 140;
  --graph-edge-a0: 0.15;
  --graph-edge-arange: 0.35;
  --graph-node-fill: #ffffff;
  --graph-node-stroke: #1f4e8c;
  --graph-light: 1;

  /* 记录热力图 6 级（琥珀色阶，主公 2026-09-11 定；DESIGN §4.6） */
  --heat-0: #eef1f5;
  --heat-1: #f3e6cf;
  --heat-2: #e9cf9a;
  --heat-3: #d9ad55;
  --heat-4: #b8791a;
  --heat-5: #8a5a12;
  --hud-grid: rgba(31, 78, 140, 0.08);

  --font-serif: "Noto Serif SC", "Songti SC", "SimSun", serif;
  /* FONTS_BODY=0 是默认（DESIGN §2.2）：正文走系统中文字体栈；FONTS_BODY=1 时 @font-face 才生成，
     "Noto Sans SC" 排在系统栈之后，装了就用、没装也不触发任何网络请求 */
  --font-sans: "PingFang SC", "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, Menlo, monospace;

  --s1: 4px;
  --s2: 8px;
  --s3: 16px;
  /* 18px 不在 8pt 阶梯上，却已经是事实上的第 7 个间距档（导航右侧、列表行、经历行、HUD…共 15 处）：
     与其散成裸数字，不如立成 token（2026-09-12 收敛，DESIGN §2.3）。 */
  --s35: 18px;
  --s4: 24px;
  --s5: 32px;
  --s6: 56px;

  --maxw: 1160px;
  --gut: 24px;
  --read: 36em;

  --ease: cubic-bezier(0.2, 0.7, 0.2, 1);
  --dur: 200ms;

  /**
   * 静态星图 SVG 的半径 / 字号补偿（`.starmap-svg circle`）。
   * 数值与「SVG 在屏幕上被放大多少倍」绑死：≥768px 那档现在把 SVG 钉在 783px 宽
   * （见 .starmap-svg），缩放恒为 ~1.37，所以补偿只要 0.8；窄屏另有一档。
   */
  --sm-scale: 0.8;
}

/* 深色：跟随系统，且未被 data-theme="light" 显式钉住时生效（DESIGN §2.1 实现约定） */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;

    --bg: #0b1220;
    --surface: #0f182b;
    --surface-read: #111b30;
    --surface-2: #162135;
    --fg: #eef0f4;
    --mute: #9aa3b5;
    --line: #1e2a40;
    --accent: #f2b441;
    --accent-fg: #0b1220;
    --ok: #5ccb8a;
    --warn: #f2b441;
    --fail: #e5645a;
    --selection-bg: #f2b441;
    --selection-fg: #0b1220;

    --hero-glow: radial-gradient(1400px 700px at 50% 42%, #122040 0%, #0b1220 60%);

    --graph-edge-rgb: 242, 180, 65;
    --graph-edge-a0: 0.08;
    --graph-edge-arange: 0.27;
    --graph-node-fill: #eef0f4;
    --graph-node-stroke: transparent;
    --graph-light: 0;

    --heat-0: #141f36;
    --heat-1: #2c2a2a;
    --heat-2: #5a4520;
    --heat-3: #8a651f;
    --heat-4: #c9962c;
    --heat-5: #f2b441;
    --hud-grid: rgba(242, 180, 65, 0.07);
  }
}

/* 显式选深色（预留给以后的手动切换；一期没有切换控件，只保证 token 就位） */
:root[data-theme="dark"] {
  color-scheme: dark;

  --bg: #0b1220;
  --surface: #0f182b;
  --surface-read: #111b30;
  --surface-2: #162135;
  --fg: #eef0f4;
  --mute: #9aa3b5;
  --line: #1e2a40;
  --accent: #f2b441;
  --accent-fg: #0b1220;
  --ok: #5ccb8a;
  --warn: #f2b441;
  --fail: #e5645a;
  --selection-bg: #f2b441;
  --selection-fg: #0b1220;

  --hero-glow: radial-gradient(1400px 700px at 50% 42%, #122040 0%, #0b1220 60%);

  --graph-edge-rgb: 242, 180, 65;
  --graph-edge-a0: 0.08;
  --graph-edge-arange: 0.27;
  --graph-node-fill: #eef0f4;
  --graph-node-stroke: transparent;
  --graph-light: 0;

  --heat-0: #141f36;
  --heat-1: #2c2a2a;
  --heat-2: #5a4520;
  --heat-3: #8a651f;
  --heat-4: #c9962c;
  --heat-5: #f2b441;
  --hud-grid: rgba(242, 180, 65, 0.07);
}
