/**
 * Platform theme tokens.
 * DB (ltw_system_config.uiTheme) is the authority; localStorage is first-paint cache only.
 * Structure CSS consumes these variables — do not copy full emerald/blue stylesheets.
 *
 * Default (:root) MUST equal emerald so missing data-theme never flips to blue.
 */
:root,
[data-theme="emerald"] {
    /* Brand */
    --brand-primary: #0f766e;
    --brand-primary-hover: #0b685f;
    --brand-accent: #2dd4b0;
    --brand-accent-soft: rgba(45, 212, 180, 0.12);
    --brand-on-primary: #ffffff;

    /* Shell */
    --shell-bg: #061416;
    --shell-bg-secondary: #020a0d;
    --shell-surface: #041113;
    --shell-border: rgba(45, 212, 180, 0.12);
    --shell-border-strong: rgba(45, 212, 180, 0.16);
    --shell-text: #d9f4ed;
    --shell-text-muted: rgba(215, 239, 232, 0.72);
    --shell-text-soft: rgba(215, 239, 232, 0.78);
    --shell-text-dim: rgba(215, 239, 232, 0.66);
    --shell-hover: rgba(45, 212, 180, 0.08);
    --shell-hover-strong: rgba(45, 212, 180, 0.06);
    --shell-active-bg: linear-gradient(90deg, rgba(13, 148, 136, 0.24), rgba(13, 148, 136, 0.08));
    --shell-tab-active-bg: linear-gradient(180deg, rgba(13, 148, 136, 0.18), rgba(6, 32, 28, 0.42));
    --shell-active-text: #5eead4;
    --shell-active-text-soft: #a7f3e0;
    --shell-active-glow: rgba(45, 212, 176, 0.5);
    --shell-child-bg: rgba(0, 0, 0, 0.2);
    --shell-arrow: rgba(167, 243, 224, 0.72);
    --shell-shadow: 8px 0 30px rgba(0, 0, 0, 0.2);

    /* Light business surfaces (T5 contract) */
    --page-bg: #f3f7f6;
    --page-bg-soft: #fbfdfc;
    --card-bg: #ffffff;
    --card-border: #dde8e5;
    --card-border-strong: #cbdcd7;
    --card-shadow: 0 5px 18px rgba(16, 52, 45, 0.045);
    --card-shadow-strong: 0 12px 30px rgba(16, 52, 45, 0.12);
    --text-primary: #182522;
    --text-secondary: #64746f;
    --text-muted: #91a19c;
    --text-heading: #172622;
    --input-bg: #ffffff;
    --input-border: #cbdcd7;
    --input-hover-border: #9bbeb5;
    --input-focus: #0f766e;
    --input-focus-ring: rgba(15, 118, 110, 0.1);
    --table-header-bg: #f7faf9;
    --table-header-text: #43534f;
    --table-border: #e7eeec;
    --table-col-divider: #e4ece9;
    --table-row-hover: #eff8f5;
    --table-tool-text: #62716d;
    --button-primary: var(--brand-primary);
    --button-primary-hover: var(--brand-primary-hover);
    --button-primary-text: #ffffff;
    --button-primary-shadow: 0 3px 9px rgba(15, 118, 110, 0.16);
    --button-secondary-bg: #ffffff;
    --button-secondary-border: var(--input-border);
    --button-secondary-text: #52645f;
    --button-secondary-hover-bg: #f5fbf9;
    --button-secondary-hover-border: #8db7ad;
    --pagination-active: var(--brand-primary);
    --pagination-text: #52645f;
    --link-color: var(--brand-primary);
    --link-hover: #0d6b64;
    --identity-icon-color: #087a68;
    --identity-icon-bg: linear-gradient(145deg, #ecfaf6, #d9f2eb);
    --identity-icon-border: #d5eee7;
    --identity-glow: rgba(45, 212, 176, 0.11);
    --identity-ring: rgba(15, 118, 110, 0.08);
    --brand-tint-soft: #f5fbf9;
    --brand-border-mid: #9bc4bb;
    --layer-header-bg: #f7faf9;
    --layer-border: rgba(203, 220, 215, 0.85);
    --layer-title: #1d2d29;
    --layer-shadow: 0 20px 56px rgba(3, 30, 25, 0.2);
    --layer-btn-border: #edf2f0;
    --empty-glow: rgba(15, 118, 110, 0.035);

    /* Measurement semantics — stable across brand themes */
    --measurement-high: #ef4444;
    --measurement-low: #2563eb;
    --measurement-primary: #2563eb;
    --measurement-mid: #0d9488;
    --measurement-avg-line: #3b82f6;
    --measurement-normal: #22c55e;

    /* Battery detail dark identity header */
    --detail-header-bg:
        radial-gradient(circle at 72% -90%, rgba(45, 212, 191, 0.22), transparent 40%),
        linear-gradient(110deg, #042f2e 0%, #063d39 58%, #07312f 100%);
    --detail-header-border: rgba(81, 210, 192, 0.18);
    --detail-header-shadow: 0 12px 28px rgba(4, 47, 46, 0.16);
    --detail-header-dialog-shadow: 0 8px 20px rgba(4, 47, 46, 0.13);
    --detail-header-label-border: rgba(94, 234, 212, 0.28);
    --detail-header-label-bg: rgba(45, 212, 191, 0.11);
    --detail-header-label-color: #99f6e4;
    --detail-header-meta: rgba(220, 252, 247, 0.62);
    --detail-header-meta-em: #d6f5ef;
    --detail-header-status-label: rgba(204, 251, 241, 0.62);
    --detail-header-summary: #a7f3d0;
    --detail-header-comm: rgba(204, 251, 241, 0.58);
    --detail-header-comm-strong: #ecfdf9;
    --detail-header-action: #ccfbf1;
    --detail-header-action-checked: #99f6e4;
    --detail-header-accent-control: #2dd4bf;
    --detail-header-btn-border: #4fd1bd;
    --detail-header-btn-bg: #0f9488;
    --detail-header-btn-hover: #14a99b;
    --detail-card-shadow: 0 8px 24px rgba(19, 51, 47, 0.055);
    --detail-kpi-shadow: 0 5px 18px rgba(24, 52, 47, 0.045);
    --detail-surface-muted: #f7faf9;
    --detail-border-soft: #e7eeec;
    --detail-tint-soft: #eef8f5;
    --chart-secondary: #0f766e;
    --chart-grid: rgba(45, 212, 180, 0.16);
    --chart-text: rgba(167, 214, 198, 0.78);
    --chart-tooltip-bg: rgba(6, 20, 22, 0.92);
    --chart-fill-start: rgba(8, 80, 68, 0.55);
    --chart-fill-end: rgba(45, 212, 180, 0.72);
    --chart-center-strong: rgba(74, 222, 128, 0.92);
    --chart-center-muted: rgba(167, 214, 198, 0.62);

    /* SOC bands: fixed warning→healthy scale (not brand) */
    --soc-band-1: #ef4444;
    --soc-band-2: #f59e0b;
    --soc-band-3: #eab308;
    --soc-band-4: #34d399;
    --soc-band-5: #22c55e;

    /* Glow */
    --glow-primary: rgba(45, 212, 180, 0.28);
    --glow-soft: rgba(45, 212, 180, 0.12);

    /* Semantic status — same across themes; brand ≠ normal */
    --status-normal: #22c55e;
    --status-success: #22c55e;
    --status-warning: #f59e0b;
    --status-danger: #ef4444;
    --status-error: #dc2626;
    --status-offline: #60a5fa;

    /* Login */
    --login-bg: #031b17;
    --login-panel: rgba(5, 38, 32, 0.88);
    --login-panel-blur: rgba(5, 38, 32, 0.79);
    --login-panel-mobile: rgba(4, 35, 28, 0.86);
    --login-border: rgba(49, 196, 120, 0.35);
    --login-accent: #22c978;
    --login-accent-strong: #13b96b;
    --login-text: #f4f8f6;
    --login-muted: #9cb4aa;
    --login-error: #ff9a9a;
    --login-copy: #4fea9b;
    --login-copy-glow: rgba(41, 220, 126, 0.2);
    --login-footer: rgba(226, 243, 235, 0.7);
    --login-input-bg: rgba(3, 28, 23, 0.54);
    --login-input-bg-focus: rgba(5, 48, 38, 0.74);
    --login-input-border: rgba(167, 205, 186, 0.25);
    --login-input-icon: #b2c9bd;
    --login-placeholder: #8da49a;
    --login-focus-ring: rgba(34, 201, 120, 0.13);
    --login-btn-text: #032616;
    --login-btn-shadow: rgba(19, 185, 107, 0.23);
    --login-check-fg: #073221;
    --login-focus-outline: #ceffe3;
    --login-note: rgba(189, 210, 200, 0.82);
    --login-overlay-desktop: linear-gradient(90deg, rgba(1, 16, 13, 0.04) 0%, rgba(1, 16, 13, 0.02) 52%, rgba(1, 16, 13, 0.64) 100%);
    --login-overlay-mobile: linear-gradient(180deg, rgba(1, 17, 13, 0.18), rgba(1, 17, 13, 0.5));
    --login-scene-desktop: url("/css/login/login-scene-desktop.webp");
    --login-scene-mobile: url("/css/login/login-scene-mobile.webp");

    /* Dashboard cockpit */
    --dashboard-bg: #030d0b;
    --dashboard-surface: #04110f;
    --dashboard-panel: rgba(6, 32, 28, 0.78);
    --dashboard-border: rgba(45, 212, 180, 0.28);
    --dashboard-border-soft: rgba(45, 212, 180, 0.12);
    --dashboard-border-weak: rgba(45, 212, 180, 0.08);
    --dashboard-text: #d7efe8;
    --dashboard-muted: rgba(167, 214, 198, 0.72);
    --dashboard-tint-rgb: 45, 212, 180;
    --dashboard-glow-rgb: 34, 197, 160;
    --dashboard-deep-rgb: 18, 96, 78;
    --dashboard-accent-light-rgb: 94, 234, 212;
    --dashboard-soft-rgb: 167, 243, 224;
    --dashboard-shadow-rgb: 6, 78, 59;
    --dashboard-hero:
        radial-gradient(ellipse 48% 38% at 50% 28%, rgba(18, 96, 78, 0.5), transparent 62%),
        radial-gradient(ellipse 55% 42% at 50% 34%, rgba(18, 96, 78, 0.28), transparent 68%),
        radial-gradient(ellipse 90% 70% at 50% 100%, rgba(2, 12, 10, 0.92), transparent 55%),
        linear-gradient(180deg, #06201b 0%, #04110f 42%, #020a08 100%);
    --dashboard-bms-image: url("/images/dashboard/dashboard-bms-transparent-v2.webp");
    --dashboard-bms-glow: rgba(34, 197, 160, 0.18);
    --dashboard-bms-glow-strong: rgba(34, 197, 160, 0.26);
    --dashboard-control-bg: rgba(8, 40, 34, 0.75);
    --dashboard-control-hover: rgba(12, 56, 48, 0.9);
    --dashboard-aux-fill: linear-gradient(180deg, rgba(8, 34, 30, 0.78), rgba(4, 18, 16, 0.82));
    --dashboard-card-fill:
        radial-gradient(ellipse 80% 60% at 50% 0%, rgba(45, 212, 180, 0.06), transparent 55%),
        linear-gradient(180deg, rgba(10, 42, 36, 0.92), rgba(5, 24, 21, 0.88));
    --dashboard-fs-header-bg: linear-gradient(180deg, rgba(6, 28, 24, 0.92), rgba(4, 16, 14, 0.75));
    --dashboard-icon-well: radial-gradient(circle at 35% 30%, rgba(45, 212, 180, 0.18), rgba(6, 30, 26, 0.75));
    --dashboard-node-well: radial-gradient(circle at 35% 30%, rgba(45, 212, 180, 0.12), rgba(4, 20, 18, 0.55));
    --dashboard-stage-wash: radial-gradient(ellipse 72% 62% at 50% 50%, rgba(12, 58, 48, 0.42), rgba(3, 16, 14, 0.38));
    --dashboard-attn-hud-bg: rgba(6, 28, 24, 0.78);
    --dashboard-table-sticky: rgba(5, 28, 24, 0.96);
    --dashboard-core-underlay: radial-gradient(ellipse at center,
        rgba(8, 40, 34, 0.55) 0%,
        rgba(4, 18, 15, 0.35) 42%,
        transparent 72%);
    --dashboard-text-strong: #ecfdf8;
    --dashboard-accent-text: #a7f3e0;
    --dashboard-link-hover: #5eead4;
    --dashboard-text-soft: rgba(167, 214, 198, 0.58);
    --dashboard-text-faint: rgba(167, 214, 198, 0.5);
    --dashboard-text-fainter: rgba(167, 214, 198, 0.45);
    --dashboard-text-th: rgba(167, 214, 198, 0.65);
    --dashboard-text-empty: rgba(167, 214, 198, 0.4);
    --dashboard-low-soc: #14b8a6;
    --dashboard-temp: #fb7185;

    /* Compatibility aliases */
    --platform-brand: var(--brand-primary);
    --platform-brand-hover: var(--brand-primary-hover);
    --platform-accent: var(--brand-accent);
    --platform-shell: var(--shell-bg);
    --platform-shell-strong: var(--shell-bg-secondary);
    --platform-workspace: var(--page-bg);
    --platform-surface: var(--card-bg);
    --platform-surface-muted: var(--table-header-bg);
    --platform-border: var(--card-border);
    --platform-border-strong: var(--input-border);
    --platform-text: var(--text-primary);
    --platform-text-secondary: var(--text-secondary);
    --platform-text-muted: var(--text-muted);
    --platform-success: var(--status-success);
    --platform-warning: var(--status-warning);
    --platform-danger: var(--status-danger);
    --platform-info: #3b82b9;
    --platform-focus-ring: var(--input-focus-ring);
    /* legacy alias */
    --table-hover-bg: var(--table-row-hover);
}

/**
 * Deep-sea tech blue — not bright Layui blue, not purple / neon.
 * Semantic status / SOC bands intentionally unchanged.
 */
[data-theme="blue"] {
    --brand-primary: #2563eb;
    --brand-primary-hover: #1d4ed8;
    --brand-accent: #38bdf8;
    --brand-accent-soft: rgba(56, 189, 248, 0.14);
    --brand-on-primary: #ffffff;

    --shell-bg: #071321;
    --shell-bg-secondary: #030914;
    --shell-surface: #0a1829;
    --shell-border: rgba(56, 189, 248, 0.14);
    --shell-border-strong: rgba(56, 189, 248, 0.18);
    --shell-text: #e8f2fc;
    --shell-text-muted: rgba(186, 214, 236, 0.72);
    --shell-text-soft: rgba(186, 214, 236, 0.8);
    --shell-text-dim: rgba(186, 214, 236, 0.66);
    --shell-hover: rgba(56, 189, 248, 0.1);
    --shell-hover-strong: rgba(56, 189, 248, 0.07);
    --shell-active-bg: linear-gradient(90deg, rgba(37, 99, 235, 0.34), rgba(37, 99, 235, 0.1));
    --shell-tab-active-bg: linear-gradient(180deg, rgba(37, 99, 235, 0.22), rgba(7, 19, 33, 0.5));
    --shell-active-text: #7dd3fc;
    --shell-active-text-soft: #bae6fd;
    --shell-active-glow: rgba(56, 189, 248, 0.5);
    --shell-child-bg: rgba(0, 0, 0, 0.28);
    --shell-arrow: rgba(186, 230, 253, 0.75);
    --shell-shadow: 8px 0 30px rgba(0, 0, 0, 0.28);

    --page-bg: #f3f7fb;
    --page-bg-soft: #f8fafc;
    --card-bg: #ffffff;
    --card-border: #d8e4f0;
    --card-border-strong: #c5d4e4;
    --card-shadow: 0 5px 18px rgba(15, 40, 80, 0.05);
    --card-shadow-strong: 0 12px 30px rgba(15, 40, 80, 0.12);
    --text-primary: #172033;
    --text-secondary: #64748b;
    --text-muted: #94a3b8;
    --text-heading: #172033;
    --input-bg: #ffffff;
    --input-border: #c5d4e4;
    --input-hover-border: #94a8c4;
    --input-focus: #2563eb;
    --input-focus-ring: rgba(37, 99, 235, 0.12);
    --table-header-bg: #f5f8fc;
    --table-header-text: #475569;
    --table-border: #e2e8f0;
    --table-col-divider: #e2e8f0;
    --table-row-hover: #eef4fb;
    --table-tool-text: #64748b;
    --button-primary: var(--brand-primary);
    --button-primary-hover: var(--brand-primary-hover);
    --button-primary-text: #ffffff;
    --button-primary-shadow: 0 3px 9px rgba(37, 99, 235, 0.18);
    --button-secondary-bg: #ffffff;
    --button-secondary-border: var(--input-border);
    --button-secondary-text: #475569;
    --button-secondary-hover-bg: #f5f8fc;
    --button-secondary-hover-border: #93b4d6;
    --pagination-active: var(--brand-primary);
    --pagination-text: #475569;
    --link-color: var(--brand-primary);
    --link-hover: #1d4ed8;
    --identity-icon-color: #1d4ed8;
    --identity-icon-bg: linear-gradient(145deg, #eff6ff, #dbeafe);
    --identity-icon-border: #dbe7f5;
    --identity-glow: rgba(56, 189, 248, 0.14);
    --identity-ring: rgba(37, 99, 235, 0.1);
    --brand-tint-soft: #f5f8fc;
    --brand-border-mid: #93b4d6;
    --layer-header-bg: #f5f8fc;
    --layer-border: rgba(197, 212, 228, 0.9);
    --layer-title: #172033;
    --layer-shadow: 0 20px 56px rgba(15, 40, 80, 0.18);
    --layer-btn-border: #e8eef5;
    --empty-glow: rgba(37, 99, 235, 0.04);
    --table-hover-bg: var(--table-row-hover);

    /* Measurement semantics — stable across brand themes */
    --measurement-high: #ef4444;
    --measurement-low: #2563eb;
    --measurement-primary: #2563eb;
    --measurement-mid: #0d9488;
    --measurement-avg-line: #3b82f6;
    --measurement-normal: #22c55e;

    /* Battery detail dark identity header — deep-sea blue */
    --detail-header-bg:
        radial-gradient(circle at 72% -90%, rgba(56, 189, 248, 0.22), transparent 40%),
        linear-gradient(110deg, #071827 0%, #081d2d 58%, #0a2438 100%);
    --detail-header-border: rgba(56, 189, 248, 0.2);
    --detail-header-shadow: 0 12px 28px rgba(7, 24, 39, 0.22);
    --detail-header-dialog-shadow: 0 8px 20px rgba(7, 24, 39, 0.18);
    --detail-header-label-border: rgba(125, 211, 252, 0.3);
    --detail-header-label-bg: rgba(56, 189, 248, 0.12);
    --detail-header-label-color: #bae6fd;
    --detail-header-meta: rgba(186, 214, 236, 0.66);
    --detail-header-meta-em: #e0f2fe;
    --detail-header-status-label: rgba(186, 214, 236, 0.62);
    --detail-header-summary: #bae6fd;
    --detail-header-comm: rgba(186, 214, 236, 0.58);
    --detail-header-comm-strong: #f0f9ff;
    --detail-header-action: #dbeafe;
    --detail-header-action-checked: #7dd3fc;
    --detail-header-accent-control: #38bdf8;
    --detail-header-btn-border: #38bdf8;
    --detail-header-btn-bg: #2563eb;
    --detail-header-btn-hover: #1d4ed8;
    --detail-card-shadow: 0 8px 24px rgba(15, 40, 80, 0.06);
    --detail-kpi-shadow: 0 5px 18px rgba(15, 40, 80, 0.05);
    --detail-surface-muted: #f5f8fc;
    --detail-border-soft: #e2e8f0;
    --detail-tint-soft: #eff6ff;

    --chart-primary: #38bdf8;
    --chart-secondary: #2563eb;
    --chart-grid: rgba(56, 189, 248, 0.16);
    --chart-text: rgba(186, 214, 236, 0.78);
    --chart-tooltip-bg: rgba(7, 19, 33, 0.92);
    --chart-fill-start: rgba(15, 40, 80, 0.55);
    --chart-fill-end: rgba(56, 189, 248, 0.72);
    --chart-center-strong: rgba(125, 211, 252, 0.92);
    --chart-center-muted: rgba(186, 214, 236, 0.62);

    --glow-primary: rgba(56, 189, 248, 0.28);
    --glow-soft: rgba(56, 189, 248, 0.12);

    --login-bg: #06111f;
    --login-panel: rgba(7, 24, 39, 0.9);
    --login-panel-blur: rgba(7, 24, 39, 0.8);
    --login-panel-mobile: rgba(6, 20, 34, 0.88);
    --login-border: rgba(56, 189, 248, 0.35);
    --login-accent: #38bdf8;
    --login-accent-strong: #2563eb;
    --login-text: #f1f7fc;
    --login-muted: #9bb0c4;
    --login-copy: #7dd3fc;
    --login-copy-glow: rgba(56, 189, 248, 0.22);
    --login-footer: rgba(214, 230, 245, 0.7);
    --login-input-bg: rgba(4, 18, 32, 0.56);
    --login-input-bg-focus: rgba(8, 30, 52, 0.78);
    --login-input-border: rgba(148, 180, 210, 0.28);
    --login-input-icon: #a8bfd4;
    --login-placeholder: #7f96ab;
    --login-focus-ring: rgba(56, 189, 248, 0.16);
    --login-btn-text: #041018;
    --login-btn-shadow: rgba(37, 99, 235, 0.28);
    --login-check-fg: #062033;
    --login-focus-outline: #dbeafe;
    --login-note: rgba(186, 210, 230, 0.82);
    --login-overlay-desktop: linear-gradient(90deg, rgba(2, 10, 20, 0.08) 0%, rgba(2, 10, 20, 0.04) 52%, rgba(2, 10, 20, 0.68) 100%);
    --login-overlay-mobile: linear-gradient(180deg, rgba(2, 10, 20, 0.2), rgba(2, 10, 20, 0.55));
    --login-scene-desktop: url("/css/login/login-scene-desktop-blue.webp");
    --login-scene-mobile: url("/css/login/login-scene-mobile-blue.webp");

    --dashboard-bg: #040b14;
    --dashboard-surface: #06111f;
    --dashboard-panel: rgba(8, 24, 40, 0.8);
    --dashboard-border: rgba(56, 189, 248, 0.28);
    --dashboard-border-soft: rgba(56, 189, 248, 0.14);
    --dashboard-border-weak: rgba(56, 189, 248, 0.08);
    --dashboard-text: #d7e8f6;
    --dashboard-muted: rgba(167, 196, 220, 0.72);
    --dashboard-tint-rgb: 56, 189, 248;
    --dashboard-glow-rgb: 56, 189, 248;
    --dashboard-deep-rgb: 30, 64, 110;
    --dashboard-accent-light-rgb: 125, 211, 252;
    --dashboard-soft-rgb: 186, 230, 253;
    --dashboard-shadow-rgb: 15, 40, 80;
    --dashboard-hero:
        radial-gradient(ellipse 48% 38% at 50% 28%, rgba(30, 64, 110, 0.55), transparent 62%),
        radial-gradient(ellipse 55% 42% at 50% 34%, rgba(30, 64, 110, 0.3), transparent 68%),
        radial-gradient(ellipse 90% 70% at 50% 100%, rgba(2, 8, 16, 0.92), transparent 55%),
        linear-gradient(180deg, #071827 0%, #06111f 42%, #030914 100%);
    --dashboard-bms-image: url("/images/dashboard/dashboard-bms-transparent-v2-blue.webp");
    --dashboard-bms-glow: rgba(56, 189, 248, 0.2);
    --dashboard-bms-glow-strong: rgba(56, 189, 248, 0.3);
    --dashboard-control-bg: rgba(8, 28, 48, 0.78);
    --dashboard-control-hover: rgba(12, 40, 68, 0.9);
    --dashboard-aux-fill: linear-gradient(180deg, rgba(8, 28, 48, 0.8), rgba(4, 14, 26, 0.84));
    --dashboard-card-fill:
        radial-gradient(ellipse 80% 60% at 50% 0%, rgba(56, 189, 248, 0.06), transparent 55%),
        linear-gradient(180deg, rgba(7, 30, 48, 0.92), rgba(5, 18, 32, 0.88));
    --dashboard-fs-header-bg: linear-gradient(180deg, rgba(7, 24, 40, 0.92), rgba(4, 14, 26, 0.78));
    --dashboard-icon-well: radial-gradient(circle at 35% 30%, rgba(56, 189, 248, 0.18), rgba(6, 24, 40, 0.75));
    --dashboard-node-well: radial-gradient(circle at 35% 30%, rgba(56, 189, 248, 0.12), rgba(4, 16, 28, 0.55));
    --dashboard-stage-wash: radial-gradient(ellipse 72% 62% at 50% 50%, rgba(12, 40, 72, 0.42), rgba(3, 12, 22, 0.38));
    --dashboard-attn-hud-bg: rgba(6, 22, 36, 0.78);
    --dashboard-table-sticky: rgba(5, 18, 32, 0.96);
    --dashboard-core-underlay: radial-gradient(ellipse at center,
        rgba(8, 28, 48, 0.55) 0%,
        rgba(4, 14, 26, 0.35) 42%,
        transparent 72%);
    --dashboard-text-strong: #e8f2fc;
    --dashboard-accent-text: #bae6fd;
    --dashboard-link-hover: #7dd3fc;
    --dashboard-text-soft: rgba(167, 196, 220, 0.58);
    --dashboard-text-faint: rgba(167, 196, 220, 0.5);
    --dashboard-text-fainter: rgba(167, 196, 220, 0.45);
    --dashboard-text-th: rgba(167, 196, 220, 0.65);
    --dashboard-text-empty: rgba(167, 196, 220, 0.4);
    /* Keep low-SOC as business warning cue — do not follow brand blue */
    --dashboard-low-soc: #14b8a6;
}
