/* ══════════════════════════════════════════════════════════════════
   tokens.css —— 四主题令牌（A 默认无类名 / html.themeB / html.themeC / html.themeD）
   来源：mockup/中台-统一原型.html 第 68–417 行【原样搬，未改一字符】
   作用域：html（不是 .win）—— 这样 body{background:var(--e0)} 才生效
   纪律：本项目所有组件样式一律 var() 取色；字面色值只能出现在本文件。
   额外追加（本文件末尾）：12 个头像底色 + 主题切换器 12 色卡，均以令牌形式给出。
   ══════════════════════════════════════════════════════════════════ */
html{
  /* ── 主题 A「玄墨 · 青玉」深 + 冷（默认，无类名）──────────────
     面阶方向：层级越高越亮 —— 外壳 e0 最暗，会话区 e2 是唯一亮面 */
  --e0:#0A0C0E; --e1:#0F1215; --e2:#15191D; --e3:#1B2025; --e4:#22272D; --e5:#2A3037;
  /* 结构线 / 悬停描边 / 图标按钮悬停底 / 滚动条 */
  --line:rgba(255,255,255,.055); --line2:rgba(255,255,255,.10); --line3:rgba(255,255,255,.18);
  --veil:rgba(255,255,255,.06); --scroll:rgba(255,255,255,.14);
  /* 受光边（凹槽上沿高光） */
  --bevel:rgba(255,255,255,.055); --bevel-acc:rgba(111,184,148,.13);
  /* 亮色专用 1px 发丝线；深色下 transparent —— 深色靠明度跳变，不靠描边 */
  --hairline:transparent;
  /* 文字四级（e0–e5 全阶实测最低 14.4 / 5.2 / 4.5 : 1）
     ⚠ t3 只可用于 e0–e4；在 e5 #2A3037 上为 4.02:1 —— e5 是全站唯一不承载 t3 的面 */
  --t1:#E6E9E6; --t2:#9BA3AB; --t3:#868E97;
  /* t-nav 介于 t1/t2 之间：顶栏是最高层级导航，与正文副标题同色会丢失层级 */
  --t-nav:#BDC3C6;
  /* 强调与语义 */
  --accent:#4E8F72; --accent-text:#6FB894; --accent-wash:#1E3128;
  --data:#C8A96E; --amber:#D8A65C; --amber-bg:#2A2318;
  /* 陶土：v1.3 由 #C86B5E 加深（旧值上白字 3.67:1，11px 计数徽标不达 AA） */
  --clay:#B45548;
  --info:#6E93C4; --info-bg:#1E242C; --violet:#A896C8; --violet-bg:#262230;
  /* 气泡 */
  --bubble-in:#1B2025; --bubble-out:#1E3128; --bubble-out-text:#DCEFE5;
  /* 强调底/陶土底上的文字：青玉上白字仅 3.82:1，故深色主题一律用深字 */
  --on-accent:#0A0C0E; --on-clay:#FFFFFF;
  /* ★ 交互面语义令牌 —— 深色下「抬升 = 更亮」，直绑 e 阶即可 */
  --face-hover:#15191D; --face-on:#1B2025; --face-press:#1B2025;
  /* 合成面与装饰 */
  --sel:rgba(78,143,114,.16);
  --ring:rgba(216,166,92,.55); --focus:rgba(111,184,148,.55);
  --hot-bg:rgba(216,166,92,.08); --demo-bg:rgba(21,25,29,.96);
  --sh-1:rgba(0,0,0,.45); --sh-2:rgba(0,0,0,.6);
  /* ★ 窄窗右栏抽屉的遮罩（2026-09-17）：实心底、不带模糊 —— 桌面端开抽屉要"压暗底下"但不"糊掉底下" */
  --scrim:rgba(4,6,8,.52);
  /* ★ 2026-10-01（`js/lightbox.js` · 看大图）：**新开一个变量**，不是把 `--scrim` 调暗 ——
     `--scrim` 被右栏抽屉 / 外观面板等多处共用，动它等于同时改那些地方
     （本仓：一个变量一种用途）。
     ⚠ 四个主题块**各有一份**：缺一份 ⇒ 那个主题下 `var()` 取不到值 ⇒ 遮罩**透明**，
       而且**不报错**（`_lightbox.mjs` ④ 逐主题断言它有值）。 */
  --lbx-scrim:rgba(6,8,10,.90);
  /* 字体三支柱 */
  --font-ui:"Inter","PingFang SC","Noto Sans SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --font-num:"SF Mono","JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --font-display:"Songti SC","Source Han Serif SC","STSong","Noto Serif SC",Georgia,serif;
  /* 兼容别名 19 条 → 2026-09-19 移入文末 `:root{}`（与主题解耦 · 注释见该处）。
     它们是「主题无关的转发层」：右值全为 var()，随四主题跟随；挂在 A 层 html{} 里
     读起来像「主题 A 的定义」，易被误读成「不跟随主题」⇒ 移动 = 语义澄清（非防护）。 */
  --stop:#DE9082; --stop-bg:#32201C;
  /* ↓ 由 客户模块原型 并入（首屏原型原本不定义、也不使用） */
  --fs-micro:11px;
  --fs-caption:12px;
  --fs-small:13px;
  --fs-body:14px;
  --fs-bubble:15px;
  --fs-title:17px;
  --fs-h3:20px;
  --fs-h2:26px;
  --fs-num:34px;
  --s1:4px;
  --s2:8px;
  --s3:12px;
  --s4:16px;
  --s5:20px;
  --s6:24px;
  --s8:32px;
  --s10:40px;
  --r-xs:4px;
  --r-sm:6px;
  --r-md:10px;
  --r-lg:14px;
  --r-xl:20px;
  --r-full:9999px;
  --dur-1:120ms;
  --dur-2:180ms;
  --line-strong:rgba(255,255,255,.10);
  --stage-chip-bg:#21272D;
  --stage-chip-fg:#9BA3AB;
  --q4-card-bg:#1B2025;
  --q4-rule:#C8A96E;
  --q4-action-bg:#2A2318;
  --guard-bg:#1E242C;
  --guard-fg:#6E93C4;
  --chart-line:#C8A96E;
  --chart-hollow:#C8A96E;
  --chart-gap:rgba(255,255,255,.05);
  --log-infer-bg:#123033;
  --log-infer-line:#4E8F72;
  --log-infer-badge-bg:#1E3128;
  --slot-empty-bg:#1B2025;
  --slot-empty-fg:#868E97;
  --suggest-bg:#1D242B;
  --av-bg:var(--e4);
  --av-fg:var(--t2);
  --suggest-fg:#8FA3B4;
  /* ══ ★ 客户站 AI 层（2026-09-17）══════════════════════════════════
     `--crm-side-w` = 客户站 B 版「AI 副驾栏」宽度。
     ★ 为什么必须挂在这里、而且**只写这一处**（不随四主题重写）：
       它是**布局常量**，与明度/色温无关 —— 四主题里那批等值重复的 --r-* / --s-*
        是历史沿革，新增量不跟进这个写法（同一数值写四处 = 四处都可能漂）。
     ★ 为什么必须挂到 `html` 而不能挂 `.app`：**消费方之一是 `#demo`**，
       而 `#demo` 是 `.app` 的**后继兄弟**（不在 .app 子树内）—— 挂 .app 时它读不到，
       会静默回落成 `right:14px` 并**压住副驾栏**（不报错，正是本项目头号教训）。
     ★ 消费方两处，都写 `var(--crm-side-w)`、都不写字面 300：
         · customers.css  `#crmSide{flex-basis}`
         · shell.css      `.app.crmmode.poolside ~ #demo{right:calc(var(--crm-side-w) + 14px)}`
       两处写死同一个数就是漂移源（RULES 53）；`consistency.mjs` 对账「定义 1 处 + 引用 2 处」。 */
  --crm-side-w:300px;
  /* ↓ 由 宁哥三库原型 并入（首屏原型原本不定义、也不使用） */
  --danger:#E0685C;
  --danger-text:#EC9384;
  --danger-bg:#2C1A18;
  --danger-line:rgba(224,104,92,.26);
  --amber-line:rgba(216,166,92,.30);
  --accent-line:rgba(78,143,114,.30);
  /* ══ ★ AI 视觉层（本轮新增）══════════════════════════════════════
     用途：对话站的「AI 推理链路」条 + 候选卡 AI 来源标识。
     选色规则（四主题一致，可机械核验）：
       ① 双轨色 = 本主题体系内的两支强调色（--ai-1 取冷/暖轴的「信息色」，--ai-2 取青玉）；
          **不新引第五色相** —— 硬塞一个全局 AI 蓝会在暖主题里被读成「外来元素」。
       ② 明度轴：深色主题取**亮**（L 高）、浅色主题取**深**（L 低），
          保证在会话区底（--e2，深色最亮面 / 浅色纯白）上文字对比度 ≥4.5:1。
       ③ 身份标识（✦ 徽标 / 标题 / 左缘竖条）一律用 --ai-1；通道色只出现在「两路召回」那对并列语义上。
     ⚠ 本组令牌的**消费方**（2026-09-17 更正 · 原写「只允许在 chat.css 的 .chain 规则族里引用」，
       该说法在首屏 AI 层落地后已不成立，属**假承诺**，按 RULES 63 改掉）：
         · shell.css   —— .engine（顶栏胶囊）/ .live（指标带）/ .tbtn.hi / .statusbar
         · chat.css    —— .chain（推理链路条）/ .cands（候选卡）
         · customers.css —— .aipool（客户站 AI 客户池：全宽带 + 副驾栏）/ .aic（行内研判标）
       三处都只**读**令牌、不定义；令牌本身只有本文件这一个定义点。 */
  --ai-1:#8FB4FF; --ai-2:#4FCE94;
  --ai-fg:#A7C4F5;                                    /* 链路标题文字 */
  --ai-sum:#8A93A0;                                   /* 折叠态摘要文字（与 --t3 同档，不抢正文） */
  --ai-surface:linear-gradient(90deg,rgba(143,180,255,.085),rgba(79,206,148,.055));
  --ai-line:rgba(143,180,255,.20);
  --ai-cop:linear-gradient(140deg,rgba(143,180,255,.13),rgba(79,206,148,.06));
  --ai-live-bg:rgba(79,206,148,.10); --ai-live-line:rgba(79,206,148,.32);
  --ai-node-bg:rgba(0,0,0,.32);
  --ai-node-line:rgba(255,255,255,.10);
  --ai-node-k:#8A939E;                                /* 节点小标签 */
  --ai-node-v:#E6E9E6;                                /* 节点值（= --t1 同级） */
  --ai-chip-bg:rgba(143,180,255,.16); --ai-chip-fg:#B7CFFA;
  --ai-track:linear-gradient(90deg,rgba(143,180,255,.75),rgba(79,206,148,.75));
  --ai-em:#6FE0AC;                                    /* 增益小字（+64%） */
  --ai-src-bg:rgba(255,255,255,.055); --ai-src-line:rgba(255,255,255,.09);
  --ai-fold:#79828D;                                  /* 折叠把手默认色 */
}

