/* ds/tokens.css：第二轮固件平台设计系统 · 设计令牌（design tokens）
   ------------------------------------------------------------------------------------------------
   生效条件：页面 <html data-ds data-theme="dark|light|high-contrast|industrial">。
   也可以在任意容器上写 <div data-ds-scope data-theme="light"> 做局部主题（图库并排对比用）。
   第一轮 A–E 不加 data-ds，不受本文件影响。

   主题取舍（为什么从现网 7 套减到 3+1 套）：
   - 现网 light/dark/ocean/sunset/forest/midnight/champagne 七套连主色都不一样（浅色是青绿、海洋是天蓝），
     用户换主题后品牌色跟着变，截图、文档、客服话术都对不上；七套也意味着每个组件要验 7 遍对比度，
     现网实际只验了默认的 ocean（主按钮白字仍只有约 2.9:1）。
   - 固件平台是工具型产品，主题只解决「环境光」和「可读性」两件事：
       dark（默认，延续现网海军蓝 + 青蓝，产品识别度）、light（白天办公 / 打印 / 投屏）、
       high-contrast（低视力与强光现场，正文 ≥ 7:1，AAA）。
   - 额外只保留一个强调色变体 industrial（工业蓝，浅底 + 深钢蓝 + 橙色焦点环），给工控客户的
     产线电脑和投标演示用；它和 light 共享全部结构令牌，只换色相，维护成本低。
   - sunset/forest/midnight/champagne 属于装饰性换肤，与「找固件 → 核对 → 烧录」无关，删除。
   ------------------------------------------------------------------------------------------------
   命名：--ds-* 为设计系统令牌；文件末尾把第一轮的旧变量（--bg/--surface/--text…）映射到 --ds-*，
   这样 FWC（shared/components.js）渲染出的文件表、烧录面板在新页面里自动换成新配色。 */

/* ============ 1. 结构令牌（与主题无关） ============ */
html[data-ds], [data-ds-scope] {
  /* 字体：系统字体栈，中文优先苹方 / 微软雅黑 / 思源黑体；不加载任何网络字体 */
  --ds-font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", system-ui, sans-serif;
  --ds-mono: ui-monospace, "Cascadia Mono", "SF Mono", Menlo, Consolas, "Liberation Mono", "Noto Sans Mono CJK SC", monospace;
  /* 字号：最小 12px（现网 181 处 10px 全部上调）；8 级 */
  --ds-fs-xs: 12px; --ds-fs-sm: 13px; --ds-fs-md: 14px; --ds-fs-lg: 16px;
  --ds-fs-xl: 18px; --ds-fs-2xl: 22px; --ds-fs-3xl: 28px; --ds-fs-4xl: 36px;
  --ds-lh-tight: 1.25; --ds-lh: 1.55; --ds-lh-loose: 1.75;
  --ds-fw-regular: 400; --ds-fw-medium: 500; --ds-fw-semibold: 600; --ds-fw-bold: 700;
  /* 间距：4px 网格 */
  --ds-sp-0: 0; --ds-sp-1: 4px; --ds-sp-2: 8px; --ds-sp-3: 12px; --ds-sp-4: 16px; --ds-sp-5: 20px;
  --ds-sp-6: 24px; --ds-sp-8: 32px; --ds-sp-10: 40px; --ds-sp-12: 48px; --ds-sp-16: 64px;
  /* 圆角：控件 6 / 卡片 8 / 弹层 12 / 徽章 999 */
  --ds-r-xs: 4px; --ds-r-sm: 6px; --ds-r-md: 8px; --ds-r-lg: 12px; --ds-r-pill: 999px;
  /* 尺寸 */
  --ds-ctl-sm: 28px; --ds-ctl-md: 36px; --ds-ctl-lg: 44px; /* lg = 触屏最小点击区 */
  --ds-container: 1280px; --ds-header-h: 60px; --ds-sidebar-w: 264px;
  /* 动效：只用于状态反馈，不做装饰；prefers-reduced-motion 时全部归零（见 components.css） */
  --ds-dur-fast: 120ms; --ds-dur: 200ms; --ds-dur-slow: 320ms;
  --ds-ease: cubic-bezier(.2, 0, 0, 1); --ds-ease-out: cubic-bezier(0, 0, .2, 1);
  /* 层级 */
  --ds-z-sticky: 100; --ds-z-header: 200; --ds-z-drawer: 900; --ds-z-dialog: 1000; --ds-z-toast: 1100; --ds-z-tooltip: 1200;
  --ds-focus-w: 3px; --ds-focus-off: 2px;
}

