/* 本文件由 scripts/gen-tokens.js 从 scripts/tokens.source.json 生成，请勿手改 */
/* 生成时间 2026-10-19 · 源 tokens.source.json v2.0.0
 * 唯一令牌定义处：其余文件只允许 var() 引用（W-02 T1/T2）
 * 深浅两套键集合完全一致（生成器同模板产出）；--gold 深色沿用浅色（仅荣誉语义） */

:root {
  color-scheme: light dark;

  /* ── color · 语义色（浅色默认） ── */
    --bg: #FFFFFF;
    --bg-subtle: #F7F8FA;
    --surface: #FFFFFF;
    --surface-2: #F2F4F7;
    --border: #E6E9EE;
    --border-strong: #D3D8E0;
    --ink: #151A20;
    --ink-2: #4A5563;
    --ink-3: #8896A4;
    --brand: #2352D9;
    --brand-weak: #EEF2FE;
    --brand-ink: #FFFFFF;
    --success: #16794F;
    --warn: #B25E09;
    --danger: #C93A3A;
    --score-up: #D93025;
    --score-down: #1A8A4A;
    --gold: #A67C2E;
    --subj-cn: #2352D9;
    --subj-math: #7A5AF5;
    --subj-en: #0E8B6C;
    --subj-phy: #B4740A;
    --subj-chem: #C4362F;
    --subj-bio: #12855F;
    --subj-pol: #B4740A;
    --subj-his: #8A5A2B;
    --subj-geo: #0E8B6C;

  /* ── shadcn / Tailwind 桥接（HSL 三元组供 hsl(var(--x-hsl)/<alpha>) 透明度修饰符） ── */
    --background-hsl: 0 0% 100%;
    --foreground-hsl: 213 21% 10%;
    --card-hsl: 0 0% 100%;
    --card-foreground-hsl: 213 21% 10%;
    --popover-hsl: 0 0% 100%;
    --popover-foreground-hsl: 213 21% 10%;
    --primary-hsl: 225 72% 49%;
    --primary-foreground-hsl: 0 0% 100%;
    --secondary-hsl: 216 24% 96%;
    --secondary-foreground-hsl: 214 14% 34%;
    --muted-hsl: 216 24% 96%;
    --muted-foreground-hsl: 210 13% 59%;
    --accent-hsl: 225 89% 96%;
    --accent-foreground-hsl: 225 72% 49%;
    --destructive-hsl: 0 57% 51%;
    --destructive-foreground-hsl: 0 0% 100%;
    --border-hsl: 218 19% 92%;
    --input-hsl: 218 19% 92%;
    --ring-hsl: 225 72% 49%;
    --sidebar-hsl: 0 0% 100%;
    --sidebar-foreground-hsl: 213 21% 10%;
    --sidebar-primary-hsl: 225 72% 49%;
    --sidebar-border-hsl: 218 19% 92%;
    --sidebar-ring-hsl: 225 72% 49%;
    --chart-1-hsl: 252 89% 66%;
    --chart-2-hsl: 165 82% 30%;
    --chart-3-hsl: 37 89% 37%;
    --chart-4-hsl: 3 61% 48%;
    --chart-5-hsl: 30 52% 35%;
    --font-display: var(--font-title);
    --font-body: var(--font-body);

  /* ── font ── */
    --font-title: Source Han Serif CN, Songti SC, serif;
    --font-body: HarmonyOS Sans, PingFang SC, Microsoft YaHei, sans-serif;
    --fs-display: 32px; --fs-h1: 24px; --fs-h2: 20px; --fs-h3: 18px;
    --fs-body: 16px; --fs-meta: 14px; --fs-caption: 13px; --fs-caption2: 12px;
    --lh-body: 1.6; --lh-title: 1.35; --lh-tag: 1.2;
    --fw-regular: 400; --fw-medium: 500; --fw-semibold: 600;

  /* ── space · 8 点网格 ── */
    --sp-xs: 8px; --sp-sm: 16px; --sp-md: 24px; --sp-lg: 32px; --sp-xl: 40px; --sp-2xl: 48px;
    --sp-page: 24px; --sp-card: 20px; --sp-gap-card: 12px; --sp-gap-block: 32px;

  /* ── radius ── */
    --r-sm: 8px; --r-md: 12px; --r-lg: 16px; --r-card: 20px; --r-pill: 999px;

  /* ── shadow · 仅三条，禁发光/彩色投影/巨量扩散 ── */
    --sh-card: 0 1px 2px rgba(21,26,32,.04);
    --sh-popover: 0 8px 24px rgba(21,26,32,.10);
    --sh-focus: 0 0 0 3px rgba(35,82,217,.18);

  /* ── motion ── */
    --dur-fast: 120ms; --dur-base: 200ms; --dur-slow: 300ms; --ease: cubic-bezier(.22,1,.36,1);

  /* ── z-index ── */
    --z-bar: 100; --z-panel: 200; --z-popover: 300; --z-modal: 400; --z-toast: 500;
}

