/* ============================================================
   themes.css — 东晟ERP 设计系统
   4 套配色方案 + 设计令牌 + 标准化组件
   阶段零：仅 CSS 变量，不覆盖现有 class
   ============================================================ */

/* ============================================================
   公共令牌（所有主题共享）
   ============================================================ */
:root {
  --font: -apple-system, BlinkMacSystemFont, "PingFang SC", "Segoe UI", Roboto, sans-serif;
  --mono: "SF Mono", Menlo, Consolas, monospace;

  /* 灰度阶梯 */
  --gray-50: #fafbfc; --gray-100: #f3f4f6; --gray-200: #e5e7eb; --gray-300: #d1d5db;
  --gray-400: #9ca3af; --gray-500: #6b7280; --gray-600: #4b5563; --gray-700: #374151; --gray-800: #1f2937; --gray-900: #111827;

  /* 文字 / 表面（组件引用，此前缺失导致静默失效） */
  --text-primary: #111827; --text-secondary: #4b5563; --text-tertiary: #6b7280;
  --bg-surface: #ffffff;
  --body-text: #1d1d1f;

  /* 头部 */
  --header-bg: rgba(255,255,255,.6);
  --header-border: rgba(0,0,0,.04);
  --header-title: #1d1d1f; --header-sub: #6e6e73;

  /* 表单 / 轨道 / 滚动条 */
  --input-bg: rgba(255,255,255,.6); --input-border: rgba(0,0,0,.06); --input-color: #1f2937;
  --link: #2563eb;
  --track-bg: rgba(0,0,0,.05);
  --chip-border: rgba(0,0,0,.06); --chip-border-active: rgba(0,0,0,.12);
  --scrollbar-thumb: rgba(0,0,0,.18);
  --focus-ring: rgba(13,148,136,.4);
  --btn-solid-primary-hover: #0b7a70;

  /* 深色页面（核重/分析）语义令牌：浅色主题取浅色值，E 暗夜取深色值 */
  --accent: #0d9488; --accent-2: #0f766e;
  --deep-text: var(--gray-800);   --deep-text-2: var(--gray-600); --deep-text-3: var(--gray-500);
  --deep-border: rgba(0,0,0,.08); --deep-border-strong: rgba(0,0,0,.16); --deep-border-soft: rgba(0,0,0,.06);
  --deep-surface: var(--card-bg); --deep-surface-2: rgba(0,0,0,.04); --deep-surface-3: rgba(0,0,0,.02);
  --deep-track: rgba(0,0,0,.05);   --deep-card: var(--card-bg);       --deep-glow: rgba(13,148,136,.12);
  --deep-head-bg: #ffffff;
  --particle: rgba(13,148,136,.30); --particle-glow: rgba(13,148,136,0);

  /* 表面 / 边框 / 彩色状态徽标（浅色取原值，E 暗色取深色半透明变体） */
  --surface-soft: #f9f9fb; --surface-hover: #f5f5f7; --border-soft: #e5e5ea; --border-strong: #d1d1d6; --border-faint: #f0f0f2;
  --chip-ok-bg: #e8f5e9;     --chip-ok-color: #2e7d32;
  --chip-info-bg: #e3f2fd;   --chip-info-color: #1565c0;
  --chip-warn-bg: #fff3e0;   --chip-warn-color: #e65100;
  --chip-danger-bg: #ffebee; --chip-danger-color: #c62828;
  --chip-yellow-bg: #fff8e1; --chip-yellow-color: #d97706;
  --info-box-bg: #f0f7ff;
  --banner-yellow-bg: #fef3c7; --banner-yellow-color: #d97706;
  color-scheme: light;

  /* 间距 · 4px 基准 */
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;
  --space-5: 20px; --space-6: 24px; --space-8: 32px; --space-10: 40px; --space-12: 48px;

  /* 圆角 */
  --radius-sm: 4px; --radius-md: 6px; --radius-lg: 8px; --radius-xl: 12px; --radius-2xl: 16px;

  /* 字号 */
  --text-xs: 11px; --text-sm: 13px; --text-base: 14px; --text-lg: 16px; --text-xl: 18px; --text-2xl: 24px;

  /* 字重 */
  --weight: 400; --weight-medium: 500; --weight-semibold: 600; --weight-bold: 700;
}

/* ============================================================
   方案 A · 薄荷冰（默认）
   ============================================================ */