/* ============ 2. 深色（默认）：延续现网 #0a141f / #1aa2e6 ============ */
html[data-ds], [data-ds-scope], html[data-ds][data-theme="dark"], [data-ds-scope][data-theme="dark"] {
  color-scheme: dark;
  /* 中性色阶（海军蓝偏色） */
  --ds-n-0: #050b12; --ds-n-50: #0a141f; --ds-n-100: #0f1c29; --ds-n-150: #132232; --ds-n-200: #182a3d;
  --ds-n-300: #213750; --ds-n-400: #2f4a66; --ds-n-500: #4a6582; --ds-n-600: #7a8fa5; --ds-n-700: #a6b4c3; --ds-n-800: #d4dce5; --ds-n-900: #eef2f6;
  /* 表面层级：页面 < 卡片 < 浮起 < 弹层 */
  --ds-bg: var(--ds-n-50); --ds-surface: var(--ds-n-100); --ds-surface-2: var(--ds-n-150); --ds-surface-3: var(--ds-n-200);
  --ds-overlay: #132436; --ds-header-bg: rgba(10, 20, 31, .92); --ds-backdrop: rgba(2, 8, 14, .66);
  --ds-border: #213750; --ds-border-strong: #3a5878; --ds-divider: #1a2d42;
  /* 文字：text-3 在 surface-3 上仍 ≥ 4.5:1 */
  --ds-text: var(--ds-n-900); --ds-text-2: #aebdcc; --ds-text-3: #8fa2b6; --ds-text-disabled: #5d7389;
  /* 品牌主色：现网青蓝；实心按钮改深字（≈ 7:1），不再白字 2.9:1 */
  --ds-primary: #1aa2e6; --ds-primary-hover: #3db3ee; --ds-primary-active: #0f8fd0; --ds-on-primary: #03131f;
  --ds-primary-soft: rgba(26, 162, 230, .14); --ds-primary-border: rgba(26, 162, 230, .42);
  --ds-link: #5cc3f5; --ds-link-hover: #8ad5fa;
  --ds-accent: #2cc6c0; /* 现网 accent 190°，用于「型号固件 / 认证作者」 */
  /* 语义色：fg 为实色字，徽章用「soft 底 + border 边 + fg 字」 */
  --ds-success: #4ad48a; --ds-warn: #f3bd4f; --ds-danger: #ff8080; --ds-info: #6cbcff; --ds-neutral: #b6c3d1;
  --ds-success-soft: rgba(74, 212, 138, .12); --ds-warn-soft: rgba(243, 189, 79, .12); --ds-danger-soft: rgba(255, 110, 110, .13);
  --ds-info-soft: rgba(108, 188, 255, .12); --ds-neutral-soft: rgba(166, 180, 195, .12); --ds-accent-soft: rgba(44, 198, 192, .12);
  --ds-success-border: rgba(74, 212, 138, .36); --ds-warn-border: rgba(243, 189, 79, .38); --ds-danger-border: rgba(255, 110, 110, .42);
  --ds-info-border: rgba(108, 188, 255, .36); --ds-neutral-border: rgba(166, 180, 195, .32); --ds-accent-border: rgba(44, 198, 192, .38);
  --ds-danger-solid: #e5484d; --ds-on-danger: #ffffff;
  /* 质量等级 */
  --ds-gold: #f0c44c; --ds-silver: #c4d0dc; --ds-bronze: #e3a272;
  /* 示例数据标记（必须醒目） */
  --ds-demo-bg: #3d3208; --ds-demo-fg: #f5da7a;
  /* 焦点环：双层，任何底色上可见 */
  --ds-focus: #7fd3ff; --ds-focus-ring: 0 0 0 2px var(--ds-bg), 0 0 0 5px var(--ds-focus);
  /* 终端：与主题无关的固定深底 */
  --ds-term-bg: #050b12; --ds-term-fg: #d6e2ee; --ds-term-dim: #7f93a8; --ds-term-ok: #6fe3a1; --ds-term-warn: #f6c667; --ds-term-err: #ff8f8f; --ds-term-sys: #6cbcff;
  /* 阴影：深色下以边框为主、阴影为辅 */
  --ds-shadow-1: 0 1px 2px rgba(0, 0, 0, .35);
  --ds-shadow-2: 0 4px 12px rgba(0, 0, 0, .35), 0 1px 3px rgba(0, 0, 0, .3);
  --ds-shadow-3: 0 16px 40px rgba(0, 0, 0, .5), 0 2px 8px rgba(0, 0, 0, .35);
  --ds-skeleton: #182a3d; --ds-skeleton-hi: #22384f;
  --ds-zebra: rgba(255, 255, 255, .025); --ds-row-hover: rgba(26, 162, 230, .07); --ds-row-current: rgba(26, 162, 230, .12);
  --ds-logo-bg: #1aa2e6; --ds-logo-fg: #03131f;
}

