/* ======================================================================
   tokens.css —— 设计令牌层（FRONTEND.md §2 样式分层第一步；v2.49.0 自 style.css 拆出）
   内容：:root（浅色主题）与 [data-theme="dark"]（深色主题）的全部 CSS 变量，明暗各一份。
   加载顺序：必须在 style.css / auth.css 之前（它们消费这里的变量）。
   硬约束：本文件必须经 _static_v() 引入（Caddy 对 /static/* 一年强缓存，
   URL 不带版本号 = 内容变了用户一年拿不到新值）。改任何值即改全站主题，
   明暗两份都要同步顾（含 --x-rgb 分量与 --mix-* 静态混合值）。
   ====================================================================== */

/* ------------------------------------------------------------------
   默认主题：连板天梯浅色（白底 + 浅灰 sidebar）
   ------------------------------------------------------------------ */
:root {
    /* 布局尺寸 */
    --sidebar-width: 200px;
    --navbar-height: 64px;
    --content-padding: 24px;

    /* 表面 */
    --bg: #F7F8FA;
    --surface: #FFFFFF;
    --surface-2: #F0F2F5;
    --surface-hover: #E8EAED;
    --surface-3: rgba(245, 158, 11, 0.06);  /* 弱强调底（§1.3，token 化） */
    --border: #E8EAED;
    --border-light: #F0F2F5;

    /* 文字 */
    --text: #1F1F1F;
    --text-secondary: #333333;
    /* a11y（2026-10-21 设计评审 P0-1）：原 #8B95A1 白底仅 3.04:1（bg 2.86 / surface-2 2.71），
       低于 WCAG AA 正文 4.5。该 token 承载 233 处引用，且几乎全是 11–12px 小字（时间戳/
       副标签/表头说明/meta 行）——「小字号 × 低对比」双重叠加区。#5F6B7A 在三底分别
       5.43 / 5.11 / 4.84 全过 AA（同色相冷灰，视觉位移最小）。
       深色主题 #93A0AE 已于 2026-09-29 修过（6.22~6.95），不用动。
       连坐同步：--text-muted-rgb 分量 + --mix-bg-secondary-88-text-muted 静态混合值。 */
    --text-muted: #5F6B7A;

    /* 主题色：Google 蓝 + 连板天梯红 */
    --primary: #1A73E8;            /* Google Blue 600 - 与连板天梯完全一致 */
    --primary-hover: #1557B0;
    --primary-bg: #E8F0FE;          /* active 项背景 = Google Blue 50 */
    --primary-border: #C6DAFC;
    --primary-text-on-bg: #1A73E8;  /* active 项文字色 */
    /* 「品牌色当背景 + 白字」专用令牌（2026-09-29 a11y 修复）：
       与 --primary 拆开是必须的 —— --primary 在深色主题里同时充当「深底上的强调
       文字色」，把它整体改深会把那一类对比度从 6.68 掉到 3.58。两者用途相反：
       当背景配白字要「够深」，当文字配深底要「够亮」，用一个值无法同时满足。
       校验：白字 on 值 ≥ 4.5:1（WCAG AA 正文）。 */
    --primary-solid: #1A73E8;       /* 白字对比度 4.51:1（浅色主题原本已达标）*/
    --primary-solid-hover: #1557B0;

    /* sidebar 菜单项默认色（连板天梯实测：#5F6368 Google Gray 700） */
    --sidebar-item-color: #5F6368;
    --sidebar-item-hover-bg: rgba(60, 64, 67, 0.08);  /* Google Gray hover */
    /* a11y（2026-10-21）：原 #80868B 白底 3.68:1 → #5F6368 6.05:1。
       与 --sidebar-item-color 同值；分组标题与菜单项的层级改靠字号/字重表达，
       不再靠低对比度区分（深色侧 #93A0AE 已达标，不用动）。 */
    --sidebar-group-title-color: #5F6368;

    --danger: #DC2626;
    --danger-hover: #B91C1C;
    /* a11y（2026-10-21 设计评审批次2/3）：warning/success/info 加深至三底全过 AA 4.5。
       旧值白底分别只有 2.15 / 2.54 / 3.68（warning 琥珀作小字几乎不可读）。
       info 取 #2563EB（与深色主题 09-29 修复同值，5.17:1）；warning #92400E 为深琥珀
       （7.09:1）——作边框/底色时仍保留视觉琥珀感（透明度混合后差异更小）。
       深色主题四值 2026-09-29 已修（9.92/8.62/6.51），不用动。 */
    --warning: #92400E;
    --success: #047857;
    --info: #2563EB;
    --info-alt: #5B8FF9;  /* 信息蓝辅助（图表/连线，避与 primary 撞色） */

    /* 股市语义色：红涨绿跌（中国惯例，连板天梯主红）
       a11y（2026-10-21 批次2）：--up #FF2442→#D81E37（白底 3.76→5.05）、
       --down #00B366→#047857（2.75→5.48）。表格涨跌数字是 12–14px 小字，旧值不达
       AA 正文 4.5。canvas 图表与表格同源读这两个 token（chart_core TOKEN_VARS），
       一起加深——分时/K线红绿同步变深，属预期统一。深色主题 #FF4D6A/#2EE08C
       已达标（5.14/9.59），不用动。 */
    --up: #D81E37;
    --up-bg: rgba(216, 30, 55, 0.1);
    --down: #047857;
    --down-bg: rgba(4, 120, 87, 0.1);
    --turnover: #7C3AED;  /* 竞价换手率紫（活跃度维度，与涨跌红绿正交）*/
    --neutral: #8B95A1;

    /* 语义别名 token（模板内联样式引用；自定义属性间的 var() 引用
       不会随主题重定义联动，故两套主题必须各自写字面值） */
    --text-primary: #1F1F1F;
    --bg-secondary: #F0F2F5;
    --bg-elevated: #FFFFFF;
    --error: #DC2626;
    --success-bg: rgba(4, 120, 87, 0.10);
    --warning-bg: rgba(146, 64, 14, 0.12);
    --error-bg: rgba(220, 38, 38, 0.10);

    /* 强调 active（Tab/重点，§1.4）—— 替代原 var(--accent,#f59e0b) 硬兜底 */
    --accent: var(--danger);

    /* 分类色板 qualitative（§1.8）：只用于概念/题材类目区分，禁用于涨跌/强度/状态。
       刻意避开纯红纯绿，不与涨跌实色混淆；超 14 类按 i%14 循环。 */
    --cat-1: #4E79A7;  --cat-2: #6BAED6;  --cat-3: #2171B5;  --cat-4: #F28E2B;
    --cat-5: #E6853A;  --cat-6: #B07AA1;  --cat-7: #9467BD;  --cat-8: #FF9DA7;
    --cat-9: #D37295;  --cat-10: #76B7B2; --cat-11: #1B9E97; --cat-12: #EDC948;
    --cat-13: #BAB0AC; --cat-14: #9C755F;

    /* 圆角：v3（2026-10-12）由「连板天梯紧凑风格」(4/2) 上调至现代刻度 (8/6)。
       这是全站统一的圆角基准——变量级调整 ⇒ 一切引用点一致生效；显式写死圆角的
       变体（.sl-deep-status 等）不受影响（有意保留各自变体值）。
       回退：把下面两行改回 4px / 2px 即恢复旧观感。 */
    --radius: 8px;
    --radius-sm: 6px;
    --radius-pill: 999px;

    /* 阴影：克制 */
    --shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
    --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.06);
    --shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.08);

