@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Noto+Sans+SC:wght@300;400;500;700&family=JetBrains+Mono:wght@400;500;600&display=swap');

[data-theme="dark"] {
    --bg-primary: #060b1a;
    --bg-secondary: #0a1128;
    --bg-tertiary: #0d1540;
    --bg-card: rgba(255, 255, 255, 0.035);
    --bg-card-solid: #0e1530;
    --bg-input: rgba(255, 255, 255, 0.06);
    --bg-input-focus: rgba(0, 212, 255, 0.04);
    --bg-hover: rgba(0, 212, 255, 0.04);
    --bg-selected: rgba(0, 212, 255, 0.06);

    --accent: #00d4ff;
    --accent-rgb: 0, 212, 255;
    --accent-secondary: #7b2cbf;
    --accent-secondary-rgb: 123, 44, 191;
    --accent-green: #43e97b;
    --accent-green-rgb: 67, 233, 123;
    --accent-gold: #f0c040;
    --accent-gold-rgb: 240, 192, 64;
    --accent-pink: #f093fb;
    --accent-red: #f5576c;
    --accent-red-rgb: 245, 87, 108;

    --text-bright: #ffffff;
    --text-primary: rgba(255, 255, 255, 0.85);
    --text-secondary: rgba(255, 255, 255, 0.55);
    --text-dim: rgba(255, 255, 255, 0.28);
    --text-placeholder: rgba(255, 255, 255, 0.3);

    --border-subtle: rgba(255, 255, 255, 0.06);
    --border-glow: rgba(0, 212, 255, 0.12);
    --border-input: rgba(255, 255, 255, 0.1);
    --border-input-focus: rgba(0, 212, 255, 0.4);
    --border-card: rgba(255, 255, 255, 0.06);
    --border-divider: rgba(255, 255, 255, 0.08);

    --shadow-card: 0 4px 20px rgba(0, 0, 0, 0.3);
    --shadow-card-hover: 0 12px 40px rgba(0, 0, 0, 0.3), 0 0 30px rgba(0, 212, 255, 0.06);
    --shadow-glow: 0 0 20px rgba(0, 212, 255, 0.15);
    --shadow-input-focus: 0 0 0 3px rgba(0, 212, 255, 0.1), 0 0 20px rgba(0, 212, 255, 0.05);
    --shadow-btn: 0 8px 30px rgba(0, 212, 255, 0.25), 0 4px 15px rgba(123, 44, 191, 0.2);

    --logo-gradient: linear-gradient(135deg, #00d4ff 0%, #7b2cbf 100%);
    --btn-gradient: linear-gradient(135deg, #00d4ff 0%, #7b2cbf 100%);
    --btn-gradient-hover: linear-gradient(135deg, #7b2cbf 0%, #00d4ff 100%);
    --header-gradient: linear-gradient(90deg, #060b1a 0%, #0a1128 50%, #0d1540 100%);
    --sidebar-gradient: linear-gradient(180deg, #060b1a 0%, #0a1128 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(0, 212, 255, 0.25), rgba(123, 44, 191, 0.15), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(0, 212, 255, 0.2), transparent 30%, transparent 70%, rgba(123, 44, 191, 0.15));
    --tab-header-gradient: linear-gradient(90deg, #080d1f, #0a1128);

    --scrollbar-thumb: rgba(0, 212, 255, 0.12);
    --scrollbar-thumb-hover: rgba(0, 212, 255, 0.25);
    --scrollbar-track: rgba(255, 255, 255, 0.02);

    --close-btn-bg: rgba(255, 255, 255, 0.06);
    --close-btn-border: rgba(255, 255, 255, 0.08);
    --close-btn-line: rgba(255, 255, 255, 0.4);
    --close-btn-hover-bg: rgba(239, 68, 68, 0.2);
    --close-btn-hover-border: rgba(239, 68, 68, 0.5);
    --close-btn-hover-line: #ff2d55;
    --close-btn-hover-shadow: 0 0 12px rgba(239, 68, 68, 0.25);
    --close-btn-selected-bg: rgba(0, 212, 255, 0.08);
    --close-btn-selected-border: rgba(0, 212, 255, 0.2);
    --close-btn-selected-line: rgba(0, 212, 255, 0.6);

    --dot-bg: #ff4757;
    --dot-border: #0a1128;
    --user-panel-gradient: linear-gradient(160deg, #111836 0%, #0d1333 100%);

    --particle-color: 0, 212, 255;

    --theme-switcher-bg: rgba(255, 255, 255, 0.04);
    --theme-switcher-border: rgba(255, 255, 255, 0.08);
    --theme-switcher-color: rgba(255, 255, 255, 0.5);
    --theme-switcher-hover-bg: rgba(0, 212, 255, 0.1);
    --theme-switcher-hover-border: rgba(0, 212, 255, 0.3);
    --theme-switcher-hover-color: #00d4ff;
}

[data-theme="light"] {
    --bg-primary: #f0f4fa;
    --bg-secondary: #ffffff;
    --bg-tertiary: #e8eef6;
    --bg-card: #ffffff;
    --bg-card-solid: #ffffff;
    --bg-input: #f1f5f9;
    --bg-input-focus: rgba(0, 150, 230, 0.04);
    --bg-hover: rgba(0, 150, 230, 0.04);
    --bg-selected: rgba(0, 150, 230, 0.06);

    --accent: #0096e6;
    --accent-rgb: 0, 150, 230;
    --accent-secondary: #7c3aed;
    --accent-secondary-rgb: 124, 58, 237;
    --accent-green: #059669;
    --accent-green-rgb: 5, 150, 105;
    --accent-gold: #d97706;
    --accent-gold-rgb: 217, 119, 6;
    --accent-pink: #a855f7;
    --accent-red: #dc2626;
    --accent-red-rgb: 220, 38, 38;

    --text-bright: #0f172a;
    --text-primary: #1a2332;
    --text-secondary: #5a6a7e;
    --text-dim: #94a3b8;
    --text-placeholder: #94a3b8;

    --border-subtle: rgba(0, 160, 230, 0.08);
    --border-glow: rgba(0, 150, 230, 0.15);
    --border-input: #e2e8f0;
    --border-input-focus: rgba(0, 150, 230, 0.4);
    --border-card: rgba(0, 160, 230, 0.1);
    --border-divider: rgba(0, 160, 230, 0.08);

    --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.04), 0 4px 12px rgba(0, 80, 160, 0.06);
    --shadow-card-hover: 0 8px 30px rgba(0, 80, 160, 0.1), 0 2px 8px rgba(0, 0, 0, 0.06);
    --shadow-glow: 0 0 20px rgba(0, 150, 230, 0.08);
    --shadow-input-focus: 0 0 0 3px rgba(0, 150, 230, 0.08), 0 0 16px rgba(0, 150, 230, 0.04);
    --shadow-btn: 0 4px 16px rgba(0, 150, 230, 0.2), 0 2px 6px rgba(124, 58, 237, 0.1);

    --logo-gradient: linear-gradient(135deg, #0096e6 0%, #7c3aed 100%);
    --btn-gradient: linear-gradient(135deg, #0096e6 0%, #7c3aed 100%);
    --btn-gradient-hover: linear-gradient(135deg, #7c3aed 0%, #0096e6 100%);
    --header-gradient: linear-gradient(90deg, #ffffff 0%, #f8fafc 50%, #f0f4fa 100%);
    --sidebar-gradient: linear-gradient(180deg, #f8fafc 0%, #f0f4fa 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(0, 150, 230, 0.2), rgba(124, 58, 237, 0.1), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(0, 150, 230, 0.15), transparent 30%, transparent 70%, rgba(124, 58, 237, 0.08));
    --tab-header-gradient: linear-gradient(90deg, #ffffff, #f8fafc);

    --scrollbar-thumb: rgba(0, 150, 230, 0.15);
    --scrollbar-thumb-hover: rgba(0, 150, 230, 0.3);
    --scrollbar-track: rgba(0, 0, 0, 0.02);

    --close-btn-bg: rgba(0, 0, 0, 0.04);
    --close-btn-border: rgba(0, 0, 0, 0.06);
    --close-btn-line: rgba(0, 0, 0, 0.3);
    --close-btn-hover-bg: rgba(220, 38, 38, 0.1);
    --close-btn-hover-border: rgba(220, 38, 38, 0.35);
    --close-btn-hover-line: #dc2626;
    --close-btn-hover-shadow: 0 0 10px rgba(220, 38, 38, 0.15);
    --close-btn-selected-bg: rgba(0, 150, 230, 0.08);
    --close-btn-selected-border: rgba(0, 150, 230, 0.2);
    --close-btn-selected-line: rgba(0, 150, 230, 0.7);

    --dot-bg: #dc2626;
    --dot-border: #ffffff;
    --user-panel-gradient: linear-gradient(160deg, #ffffff 0%, #f8fafc 100%);

    --particle-color: 0, 150, 230;

    --theme-switcher-bg: rgba(0, 0, 0, 0.03);
    --theme-switcher-border: rgba(0, 0, 0, 0.06);
    --theme-switcher-color: #5a6a7e;
    --theme-switcher-hover-bg: rgba(0, 150, 230, 0.08);
    --theme-switcher-hover-border: rgba(0, 150, 230, 0.25);
    --theme-switcher-hover-color: #0096e6;
}

[data-theme="silver"] {
    --bg-primary: #e2e8f0;
    --bg-secondary: #edf0f7;
    --bg-tertiary: #d5dbe6;
    --bg-card: #f5f7fb;
    --bg-card-solid: #f0f2f8;
    --bg-input: #dde3ee;
    --bg-input-focus: rgba(59, 130, 246, 0.05);
    --bg-hover: rgba(59, 130, 246, 0.05);
    --bg-selected: rgba(59, 130, 246, 0.07);

    --accent: #3b82f6;
    --accent-rgb: 59, 130, 246;
    --accent-secondary: #6366f1;
    --accent-secondary-rgb: 99, 102, 241;
    --accent-green: #0d9488;
    --accent-green-rgb: 13, 148, 136;
    --accent-gold: #ca8a04;
    --accent-gold-rgb: 202, 138, 4;
    --accent-pink: #9333ea;
    --accent-red: #be123c;
    --accent-red-rgb: 190, 18, 60;

    --text-bright: #0f172a;
    --text-primary: #1e293b;
    --text-secondary: #64748b;
    --text-dim: #94a3b8;
    --text-placeholder: #94a3b8;

    --border-subtle: #cbd5e1;
    --border-glow: rgba(59, 130, 246, 0.18);
    --border-input: #c7ced9;
    --border-input-focus: rgba(59, 130, 246, 0.45);
    --border-card: #c7ced9;
    --border-divider: #cbd5e1;

    --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.06), 0 4px 12px rgba(59, 130, 246, 0.06);
    --shadow-card-hover: 0 8px 30px rgba(59, 130, 246, 0.1), 0 2px 8px rgba(0, 0, 0, 0.08);
    --shadow-glow: 0 0 20px rgba(59, 130, 246, 0.1);
    --shadow-input-focus: 0 0 0 3px rgba(59, 130, 246, 0.1), 0 0 16px rgba(59, 130, 246, 0.05);
    --shadow-btn: 0 4px 16px rgba(59, 130, 246, 0.2), 0 2px 6px rgba(99, 102, 241, 0.1);

    --logo-gradient: linear-gradient(135deg, #3b82f6 0%, #6366f1 100%);
    --btn-gradient: linear-gradient(135deg, #3b82f6 0%, #6366f1 100%);
    --btn-gradient-hover: linear-gradient(135deg, #6366f1 0%, #3b82f6 100%);
    --header-gradient: linear-gradient(90deg, #e8ecf4 0%, #edf0f7 50%, #e2e8f0 100%);
    --sidebar-gradient: linear-gradient(180deg, #e8ecf4 0%, #dde3ee 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(59, 130, 246, 0.2), rgba(99, 102, 241, 0.12), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(59, 130, 246, 0.18), transparent 30%, transparent 70%, rgba(99, 102, 241, 0.1));
    --tab-header-gradient: linear-gradient(90deg, #e8ecf4, #edf0f7);

    --scrollbar-thumb: rgba(59, 130, 246, 0.18);
    --scrollbar-thumb-hover: rgba(59, 130, 246, 0.32);
    --scrollbar-track: rgba(0, 0, 0, 0.04);

    --close-btn-bg: rgba(0, 0, 0, 0.05);
    --close-btn-border: rgba(0, 0, 0, 0.08);
    --close-btn-line: rgba(0, 0, 0, 0.35);
    --close-btn-hover-bg: rgba(190, 18, 60, 0.1);
    --close-btn-hover-border: rgba(190, 18, 60, 0.35);
    --close-btn-hover-line: #be123c;
    --close-btn-hover-shadow: 0 0 10px rgba(190, 18, 60, 0.15);
    --close-btn-selected-bg: rgba(59, 130, 246, 0.08);
    --close-btn-selected-border: rgba(59, 130, 246, 0.22);
    --close-btn-selected-line: rgba(59, 130, 246, 0.7);

    --dot-bg: #be123c;
    --dot-border: #edf0f7;
    --user-panel-gradient: linear-gradient(160deg, #f5f7fb 0%, #edf0f7 100%);

    --particle-color: 59, 130, 246;

    --theme-switcher-bg: rgba(0, 0, 0, 0.04);
    --theme-switcher-border: #cbd5e1;
    --theme-switcher-color: #64748b;
    --theme-switcher-hover-bg: rgba(59, 130, 246, 0.08);
    --theme-switcher-hover-border: rgba(59, 130, 246, 0.25);
    --theme-switcher-hover-color: #3b82f6;
}

[data-theme="bright"] {
    --bg-primary: #ffffff;
    --bg-secondary: #f8fafc;
    --bg-tertiary: #f1f5f9;
    --bg-card: #ffffff;
    --bg-card-solid: #ffffff;
    --bg-input: #f1f5f9;
    --bg-input-focus: rgba(0, 102, 255, 0.04);
    --bg-hover: rgba(0, 102, 255, 0.05);
    --bg-selected: rgba(0, 102, 255, 0.08);

    --accent: #0066ff;
    --accent-rgb: 0, 102, 255;
    --accent-secondary: #5856d6;
    --accent-secondary-rgb: 88, 86, 214;
    --accent-green: #10b981;
    --accent-green-rgb: 16, 185, 129;
    --accent-gold: #f59e0b;
    --accent-gold-rgb: 245, 158, 11;
    --accent-pink: #ec4899;
    --accent-red: #ef4444;
    --accent-red-rgb: 239, 68, 68;

    --text-bright: #0f172a;
    --text-primary: #1e293b;
    --text-secondary: #475569;
    --text-dim: #94a3b8;
    --text-placeholder: #94a3b8;

    --border-subtle: #e2e8f0;
    --border-glow: rgba(0, 102, 255, 0.18);
    --border-input: #e2e8f0;
    --border-input-focus: rgba(0, 102, 255, 0.45);
    --border-card: #e2e8f0;
    --border-divider: #e2e8f0;

    --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.04), 0 2px 8px rgba(0, 0, 0, 0.04);
    --shadow-card-hover: 0 4px 16px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 102, 255, 0.08);
    --shadow-glow: 0 0 20px rgba(0, 102, 255, 0.1);
    --shadow-input-focus: 0 0 0 3px rgba(0, 102, 255, 0.1);
    --shadow-btn: 0 4px 16px rgba(0, 102, 255, 0.2), 0 2px 6px rgba(88, 86, 214, 0.1);

    --logo-gradient: linear-gradient(135deg, #0066ff 0%, #5856d6 100%);
    --btn-gradient: linear-gradient(135deg, #0066ff 0%, #5856d6 100%);
    --btn-gradient-hover: linear-gradient(135deg, #5856d6 0%, #0066ff 100%);
    --header-gradient: #ffffff;
    --sidebar-gradient: #f8fafc;
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(0, 102, 255, 0.15), rgba(88, 86, 214, 0.08), transparent);
    --sidebar-right-line: #e2e8f0;
    --tab-header-gradient: linear-gradient(90deg, #ffffff, #f8fafc);

    --scrollbar-thumb: #cbd5e1;
    --scrollbar-thumb-hover: #94a3b8;
    --scrollbar-track: transparent;

    --close-btn-bg: rgba(0, 0, 0, 0.04);
    --close-btn-border: rgba(0, 0, 0, 0.08);
    --close-btn-line: rgba(0, 0, 0, 0.3);
    --close-btn-hover-bg: rgba(239, 68, 68, 0.1);
    --close-btn-hover-border: rgba(239, 68, 68, 0.35);
    --close-btn-hover-line: #ef4444;
    --close-btn-hover-shadow: 0 0 10px rgba(239, 68, 68, 0.12);
    --close-btn-selected-bg: rgba(0, 102, 255, 0.08);
    --close-btn-selected-border: rgba(0, 102, 255, 0.2);
    --close-btn-selected-line: rgba(0, 102, 255, 0.7);

    --dot-bg: #ef4444;
    --dot-border: #ffffff;
    --user-panel-gradient: linear-gradient(160deg, #ffffff 0%, #f8fafc 100%);

    --particle-color: 0, 102, 255;

    --theme-switcher-bg: rgba(0, 0, 0, 0.03);
    --theme-switcher-border: #e2e8f0;
    --theme-switcher-color: #475569;
    --theme-switcher-hover-bg: rgba(0, 102, 255, 0.08);
    --theme-switcher-hover-border: rgba(0, 102, 255, 0.25);
    --theme-switcher-hover-color: #0066ff;
}

html {
    transition: background-color 0.4s ease;
}

.theme-switch-btn {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--theme-switcher-bg);
    border: 1px solid var(--theme-switcher-border);
    color: var(--theme-switcher-color);
    cursor: pointer;
    transition: all 0.3s ease;
    flex-shrink: 0;
}

.theme-switch-btn:hover {
    background: var(--theme-switcher-hover-bg);
    border-color: var(--theme-switcher-hover-border);
    color: var(--theme-switcher-hover-color);
    box-shadow: var(--shadow-glow);
}

.theme-switch-btn svg {
    width: 16px;
    height: 16px;
    transition: transform 0.4s ease;
}

.theme-switch-btn:hover svg {
    transform: rotate(30deg);
}

[data-theme="light"] .theme-switch-btn:hover svg {
    transform: rotate(-30deg);
}

[data-theme="silver"] .theme-switch-btn:hover svg {
    transform: rotate(30deg);
}

/* ============================================================
   扩展主题（深色系）
   ============================================================ */

/* —— midnight 深蓝夜空 —— */
[data-theme="midnight"] {
    --bg-primary: #0b1026;
    --bg-secondary: #111738;
    --bg-tertiary: #17204d;
    --bg-card: rgba(255, 255, 255, 0.035);
    --bg-card-solid: #121a3e;
    --bg-input: rgba(255, 255, 255, 0.06);
    --bg-input-focus: rgba(129, 140, 248, 0.04);
    --bg-hover: rgba(129, 140, 248, 0.05);
    --bg-selected: rgba(129, 140, 248, 0.07);

    --accent: #818cf8;
    --accent-rgb: 129, 140, 248;
    --accent-secondary: #9333ea;
    --accent-secondary-rgb: 147, 51, 234;
    --accent-green: #4ade80;
    --accent-green-rgb: 74, 222, 128;
    --accent-gold: #fbbf24;
    --accent-gold-rgb: 251, 191, 36;
    --accent-pink: #e879f9;
    --accent-red: #f87171;
    --accent-red-rgb: 248, 113, 113;

    --text-bright: #ffffff;
    --text-primary: rgba(255, 255, 255, 0.85);
    --text-secondary: rgba(255, 255, 255, 0.55);
    --text-dim: rgba(255, 255, 255, 0.28);
    --text-placeholder: rgba(255, 255, 255, 0.3);

    --border-subtle: rgba(255, 255, 255, 0.06);
    --border-glow: rgba(129, 140, 248, 0.14);
    --border-input: rgba(255, 255, 255, 0.1);
    --border-input-focus: rgba(129, 140, 248, 0.4);
    --border-card: rgba(255, 255, 255, 0.06);
    --border-divider: rgba(255, 255, 255, 0.08);

    --shadow-card: 0 4px 20px rgba(0, 0, 0, 0.3);
    --shadow-card-hover: 0 12px 40px rgba(0, 0, 0, 0.3), 0 0 30px rgba(129, 140, 248, 0.07);
    --shadow-glow: 0 0 20px rgba(129, 140, 248, 0.15);
    --shadow-input-focus: 0 0 0 3px rgba(129, 140, 248, 0.1), 0 0 20px rgba(129, 140, 248, 0.05);
    --shadow-btn: 0 8px 30px rgba(129, 140, 248, 0.25), 0 4px 15px rgba(147, 51, 234, 0.2);

    --logo-gradient: linear-gradient(135deg, #818cf8 0%, #c084fc 100%);
    --btn-gradient: linear-gradient(135deg, #818cf8 0%, #9333ea 100%);
    --btn-gradient-hover: linear-gradient(135deg, #9333ea 0%, #818cf8 100%);
    --header-gradient: linear-gradient(90deg, #0b1026 0%, #111738 50%, #17204d 100%);
    --sidebar-gradient: linear-gradient(180deg, #0b1026 0%, #111738 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(129, 140, 248, 0.25), rgba(147, 51, 234, 0.15), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(129, 140, 248, 0.2), transparent 30%, transparent 70%, rgba(147, 51, 234, 0.15));
    --tab-header-gradient: linear-gradient(90deg, #0d1330, #111738);

    --scrollbar-thumb: rgba(129, 140, 248, 0.12);
    --scrollbar-thumb-hover: rgba(129, 140, 248, 0.25);
    --scrollbar-track: rgba(255, 255, 255, 0.02);

    --close-btn-bg: rgba(255, 255, 255, 0.06);
    --close-btn-border: rgba(255, 255, 255, 0.08);
    --close-btn-line: rgba(255, 255, 255, 0.4);
    --close-btn-hover-bg: rgba(248, 113, 113, 0.2);
    --close-btn-hover-border: rgba(248, 113, 113, 0.5);
    --close-btn-hover-line: #f87171;
    --close-btn-hover-shadow: 0 0 12px rgba(248, 113, 113, 0.25);
    --close-btn-selected-bg: rgba(129, 140, 248, 0.08);
    --close-btn-selected-border: rgba(129, 140, 248, 0.2);
    --close-btn-selected-line: rgba(129, 140, 248, 0.6);

    --dot-bg: #f87171;
    --dot-border: #111738;
    --user-panel-gradient: linear-gradient(160deg, #161d40 0%, #101634 100%);

    --particle-color: 129, 140, 248;

    --theme-switcher-bg: rgba(255, 255, 255, 0.04);
    --theme-switcher-border: rgba(255, 255, 255, 0.08);
    --theme-switcher-color: rgba(255, 255, 255, 0.5);
    --theme-switcher-hover-bg: rgba(129, 140, 248, 0.1);
    --theme-switcher-hover-border: rgba(129, 140, 248, 0.3);
    --theme-switcher-hover-color: #818cf8;
}

/* —— forest 翡翠森林 —— */
[data-theme="forest"] {
    --bg-primary: #07130d;
    --bg-secondary: #0a1c13;
    --bg-tertiary: #0e2a1b;
    --bg-card: rgba(255, 255, 255, 0.035);
    --bg-card-solid: #0b2015;
    --bg-input: rgba(255, 255, 255, 0.06);
    --bg-input-focus: rgba(52, 211, 153, 0.04);
    --bg-hover: rgba(52, 211, 153, 0.05);
    --bg-selected: rgba(52, 211, 153, 0.07);

    --accent: #34d399;
    --accent-rgb: 52, 211, 153;
    --accent-secondary: #14b8a6;
    --accent-secondary-rgb: 20, 184, 166;
    --accent-green: #4ade80;
    --accent-green-rgb: 74, 222, 128;
    --accent-gold: #facc15;
    --accent-gold-rgb: 250, 204, 21;
    --accent-pink: #f472b6;
    --accent-red: #f87171;
    --accent-red-rgb: 248, 113, 113;

    --text-bright: #ffffff;
    --text-primary: rgba(255, 255, 255, 0.85);
    --text-secondary: rgba(255, 255, 255, 0.55);
    --text-dim: rgba(255, 255, 255, 0.28);
    --text-placeholder: rgba(255, 255, 255, 0.3);

    --border-subtle: rgba(255, 255, 255, 0.06);
    --border-glow: rgba(52, 211, 153, 0.14);
    --border-input: rgba(255, 255, 255, 0.1);
    --border-input-focus: rgba(52, 211, 153, 0.4);
    --border-card: rgba(255, 255, 255, 0.06);
    --border-divider: rgba(255, 255, 255, 0.08);

    --shadow-card: 0 4px 20px rgba(0, 0, 0, 0.3);
    --shadow-card-hover: 0 12px 40px rgba(0, 0, 0, 0.3), 0 0 30px rgba(52, 211, 153, 0.07);
    --shadow-glow: 0 0 20px rgba(52, 211, 153, 0.15);
    --shadow-input-focus: 0 0 0 3px rgba(52, 211, 153, 0.1), 0 0 20px rgba(52, 211, 153, 0.05);
    --shadow-btn: 0 8px 30px rgba(52, 211, 153, 0.25), 0 4px 15px rgba(20, 184, 166, 0.2);

    --logo-gradient: linear-gradient(135deg, #34d399 0%, #14b8a6 100%);
    --btn-gradient: linear-gradient(135deg, #34d399 0%, #14b8a6 100%);
    --btn-gradient-hover: linear-gradient(135deg, #14b8a6 0%, #34d399 100%);
    --header-gradient: linear-gradient(90deg, #07130d 0%, #0a1c13 50%, #0e2a1b 100%);
    --sidebar-gradient: linear-gradient(180deg, #07130d 0%, #0a1c13 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(52, 211, 153, 0.25), rgba(20, 184, 166, 0.15), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(52, 211, 153, 0.2), transparent 30%, transparent 70%, rgba(20, 184, 166, 0.15));
    --tab-header-gradient: linear-gradient(90deg, #08160f, #0a1c13);

    --scrollbar-thumb: rgba(52, 211, 153, 0.12);
    --scrollbar-thumb-hover: rgba(52, 211, 153, 0.25);
    --scrollbar-track: rgba(255, 255, 255, 0.02);

    --close-btn-bg: rgba(255, 255, 255, 0.06);
    --close-btn-border: rgba(255, 255, 255, 0.08);
    --close-btn-line: rgba(255, 255, 255, 0.4);
    --close-btn-hover-bg: rgba(248, 113, 113, 0.2);
    --close-btn-hover-border: rgba(248, 113, 113, 0.5);
    --close-btn-hover-line: #f87171;
    --close-btn-hover-shadow: 0 0 12px rgba(248, 113, 113, 0.25);
    --close-btn-selected-bg: rgba(52, 211, 153, 0.08);
    --close-btn-selected-border: rgba(52, 211, 153, 0.2);
    --close-btn-selected-line: rgba(52, 211, 153, 0.6);

    --dot-bg: #f87171;
    --dot-border: #0a1c13;
    --user-panel-gradient: linear-gradient(160deg, #0f2317 0%, #0b1c12 100%);

    --particle-color: 52, 211, 153;

    --theme-switcher-bg: rgba(255, 255, 255, 0.04);
    --theme-switcher-border: rgba(255, 255, 255, 0.08);
    --theme-switcher-color: rgba(255, 255, 255, 0.5);
    --theme-switcher-hover-bg: rgba(52, 211, 153, 0.1);
    --theme-switcher-hover-border: rgba(52, 211, 153, 0.3);
    --theme-switcher-hover-color: #34d399;
}

/* —— sunset 落日暖阳 —— */
[data-theme="sunset"] {
    --bg-primary: #1a0e08;
    --bg-secondary: #241409;
    --bg-tertiary: #331c0d;
    --bg-card: rgba(255, 255, 255, 0.035);
    --bg-card-solid: #241409;
    --bg-input: rgba(255, 255, 255, 0.06);
    --bg-input-focus: rgba(251, 146, 60, 0.04);
    --bg-hover: rgba(251, 146, 60, 0.05);
    --bg-selected: rgba(251, 146, 60, 0.07);

    --accent: #fb923c;
    --accent-rgb: 251, 146, 60;
    --accent-secondary: #f43f5e;
    --accent-secondary-rgb: 244, 63, 94;
    --accent-green: #a3e635;
    --accent-green-rgb: 163, 230, 53;
    --accent-gold: #fbbf24;
    --accent-gold-rgb: 251, 191, 36;
    --accent-pink: #f9a8d4;
    --accent-red: #ef4444;
    --accent-red-rgb: 239, 68, 68;

    --text-bright: #ffffff;
    --text-primary: rgba(255, 255, 255, 0.85);
    --text-secondary: rgba(255, 255, 255, 0.55);
    --text-dim: rgba(255, 255, 255, 0.28);
    --text-placeholder: rgba(255, 255, 255, 0.3);

    --border-subtle: rgba(255, 255, 255, 0.06);
    --border-glow: rgba(251, 146, 60, 0.14);
    --border-input: rgba(255, 255, 255, 0.1);
    --border-input-focus: rgba(251, 146, 60, 0.4);
    --border-card: rgba(255, 255, 255, 0.06);
    --border-divider: rgba(255, 255, 255, 0.08);

    --shadow-card: 0 4px 20px rgba(0, 0, 0, 0.3);
    --shadow-card-hover: 0 12px 40px rgba(0, 0, 0, 0.3), 0 0 30px rgba(251, 146, 60, 0.07);
    --shadow-glow: 0 0 20px rgba(251, 146, 60, 0.15);
    --shadow-input-focus: 0 0 0 3px rgba(251, 146, 60, 0.1), 0 0 20px rgba(251, 146, 60, 0.05);
    --shadow-btn: 0 8px 30px rgba(251, 146, 60, 0.25), 0 4px 15px rgba(244, 63, 94, 0.2);

    --logo-gradient: linear-gradient(135deg, #fb923c 0%, #f43f5e 100%);
    --btn-gradient: linear-gradient(135deg, #fb923c 0%, #f43f5e 100%);
    --btn-gradient-hover: linear-gradient(135deg, #f43f5e 0%, #fb923c 100%);
    --header-gradient: linear-gradient(90deg, #1a0e08 0%, #241409 50%, #331c0d 100%);
    --sidebar-gradient: linear-gradient(180deg, #1a0e08 0%, #241409 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(251, 146, 60, 0.25), rgba(244, 63, 94, 0.15), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(251, 146, 60, 0.2), transparent 30%, transparent 70%, rgba(244, 63, 94, 0.15));
    --tab-header-gradient: linear-gradient(90deg, #1c1009, #241409);

    --scrollbar-thumb: rgba(251, 146, 60, 0.12);
    --scrollbar-thumb-hover: rgba(251, 146, 60, 0.25);
    --scrollbar-track: rgba(255, 255, 255, 0.02);

    --close-btn-bg: rgba(255, 255, 255, 0.06);
    --close-btn-border: rgba(255, 255, 255, 0.08);
    --close-btn-line: rgba(255, 255, 255, 0.4);
    --close-btn-hover-bg: rgba(239, 68, 68, 0.2);
    --close-btn-hover-border: rgba(239, 68, 68, 0.5);
    --close-btn-hover-line: #ef4444;
    --close-btn-hover-shadow: 0 0 12px rgba(239, 68, 68, 0.25);
    --close-btn-selected-bg: rgba(251, 146, 60, 0.08);
    --close-btn-selected-border: rgba(251, 146, 60, 0.2);
    --close-btn-selected-line: rgba(251, 146, 60, 0.6);

    --dot-bg: #ef4444;
    --dot-border: #241409;
    --user-panel-gradient: linear-gradient(160deg, #2a1710 0%, #1f100a 100%);

    --particle-color: 251, 146, 60;

    --theme-switcher-bg: rgba(255, 255, 255, 0.04);
    --theme-switcher-border: rgba(255, 255, 255, 0.08);
    --theme-switcher-color: rgba(255, 255, 255, 0.5);
    --theme-switcher-hover-bg: rgba(251, 146, 60, 0.1);
    --theme-switcher-hover-border: rgba(251, 146, 60, 0.3);
    --theme-switcher-hover-color: #fb923c;
}

/* ============================================================
   扩展主题（浅色系）
   ============================================================ */

/* —— ocean 海风天青 —— */
[data-theme="ocean"] {
    --bg-primary: #eef7fa;
    --bg-secondary: #ffffff;
    --bg-tertiary: #e2f0f5;
    --bg-card: #ffffff;
    --bg-card-solid: #ffffff;
    --bg-input: #f0f7fa;
    --bg-input-focus: rgba(8, 145, 178, 0.04);
    --bg-hover: rgba(8, 145, 178, 0.04);
    --bg-selected: rgba(8, 145, 178, 0.06);

    --accent: #0891b2;
    --accent-rgb: 8, 145, 178;
    --accent-secondary: #7c3aed;
    --accent-secondary-rgb: 124, 58, 237;
    --accent-green: #059669;
    --accent-green-rgb: 5, 150, 105;
    --accent-gold: #d97706;
    --accent-gold-rgb: 217, 119, 6;
    --accent-pink: #db2777;
    --accent-red: #dc2626;
    --accent-red-rgb: 220, 38, 38;

    --text-bright: #0f172a;
    --text-primary: #1a2332;
    --text-secondary: #5a6a7e;
    --text-dim: #94a3b8;
    --text-placeholder: #94a3b8;

    --border-subtle: rgba(8, 145, 178, 0.1);
    --border-glow: rgba(8, 145, 178, 0.15);
    --border-input: #d5e7ee;
    --border-input-focus: rgba(8, 145, 178, 0.4);
    --border-card: rgba(8, 145, 178, 0.12);
    --border-divider: rgba(8, 145, 178, 0.1);

    --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.04), 0 4px 12px rgba(8, 100, 130, 0.06);
    --shadow-card-hover: 0 8px 30px rgba(8, 100, 130, 0.1), 0 2px 8px rgba(0, 0, 0, 0.06);
    --shadow-glow: 0 0 20px rgba(8, 145, 178, 0.08);
    --shadow-input-focus: 0 0 0 3px rgba(8, 145, 178, 0.08), 0 0 16px rgba(8, 145, 178, 0.04);
    --shadow-btn: 0 4px 16px rgba(8, 145, 178, 0.2), 0 2px 6px rgba(124, 58, 237, 0.1);

    --logo-gradient: linear-gradient(135deg, #0891b2 0%, #7c3aed 100%);
    --btn-gradient: linear-gradient(135deg, #0891b2 0%, #7c3aed 100%);
    --btn-gradient-hover: linear-gradient(135deg, #7c3aed 0%, #0891b2 100%);
    --header-gradient: linear-gradient(90deg, #ffffff 0%, #f8fcfd 50%, #eef7fa 100%);
    --sidebar-gradient: linear-gradient(180deg, #f8fcfd 0%, #eef7fa 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(8, 145, 178, 0.2), rgba(124, 58, 237, 0.1), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(8, 145, 178, 0.15), transparent 30%, transparent 70%, rgba(124, 58, 237, 0.08));
    --tab-header-gradient: linear-gradient(90deg, #ffffff, #f8fcfd);

    --scrollbar-thumb: rgba(8, 145, 178, 0.15);
    --scrollbar-thumb-hover: rgba(8, 145, 178, 0.3);
    --scrollbar-track: rgba(0, 0, 0, 0.02);

    --close-btn-bg: rgba(0, 0, 0, 0.04);
    --close-btn-border: rgba(0, 0, 0, 0.06);
    --close-btn-line: rgba(0, 0, 0, 0.3);
    --close-btn-hover-bg: rgba(220, 38, 38, 0.1);
    --close-btn-hover-border: rgba(220, 38, 38, 0.35);
    --close-btn-hover-line: #dc2626;
    --close-btn-hover-shadow: 0 0 10px rgba(220, 38, 38, 0.15);
    --close-btn-selected-bg: rgba(8, 145, 178, 0.08);
    --close-btn-selected-border: rgba(8, 145, 178, 0.2);
    --close-btn-selected-line: rgba(8, 145, 178, 0.7);

    --dot-bg: #dc2626;
    --dot-border: #ffffff;
    --user-panel-gradient: linear-gradient(160deg, #ffffff 0%, #f8fcfd 100%);

    --particle-color: 8, 145, 178;

    --theme-switcher-bg: rgba(0, 0, 0, 0.03);
    --theme-switcher-border: rgba(0, 0, 0, 0.06);
    --theme-switcher-color: #5a6a7e;
    --theme-switcher-hover-bg: rgba(8, 145, 178, 0.08);
    --theme-switcher-hover-border: rgba(8, 145, 178, 0.25);
    --theme-switcher-hover-color: #0891b2;
}

/* —— rose 玫瑰优雅 —— */
[data-theme="rose"] {
    --bg-primary: #fdf2f5;
    --bg-secondary: #ffffff;
    --bg-tertiary: #f9e8ed;
    --bg-card: #ffffff;
    --bg-card-solid: #ffffff;
    --bg-input: #faf3f6;
    --bg-input-focus: rgba(225, 29, 72, 0.04);
    --bg-hover: rgba(225, 29, 72, 0.04);
    --bg-selected: rgba(225, 29, 72, 0.06);

    --accent: #e11d48;
    --accent-rgb: 225, 29, 72;
    --accent-secondary: #9333ea;
    --accent-secondary-rgb: 147, 51, 234;
    --accent-green: #059669;
    --accent-green-rgb: 5, 150, 105;
    --accent-gold: #d97706;
    --accent-gold-rgb: 217, 119, 6;
    --accent-pink: #ec4899;
    --accent-red: #dc2626;
    --accent-red-rgb: 220, 38, 38;

    --text-bright: #0f172a;
    --text-primary: #1a2332;
    --text-secondary: #5a6a7e;
    --text-dim: #94a3b8;
    --text-placeholder: #94a3b8;

    --border-subtle: rgba(225, 29, 72, 0.08);
    --border-glow: rgba(225, 29, 72, 0.15);
    --border-input: #f2dbe2;
    --border-input-focus: rgba(225, 29, 72, 0.4);
    --border-card: rgba(225, 29, 72, 0.1);
    --border-divider: rgba(225, 29, 72, 0.08);

    --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.04), 0 4px 12px rgba(160, 30, 70, 0.06);
    --shadow-card-hover: 0 8px 30px rgba(160, 30, 70, 0.1), 0 2px 8px rgba(0, 0, 0, 0.06);
    --shadow-glow: 0 0 20px rgba(225, 29, 72, 0.08);
    --shadow-input-focus: 0 0 0 3px rgba(225, 29, 72, 0.08), 0 0 16px rgba(225, 29, 72, 0.04);
    --shadow-btn: 0 4px 16px rgba(225, 29, 72, 0.2), 0 2px 6px rgba(147, 51, 234, 0.1);

    --logo-gradient: linear-gradient(135deg, #e11d48 0%, #9333ea 100%);
    --btn-gradient: linear-gradient(135deg, #e11d48 0%, #9333ea 100%);
    --btn-gradient-hover: linear-gradient(135deg, #9333ea 0%, #e11d48 100%);
    --header-gradient: linear-gradient(90deg, #ffffff 0%, #fef7f9 50%, #fdf2f5 100%);
    --sidebar-gradient: linear-gradient(180deg, #fef7f9 0%, #fdf2f5 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(225, 29, 72, 0.18), rgba(147, 51, 234, 0.1), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(225, 29, 72, 0.15), transparent 30%, transparent 70%, rgba(147, 51, 234, 0.08));
    --tab-header-gradient: linear-gradient(90deg, #ffffff, #fef7f9);

    --scrollbar-thumb: rgba(225, 29, 72, 0.15);
    --scrollbar-thumb-hover: rgba(225, 29, 72, 0.3);
    --scrollbar-track: rgba(0, 0, 0, 0.02);

    --close-btn-bg: rgba(0, 0, 0, 0.04);
    --close-btn-border: rgba(0, 0, 0, 0.06);
    --close-btn-line: rgba(0, 0, 0, 0.3);
    --close-btn-hover-bg: rgba(220, 38, 38, 0.1);
    --close-btn-hover-border: rgba(220, 38, 38, 0.35);
    --close-btn-hover-line: #dc2626;
    --close-btn-hover-shadow: 0 0 10px rgba(220, 38, 38, 0.15);
    --close-btn-selected-bg: rgba(225, 29, 72, 0.08);
    --close-btn-selected-border: rgba(225, 29, 72, 0.2);
    --close-btn-selected-line: rgba(225, 29, 72, 0.7);

    --dot-bg: #dc2626;
    --dot-border: #ffffff;
    --user-panel-gradient: linear-gradient(160deg, #ffffff 0%, #fef7f9 100%);

    --particle-color: 225, 29, 72;

    --theme-switcher-bg: rgba(0, 0, 0, 0.03);
    --theme-switcher-border: rgba(0, 0, 0, 0.06);
    --theme-switcher-color: #5a6a7e;
    --theme-switcher-hover-bg: rgba(225, 29, 72, 0.08);
    --theme-switcher-hover-border: rgba(225, 29, 72, 0.25);
    --theme-switcher-hover-color: #e11d48;
}

/* —— plain 极简黑白 —— */
[data-theme="plain"] {
    --bg-primary: #f5f5f5;
    --bg-secondary: #ffffff;
    --bg-tertiary: #ebebeb;
    --bg-card: #ffffff;
    --bg-card-solid: #ffffff;
    --bg-input: #f5f5f5;
    --bg-input-focus: rgba(23, 23, 23, 0.03);
    --bg-hover: rgba(23, 23, 23, 0.04);
    --bg-selected: rgba(23, 23, 23, 0.06);

    --accent: #171717;
    --accent-rgb: 23, 23, 23;
    --accent-secondary: #525252;
    --accent-secondary-rgb: 82, 82, 82;
    --accent-green: #16a34a;
    --accent-green-rgb: 22, 163, 74;
    --accent-gold: #ca8a04;
    --accent-gold-rgb: 202, 138, 4;
    --accent-pink: #db2777;
    --accent-red: #dc2626;
    --accent-red-rgb: 220, 38, 38;

    --text-bright: #0a0a0a;
    --text-primary: #171717;
    --text-secondary: #525252;
    --text-dim: #a3a3a3;
    --text-placeholder: #a3a3a3;

    --border-subtle: #e5e5e5;
    --border-glow: rgba(23, 23, 23, 0.12);
    --border-input: #d4d4d4;
    --border-input-focus: rgba(23, 23, 23, 0.45);
    --border-card: #e5e5e5;
    --border-divider: #e5e5e5;

    --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.05), 0 4px 12px rgba(0, 0, 0, 0.04);
    --shadow-card-hover: 0 8px 30px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.06);
    --shadow-glow: 0 0 20px rgba(23, 23, 23, 0.06);
    --shadow-input-focus: 0 0 0 3px rgba(23, 23, 23, 0.06);
    --shadow-btn: 0 4px 16px rgba(23, 23, 23, 0.15), 0 2px 6px rgba(82, 82, 82, 0.1);

    --logo-gradient: linear-gradient(135deg, #171717 0%, #525252 100%);
    --btn-gradient: linear-gradient(135deg, #171717 0%, #525252 100%);
    --btn-gradient-hover: linear-gradient(135deg, #525252 0%, #171717 100%);
    --header-gradient: linear-gradient(90deg, #ffffff 0%, #fafafa 50%, #f5f5f5 100%);
    --sidebar-gradient: linear-gradient(180deg, #fafafa 0%, #f0f0f0 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(23, 23, 23, 0.12), rgba(82, 82, 82, 0.08), transparent);
    --sidebar-right-line: #e5e5e5;
    --tab-header-gradient: linear-gradient(90deg, #ffffff, #fafafa);

    --scrollbar-thumb: #d4d4d4;
    --scrollbar-thumb-hover: #a3a3a3;
    --scrollbar-track: transparent;

    --close-btn-bg: rgba(0, 0, 0, 0.04);
    --close-btn-border: rgba(0, 0, 0, 0.08);
    --close-btn-line: rgba(0, 0, 0, 0.3);
    --close-btn-hover-bg: rgba(220, 38, 38, 0.1);
    --close-btn-hover-border: rgba(220, 38, 38, 0.35);
    --close-btn-hover-line: #dc2626;
    --close-btn-hover-shadow: 0 0 10px rgba(220, 38, 38, 0.15);
    --close-btn-selected-bg: rgba(23, 23, 23, 0.06);
    --close-btn-selected-border: rgba(23, 23, 23, 0.18);
    --close-btn-selected-line: rgba(23, 23, 23, 0.6);

    --dot-bg: #dc2626;
    --dot-border: #ffffff;
    --user-panel-gradient: linear-gradient(160deg, #ffffff 0%, #fafafa 100%);

    --particle-color: 23, 23, 23;

    --theme-switcher-bg: rgba(0, 0, 0, 0.03);
    --theme-switcher-border: #e5e5e5;
    --theme-switcher-color: #525252;
    --theme-switcher-hover-bg: rgba(23, 23, 23, 0.06);
    --theme-switcher-hover-border: rgba(23, 23, 23, 0.2);
    --theme-switcher-hover-color: #171717;
}

/* —— violet 紫罗兰雅致（参考 sp_proc_doc 文档库：紫渐变头部 + 白卡片浅灰底） —— */
[data-theme="violet"] {
    --bg-primary: #f0f2f5;
    --bg-secondary: #ffffff;
    --bg-tertiary: #e8ebf4;
    --bg-card: #ffffff;
    --bg-card-solid: #ffffff;
    --bg-input: #f5f6fb;
    --bg-input-focus: rgba(102, 126, 234, 0.04);
    --bg-hover: rgba(102, 126, 234, 0.05);
    --bg-selected: rgba(102, 126, 234, 0.08);

    --accent: #667eea;
    --accent-rgb: 102, 126, 234;
    --accent-secondary: #764ba2;
    --accent-secondary-rgb: 118, 75, 162;
    --accent-green: #10b981;
    --accent-green-rgb: 16, 185, 129;
    --accent-gold: #f59e0b;
    --accent-gold-rgb: 245, 158, 11;
    --accent-pink: #a78bfa;
    --accent-red: #ef4444;
    --accent-red-rgb: 239, 68, 68;

    --text-bright: #1e1b4b;
    --text-primary: #312e5e;
    --text-secondary: #6b7194;
    --text-dim: #a5abcc;
    --text-placeholder: #a5abcc;

    --border-subtle: rgba(102, 126, 234, 0.1);
    --border-glow: rgba(102, 126, 234, 0.18);
    --border-input: #dde1f0;
    --border-input-focus: rgba(102, 126, 234, 0.45);
    --border-card: rgba(102, 126, 234, 0.12);
    --border-divider: rgba(102, 126, 234, 0.1);

    --shadow-card: 0 2px 8px rgba(102, 126, 234, 0.08);
    --shadow-card-hover: 0 8px 30px rgba(102, 126, 234, 0.14), 0 2px 8px rgba(0, 0, 0, 0.05);
    --shadow-glow: 0 0 20px rgba(102, 126, 234, 0.12);
    --shadow-input-focus: 0 0 0 3px rgba(102, 126, 234, 0.1), 0 0 16px rgba(102, 126, 234, 0.05);
    --shadow-btn: 0 4px 16px rgba(102, 126, 234, 0.3), 0 2px 6px rgba(118, 75, 162, 0.2);

    --logo-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    --btn-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    --btn-gradient-hover: linear-gradient(135deg, #764ba2 0%, #667eea 100%);
    --header-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    --sidebar-gradient: linear-gradient(180deg, #ffffff 0%, #f0f2f5 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.35), rgba(255, 255, 255, 0.15), transparent);
    --sidebar-right-line: rgba(102, 126, 234, 0.12);
    --tab-header-gradient: linear-gradient(90deg, #ffffff, #f7f8fc);

    --scrollbar-thumb: rgba(102, 126, 234, 0.2);
    --scrollbar-thumb-hover: rgba(102, 126, 234, 0.35);
    --scrollbar-track: rgba(0, 0, 0, 0.02);

    --close-btn-bg: rgba(0, 0, 0, 0.04);
    --close-btn-border: rgba(0, 0, 0, 0.06);
    --close-btn-line: rgba(0, 0, 0, 0.3);
    --close-btn-hover-bg: rgba(239, 68, 68, 0.1);
    --close-btn-hover-border: rgba(239, 68, 68, 0.35);
    --close-btn-hover-line: #ef4444;
    --close-btn-hover-shadow: 0 0 10px rgba(239, 68, 68, 0.15);
    --close-btn-selected-bg: rgba(102, 126, 234, 0.08);
    --close-btn-selected-border: rgba(102, 126, 234, 0.2);
    --close-btn-selected-line: rgba(102, 126, 234, 0.7);

    --dot-bg: #ef4444;
    --dot-border: #764ba2;
    --user-panel-gradient: linear-gradient(160deg, #ffffff 0%, #f7f8fc 100%);

    --particle-color: 102, 126, 234;

    --theme-switcher-bg: rgba(255, 255, 255, 0.12);
    --theme-switcher-border: rgba(255, 255, 255, 0.2);
    --theme-switcher-color: rgba(255, 255, 255, 0.75);
    --theme-switcher-hover-bg: rgba(255, 255, 255, 0.2);
    --theme-switcher-hover-border: rgba(255, 255, 255, 0.35);
    --theme-switcher-hover-color: #ffffff;
}

/* —— aurora 极光幻影（深色：青蓝底 + 青紫渐变） —— */
[data-theme="aurora"] {
    --bg-primary: #03141f;
    --bg-secondary: #052030;
    --bg-tertiary: #082c42;
    --bg-card: rgba(255, 255, 255, 0.035);
    --bg-card-solid: #062136;
    --bg-input: rgba(255, 255, 255, 0.06);
    --bg-input-focus: rgba(34, 211, 238, 0.04);
    --bg-hover: rgba(34, 211, 238, 0.05);
    --bg-selected: rgba(34, 211, 238, 0.07);

    --accent: #22d3ee;
    --accent-rgb: 34, 211, 238;
    --accent-secondary: #a855f7;
    --accent-secondary-rgb: 168, 85, 247;
    --accent-green: #34d399;
    --accent-green-rgb: 52, 211, 153;
    --accent-gold: #fbbf24;
    --accent-gold-rgb: 251, 191, 36;
    --accent-pink: #f0abfc;
    --accent-red: #f87171;
    --accent-red-rgb: 248, 113, 113;

    --text-bright: #ffffff;
    --text-primary: rgba(255, 255, 255, 0.85);
    --text-secondary: rgba(255, 255, 255, 0.55);
    --text-dim: rgba(255, 255, 255, 0.28);
    --text-placeholder: rgba(255, 255, 255, 0.3);

    --border-subtle: rgba(255, 255, 255, 0.06);
    --border-glow: rgba(34, 211, 238, 0.14);
    --border-input: rgba(255, 255, 255, 0.1);
    --border-input-focus: rgba(34, 211, 238, 0.4);
    --border-card: rgba(255, 255, 255, 0.06);
    --border-divider: rgba(255, 255, 255, 0.08);

    --shadow-card: 0 4px 20px rgba(0, 0, 0, 0.3);
    --shadow-card-hover: 0 12px 40px rgba(0, 0, 0, 0.3), 0 0 30px rgba(34, 211, 238, 0.07);
    --shadow-glow: 0 0 20px rgba(34, 211, 238, 0.15);
    --shadow-input-focus: 0 0 0 3px rgba(34, 211, 238, 0.1), 0 0 20px rgba(34, 211, 238, 0.05);
    --shadow-btn: 0 8px 30px rgba(34, 211, 238, 0.25), 0 4px 15px rgba(168, 85, 247, 0.2);

    --logo-gradient: linear-gradient(135deg, #22d3ee 0%, #a855f7 100%);
    --btn-gradient: linear-gradient(135deg, #22d3ee 0%, #a855f7 100%);
    --btn-gradient-hover: linear-gradient(135deg, #a855f7 0%, #22d3ee 100%);
    --header-gradient: linear-gradient(90deg, #03141f 0%, #052030 50%, #082c42 100%);
    --sidebar-gradient: linear-gradient(180deg, #03141f 0%, #052030 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(34, 211, 238, 0.25), rgba(168, 85, 247, 0.15), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(34, 211, 238, 0.2), transparent 30%, transparent 70%, rgba(168, 85, 247, 0.15));
    --tab-header-gradient: linear-gradient(90deg, #041827, #052030);

    --scrollbar-thumb: rgba(34, 211, 238, 0.12);
    --scrollbar-thumb-hover: rgba(34, 211, 238, 0.25);
    --scrollbar-track: rgba(255, 255, 255, 0.02);

    --close-btn-bg: rgba(255, 255, 255, 0.06);
    --close-btn-border: rgba(255, 255, 255, 0.08);
    --close-btn-line: rgba(255, 255, 255, 0.4);
    --close-btn-hover-bg: rgba(248, 113, 113, 0.2);
    --close-btn-hover-border: rgba(248, 113, 113, 0.5);
    --close-btn-hover-line: #f87171;
    --close-btn-hover-shadow: 0 0 12px rgba(248, 113, 113, 0.25);
    --close-btn-selected-bg: rgba(34, 211, 238, 0.08);
    --close-btn-selected-border: rgba(34, 211, 238, 0.2);
    --close-btn-selected-line: rgba(34, 211, 238, 0.6);

    --dot-bg: #f87171;
    --dot-border: #052030;
    --user-panel-gradient: linear-gradient(160deg, #0a2438 0%, #061a2b 100%);

    --particle-color: 34, 211, 238;

    --theme-switcher-bg: rgba(255, 255, 255, 0.04);
    --theme-switcher-border: rgba(255, 255, 255, 0.08);
    --theme-switcher-color: rgba(255, 255, 255, 0.5);
    --theme-switcher-hover-bg: rgba(34, 211, 238, 0.1);
    --theme-switcher-hover-border: rgba(34, 211, 238, 0.3);
    --theme-switcher-hover-color: #22d3ee;
}

/* —— wine 酒红夜幕（深色：酒红底 + 玫红紫渐变） —— */
[data-theme="wine"] {
    --bg-primary: #160409;
    --bg-secondary: #210710;
    --bg-tertiary: #2f0c19;
    --bg-card: rgba(255, 255, 255, 0.035);
    --bg-card-solid: #230812;
    --bg-input: rgba(255, 255, 255, 0.06);
    --bg-input-focus: rgba(251, 113, 133, 0.04);
    --bg-hover: rgba(251, 113, 133, 0.05);
    --bg-selected: rgba(251, 113, 133, 0.07);

    --accent: #fb7185;
    --accent-rgb: 251, 113, 133;
    --accent-secondary: #a855f7;
    --accent-secondary-rgb: 168, 85, 247;
    --accent-green: #4ade80;
    --accent-green-rgb: 74, 222, 128;
    --accent-gold: #fbbf24;
    --accent-gold-rgb: 251, 191, 36;
    --accent-pink: #f9a8d4;
    --accent-red: #ef4444;
    --accent-red-rgb: 239, 68, 68;

    --text-bright: #ffffff;
    --text-primary: rgba(255, 255, 255, 0.85);
    --text-secondary: rgba(255, 255, 255, 0.55);
    --text-dim: rgba(255, 255, 255, 0.28);
    --text-placeholder: rgba(255, 255, 255, 0.3);

    --border-subtle: rgba(255, 255, 255, 0.06);
    --border-glow: rgba(251, 113, 133, 0.14);
    --border-input: rgba(255, 255, 255, 0.1);
    --border-input-focus: rgba(251, 113, 133, 0.4);
    --border-card: rgba(255, 255, 255, 0.06);
    --border-divider: rgba(255, 255, 255, 0.08);

    --shadow-card: 0 4px 20px rgba(0, 0, 0, 0.3);
    --shadow-card-hover: 0 12px 40px rgba(0, 0, 0, 0.3), 0 0 30px rgba(251, 113, 133, 0.07);
    --shadow-glow: 0 0 20px rgba(251, 113, 133, 0.15);
    --shadow-input-focus: 0 0 0 3px rgba(251, 113, 133, 0.1), 0 0 20px rgba(251, 113, 133, 0.05);
    --shadow-btn: 0 8px 30px rgba(251, 113, 133, 0.25), 0 4px 15px rgba(168, 85, 247, 0.2);

    --logo-gradient: linear-gradient(135deg, #fb7185 0%, #a855f7 100%);
    --btn-gradient: linear-gradient(135deg, #fb7185 0%, #a855f7 100%);
    --btn-gradient-hover: linear-gradient(135deg, #a855f7 0%, #fb7185 100%);
    --header-gradient: linear-gradient(90deg, #160409 0%, #210710 50%, #2f0c19 100%);
    --sidebar-gradient: linear-gradient(180deg, #160409 0%, #210710 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(251, 113, 133, 0.25), rgba(168, 85, 247, 0.15), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(251, 113, 133, 0.2), transparent 30%, transparent 70%, rgba(168, 85, 247, 0.15));
    --tab-header-gradient: linear-gradient(90deg, #1a050c, #210710);

    --scrollbar-thumb: rgba(251, 113, 133, 0.12);
    --scrollbar-thumb-hover: rgba(251, 113, 133, 0.25);
    --scrollbar-track: rgba(255, 255, 255, 0.02);

    --close-btn-bg: rgba(255, 255, 255, 0.06);
    --close-btn-border: rgba(255, 255, 255, 0.08);
    --close-btn-line: rgba(255, 255, 255, 0.4);
    --close-btn-hover-bg: rgba(239, 68, 68, 0.2);
    --close-btn-hover-border: rgba(239, 68, 68, 0.5);
    --close-btn-hover-line: #ef4444;
    --close-btn-hover-shadow: 0 0 12px rgba(239, 68, 68, 0.25);
    --close-btn-selected-bg: rgba(251, 113, 133, 0.08);
    --close-btn-selected-border: rgba(251, 113, 133, 0.2);
    --close-btn-selected-line: rgba(251, 113, 133, 0.6);

    --dot-bg: #ef4444;
    --dot-border: #210710;
    --user-panel-gradient: linear-gradient(160deg, #2a0d18 0%, #1d0810 100%);

    --particle-color: 251, 113, 133;

    --theme-switcher-bg: rgba(255, 255, 255, 0.04);
    --theme-switcher-border: rgba(255, 255, 255, 0.08);
    --theme-switcher-color: rgba(255, 255, 255, 0.5);
    --theme-switcher-hover-bg: rgba(251, 113, 133, 0.1);
    --theme-switcher-hover-border: rgba(251, 113, 133, 0.3);
    --theme-switcher-hover-color: #fb7185;
}

/* —— coffee 咖啡摩卡（深色：棕咖底 + 焦糖金渐变） —— */
[data-theme="coffee"] {
    --bg-primary: #120c07;
    --bg-secondary: #1c130b;
    --bg-tertiary: #291c10;
    --bg-card: rgba(255, 255, 255, 0.035);
    --bg-card-solid: #1e1409;
    --bg-input: rgba(255, 255, 255, 0.06);
    --bg-input-focus: rgba(214, 163, 92, 0.04);
    --bg-hover: rgba(214, 163, 92, 0.05);
    --bg-selected: rgba(214, 163, 92, 0.07);

    --accent: #d6a35c;
    --accent-rgb: 214, 163, 92;
    --accent-secondary: #b45309;
    --accent-secondary-rgb: 180, 83, 9;
    --accent-green: #6ee7b7;
    --accent-green-rgb: 110, 231, 183;
    --accent-gold: #fbbf24;
    --accent-gold-rgb: 251, 191, 36;
    --accent-pink: #f0c987;
    --accent-red: #ef4444;
    --accent-red-rgb: 239, 68, 68;

    --text-bright: #ffffff;
    --text-primary: rgba(255, 255, 255, 0.85);
    --text-secondary: rgba(255, 255, 255, 0.55);
    --text-dim: rgba(255, 255, 255, 0.28);
    --text-placeholder: rgba(255, 255, 255, 0.3);

    --border-subtle: rgba(255, 255, 255, 0.06);
    --border-glow: rgba(214, 163, 92, 0.14);
    --border-input: rgba(255, 255, 255, 0.1);
    --border-input-focus: rgba(214, 163, 92, 0.4);
    --border-card: rgba(255, 255, 255, 0.06);
    --border-divider: rgba(255, 255, 255, 0.08);

    --shadow-card: 0 4px 20px rgba(0, 0, 0, 0.3);
    --shadow-card-hover: 0 12px 40px rgba(0, 0, 0, 0.3), 0 0 30px rgba(214, 163, 92, 0.07);
    --shadow-glow: 0 0 20px rgba(214, 163, 92, 0.15);
    --shadow-input-focus: 0 0 0 3px rgba(214, 163, 92, 0.1), 0 0 20px rgba(214, 163, 92, 0.05);
    --shadow-btn: 0 8px 30px rgba(214, 163, 92, 0.25), 0 4px 15px rgba(180, 83, 9, 0.2);

    --logo-gradient: linear-gradient(135deg, #d6a35c 0%, #b45309 100%);
    --btn-gradient: linear-gradient(135deg, #d6a35c 0%, #b45309 100%);
    --btn-gradient-hover: linear-gradient(135deg, #b45309 0%, #d6a35c 100%);
    --header-gradient: linear-gradient(90deg, #120c07 0%, #1c130b 50%, #291c10 100%);
    --sidebar-gradient: linear-gradient(180deg, #120c07 0%, #1c130b 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(214, 163, 92, 0.25), rgba(180, 83, 9, 0.15), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(214, 163, 92, 0.2), transparent 30%, transparent 70%, rgba(180, 83, 9, 0.15));
    --tab-header-gradient: linear-gradient(90deg, #150e07, #1c130b);

    --scrollbar-thumb: rgba(214, 163, 92, 0.12);
    --scrollbar-thumb-hover: rgba(214, 163, 92, 0.25);
    --scrollbar-track: rgba(255, 255, 255, 0.02);

    --close-btn-bg: rgba(255, 255, 255, 0.06);
    --close-btn-border: rgba(255, 255, 255, 0.08);
    --close-btn-line: rgba(255, 255, 255, 0.4);
    --close-btn-hover-bg: rgba(239, 68, 68, 0.2);
    --close-btn-hover-border: rgba(239, 68, 68, 0.5);
    --close-btn-hover-line: #ef4444;
    --close-btn-hover-shadow: 0 0 12px rgba(239, 68, 68, 0.25);
    --close-btn-selected-bg: rgba(214, 163, 92, 0.08);
    --close-btn-selected-border: rgba(214, 163, 92, 0.2);
    --close-btn-selected-line: rgba(214, 163, 92, 0.6);

    --dot-bg: #ef4444;
    --dot-border: #1c130b;
    --user-panel-gradient: linear-gradient(160deg, #241708 0%, #191005 100%);

    --particle-color: 214, 163, 92;

    --theme-switcher-bg: rgba(255, 255, 255, 0.04);
    --theme-switcher-border: rgba(255, 255, 255, 0.08);
    --theme-switcher-color: rgba(255, 255, 255, 0.5);
    --theme-switcher-hover-bg: rgba(214, 163, 92, 0.1);
    --theme-switcher-hover-border: rgba(214, 163, 92, 0.3);
    --theme-switcher-hover-color: #d6a35c;
}

/* —— mint 薄荷苏打（浅色：薄荷白底 + 翡翠绿） —— */
[data-theme="mint"] {
    --bg-primary: #edf9f2;
    --bg-secondary: #ffffff;
    --bg-tertiary: #dff3e8;
    --bg-card: #ffffff;
    --bg-card-solid: #ffffff;
    --bg-input: #eff8f3;
    --bg-input-focus: rgba(16, 185, 129, 0.05);
    --bg-hover: rgba(16, 185, 129, 0.05);
    --bg-selected: rgba(16, 185, 129, 0.07);

    --accent: #10b981;
    --accent-rgb: 16, 185, 129;
    --accent-secondary: #0d9488;
    --accent-secondary-rgb: 13, 148, 136;
    --accent-green: #059669;
    --accent-green-rgb: 5, 150, 105;
    --accent-gold: #d97706;
    --accent-gold-rgb: 217, 119, 6;
    --accent-pink: #db2777;
    --accent-red: #dc2626;
    --accent-red-rgb: 220, 38, 38;

    --text-bright: #0f172a;
    --text-primary: #1a2332;
    --text-secondary: #5a6a7e;
    --text-dim: #94a3b8;
    --text-placeholder: #94a3b8;

    --border-subtle: rgba(16, 185, 129, 0.12);
    --border-glow: rgba(16, 185, 129, 0.18);
    --border-input: #d3e8dd;
    --border-input-focus: rgba(16, 185, 129, 0.45);
    --border-card: rgba(16, 185, 129, 0.14);
    --border-divider: rgba(16, 185, 129, 0.12);

    --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.04), 0 4px 12px rgba(6, 110, 80, 0.06);
    --shadow-card-hover: 0 8px 30px rgba(6, 110, 80, 0.1), 0 2px 8px rgba(0, 0, 0, 0.06);
    --shadow-glow: 0 0 20px rgba(16, 185, 129, 0.1);
    --shadow-input-focus: 0 0 0 3px rgba(16, 185, 129, 0.1), 0 0 16px rgba(16, 185, 129, 0.05);
    --shadow-btn: 0 4px 16px rgba(16, 185, 129, 0.22), 0 2px 6px rgba(13, 148, 136, 0.12);

    --logo-gradient: linear-gradient(135deg, #10b981 0%, #0d9488 100%);
    --btn-gradient: linear-gradient(135deg, #10b981 0%, #0d9488 100%);
    --btn-gradient-hover: linear-gradient(135deg, #0d9488 0%, #10b981 100%);
    --header-gradient: linear-gradient(90deg, #ffffff 0%, #f7fcf9 50%, #edf9f2 100%);
    --sidebar-gradient: linear-gradient(180deg, #f7fcf9 0%, #edf9f2 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(16, 185, 129, 0.22), rgba(13, 148, 136, 0.12), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(16, 185, 129, 0.16), transparent 30%, transparent 70%, rgba(13, 148, 136, 0.1));
    --tab-header-gradient: linear-gradient(90deg, #ffffff, #f7fcf9);

    --scrollbar-thumb: rgba(16, 185, 129, 0.18);
    --scrollbar-thumb-hover: rgba(16, 185, 129, 0.32);
    --scrollbar-track: rgba(0, 0, 0, 0.02);

    --close-btn-bg: rgba(0, 0, 0, 0.04);
    --close-btn-border: rgba(0, 0, 0, 0.06);
    --close-btn-line: rgba(0, 0, 0, 0.3);
    --close-btn-hover-bg: rgba(220, 38, 38, 0.1);
    --close-btn-hover-border: rgba(220, 38, 38, 0.35);
    --close-btn-hover-line: #dc2626;
    --close-btn-hover-shadow: 0 0 10px rgba(220, 38, 38, 0.15);
    --close-btn-selected-bg: rgba(16, 185, 129, 0.08);
    --close-btn-selected-border: rgba(16, 185, 129, 0.2);
    --close-btn-selected-line: rgba(16, 185, 129, 0.7);

    --dot-bg: #dc2626;
    --dot-border: #ffffff;
    --user-panel-gradient: linear-gradient(160deg, #ffffff 0%, #f7fcf9 100%);

    --particle-color: 16, 185, 129;

    --theme-switcher-bg: rgba(0, 0, 0, 0.03);
    --theme-switcher-border: rgba(0, 0, 0, 0.06);
    --theme-switcher-color: #5a6a7e;
    --theme-switcher-hover-bg: rgba(16, 185, 129, 0.08);
    --theme-switcher-hover-border: rgba(16, 185, 129, 0.25);
    --theme-switcher-hover-color: #10b981;
}

/* —— amber 琥珀暖阳（浅色：暖米白底 + 琥珀金） —— */
[data-theme="amber"] {
    --bg-primary: #fdf8ec;
    --bg-secondary: #ffffff;
    --bg-tertiary: #f9eed6;
    --bg-card: #ffffff;
    --bg-card-solid: #ffffff;
    --bg-input: #faf3e3;
    --bg-input-focus: rgba(217, 119, 6, 0.04);
    --bg-hover: rgba(217, 119, 6, 0.05);
    --bg-selected: rgba(217, 119, 6, 0.07);

    --accent: #d97706;
    --accent-rgb: 217, 119, 6;
    --accent-secondary: #b45309;
    --accent-secondary-rgb: 180, 83, 9;
    --accent-green: #059669;
    --accent-green-rgb: 5, 150, 105;
    --accent-gold: #f59e0b;
    --accent-gold-rgb: 245, 158, 11;
    --accent-pink: #db2777;
    --accent-red: #dc2626;
    --accent-red-rgb: 220, 38, 38;

    --text-bright: #29200a;
    --text-primary: #3d2f10;
    --text-secondary: #7c6a45;
    --text-dim: #b3a37e;
    --text-placeholder: #b3a37e;

    --border-subtle: rgba(217, 119, 6, 0.12);
    --border-glow: rgba(217, 119, 6, 0.18);
    --border-input: #ecdfc4;
    --border-input-focus: rgba(217, 119, 6, 0.45);
    --border-card: rgba(217, 119, 6, 0.14);
    --border-divider: rgba(217, 119, 6, 0.12);

    --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.04), 0 4px 12px rgba(140, 90, 10, 0.06);
    --shadow-card-hover: 0 8px 30px rgba(140, 90, 10, 0.1), 0 2px 8px rgba(0, 0, 0, 0.06);
    --shadow-glow: 0 0 20px rgba(217, 119, 6, 0.1);
    --shadow-input-focus: 0 0 0 3px rgba(217, 119, 6, 0.1), 0 0 16px rgba(217, 119, 6, 0.05);
    --shadow-btn: 0 4px 16px rgba(217, 119, 6, 0.22), 0 2px 6px rgba(180, 83, 9, 0.12);

    --logo-gradient: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
    --btn-gradient: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
    --btn-gradient-hover: linear-gradient(135deg, #d97706 0%, #f59e0b 100%);
    --header-gradient: linear-gradient(90deg, #ffffff 0%, #fefbf4 50%, #fdf8ec 100%);
    --sidebar-gradient: linear-gradient(180deg, #fefbf4 0%, #fdf8ec 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(217, 119, 6, 0.22), rgba(180, 83, 9, 0.12), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(217, 119, 6, 0.16), transparent 30%, transparent 70%, rgba(180, 83, 9, 0.1));
    --tab-header-gradient: linear-gradient(90deg, #ffffff, #fefbf4);

    --scrollbar-thumb: rgba(217, 119, 6, 0.18);
    --scrollbar-thumb-hover: rgba(217, 119, 6, 0.32);
    --scrollbar-track: rgba(0, 0, 0, 0.02);

    --close-btn-bg: rgba(0, 0, 0, 0.04);
    --close-btn-border: rgba(0, 0, 0, 0.06);
    --close-btn-line: rgba(0, 0, 0, 0.3);
    --close-btn-hover-bg: rgba(220, 38, 38, 0.1);
    --close-btn-hover-border: rgba(220, 38, 38, 0.35);
    --close-btn-hover-line: #dc2626;
    --close-btn-hover-shadow: 0 0 10px rgba(220, 38, 38, 0.15);
    --close-btn-selected-bg: rgba(217, 119, 6, 0.08);
    --close-btn-selected-border: rgba(217, 119, 6, 0.2);
    --close-btn-selected-line: rgba(217, 119, 6, 0.7);

    --dot-bg: #dc2626;
    --dot-border: #ffffff;
    --user-panel-gradient: linear-gradient(160deg, #ffffff 0%, #fefbf4 100%);

    --particle-color: 217, 119, 6;

    --theme-switcher-bg: rgba(0, 0, 0, 0.03);
    --theme-switcher-border: rgba(0, 0, 0, 0.06);
    --theme-switcher-color: #7c6a45;
    --theme-switcher-hover-bg: rgba(217, 119, 6, 0.08);
    --theme-switcher-hover-border: rgba(217, 119, 6, 0.25);
    --theme-switcher-hover-color: #d97706;
}

/* —— indigo 靛蓝知性（浅色：淡靛白底 + 靛蓝紫） —— */
[data-theme="indigo"] {
    --bg-primary: #f1f3fc;
    --bg-secondary: #ffffff;
    --bg-tertiary: #e6e9f8;
    --bg-card: #ffffff;
    --bg-card-solid: #ffffff;
    --bg-input: #f0f2fb;
    --bg-input-focus: rgba(79, 70, 229, 0.04);
    --bg-hover: rgba(79, 70, 229, 0.05);
    --bg-selected: rgba(79, 70, 229, 0.07);

    --accent: #4f46e5;
    --accent-rgb: 79, 70, 229;
    --accent-secondary: #7c3aed;
    --accent-secondary-rgb: 124, 58, 237;
    --accent-green: #059669;
    --accent-green-rgb: 5, 150, 105;
    --accent-gold: #d97706;
    --accent-gold-rgb: 217, 119, 6;
    --accent-pink: #a855f7;
    --accent-red: #dc2626;
    --accent-red-rgb: 220, 38, 38;

    --text-bright: #111331;
    --text-primary: #1e2049;
    --text-secondary: #5d6089;
    --text-dim: #9ca1c4;
    --text-placeholder: #9ca1c4;

    --border-subtle: rgba(79, 70, 229, 0.1);
    --border-glow: rgba(79, 70, 229, 0.18);
    --border-input: #d9dcf2;
    --border-input-focus: rgba(79, 70, 229, 0.45);
    --border-card: rgba(79, 70, 229, 0.12);
    --border-divider: rgba(79, 70, 229, 0.1);

    --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.04), 0 4px 12px rgba(50, 50, 140, 0.07);
    --shadow-card-hover: 0 8px 30px rgba(50, 50, 140, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);
    --shadow-glow: 0 0 20px rgba(79, 70, 229, 0.1);
    --shadow-input-focus: 0 0 0 3px rgba(79, 70, 229, 0.1), 0 0 16px rgba(79, 70, 229, 0.05);
    --shadow-btn: 0 4px 16px rgba(79, 70, 229, 0.25), 0 2px 6px rgba(124, 58, 237, 0.12);

    --logo-gradient: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
    --btn-gradient: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
    --btn-gradient-hover: linear-gradient(135deg, #7c3aed 0%, #4f46e5 100%);
    --header-gradient: linear-gradient(90deg, #ffffff 0%, #f8f9fe 50%, #f1f3fc 100%);
    --sidebar-gradient: linear-gradient(180deg, #f8f9fe 0%, #f1f3fc 100%);
    --header-bottom-line: linear-gradient(90deg, transparent, rgba(79, 70, 229, 0.2), rgba(124, 58, 237, 0.1), transparent);
    --sidebar-right-line: linear-gradient(180deg, rgba(79, 70, 229, 0.15), transparent 30%, transparent 70%, rgba(124, 58, 237, 0.08));
    --tab-header-gradient: linear-gradient(90deg, #ffffff, #f8f9fe);

    --scrollbar-thumb: rgba(79, 70, 229, 0.18);
    --scrollbar-thumb-hover: rgba(79, 70, 229, 0.32);
    --scrollbar-track: rgba(0, 0, 0, 0.02);

    --close-btn-bg: rgba(0, 0, 0, 0.04);
    --close-btn-border: rgba(0, 0, 0, 0.06);
    --close-btn-line: rgba(0, 0, 0, 0.3);
    --close-btn-hover-bg: rgba(220, 38, 38, 0.1);
    --close-btn-hover-border: rgba(220, 38, 38, 0.35);
    --close-btn-hover-line: #dc2626;
    --close-btn-hover-shadow: 0 0 10px rgba(220, 38, 38, 0.15);
    --close-btn-selected-bg: rgba(79, 70, 229, 0.08);
    --close-btn-selected-border: rgba(79, 70, 229, 0.2);
    --close-btn-selected-line: rgba(79, 70, 229, 0.7);

    --dot-bg: #dc2626;
    --dot-border: #ffffff;
    --user-panel-gradient: linear-gradient(160deg, #ffffff 0%, #f8f9fe 100%);

    --particle-color: 79, 70, 229;

    --theme-switcher-bg: rgba(0, 0, 0, 0.03);
    --theme-switcher-border: rgba(0, 0, 0, 0.06);
    --theme-switcher-color: #5d6089;
    --theme-switcher-hover-bg: rgba(79, 70, 229, 0.08);
    --theme-switcher-hover-border: rgba(79, 70, 229, 0.25);
    --theme-switcher-hover-color: #4f46e5;
}

/* ============================================================
   全局兜底：文字色统一跟随主题（修复深色主题下漏网黑字）
   ============================================================ */
html,
body {
    color: var(--text-primary);
}

/* EasyUI 原生弹出层/浮层跟随主题：右键菜单、弹窗、下拉面板等 */
.menu,
.menu-content,
.window,
.window-body,
.window-header,
.dialog,
.dialog-content,
.combo-panel,
.panel-header,
.panel-title {
    color: var(--text-primary) !important;
    background-color: var(--bg-secondary) !important;
    border-color: var(--border-card) !important;
}
.menu-text,
.window .panel-title,
.dialog .panel-title {
    color: inherit !important;
}
.menu-item:hover,
.menu-item.menu-active {
    background: var(--bg-hover) !important;
}
.menu-item:hover .menu-text,
.menu-item.menu-active .menu-text {
    color: var(--accent) !important;
}
.menu-sep {
    background: var(--border-divider) !important;
}
.menu-icon,
.m-btn-downarrow {
    opacity: 0.75;
}
