/* =============================================================================
   tokens.css — NEO 液态玻璃设计令牌 (雷霆规则: docs/NEO_UI_规范.md)
   -----------------------------------------------------------------------------
   血缘: 璇详情页工作室 neo.css 的 obsidian(曜黑) 基线, 逐字抄 §2.6。
   两层:
     1) --n-* 真源令牌 (obsidian 基线 + 若干换肤覆写块)
     2) 语义别名层: 把本项目历史令牌名(--l0/--tx-1/--brand/--ok...)映射到 --n-*,
        让 8 个页面的现有 CSS 零改动就跟着换肤 (规范 §2.6 明示的做法)。
   铁律: 组件只写别名/--n-* 令牌, 禁写死色。换品牌色只动 6 个 accent 变量。
============================================================================= */

:root,
:root[data-theme="night"],
:root[data-theme="obsidian"]{
  /* ===== obsidian 曜黑基线 (neo.css:10-24 逐字) ===== */
  --n-bg-deep:#07080f; --n-bg-deep2:#111527;
  --n-surface-2:rgba(22,27,44,.92); --n-surface-3:rgba(255,255,255,.06);
  --n-glass-bg:rgba(20,24,40,.55); --n-glass-strong:rgba(17,21,36,.86);
  --n-edge:rgba(255,255,255,.10); --n-spec:rgba(255,255,255,.20);
  --n-line:rgba(255,255,255,.10); --n-line-2:rgba(255,255,255,.18);
  --n-text:#eef0fa; --n-text-dim:rgba(238,240,250,.58); --n-text-faint:rgba(238,240,250,.36);
  --n-accent:#7c8cff; --n-accent2:#5eead4; --n-accent-ink:#0b1020;
  --n-accent-soft:rgba(124,140,255,.16); --n-accent-line:rgba(124,140,255,.34);
  --n-glow:rgba(124,140,255,.42); --n-glow2:rgba(94,234,212,.28); --n-glow3:rgba(244,114,182,.16);
  --n-ok:#34d399; --n-warn:#fbbf24; --n-danger:#f87171;
  --n-shadow:0 18px 48px rgba(0,0,0,.5); --n-shadow-sm:0 6px 18px rgba(0,0,0,.35);
  --n-spring:cubic-bezier(.34,1.56,.64,1);
  color-scheme:dark;
}

/* ===== 换肤: 赛博青 (neo.css:117-124 逐字) ===== */
:root[data-theme="cyber"]{
  --n-bg-deep:#020c12; --n-bg-deep2:#052330;
  --n-surface-2:rgba(6,36,48,.92); --n-glass-bg:rgba(5,32,44,.55); --n-glass-strong:rgba(4,25,35,.88);
  --n-text:#e8fbff; --n-text-dim:rgba(232,251,255,.6); --n-text-faint:rgba(232,251,255,.38);
  --n-accent:#00e5ff; --n-accent2:#22d3ee; --n-accent-ink:#00181f;
  --n-accent-soft:rgba(0,229,255,.15); --n-accent-line:rgba(0,229,255,.42);
  --n-glow:rgba(0,229,255,.5); --n-glow2:rgba(34,211,238,.32); --n-glow3:rgba(45,255,196,.18);
}
/* ===== 换肤: 星云 (nebula, §2.3) ===== */
:root[data-theme="nebula"]{
  --n-bg-deep:#0d0716; --n-bg-deep2:#1a0f2b;
  --n-surface-2:rgba(30,18,48,.92); --n-glass-bg:rgba(26,15,43,.55); --n-glass-strong:rgba(22,12,38,.87);
  --n-text:#f3ecfb; --n-text-dim:rgba(243,236,251,.6); --n-text-faint:rgba(243,236,251,.38);
  --n-accent:#c084fc; --n-accent2:#f472b6; --n-accent-ink:#1b0b2a;
  --n-accent-soft:rgba(192,132,252,.15); --n-accent-line:rgba(192,132,252,.4);
  --n-glow:rgba(192,132,252,.44); --n-glow2:rgba(244,114,182,.3); --n-glow3:rgba(94,234,212,.16);
}
/* ===== 换肤: 余烬 (ember, §2.3) —— 暖橙, 最接近旧 KRANZ 橙 ===== */
:root[data-theme="ember"]{
  --n-bg-deep:#140b07; --n-bg-deep2:#241209;
  --n-surface-2:rgba(40,22,12,.92); --n-glass-bg:rgba(36,18,9,.55); --n-glass-strong:rgba(30,15,8,.87);
  --n-text:#fdeee4; --n-text-dim:rgba(253,238,228,.6); --n-text-faint:rgba(253,238,228,.38);
  --n-accent:#fb923c; --n-accent2:#f43f5e; --n-accent-ink:#2a1206;
  --n-accent-soft:rgba(251,146,60,.15); --n-accent-line:rgba(251,146,60,.4);
  --n-glow:rgba(251,146,60,.44); --n-glow2:rgba(244,63,94,.28); --n-glow3:rgba(250,204,21,.16);
}
/* ===== 换肤: 深海 (abyss, §2.3) ===== */
:root[data-theme="abyss"]{
  --n-bg-deep:#03111c; --n-bg-deep2:#06202f;
  --n-surface-2:rgba(6,34,48,.92); --n-glass-bg:rgba(5,30,44,.55); --n-glass-strong:rgba(4,24,35,.87);
  --n-text:#e6f6ff; --n-text-dim:rgba(230,246,255,.6); --n-text-faint:rgba(230,246,255,.38);
  --n-accent:#38bdf8; --n-accent2:#2dd4bf; --n-accent-ink:#03161f;
  --n-accent-soft:rgba(56,189,248,.15); --n-accent-line:rgba(56,189,248,.4);
  --n-glow:rgba(56,189,248,.44); --n-glow2:rgba(45,212,191,.3); --n-glow3:rgba(94,234,212,.16);
}