/* ============ 3. 浅色：同一色相，主色加深到 #0a74b0 以过 AA ============ */
html[data-ds][data-theme="light"], [data-ds-scope][data-theme="light"] {
  color-scheme: light;
  --ds-n-0: #ffffff; --ds-n-50: #f5f7fa; --ds-n-100: #ffffff; --ds-n-150: #f0f3f7; --ds-n-200: #e6ebf1;
  --ds-n-300: #d5dde6; --ds-n-400: #b4c0cd; --ds-n-500: #8592a2; --ds-n-600: #5b6878; --ds-n-700: #3f4b59; --ds-n-800: #26313d; --ds-n-900: #121a24;
  --ds-bg: var(--ds-n-50); --ds-surface: #ffffff; --ds-surface-2: var(--ds-n-150); --ds-surface-3: var(--ds-n-200);
  --ds-overlay: #ffffff; --ds-header-bg: rgba(255, 255, 255, .94); --ds-backdrop: rgba(15, 23, 35, .45);
  --ds-border: #d5dde6; --ds-border-strong: #8592a2; --ds-divider: #e6ebf1;
  --ds-text: #121a24; --ds-text-2: #3f4b59; --ds-text-3: #56616f; --ds-text-disabled: #8d98a5;
  --ds-primary: #0a74b0; --ds-primary-hover: #08618f; --ds-primary-active: #065178; --ds-on-primary: #ffffff;
  --ds-primary-soft: rgba(10, 116, 176, .09); --ds-primary-border: rgba(10, 116, 176, .36);
  --ds-link: #0a68a0; --ds-link-hover: #064e78;
  --ds-accent: #0b7d78;
  --ds-success: #127a3e; --ds-warn: #8a5300; --ds-danger: #b4232a; --ds-info: #1557a8; --ds-neutral: #46525f;
  --ds-success-soft: rgba(18, 122, 62, .09); --ds-warn-soft: rgba(214, 140, 0, .12); --ds-danger-soft: rgba(180, 35, 42, .08);
  --ds-info-soft: rgba(21, 87, 168, .08); --ds-neutral-soft: rgba(70, 82, 95, .08); --ds-accent-soft: rgba(11, 125, 120, .09);
  --ds-success-border: rgba(18, 122, 62, .32); --ds-warn-border: rgba(138, 83, 0, .32); --ds-danger-border: rgba(180, 35, 42, .32);
  --ds-info-border: rgba(21, 87, 168, .3); --ds-neutral-border: rgba(70, 82, 95, .28); --ds-accent-border: rgba(11, 125, 120, .32);
  --ds-danger-solid: #b4232a; --ds-on-danger: #ffffff;
  --ds-gold: #8a6200; --ds-silver: #4f5d6c; --ds-bronze: #8f4a1c;
  --ds-demo-bg: #fff0c2; --ds-demo-fg: #5e4100;
  --ds-focus: #0b57d0; --ds-focus-ring: 0 0 0 2px #ffffff, 0 0 0 5px var(--ds-focus);
  --ds-shadow-1: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .06);
  --ds-shadow-2: 0 4px 12px rgba(16, 24, 40, .08), 0 1px 3px rgba(16, 24, 40, .06);
  --ds-shadow-3: 0 16px 40px rgba(16, 24, 40, .16), 0 2px 8px rgba(16, 24, 40, .08);
  --ds-skeleton: #e6ebf1; --ds-skeleton-hi: #f3f6f9;
  --ds-zebra: rgba(15, 30, 50, .025); --ds-row-hover: rgba(10, 116, 176, .05); --ds-row-current: rgba(10, 116, 176, .09);
  --ds-logo-bg: #0a74b0; --ds-logo-fg: #ffffff;
}

