/* ============================================================
   public/tokens.css — 全站唯一令牌源
   ------------------------------------------------------------
   - 全站唯一定义处：index.html / site.css / login.html 三处内嵌
     :root 与暗色令牌段已删除，所有页面改为 <link> 本文件
     （必须先于 site.css 与页面内嵌样式加载）。
   - 令牌名一律不改不换（app.js 生成的内联样式直接引用 var(--up) 等）；
     V2.3 起**值**按公共站 V2 青绿系令牌桥映射表迁移（令牌名不变）：
     --up/--down 红涨绿跌语义不变仅换色值；派生令牌（paper-3/line-strong/ivory/marker/
     danger 派生/on-marker/cat-*）改由 var()/color-mix 推导；--thermo-mid 与 --radius-feature
     为测试锚点保留不动；--radius-lg/--radius-card → 12px（V2 卡片圆角节奏）。
     间距取 index 现值 --s1..--s8 = 4/8/12/16/24/32/48/80；
     --transition 统一 150ms；--maxw=1200px（工作台），新增
     --maxw-site=1000px（公共站壳）；--shadow-pop 浅 .22 / 暗 .5。
   - 本文件只含令牌与 reset 基底，不含任何组件样式；
     组件规则只允许引用 var(--*)，不写裸色值（meta theme-color 除外）。
   ============================================================ */

:root {
  /* 画布与表面：V2 青绿系（V2.3 令牌桥迁移，组件规范 §5；令牌名不动，只换值。
     派生令牌（--paper-3/--line-strong/--ivory/--marker/--danger 派生/--on-marker/--cat-*）
     统一用 var()/color-mix 从基础令牌推导，深浅两档自动成立） */
  --bg: #f4f7f6; --paper: #ffffff; --paper-2: #e9f0ee; --paper-3: color-mix(in srgb, var(--paper-2) 62%, var(--line));
  --line: #dbe5e2; --line-strong: color-mix(in srgb, var(--txt) 55%, var(--line));
  --txt: #132528; --sub: #4a6264; --faint: #5b7275;
  --ivory: color-mix(in srgb, var(--gold) 8%, var(--paper));   /* 暖底纹并入金系 */

  /* 功能色：红涨绿跌语义不变，仅色值迁 V2 红绿档 */
  --up: #b8434a; --up-bg: rgba(184, 67, 74, .08); --up-line: color-mix(in srgb, var(--up) 34%, transparent);
  --down: #0f7d5f; --down-bg: rgba(15, 125, 95, .09); --down-line: color-mix(in srgb, var(--down) 34%, transparent);
  --flat: #5b7275;
  --accent: #0e756e; --accent-press: color-mix(in srgb, var(--accent) 80%, #000); --accent-bg: rgba(14, 117, 110, .08);
  --marker: var(--accent);           /* 功能标点并入青绿；进度条/摘要标签方点等，不做按钮填充 */
  --gold: #8f6118; --gold-line: color-mix(in srgb, var(--gold) 42%, var(--line)); --gold-bg: rgba(143, 97, 24, .1);
  --danger: var(--up); --danger-bg: var(--up-bg); --danger-line: color-mix(in srgb, var(--danger) 42%, transparent);
  --focus: #0e756e;
  --on-solid: #ffffff; --on-marker: var(--on-solid);
  --thermo-mid: #c98a3d;             /* 温度计中间色（测试锚点，app.js 引用；V2.3 暂保留不动） */
  --cat-1: var(--accent); --cat-2: var(--gold); --cat-3: var(--sub); --cat-4: var(--faint);
  --cat-5: color-mix(in srgb, var(--faint) 55%, var(--line));
  --print-bg: #fff; --print-line: #bbb;

  /* 字体（零依赖：不引 Web 字体，系统装有则自然升级；与 v2.css body 栈一致） */
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  --display: var(--sans);
  --mono: ui-monospace, "SF Mono", "Cascadia Mono", Consolas, "Courier New", monospace;
  --serif: var(--sans);              /* 已弃用：保留定义只为兼容 index 历史引用 */

  /* 字号档 */
  --fs-11: 12px; --fs-12: 12.5px; --fs-13: 13.5px; --fs-14: 14.5px; --fs-15: 15px; --fs-16: 16px;
  --fs-h1: 20px; --fs-h2: var(--fs-14);
  --fs-h3: 17px;                     /* 新增：公共页区块中景标题 */
  --fs-hero: clamp(30px, 5.2vw, 44px);
  --fs-display: clamp(32px, 4.8vw, 48px);   /* 摘要主数值（600 字重 + -0.02em） */

  /* 间距 / 圆角 / 阴影 */
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px; --s5: 24px; --s6: 32px; --s7: 48px; --s8: 80px;
  --radius: 8px; --radius-lg: 12px; --radius-pill: 999px; --radius-card: 12px; --radius-footer: 0px;
  --radius-feature: 6px 0 6px 6px;   /* Ventriloc 非对称重点卡：右上直角 */
  --shadow: none;                    /* 层级靠 白卡/灰画布 表面色差，不用投影 */
  --shadow-btn: none;
  --shadow-pop: 0 18px 50px rgba(27, 25, 23, .22);   /* 仅弹层保留 */

  /* 细线 / 动效 / 布局 / 按钮高度档 */
  --hairline: 1px solid var(--line);
  --edge: 1px solid var(--line);     /* 弹层/警示等残留细边 */
  --gold-rule: 1px solid var(--gold-line);
  --transition: 150ms cubic-bezier(.4, 0, .2, 1);
  --bar-h: 3px;
  --maxw: 1200px;                    /* 工作台容器 */
  --maxw-site: 1000px;               /* 新增：公共站壳容器 */
  --btn-h-sm: 32px; --btn-h: 40px; --btn-h-lg: 46px;   /* 新增：按钮高度档 */
}