/* 结构（不含令牌）：令牌已上提到 html，.win 只负责布局与承载。
   这样 body 的 background:var(--e0) 才真正生效 —— 原先令牌挂在 .win 上，
   而 .win 是 body 的子元素，body 那条声明其实从未生效（静默无效）。 */
.win{width:100%;height:100%;display:flex;flex-direction:column;background:var(--e0);overflow:hidden}

/* ══ B「曜岩 · 香槟」深 + 暖 ══
   暖黑基底，香槟金升为主强调，青玉降为数据色 —— 与 A 同构，只对调两支强调色 */
html.themeB{
  --e0:#0B0906; --e1:#120F0B; --e2:#191510; --e3:#201B14; --e4:#28221A; --e5:#312A20;
  --line:rgba(255,255,255,.06); --line2:rgba(255,255,255,.11); --line3:rgba(255,255,255,.18);
  --veil:rgba(255,255,255,.06); --scroll:rgba(255,255,255,.14); --hairline:transparent;
  --bevel:rgba(255,255,255,.06); --bevel-acc:rgba(200,169,110,.14);
  /* t3 由 #8F8779 上调：旧值在 e4（.search 底）上仅 4.43:1，不达 AA */
  --t1:#EAE5DC; --t2:#A79E90; --t3:#968E80; --t-nav:#C6BEB2;
  --accent:#C8A96E; --accent-text:#DCC08A; --accent-wash:#2A2318;
  --data:#8FBF9E; --amber:#D8A65C; --amber-bg:#2A2318; --clay:#B45548;
  --info:#8FA3C4; --info-bg:#1F242C; --violet:#B49BC8; --violet-bg:#2A2230;
  /* v1.3 修：己方气泡原为 #2A2318（= 对方气泡 #201B14 同色相仅提亮），
         实测两气泡 ΔL* 4.06 / ΔE00 3.43 —— 「谁发的」这个语义维度糊掉。
         改为带香槟色相的 #362A10（Lab hue 84.5° ≈ 强调色 #C8A96E 的 84.3°），
         现 ΔL* 7.70 / ΔC* 13.04 / ΔE00 9.82，与 A(12.93) C(9.66) D(7.39) 同档。
         ⚠ 若将来给己方消息加 sens 芯片，需另调 --amber-bg（现 #2A2318 与新气泡偏近）。*/
  --bubble-in:#201B14; --bubble-out:#362A10; --bubble-out-text:#F0E4CE;
  --on-accent:#0B0906; --on-clay:#FFFFFF;
  --face-hover:#191510; --face-on:#201B14; --face-press:#201B14;
  --sel:rgba(200,169,110,.16);
  --ring:rgba(216,166,92,.55); --focus:rgba(200,169,110,.55);
  --hot-bg:rgba(216,166,92,.08); --demo-bg:rgba(25,21,16,.96);
  --sh-1:rgba(0,0,0,.45); --sh-2:rgba(0,0,0,.6);
  --scrim:rgba(8,6,4,.52);
  --lbx-scrim:rgba(12,9,6,.90);          /* 看大图遮罩（暖深 · 与 --scrim 分用，见 html 块注释） */
  --stop:#E09684; --stop-bg:#31201A;
  /* ↓ 由 客户模块原型 并入（首屏原型原本不定义、也不使用） */
  --font-ui:"Inter","PingFang SC","Noto Sans SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --font-num:"SF Mono","JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --font-display:"Songti SC","Source Han Serif SC","STSong","Noto Serif SC",Georgia,serif;
  --fs-micro:11px;
  --fs-caption:12px;
  --fs-small:13px;
  --fs-body:14px;
  --fs-bubble:15px;
  --fs-title:17px;
  --fs-h3:20px;
  --fs-h2:26px;
  --fs-num:34px;
  --s1:4px;
  --s2:8px;
  --s3:12px;
  --s4:16px;
  --s5:20px;
  --s6:24px;
  --s8:32px;
  --s10:40px;
  --r-xs:4px;
  --r-sm:6px;
  --r-md:10px;
  --r-lg:14px;
  --r-xl:20px;
  --r-full:9999px;
  --dur-1:120ms;
  --dur-2:180ms;
  --line-strong:rgba(255,255,255,.11);
  --stage-chip-bg:#251F18;
  --stage-chip-fg:#A79E90;
  --q4-card-bg:#201B14;
  --q4-rule:#8FBF9E;
  --q4-action-bg:#2A2318;
  --guard-bg:#1C1B14;
  --guard-fg:#8FA7C4;
  --chart-line:#8FBF9E;
  --chart-hollow:#8FBF9E;
  --chart-gap:rgba(255,255,255,.05);
  --log-infer-bg:#102A24;
  --log-infer-line:#C8A96E;
  --log-infer-badge-bg:#2A2318;
  --slot-empty-bg:#201B14;
  --slot-empty-fg:#968E80;
  --suggest-bg:#241E16;
  --av-bg:var(--e4);
  --av-fg:var(--t2);
  --suggest-fg:#B3A488;
  /* ↓ 由 宁哥三库原型 并入（首屏原型原本不定义、也不使用） */
  --danger:#E2725F;
  --danger-text:#EF9C8A;
  --danger-bg:#2E1B16;
  --danger-line:rgba(226,114,95,.26);
  --amber-line:rgba(216,150,80,.32);
  --accent-line:rgba(200,169,110,.30);
  /* ── AI 视觉层（暖轴：香槟金 + 玉绿；深色 ⇒ 取亮）── */
  --ai-1:#E0C489; --ai-2:#8FBF9E;
  --ai-fg:#DFC58F;
  --ai-sum:#948B7D;
  --ai-surface:linear-gradient(90deg,rgba(224,196,137,.09),rgba(143,191,158,.055));
  --ai-line:rgba(224,196,137,.20);
  --ai-cop:linear-gradient(140deg,rgba(224,196,137,.13),rgba(143,191,158,.06));
  --ai-live-bg:rgba(143,191,158,.10); --ai-live-line:rgba(143,191,158,.32);
  --ai-node-bg:rgba(0,0,0,.32);
  --ai-node-line:rgba(255,255,255,.11);
  --ai-node-k:#948B7D;
  --ai-node-v:#EAE5DC;
  --ai-chip-bg:rgba(224,196,137,.16); --ai-chip-fg:#EBD3A4;
  --ai-track:linear-gradient(90deg,rgba(224,196,137,.75),rgba(143,191,158,.75));
  --ai-em:#A5D6B4;
  --ai-src-bg:rgba(255,255,255,.055); --ai-src-line:rgba(255,255,255,.10);
  --ai-fold:#867E71;
}