/* ============ 4. 工业蓝（唯一的强调色变体）：浅底 + 深钢蓝页头 + 橙色焦点环，圆角收紧 ============ */
html[data-ds][data-theme="industrial"], [data-ds-scope][data-theme="industrial"] {
  color-scheme: light;
  --ds-n-50: #e9eef4; --ds-n-150: #dde5ee; --ds-n-200: #d0dae6;
  --ds-bg: #e9eef4; --ds-surface: #ffffff; --ds-surface-2: #eef2f7; --ds-surface-3: #dde5ee;
  --ds-overlay: #ffffff; --ds-header-bg: #0b3a63; --ds-backdrop: rgba(6, 25, 45, .5);
  --ds-border: #b9c6d4; --ds-border-strong: #6f8297; --ds-divider: #d4dde7;
  --ds-text: #0c1f33; --ds-text-2: #2f4459; --ds-text-3: #44586d; --ds-text-disabled: #8696a8;
  --ds-primary: #0b4f8a; --ds-primary-hover: #083d6b; --ds-primary-active: #062f53; --ds-on-primary: #ffffff;
  --ds-primary-soft: rgba(11, 79, 138, .09); --ds-primary-border: rgba(11, 79, 138, .36);
  --ds-link: #0a4d87; --ds-link-hover: #06345c; --ds-accent: #0a5e68;
  --ds-success: #0f5a2c; --ds-warn: #7a4600; --ds-danger: #971818; --ds-info: #0a4d87; --ds-neutral: #34485d;
  --ds-success-soft: rgba(15, 90, 44, .09); --ds-warn-soft: rgba(200, 120, 0, .13); --ds-danger-soft: rgba(151, 24, 24, .08);
  --ds-info-soft: rgba(10, 77, 135, .08); --ds-neutral-soft: rgba(52, 72, 93, .08); --ds-accent-soft: rgba(10, 94, 104, .09);
  --ds-success-border: rgba(15, 90, 44, .34); --ds-warn-border: rgba(122, 70, 0, .34); --ds-danger-border: rgba(151, 24, 24, .34);
  --ds-info-border: rgba(10, 77, 135, .32); --ds-neutral-border: rgba(52, 72, 93, .3); --ds-accent-border: rgba(10, 94, 104, .34);
  --ds-danger-solid: #971818; --ds-on-danger: #ffffff;
  --ds-gold: #7d5800; --ds-silver: #45566a; --ds-bronze: #84431a;
  --ds-demo-bg: #ffe9a8; --ds-demo-fg: #573c00;
  --ds-focus: #c25e00; --ds-focus-ring: 0 0 0 2px #ffffff, 0 0 0 5px var(--ds-focus);
  --ds-shadow-1: 0 1px 1px rgba(6, 25, 45, .08); --ds-shadow-2: 0 3px 8px rgba(6, 25, 45, .1); --ds-shadow-3: 0 12px 30px rgba(6, 25, 45, .2);
  --ds-skeleton: #d7e0ea; --ds-skeleton-hi: #e9eff5;
  --ds-zebra: rgba(11, 79, 138, .03); --ds-row-hover: rgba(11, 79, 138, .06); --ds-row-current: rgba(11, 79, 138, .1);
  --ds-logo-bg: #ffffff; --ds-logo-fg: #0b3a63;
  --ds-r-sm: 3px; --ds-r-md: 4px; --ds-r-lg: 6px;
}