/* ===== 白瓷 (porcelain) —— 月台强光/白天用的浅色一等公民 (§2.3 + 白色组特殊规则) ===== */
:root[data-theme="deck"],
:root[data-theme="porcelain"]{
  color-scheme:light;
  --n-bg-deep:#eef1f7; --n-bg-deep2:#ffffff;
  --n-surface-2:rgba(255,255,255,.92); --n-surface-3:rgba(22,32,60,.05);
  --n-glass-bg:rgba(255,255,255,.62); --n-glass-strong:rgba(248,250,253,.92);
  --n-edge:rgba(22,32,60,.12); --n-spec:rgba(255,255,255,.9);
  --n-line:rgba(22,32,60,.11); --n-line-2:rgba(22,32,60,.20);
  --n-text:#141a2b; --n-text-dim:rgba(20,26,43,.62); --n-text-faint:rgba(20,26,43,.4);
  --n-accent:#4f6bff; --n-accent2:#0ea5e9; --n-accent-ink:#ffffff;
  --n-accent-soft:rgba(79,107,255,.12); --n-accent-line:rgba(79,107,255,.4);
  --n-glow:rgba(79,107,255,.22); --n-glow2:rgba(14,165,233,.16); --n-glow3:rgba(148,112,216,.12);
  --n-ok:#0f9d6d; --n-warn:#b45309; --n-danger:#dc2626;
  --n-shadow:0 18px 44px rgba(30,42,80,.14); --n-shadow-sm:0 6px 18px rgba(30,42,80,.10);
}