/* ══ C「素绢 · 暖金」浅 + 暖 ══
   ★ 亮色面阶「按角色定义」，不按抬升顺序 —— 加亮色主题时最大的结构性发现：
     深色下 e 阶单调递增（越亮 = 越凸起），但亮色下明度上限就是白（会话区 e2）。
     若强求单调，卡面/输入框只能比白更亮（不可能），于是被迫整体下压 → 界面发闷。
     所以亮色改为按「与谁相邻」定值，角色固定而明度不单调：
       e0 窗框（暗于面板）· e1 面板/列表 · e2 会话区 = 纯白 · e3 卡面 · e4 凹陷输入/芯片 · e5 悬停/按压
     实测相邻可辨：e0↔e1 3.8 · e1↔e2 3.5 · e1↔e4 5.5 · e2↔e4 9.0 · e3↔e4 6.6 · e4↔e5 3.5
     余下三对（e0↔e4 1.7 · e2↔e3 2.4 · e1↔e3 1.1）明度不够，由 --hairline 发丝线补。
     这不是妥协：白面吃掉明度预算后，亮色 UI 用 1px 线区分卡面是通行做法
     （Notion / Linear / GitHub 的亮色主题皆如此）。 */
html.themeC{
  --e0:#ECEAE4; --e1:#F6F5F1; --e2:#FFFFFF; --e3:#F9F8F5; --e4:#E8E5DE; --e5:#DFDBD2;
  --line:rgba(62,52,38,.13); --line2:rgba(62,52,38,.19); --line3:rgba(62,52,38,.30);
  --veil:rgba(62,52,38,.075); --scroll:rgba(62,52,38,.26);
  --hairline:rgba(62,52,38,.16);
  --bevel:rgba(255,255,255,.85); --bevel-acc:rgba(255,255,255,.72);
  --t1:#1F1C16; --t2:#5C564E; --t3:#69625A; --t-nav:#38332C;
  --accent:#8B6516; --accent-text:#6D4F0F; --accent-wash:#F1E4C6;
  --data:#2E6B57; --amber:#9A5A12; --amber-bg:#FBEBD0; --clay:#A8463A;
  --info:#365F8C; --info-bg:#E4EBF4; --violet:#6A4E96; --violet-bg:#EDE7F5;
  --bubble-in:#F2F0EA; --bubble-out:#F2E5C6; --bubble-out-text:#43340E;
  /* 亮色主强调是深金，白字在其上 5.6:1 —— 深色那套「强调底用深字」在此反转 */
  --on-accent:#FFFFFF; --on-clay:#FFFFFF;
  /* 亮色交互面：hover 变暗（不是变亮）、on 用主强调色的淡染；
     实测 hover ΔL* −3.96 / on ΔL* −7.14、ΔC* 13.72 —— 明度与色度双分离 */
  --face-hover:#EFE9DF; --face-on:#EDE0BC; --face-press:#DFDBD2;
  --sel:rgba(139,101,22,.15);
  --ring:rgba(139,101,22,.6); --focus:rgba(139,101,22,.5);
  --hot-bg:#FBEED0; --demo-bg:rgba(250,248,244,.97);
  --sh-1:rgba(60,48,30,.10); --sh-2:rgba(60,48,30,.18);
  --scrim:rgba(40,32,20,.34);
  --lbx-scrim:rgba(36,28,18,.86);        /* 看大图遮罩（暖浅 · 与 --scrim 分用，见 html 块注释） */
  --stop:#A6433A; --stop-bg:#F9E9E6;
  /* ↓ 由 客户模块原型 并入（首屏原型原本不定义、也不使用） */
  --font-ui:"Inter","PingFang SC","Noto Sans SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --font-num:"SF Mono","JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --font-display:"Songti SC","Source Han Serif SC","STSong","Noto Serif SC",Georgia,serif;
  --fs-micro:11px;
  --fs-caption:12px;
  --fs-small:13px;
  --fs-body:14px;
  --fs-bubble:15px;
  --fs-title:17px;
  --fs-h3:20px;
  --fs-h2:26px;
  --fs-num:34px;
  --s1:4px;
  --s2:8px;
  --s3:12px;
  --s4:16px;
  --s5:20px;
  --s6:24px;
  --s8:32px;
  --s10:40px;
  --r-xs:4px;
  --r-sm:6px;
  --r-md:10px;
  --r-lg:14px;
  --r-xl:20px;
  --r-full:9999px;
  --dur-1:120ms;
  --dur-2:180ms;
  --line-strong:rgba(62,52,38,.18);
  --stage-chip-bg:#EDE9E1;
  --stage-chip-fg:#5C564E;
  --q4-card-bg:#F9F8F5;
  --q4-rule:#2E6B57;
  --q4-action-bg:#FBEBD0;
  --guard-bg:#E9F0F6;
  --guard-fg:#33587F;
  --chart-line:#2E6B57;
  --chart-hollow:#2E6B57;
  --chart-gap:rgba(62,52,38,.05);
  --log-infer-bg:#EAF3F0;
  --log-infer-line:#8B6516;
  --log-infer-badge-bg:#F1E4C6;
  --slot-empty-bg:#E8E5DE;
  --slot-empty-fg:#69625A;
  --suggest-bg:#EFEAE0;
  --av-bg:var(--e4);
  --av-fg:var(--t2);
  --suggest-fg:#7A6E5A;
  /* ↓ 由 宁哥三库原型 并入（首屏原型原本不定义、也不使用） */
  --danger:#B42318;
  --danger-text:#9E2A22;
  --danger-bg:#FDF0EE;
  --danger-line:#F0D2CC;
  --amber-line:#EBC98A;
  --accent-line:#E0D2AC;
  /* ── AI 视觉层（暖轴：暖金 + 青玉；浅色 ⇒ 取深）──
     ★ 节点底不能沿用深色那套 rgba(0,0,0,.32)：浅色面阶是按「角色」定的，
       会话区已是纯白，再压暗节点会与「凹陷输入框 e4」语义撞车。
       改用 e3 卡面 + --hairline 发丝线（与全站亮色区分卡面的做法一致）。 */
  --ai-1:#8A5A10; --ai-2:#1F6B4E;
  --ai-fg:#7A5008;
  --ai-sum:#69625A;
  --ai-surface:linear-gradient(90deg,rgba(138,90,16,.07),rgba(31,107,78,.055));
  --ai-line:rgba(138,90,16,.24);
  --ai-cop:linear-gradient(140deg,rgba(138,90,16,.10),rgba(31,107,78,.055));
  --ai-live-bg:rgba(31,107,78,.10); --ai-live-line:rgba(31,107,78,.30);
  --ai-node-bg:#F9F8F5;
  --ai-node-line:rgba(62,52,38,.22);
  --ai-node-k:#69625A;
  --ai-node-v:#1F1C16;
  --ai-chip-bg:rgba(138,90,16,.12); --ai-chip-fg:#6D4F0F;
  --ai-track:linear-gradient(90deg,rgba(138,90,16,.62),rgba(31,107,78,.62));
  --ai-em:#1F6B4E;
  --ai-src-bg:rgba(62,52,38,.05); --ai-src-line:rgba(62,52,38,.13);
  --ai-fold:#7A736A;
}