:root, [data-theme="A"] {
  --theme-page-bg: linear-gradient(135deg, #f2fdf8 0%, #f0f9ff 30%, #f5fdf8 60%, #f8fdfa 100%);
  --glass-tint: rgba(200,245,240,.20);

  --glass-bg: rgba(255,255,255,.42);       --glass-bg-hover: rgba(255,255,255,.62);
  --glass-text: var(--gray-800);            --glass-border: rgba(255,255,255,.5);
  --glass-shadow: 0 1px 2px rgba(13,148,136,.03), 0 0 0 1px rgba(255,255,255,.55) inset;
  --glass-shadow-hover: 0 2px 8px rgba(13,148,136,.06), 0 0 0 1px rgba(255,255,255,.75) inset;

  --card-bg: rgba(255,255,255,.52);         --card-bg-hover: rgba(255,255,255,.68);
  --card-border: rgba(255,255,255,.55);
  --card-shadow: 0 1px 3px rgba(13,148,136,.03), 0 0 0 1px rgba(255,255,255,.35) inset;
  --card-shadow-hover: 0 4px 16px rgba(13,148,136,.05), 0 0 0 1px rgba(255,255,255,.55) inset;

  --btn-primary-color: #0f766e;
  --btn-primary-bg: rgba(13,148,136,.16);
  --btn-primary-border: rgba(13,148,136,.22);
  --btn-primary-bg-hover: rgba(13,148,136,.26);

  --btn-success-color: #047857;
  --btn-success-bg: rgba(5,150,105,.14);
  --btn-success-border: rgba(5,150,105,.20);
  --btn-success-bg-hover: rgba(5,150,105,.24);

  --btn-danger-color: #be123c;
  --btn-danger-bg: rgba(225,29,72,.12);
  --btn-danger-border: rgba(225,29,72,.18);
  --btn-danger-bg-hover: rgba(225,29,72,.20);

  --btn-warning-color: #b45309;
  --btn-warning-bg: rgba(217,119,6,.15);
  --btn-warning-border: rgba(217,119,6,.22);
  --btn-warning-bg-hover: rgba(217,119,6,.24);

  --btn-secondary-color: var(--gray-600);
  --btn-secondary-bg: rgba(107,114,128,.07);
  --btn-secondary-border: rgba(107,114,128,.13);
  --btn-secondary-bg-hover: rgba(107,114,128,.13);
  --btn-solid-primary: #0d9488;  --weight-accent: #0d9488;
  --accent: #0d9488; --accent-2: #0f766e; --focus-ring: rgba(13,148,136,.4); --btn-solid-primary-hover: #0b7a70;

  --badge-info-bg: rgba(59,130,246,.10);    --badge-info-color: #2563eb;
  --badge-success-bg: rgba(16,185,129,.10); --badge-success-color: #059669;
  --badge-warning-bg: rgba(245,158,11,.10); --badge-warning-color: #d97706;
  --badge-danger-bg: rgba(239,68,68,.10);   --badge-danger-color: #dc2626;
  --badge-neutral-bg: rgba(0,0,0,.04);      --badge-neutral-color: var(--gray-500);
}

/* ============================================================
   方案 B · 冰川蓝
   ============================================================ */
[data-theme="B"] {
  --theme-page-bg: linear-gradient(135deg, #f0f6ff 0%, #f4f2ff 30%, #f5f8ff 100%);
  --glass-tint: rgba(210,215,250,.18);

  --glass-bg: rgba(255,255,255,.42);        --glass-bg-hover: rgba(255,255,255,.62);
  --glass-text: var(--gray-800);            --glass-border: rgba(255,255,255,.5);
  --glass-shadow: 0 1px 2px rgba(79,70,229,.03), 0 0 0 1px rgba(255,255,255,.55) inset;
  --glass-shadow-hover: 0 2px 8px rgba(79,70,229,.06), 0 0 0 1px rgba(255,255,255,.75) inset;

  --card-bg: rgba(255,255,255,.52);         --card-bg-hover: rgba(255,255,255,.68);
  --card-border: rgba(255,255,255,.55);
  --card-shadow: 0 1px 3px rgba(79,70,229,.03), 0 0 0 1px rgba(255,255,255,.35) inset;
  --card-shadow-hover: 0 4px 16px rgba(79,70,229,.05), 0 0 0 1px rgba(255,255,255,.55) inset;

  --btn-primary-color: #3730a3;
  --btn-primary-bg: rgba(79,70,229,.16);
  --btn-primary-border: rgba(79,70,229,.22);
  --btn-primary-bg-hover: rgba(79,70,229,.26);

  --btn-success-color: #0e7490;
  --btn-success-bg: rgba(6,182,212,.14);
  --btn-success-border: rgba(6,182,212,.20);
  --btn-success-bg-hover: rgba(6,182,212,.24);

  --btn-danger-color: #be123c;
  --btn-danger-bg: rgba(244,63,94,.13);
  --btn-danger-border: rgba(244,63,94,.18);
  --btn-danger-bg-hover: rgba(244,63,94,.21);

  --btn-warning-color: #c2410c;
  --btn-warning-bg: rgba(234,88,12,.14);
  --btn-warning-border: rgba(234,88,12,.20);
  --btn-warning-bg-hover: rgba(234,88,12,.23);

  --btn-secondary-color: var(--gray-600);
  --btn-secondary-bg: rgba(100,116,139,.08);
  --btn-secondary-border: rgba(100,116,139,.13);
  --btn-secondary-bg-hover: rgba(100,116,139,.13);
  --btn-solid-primary: #4f5b9e;  --weight-accent: #4f5b9e;
  --accent: #4f5b9e; --accent-2: #3730a3; --focus-ring: rgba(79,70,229,.4); --btn-solid-primary-hover: #3d4781;

  --badge-info-bg: rgba(79,70,229,.10);     --badge-info-color: #4338ca;
  --badge-success-bg: rgba(6,182,212,.10);  --badge-success-color: #0e7490;
  --badge-warning-bg: rgba(234,88,12,.10);  --badge-warning-color: #c2410c;
  --badge-danger-bg: rgba(244,63,94,.10);   --badge-danger-color: #be123c;
  --badge-neutral-bg: rgba(0,0,0,.04);      --badge-neutral-color: var(--gray-500);
}

/* ============================================================
   方案 C · 暖金雾
   ============================================================ */
[data-theme="C"] {
  --theme-page-bg: linear-gradient(135deg, #fefcf5 0%, #fef7f0 30%, #fdfaf5 100%);
  --glass-tint: rgba(250,235,210,.20);

  --glass-bg: rgba(255,255,255,.40);        --glass-bg-hover: rgba(255,255,255,.60);
  --glass-text: var(--gray-800);            --glass-border: rgba(255,255,255,.5);
  --glass-shadow: 0 1px 2px rgba(180,120,60,.04), 0 0 0 1px rgba(255,255,255,.55) inset;
  --glass-shadow-hover: 0 2px 8px rgba(180,120,60,.06), 0 0 0 1px rgba(255,255,255,.75) inset;

  --card-bg: rgba(255,255,255,.50);         --card-bg-hover: rgba(255,255,255,.65);
  --card-border: rgba(255,255,255,.55);
  --card-shadow: 0 1px 3px rgba(180,120,60,.04), 0 0 0 1px rgba(255,255,255,.35) inset;
  --card-shadow-hover: 0 4px 16px rgba(180,120,60,.06), 0 0 0 1px rgba(255,255,255,.55) inset;

  --btn-primary-color: #92400e;
  --btn-primary-bg: rgba(217,119,6,.15);
  --btn-primary-border: rgba(217,119,6,.22);
  --btn-primary-bg-hover: rgba(217,119,6,.24);

  --btn-success-color: #047857;
  --btn-success-bg: rgba(16,185,129,.14);
  --btn-success-border: rgba(16,185,129,.20);
  --btn-success-bg-hover: rgba(16,185,129,.24);

  --btn-danger-color: #991b1b;
  --btn-danger-bg: rgba(220,38,38,.13);
  --btn-danger-border: rgba(220,38,38,.18);
  --btn-danger-bg-hover: rgba(220,38,38,.21);

  --btn-warning-color: #c2410c;
  --btn-warning-bg: rgba(234,88,12,.16);
  --btn-warning-border: rgba(234,88,12,.22);
  --btn-warning-bg-hover: rgba(234,88,12,.25);

  --btn-secondary-color: #78716c;
  --btn-secondary-bg: rgba(120,113,108,.08);
  --btn-secondary-border: rgba(120,113,108,.13);
  --btn-secondary-bg-hover: rgba(120,113,108,.13);
  --btn-solid-primary: #b45309;  --weight-accent: #b45309;
  --accent: #b45309; --accent-2: #92400e; --focus-ring: rgba(217,119,6,.4); --btn-solid-primary-hover: #92400e;

  --badge-info-bg: rgba(217,119,6,.10);     --badge-info-color: #92400e;
  --badge-success-bg: rgba(16,185,129,.10); --badge-success-color: #047857;
  --badge-warning-bg: rgba(234,88,12,.10);  --badge-warning-color: #c2410c;
  --badge-danger-bg: rgba(220,38,38,.10);   --badge-danger-color: #991b1b;
  --badge-neutral-bg: rgba(0,0,0,.04);      --badge-neutral-color: var(--gray-500);
}

/* ============================================================
   方案 D · 透白冰
   ============================================================ */
[data-theme="D"] {
  --theme-page-bg: linear-gradient(135deg, #fafbfc 0%, #f8f9fb 50%, #fafbfc 100%);
  --glass-tint: rgba(255,255,255,.25);

  --glass-bg: rgba(255,255,255,.35);        --glass-bg-hover: rgba(255,255,255,.55);
  --glass-text: var(--gray-800);            --glass-border: rgba(0,0,0,.04);
  --glass-shadow: 0 1px 2px rgba(0,0,0,.02), 0 0 0 1px rgba(0,0,0,.015) inset;
  --glass-shadow-hover: 0 2px 6px rgba(0,0,0,.04), 0 0 0 1px rgba(0,0,0,.03) inset;

  --card-bg: rgba(255,255,255,.45);         --card-bg-hover: rgba(255,255,255,.60);
  --card-border: rgba(0,0,0,.04);
  --card-shadow: 0 1px 2px rgba(0,0,0,.02), 0 0 0 1px rgba(0,0,0,.012) inset;
  --card-shadow-hover: 0 4px 12px rgba(0,0,0,.04), 0 0 0 1px rgba(0,0,0,.025) inset;

  --btn-primary-color: #2563eb;
  --btn-primary-bg: rgba(59,130,246,.08);
  --btn-primary-border: rgba(59,130,246,.14);
  --btn-primary-bg-hover: rgba(59,130,246,.15);

  --btn-success-color: #059669;
  --btn-success-bg: rgba(16,185,129,.07);
  --btn-success-border: rgba(16,185,129,.12);
  --btn-success-bg-hover: rgba(16,185,129,.14);

  --btn-danger-color: #dc2626;
  --btn-danger-bg: rgba(239,68,68,.06);
  --btn-danger-border: rgba(239,68,68,.10);
  --btn-danger-bg-hover: rgba(239,68,68,.12);

  --btn-warning-color: #d97706;
  --btn-warning-bg: rgba(245,158,11,.08);
  --btn-warning-border: rgba(245,158,11,.12);
  --btn-warning-bg-hover: rgba(245,158,11,.15);

  --btn-secondary-color: var(--gray-500);
  --btn-secondary-bg: rgba(107,114,128,.04);
  --btn-secondary-border: rgba(107,114,128,.08);
  --btn-secondary-bg-hover: rgba(107,114,128,.08);
  --btn-solid-primary: #5b7db5;  --weight-accent: #5b7db5;
  --accent: #5b7db5; --accent-2: #1d4ed8; --focus-ring: rgba(59,130,246,.4); --btn-solid-primary-hover: #4a679a;

  --badge-info-bg: rgba(59,130,246,.06);    --badge-info-color: #2563eb;
  --badge-success-bg: rgba(16,185,129,.06); --badge-success-color: #059669;
  --badge-warning-bg: rgba(245,158,11,.06); --badge-warning-color: #d97706;
  --badge-danger-bg: rgba(239,68,68,.06);   --badge-danger-color: #dc2626;
  --badge-neutral-bg: rgba(0,0,0,.03);      --badge-neutral-color: var(--gray-500);
}

/* ============================================================
   方案 E · 暗夜（核重/分析页深色设计语言提炼为全局主题）
   说明：E 下全站深色——卡片/面板/输入/文字全部走暗色令牌，
        核重/分析两页使用 --deep-* 令牌保持深色科技感。
   ============================================================ */
[data-theme="E"] {
  color-scheme: dark;
  --theme-page-bg: linear-gradient(180deg,#050914 0%,#0a0f1f 100%);
  --glass-tint: rgba(56,189,248,.08);

  --glass-bg: rgba(30,41,59,.72);          --glass-bg-hover: rgba(51,65,85,.85);
  --glass-text: #e2e8f0;                  --glass-border: rgba(255,255,255,.16);
  --glass-shadow: 0 1px 2px rgba(0,0,0,.45), 0 0 0 1px rgba(255,255,255,.05) inset;
  --glass-shadow-hover: 0 2px 12px rgba(0,0,0,.55), 0 0 0 1px rgba(56,189,248,.25) inset;

  --card-bg: rgba(15,23,42,.85);          --card-bg-hover: rgba(30,41,59,.94);
  --card-border: rgba(56,189,248,.14);
  --card-shadow: 0 1px 3px rgba(0,0,0,.4), 0 0 0 1px rgba(255,255,255,.03) inset;
  --card-shadow-hover: 0 4px 18px rgba(0,0,0,.55), 0 0 0 1px rgba(56,189,248,.2) inset;

  --btn-primary-color: #38bdf8;
  --btn-primary-bg: rgba(56,189,248,.10);
  --btn-primary-border: rgba(56,189,248,.24);
  --btn-primary-bg-hover: rgba(56,189,248,.18);

  --btn-success-color: #22c55e;
  --btn-success-bg: rgba(34,197,94,.10);
  --btn-success-border: rgba(34,197,94,.22);
  --btn-success-bg-hover: rgba(34,197,94,.18);

  --btn-danger-color: #f87171;
  --btn-danger-bg: rgba(248,113,113,.10);
  --btn-danger-border: rgba(248,113,113,.22);
  --btn-danger-bg-hover: rgba(248,113,113,.18);

  --btn-warning-color: #f59e0b;
  --btn-warning-bg: rgba(245,158,11,.10);
  --btn-warning-border: rgba(245,158,11,.22);
  --btn-warning-bg-hover: rgba(245,158,11,.18);

  --btn-secondary-color: #94a3b8;
  --btn-secondary-bg: rgba(148,163,184,.08);
  --btn-secondary-border: rgba(148,163,184,.15);
  --btn-secondary-bg-hover: rgba(148,163,184,.15);

  --btn-solid-primary: #0e7490;  --btn-solid-primary-hover: #0c7a92;  --weight-accent: #38bdf8;

  --badge-info-bg: rgba(56,189,248,.12);    --badge-info-color: #38bdf8;
  --badge-success-bg: rgba(34,197,94,.12);  --badge-success-color: #4ade80;
  --badge-warning-bg: rgba(245,158,11,.12); --badge-warning-color: #fbbf24;
  --badge-danger-bg: rgba(248,113,113,.12); --badge-danger-color: #f87171;
  --badge-neutral-bg: rgba(255,255,255,.06);--badge-neutral-color: #94a3b8;

  --text-primary: #e2e8f0; --text-secondary: #94a3b8; --text-tertiary: #75869d;
  --bg-surface: #0f1729;
  --body-text: #e2e8f0;
  --link: #3e8ef7;
  --header-bg: rgba(15,23,42,.78);
  --header-border: rgba(56,189,248,.12);
  --header-title: #e2e8f0; --header-sub: #94a3b8;

  --input-bg: rgba(255,255,255,.05); --input-border: rgba(255,255,255,.10); --input-color: #e2e8f0;
  --track-bg: rgba(255,255,255,.06);
  --chip-border: rgba(255,255,255,.14); --chip-border-active: rgba(56,189,248,.35);
  --scrollbar-thumb: rgba(56,189,248,.25);
  --focus-ring: rgba(56,189,248,.5);

  --accent: #38bdf8; --accent-2: #818cf8;
  --deep-text: #e2e8f0; --deep-text-2: #94a3b8; --deep-text-3: #75869d;
  --deep-border: rgba(56,189,248,.12); --deep-border-strong: rgba(56,189,248,.3); --deep-border-soft: rgba(255,255,255,.06);
  --deep-surface: #0f1319; --deep-surface-2: rgba(0,0,0,.25); --deep-surface-3: #0f1729;
  --deep-track: rgba(255,255,255,.05);
  --deep-card: linear-gradient(135deg,#0a0e1a 0%,#0f1729 50%,#0a0f1f 100%);
  --deep-glow: rgba(56,189,248,.15);
  --deep-head-bg: #0f1729;
  --particle: #38bdf8; --particle-glow: rgba(56,189,248,.5);

  --surface-soft: rgba(255,255,255,.04); --surface-hover: #1e293b; --border-soft: rgba(255,255,255,.08); --border-strong: rgba(255,255,255,.16); --border-faint: rgba(255,255,255,.07);
  --chip-ok-bg: rgba(34,197,94,.12);     --chip-ok-color: #4ade80;
  --chip-info-bg: rgba(56,189,248,.12);  --chip-info-color: #38bdf8;
  --chip-warn-bg: rgba(245,158,11,.12);  --chip-warn-color: #fbbf24;
  --chip-danger-bg: rgba(248,113,113,.12);--chip-danger-color: #f87171;
  --chip-yellow-bg: rgba(245,158,11,.10); --chip-yellow-color: #fbbf24;
  --info-box-bg: rgba(56,189,248,.06);
  --banner-yellow-bg: rgba(245,158,11,.10); --banner-yellow-color: #fbbf24;
}

/* ============================================================
   组件：Badge 标签
   ============================================================ */
.badge { display:inline-block; font-size:var(--text-xs); font-weight:var(--weight-medium); padding:1px 8px; border-radius:var(--radius-sm); line-height:1.4; white-space:nowrap; }
.badge-info    { background:var(--badge-info-bg);    color:var(--badge-info-color); }
.badge-success { background:var(--badge-success-bg); color:var(--badge-success-color); }
.badge-warning { background:var(--badge-warning-bg); color:var(--badge-warning-color); }
.badge-danger  { background:var(--badge-danger-bg);  color:var(--badge-danger-color); }
.badge-neutral { background:var(--badge-neutral-bg); color:var(--badge-neutral-color); }

/* ============================================================
   组件：空状态
   ============================================================ */
.empty-state { text-align:center; padding:var(--space-10) var(--space-4); color:var(--text-secondary); }
.empty-state .icon { font-size:36px; margin-bottom:var(--space-3); }
.empty-state .title { font-size:var(--text-sm); font-weight:var(--weight-medium); color:var(--text-secondary); margin-bottom:var(--space-1); }
.empty-state .desc { font-size:var(--text-xs); color:var(--text-tertiary); }
.empty-state .action { margin-top:var(--space-3); }

/* ============================================================
   组件：Tab 切换
   ============================================================ */
.tab-bar { display:inline-flex; gap:2px; background:var(--track-bg); border-radius:var(--radius-lg); padding:2px; }
.tab-btn { padding:6px 14px; border-radius:var(--radius-md); font-size:var(--text-sm); cursor:pointer; border:none; background:transparent; color:var(--text-secondary); font-family:var(--font); transition:background-color .15s, color .15s, box-shadow .15s; white-space:nowrap; }
.tab-btn.active { background:var(--bg-surface, #fff); color:var(--text-primary); font-weight:var(--weight-medium); box-shadow:0 1px 3px rgba(0,0,0,.06); }
.tab-btn:hover:not(.active) { color:var(--text-primary); }
.tab-btn:focus-visible, .chip:focus-visible { outline:2px solid var(--focus-ring); outline-offset:1px; }
.tab-sub .tab-btn { padding:4px 10px; font-size:var(--text-xs); }

/* ============================================================
   组件：Chips 筛选
   ============================================================ */
.chip { padding:4px 12px; border-radius:16px; font-size:var(--text-xs); cursor:pointer; border:1.5px solid var(--chip-border); background:transparent; color:var(--text-secondary); transition:background-color .15s, color .15s, border-color .15s; white-space:nowrap; font-family:var(--font); }
.chip.active { background:var(--bg-surface, #fff); color:var(--text-primary); border-color:var(--chip-border-active); font-weight:var(--weight-medium); box-shadow:0 1px 2px rgba(0,0,0,.04); }
.chip:hover:not(.active) { border-color:var(--chip-border-active); }

/* ============================================================
   组件：进度条
   ============================================================ */
.progress-bar { background:var(--card-bg); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); border:1px solid var(--card-border); border-radius:var(--radius-xl); padding:var(--space-4) var(--space-5); box-shadow:var(--card-shadow); margin-bottom:var(--space-5); display:none; }
.progress-bar.show { display:block; }
.progress-pct { font-size:var(--text-xl); font-weight:var(--weight-bold); text-align:center; margin-bottom:var(--space-1); }
.progress-text { font-size:var(--text-xs); color:var(--text-secondary); display:flex; justify-content:space-between; }
.progress-list { margin-top:var(--space-2); max-height:200px; overflow-y:auto; }
.progress-track { height:6px; background:var(--track-bg); border-radius:3px; overflow:hidden; }
.progress-fill { height:100%; border-radius:3px; transition:width .5s ease; background:var(--btn-primary-bg); }
.progress-info { display:flex; justify-content:space-between; font-size:var(--text-xs); color:var(--text-secondary); margin-top:var(--space-1); }

/* ============================================================
   组件：表格
   ============================================================ */
.table-wrap { background:var(--card-bg); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); border:1px solid var(--card-border); border-radius:var(--radius-xl); overflow:hidden; box-shadow:var(--card-shadow); }
.table-wrap table { width:100%; border-collapse:collapse; font-size:var(--text-sm); }
.table-wrap thead { background:var(--deep-surface-3); }
.table-wrap th { padding:var(--space-2) var(--space-3); font-weight:var(--weight-semibold); color:var(--text-secondary); font-size:var(--text-xs); border-bottom:1.5px solid var(--deep-border-soft); white-space:nowrap; }
.table-wrap th.td-right { text-align:right; }
.table-wrap th.td-center { text-align:center; }
.table-wrap th { text-align:left; }
.table-wrap td { padding:var(--space-2) var(--space-3); border-bottom:1px solid var(--deep-border-soft); vertical-align:middle; }
.table-wrap tr:last-child td { border-bottom:none; }
.table-wrap tr:hover td { background:var(--deep-surface-3); }

/* ============================================================
   组件：表单
   ============================================================ */
.form-group { margin-bottom:var(--space-3); }
.form-label { display:block; font-size:var(--text-xs); font-weight:var(--weight-medium); color:var(--text-secondary); margin-bottom:var(--space-1); }
.form-input, .form-select, .form-textarea { width:100%; padding:8px 12px; border:1.5px solid var(--input-border); border-radius:var(--radius-md); font-size:var(--text-sm); font-family:var(--font); background:var(--input-bg); color:var(--input-color); transition:border-color .15s; outline:none; }
.form-input:focus, .form-select:focus, .form-textarea:focus { border-color:var(--focus-ring); }
.form-textarea { min-height:80px; resize:vertical; line-height:var(--leading-normal, 1.5); }
.form-hint { font-size:var(--text-xs); color:var(--text-tertiary); margin-top:2px; }

/* ============================================================
   组件：卡片
   ============================================================ */
.card-glass { background:var(--card-bg); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); border:1px solid var(--card-border); box-shadow:var(--card-shadow); border-radius:var(--radius-xl); overflow:hidden; transition:all .2s; }
.card-glass:hover { background:var(--card-bg-hover); box-shadow:var(--card-shadow-hover); }

/* ============================================================
   组件：毛玻璃按钮
   ============================================================ */
.btn-glass { display:inline-flex; align-items:center; gap:4px; padding:8px 16px; border-radius:10px; font-size:var(--text-sm); font-weight:var(--weight-medium); border:1.5px solid var(--glass-border); cursor:pointer; font-family:var(--font); line-height:1.25; white-space:nowrap; backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); background:var(--glass-bg); color:var(--glass-text); box-shadow:var(--glass-shadow); transition:all .2s; }
.btn-glass:hover { background:var(--glass-bg-hover); box-shadow:var(--glass-shadow-hover); transform:translateY(-1px); }
.btn-glass:active { transform:translateY(0); }
.btn-glass:disabled { opacity:.35; cursor:not-allowed; transform:none; }
.btn-glass:disabled:hover { box-shadow:var(--glass-shadow); }
.btn-pri { color:var(--btn-primary-color); background:var(--btn-primary-bg); border-color:var(--btn-primary-border); }
.btn-pri:hover { background:var(--btn-primary-bg-hover); }
/* 玻璃实色主按钮：主题色毛玻璃底+深主题色字+主题色清晰边框（符合全局审美且随主题） */
.btn-strong { display:inline-flex; align-items:center; gap:5px; padding:7px 16px; border-radius:10px; font-size:12px; font-weight:var(--weight-semibold); font-family:var(--font); line-height:1.2; white-space:nowrap; cursor:pointer; border:1.5px solid color-mix(in srgb, var(--btn-primary-color) 75%, transparent); background:color-mix(in srgb, var(--btn-primary-color) 52%, var(--glass-bg)); color:var(--btn-primary-color); box-shadow:0 0 0 1px color-mix(in srgb, var(--btn-primary-color) 22%, transparent), 0 0 14px color-mix(in srgb, var(--btn-primary-color) 22%, transparent); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); transition:all .2s; }
.btn-strong:hover { background:color-mix(in srgb, var(--btn-primary-color) 62%, var(--glass-bg)); box-shadow:0 0 0 1px color-mix(in srgb, var(--btn-primary-color) 30%, transparent), 0 0 20px color-mix(in srgb, var(--btn-primary-color) 34%, transparent); transform:translateY(-1px); }
.btn-strong:active { transform:translateY(0); }
.btn-strong:disabled { opacity:.38; cursor:not-allowed; transform:none; box-shadow:none; }
/* 暗色主题：深底上青色字叠青色底会糊 → 白字 + 提高填充 */
[data-theme="E"] .btn-strong { color:#fff; background:color-mix(in srgb, var(--btn-primary-color) 58%, var(--glass-bg)); }
.btn-suc { color:var(--btn-success-color); background:var(--btn-success-bg); border-color:var(--btn-success-border); }
.btn-suc:hover { background:var(--btn-success-bg-hover); }
.btn-dan { color:var(--btn-danger-color); background:var(--btn-danger-bg); border-color:var(--btn-danger-border); }
.btn-dan:hover { background:var(--btn-danger-bg-hover); }
.btn-war { color:var(--btn-warning-color); background:var(--btn-warning-bg); border-color:var(--btn-warning-border); }
.btn-war:hover { background:var(--btn-warning-bg-hover); }
.btn-sec { color:var(--btn-secondary-color); background:var(--btn-secondary-bg); border-color:var(--btn-secondary-border); }
.btn-sec:hover { background:var(--btn-secondary-bg-hover); }
.btn-gho { color:var(--text-secondary); background:transparent; border-color:transparent; box-shadow:none; backdrop-filter:none; -webkit-backdrop-filter:none; }
.btn-gho:hover { background:var(--track-bg); border-color:var(--chip-border); box-shadow:0 0 0 1px rgba(255,255,255,.4) inset; backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); }
.btn-sm { padding:5px 12px; font-size:var(--text-xs); border-radius:8px; }
.btn-xs { padding:3px 8px; font-size:10px; border-radius:6px; }
.btn-solid { backdrop-filter:none; -webkit-backdrop-filter:none; font-weight:var(--weight-semibold); }
.btn-solid.btn-pri { background:var(--btn-solid-primary); color:#fff; border-color:var(--btn-solid-primary); }
.btn-solid.btn-pri:hover { background:var(--btn-solid-primary-hover); }
.btn-solid.btn-dan { background:#e11d48; color:#fff; border-color:#e11d48; }
.btn-solid.btn-dan:hover { background:#be123c; }
.btn-glass:focus-visible { outline:2px solid var(--focus-ring); outline-offset:1px; }

/* ============================================================
   组件：Toast 通知
   ============================================================ */
.toast-glass {
  position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%);
  padding: 10px 20px; border-radius: var(--radius-lg); font-size: var(--text-sm);
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  border: 1px solid; z-index: 1000; pointer-events: none;
  opacity: 0; transition: opacity .3s;
}
.toast-glass.show { opacity: 1; }
.toast-glass.toast-top { bottom: auto; top: 80px; }
.toast-glass.toast-ok  { background: rgba(16,185,129,.12); color: #059669; border-color: rgba(16,185,129,.20); }
.toast-glass.toast-err { background: rgba(239,68,68,.10); color: #dc2626; border-color: rgba(239,68,68,.18); }
.toast-glass.toast-inf { background: rgba(59,130,246,.10); color: #2563eb; border-color: rgba(59,130,246,.18); }

/* ============================================================
   主题切换圆点（header）
   ============================================================ */
.theme-dot { padding:4px; background-clip:content-box; border-radius:50%; cursor:pointer; transition:transform .15s; }
.theme-dot:hover { transform:scale(1.2); }
.theme-dot:focus-visible { outline:2px solid var(--focus-ring); outline-offset:2px; }

/* 列表行 hover（订单/刊登明细通用：主题色高亮，鼠标离开自动还原，无内联残留） */
.order-row { transition:background .15s; }
.order-row:hover { background:var(--surface-hover); }

/* ============================================================
   E 暗夜：其他页面的深底覆盖（混搭：深色底 + 浅色毛玻璃卡片）
   ============================================================ */
[data-theme="E"] .header { background:var(--header-bg); border-bottom-color:var(--header-border); }
[data-theme="E"] .header .nav a:hover { background:rgba(255,255,255,.08); }
[data-theme="E"] .page h2 { color:var(--deep-text); }

/* E 深色卡片内部元素适配（审核卡步骤条/进度轨/刊登步骤等） */
[data-theme="E"] .opt-progress { background:rgba(255,255,255,.08); }
[data-theme="E"] .opt-node i { background:rgba(255,255,255,.08); color:#94a3b8; }
[data-theme="E"] .opt-line { background:rgba(255,255,255,.1); }
[data-theme="E"] .ot-bar { background:rgba(255,255,255,.08); }
[data-theme="E"] .pub-step.wait { background:rgba(255,255,255,.04); }
[data-theme="E"] .market-group { background:rgba(255,255,255,.06); border-color:rgba(255,255,255,.1); }
[data-theme="E"] .echip { background:rgba(255,255,255,.06); border-color:rgba(255,255,255,.14); }

/* ============================================================
   滚动条：核重/分析两页统一走主题令牌
   ============================================================ */
#page-analysis ::-webkit-scrollbar, .wpage-task-log::-webkit-scrollbar, .wpage-results-zone::-webkit-scrollbar { width:6px; height:6px; }
#page-analysis ::-webkit-scrollbar-track, .wpage-task-log::-webkit-scrollbar-track, .wpage-results-zone::-webkit-scrollbar-track { background:transparent; }
#page-analysis ::-webkit-scrollbar-thumb, .wpage-task-log::-webkit-scrollbar-thumb, .wpage-results-zone::-webkit-scrollbar-thumb { background:var(--scrollbar-thumb); border-radius:3px; }
#page-analysis ::-webkit-scrollbar-thumb:hover, .wpage-task-log::-webkit-scrollbar-thumb:hover, .wpage-results-zone::-webkit-scrollbar-thumb:hover { background:var(--scrollbar-thumb); filter:brightness(1.4); }