/* ============ 5. 高对比：纯黑底，正文 ≥ 7:1（AAA），边框 ≥ 3:1，状态不只靠颜色（徽章带图标/文字） ============ */
html[data-ds][data-theme="high-contrast"], [data-ds-scope][data-theme="high-contrast"] {
  color-scheme: dark;
  --ds-bg: #000000; --ds-surface: #000000; --ds-surface-2: #0d0d0d; --ds-surface-3: #1a1a1a;
  --ds-overlay: #000000; --ds-header-bg: #000000; --ds-backdrop: rgba(0, 0, 0, .8);
  --ds-border: #b3b3b3; --ds-border-strong: #ffffff; --ds-divider: #8c8c8c;
  --ds-text: #ffffff; --ds-text-2: #f0f0f0; --ds-text-3: #d6d6d6; --ds-text-disabled: #a6a6a6;
  --ds-primary: #7fd6ff; --ds-primary-hover: #b3e7ff; --ds-primary-active: #ffffff; --ds-on-primary: #000000;
  --ds-primary-soft: #001a26; --ds-primary-border: #7fd6ff;
  --ds-link: #9fe0ff; --ds-link-hover: #ffffff; --ds-accent: #7fffea;
  --ds-success: #7dffaf; --ds-warn: #ffd866; --ds-danger: #ffa3a3; --ds-info: #a8d8ff; --ds-neutral: #e6e6e6;
  --ds-success-soft: #000000; --ds-warn-soft: #000000; --ds-danger-soft: #000000; --ds-info-soft: #000000; --ds-neutral-soft: #000000; --ds-accent-soft: #000000;
  --ds-success-border: #7dffaf; --ds-warn-border: #ffd866; --ds-danger-border: #ffa3a3; --ds-info-border: #a8d8ff; --ds-neutral-border: #e6e6e6; --ds-accent-border: #7fffea;
  --ds-danger-solid: #ffa3a3; --ds-on-danger: #000000;
  --ds-gold: #ffd866; --ds-silver: #ffffff; --ds-bronze: #ffbf8a;
  --ds-demo-bg: #ffd866; --ds-demo-fg: #000000;
  --ds-focus: #ffff00; --ds-focus-ring: 0 0 0 2px #000000, 0 0 0 5px #ffff00;
  --ds-term-bg: #000000; --ds-term-fg: #ffffff; --ds-term-dim: #d0d0d0; --ds-term-ok: #7dffaf; --ds-term-warn: #ffd866; --ds-term-err: #ffa3a3; --ds-term-sys: #a8d8ff;
  --ds-shadow-1: none; --ds-shadow-2: none; --ds-shadow-3: none;
  --ds-skeleton: #262626; --ds-skeleton-hi: #3a3a3a;
  --ds-zebra: #0d0d0d; --ds-row-hover: #1a1a1a; --ds-row-current: #00283b;
  --ds-logo-bg: #ffffff; --ds-logo-fg: #000000;
}

/* ============ 5b. 2026-10-29 新增三套（用户定，twd-9e 转）：护眼暖色 / 石墨灰 / 芯片绿 ============
   和上面四套共用全部结构令牌；正文 / 次要文字 / 链接 / 语义色在 bg、surface、surface-2、surface-3 上都 ≥ 4.5:1，
   主按钮文字在主色上 ≥ 4.5:1（逐对算过：暖色正文最低 5.8、石墨 4.9、芯片绿 5.8）。
   「跟随系统」不是一套配色：data-theme 写实际生效的 dark / light（见 chrome.js DS.theme），这里不用单独写 */