/* ── 深色（单属性 data-theme；T2：键集合与 :root 完全相同，非颜色键同值重复输出） ── */
:root[data-theme="dark"],
html[data-theme="dark"] {
  color-scheme: dark;
    --bg: #0F1216;
    --bg-subtle: #151A20;
    --surface: #1A2028;
    --surface-2: #20272F;
    --border: #2A323C;
    --border-strong: #39424E;
    --ink: #F2F4F7;
    --ink-2: #B8C1CC;
    --ink-3: #7E8894;
    --brand: #5B86FF;
    --brand-weak: #1B2540;
    --brand-ink: #0F1216;
    --success: #3EBD7C;
    --warn: #E8A23D;
    --danger: #E86A5E;
    --score-up: #FF6F61;
    --score-down: #3EBD7C;
    --gold: #A67C2E;
    --subj-cn: #5B86FF;
    --subj-math: #9D85F8;
    --subj-en: #3DBD99;
    --subj-phy: #E8A23D;
    --subj-chem: #E86A5E;
    --subj-bio: #3EBD7C;
    --subj-pol: #E8A23D;
    --subj-his: #C99A6B;
    --subj-geo: #3DBD99;

    --background-hsl: 214 19% 7%;
    --foreground-hsl: 216 24% 96%;
    --card-hsl: 214 21% 13%;
    --card-foreground-hsl: 216 24% 96%;
    --popover-hsl: 214 21% 13%;
    --popover-foreground-hsl: 216 24% 96%;
    --primary-hsl: 224 100% 68%;
    --primary-foreground-hsl: 214 19% 7%;
    --secondary-hsl: 212 19% 15%;
    --secondary-foreground-hsl: 213 16% 76%;
    --muted-hsl: 212 19% 15%;
    --muted-foreground-hsl: 213 9% 54%;
    --accent-hsl: 224 41% 18%;
    --accent-foreground-hsl: 224 100% 68%;
    --destructive-hsl: 5 75% 64%;
    --destructive-foreground-hsl: 214 19% 7%;
    --border-hsl: 213 18% 20%;
    --input-hsl: 213 18% 20%;
    --ring-hsl: 224 100% 68%;
    --sidebar-hsl: 214 21% 13%;
    --sidebar-foreground-hsl: 216 24% 96%;
    --sidebar-primary-hsl: 224 100% 68%;
    --sidebar-border-hsl: 213 18% 20%;
    --sidebar-ring-hsl: 224 100% 68%;
    --chart-1-hsl: 253 89% 75%;
    --chart-2-hsl: 163 51% 49%;
    --chart-3-hsl: 35 79% 57%;
    --chart-4-hsl: 5 75% 64%;
    --chart-5-hsl: 30 47% 60%;
    --font-display: var(--font-title);
    --font-body: var(--font-body);

  /* ── font（与浅色同值，保证键集合一致） ── */
    --font-title: Source Han Serif CN, Songti SC, serif;
    --font-body: HarmonyOS Sans, PingFang SC, Microsoft YaHei, sans-serif;
    --fs-display: 32px; --fs-h1: 24px; --fs-h2: 20px; --fs-h3: 18px;
    --fs-body: 16px; --fs-meta: 14px; --fs-caption: 13px; --fs-caption2: 12px;
    --lh-body: 1.6; --lh-title: 1.35; --lh-tag: 1.2;
    --fw-regular: 400; --fw-medium: 500; --fw-semibold: 600;

  /* ── space（同值重复） ── */
    --sp-xs: 8px; --sp-sm: 16px; --sp-md: 24px; --sp-lg: 32px; --sp-xl: 40px; --sp-2xl: 48px;
    --sp-page: 24px; --sp-card: 20px; --sp-gap-card: 12px; --sp-gap-block: 32px;

  /* ── radius（同值重复） ── */
    --r-sm: 8px; --r-md: 12px; --r-lg: 16px; --r-card: 20px; --r-pill: 999px;

    --sh-card: 0 1px 2px rgba(0,0,0,.25);
    --sh-popover: 0 8px 24px rgba(0,0,0,.35);
    --sh-focus: 0 0 0 3px rgba(91,134,255,.28);

  /* ── motion（同值重复） ── */
    --dur-fast: 120ms; --dur-base: 200ms; --dur-slow: 300ms; --ease: cubic-bezier(.22,1,.36,1);

  /* ── z-index（同值重复） ── */
    --z-bar: 100; --z-panel: 200; --z-popover: 300; --z-modal: 400; --z-toast: 500;
}