/* 字号：默认 16（连板天梯 body=16），UI 控件 14
   a11y（2026-10-21 设计评审批次4）：xs 11→12。依据：11px 是中文可读性红线
   （约 8.25pt），且本站约 4.9% PV 来自移动端应急查看；同批次把 60 条 CSS 规则 +
   88 处模板内联的 11px 字面量收敛到本 token（此前它们是漂移孤岛，改 token 不生效）。
   ⚠️ 已登记债务：xs=12 与 sm=12 值碰撞——字阶规模重构（12/14/16/20/25/31）另行排期；
   10px/9px 微排版档（日历格 18×13、梯条内标、键帽）为上下文刻意值，不并入本 token。 */
--font-size-xs: 12px;
--font-size-sm: 12px;
--font-size-base: 14px;   /* UI 控件、表格 */
/* 表格正文专用（2026-10-27 新增）：原来表格吃 --font-size-sm = 12px，
   而文件头自定的基准是 14px「UI 控件、表格」——实际差了 2 级。
   实测单页有 905~1729 个 12px 元素，1440×900 桌面下是「能看但费眼」的档位。
   取 13px 而非直接 14px：13 是可读性明显改善与列宽不崩的平衡点，
   14 会让 20 列以上的宽表（竞价 21 列）必然横向溢出。
   ⚠️ 与列精简（同一轮的第 3 批）是**成对改动**：先精简列、再抬字号，
      反过来做会先炸一轮横向滚动条。 */