/* 护眼暖色：米黄纸底 + 深褐字，长时间阅读；浅底，走 light 的覆盖规则（k.css / k-hw.css 里 [data-theme="light"] 那几条同样列了 warm） */
html[data-ds][data-theme="warm"], [data-ds-scope][data-theme="warm"] {
  color-scheme: light;
  --ds-n-0: #fffdf7; --ds-n-50: #f6efdf; --ds-n-100: #fdf8ec; --ds-n-150: #f0e6d0; --ds-n-200: #e7dbc0;
  --ds-n-300: #d8c8a6; --ds-n-400: #bba783; --ds-n-500: #8f7a58; --ds-n-600: #6b583c; --ds-n-700: #4e3f2b; --ds-n-800: #3a2e1f; --ds-n-900: #2e2416;
  --ds-bg: #f6efdf; --ds-surface: #fdf8ec; --ds-surface-2: #f0e6d0; --ds-surface-3: #e7dbc0;
  --ds-overlay: #fdf8ec; --ds-header-bg: rgba(246, 239, 223, .95); --ds-backdrop: rgba(46, 36, 22, .45);
  --ds-border: #d8c8a6; --ds-border-strong: #8f7a58; --ds-divider: #e7dbc0;
  --ds-text: #2e2416; --ds-text-2: #4e3f2b; --ds-text-3: #5e4e38; --ds-text-disabled: #9a8a6e;
  --ds-primary: #8a4b12; --ds-primary-hover: #74400f; --ds-primary-active: #5f340c; --ds-on-primary: #ffffff;
  --ds-primary-soft: rgba(138, 75, 18, .09); --ds-primary-border: rgba(138, 75, 18, .36);
  --ds-link: #7a400c; --ds-link-hover: #5a2f08;
  --ds-accent: #5c5c12;
  --ds-success: #2f6524; --ds-warn: #7a4a00; --ds-danger: #a12a1a; --ds-info: #1f5577; --ds-neutral: #4e3f2b;
  --ds-success-soft: rgba(47, 101, 36, .1); --ds-warn-soft: rgba(196, 128, 20, .14); --ds-danger-soft: rgba(161, 42, 26, .08);
  --ds-info-soft: rgba(31, 85, 119, .08); --ds-neutral-soft: rgba(78, 63, 43, .08); --ds-accent-soft: rgba(92, 92, 18, .1);
  --ds-success-border: rgba(47, 101, 36, .34); --ds-warn-border: rgba(122, 74, 0, .34); --ds-danger-border: rgba(161, 42, 26, .32);
  --ds-info-border: rgba(31, 85, 119, .3); --ds-neutral-border: rgba(78, 63, 43, .28); --ds-accent-border: rgba(92, 92, 18, .34);
  --ds-danger-solid: #a12a1a; --ds-on-danger: #ffffff;
  --ds-gold: #7d5800; --ds-silver: #5a5246; --ds-bronze: #84431a;
  --ds-demo-bg: #ffe6a3; --ds-demo-fg: #573c00;
  --ds-focus: #b35a00; --ds-focus-ring: 0 0 0 2px #fdf8ec, 0 0 0 5px var(--ds-focus);
  --ds-shadow-1: 0 1px 2px rgba(60, 40, 10, .07), 0 1px 3px rgba(60, 40, 10, .06);
  --ds-shadow-2: 0 4px 12px rgba(60, 40, 10, .09), 0 1px 3px rgba(60, 40, 10, .06);
  --ds-shadow-3: 0 16px 40px rgba(60, 40, 10, .16), 0 2px 8px rgba(60, 40, 10, .08);
  --ds-skeleton: #ece1c8; --ds-skeleton-hi: #f6eedc;
  --ds-zebra: rgba(60, 40, 10, .03); --ds-row-hover: rgba(138, 75, 18, .05); --ds-row-current: rgba(138, 75, 18, .1);
  --ds-logo-bg: #8a4b12; --ds-logo-fg: #ffffff;
}

