/* ════════════════════════════════════════════════════════════════
   dove-web.css — dove 默认 Web 主题底座 · 整页引入分发件
   = tokens.css 全槽令牌 + 12 组件 + 页面级助手。
   用法:<link rel="stylesheet" href="dove-web.css"> 一步到位;
   按需拷贝则去 components.md 挑件(代码与本文件逐段对应)。
   数值唯一来源是令牌槽;改色先过 tools/contrast-check.mjs。
   ════════════════════════════════════════════════════════════════ */

/* ── 浅色主题 dove(默认) ── */
:root, [data-theme="dove"] {
  color-scheme: light;
  --dw-page:    #fafbfd;
  --dw-surface: #ffffff;
  --dw-fill:    #edf0f7;
  --dw-border:  #d9dfec;
  --dw-text:    #1b2437;
  --dw-muted:   #62708f;
  --dw-faint:   #65718f;
  --dw-gold:            #d9a441;
  --dw-gold-content:    #1b2437;
  --dw-gold-text:       #8c6420;
  --dw-gold-line:       #b78530;
  --dw-teal:            #2f6e6b;
  --dw-teal-content:    #ffffff;
  --dw-info:            #0369a1;  --dw-info-content:    #ffffff;
  --dw-success:         #15803d;  --dw-success-content: #ffffff;
  --dw-warning:         #a16207;  --dw-warning-content: #ffffff;
  --dw-error:           #b91c1c;  --dw-error-content:   #ffffff;
  --dw-focus:      #b78530;
  --dw-select-bg:  #d9a441;
  --dw-select-fg:  #1b2437;
  --dw-caret:      #b78530;
  --dw-shadow-1: 0 1px 2px rgb(27 36 55 / .05), 0 4px 16px rgb(27 36 55 / .06);
  --dw-shadow-2: 0 2px 6px rgb(27 36 55 / .06), 0 12px 32px rgb(27 36 55 / .10);
  --dw-shadow-3: 0 2px 8px rgb(9 13 23 / .12), 0 24px 64px rgb(9 13 23 / .20);
  --dw-scrim: linear-gradient(to top, rgb(9 13 23 / .78), rgb(9 13 23 / .38) 55%, rgb(9 13 23 / .12));
  --dw-on-media:      #ffffff;
  --dw-on-media-soft: #e8ecf5;
  --dw-backdrop: rgb(16 24 43 / .45);
}

/* ── 现代 · 深色(双轴: data-theme="dove" + data-mode="dark";旧单轴 dove-night 并入本档,JS 迁移存储值) ── */
[data-theme="dove"][data-mode="dark"] {
  color-scheme: dark;
  --dw-page:    #10182b;
  --dw-surface: #1b2437;
  --dw-fill:    #243050;
  --dw-border:  #243050;
  --dw-text:    #edf0f7;
  --dw-muted:   #95a2bc;
  --dw-faint:   #8b99b6;
  --dw-gold:            #d9a441;
  --dw-gold-content:    #1b2437;
  --dw-gold-text:       #e8bc63;
  --dw-gold-line:       #e8bc63;
  --dw-teal:            #7fc6c2;
  --dw-teal-content:    #10182b;
  --dw-info:            #7dd3fc;  --dw-info-content:    #082f41;
  --dw-success:         #4ade80;  --dw-success-content: #052e12;
  --dw-warning:         #fbbf24;  --dw-warning-content: #331a02;
  --dw-error:           #f87171;  --dw-error-content:   #300a0a;
  --dw-focus:      #e8bc63;
  --dw-select-bg:  #e8bc63;
  --dw-select-fg:  #10182b;
  --dw-caret:      #e8bc63;
  --dw-shadow-1: 0 1px 2px rgb(0 0 0 / .40), 0 4px 16px rgb(0 0 0 / .35);
  --dw-shadow-2: 0 2px 6px rgb(0 0 0 / .45), 0 12px 32px rgb(0 0 0 / .40);
  --dw-shadow-3: 0 2px 8px rgb(0 0 0 / .50), 0 24px 64px rgb(0 0 0 / .45);
  --dw-backdrop: rgb(5 8 15 / .6);
}

/* 深色一律压暗图片类资产(契约:不备双份图);旧单轴 [data-theme="dove-night"] 选择器已随双轴迁移作废 */
[data-mode="dark"] .dw-photo { filter: brightness(.6) saturate(.92); }

/* ════════════════════════════════════════════════════════════════
   主题 3:dove-r95(复古 Win95)——同一套页面结构直接换皮。
   颜色与立体边框配方来自 React95 v9.8.3 win95 主题产物(MIT,
   实体机实测值);图标只许重绘/自绘像素 SVG,严禁微软原始资产。
   规则:立体感全靠 --r95-out/in/input 三配方(box-shadow 叠像素层),
   组件 border 一律 none;零圆角零渐变零动画;亮永远打左上,暗永远右下。
   ════════════════════════════════════════════════════════════════ */
[data-theme="dove-r95"] {
  color-scheme: light;

  /* 面与字(中性灰世界) */
  --dw-page:    #c3c7cb;  /* 界面主灰 */
  --dw-surface: #c3c7cb;  /* 面板同灰,分层全靠立体边框 */
  --dw-fill:    #d2d2d2;  /* hover/选中浅灰 */
  --dw-border:  #868a8e;  /* 立体边框暗层/发丝线 */
  --dw-text:    #000000;
  --dw-muted:   #3f4449;  /* 6.0:1 */
  --dw-faint:   #4a4f55;  /* 5.3:1 */

  /* 品牌映射:主行动 = 标题栏蓝;青辉保留真色给图表/点缀,次按钮不走 teal 令牌(见覆写直接定灰) */
  --dw-gold:            #000e7a;
  --dw-gold-content:    #ffffff;
  --dw-gold-text:       #000e7a;  /* 锚点蓝(9.5:1) */
  --dw-gold-line:       #000e7a;
  --dw-teal:            #008080;  /* 桌面青:图形/填充级(非文字级) */
  --dw-teal-content:    #000000;  /* 仅备查;r95 次按钮实际吃覆写的灰面黑字 */

  /* 语义四色(win95 原色系加深到双端达标:灰面文字与白底字两路 ≥4.5) */
  --dw-info:            #0000aa;  --dw-info-content:    #ffffff;
  --dw-success:         #005000;  --dw-success-content: #ffffff;
  --dw-warning:         #5a4500;  --dw-warning-content: #ffffff;
  --dw-error:           #a00000;  --dw-error-content:   #ffffff;

  --dw-focus:      #000000;
  --dw-select-bg:  #000e7a;
  --dw-select-fg:  #ffffff;
  --dw-caret:      #000000;

  /* 立体边框三配方(灵魂;光源:亮左上、暗右下) */
  --r95-out: inset 0.5px 0.5px 0 0.5px #ffffff, inset 0 0 0 1px #868a8e,
             1px 0 0 0 #000000, 0 1px 0 0 #000000, 1px 1px 0 0 #000000;
  --r95-in: inset 1px 1px 0 0 #868a8e, 0.5px 0.5px 0 0.5px #ffffff;
  --r95-input: inset -1px -1px 0 0 #c3c7cb, inset 1px 1px 0 0 #000000,
               0.5px 0.5px 0 0.5px #ffffff;
  --dw-shadow-1: var(--r95-out);
  --dw-shadow-2: var(--r95-out);
  --dw-shadow-3: var(--r95-out);

  /* 像素纪律:零圆角、高密度小字 */
  --dw-radius-sm: 0; --dw-radius-md: 0; --dw-radius-lg: 0;
  --dw-radius-xl: 0; --dw-radius-pill: 0;
  --dw-font-body: Tahoma, "MS Sans Serif", "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  --dw-font-display: var(--dw-font-body);
  --dw-font-data: "Courier New", ui-monospace, monospace;
  --dw-text-body: 12px;
  --dw-text-small: 11px;
  --dw-text-caption: 10px;
  --dw-section-gap: 40px;
  --dw-backdrop: rgb(0 0 0 / .35);
}

/* r95 组件覆写:立体感交三配方,border 全收;零位移铁律仍生效(按下不换 padding) */
[data-theme="dove-r95"] body { font-size: 12px; }
[data-theme="dove-r95"] .dw-card, [data-theme="dove-r95"] .dw-panel,
[data-theme="dove-r95"] .dw-modal, [data-theme="dove-r95"] .dw-nav-menu,
[data-theme="dove-r95"] .dw-table-wrap, [data-theme="dove-r95"] .dw-details,
[data-theme="dove-r95"] .dw-steps > li {
  border: none;
  box-shadow: var(--r95-out);
}
[data-theme="dove-r95"] .dw-nav {
  background: var(--dw-page);
  backdrop-filter: none; -webkit-backdrop-filter: none;
  border-bottom: none;
  box-shadow: var(--r95-in);
}
[data-theme="dove-r95"] .dw-btn {
  border: none; background: var(--dw-surface); color: var(--dw-text);
  box-shadow: var(--r95-out); font-weight: 700;
}
[data-theme="dove-r95"] .dw-btn:hover { box-shadow: var(--r95-out); }
[data-theme="dove-r95"] .dw-btn:active:not(:disabled) { box-shadow: var(--r95-in); }
[data-theme="dove-r95"] .dw-btn--primary { background: var(--dw-gold); color: var(--dw-gold-content); }
[data-theme="dove-r95"] .dw-btn--secondary { background: var(--dw-surface); color: var(--dw-text); }
[data-theme="dove-r95"] .dw-btn--danger { background: var(--dw-error); color: var(--dw-error-content); }
[data-theme="dove-r95"] .dw-input {
  border: none; background: #ffffff; box-shadow: var(--r95-input);
}
[data-theme="dove-r95"] .dw-input:hover { box-shadow: var(--r95-input); }
[data-theme="dove-r95"] .dw-input:focus { box-shadow: var(--r95-input); }
[data-theme="dove-r95"] .dw-tab[aria-selected="true"] { box-shadow: var(--r95-out); }
[data-theme="dove-r95"] .dw-switch span { border: 1px solid var(--dw-border); }
[data-theme="dove-r95"] :focus-visible {
  outline: 1px dotted #000000; outline-offset: -4px; border-radius: 0;
}