/* =============================================================================
   语义别名层 —— 历史令牌名 -> NEO 令牌 (规范 §2.6)。
   这样 app.css 与 8 个页面里现有的 var(--l1)/var(--tx-1)/var(--brand)... 全部
   自动跟着 NEO 换肤, 不用逐处改名。新代码优先直接用 --n-* 或下面的语义名。
============================================================================= */
:root{
  /* 背景层级 */
  --l0:var(--n-bg-deep);
  --l1:var(--n-glass-bg);
  --l2:var(--n-surface-3);
  --l3:var(--n-surface-2);
  --l4:var(--n-glass-strong);

  /* 描边 */
  --line-1:var(--n-line);
  --line-2:var(--n-line-2);
  --line-3:var(--n-accent-line);
  --hair:1px; --hair-w:1px; --bar:3px;

  /* 文本 */
  --tx-1:var(--n-text);
  --tx-2:var(--n-text-dim);
  --tx-3:var(--n-text-faint);

  /* 品牌/强调 -> accent */
  --brand:var(--n-accent);
  --brand-hi:var(--n-accent2);
  --brand-bg:var(--n-accent-soft);
  --brand-soft:var(--n-accent-soft);
  --brand-line:var(--n-accent-line);
  --brand-fg:var(--n-accent-ink);
  --gold:var(--n-accent2);

  /* 语义色 (+bg/+line 变体) */
  --ok:var(--n-ok);       --ok-bg:color-mix(in srgb,var(--n-ok) 14%,transparent);   --ok-line:color-mix(in srgb,var(--n-ok) 40%,transparent);
  --bad:var(--n-danger);  --bad-bg:color-mix(in srgb,var(--n-danger) 14%,transparent);--bad-line:color-mix(in srgb,var(--n-danger) 40%,transparent);
  --warn:var(--n-warn);   --warn-bg:color-mix(in srgb,var(--n-warn) 14%,transparent);--warn-line:color-mix(in srgb,var(--n-warn) 40%,transparent);
  --info:var(--n-accent2);--info-bg:color-mix(in srgb,var(--n-accent2) 14%,transparent);--info-line:color-mix(in srgb,var(--n-accent2) 40%,transparent);
  --idle:var(--n-text-faint);--idle-bg:var(--n-surface-3);--idle-line:var(--n-line-2);

  /* 阴影 / 遮罩 / 焦点 */
  --sh-1:var(--n-shadow-sm);
  --sh-2:var(--n-shadow);
  --sh-3:var(--n-shadow);
  --scrim:rgba(0,0,0,.5);
  --focus:var(--n-accent);
  --ring:0 0 0 2px var(--n-accent-line);
  --skel:linear-gradient(90deg,var(--n-surface-3) 0%,var(--n-surface-2) 50%,var(--n-surface-3) 100%);

  /* 圆角 (NEO 阶梯 §4.3) */
  --r-1:4px; --r-2:12px; --r-3:14px; --r-4:20px; --r-pill:999px;
  --r-xs:9px; --r-sm:12px; --r-md:14px; --r-lg:16px; --r-xl:20px;

  /* 间距 */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:20px; --s6:24px; --s7:32px; --s8:48px;

  /* 密度(桌面基线; 触屏在 app.css @media(pointer:coarse) 里放大) —— NEO 重构漏带这四个, 补回,
     否则 pointer:fine 下 var(--card-pad/--card-gap/--fs-body/--fs-table) 全空, 卡片挤成一团 */
  --card-pad:16px; --card-gap:12px; --fs-body:var(--fs-400); --fs-table:var(--fs-300);

  /* 尺寸 */
  --topbar-h:52px; --tabbar-h:60px; --tap:48px; --row-h:44px; --row-h-touch:52px;
  --pill-h:28px; --pill-h-touch:32px; --icon:1.25em;

  /* 时长 / 缓动 —— NEO §7.1 */
  --t-1:150ms; --t-2:180ms; --t-3:250ms; --t-4:300ms; --t-5:380ms;
  --t-fast:150ms; --t:180ms; --t-slow:280ms;
  --e-out:ease;
  --e-damp:cubic-bezier(.22,.61,.36,1);
  --e-detent:var(--n-spring);
  --e-spring:var(--n-spring);
  --ease:var(--n-spring);         /* 历史 --ease -> 弹簧 (transform 一律走它) */
  --ease-spring:var(--n-spring);

  /* 玻璃模糊三档 */
  --blur:16px; --blur-strong:28px; --sat:160%;

  /* 字体 */
  --font-ui:"SF Pro Display","PingFang SC","Segoe UI Variable","MiSans",
            'Inter var',"Microsoft YaHei UI","Noto Sans SC",system-ui,sans-serif;
  --font-serif:var(--font-ui);
  --font-num:'Inter var',"SF Mono","Cascadia Mono",Consolas,ui-monospace,monospace;
  --ff-num:'tnum' 1,'zero' 1,'ss02' 1;

  /* 字号阶梯 (NEO §3.2, 14px 基准) */
  --fs-100:11px; --fs-200:12px; --fs-300:13px; --fs-400:14px;
  --fs-500:16px; --fs-600:18px; --fs-700:24px; --fs-800:32px;
  --lh-num:1.1; --lh-tight:1.2; --lh-ui:1.35; --lh-read:1.6;
  --fw-reg:400; --fw-med:600; --fw-semi:700; --fw-bold:800;

  /* z 轴 */
  --z-fx:0; --z-content:5; --z-topbar:40; --z-sticky:50; --z-drawer:60; --z-modal:70; --z-toast:80;
}

@font-face{
  font-family:'Inter var';
  src:url('/static/fonts/inter-var-lc.woff2') format('woff2-variations');
  font-weight:100 900; font-display:swap;
  unicode-range:U+0000-024F,U+0400-04FF,U+2000-206F,U+2190-21BB,U+2212;
}

/* backdrop-filter 不支持时: 玻璃换实底 (铁律 8, base.html 会打 data-backdrop) */
[data-backdrop="unsupported"]{ --n-glass-bg:var(--n-glass-strong); }