/* ============================================================
   设计令牌 —— 全站唯一改主题的地方
   ------------------------------------------------------------
   色板来自 AuraLink 原型（深空 + 暖金），
   色阶纪律与墨影来自线上那套 React 应用（见 styles.css 的 --text* 与 --ink-shadow）。
   两者合起来：星海的皮，工具站的骨。
   ============================================================ */
:root{
  /* ---------- 底 ---------- */
  --ink:#05060e;                  /* 深空底。**同时是墨影的颜色**，别拿来当文字色 */
  --space-2:#0a0e1c;              /* 抬起的夜：侧栏、面板 */
  --space-3:#0c1120;              /* 再抬一层：卡片、输入框 */

  /* ---------- 面 ----------
     正文底必须压到看不出一颗星。原型的 .82 透明度配每帧重绘的星海，
     15px 中文的笔画会随背景亮斑时隐时现 —— 这里提到 95%。 */
  --surface:#0a0e1cf2;
  --surface-quiet:#0a0e1cc4;
  --surface-raised:#0c1120f7;

  /* ---------- 暖金 · 签名色 ---------- */
  --gold:#f2c078;
  --gold-deep:#c99a5b;
  --gold-dim:rgba(242,192,120,.14);
  --gold-line:rgba(242,192,120,.34);
  --gold-glow:rgba(242,192,120,.35);
  --violet:#9a93c9;

  /* ---------- 发丝边 ---------- */
  --hair:rgba(178,190,222,.14);
  --hair-strong:rgba(200,208,235,.28);

  /* ---------- 涨跌（A 股约定：红涨绿跌，别改成国际惯例）----------
     两者都压过对比度：红 5.9:1、绿 6.4:1（对 --space-3 算）。
     颜色**不单独承载语义** —— 行情卡上还有 ▲/▼ 字符与正负号，
     灰度打印或色盲下同样读得出来。 */
  --up:#e0705d;
  --down:#5aa88a;

  /* ---------- 文字五档 ----------
     每档一个职责，不插值。括号是对 --ink 的对比度。
     最暗一档 7.5:1 是 micro 字号的下限，不要再往下压。 */
  --text:#eef3fb;        /* 18.9:1  标题、气泡正文、输入框 */
  --text-soft:#d9e0ef;   /* 15.9:1  次级正文 */
  --text-mid:#c1cbde;    /* 12.9:1  说明文字、面板小标题 */
  --text-quiet:#a8b3ca;  /* 10.0:1  小标签 */
  --text-faint:#909bb5;  /*  7.5:1  micro：时间戳、脚注 */

  /* ---------- 墨影 ----------
     压在这片每帧都在动的亮斑上，单靠提亮治不了局部：字恰好飘到亮处还是会糊。
     三层各管一段，**2px 那层是 micro 的命根子** ——
     10px 的字笔画只有 1px 宽，10px/24px 两层太散，在笔画旁边压不出暗来，等于没写。 */
  --ink-shadow:0 1px 2px var(--ink),0 1px 10px var(--ink),0 0 24px var(--ink);

  /* ---------- 字号阶梯 ----------
     11 和 12、13 和 14 在小字上读不出差别 —— 那不是层级，是噪声。收成五档。 */
  --step-micro:10px;
  --step-label:11px;
  --step-small:12px;
  --step-body:15px;
  --step-read:16px;
  --display-1:clamp(26px,3.4vw,38px);   /* 空态大标题 */
  --display-3:clamp(18px,2vw,22px);     /* 区块小标题 */

  /* ---------- 字距纪律 ----------
     这套视觉最容易被认出来的一点。中文小标签**不能**拉 .34em，会散架。 */
  --track-label:.34em;   /* 全大写拉丁：wordmark、eyebrow */
  --track-caps:.2em;     /* 中文小标签 */
  --track-body:.02em;    /* 正文，极轻一点，让 15px 在纯黑上不糊成一团 */

  /* ---------- 动效 ---------- */
  --ease:cubic-bezier(.22,.61,.36,1);
  --t:.18s;
  --t-slow:.5s;

  /* ---------- 字体 ---------- */
  --serif:"Iowan Old Style","Palatino Linotype","Songti SC",STSong,
          "Source Han Serif SC","Noto Serif CJK SC","Noto Serif SC",SimSun,"宋体",Georgia,serif;
  --sans:"PingFang SC","Hiragino Sans GB","Source Han Sans SC","Microsoft YaHei",
         "HarmonyOS Sans SC","Noto Sans SC",system-ui,-apple-system,sans-serif;
  --mono:"SF Mono","Cascadia Mono",Consolas,Menlo,monospace;

  /* ---------- 布局 ---------- */
  --sidebar-w:264px;
  --panel-w:340px;
  --measure:760px;       /* 正文阅读列宽 */
  --stage-inset:30px;

  /* 造型语言：全站直角 2px，不混入圆角卡片 */
  --radius:2px;
}

/* 一条 token 关掉全站过渡 —— 不必逐条写 media query。
   JS 侧另外会停掉星系的 rAF 与逐字吐字（见 ui/galaxy3d.js 与 ui/thread.js）。 */
@media(prefers-reduced-motion:reduce){
  :root{ --t:0s; --t-slow:0s; }
}