/* 石墨灰：中性灰深色，不带蓝调，比默认深色柔和；主色用浅灰（按钮深字） */
html[data-ds][data-theme="graphite"], [data-ds-scope][data-theme="graphite"] {
  color-scheme: dark;
  --ds-n-0: #141414; --ds-n-50: #1c1d1f; --ds-n-100: #242528; --ds-n-150: #2b2c30; --ds-n-200: #333438;
  --ds-n-300: #3e3f44; --ds-n-400: #55575d; --ds-n-500: #75777e; --ds-n-600: #9a9ca2; --ds-n-700: #b9babe; --ds-n-800: #d9d9db; --ds-n-900: #ececec;
  --ds-bg: #1c1d1f; --ds-surface: #242528; --ds-surface-2: #2b2c30; --ds-surface-3: #333438;
  --ds-overlay: #2b2c30; --ds-header-bg: rgba(28, 29, 31, .94); --ds-backdrop: rgba(0, 0, 0, .6);
  --ds-border: #3e3f44; --ds-border-strong: #6a6c73; --ds-divider: #2f3034;
  --ds-text: #ececec; --ds-text-2: #c4c4c4; --ds-text-3: #a3a3a3; --ds-text-disabled: #6e7076;
  --ds-primary: #c9c9c9; --ds-primary-hover: #e0e0e0; --ds-primary-active: #b0b0b0; --ds-on-primary: #141414;
  --ds-primary-soft: rgba(201, 201, 201, .1); --ds-primary-border: rgba(201, 201, 201, .38);
  --ds-link: #d6d6d6; --ds-link-hover: #ffffff;
  --ds-accent: #a8d5cf;
  --ds-success: #7fcf96; --ds-warn: #e3bd6a; --ds-danger: #f08f8f; --ds-info: #9fc1e6; --ds-neutral: #c4c4c4;
  --ds-success-soft: rgba(127, 207, 150, .1); --ds-warn-soft: rgba(227, 189, 106, .1); --ds-danger-soft: rgba(240, 143, 143, .1);
  --ds-info-soft: rgba(159, 193, 230, .1); --ds-neutral-soft: rgba(196, 196, 196, .08); --ds-accent-soft: rgba(168, 213, 207, .1);
  --ds-success-border: rgba(127, 207, 150, .34); --ds-warn-border: rgba(227, 189, 106, .36); --ds-danger-border: rgba(240, 143, 143, .38);
  --ds-info-border: rgba(159, 193, 230, .34); --ds-neutral-border: rgba(196, 196, 196, .28); --ds-accent-border: rgba(168, 213, 207, .34);
  --ds-danger-solid: #d9534f; --ds-on-danger: #ffffff;
  --ds-gold: #e6c56a; --ds-silver: #c8c8c8; --ds-bronze: #d9a07a;
  --ds-demo-bg: #3a3420; --ds-demo-fg: #eedc9a;
  --ds-focus: #f0f0f0; --ds-focus-ring: 0 0 0 2px var(--ds-bg), 0 0 0 5px var(--ds-focus);
  --ds-term-bg: #121314; --ds-term-fg: #dedede; --ds-term-dim: #8e9096; --ds-term-ok: #7fcf96; --ds-term-warn: #e3bd6a; --ds-term-err: #f08f8f; --ds-term-sys: #9fc1e6;
  --ds-shadow-1: 0 1px 2px rgba(0, 0, 0, .35);
  --ds-shadow-2: 0 4px 12px rgba(0, 0, 0, .35), 0 1px 3px rgba(0, 0, 0, .3);
  --ds-shadow-3: 0 16px 40px rgba(0, 0, 0, .5), 0 2px 8px rgba(0, 0, 0, .35);
  --ds-skeleton: #2b2c30; --ds-skeleton-hi: #36373c;
  --ds-zebra: rgba(255, 255, 255, .025); --ds-row-hover: rgba(255, 255, 255, .04); --ds-row-current: rgba(255, 255, 255, .07);
  --ds-logo-bg: #d9d9d9; --ds-logo-fg: #141414;
}