--font-size-table: 13px;
--font-size-body: 16px;   /* 正文（连板天梯 body 默认） */
--font-size-lg: 18px;
--font-size-xl: 20px;
--font-size-2xl: 22px;

    /* 过渡 */
    --transition-fast: 120ms ease;
    --transition-normal: 200ms ease;
    /* 抽屉/浮层动效（2026-10-04）：250ms easeOutExpo 近似——快进缓停，原生抽屉惯用曲线 */
    --drawer-ease: 250ms cubic-bezier(0.32, 0.72, 0.24, 1);

    /* 兼容字段（旧样式仍引用） */
    --nav-height: 64px;
    --max-width: 100%;  /* 不再限制最大宽度，连板天梯是全宽布局 */

    color-scheme: light;

    /* 别名补齐（2026-09-27）：以下变量此前被引用但从未定义，靠 fallback 静默兜底——
       暗色主题下 fallback 是浅色值（如 #fff/#f5f5f5/#888），导致暗色下视觉突兀。
       现在明暗各定义一份，与既有语义变量对齐。 */
    --bg-card: var(--surface);
    --bg-subtle: var(--surface-2);
    --border-color: var(--border);
    /* 解耦（2026-10-21）：与 --text-muted 脱钩、钉住原文字色值 #8B95A1。
       缘由：--text-muted 加深到 #5F6B7A 后，若继续 var() 引用会把全站「可见边框」
       （表单/chip/kbd/滚动条拇指——FRONTEND.md §2 的 --border-strong 红线）一起加深。
       文字色与边框色是两个维度，不该联动；边框若要单独调整，改这一行。 */
    --border-strong: #8B95A1;
    --text-tertiary: var(--text-muted);
    --hover: var(--surface-hover);
    --muted: var(--text-muted);
    --up-border: var(--up);
    /* --- color-mix 降级：A 类 RGB 分量（供 rgba() 拼装） --- */
    --danger-rgb: 220,38,38;
    --down-rgb: 4,120,87;
    --info-rgb: 37,99,235;
    --info-alt-rgb: 91,143,249;
    --primary-rgb: 26,115,232;
    --success-rgb: 4,120,87;
    --text-muted-rgb: 95,107,122;
    --up-rgb: 216,30,55;
    --warning-rgb: 146,64,14;
    --neutral-rgb: 139,149,161;  /* 温度计/canvas 用（不在 A 类清单，手工补） */
    /* --- color-mix 降级：B/C 类静态混合值 --- */
    --mix-bg-secondary-88-text-muted: #DFE2E6;  /* 2026-10-21 随 --text-muted 加深重算：mix(--bg-secondary 88%, --text-muted 12%) srgb（原 #E4E7EB 基于 #8B95A1） */
    --mix-cat-3-72-black: #185182;
    --mix-cat-4-75-black: #B66A20;
    --mix-cat-7-75-black: #6F4D8E;
    --mix-danger-40-border: #E39C9D;
    --mix-danger-55-black: #791515;
    --mix-danger-75-black: #A51C1C;
    --mix-down-28-bg: #B3D4CC;
    --mix-down-45-bg: #8ABEB1;
    --mix-down-50-black: #023C2C;
    --mix-down-55-bg: #71B2A0;
    --mix-down-60-white: #68AE9A;
    --mix-down-65-bg: #59A590;
    --mix-down-72-bg: #489C85;
    --mix-down-80-black: #036046;
    --mix-down-85-black: #03664A;
    --mix-down-95-black: #047253;
    --mix-info-alt-55-bg: #A1BEF9;
    --mix-info-alt-80-bg: #7AA4F9;
    --mix-primary-55-border: #77A9EA;
    --mix-primary-6-surface-2: #E3EAF4;
    --mix-success-55-border: #6BAB9A;
    --mix-success-80-bg: #359278;
    --mix-turnover-28-bg: #D5C3F6;
    --mix-turnover-45-bg: #C0A2F4;
    --mix-turnover-55-bg: #B390F3;
    --mix-turnover-60-white: #B089F4;
    --mix-turnover-70-bg: #A173F1;
    --mix-turnover-85-black: #6931C9;
    --mix-up-28-bg: #EEBBC3;
    --mix-up-45-bg: #E996A2;
    --mix-up-50-black: #6C0F1C;
    --mix-up-55-bg: #E6808F;
    --mix-up-60-white: #E87887;
    --mix-up-72-bg: #E15B6E;
    --mix-up-80-bg: #DE4A5E;
    --mix-up-80-black: #AD182C;
    --mix-up-85-black: #B81A2F;
    --mix-up-95-black: #CD1C34;
    --mix-warning-50-border: #BD957E;
    --mix-warning-55-border: #B98C72;
    --mix-warning-60-white: #BE8C6E;
    --mix-warning-65-bg: #B58061;
    --mix-warning-75-bg: #AB6E49;

    /* --- color-mix 降级：--cat-N RGB 分量（--cg 间接变量用） --- */
    --cat-1-rgb: 78,121,167;  /* 色板分量（供 rgba() 拼装） */
    --cat-2-rgb: 107,174,214;  /* 色板分量（供 rgba() 拼装） */
    --cat-3-rgb: 33,113,181;  /* 色板分量（供 rgba() 拼装） */
    --cat-4-rgb: 242,142,43;  /* 色板分量（供 rgba() 拼装） */
    --cat-5-rgb: 230,133,58;  /* 色板分量（供 rgba() 拼装） */
    --cat-6-rgb: 176,122,161;  /* 色板分量（供 rgba() 拼装） */
    --cat-7-rgb: 148,103,189;  /* 色板分量（供 rgba() 拼装） */
    --cat-8-rgb: 255,157,167;  /* 色板分量（供 rgba() 拼装） */
    --cat-9-rgb: 211,114,149;  /* 色板分量（供 rgba() 拼装） */
    --cat-10-rgb: 118,183,178;  /* 色板分量（供 rgba() 拼装） */
    --cat-11-rgb: 27,158,151;  /* 色板分量（供 rgba() 拼装） */
    --cat-12-rgb: 237,201,72;  /* 色板分量（供 rgba() 拼装） */
    --cat-13-rgb: 186,176,172;  /* 色板分量（供 rgba() 拼装） */
    --cat-14-rgb: 156,117,95;  /* 色板分量（供 rgba() 拼装） */

    /* ==================================================================
       v3 现代 UI 令牌（2026-10-12，新增层，由 ui.css 消费）
       纯新增、不改任何既有值 ⇒ 对存量页面零回归。
       既有 --radius / --shadow / --transition-* 保持不变（存量页面继续用），
       本组只服务 ui.css 的「现代外壳」。
       主题不变项（间距/圆角/动效/层级）只在 :root 定义一次——
       :root 与 [data-theme="dark"] 同挂 <html>，静态值无需在暗色里重复；
       随主题变化的只有海拔与焦点环，暗色块里各写一份。
       ================================================================== */

    /* 间距刻度（4pt 网格） */
    --space-1: 4px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-5: 20px;
    --space-6: 24px;
    --space-8: 32px;
    --space-10: 40px;

    /* 圆角刻度：容器用大（lg/xl）、数据件用小（xs/md） */
    --radius-xs: 4px;
    --radius-md: 6px;
    --radius-lg: 10px;
    --radius-xl: 14px;
    --radius-2xl: 20px;

    /* 海拔（阴影）：柔和低对比，靠层次而非重影 */
    --elev-1: 0 1px 2px rgba(15, 23, 42, 0.05), 0 1px 3px rgba(15, 23, 42, 0.06);
    --elev-2: 0 2px 6px rgba(15, 23, 42, 0.06), 0 8px 20px rgba(15, 23, 42, 0.07);
    --elev-3: 0 6px 18px rgba(15, 23, 42, 0.10), 0 14px 36px rgba(15, 23, 42, 0.08);
    --elev-4: 0 18px 48px rgba(15, 23, 42, 0.18), 0 4px 12px rgba(15, 23, 42, 0.08);

    /* 焦点环（键盘可达性；统一到 :focus-visible，不动既有 outline 行为） */
    --ring-color: rgba(var(--primary-rgb), 0.32);
    --ring: 0 0 0 3px var(--ring-color);

    /* 动效：时长 + 缓动 */
    --dur-instant: 90ms;
    --dur-fast: 140ms;
    --dur-med: 200ms;
    --dur-slow: 320ms;
    --ease-standard: cubic-bezier(0.2, 0, 0, 1);
    --ease-out: cubic-bezier(0.16, 1, 0.3, 1);        /* 快进缓停（浮层/卡片抬升） */
    --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
    --ease-spring: cubic-bezier(0.34, 1.36, 0.5, 1);  /* 轻回弹（按压/开关） */

    /* 层级刻度（与全站既有 z-index 取值语义对齐，供新组件引用） */
    --z-nav: 100;
    --z-dropdown: 150;
    --z-overlay: 200;
    --z-toast: 320;
}