/* ── r95 · 深色(暗夜机房灰:面深字浅,立体边框亮棱调灰/暗棱沉黑,光源不变) ── */
[data-theme="dove-r95"][data-mode="dark"] {
  color-scheme: dark;
  --dw-page:    #242628;
  --dw-surface: #3a3d40;  /* 暗夜界面主灰 */
  --dw-fill:    #4a4e52;
  --dw-border:  #15171a;
  --dw-text:    #f2f2f2;
  --dw-muted:   #c9cdd2;
  --dw-faint:   #b4b9bf;
  --dw-gold:            #000e7a;  /* 标题栏蓝不动(白字对比 8.6:1) */
  --dw-gold-content:    #ffffff;
  --dw-gold-text:       #8fb0ff;  /* 深面锚点蓝调亮 */
  --dw-gold-line:       #5a7ae0;
  --dw-teal:            #008080;
  --dw-teal-content:    #ffffff;
  --dw-info:            #6aa9ff;  --dw-info-content:    #06203f;
  --dw-success:         #4cc24c;  --dw-success-content: #062806;
  --dw-warning:         #e0aa3e;  --dw-warning-content: #2e2302;
  --dw-error:           #ff8a7a;  --dw-error-content:   #380a06;
  --dw-focus:      #ffffff;
  --dw-select-bg:  #1a46c8;  /* 深页上原藏青太闷,选区蓝提亮一档 */
  --dw-select-fg:  #ffffff;
  --dw-caret:      #ffffff;
  /* 立体边框三配方(深面版:亮棱 = 浅灰,暗棱 = 沉黑) */
  --r95-out: inset 0.5px 0.5px 0 0.5px #9aa0a6, inset 0 0 0 1px #55595e,
             1px 0 0 0 #000000, 0 1px 0 0 #000000, 1px 1px 0 0 #000000;
  --r95-in: inset 1px 1px 0 0 #15171a, 0.5px 0.5px 0 0.5px #9aa0a6;
  --r95-input: inset -1px -1px 0 0 #3a3d40, inset 1px 1px 0 0 #000000,
               0.5px 0.5px 0 0.5px #9aa0a6;
  --dw-backdrop: rgb(0 0 0 / .55);
}
[data-theme="dove-r95"][data-mode="dark"] .dw-input { background: #1e2023; color: #f2f2f2; }
[data-theme="dove-r95"][data-mode="dark"] :focus-visible { outline-color: #ffffff; }

/* ════════════════════════════════════════════════════════════════
   主题 4:dove-rxp(复古 Windows XP Luna)——同一套页面结构直接换皮。
   配方蒸馏自 XP.css v0.2.6(MIT,Copyright 2020 Adam Hammad, Jordan Scales;
   npm xp.css@0.2.6 钉版,只取数值不搬资产;图标只许自绘,严禁微软原始资产)。
   与 r95 相反:XP 是渐变美学——标题栏渐变/按钮橙晕 hover/圆角 3-8px;
   零位移铁律仍生效(按下只换渐变,不换 padding)。
   ════════════════════════════════════════════════════════════════ */
[data-theme="dove-rxp"] {
  color-scheme: light;

  /* 面与字(标志性花生酱米黄) */
  --dw-page:    #ece9d8;
  --dw-surface: #ece9d8;
  --dw-fill:    #f4f2e6;  /* hover 浅米 */
  --dw-border:  #d0d0bf;  /* 分组框发丝线 */
  --dw-text:    #000000;
  --dw-muted:   #4a4636;  /* 7.8:1 */
  --dw-faint:   #5d5948;  /* 5.7:1 */

  /* 品牌映射:主行动 = Luna 标题栏蓝;进度绿留给图表/点缀(图形级) */
  --dw-gold:            #0050ee;
  --dw-gold-content:    #ffffff;
  --dw-gold-text:       #003dd7;  /* 标题栏渐变暗端,文字级(6.6:1) */
  --dw-gold-line:       #003c74;  /* 按钮描边蓝 */
  --dw-teal:            #1f8a24;  /* 进度绿加深:图形/填充级(非文字级) */
  --dw-teal-content:    #ffffff;  /* 仅备查;次按钮实际吃覆写的标准面黑字 */

  /* 语义四色(XP 原色系加深到双端达标) */
  --dw-info:            #0046d5;  --dw-info-content:    #ffffff;
  --dw-success:         #1a6b1a;  --dw-success-content: #ffffff;
  --dw-warning:         #7a5200;  --dw-warning-content: #ffffff;
  --dw-error:           #b00000;  --dw-error-content:   #ffffff;

  --dw-focus:      #000000;
  --dw-select-bg:  #2267cb;
  --dw-select-fg:  #ffffff;
  --dw-caret:      #000000;

  /* 结构配方(灵魂):窗口六层框 / 按钮橙晕 / 按钮蓝晕 / 标准面 / 标题栏渐变 */
  --rxp-frame: inset -1px -1px #00138c, inset 1px 1px #0831d9,
               inset -2px -2px #001ea0, inset 2px 2px #166aee,
               inset -3px -3px #003bda, inset 3px 3px #0855dd;
  --rxp-btn-hover: inset -1px 1px #fff0cf, inset 1px 2px #fdd889,
                   inset -2px 2px #fbc761, inset 2px -2px #e5a01a;
  --rxp-btn-focus: inset -1px 1px #cee7ff, inset 1px 2px #98b8ea,
                   inset -2px 2px #bcd4f6, inset 1px -1px #89ade4,
                   inset 2px -2px #89ade4;
  --rxp-face:         linear-gradient(180deg, #ffffff 0%, #ecebe5 86%, #d8d0c4 100%);
  --rxp-face-pressed: linear-gradient(180deg, #cdcac3 0%, #e3e3db 8%, #e5e5de 94%, #f2f2f1 100%);
  --rxp-title: linear-gradient(180deg, #0997ff 0%, #0053ee 8%, #0050ee 40%,
               #0066ff 88%, #0066ff 93%, #005bff 95%, #003dd7 96%, #003dd7 100%);
  --dw-shadow-1: 0 1px 2px rgb(0 0 0 / .18);
  --dw-shadow-2: 1px 2px 3px rgb(0 0 0 / .30);
  --dw-shadow-3: var(--rxp-frame);

  /* XP 圆角不是零:按钮 3 / 分组 4 / 窗顶 8;高密度小字 */
  --dw-radius-sm: 3px; --dw-radius-md: 4px; --dw-radius-lg: 8px;
  --dw-radius-xl: 8px; --dw-radius-pill: 3px;
  --dw-font-body: Tahoma, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  --dw-font-display: var(--dw-font-body);
  --dw-font-data: "Courier New", ui-monospace, monospace;
  --dw-text-body: 12px;
  --dw-text-small: 11px;
  --dw-text-caption: 10px;
  --dw-section-gap: 40px;
  --dw-backdrop: rgb(0 0 60 / .35);
}

/* rxp 组件覆写:渐变美学交三配方;按下不换 padding 的零位移铁律仍生效 */
[data-theme="dove-rxp"] body { font-size: 12px; }
/* 顶栏 = XP 标题栏:蓝色渐变 + 白字投影 */
[data-theme="dove-rxp"] .dw-nav {
  background: var(--rxp-title); backdrop-filter: none; -webkit-backdrop-filter: none;
  border-bottom: 1px solid #0831d9;
}
[data-theme="dove-rxp"] .dw-nav-brand {
  font-family: "Trebuchet MS", Tahoma, "PingFang SC", "Microsoft YaHei", sans-serif;
  color: #ffffff; text-shadow: 1px 1px #0f1089;
}
[data-theme="dove-rxp"] .dw-nav-links a,
[data-theme="dove-rxp"] .dw-nav-links a[aria-current="page"] {
  color: #ffffff; text-shadow: 1px 1px #0f1089;
}
[data-theme="dove-rxp"] .dw-nav-links a:hover { background: rgb(255 255 255 / .18); }
[data-theme="dove-rxp"] .dw-nav-burger summary span { background: #ffffff; }
[data-theme="dove-rxp"] .dw-nav .dw-btn--ghost {
  background: rgb(255 255 255 / .12); color: #ffffff;
  border-color: rgb(255 255 255 / .55); box-shadow: none; text-shadow: 1px 1px #0f1089;
}
[data-theme="dove-rxp"] .dw-nav .dw-btn--ghost:hover { background: rgb(255 255 255 / .22); box-shadow: none; }
[data-theme="dove-rxp"] .dw-nav .dw-btn--primary {
  background: var(--rxp-face); color: #000000; border-color: #003c74; text-shadow: none;
}
/* 按钮 = XP 标准面:白→米渐变 + 蓝描边;hover 橙晕,按下换 pressed 渐变 */
[data-theme="dove-rxp"] .dw-btn {
  border: 1px solid #003c74; border-radius: 3px;
  background: var(--rxp-face); color: #000000; font-weight: 400; box-shadow: none;
}
[data-theme="dove-rxp"] .dw-btn:hover { background: var(--rxp-face); box-shadow: var(--rxp-btn-hover); }
[data-theme="dove-rxp"] .dw-btn:active:not(:disabled) { background: var(--rxp-face-pressed); box-shadow: none; }
[data-theme="dove-rxp"] .dw-btn--primary {
  background: linear-gradient(180deg, #3d8bff 0%, #0050ee 55%, #003dd7 100%); color: #ffffff;
}
[data-theme="dove-rxp"] .dw-btn--primary:hover {
  background: linear-gradient(180deg, #3d8bff 0%, #0050ee 55%, #003dd7 100%);
  color: #ffffff; box-shadow: var(--rxp-btn-hover);
}
[data-theme="dove-rxp"] .dw-btn--secondary { background: var(--rxp-face); color: #000000; }
[data-theme="dove-rxp"] .dw-btn--secondary:hover { background: var(--rxp-face); }
[data-theme="dove-rxp"] .dw-btn--danger {
  background: linear-gradient(180deg, #c9302c 0%, #8e0000 100%); color: #ffffff; border-color: #6e0000;
}
[data-theme="dove-rxp"] .dw-btn--danger:hover { background: linear-gradient(180deg, #c9302c 0%, #8e0000 100%); }
[data-theme="dove-rxp"] .dw-btn--ghost { background: transparent; color: #000000; border-color: #003c74; }
[data-theme="dove-rxp"] .dw-btn--ghost:hover { background: rgb(255 255 255 / .35); }
/* 卡/面板 = 分组框:白面米边;modal/菜单 = 窗口六层框 */
[data-theme="dove-rxp"] .dw-card, [data-theme="dove-rxp"] .dw-panel,
[data-theme="dove-rxp"] .dw-steps > li, [data-theme="dove-rxp"] .dw-details {
  background: #ffffff; border: 1px solid #d0d0bf; border-radius: 4px; box-shadow: none;
}
[data-theme="dove-rxp"] .dw-modal, [data-theme="dove-rxp"] .dw-nav-menu {
  background: #ece9d8; border: none; border-radius: 8px 8px 3px 3px; box-shadow: var(--rxp-frame);
}
[data-theme="dove-rxp"] .dw-table-wrap {
  background: #ffffff; border: 1px solid #7f9db9; border-radius: 3px; box-shadow: none;
}
/* 输入框 = XP 白盒蓝边;聚焦只换边框色(全局虚框兜底键盘焦点) */
[data-theme="dove-rxp"] .dw-input {
  border: 1px solid #7f9db9; border-radius: 0; background: #ffffff; box-shadow: none;
}
[data-theme="dove-rxp"] .dw-input:hover { border-color: #7f9db9; box-shadow: none; }
[data-theme="dove-rxp"] .dw-input:focus { outline: none; border-color: #2267cb; box-shadow: none; }
/* 标签页:选中白面 + 橙顶条 */
[data-theme="dove-rxp"] .dw-tabs { background: transparent; padding: 0; gap: 2px; }
[data-theme="dove-rxp"] .dw-tab { border-radius: 3px 3px 0 0; color: #000000; }
[data-theme="dove-rxp"] .dw-tab[aria-selected="true"] {
  background: #fcfcfe; box-shadow: inset 0 2px #ffc73c; color: #000000;
}
[data-theme="dove-rxp"] .dw-check input { accent-color: #2267cb; }
[data-theme="dove-rxp"] :focus-visible {
  outline: 1px dotted #000000; outline-offset: -3px; border-radius: 0;
}

/* ── rxp · 深色(夜幕 Luna:标题栏蓝与窗口六层框不动,花生酱米黄转深暖灰) ── */
[data-theme="dove-rxp"][data-mode="dark"] {
  color-scheme: dark;
  --dw-page:    #26251f;
  --dw-surface: #35332b;
  --dw-fill:    #45423a;
  --dw-border:  #55523f;
  --dw-text:    #f2efe4;
  --dw-muted:   #cfc9b8;
  --dw-faint:   #bdb7a6;
  --dw-gold:            #0050ee;  /* Luna 蓝(白字 6.2:1) */
  --dw-gold-content:    #ffffff;
  --dw-gold-text:       #7db4ff;
  --dw-gold-line:       #4a8fd4;
  --dw-teal:            #34c759;
  --dw-teal-content:    #06280f;
  --dw-info:            #6aa9ff;  --dw-info-content:    #06203f;
  --dw-success:         #4cc24c;  --dw-success-content: #062806;
  --dw-warning:         #e0aa3e;  --dw-warning-content: #2e2302;
  --dw-error:           #ff8a7a;  --dw-error-content:   #380a06;
  --dw-focus:      #ffffff;
  --dw-select-bg:  #2f6bb3;
  --dw-select-fg:  #ffffff;
  --dw-caret:      #ffffff;
  /* 结构配方深版:标准面/按下转深暖渐变;标题栏渐变与六层框继承浅色定义(蓝色在深面依然成立) */
  --rxp-face:         linear-gradient(180deg, #54524a 0%, #44423b 86%, #36342e 100%);
  --rxp-face-pressed: linear-gradient(180deg, #2a2925 0%, #383631 8%, #3a3833 94%, #454340 100%);
  --dw-shadow-1: 0 1px 2px rgb(0 0 0 / .5);
  --dw-shadow-2: 1px 2px 3px rgb(0 0 0 / .6);
  --dw-backdrop: rgb(0 0 20 / .6);
}
[data-theme="dove-rxp"][data-mode="dark"] .dw-btn { color: #f2efe4; border-color: #2f6bb3; }
[data-theme="dove-rxp"][data-mode="dark"] .dw-btn--secondary { color: #f2efe4; }
[data-theme="dove-rxp"][data-mode="dark"] .dw-btn--ghost { color: #f2efe4; border-color: #4a8fd4; }
[data-theme="dove-rxp"][data-mode="dark"] .dw-btn--ghost:hover { background: rgb(255 255 255 / .12); }
[data-theme="dove-rxp"][data-mode="dark"] .dw-card, [data-theme="dove-rxp"][data-mode="dark"] .dw-panel,
[data-theme="dove-rxp"][data-mode="dark"] .dw-steps > li, [data-theme="dove-rxp"][data-mode="dark"] .dw-details {
  background: #35332b; border-color: #55523f;
}
[data-theme="dove-rxp"][data-mode="dark"] .dw-modal, [data-theme="dove-rxp"][data-mode="dark"] .dw-nav-menu { background: #35332b; }
[data-theme="dove-rxp"][data-mode="dark"] .dw-table-wrap { background: #2b2a24; border-color: #3d5a78; }
[data-theme="dove-rxp"][data-mode="dark"] .dw-input { background: #26251f; color: #f2efe4; border-color: #3d5a78; }
[data-theme="dove-rxp"][data-mode="dark"] .dw-input:hover { border-color: #3d5a78; }
[data-theme="dove-rxp"][data-mode="dark"] .dw-input:focus { border-color: #3d8bff; }
[data-theme="dove-rxp"][data-mode="dark"] .dw-tab { color: #cfc9b8; }
[data-theme="dove-rxp"][data-mode="dark"] .dw-tab[aria-selected="true"] { background: #45423a; color: #f2efe4; }
[data-theme="dove-rxp"][data-mode="dark"] :focus-visible { outline-color: #ffffff; }

/* ════════════════════════════════════════════════════════════════
   主题 5:dove-w7(复古 Windows 7 Aero)——同一套页面结构直接换皮。
   配方蒸馏自 7.css v0.21.1(MIT,Copyright (c) 2021 Khang Nguyen Duy;
   npm 7.css@0.21.1 钉版,只取数值不搬位图;图标只许自绘)。
   灵魂:45% 分割线按钮渐变 / 万物 1px 内白高光 / 玻璃光泽 / 青蓝辉光;
   零位移铁律仍生效(hover/pressed 只换渐变与 shadow)。
   ════════════════════════════════════════════════════════════════ */
[data-theme="dove-w7"] {
  color-scheme: light;

  /* 面与字 */
  --dw-page:    #e8edf3;  /* 浅 aero 雾蓝 */
  --dw-surface: #f0f0f0;
  --dw-fill:    #ebebeb;
  --dw-border:  #cfcfcf;  /* 发丝线;控件描边 #8e8f8f 见覆写 */
  --dw-text:    #000000;
  --dw-muted:   #4c525a;  /* 6.8:1 */
  --dw-faint:   #5f666f;  /* 5.0:1 */

  /* 品牌映射:主行动 = aero 蓝;青辉留给图表/点缀(图形级) */
  --dw-gold:            #35719e;  /* hover 描边蓝 #3c7fb1 加深到白字达标 */
  --dw-gold-content:    #ffffff;
  --dw-gold-text:       #1c5a85;  /* 链接蓝 #06c 加深(6.7:1) */
  --dw-gold-line:       #3c7fb1;
  --dw-teal:            #12a7b8;  /* 青辉 #2aceda 加深:图形/填充级(非文字级) */
  --dw-teal-content:    #04343b;  /* 仅备查;次按钮实际吃覆写的标准面 */

  /* 语义四色 */
  --dw-info:            #0366c0;  --dw-info-content:    #ffffff;
  --dw-success:         #1a7a1a;  --dw-success-content: #ffffff;
  --dw-warning:         #7a5b00;  --dw-warning-content: #ffffff;
  --dw-error:           #b3271e;  --dw-error-content:   #ffffff;

  --dw-focus:      #3d7bad;
  --dw-select-bg:  #aaddfa;
  --dw-select-fg:  #000000;
  --dw-caret:      #000000;

  /* 结构配方(灵魂):内白高光 / 辉光 / 45% 分割三面 / 框体光泽 */
  --w7-el-sd: inset 0 0 0 1px rgb(255 255 255 / .8);
  --w7-glow: 0 0 7px 3px #5dc4f0;
  --w7-face:         linear-gradient(#f2f2f2 45%, #ebebeb 45%, #cfcfcf);
  --w7-face-hover:   linear-gradient(#eaf6fd 45%, #bee6fd 45%, #a7d9f5);
  --w7-face-pressed: linear-gradient(#e5f4fc, #c4e5f6 30% 50%, #98d1ef 50%, #68b3db);
  --w7-glass: linear-gradient(to right, rgb(255 255 255 / .4), rgb(0 0 0 / .1), rgb(255 255 255 / .2)),
              linear-gradient(transparent 20%, rgb(255 255 255 / .55) 40%, transparent 41%);
  --dw-shadow-1: 0 1px 3px rgb(15 30 45 / .14), inset 0 1px 0 rgb(255 255 255 / .8);
  --dw-shadow-2: 0 2px 8px rgb(15 30 45 / .20), inset 0 1px 0 rgb(255 255 255 / .8);
  --dw-shadow-3: 2px 2px 10px 1px rgb(0 0 0 / .45), inset 0 0 0 1px rgb(255 255 255 / .98);

  /* Win7 圆角:控件 3 / 窗口 6;高密度小字(Segoe UI 9pt=12px) */
  --dw-radius-sm: 3px; --dw-radius-md: 3px; --dw-radius-lg: 6px;
  --dw-radius-xl: 6px;
  --dw-font-body: "Segoe UI", "SegoeUI", "Noto Sans", "PingFang SC", "Microsoft YaHei", sans-serif;
  --dw-font-display: var(--dw-font-body);
  --dw-font-data: Consolas, "Courier New", ui-monospace, monospace;
  --dw-text-body: 12px;
  --dw-text-small: 11px;
  --dw-text-caption: 10px;
  --dw-backdrop: rgb(20 35 50 / .4);
}

/* w7 组件覆写:45% 分割 + 内白高光 + 辉光;按下不换 padding 的零位移铁律仍生效 */
[data-theme="dove-w7"] body { font-size: 12px; }
/* 顶栏 = aero 玻璃条:框体蓝 + 光泽 + 黑字白晕(Aero 标题对比度策略:不靠字色靠光晕) */
[data-theme="dove-w7"] .dw-nav {
  background: var(--w7-glass), #4580c4;
  border-bottom: 1px solid rgb(0 0 0 / .5);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / .85);
}
[data-theme="dove-w7"] .dw-nav-brand,
[data-theme="dove-w7"] .dw-nav-links a,
[data-theme="dove-w7"] .dw-nav-links a[aria-current="page"] {
  color: #000000; text-shadow: 0 0 10px #ffffff, 0 0 6px #ffffff, 0 0 3px #ffffff;
}
[data-theme="dove-w7"] .dw-nav-links a:hover { background: rgb(255 255 255 / .3); }
[data-theme="dove-w7"] .dw-nav-burger summary span { background: #000000; }
[data-theme="dove-w7"] .dw-nav .dw-btn--ghost {
  background: rgb(255 255 255 / .15); color: #000000;
  border-color: rgb(0 0 0 / .35); box-shadow: var(--w7-el-sd);
  text-shadow: 0 0 8px #ffffff, 0 0 3px #ffffff;
}
[data-theme="dove-w7"] .dw-nav .dw-btn--ghost:hover { background: rgb(255 255 255 / .3); }
/* 按钮 = 45% 分割三面;主按钮 = Win7「默认按钮」青辉描边 */
[data-theme="dove-w7"] .dw-btn {
  border: 1px solid #8e8f8f; border-radius: 3px;
  background: var(--w7-face); color: #222222; font-weight: 400;
  box-shadow: var(--w7-el-sd);
}
[data-theme="dove-w7"] .dw-btn:hover { background: var(--w7-face-hover); border-color: #3c7fb1; box-shadow: var(--w7-el-sd); }
[data-theme="dove-w7"] .dw-btn:active:not(:disabled) {
  background: var(--w7-face-pressed); border-color: #6d91ab;
  box-shadow: inset 1px 1px 0 rgb(0 0 0 / .2);
}
[data-theme="dove-w7"] .dw-btn--primary {
  border-color: #5586a3;
  box-shadow: var(--w7-el-sd), inset 0 0 3px 1px rgb(52 222 255 / .85);
}
[data-theme="dove-w7"] .dw-btn--primary:hover {
  background: var(--w7-face-hover); border-color: #3c7fb1;
  box-shadow: var(--w7-el-sd), inset 0 0 5px 1px rgb(52 222 255 / .9);
}
[data-theme="dove-w7"] .dw-btn--secondary { background: var(--w7-face); color: #222222; }
[data-theme="dove-w7"] .dw-btn--danger {
  background: linear-gradient(#f6d9d4 45%, #eec4bc 45%, #dfa192);
  border-color: #b3271e; color: #7a150f;
}
[data-theme="dove-w7"] .dw-btn--danger:hover { background: var(--w7-face-hover); border-color: #b3271e; color: #7a150f; }
[data-theme="dove-w7"] .dw-btn--ghost { background: transparent; border-color: #8e8f8f; color: #000000; box-shadow: none; }
[data-theme="dove-w7"] .dw-btn--ghost:hover { background: rgb(255 255 255 / .5); }
/* 卡/面板 = 窗口:6px 圆角 + 深色描边 + 内白顶光 */
[data-theme="dove-w7"] .dw-card, [data-theme="dove-w7"] .dw-panel {
  border: 1px solid rgb(0 0 0 / .45); border-radius: 6px;
}
[data-theme="dove-w7"] .dw-steps > li, [data-theme="dove-w7"] .dw-details {
  background: #ffffff; border: 1px solid #cfd4da; border-radius: 3px; box-shadow: none;
}
[data-theme="dove-w7"] .dw-modal, [data-theme="dove-w7"] .dw-nav-menu {
  border: 1px solid rgb(0 0 0 / .7); border-radius: 6px; box-shadow: var(--dw-shadow-3);
}
[data-theme="dove-w7"] .dw-table-wrap {
  background: #ffffff; border: 1px solid #8e8f8f; border-radius: 3px;
}
/* 输入框 = 四边异色边框(顶边最深造内凹);聚焦只移边框色 */
[data-theme="dove-w7"] .dw-input {
  border: 1px solid; border-color: #abadb3 #dbdfe6 #e3e9ef #e2e3ea;
  border-radius: 2px; background: #ffffff; box-shadow: none;
}
[data-theme="dove-w7"] .dw-input:hover { border-color: #5794bf #b7d5ea #c7e2f1 #c5daed; box-shadow: none; }
[data-theme="dove-w7"] .dw-input:focus {
  outline: none; border-color: #3d7bad #a4c9e3 #b7d9ed #b5cfe7; box-shadow: none;
}
/* 标签页:选中白面缝合 */
[data-theme="dove-w7"] .dw-tabs { background: transparent; padding: 0; gap: 2px; }
[data-theme="dove-w7"] .dw-tab { border-radius: 3px 3px 0 0; color: #000000; }
[data-theme="dove-w7"] .dw-tab[aria-selected="true"] {
  background: #ffffff; box-shadow: inset 0 1px 0 #ffffff; color: #000000;
}
[data-theme="dove-w7"] .dw-check input { accent-color: #3c7fb1; }
[data-theme="dove-w7"] :focus-visible {
  outline: 1px dotted #000000; outline-offset: -3px; border-radius: 2px;
}

/* ── w7 · 深色(暗夜 Aero:玻璃条沉蓝、45% 分割面转深、青辉描边保留) ── */
[data-theme="dove-w7"][data-mode="dark"] {
  color-scheme: dark;
  --dw-page:    #161c23;
  --dw-surface: #232a33;
  --dw-fill:    #2e3742;
  --dw-border:  #454f5c;
  --dw-text:    #e9eef4;
  --dw-muted:   #b8c2cd;
  --dw-faint:   #a2adba;
  --dw-gold:            #35719e;  /* 主按钮底(白字 5.2:1,与浅色同值) */
  --dw-gold-content:    #ffffff;
  --dw-gold-text:       #8fc6f0;
  --dw-gold-line:       #4a8fc2;
  --dw-teal:            #2aceda;
  --dw-teal-content:    #04343b;
  --dw-info:            #6aa9ff;  --dw-info-content:    #06203f;
  --dw-success:         #4cc24c;  --dw-success-content: #062806;
  --dw-warning:         #e0aa3e;  --dw-warning-content: #2e2302;
  --dw-error:           #ff8a7a;  --dw-error-content:   #380a06;
  --dw-focus:      #5dc4f0;
  --dw-select-bg:  #2f6b9a;
  --dw-select-fg:  #ffffff;
  --dw-caret:      #ffffff;
  /* 结构配方深版:内白高光压低、45% 三面转深、辉光不动 */
  --w7-el-sd: inset 0 0 0 1px rgb(255 255 255 / .18);
  --w7-face:         linear-gradient(#3a4149 45%, #31373f 45%, #252a31);
  --w7-face-hover:   linear-gradient(#2e4b60 45%, #27404f 45%, #1e3442);
  --w7-face-pressed: linear-gradient(#1f3a4d, #1b3242 30% 50%, #16283a 50%, #10202e);
  --dw-shadow-1: 0 1px 3px rgb(0 0 0 / .5), inset 0 1px 0 rgb(255 255 255 / .12);
  --dw-shadow-2: 0 2px 8px rgb(0 0 0 / .55), inset 0 1px 0 rgb(255 255 255 / .12);
  --dw-shadow-3: 2px 2px 10px 1px rgb(0 0 0 / .7), inset 0 0 0 1px rgb(255 255 255 / .25);
  --dw-backdrop: rgb(5 10 16 / .6);
}
[data-theme="dove-w7"][data-mode="dark"] .dw-nav { background: var(--w7-glass), #16324a; }
[data-theme="dove-w7"][data-mode="dark"] .dw-nav-brand,
[data-theme="dove-w7"][data-mode="dark"] .dw-nav-links a,
[data-theme="dove-w7"][data-mode="dark"] .dw-nav-links a[aria-current="page"] {
  color: #ffffff; text-shadow: 0 0 8px rgb(0 0 0 / .9), 0 0 3px rgb(0 0 0 / .9);
}
[data-theme="dove-w7"][data-mode="dark"] .dw-nav-links a:hover { background: rgb(255 255 255 / .15); }
[data-theme="dove-w7"][data-mode="dark"] .dw-nav-burger summary span { background: #ffffff; }
[data-theme="dove-w7"][data-mode="dark"] .dw-nav .dw-btn--ghost {
  background: rgb(255 255 255 / .08); color: #ffffff; border-color: rgb(255 255 255 / .4);
  text-shadow: 0 0 6px rgb(0 0 0 / .8);
}
[data-theme="dove-w7"][data-mode="dark"] .dw-nav .dw-btn--ghost:hover { background: rgb(255 255 255 / .2); }
[data-theme="dove-w7"][data-mode="dark"] .dw-btn { color: #e9eef4; border-color: #565f6a; }
[data-theme="dove-w7"][data-mode="dark"] .dw-btn--secondary { color: #e9eef4; }
[data-theme="dove-w7"][data-mode="dark"] .dw-btn--danger {
  background: linear-gradient(#5a2b26 45%, #4c241f 45%, #3e1c18);
  border-color: #d05046; color: #ffb4ab;
}
[data-theme="dove-w7"][data-mode="dark"] .dw-btn--danger:hover { background: var(--w7-face-hover); border-color: #d05046; color: #ffb4ab; }
[data-theme="dove-w7"][data-mode="dark"] .dw-btn--ghost { color: #e9eef4; border-color: #565f6a; }
[data-theme="dove-w7"][data-mode="dark"] .dw-btn--ghost:hover { background: rgb(255 255 255 / .1); }
[data-theme="dove-w7"][data-mode="dark"] .dw-card, [data-theme="dove-w7"][data-mode="dark"] .dw-panel { border-color: rgb(0 0 0 / .6); }
[data-theme="dove-w7"][data-mode="dark"] .dw-steps > li, [data-theme="dove-w7"][data-mode="dark"] .dw-details {
  background: #232a33; border-color: #3a434d;
}
[data-theme="dove-w7"][data-mode="dark"] .dw-modal, [data-theme="dove-w7"][data-mode="dark"] .dw-nav-menu { border-color: rgb(0 0 0 / .8); }
[data-theme="dove-w7"][data-mode="dark"] .dw-table-wrap { background: #232a33; border-color: #454f5c; }
[data-theme="dove-w7"][data-mode="dark"] .dw-input {
  background: #1a2028; color: #e9eef4; border-color: #4a545f #39424c #39424c #39424c;
}
[data-theme="dove-w7"][data-mode="dark"] .dw-input:hover { border-color: #5794bf #3d5a78 #3d5a78 #3d5a78; }
[data-theme="dove-w7"][data-mode="dark"] .dw-input:focus { border-color: #3d7bad #2f6b9a #2f6b9a #2f6b9a; }
[data-theme="dove-w7"][data-mode="dark"] .dw-tab { color: #b8c2cd; }
[data-theme="dove-w7"][data-mode="dark"] .dw-tab[aria-selected="true"] {
  background: #2e3742; color: #e9eef4; box-shadow: inset 0 1px 0 rgb(255 255 255 / .15);
}
[data-theme="dove-w7"][data-mode="dark"] :focus-visible { outline-color: #ffffff; }

/* ════════════════════════════════════════════════════════════════
   主题 6:dove-rmac(复古 classic Mac,System 6 黑白 1-bit)——同一套结构直接换皮。
   配方蒸馏自 system.css @0.1.11(MIT,Copyright (c) 2022 Sakun Acharige;
   npm @sakun/system.css@0.1.11 钉版,只取数值不搬资产;图标只许自绘,
   严禁 Apple 原始资产; Chicago/Monaco 字体不落盘,用系统退路栈)。
   灵魂:面全白墨全黑,层次全靠描边/反色/硬投影;选中与按下 = 反色;
   零位移铁律仍生效(按下只换色,不换 padding)。
   ════════════════════════════════════════════════════════════════ */
[data-theme="dove-rmac"] {
  color-scheme: light;

  /* 面与字(黑白世界;muted/faint 为适配灰,上游无此概念) */
  --dw-page:    #ffffff;
  --dw-surface: #ffffff;
  --dw-fill:    #eeeeee;
  --dw-border:  #000000;  /* 1-bit 纪律:发丝线也是墨 */
  --dw-text:    #000000;
  --dw-muted:   #3a3a3a;  /* 10.6:1 */
  --dw-faint:   #595959;  /* 7.5:1 */

  /* 品牌映射:主行动 = 黑(System 6 无彩色主按钮,默认按钮走双圈见覆写) */
  --dw-gold:            #000000;
  --dw-gold-content:    #ffffff;
  --dw-gold-text:       #000000;
  --dw-gold-line:       #000000;
  --dw-teal:            #777777;  /* 图形/填充级(非文字级);图表三色 = 黑/灰/浅灰 */
  --dw-teal-content:    #ffffff;  /* 仅备查;次按钮实际吃覆写的白面黑字 */

  /* 语义四色:1-bit 世界全部收黑,语义靠文案与边框样式区分 */
  --dw-info:            #000000;  --dw-info-content:    #ffffff;
  --dw-success:         #000000;  --dw-success-content: #ffffff;
  --dw-warning:         #000000;  --dw-warning-content: #ffffff;
  --dw-error:           #000000;  --dw-error-content:   #ffffff;

  --dw-focus:      #000000;
  --dw-select-bg:  #000000;  /* 反色即选中 */
  --dw-select-fg:  #ffffff;
  --dw-caret:      #000000;

  /* 结构配方(灵魂):硬投影 / 菜单反色 / 桌面浅灰抖动;ink/paper = 显式控件双槽(深色反色) */
  --rmac-hard: 2px 2px 0 #000000;
  --rmac-dither: conic-gradient(#e8e8e8 25%, #ffffff 0 50%, #e8e8e8 0 75%, #ffffff 0);
  --rmac-ink:   #000000;
  --rmac-paper: #ffffff;
  --dw-shadow-1: none;
  --dw-shadow-2: var(--rmac-hard);
  --dw-shadow-3: 3px 3px 0 #000000;

  /* 圆角:按钮 3px 拟像素圆角,窗口方正(0);高密度小字 */
  --dw-radius-sm: 3px; --dw-radius-md: 3px; --dw-radius-lg: 0;
  --dw-radius-xl: 0; --dw-radius-pill: 3px;
  --dw-font-body: "Chicago", "Charcoal", "Silkscreen", ui-monospace, "Courier New",
                  "PingFang SC", "Microsoft YaHei", monospace;
  --dw-font-display: var(--dw-font-body);
  --dw-font-data: "Courier New", ui-monospace, monospace;
  --dw-text-body: 12px;
  --dw-text-small: 11px;
  --dw-text-caption: 10px;
  --dw-section-gap: 40px;
  --dw-backdrop: rgb(0 0 0 / .25);
}

/* rmac 组件覆写:反色美学;按下不换 padding 的零位移铁律仍生效 */
[data-theme="dove-rmac"] body {
  font-size: 12px;
  background-color: #ffffff;
  background-image: var(--rmac-dither);  /* 桌面浅灰抖动肌理 */
  background-size: 2px 2px;
}
/* 顶栏 = Mac 菜单条:白面黑底边,hover 反色 */
[data-theme="dove-rmac"] .dw-nav {
  background: #ffffff; backdrop-filter: none; -webkit-backdrop-filter: none;
  border-bottom: 1.5px solid #000000; box-shadow: none;
}
[data-theme="dove-rmac"] .dw-nav-brand { color: #000000; }
[data-theme="dove-rmac"] .dw-nav-links a { color: #000000; border-radius: 0; }
[data-theme="dove-rmac"] .dw-nav-links a:hover { background: #000000; color: #ffffff; }
[data-theme="dove-rmac"] .dw-nav-links a[aria-current="page"] { background: #000000; color: #ffffff; }
[data-theme="dove-rmac"] .dw-nav-burger summary span { background: #000000; }
/* 按钮 = 白面黑边 3px 圆角;hover 加硬投影,按下整钮反色;主按钮 = 双圈默认钮 */
[data-theme="dove-rmac"] .dw-btn {
  background: #ffffff; color: #000000; border: 2px solid #000000;
  border-radius: 3px; box-shadow: none;
}
[data-theme="dove-rmac"] .dw-btn:hover { background: #ffffff; box-shadow: var(--rmac-hard); }
[data-theme="dove-rmac"] .dw-btn:active:not(:disabled) { background: #000000; color: #ffffff; box-shadow: none; }
[data-theme="dove-rmac"] .dw-btn--primary {
  box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000;  /* System 6 默认按钮双圈 */
}
[data-theme="dove-rmac"] .dw-btn--primary:hover { background: #ffffff; color: #000000;
  box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000, var(--rmac-hard); }
[data-theme="dove-rmac"] .dw-btn--secondary { background: #ffffff; color: #000000; }
[data-theme="dove-rmac"] .dw-btn--danger { background: #000000; color: #ffffff; }
[data-theme="dove-rmac"] .dw-btn--danger:hover { background: #000000; }
[data-theme="dove-rmac"] .dw-btn--danger:active:not(:disabled) { background: #ffffff; color: #000000; }
[data-theme="dove-rmac"] .dw-btn--ghost { background: #ffffff; }
/* 卡/面板 = 窗口:白面 1.5px 墨框;弹层/菜单 = 对话框:硬投影;modal 加条纹标题带 */
[data-theme="dove-rmac"] .dw-card, [data-theme="dove-rmac"] .dw-panel,
[data-theme="dove-rmac"] .dw-steps > li, [data-theme="dove-rmac"] .dw-details,
[data-theme="dove-rmac"] .dw-table-wrap {
  background: #ffffff; border: 1.5px solid #000000; border-radius: 0; box-shadow: none;
}
[data-theme="dove-rmac"] .dw-nav-menu, [data-theme="dove-rmac"] .dw-modal {
  background: #ffffff; border: 1.5px solid #000000; border-radius: 0; box-shadow: var(--rmac-hard);
}
[data-theme="dove-rmac"] .dw-modal::before {
  content: ""; display: block; height: 16px;
  margin: calc(-1 * var(--dw-space-6)) calc(-1 * var(--dw-space-6)) var(--dw-space-4);
  background: repeating-linear-gradient(#000000 0 2px, #ffffff 2px 4px);
  border-bottom: 1.5px solid #000000;
}
/* 输入框 = 白面墨框;聚焦 = 反色(System 6 没有光晕概念) */
[data-theme="dove-rmac"] .dw-input {
  border: 1.5px solid #000000; border-radius: 0; background: #ffffff; box-shadow: none;
}
[data-theme="dove-rmac"] .dw-input:hover { border-color: #000000; box-shadow: none; }
[data-theme="dove-rmac"] .dw-input:focus {
  outline: none; background: #000000; color: #ffffff; caret-color: #ffffff; box-shadow: none;
}
[data-theme="dove-rmac"] .dw-input:focus::placeholder { color: #a5a5a5; }
/* 标签页:选中反色 */
[data-theme="dove-rmac"] .dw-tabs { background: #ffffff; border: 1.5px solid #000000; }
[data-theme="dove-rmac"] .dw-tab { color: #000000; }
[data-theme="dove-rmac"] .dw-tab[aria-selected="true"] { background: #000000; color: #ffffff; box-shadow: none; }
/* 复选框/开关显式自绘:1-bit 不吃浏览器原生渲染差异;ink/paper 双槽明暗各自反色,旋钮带墨边同模式两态恒可辨 */
[data-theme="dove-rmac"] .dw-check input {
  appearance: none; -webkit-appearance: none; margin: 0; flex: none; cursor: pointer;
  width: 18px; height: 18px; border: 1.5px solid var(--rmac-ink); border-radius: 3px;
  background: var(--rmac-paper); position: relative;
}
[data-theme="dove-rmac"] .dw-check input:checked { background: var(--rmac-ink); }
[data-theme="dove-rmac"] .dw-check input:checked::after {
  content: ""; position: absolute; left: 3px; top: 4px; width: 9px; height: 5px;
  border-left: 2px solid var(--rmac-paper); border-bottom: 2px solid var(--rmac-paper);
  transform: rotate(-45deg);
}
[data-theme="dove-rmac"] .dw-switch span {
  border: 1.5px solid var(--rmac-ink); background: var(--rmac-paper); box-shadow: none;
}
[data-theme="dove-rmac"] .dw-switch input:checked + span { background: var(--rmac-ink); }
[data-theme="dove-rmac"] .dw-switch span::after {
  width: 18px; height: 18px; top: 1.5px; left: 1.5px;
  background: var(--rmac-paper); border: 1.5px solid var(--rmac-ink); box-shadow: none;
}
[data-theme="dove-rmac"] .dw-switch input:checked + span::after { left: 21.5px; }
[data-theme="dove-rmac"] :focus-visible {
  outline: 1.5px dotted #000000; outline-offset: -3px; border-radius: 0;
}

/* ── rmac · 深色(灰阶暗夜:经典 Mac 本无深色模式,此为 Platinum 层次的暗夜演绎——
   窗口炭灰面 + 白墨描边 + 灰硬投影,桌面纯黑 + 暗灰抖动;选中/按下照旧反色) ── */
[data-theme="dove-rmac"][data-mode="dark"] {
  color-scheme: dark;
  --dw-page:    #000000;
  --dw-surface: #1b1b1b;  /* 炭灰窗口面 */
  --dw-fill:    #2b2b2b;
  --dw-border:  #ffffff;
  --dw-text:    #ffffff;
  --dw-muted:   #c6c6c6;
  --dw-faint:   #a8a8a8;
  --dw-gold:            #ffffff;
  --dw-gold-content:    #000000;
  --dw-gold-text:       #ffffff;
  --dw-gold-line:       #ffffff;
  --dw-teal:            #8a8a8a;
  --dw-teal-content:    #000000;
  --dw-info:            #ffffff;  --dw-info-content:    #000000;
  --dw-success:         #ffffff;  --dw-success-content: #000000;
  --dw-warning:         #ffffff;  --dw-warning-content: #000000;
  --dw-error:           #ffffff;  --dw-error-content:   #000000;
  --dw-focus:      #ffffff;
  --dw-select-bg:  #ffffff;  /* 反色即选中 */
  --dw-select-fg:  #000000;
  --dw-caret:      #ffffff;
  --rmac-ink:    #ffffff;
  --rmac-paper:  #000000;
  --rmac-hard:   2px 2px 0 #3d3d3d;
  --rmac-dither: conic-gradient(#1a1a1a 25%, #000000 0 50%, #1a1a1a 0 75%, #000000 0);
  --dw-shadow-1: none;
  --dw-shadow-2: var(--rmac-hard);
  --dw-shadow-3: 3px 3px 0 #3d3d3d;
  --dw-backdrop: rgb(0 0 0 / .6);
}
[data-theme="dove-rmac"][data-mode="dark"] body { background-color: #000000; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-nav { background: #1b1b1b; border-bottom-color: #ffffff; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-nav-brand { color: #ffffff; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-nav-links a { color: #ffffff; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-nav-links a:hover { background: #ffffff; color: #000000; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-nav-links a[aria-current="page"] { background: #ffffff; color: #000000; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-nav-burger summary span { background: #ffffff; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-btn { background: #1b1b1b; color: #ffffff; border-color: #ffffff; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-btn:hover { background: #1b1b1b; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-btn:active:not(:disabled) { background: #ffffff; color: #000000; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-btn--primary {
  box-shadow: 0 0 0 2px #000000, 0 0 0 4px #ffffff;
}
[data-theme="dove-rmac"][data-mode="dark"] .dw-btn--primary:hover { background: #1b1b1b; color: #ffffff;
  box-shadow: 0 0 0 2px #000000, 0 0 0 4px #ffffff, var(--rmac-hard); }
[data-theme="dove-rmac"][data-mode="dark"] .dw-btn--secondary { background: #1b1b1b; color: #ffffff; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-btn--danger { background: #ffffff; color: #000000; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-btn--danger:hover { background: #ffffff; color: #000000; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-btn--danger:active:not(:disabled) { background: #000000; color: #ffffff; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-btn--ghost { background: #1b1b1b; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-card, [data-theme="dove-rmac"][data-mode="dark"] .dw-panel,
[data-theme="dove-rmac"][data-mode="dark"] .dw-steps > li, [data-theme="dove-rmac"][data-mode="dark"] .dw-details,
[data-theme="dove-rmac"][data-mode="dark"] .dw-table-wrap {
  background: #1b1b1b; border-color: #ffffff;
}
[data-theme="dove-rmac"][data-mode="dark"] .dw-nav-menu, [data-theme="dove-rmac"][data-mode="dark"] .dw-modal {
  background: #1b1b1b; border-color: #ffffff;
}
[data-theme="dove-rmac"][data-mode="dark"] .dw-modal::before {
  background: repeating-linear-gradient(#ffffff 0 2px, #000000 2px 4px);
  border-bottom-color: #ffffff;
}
[data-theme="dove-rmac"][data-mode="dark"] .dw-input { border-color: #ffffff; background: #111111; color: #ffffff; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-input:hover { border-color: #ffffff; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-input:focus { background: #ffffff; color: #000000; caret-color: #000000; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-input:focus::placeholder { color: #595959; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-tabs { background: #1b1b1b; border-color: #ffffff; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-tab { color: #ffffff; }
[data-theme="dove-rmac"][data-mode="dark"] .dw-tab[aria-selected="true"] { background: #ffffff; color: #000000; }
[data-theme="dove-rmac"][data-mode="dark"] :focus-visible { outline-color: #ffffff; }

/* ── 主题无关令牌 ── */
:root {
  --dw-font-body: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB",
                  "Microsoft YaHei", "Noto Sans CJK SC", "Segoe UI", Roboto, sans-serif;
  --dw-font-display: "Songti SC", "STSong", "Noto Serif CJK SC", "Source Han Serif SC",
                     ui-serif, Georgia, serif;
  --dw-font-data: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;
  --dw-text-display: clamp(2rem, 4.6vw, 3.2rem);
  --dw-text-h1: clamp(1.65rem, 3.2vw, 2.4rem);
  --dw-text-h2: clamp(1.35rem, 2.4vw, 1.75rem);
  --dw-text-h3: 1.2rem;
  --dw-text-body: 1rem;
  --dw-text-small: .875rem;
  --dw-text-caption: .75rem;
  --dw-space-1: 4px;   --dw-space-2: 8px;   --dw-space-3: 12px;  --dw-space-4: 16px;
  --dw-space-5: 20px;  --dw-space-6: 24px;  --dw-space-8: 32px;  --dw-space-10: 40px;
  --dw-space-12: 48px; --dw-space-16: 64px; --dw-space-20: 80px; --dw-space-24: 96px;
  --dw-section-gap: clamp(48px, 7vw, 72px);
  --dw-container-read: 720px;
  --dw-container-grid: 1120px;
  --dw-radius-sm: 6px;
  --dw-radius-md: 8px;
  --dw-radius-lg: 12px;
  --dw-radius-xl: 16px;
  --dw-radius-pill: 999px;
  --dw-touch: 44px;
  --dw-dur-1: 120ms;
  --dw-dur-2: 200ms;
  --dw-dur-3: 300ms;
  --dw-ease-out: cubic-bezier(.25, 1, .5, 1);
  --dw-ease-in: cubic-bezier(.5, 0, .75, 0);
  --dw-ease-spring: cubic-bezier(.32, .72, 0, 1);
  --dw-z-sticky: 50; --dw-z-dropdown: 100; --dw-z-overlay: 200;
  --dw-z-modal: 300; --dw-z-toast: 400;
}

/* ── 基础面 ── */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scrollbar-gutter: stable; } /* gutter stable = 切页防抖(2026-08-12): 滚动条槽恒占位, 高矮页切换不顶移居中容器; 覆盖式滚动条平台(macOS 默认/移动端)无视觉副作用 */
body {
  margin: 0;
  font-family: var(--dw-font-body);
  line-height: 1.65;
  background: var(--dw-page);
  color: var(--dw-text);
}
::selection { background: var(--dw-select-bg); color: var(--dw-select-fg); }
input, textarea { caret-color: var(--dw-caret); }
::placeholder { color: var(--dw-muted); opacity: 1; }
:focus-visible { outline: 2px solid var(--dw-focus); outline-offset: 2px; border-radius: 2px; }
.dw-tnum { font-variant-numeric: tabular-nums; }
.dw-sr-only { position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

/* ═══ 组件(与 components.md 逐段对应) ═══ */
/* 1. 顶栏 */
.dw-nav{position:sticky;top:0;z-index:var(--dw-z-sticky);display:flex;align-items:center;gap:var(--dw-space-4);
  min-height:64px;padding:0 var(--dw-space-4);
  background:color-mix(in oklab, var(--dw-page) 85%, transparent);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid var(--dw-border)}
@media(min-width:768px){.dw-nav{padding:0 var(--dw-space-6)}}
.dw-nav-brand{font-weight:700;font-size:1.1rem;color:var(--dw-text);text-decoration:none;display:flex;align-items:center;gap:var(--dw-space-2);flex:1;min-height:var(--dw-touch)}
.dw-nav-links{display:none;gap:var(--dw-space-2)}
@media(min-width:768px){.dw-nav-links{display:flex}}
.dw-nav-links a{color:var(--dw-muted);text-decoration:none;padding:8px 12px;border-radius:var(--dw-radius-md);
  min-height:var(--dw-touch);display:inline-flex;align-items:center;
  transition:color var(--dw-dur-1) var(--dw-ease-out),background-color var(--dw-dur-1) var(--dw-ease-out)}
.dw-nav-links a:hover{color:var(--dw-text);background:var(--dw-fill)}
.dw-nav-links a[aria-current="page"]{color:var(--dw-gold-text)}
.dw-nav-actions{display:flex;align-items:center;gap:var(--dw-space-3)}
.dw-nav-burger{position:relative}
@media(min-width:768px){.dw-nav-burger{display:none}}
.dw-nav-burger summary{list-style:none;display:flex;flex-direction:column;justify-content:center;gap:5px;
  width:var(--dw-touch);height:var(--dw-touch);padding:10px;cursor:pointer;border-radius:var(--dw-radius-md)}
.dw-nav-burger summary::-webkit-details-marker{display:none}
.dw-nav-burger summary span{display:block;height:2px;background:var(--dw-text);border-radius:1px}
.dw-nav-burger[open] summary{background:var(--dw-fill)}
.dw-nav-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:200px;
  background:var(--dw-surface);border:1px solid var(--dw-border);border-radius:var(--dw-radius-lg);
  box-shadow:var(--dw-shadow-2);padding:var(--dw-space-2);display:flex;flex-direction:column}
.dw-nav-menu a{color:var(--dw-text);text-decoration:none;padding:10px 12px;border-radius:var(--dw-radius-md);
  min-height:var(--dw-touch);display:flex;align-items:center}
.dw-nav-menu a:hover{background:var(--dw-fill)}
.dw-nav-menu a[aria-current="page"]{color:var(--dw-gold-text)}
/* 手机端顶栏紧凑化:品牌不换行、动作区右靠、按钮横向 padding 收敛(触控高度 44px 不动) */
@media(max-width:767px){
  .dw-nav{gap:var(--dw-space-2);padding:0 var(--dw-space-3)}
  .dw-nav-brand{white-space:nowrap;flex:none}
  .dw-nav-actions{gap:var(--dw-space-2);margin-left:auto}
  .dw-nav-actions .dw-btn{padding:0 var(--dw-space-3)}
}
/* 主题切换器契约:文案恒为「当前主题:X」(JS 写入);不做 hover 换字——前缀会把按钮撑宽,违反零位移铁律 */
/* 2. 按钮 */
.dw-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--dw-space-2);
  min-height:var(--dw-touch);padding:0 var(--dw-space-5);border:1px solid transparent;
  border-radius:var(--dw-radius-md);font:600 var(--dw-text-body)/1 var(--dw-font-body);
  cursor:pointer;text-decoration:none;user-select:none;box-sizing:border-box;white-space:nowrap;
  transition:color var(--dw-dur-1) var(--dw-ease-out),background-color var(--dw-dur-1) var(--dw-ease-out),
             border-color var(--dw-dur-1) var(--dw-ease-out),box-shadow var(--dw-dur-1) var(--dw-ease-out)}
.dw-btn--primary{background:var(--dw-gold);color:var(--dw-gold-content)}
.dw-btn--primary:hover{box-shadow:var(--dw-shadow-2)}
.dw-btn--secondary{background:var(--dw-teal);color:var(--dw-teal-content)}
.dw-btn--secondary:hover{box-shadow:var(--dw-shadow-2)}
.dw-btn--ghost{background:transparent;color:var(--dw-text);border-color:var(--dw-border)}
.dw-btn--ghost:hover{background:var(--dw-fill)}
.dw-btn--danger{background:var(--dw-error);color:var(--dw-error-content)}
.dw-btn--danger:hover{box-shadow:var(--dw-shadow-2)}
.dw-btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}
.dw-btn--lg{min-height:52px;padding:0 var(--dw-space-6);font-size:1.05rem}
.dw-btn--sm{min-height:36px;padding:0 var(--dw-space-3);font-size:var(--dw-text-small)}
.dw-btn--block{width:100%}
/* 3. 徽章/chip */
.dw-badge{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;
  border:1px solid var(--dw-border);border-radius:var(--dw-radius-pill);
  font:500 var(--dw-text-caption)/1 var(--dw-font-body);letter-spacing:.06em;color:var(--dw-muted)}
.dw-badge--gold{color:var(--dw-gold-text);border-color:var(--dw-gold-line)}
.dw-badge--success{color:var(--dw-success);border-color:var(--dw-success)}
.dw-chip{display:inline-flex;align-items:center;min-height:32px;padding:0 14px;cursor:pointer;
  border:1px solid var(--dw-border);border-radius:var(--dw-radius-pill);background:var(--dw-surface);
  font-size:var(--dw-text-small);color:var(--dw-muted);
  transition:color var(--dw-dur-1),border-color var(--dw-dur-1),background-color var(--dw-dur-1)}
.dw-chip:hover{color:var(--dw-text);border-color:var(--dw-gold-line)}
.dw-chip[aria-pressed="true"]{color:var(--dw-gold-text);border-color:var(--dw-gold-line);background:var(--dw-fill)}
/* 4. 卡片 */
.dw-card{background:var(--dw-surface);border:1px solid var(--dw-border);
  border-radius:var(--dw-radius-lg);box-shadow:var(--dw-shadow-1);padding:var(--dw-space-6)}
.dw-card-title{margin:0;font-size:var(--dw-text-h3);line-height:1.4}
.dw-card-actions{margin-top:var(--dw-space-5);display:flex;gap:var(--dw-space-3);flex-wrap:wrap}
.dw-muted{color:var(--dw-muted)}
.dw-card-grid{display:grid;gap:var(--dw-space-4);grid-template-columns:1fr}
.dw-card-grid > *{min-width:0}  /* 防宽内容(长表格等)经 min-width:auto 撑破网格 */
@media(min-width:768px){.dw-card-grid{grid-template-columns:1fr 1fr}}
@media(min-width:1024px){.dw-card-grid{grid-template-columns:1fr 1fr 1fr}}
/* 5. 统一面板列表 */
.dw-panel{background:var(--dw-surface);border:1px solid var(--dw-border);
  border-radius:var(--dw-radius-lg);box-shadow:var(--dw-shadow-1)}
.dw-row{display:flex;align-items:center;justify-content:space-between;gap:var(--dw-space-4);
  padding:var(--dw-space-4) var(--dw-space-5);min-height:56px}
.dw-row + .dw-row{border-top:1px solid var(--dw-border)}
.dw-row-title{font-weight:600}
.dw-row-meta{font-size:var(--dw-text-small);color:var(--dw-muted)}
/* 6. 表单 */
.dw-field{margin-bottom:var(--dw-space-5)}
.dw-label{display:block;font-weight:600;margin-bottom:var(--dw-space-2)}
.dw-input{width:100%;min-height:var(--dw-touch);padding:0 var(--dw-space-3);
  background:var(--dw-surface);color:var(--dw-text);box-sizing:border-box;
  border:1px solid var(--dw-border);border-radius:var(--dw-radius-md);
  transition:border-color var(--dw-dur-1),box-shadow var(--dw-dur-1)}
.dw-input:hover{border-color:var(--dw-gold-line)}
.dw-input:focus{outline:none;border-color:var(--dw-focus);box-shadow:0 0 0 3px color-mix(in oklab,var(--dw-focus) 25%,transparent)}
.dw-input[aria-invalid="true"]{border-color:var(--dw-error)}
textarea.dw-input{min-height:120px;padding:var(--dw-space-3)}
select.dw-input{padding-right:var(--dw-space-8)}
.dw-error-text{visibility:hidden;min-height:1.5em;margin:var(--dw-space-1) 0 0;
  font-size:var(--dw-text-small);color:var(--dw-error)}
.dw-field:has([aria-invalid="true"]) .dw-error-text{visibility:visible}
.dw-check,.dw-switch{display:flex;align-items:center;gap:var(--dw-space-2);min-height:var(--dw-touch);cursor:pointer}
.dw-check input{width:18px;height:18px;accent-color:var(--dw-gold)}
.dw-switch input{position:absolute;opacity:0}
.dw-switch span{width:44px;height:24px;border-radius:var(--dw-radius-pill);background:var(--dw-border);
  position:relative;transition:background-color var(--dw-dur-2);flex:none}
.dw-switch span::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;
  background:var(--dw-surface);box-shadow:var(--dw-shadow-1);transition:left var(--dw-dur-2) var(--dw-ease-out)}
.dw-switch input:checked + span{background:var(--dw-gold)}
.dw-switch input:checked + span::after{left:22px}
.dw-switch input:focus-visible + span{outline:2px solid var(--dw-focus);outline-offset:2px}
/* 7. 表格 */
.dw-table-wrap{overflow-x:auto;border:1px solid var(--dw-border);border-radius:var(--dw-radius-lg);background:var(--dw-surface)}
.dw-table{width:100%;border-collapse:collapse;font-size:var(--dw-text-small)}
.dw-table th{text-align:left;font-weight:600;color:var(--dw-muted);padding:10px var(--dw-space-4);
  border-bottom:1px solid var(--dw-border);white-space:nowrap}
.dw-table td{padding:12px var(--dw-space-4);border-bottom:1px solid var(--dw-border)}
.dw-table tr:last-child td{border-bottom:none}
.dw-table tbody tr{transition:background-color var(--dw-dur-1)}
.dw-table tbody tr:hover{background:var(--dw-fill)}
/* 8. tabs */
.dw-tabs{display:inline-flex;gap:2px;padding:2px;background:var(--dw-fill);border-radius:var(--dw-radius-pill)}
.dw-tab{border:none;background:transparent;color:var(--dw-muted);cursor:pointer;
  min-height:36px;padding:0 var(--dw-space-4);border-radius:var(--dw-radius-pill);font-size:var(--dw-text-small);
  transition:color var(--dw-dur-1),background-color var(--dw-dur-1)}
.dw-tab[aria-selected="true"]{background:var(--dw-surface);color:var(--dw-text);box-shadow:var(--dw-shadow-1)}
/* 9. modal */
.dw-modal{border:1px solid var(--dw-border);border-radius:var(--dw-radius-xl);
  background:var(--dw-surface);color:var(--dw-text);box-shadow:var(--dw-shadow-3);
  padding:var(--dw-space-6);max-width:min(420px, calc(100vw - 32px))}
.dw-modal::backdrop{background:var(--dw-backdrop)}
/* 10. alert */
.dw-alert{display:flex;gap:var(--dw-space-2);align-items:flex-start;
  padding:var(--dw-space-3) var(--dw-space-4);border-radius:var(--dw-radius-md);
  border:1px solid;font-size:var(--dw-text-small);margin-bottom:var(--dw-space-3)}
.dw-alert--info{color:var(--dw-info);border-color:var(--dw-info);background:color-mix(in oklab,var(--dw-info) 8%,var(--dw-surface))}
.dw-alert--success{color:var(--dw-success);border-color:var(--dw-success);background:color-mix(in oklab,var(--dw-success) 8%,var(--dw-surface))}
.dw-alert--warning{color:var(--dw-warning);border-color:var(--dw-warning);background:color-mix(in oklab,var(--dw-warning) 8%,var(--dw-surface))}
.dw-alert--error{color:var(--dw-error);border-color:var(--dw-error);background:color-mix(in oklab,var(--dw-error) 8%,var(--dw-surface))}
/* 11. 空态/骨架 */
.dw-empty{text-align:center;padding:var(--dw-space-16) var(--dw-space-6)}
.dw-empty-icon{width:48px;height:48px;color:var(--dw-faint);margin:0 auto var(--dw-space-4)}
.dw-empty-title{font-size:var(--dw-text-h3);font-weight:600;margin:0 0 var(--dw-space-2)}
.dw-empty .dw-btn{margin-top:var(--dw-space-5)}
.dw-skeleton{height:1em;border-radius:var(--dw-radius-sm);
  background:linear-gradient(90deg,var(--dw-fill) 25%,var(--dw-border) 50%,var(--dw-fill) 75%);
  background-size:200% 100%;animation:dw-shimmer 1.4s linear infinite}
@keyframes dw-shimmer{to{background-position:-200% 0}}
@media(prefers-reduced-motion:reduce){.dw-skeleton{animation:none}}
/* 12. 页脚 */
.dw-footer{border-top:1px solid var(--dw-border);color:var(--dw-muted);
  font-size:var(--dw-text-small);text-align:center;
  padding:var(--dw-space-6) var(--dw-space-4);line-height:1.8}
.dw-footer a{color:var(--dw-muted)}

/* ═══ 页面级助手(patterns.md 配方配套;components.md §13) ═══ */
/* 容器二选一 */
.dw-container{max-width:var(--dw-container-grid);margin:0 auto;padding:0 var(--dw-space-4)}
.dw-container--read{max-width:var(--dw-container-read)}
@media(min-width:768px){.dw-container{padding:0 var(--dw-space-6)}}
/* 分节:纵向呼吸 + 可选发丝分隔带;只动纵轴,横向留白永远归容器 */
.dw-section{padding-block:var(--dw-section-gap)}
.dw-band{border-top:1px solid var(--dw-border)}
/* 节头:标题 + 一句说明(65ch 上限);eyebrow 至多每 3 节 1 个 */
.dw-section-head{margin:0 0 var(--dw-space-8)}
.dw-section-head h2{font-size:var(--dw-text-h2);margin:0 0 var(--dw-space-2)}
.dw-section-head p{color:var(--dw-muted);margin:0;max-width:65ch}
/* hero:左对齐,一屏内出 CTA;标题 display 档;副标 ≤20 字 */
.dw-hero{padding-top:clamp(40px,6vw,var(--dw-space-20));padding-bottom:var(--dw-section-gap)}
.dw-hero-title{font-family:var(--dw-font-display);font-size:var(--dw-text-display);
  line-height:1.25;margin:0 0 var(--dw-space-4)}
.dw-hero-sub{font-size:clamp(1rem,1.6vw,1.15rem);color:var(--dw-muted);margin:0 0 var(--dw-space-6);max-width:32em}
.dw-hero-cta{display:flex;gap:var(--dw-space-3);flex-direction:column}
@media(min-width:768px){.dw-hero-cta{flex-direction:row}}
/* 压图 hero(scrim 契约唯一合法路径):.dw-hero-media 裹图,文字走 on-media 令牌 */
.dw-hero-media{position:relative;border-radius:var(--dw-radius-xl);overflow:hidden}
.dw-hero-media > img,.dw-hero-media > .dw-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.dw-hero-media::before{content:"";position:absolute;inset:0;background:var(--dw-scrim)}
.dw-hero-media .dw-hero-cap{position:relative;padding:var(--dw-space-8);min-height:280px;
  display:flex;flex-direction:column;justify-content:flex-end}
.dw-hero-cap h1,.dw-hero-cap h2{color:var(--dw-on-media);margin:0 0 var(--dw-space-2);
  font-family:var(--dw-font-display);font-size:var(--dw-text-h1);line-height:1.3}
.dw-hero-cap p{color:var(--dw-on-media-soft);margin:0;max-width:32em}
/* 步骤列表(步骤名用动宾短语,不编号装饰) */
.dw-steps{list-style:none;margin:var(--dw-space-8) 0 0;padding:0;display:grid;gap:var(--dw-space-4);grid-template-columns:1fr}
@media(min-width:768px){.dw-steps{grid-template-columns:1fr 1fr}}
@media(min-width:1024px){.dw-steps{grid-template-columns:repeat(4,1fr)}}
.dw-steps > li{background:var(--dw-surface);border:1px solid var(--dw-border);
  border-radius:var(--dw-radius-lg);padding:var(--dw-space-5)}
.dw-steps .dw-step-name{font-weight:700;margin-bottom:var(--dw-space-1)}
.dw-steps .dw-step-name::before{content:counter(dw-step) ".";counter-increment:dw-step;
  color:var(--dw-gold-text);font-family:var(--dw-font-data);margin-right:var(--dw-space-2);font-weight:500}
.dw-steps{counter-reset:dw-step}
.dw-steps p{margin:0;font-size:var(--dw-text-small);color:var(--dw-muted)}
/* 文档排版(720 阅读容器内) */
.dw-prose h2{font-size:var(--dw-text-h2);margin:var(--dw-space-10) 0 var(--dw-space-3)}
.dw-prose h3{font-size:var(--dw-text-h3);margin:var(--dw-space-8) 0 var(--dw-space-2)}
.dw-prose p{margin:0 0 var(--dw-space-4);line-height:1.85}
.dw-prose ul{margin:0 0 var(--dw-space-4);padding-left:1.4em}
.dw-prose li{margin-bottom:var(--dw-space-1)}
.dw-prose a{color:var(--dw-gold-text)}
.dw-prose code{font-family:var(--dw-font-data);font-size:.9em;background:var(--dw-fill);
  padding:1px 6px;border-radius:var(--dw-radius-sm)}
.dw-prose pre{background:var(--dw-fill);border-radius:var(--dw-radius-md);
  padding:var(--dw-space-4);overflow-x:auto;font-family:var(--dw-font-data);font-size:var(--dw-text-small)}
.dw-prose pre code{background:none;padding:0}
/* 披露(手机端目录/FAQ;details 原生无 JS) */
.dw-details{border:1px solid var(--dw-border);border-radius:var(--dw-radius-md);background:var(--dw-surface)}
.dw-details summary{list-style:none;cursor:pointer;padding:var(--dw-space-3) var(--dw-space-4);
  min-height:var(--dw-touch);display:flex;align-items:center;font-weight:600}
.dw-details summary::-webkit-details-marker{display:none}
.dw-details summary::after{content:"+";margin-left:auto;color:var(--dw-muted);font-weight:400}
.dw-details[open] summary::after{content:"–"}
.dw-details > div{padding:0 var(--dw-space-4) var(--dw-space-4);color:var(--dw-muted);font-size:var(--dw-text-small)}
/* KPI 格(看板;进统一面板分格,不各自浮卡) */
.dw-kpi{display:grid;grid-template-columns:1fr 1fr}
@media(min-width:1024px){.dw-kpi{grid-template-columns:repeat(4,1fr)}}
.dw-kpi > div{padding:var(--dw-space-5)}
.dw-kpi .dw-kpi-num{font-family:var(--dw-font-data);font-size:1.6rem;font-weight:600}
.dw-kpi .dw-kpi-label{font-size:var(--dw-text-small);color:var(--dw-muted);margin-top:2px}
/* 选中行:左侧金条(box-shadow inset,不推布局) */
.dw-row--active{box-shadow:inset 2px 0 0 var(--dw-gold);background:var(--dw-fill)}
/* 危险区卡片 */
.dw-card--danger{border-color:var(--dw-error)}
/* 表单提交行(桌面右对齐,手机全宽堆叠) */
.dw-form-actions{display:flex;gap:var(--dw-space-3);justify-content:flex-end;flex-wrap:wrap}
@media(max-width:767px){.dw-form-actions .dw-btn{flex:1}}
/* 分隔行(「或」) */
.dw-divider{display:flex;align-items:center;gap:var(--dw-space-3);color:var(--dw-muted);
  font-size:var(--dw-text-small);margin:var(--dw-space-5) 0}
.dw-divider::before,.dw-divider::after{content:"";flex:1;border-top:1px solid var(--dw-border)}