/* 芯片绿：PCB 阻焊墨绿底 + 沉金色强调；按钮金底深字 */
html[data-ds][data-theme="pcb"], [data-ds-scope][data-theme="pcb"] {
  color-scheme: dark;
  --ds-n-0: #061510; --ds-n-50: #0b2016; --ds-n-100: #10291c; --ds-n-150: #143222; --ds-n-200: #1a3b29;
  --ds-n-300: #234a34; --ds-n-400: #31604a; --ds-n-500: #4f7d66; --ds-n-600: #7f9f8e; --ds-n-700: #a1b99c; --ds-n-800: #c3d6bf; --ds-n-900: #eaf2e6;
  --ds-bg: #0b2016; --ds-surface: #10291c; --ds-surface-2: #143222; --ds-surface-3: #1a3b29;
  --ds-overlay: #143222; --ds-header-bg: rgba(8, 26, 18, .94); --ds-backdrop: rgba(2, 10, 6, .66);
  --ds-border: #234a34; --ds-border-strong: #3f6e55; --ds-divider: #183627;
  --ds-text: #eaf2e6; --ds-text-2: #c3d6bf; --ds-text-3: #a1b99c; --ds-text-disabled: #5f7f6b;
  --ds-primary: #e2b23c; --ds-primary-hover: #efc35a; --ds-primary-active: #c99a26; --ds-on-primary: #1a1405;
  --ds-primary-soft: rgba(226, 178, 60, .12); --ds-primary-border: rgba(226, 178, 60, .42);
  --ds-link: #f0c860; --ds-link-hover: #f8dc93;
  --ds-accent: #d7c47a;
  --ds-success: #7fdc95; --ds-warn: #f2c45a; --ds-danger: #ff9a8a; --ds-info: #8fc7ff; --ds-neutral: #c3d6bf;
  --ds-success-soft: rgba(127, 220, 149, .12); --ds-warn-soft: rgba(242, 196, 90, .12); --ds-danger-soft: rgba(255, 154, 138, .12);
  --ds-info-soft: rgba(143, 199, 255, .12); --ds-neutral-soft: rgba(195, 214, 191, .1); --ds-accent-soft: rgba(215, 196, 122, .12);
  --ds-success-border: rgba(127, 220, 149, .36); --ds-warn-border: rgba(242, 196, 90, .38); --ds-danger-border: rgba(255, 154, 138, .4);
  --ds-info-border: rgba(143, 199, 255, .36); --ds-neutral-border: rgba(195, 214, 191, .3); --ds-accent-border: rgba(215, 196, 122, .38);
  --ds-danger-solid: #d9534f; --ds-on-danger: #ffffff;
  --ds-gold: #e2b23c; --ds-silver: #c8d4c8; --ds-bronze: #e0a374;
  --ds-demo-bg: #3d3208; --ds-demo-fg: #f5da7a;
  --ds-focus: #f0c860; --ds-focus-ring: 0 0 0 2px var(--ds-bg), 0 0 0 5px var(--ds-focus);
  --ds-term-bg: #04120c; --ds-term-fg: #d9e8d3; --ds-term-dim: #82a08e; --ds-term-ok: #7fdc95; --ds-term-warn: #f2c45a; --ds-term-err: #ff9a8a; --ds-term-sys: #8fc7ff;
  --ds-shadow-1: 0 1px 2px rgba(0, 0, 0, .35);
  --ds-shadow-2: 0 4px 12px rgba(0, 0, 0, .35), 0 1px 3px rgba(0, 0, 0, .3);
  --ds-shadow-3: 0 16px 40px rgba(0, 0, 0, .5), 0 2px 8px rgba(0, 0, 0, .35);
  --ds-skeleton: #1a3b29; --ds-skeleton-hi: #234a34;
  --ds-zebra: rgba(255, 255, 255, .025); --ds-row-hover: rgba(226, 178, 60, .06); --ds-row-current: rgba(226, 178, 60, .11);
  --ds-logo-bg: #e2b23c; --ds-logo-fg: #1a1405;
}

/* 页头前景：默认跟随正文；工业蓝的页头是深色条，单独取色 */
html[data-ds], [data-ds-scope] {
  --ds-header-fg: var(--ds-text); --ds-header-fg-2: var(--ds-text-2); --ds-header-border: var(--ds-border); --ds-header-ctl: var(--ds-surface-2); --ds-header-focus: var(--ds-focus);
}
html[data-ds][data-theme="industrial"], [data-ds-scope][data-theme="industrial"] {
  --ds-header-fg: #ffffff; --ds-header-fg-2: #d3e1ef; --ds-header-border: #072a49; --ds-header-ctl: rgba(255, 255, 255, .12); --ds-header-focus: #ffb347;
}

/* ============ 6. 兼容层：第一轮旧变量 → 新令牌（FWC 渲染的文件表、烧录面板在新页面自动换色） ============ */
html[data-ds], [data-ds-scope] {
  --bg: var(--ds-bg); --surface: var(--ds-surface); --surface-2: var(--ds-surface-2); --border: var(--ds-border); --border-strong: var(--ds-border-strong);
  --text: var(--ds-text); --text-2: var(--ds-text-2); --text-3: var(--ds-text-3);
  --primary: var(--ds-primary); --primary-hover: var(--ds-primary-hover); --on-primary: var(--ds-on-primary); --link: var(--ds-link); --focus: var(--ds-focus);
  --ok-bg: var(--ds-success-soft); --ok-fg: var(--ds-success); --warn-bg: var(--ds-warn-soft); --warn-fg: var(--ds-warn);
  --danger-bg: var(--ds-danger-soft); --danger-fg: var(--ds-danger); --accent-bg: var(--ds-accent-soft); --accent-fg: var(--ds-accent);
  --neutral-bg: var(--ds-neutral-soft); --neutral-fg: var(--ds-neutral); --demo-bg: var(--ds-demo-bg); --demo-fg: var(--ds-demo-fg);
  --term-bg: var(--ds-term-bg); --term-fg: var(--ds-term-fg); --term-dim: var(--ds-term-dim);
  --shadow: var(--ds-shadow-1); --radius: var(--ds-r-md); --radius-sm: var(--ds-r-sm);
  --font: var(--ds-font); --mono: var(--ds-mono);
}