/* ------------------------------------------------------------------
   深色主题：连板天梯暗色（量化终端）
   ------------------------------------------------------------------ */
[data-theme="dark"] {
    --bg: #0F1419;
    --surface: #1A1F26;
    --surface-2: #232932;
    --surface-hover: #2D3340;
    --surface-3: rgba(251, 191, 36, 0.08);
    --border: #2D3340;
    --border-light: #232932;

    --text: #E6EDF3;
    --text-secondary: #B0B8C4;
    /* 原 #6B7785 在四种深底上分别只有 4.06/3.63/3.21/2.81，均低于 AA 正文 4.5:1
       （2026-09-29 axe 实测，导航栏 10px 小字受影响最重）。改 #93A0AE 后：
       6.95/6.22/5.49/4.82，且 opacity:.85 的 .nbs-p 混色后仍有 4.90。
       取值贴近原色相（同为冷灰），视觉变化最小。 */
    --text-muted: #93A0AE;

    --primary: #4F9EF8;
    --primary-hover: #66AAF9;
    --primary-bg: rgba(79, 158, 248, 0.16);
    --primary-border: rgba(79, 158, 248, 0.3);
    --primary-text-on-bg: #93C5FD;
    /* 当背景配白字的品牌色：原 #4F9EF8 白字仅 2.77:1（远低于 AA 4.5）⇒
       统一为 #2563EB（5.17:1）。注意 **不能** 用上面那个 --primary —— 它要留在
       #4F9EF8 才够亮，当深底上的文字时有 6.68:1。 */
    --primary-solid: #2563EB;
    --primary-solid-hover: #1D4ED8;

    --sidebar-item-color: #9AA7B4;
    --sidebar-item-hover-bg: rgba(154, 167, 180, 0.12);
    --sidebar-group-title-color: #93A0AE;  /* a11y：原 #6B7785 在深底上 3.63:1 */

    --danger: #F85149;
    --danger-hover: #FF6B5C;
    --warning: #FBBF24;
    --success: #34D399;
    --info: #60A5FA;
    --info-alt: #7CA8F7;  /* 信息蓝辅助（图表/连线） */

    --up: #FF4D6A;
    --up-bg: rgba(255, 77, 106, 0.16);
    --down: #2EE08C;
    --down-bg: rgba(46, 224, 140, 0.16);
    --turnover: #A78BFA;  /* 竞价换手率紫（暗色提亮）*/
    --neutral: #93A0AE;  /* a11y：与 --text-muted 同步（原 #6B7785 不足 4.5） */

    /* 语义别名 token（暗色适配，与 :root 一一对应） */
    --text-primary: #E6EDF3;
    --bg-secondary: #232932;
    --bg-elevated: #232932;
    --error: #F85149;
    --success-bg: rgba(52, 211, 153, 0.16);
    --warning-bg: rgba(251, 191, 36, 0.16);
    --error-bg: rgba(248, 81, 73, 0.16);

    --accent: var(--danger);

    /* 分类色板（暗色提亮 + 降饱和保可读） */
    --cat-1: #6B93C4;  --cat-2: #85C3E8;  --cat-3: #4A93D4;  --cat-4: #F5A85E;
    --cat-5: #EFA05E;  --cat-6: #C99BBC;  --cat-7: #B08FD6;  --cat-8: #FFB3BB;
    --cat-9: #E293B2;  --cat-10: #93CFCA; --cat-11: #3CC0B8; --cat-12: #F2D66E;
    --cat-13: #C9C2BE; --cat-14: #B8956F;

    --shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
    --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.4);
    --shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.5);

    color-scheme: dark;
    /* 别名补齐（同 :root 注释）：暗色下指向暗色语义值，fallback 浅色值不再生效 */
    --bg-card: var(--surface);
    --bg-subtle: var(--surface-2);
    --border-color: var(--border);
    /* 解耦（2026-10-21，同 :root 理由）：钉住当前渲染值 #93A0AE——深色 text-muted
       已达 AA，此处脱钩只为防未来调文字色时拖动全站边框。 */
    --border-strong: #93A0AE;
    --text-tertiary: var(--text-muted);
    --hover: var(--surface-hover);
    --muted: var(--text-muted);
    --up-border: var(--up);
    /* --- color-mix 降级：A 类 RGB 分量（供 rgba() 拼装） --- */
    --danger-rgb: 248,81,73;
    --down-rgb: 46,224,140;
    --info-rgb: 96,165,250;
    --info-alt-rgb: 124,168,247;
    --primary-rgb: 79,158,248;
    --success-rgb: 52,211,153;
    --text-muted-rgb: 107,119,133;
    --up-rgb: 255,77,106;
    --warning-rgb: 251,191,36;
    --neutral-rgb: 107,119,133;
    /* --- color-mix 降级：B/C 类静态混合值 --- */
    --mix-bg-secondary-88-text-muted: #303741;  /* 2026-10-21 修正陈旧值：原 #2C323C 系 09-29 修复前按旧 text-muted #6B7785 算得（数值反算证实）；按现行 #93A0AE 重算 = mix(--bg-secondary 88%, --text-muted 12%) srgb。唯一消费方 .cs-cat-head:hover */
    --mix-cat-3-72-black: #356A99;
    --mix-cat-4-75-black: #B87E46;
    --mix-cat-7-75-black: #846BA0;
    --mix-danger-40-border: #7E3F44;
    --mix-danger-55-black: #882D28;
    --mix-danger-75-black: #BA3D37;
    --mix-down-28-bg: #184D39;
    --mix-down-45-bg: #1D704D;
    --mix-down-50-black: #177046;
    --mix-down-55-bg: #208458;
    --mix-down-60-white: #82ECBA;
    --mix-down-65-bg: #239964;
    --mix-down-72-bg: #25A76C;
    --mix-down-80-black: #25B370;
    --mix-down-85-black: #27BE77;
    --mix-down-95-black: #2CD585;
    --mix-info-alt-55-bg: #4B6593;
    --mix-info-alt-80-bg: #668ACB;
    --mix-primary-55-border: #406EA5;
    --mix-primary-6-surface-2: #26303E;
    --mix-success-55-border: #318B71;
    --mix-success-80-bg: #2DAD7F;
    --mix-turnover-28-bg: #3A3558;
    --mix-turnover-45-bg: #534A7E;
    --mix-turnover-55-bg: #635595;
    --mix-turnover-60-white: #CAB9FC;
    --mix-turnover-70-bg: #7967B6;
    --mix-turnover-85-black: #8E76D4;
    --mix-up-28-bg: #522430;
    --mix-up-45-bg: #7B2E3D;
    --mix-up-50-black: #802635;
    --mix-up-55-bg: #933346;
    --mix-up-60-white: #FF94A6;
    --mix-up-72-bg: #BC3D53;
    --mix-up-80-bg: #CF425A;
    --mix-up-80-black: #CC3E55;
    --mix-up-85-black: #D9415A;
    --mix-up-95-black: #F24965;
    --mix-warning-50-border: #947932;
    --mix-warning-55-border: #9E8031;
    --mix-warning-60-white: #FDD97C;
    --mix-warning-65-bg: #A88320;
    --mix-warning-75-bg: #C09421;

    /* --- color-mix 降级：--cat-N RGB 分量（--cg 间接变量用） --- */
    --cat-1-rgb: 107,147,196;  /* 色板分量（供 rgba() 拼装） */
    --cat-2-rgb: 133,195,232;  /* 色板分量（供 rgba() 拼装） */
    --cat-3-rgb: 74,147,212;  /* 色板分量（供 rgba() 拼装） */
    --cat-4-rgb: 245,168,94;  /* 色板分量（供 rgba() 拼装） */
    --cat-5-rgb: 239,160,94;  /* 色板分量（供 rgba() 拼装） */
    --cat-6-rgb: 201,155,188;  /* 色板分量（供 rgba() 拼装） */
    --cat-7-rgb: 176,143,214;  /* 色板分量（供 rgba() 拼装） */
    --cat-8-rgb: 255,179,187;  /* 色板分量（供 rgba() 拼装） */
    --cat-9-rgb: 226,147,178;  /* 色板分量（供 rgba() 拼装） */
    --cat-10-rgb: 147,207,202;  /* 色板分量（供 rgba() 拼装） */
    --cat-11-rgb: 60,192,184;  /* 色板分量（供 rgba() 拼装） */
    --cat-12-rgb: 242,214,110;  /* 色板分量（供 rgba() 拼装） */
    --cat-13-rgb: 201,194,190;  /* 色板分量（供 rgba() 拼装） */
    --cat-14-rgb: 184,149,111;  /* 色板分量（供 rgba() 拼装） */

    /* v3 现代 UI 令牌·暗色差异项（2026-10-12）：间距/圆角/动效/层级与
       :root 同值，无需重复；暗色下只有海拔（更深、靠阴影立层次）与
       焦点环（主色更亮，环要更明显）需要另写一份。 */
    --elev-1: 0 1px 2px rgba(0, 0, 0, 0.45), 0 1px 3px rgba(0, 0, 0, 0.35);
    --elev-2: 0 2px 8px rgba(0, 0, 0, 0.50), 0 8px 22px rgba(0, 0, 0, 0.40);
    --elev-3: 0 8px 24px rgba(0, 0, 0, 0.55), 0 16px 40px rgba(0, 0, 0, 0.45);
    --elev-4: 0 20px 56px rgba(0, 0, 0, 0.62), 0 6px 16px rgba(0, 0, 0, 0.50);
    --ring-color: rgba(var(--primary-rgb), 0.45);
    --ring: 0 0 0 3px var(--ring-color);
}