/* ── T17 打印：强制浅色（省墨、避免深底白字），A4 不截断 ── */
@media print {
  :root, :root[data-theme="dark"], html[data-theme="dark"] {
    color-scheme: light;
    --bg: #FFFFFF;
    --bg-subtle: #F7F8FA;
    --surface: #FFFFFF;
    --surface-2: #F2F4F7;
    --border: #E6E9EE;
    --border-strong: #D3D8E0;
    --ink: #151A20;
    --ink-2: #4A5563;
    --ink-3: #8896A4;
    --brand: #2352D9;
    --brand-weak: #EEF2FE;
    --brand-ink: #FFFFFF;
    --success: #16794F;
    --warn: #B25E09;
    --danger: #C93A3A;
    --score-up: #D93025;
    --score-down: #1A8A4A;
    --gold: #A67C2E;
    --subj-cn: #2352D9;
    --subj-math: #7A5AF5;
    --subj-en: #0E8B6C;
    --subj-phy: #B4740A;
    --subj-chem: #C4362F;
    --subj-bio: #12855F;
    --subj-pol: #B4740A;
    --subj-his: #8A5A2B;
    --subj-geo: #0E8B6C;
    --background-hsl: 0 0% 100%;
    --foreground-hsl: 213 21% 10%;
    --card-hsl: 0 0% 100%;
    --card-foreground-hsl: 213 21% 10%;
    --popover-hsl: 0 0% 100%;
    --popover-foreground-hsl: 213 21% 10%;
    --primary-hsl: 225 72% 49%;
    --primary-foreground-hsl: 0 0% 100%;
    --secondary-hsl: 216 24% 96%;
    --secondary-foreground-hsl: 214 14% 34%;
    --muted-hsl: 216 24% 96%;
    --muted-foreground-hsl: 210 13% 59%;
    --accent-hsl: 225 89% 96%;
    --accent-foreground-hsl: 225 72% 49%;
    --destructive-hsl: 0 57% 51%;
    --destructive-foreground-hsl: 0 0% 100%;
    --border-hsl: 218 19% 92%;
    --input-hsl: 218 19% 92%;
    --ring-hsl: 225 72% 49%;
    --sidebar-hsl: 0 0% 100%;
    --sidebar-foreground-hsl: 213 21% 10%;
    --sidebar-primary-hsl: 225 72% 49%;
    --sidebar-border-hsl: 218 19% 92%;
    --sidebar-ring-hsl: 225 72% 49%;
    --chart-1-hsl: 252 89% 66%;
    --chart-2-hsl: 165 82% 30%;
    --chart-3-hsl: 37 89% 37%;
    --chart-4-hsl: 3 61% 48%;
    --chart-5-hsl: 30 52% 35%;
    --font-display: var(--font-title);
    --font-body: var(--font-body);
    --sh-card: 0 1px 2px rgba(21,26,32,.04);
    --sh-popover: 0 8px 24px rgba(21,26,32,.10);
    --sh-focus: 0 0 0 3px rgba(35,82,217,.18);
    --z-bar: auto; --z-panel: auto; --z-popover: auto; --z-modal: auto; --z-toast: auto;
  }
}