/* 夜间观测台（Ventriloc 无暗色，本项目一等公民的石墨暖暗变体）。
   两套暗色机制并存：跟随系统 + html[data-theme="dark"] 手动档；
   浅色档令牌（字号/间距/圆角/细线等）不随暗色重定义，按现状继承。 */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0d1417; --paper: #162227; --paper-2: #1d2c31; --paper-3: color-mix(in srgb, var(--paper-2) 62%, var(--line));
    --line: #2b3c42; --line-strong: color-mix(in srgb, var(--txt) 55%, var(--line));
    --txt: #eef5f4; --sub: #a9bcbe; --faint: #84999d;
    --ivory: color-mix(in srgb, var(--gold) 8%, var(--paper));
    --up: #ff918e; --up-bg: rgba(255, 142, 141, .13); --up-line: color-mix(in srgb, var(--up) 34%, transparent);
    --down: #72d9b1; --down-bg: rgba(114, 217, 177, .13); --down-line: color-mix(in srgb, var(--down) 34%, transparent);
    --flat: #84999d;
    --accent: #6fcdc3; --accent-press: color-mix(in srgb, var(--accent) 76%, #fff); --accent-bg: rgba(111, 205, 195, .11);
    --gold: #eccd90; --gold-line: color-mix(in srgb, var(--gold) 42%, var(--line)); --gold-bg: rgba(236, 205, 144, .12);
    --focus: #6fcdc3;
    --on-solid: #0d1417;
    --shadow-pop: 0 18px 50px rgba(0, 0, 0, .5);
  }
}
html[data-theme="dark"] {
  --bg: #0d1417; --paper: #162227; --paper-2: #1d2c31; --paper-3: color-mix(in srgb, var(--paper-2) 62%, var(--line));
  --line: #2b3c42; --line-strong: color-mix(in srgb, var(--txt) 55%, var(--line));
  --txt: #eef5f4; --sub: #a9bcbe; --faint: #84999d;
  --ivory: color-mix(in srgb, var(--gold) 8%, var(--paper));
  --up: #ff918e; --up-bg: rgba(255, 142, 141, .13); --up-line: color-mix(in srgb, var(--up) 34%, transparent);
  --down: #72d9b1; --down-bg: rgba(114, 217, 177, .13); --down-line: color-mix(in srgb, var(--down) 34%, transparent);
  --flat: #84999d;
  --accent: #6fcdc3; --accent-press: color-mix(in srgb, var(--accent) 76%, #fff); --accent-bg: rgba(111, 205, 195, .11);
  --gold: #eccd90; --gold-line: color-mix(in srgb, var(--gold) 42%, var(--line)); --gold-bg: rgba(236, 205, 144, .12);
  --focus: #6fcdc3;
  --on-solid: #0d1417;
  --shadow-pop: 0 18px 50px rgba(0, 0, 0, .5);
  color-scheme: dark;
}
html[data-theme="light"] { color-scheme: light; }

/* ---------- reset 基底（三处内嵌重复段收敛于此） ----------
   body 只提供公共基底：index（底部安全区留白）与 login（居中布局）
   各自保留页面级 body 规则；公共站行高仍由 site.css 的 body 按现状覆盖。 */
* { box-sizing: border-box; margin: 0; padding: 0; }
[hidden] { display: none !important; }   /* 组件写了 display 时会顶掉 UA 默认值，这里兜住 */
html { -webkit-text-size-adjust: 100%; }
body { background: var(--bg); color: var(--txt); font-family: var(--sans); font-size: var(--fs-14); line-height: 1.5; min-height: 100vh; }
::selection { background: var(--accent-bg); }
a { color: var(--accent); }
b, strong { font-weight: 600; }   /* 参考系统只有 400/500/600 三档，浏览器默认 700 收敛到 600 */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.tnum { font-variant-numeric: tabular-nums; }
.mini { color: var(--sub); font-size: var(--fs-12); }
.up, .up-t { color: var(--up); } .down, .down-t { color: var(--down); } .flat, .flat-t { color: var(--flat); }
:is(a, button, input, textarea, select, [tabindex]):focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