/* ══ D「云白 · 青玉」浅 + 冷 ══
   亮色面阶规则同 C，色温与主强调对调：主强调青玉、数据色暖金。
   实测 hover ΔL* −2.51 / on ΔL* −7.76（分级比 3.09x）、ΔC* 7.75 */
html.themeD{
  --e0:#EAEDEC; --e1:#F5F7F6; --e2:#FFFFFF; --e3:#F8FAF9; --e4:#E6EAE9; --e5:#DCE1E0;
  --line:rgba(34,48,44,.13); --line2:rgba(34,48,44,.19); --line3:rgba(34,48,44,.30);
  --veil:rgba(34,48,44,.075); --scroll:rgba(34,48,44,.26);
  --hairline:rgba(34,48,44,.16);
  --bevel:rgba(255,255,255,.85); --bevel-acc:rgba(255,255,255,.72);
  --t1:#161C1A; --t2:#525B58; --t3:#5C6562; --t-nav:#2F3735;
  --accent:#2F6B52; --accent-text:#28604A; --accent-wash:#D0E3D8;
  --data:#8A6A2E; --amber:#8A5210; --amber-bg:#F5EAD2; --clay:#A8463A;
  --info:#33587F; --info-bg:#E3EAF2; --violet:#63488A; --violet-bg:#EBE6F3;
  --bubble-in:#F0F3F2; --bubble-out:#DCEBE1; --bubble-out-text:#1B4534;
  --on-accent:#FFFFFF; --on-clay:#FFFFFF;
  --face-hover:#EDF0EF; --face-on:#D2E5DA; --face-press:#DCE1E0;
  --sel:rgba(47,107,82,.14);
  --ring:rgba(47,107,82,.6); --focus:rgba(47,107,82,.5);
  --hot-bg:#F5EAD2; --demo-bg:rgba(246,249,248,.97);
  --sh-1:rgba(30,44,40,.10); --sh-2:rgba(30,44,40,.18);
  --scrim:rgba(18,28,26,.34);
  --lbx-scrim:rgba(14,22,20,.86);        /* 看大图遮罩（冷浅 · 与 --scrim 分用，见 html 块注释） */
  --stop:#A6433A; --stop-bg:#F8EBE8;
  /* ↓ 由 客户模块原型 并入（首屏原型原本不定义、也不使用） */
  --font-ui:"Inter","PingFang SC","Noto Sans SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --font-num:"SF Mono","JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --font-display:"Songti SC","Source Han Serif SC","STSong","Noto Serif SC",Georgia,serif;
  --fs-micro:11px;
  --fs-caption:12px;
  --fs-small:13px;
  --fs-body:14px;
  --fs-bubble:15px;
  --fs-title:17px;
  --fs-h3:20px;
  --fs-h2:26px;
  --fs-num:34px;
  --s1:4px;
  --s2:8px;
  --s3:12px;
  --s4:16px;
  --s5:20px;
  --s6:24px;
  --s8:32px;
  --s10:40px;
  --r-xs:4px;
  --r-sm:6px;
  --r-md:10px;
  --r-lg:14px;
  --r-xl:20px;
  --r-full:9999px;
  --dur-1:120ms;
  --dur-2:180ms;
  --line-strong:rgba(34,48,44,.18);
  --stage-chip-bg:#EDEFEF;
  --stage-chip-fg:#525B58;
  --q4-card-bg:#F8FAF9;
  --q4-rule:#8A6A2E;
  --q4-action-bg:#F5EAD2;
  --guard-bg:#E9F0F6;
  --guard-fg:#33587F;
  --chart-line:#8A6A2E;
  --chart-hollow:#8A6A2E;
  --chart-gap:rgba(34,48,44,.05);
  --log-infer-bg:#EAF3F0;
  --log-infer-line:#2F6B52;
  --log-infer-badge-bg:#D0E3D8;
  --slot-empty-bg:#E6EAE9;
  --slot-empty-fg:#5C6562;
  --suggest-bg:#ECF0F2;
  --av-bg:var(--e4);
  --av-fg:var(--t2);
  --suggest-fg:#4E5F6E;
  /* ↓ 由 宁哥三库原型 并入（首屏原型原本不定义、也不使用） */
  --danger:#AF2A20;
  --danger-text:#99251D;
  --danger-bg:#FCEFED;
  --danger-line:#EFD0CB;
  --amber-line:#E7C68B;
  --accent-line:#BFD8C8;
  /* ── AI 视觉层（冷轴：深蓝 + 青玉；浅色 ⇒ 取深）── */
  --ai-1:#2C5FA8; --ai-2:#2F6B52;
  --ai-fg:#25528F;
  --ai-sum:#5C6562;
  --ai-surface:linear-gradient(90deg,rgba(44,95,168,.07),rgba(47,107,82,.055));
  --ai-line:rgba(44,95,168,.24);
  --ai-cop:linear-gradient(140deg,rgba(44,95,168,.10),rgba(47,107,82,.055));
  --ai-live-bg:rgba(47,107,82,.10); --ai-live-line:rgba(47,107,82,.30);
  --ai-node-bg:#F8FAF9;
  --ai-node-line:rgba(34,48,44,.22);
  --ai-node-k:#5C6562;
  --ai-node-v:#161C1A;
  --ai-chip-bg:rgba(44,95,168,.12); --ai-chip-fg:#25528F;
  --ai-track:linear-gradient(90deg,rgba(44,95,168,.62),rgba(47,107,82,.62));
  --ai-em:#2F6B52;
  --ai-src-bg:rgba(34,48,44,.05); --ai-src-line:rgba(34,48,44,.13);
  --ai-fold:#6E7774;
}
/* ── 追加：头像底色 12 档（原型 1028–1030 行的 .c1..c12 字面值 → 令牌化，供组件样式 var() 引用）── */
:root{
  /* ── 兼容别名 19 条（2026-09-19 自 `html{}` 移入，与主题解耦）────────────────
     主题无关的转发层：右值全 var()，指向四主题齐备的令牌（--e0..e5/--line/--t1..t3/
     --accent/--amber/--data）⇒ 随主题跟随。JS 内联样式依赖 `var(--txt3)` 等旧名。
     受 `_verify/consistency.mjs` ④b 判据守护：「默认层（html{} ∪ :root{}）内、
     未被任何主题块覆盖的令牌」右值必须 var() 或非色彩字面值（字面色值 ⇒ 红）。── */
  --bg:var(--e1); --c1:var(--e0); --c2:var(--e0); --c3:var(--e1); --rail:var(--e1);
  --panel:var(--e1); --chatbg:var(--e2); --card:var(--e3); --sidebg:var(--e1); --statusbg:var(--e1);
  --div:var(--line); --txt:var(--t1); --txt2:var(--t2); --txt3:var(--t3);
  --acc:var(--accent); --chip:var(--e4); --inputbg:var(--e4);
  --warn:var(--amber); --gold:var(--data);
  --av1:#3F6E9E; --av2:#387C58; --av3:#7A5FA0; --av4:#986A34;
  --av5:#2E7F79; --av6:#A85A72; --av7:#5666A8; --av8:#83643F;
  --av9:#3B7C9E; --av10:#61783B; --av11:#9C5A5A; --av12:#5A7286;
  /* ── 追加：主题切换器 12 色卡（原型 848–851 行）——唯一允许承载字面色的构件，此处亦令牌化 ── */
  --sw-A1:#0F1215; --sw-A2:#4E8F72; --sw-A3:#C8A96E;
  --sw-B1:#120F0B; --sw-B2:#C8A96E; --sw-B3:#8FBF9E;
  --sw-C1:#F6F5F1; --sw-C2:#8B6516; --sw-C3:#2E6B57;
  --sw-D1:#F5F7F6; --sw-D2:#2F6B52; --sw-D3:#8A6A2E;
}
