/*!
 * SDA Theme Master (CSS) v2
 * ---------------------------------------------------------------------------
 * Named themes and component colors are defined here. theme-master.js selects a
 * theme (data-theme / data-theme-colors / data-theme-mode on <html> and <body>)
 * and supplies optional user color inputs (--sda-user-*, --on-primary).
 *
 * Structure
 *   1. Base tokens + mode tokens (dark / light)
 *   2. Theme palettes             (one small block per theme, raw colors only)
 *   3. Derived public tokens      (--bg-color, --primary-color, ... + helpers)
 *   4. Page polish                (selection, scrollbars, focus, transitions)
 *   5. Role map + utility bridges (data-theme-role, Tailwind hex remaps)
 *   6. Shared components          (glass, aura glow, monetization)
 *   7. Light-mode component rules (every light theme, token-driven)
 *   8. Dark-mode component rules  9. .sda-* component library
 *  10. Print / contrast / responsive  11. Per-theme signatures
 *  12-16. Design tokens, layout + type utilities, a11y, motion, mobile
 *
 * Requires CSS color-mix() and CSS nesting (all current evergreen browsers).
 */

/* ==========================================================================
   1. BASE + MODE TOKENS
   ========================================================================== */
:root {
    /* Defaults (Beacon Dark) so the page is never unstyled before JS runs. */
    --t-bg: #000000; --t-surface: #0a0a0a;
    --t-primary: #8b5cf6; --t-primary-rgb: 139, 92, 246; --t-secondary: #ec4899;
    --t-text: #f9fafb; --t-muted: #9ca3af;
    --t-radius: 16px; --t-font: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;

    --t-shadow-rgb: 0, 0, 0; --t-shadow-a: .5;
    --is-dark: 1;
    color-scheme: dark;
}
:root[data-theme-mode="dark"] { --t-shadow-rgb: 0, 0, 0; --t-shadow-a: .5; --is-dark: 1; color-scheme: dark; }
:root[data-theme-mode="light"] { --t-shadow-rgb: 15, 23, 42; --t-shadow-a: .12; --is-dark: 0; color-scheme: light; }

/* ==========================================================================
   2. THEME PALETTES  (raw colors only; everything else is derived)
   ========================================================================== */
/* ---- Dark ---- */
:root[data-theme="beacon-dark"], :root[data-theme-colors="beacon-dark"],
:root[data-theme="midnight"],    :root[data-theme-colors="midnight"] {
    --t-bg:#000000; --t-surface:#0a0a0a; --t-primary:#8b5cf6; --t-primary-rgb:139,92,246; --t-secondary:#ec4899;
    --t-text:#f9fafb; --t-muted:#9ca3af; --t-radius:16px;
}
:root[data-theme="obsidian"], :root[data-theme-colors="obsidian"] {
    --t-bg:#0b0d12; --t-surface:#131722; --t-primary:#3b82f6; --t-primary-rgb:59,130,246; --t-secondary:#22d3ee;
    --t-text:#e8ecf4; --t-muted:#8b94a7; --t-radius:14px;
}
:root[data-theme="nebula"], :root[data-theme-colors="nebula"] {
    --t-bg:#0a0818; --t-surface:#141028; --t-primary:#a78bfa; --t-primary-rgb:167,139,250; --t-secondary:#38bdf8;
    --t-text:#f1eefc; --t-muted:#9d98b8; --t-radius:18px;
}
:root[data-theme="aura"], :root[data-theme-colors="aura"] {
    --t-bg:#050505; --t-surface:#111111; --t-primary:#00f2ff; --t-primary-rgb:0,242,255; --t-secondary:#7000ff;
    --t-text:#ffffff; --t-muted:#8f8f8f; --t-radius:4px; --t-font:'Syncopate', system-ui, sans-serif;
}
:root[data-theme="xine"], :root[data-theme-colors="xine"] {
    --t-bg:#09110b; --t-surface:#111c13; --t-primary:#66864b; --t-primary-rgb:102,134,75; --t-secondary:#d9a35b;
    --t-text:#f4f7f1; --t-muted:#9ba997; --t-radius:16px;
}
:root[data-theme="oceanic"], :root[data-theme-colors="oceanic"] {
    --t-bg:#04141a; --t-surface:#0a222b; --t-primary:#14b8a6; --t-primary-rgb:20,184,166; --t-secondary:#38bdf8;
    --t-text:#e9f8f8; --t-muted:#8fb0b4; --t-radius:16px;
}
:root[data-theme="ember"], :root[data-theme-colors="ember"] {
    --t-bg:#0f0907; --t-surface:#1a1210; --t-primary:#f97316; --t-primary-rgb:249,115,22; --t-secondary:#facc15;
    --t-text:#fbf3ee; --t-muted:#b09a8d; --t-radius:14px;
}
:root[data-theme="crimson"], :root[data-theme-colors="crimson"] {
    --t-bg:#0d0507; --t-surface:#1a0b0f; --t-primary:#e11d48; --t-primary-rgb:225,29,72; --t-secondary:#fb923c;
    --t-text:#fbeff1; --t-muted:#b4949a; --t-radius:14px;
}
:root[data-theme="royal-gold"], :root[data-theme-colors="royal-gold"] {
    --t-bg:#0a0a0a; --t-surface:#151412; --t-primary:#d4af37; --t-primary-rgb:212,175,55; --t-secondary:#f5e6a8;
    --t-text:#f6f1e3; --t-muted:#a39b86; --t-radius:10px;
}
:root[data-theme="arctic"], :root[data-theme-colors="arctic"] {
    --t-bg:#0f1419; --t-surface:#18202a; --t-primary:#88c0d0; --t-primary-rgb:136,192,208; --t-secondary:#b48ead;
    --t-text:#eceff4; --t-muted:#98a4b5; --t-radius:12px;
}
:root[data-theme="graphite"], :root[data-theme-colors="graphite"] {
    --t-bg:#0f0f10; --t-surface:#1a1a1c; --t-primary:#e5e5e5; --t-primary-rgb:229,229,229; --t-secondary:#a3a3a3;
    --t-text:#f5f5f5; --t-muted:#9a9aa0; --t-radius:8px;
}
/* ---- Light ---- */
:root[data-theme="pure-white"], :root[data-theme-colors="pure-white"] {
    --t-bg:#ffffff; --t-surface:#f9fafb; --t-primary:#4f46e5; --t-primary-rgb:79,70,229; --t-secondary:#0f9f8f;
    --t-text:#111827; --t-muted:#64748b; --t-radius:12px;
}
:root[data-theme="porcelain"], :root[data-theme-colors="porcelain"] {
    --t-bg:#f4f6fa; --t-surface:#ffffff; --t-primary:#2563eb; --t-primary-rgb:37,99,235; --t-secondary:#0ea5a4;
    --t-text:#0f172a; --t-muted:#5b6678; --t-radius:14px;
}
:root[data-theme="sanctuary"], :root[data-theme-colors="sanctuary"] {
    --t-bg:#fef3c7; --t-surface:#fde68a; --t-primary:#b45309; --t-primary-rgb:180,83,9; --t-secondary:#d97706;
    --t-text:#451a03; --t-muted:#92400e; --t-radius:24px;
}
:root[data-theme="rosewater"], :root[data-theme-colors="rosewater"] {
    --t-bg:#fff5f7; --t-surface:#ffe4ea; --t-primary:#e11d48; --t-primary-rgb:225,29,72; --t-secondary:#a855f7;
    --t-text:#4c0519; --t-muted:#8a4b5c; --t-radius:20px;
}
:root[data-theme="mint"], :root[data-theme-colors="mint"] {
    --t-bg:#f0fdf6; --t-surface:#dcfce9; --t-primary:#059669; --t-primary-rgb:5,150,105; --t-secondary:#0284c7;
    --t-text:#052e1b; --t-muted:#4b7060; --t-radius:16px;
}
:root[data-theme="lavender"], :root[data-theme-colors="lavender"] {
    --t-bg:#f6f3ff; --t-surface:#ebe5ff; --t-primary:#7c3aed; --t-primary-rgb:124,58,237; --t-secondary:#db2777;
    --t-text:#1e1040; --t-muted:#6b5f8f; --t-radius:18px;
}
/* Light themes keep their mode tokens even if JS has not stamped data-theme-mode yet. */
:root[data-theme="pure-white"], :root[data-theme="porcelain"], :root[data-theme="sanctuary"],
:root[data-theme="rosewater"],  :root[data-theme="mint"],      :root[data-theme="lavender"] {
    --t-shadow-rgb: 15, 23, 42; --t-shadow-a: .12; --is-dark: 0; color-scheme: light;
}

/* ==========================================================================
   3. DERIVED PUBLIC TOKENS  (these names are consumed across the app)
   ========================================================================== */
:root[data-theme], :root[data-theme-colors] {
    --bg-color: var(--t-bg);
    --surface-color: var(--sda-user-surface, var(--t-surface));
    --elevated-color: color-mix(in srgb, var(--surface-color) 88%, var(--t-text));
    --primary-color: var(--sda-user-accent, var(--t-primary));
    --primary-rgb: var(--sda-user-accent-rgb, var(--t-primary-rgb));
    --accent-color: var(--sda-user-complement, var(--t-secondary));
    --complementary-color: var(--accent-color);
    --text-main: var(--t-text);
    --text-muted: var(--t-muted);
    --app-font: var(--sda-user-font, var(--t-font));
    --radius-main: var(--t-radius);

    /* Helpers */
    --border-soft: color-mix(in srgb, var(--text-main) 12%, transparent);
    --border-strong: color-mix(in srgb, var(--text-main) 24%, transparent);
    --fill-soft: color-mix(in srgb, var(--text-main) 6%, var(--bg-color));
    --fill-hover: color-mix(in srgb, var(--text-main) 9%, transparent);
    --primary-soft: color-mix(in srgb, var(--primary-color) 14%, var(--surface-color));
    --primary-glow: color-mix(in srgb, var(--primary-color) 38%, transparent);
    --glass-bg: color-mix(in srgb, var(--bg-color) 78%, transparent);
    --ring: color-mix(in srgb, var(--primary-color) 60%, transparent);
    --shadow-sm: 0 2px 8px rgba(var(--t-shadow-rgb), calc(var(--t-shadow-a) * .6));
    --shadow-md: 0 10px 30px rgba(var(--t-shadow-rgb), var(--t-shadow-a));
    --shadow-lg: 0 24px 70px rgba(var(--t-shadow-rgb), calc(var(--t-shadow-a) * 1.4));

    /* Semantic status colors (tuned per mode below) */
    --success-color: #22c55e; --warning-color: #f59e0b; --danger-color: #ef4444; --info-color: #38bdf8;

    /* Semantic theme tokens (kept for existing consumers) */
    --theme-bg: var(--bg-color);
    --theme-surface: var(--surface-color);
    --theme-elevated: var(--elevated-color);
    --theme-accent: var(--primary-color);
    --theme-complement: var(--complementary-color);
    --theme-copy: var(--text-main);
    --theme-copy-muted: var(--text-muted);
    --theme-border: var(--border-soft);
}
:root[data-theme-mode="light"] {
    --success-color: #16a34a; --warning-color: #d97706; --danger-color: #dc2626; --info-color: #0284c7;
}

/* ==========================================================================
   4. PAGE POLISH
   ========================================================================== */
html[data-theme], body[data-theme] {
    background-color: var(--bg-color) !important;
    color: var(--text-main);
}
body[data-theme] { font-family: var(--app-font); }

[data-theme-colors] {
    accent-color: var(--primary-color);
    scrollbar-color: color-mix(in srgb, var(--text-main) 28%, transparent) transparent;
    scrollbar-width: thin;
}
[data-theme-colors] ::selection {
    background: color-mix(in srgb, var(--primary-color) 38%, transparent);
    color: var(--text-main);
}
[data-theme-colors] ::-webkit-scrollbar { width: 10px; height: 10px; }
[data-theme-colors] ::-webkit-scrollbar-track { background: transparent; }
[data-theme-colors] ::-webkit-scrollbar-thumb {
    background: color-mix(in srgb, var(--text-main) 22%, transparent);
    border-radius: 999px; border: 2px solid transparent; background-clip: content-box;
}
[data-theme-colors] ::-webkit-scrollbar-thumb:hover {
    background: color-mix(in srgb, var(--text-main) 38%, transparent); background-clip: content-box;
}
[data-theme-colors] :focus-visible {
    outline: 2px solid var(--primary-color);
    outline-offset: 2px;
    box-shadow: 0 0 0 4px var(--ring);
}
[data-theme-colors] input::placeholder,
[data-theme-colors] textarea::placeholder { color: var(--text-muted); opacity: .85; }

/* Smooth theme switching (class is added/removed by theme-master.js). */
.sda-theme-transition, .sda-theme-transition *, .sda-theme-transition *::before, .sda-theme-transition *::after {
    transition: background-color .3s ease, color .3s ease, border-color .3s ease,
                fill .3s ease, stroke .3s ease, box-shadow .3s ease !important;
}
@media (prefers-reduced-motion: reduce) {
    .sda-theme-transition, .sda-theme-transition * { transition: none !important; }
}
@media (forced-colors: active) {
    [data-theme-colors] :focus-visible { outline-color: Highlight; box-shadow: none; }
}

/* ==========================================================================
   5. ROLE MAP + UTILITY BRIDGES
   ========================================================================== */
/* Shared surface / copy / icon / action role map. Dynamic views inherit these tokens too. */
[data-theme-role="surface"], [data-theme-component="detail-panel"], #song-comments-overlay, #album-overlay {
    background-color: var(--surface-color) !important;
    color: var(--text-main) !important;
}
[data-theme-role="copy"]   { color: var(--text-main) !important; }
[data-theme-role="muted"]  { color: var(--text-muted) !important; }
[data-theme-role="accent"] { color: var(--primary-color) !important; }
[data-theme-role="action"] { background-color: var(--primary-color) !important; color: var(--on-primary, #fff) !important; }

/* Tailwind-style utility bridges: legacy hard-coded colors follow the active theme. */
[data-theme-colors] .bg-primary     { background-color: var(--primary-color) !important; }
[data-theme-colors] .text-primary   { color: var(--primary-color) !important; }
[data-theme-colors] .border-primary { border-color: var(--primary-color) !important; }
[data-theme-colors] [class*="bg-[#8b5cf6]"], [data-theme-colors] [class*="bg-[#4f46e5]"], [data-theme-colors] [class*="bg-[#66864b]"]
    { background-color: var(--primary-color) !important; }
[data-theme-colors] [class*="text-[#8b5cf6]"], [data-theme-colors] [class*="text-[#4f46e5]"], [data-theme-colors] [class*="text-[#66864b]"]
    { color: var(--primary-color) !important; border-color: var(--primary-color) !important; }
[data-theme-colors] [class*="bg-[#ec4899]"], [data-theme-colors] [class*="bg-[#0f9f8f]"], [data-theme-colors] [class*="bg-[#d9a35b]"]
    { background-color: var(--complementary-color) !important; }
[data-theme-colors] [class*="text-[#ec4899]"], [data-theme-colors] [class*="text-[#0f9f8f]"], [data-theme-colors] [class*="text-[#d9a35b]"]
    { color: var(--complementary-color) !important; border-color: var(--complementary-color) !important; }
[data-theme-colors] [style*="#8b5cf6"], [data-theme-colors] [style*="#4f46e5"], [data-theme-colors] [style*="#66864b"]
    { color: var(--primary-color) !important; border-color: var(--primary-color) !important; }
[data-theme-colors] [style*="background:#8b5cf6"], [data-theme-colors] [style*="background: #8b5cf6"],
[data-theme-colors] [style*="background:#4f46e5"], [data-theme-colors] [style*="background: #4f46e5"]
    { background: var(--primary-color) !important; }
[data-theme-colors] [style*="#ec4899"], [data-theme-colors] [style*="#0f9f8f"], [data-theme-colors] [style*="#d9a35b"]
    { border-color: var(--complementary-color) !important; }
[data-theme-colors] [style*="background:#ec4899"], [data-theme-colors] [style*="background: #ec4899"],
[data-theme-colors] [style*="background:#0f9f8f"], [data-theme-colors] [style*="background: #0f9f8f"]
    { background: var(--complementary-color) !important; }

[data-theme-colors] .bg-bg       { background-color: var(--bg-color) !important; }
[data-theme-colors] .bg-surface  { background-color: var(--surface-color) !important; }
[data-theme-colors] .bg-elevated { background-color: var(--elevated-color) !important; }
[data-theme-colors] [class*="bg-[#121212]"], [data-theme-colors] [class*="bg-[#0a0a0a]"]
    { background-color: var(--surface-color) !important; color: var(--text-main) !important; }
[data-theme-colors] [class*="bg-[#1a1a1a]"], [data-theme-colors] [class*="bg-[#1a1a1f]"]
    { background-color: var(--elevated-color) !important; color: var(--text-main) !important; }
[data-theme-colors] [style*="background:#121212"], [data-theme-colors] [style*="background: #121212"]
    { background: var(--surface-color) !important; color: var(--text-main) !important; }
[data-theme-colors] [style*="background:#1a1a1a"], [data-theme-colors] [style*="background: #1a1a1a"]
    { background: var(--elevated-color) !important; color: var(--text-main) !important; }

/* ==========================================================================
   6. SHARED COMPONENTS
   ========================================================================== */
[data-theme-colors] .glass {
    background-color: var(--glass-bg) !important;
    -webkit-backdrop-filter: blur(18px) saturate(1.4);
    backdrop-filter: blur(18px) saturate(1.4);
    border-top: 1px solid var(--border-soft);
}
[data-theme-colors] .sda-toast {
    background-color: var(--elevated-color) !important;
    color: var(--text-main) !important;
    border: 1px solid var(--border-soft) !important;
    box-shadow: var(--shadow-md);
}

/* Mini island / mini player */
[data-theme-colors] #desk-mini-island .text-white    { color: var(--text-main) !important; }
[data-theme-colors] #desk-mini-island .text-gray-400 { color: var(--text-muted) !important; }

/* Aura: neon glow */
[data-theme="aura"] .text-main { text-shadow: 0 0 8px rgba(0, 242, 255, .3); }
[data-theme="aura"] .glass {
    background-color: rgba(5, 5, 5, .7) !important;
    border: 1px solid rgba(0, 242, 255, .2);
    box-shadow: 0 0 20px rgba(0, 242, 255, .1);
}
/* Royal Gold: fine gold hairlines on glass */
[data-theme="royal-gold"] .glass { border-top-color: color-mix(in srgb, var(--primary-color) 28%, transparent); }
/* Sanctuary: soften ambient background */
[data-theme="sanctuary"] #ambient-bg { opacity: .05 !important; }
[data-theme="sanctuary"] #mini-play-btn,
[data-theme="sanctuary"] .player-controls button.bg-main {
    background-color: var(--primary-color) !important; color: var(--on-primary, #fff) !important;
}

/* Monetization */
[data-theme] #monetization-management-container button,
[data-theme] #monetization-promo-section {
    border-color: var(--primary-color) !important;
    background-color: color-mix(in srgb, var(--primary-color) 10%, transparent) !important;
    color: var(--primary-color) !important;
}
[data-theme] #monetization-drawer {
    border-color: var(--primary-color) !important;
    background-color: color-mix(in srgb, var(--primary-color) 5%, transparent) !important;
}
[data-theme] #monetization-drawer .bg-primary\/20 {
    background-color: color-mix(in srgb, var(--primary-color) 20%, transparent) !important;
    color: var(--primary-color) !important;
}
[data-theme] #monetization-drawer .text-primary { color: var(--primary-color) !important; }
[data-theme] #monetization-drawer .bg-primary\/10 {
    background-color: color-mix(in srgb, var(--primary-color) 10%, transparent) !important;
}
[data-theme] #monetization-drawer .hover\:border-primary\/50:hover {
    border-color: color-mix(in srgb, var(--primary-color) 50%, transparent) !important;
}

/* Discover page (all themes) */
[data-theme-colors] #discover-root-page { background: var(--bg-color) !important; color: var(--text-main) !important; }
[data-theme-colors] #discover-root-page > div.relative.z-20 { color: var(--text-main) !important; }
[data-theme-colors] #discover-root-page > div.relative.z-20 > section:first-child {
    background: var(--surface-color) !important; border-color: var(--border-soft) !important;
}
[data-theme-colors] #discover-root-page > div.relative.z-20 > section:first-child input,
[data-theme-colors] #discover-root-page > div.relative.z-20 > section:first-child select {
    background-color: var(--elevated-color) !important; color: var(--text-main) !important;
    border-color: color-mix(in srgb, var(--text-main) 14%, transparent) !important;
}
[data-theme-colors] #discover-root-page > div.relative.z-20 .text-white { color: var(--text-main) !important; }
[data-theme-colors] #discover-root-page > div.relative.z-20 .text-gray-200,
[data-theme-colors] #discover-root-page > div.relative.z-20 .text-gray-300,
[data-theme-colors] #discover-root-page > div.relative.z-20 .text-gray-400,
[data-theme-colors] #discover-root-page > div.relative.z-20 .text-gray-500 { color: var(--text-muted) !important; }
[data-theme-colors] #discover-root-page .text-violet-300,
[data-theme-colors] #discover-root-page .text-violet-400,
[data-theme-colors] #discover-root-page .text-violet-500 { color: var(--primary-color) !important; }
[data-theme-colors] #discover-hero .text-white { color: #fff !important; }
[data-theme-colors] #discover-results .absolute.bg-black\/75 { color: #fff !important; }
[data-theme-colors] #discover-root-page .border-violet-500\/30,
[data-theme-colors] #discover-root-page .border-violet-500\/40 {
    border-color: color-mix(in srgb, var(--primary-color) 40%, transparent) !important;
}
[data-theme-colors] #discover-root-page .bg-violet-500\/20,
[data-theme-colors] #discover-root-page .bg-violet-600\/90 {
    background-color: color-mix(in srgb, var(--primary-color) 18%, var(--surface-color)) !important;
}
[data-theme-colors] #discover-root-page #discover-results > .group {
    background: var(--surface-color) !important; border-color: var(--border-soft) !important;
}
[data-theme-colors] #discover-root-page #discover-results > .group .text-white { color: var(--text-main) !important; }
[data-theme-colors] #discover-root-page #discover-countries .text-white,
[data-theme-colors] #discover-root-page #discover-results > .group [class*="absolute"].text-white { color: #fff !important; }
[data-theme-colors] #discover-root-page #discover-empty { background: var(--surface-color) !important; color: var(--text-muted) !important; }

/* ==========================================================================
   7. LIGHT-MODE COMPONENT RULES
      Applies to every light theme (Pure White, Porcelain, Sanctuary,
      Rosewater, Mint, Lavender, ...). Fully token-driven: no hard-coded
      theme colors, so new light themes work automatically.
   ========================================================================== */
[data-theme-mode="light"] {

    /* ---- Utilities ---- */
    & .glass { background-color: color-mix(in srgb, var(--bg-color) 86%, transparent) !important; border-top: 1px solid var(--border-soft); }
    & .text-white    { color: var(--text-main) !important; }
    & .text-gray-300 { color: color-mix(in srgb, var(--text-main) 82%, var(--bg-color)) !important; }
    & .text-gray-400, & .text-gray-500 { color: var(--text-muted) !important; }
    & .bg-white\/5   { background-color: color-mix(in srgb, var(--text-main) 5%, var(--surface-color)) !important; }
    & .border-white\/10 { border-color: var(--border-soft) !important; }
    & button.bg-white\/10 { background-color: var(--fill-hover) !important; color: var(--text-main) !important; }
    & [class~="bg-black"] { background-color: var(--surface-color) !important; }
    & [class*="bg-[#121212]"], & [class*="bg-[#0a0a0a]"], & [class*="bg-[#1a1a1a]"] {
        background-color: var(--surface-color) !important; color: var(--text-main) !important;
    }
    & [style*="background:#121212"], & [style*="background: #121212"] {
        background: var(--surface-color) !important; color: var(--text-main) !important;
    }

    /* ---- Form controls ---- */
    & input, & textarea, & select {
        background-color: var(--surface-color) !important;
        color: var(--text-main) !important;
        border-color: var(--border-soft) !important;
    }
    & input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]),
    & select, & textarea { caret-color: var(--text-main); }
    & input::placeholder, & textarea::placeholder { color: var(--text-muted) !important; opacity: 1; }

    /* ---- Role map ---- */
    & [data-theme-role="icon-action"] {
        background: var(--text-main) !important; color: var(--bg-color) !important; border-color: var(--text-main) !important;
    }
    & [data-theme-role="icon-action"] svg { color: var(--bg-color) !important; stroke: var(--bg-color) !important; }
    & [data-theme-role="follow"], & #btn-follow {
        background: var(--bg-color) !important; color: var(--text-main) !important; border-color: var(--text-main) !important;
    }
    & #btn-notify-prefs { color: var(--text-main) !important; border-color: var(--border-strong) !important; }
    & #btn-notify-prefs svg { color: var(--text-main) !important; stroke: var(--text-main) !important; }
    & #artist-fixed-header > button, & #artist-fixed-header #btn-toggle-edit, & #artist-fixed-header #btn-share-artist {
        background: var(--text-main) !important; color: var(--bg-color) !important; border-color: var(--text-main) !important;
    }
    & #artist-fixed-header button svg { color: var(--bg-color) !important; stroke: var(--bg-color) !important; }

    /* ---- Home hero ---- */
    & #hero-card-container {
        background: var(--bg-color) !important;
        border: 1px solid var(--border-soft) !important;
        box-shadow: var(--shadow-md) !important;
    }
    & #hero-card-container > div:first-child > img { display: block !important; opacity: .9 !important; filter: saturate(.92) !important; }
    & #hero-card-container > div:first-child > div { background: transparent !important; }
    & #hero-card-container .bg-gradient-to-t {
        background-image: linear-gradient(to top, rgba(0,0,0,.66), rgba(0,0,0,.18) 55%, transparent 80%) !important;
    }
    & #hero-card-container :is(h1, h2, h3, p, span, strong, small),
    & #hero-main-title, & #hero-highlight-text, & #hero-song-title,
    & #hero-song-title .home-hero-title-text, & #hero-song-title .home-hero-artist-text, & #hero-song-title .home-hero-wave {
        color: #fff !important;
    }
    & #hero-main-title { text-shadow: 0 2px 12px rgba(0,0,0,.55) !important; }
    & #hero-song-title .home-hero-live-dot { background: var(--primary-color) !important; }
    & #hero-card-container span.bg-\[\#8b5cf6\] { background: var(--primary-color) !important; }
    & #hero-card-container #hero-text-wrapper > span { background: rgba(0,0,0,.78) !important; color: #fff !important; }
    & #hero-btn-prev, & #hero-btn-next, & #hero-btn-shuffle {
        background-color: var(--primary-color) !important; border: 0 !important;
        box-shadow: 0 6px 22px color-mix(in srgb, var(--primary-color) 28%, transparent) !important;
    }
    & #hero-btn-prev, & #hero-btn-next { color: var(--on-primary, #fff) !important; }
    & #hero-shuffle-icon { color: var(--on-primary, #fff) !important; stroke: var(--on-primary, #fff) !important; }
    & #hero-progress-rect { stroke: var(--primary-color) !important; filter: none !important; }

    /* ---- Player + popovers ---- */
    & .full-mini-player:not(.collapsed), & .home-artist-hover {
        background: var(--surface-color) !important; color: var(--text-main) !important;
        border-color: var(--border-soft) !important; box-shadow: var(--shadow-lg) !important;
    }
    & .home-artist-popover-stats { color: var(--text-main) !important; }
    & .home-artist-popover-meta  { color: var(--text-muted) !important; }
    & .home-artist-action { color: color-mix(in srgb, var(--text-main) 82%, transparent) !important; background: var(--fill-soft) !important; border-color: var(--border-soft) !important; }
    & .home-artist-play   { color: var(--on-primary, #fff) !important; background: var(--primary-color) !important; border-color: transparent !important; }

    /* ---- Drawers ---- */
    & #details-drawer-content, & #qs-drawer-content, & #playlist-drawer > div, & #info-drawer > div,
    & #context-menu > div, & #about-drawer-content {
        background-color: var(--bg-color) !important;
        border-top: 1px solid var(--border-soft) !important;
    }
    & #details-drawer-content h2, & #details-drawer-content h3, & #qs-drawer-content h3,
    & #playlist-drawer-title, & #info-full-title, & #ctx-title,
    & #about-drawer-content h2, & #about-drawer-content h3 { color: var(--text-main) !important; }
    & #qs-eq-container span { color: var(--text-muted) !important; }
    & #playlist-drawer-songs > div:hover { background-color: var(--fill-hover) !important; }

    /* ---- Home moods / browse / discover tiles ---- */
    & #browse-grid > div {
        background: var(--surface-color) !important; border: 1px solid var(--border-strong) !important;
        color: var(--text-main) !important; box-shadow: var(--shadow-sm);
    }
    & #browse-grid > div span, & #browse-grid > div > div, & #browse-grid > div > span { color: var(--text-main) !important; }
    & #browse-grid > div span[id^="genre-sub-"], & #browse-grid > div > div > span:last-child,
    & #browse-grid > div > div span, & #browse-grid > div > span.text-white\/55,
    & #browse-grid > div > div span.text-white\/35 { color: var(--text-muted) !important; }
    & #browse-grid > div > i { color: color-mix(in srgb, var(--primary-color) 30%, transparent) !important; }

    & #home-moods > div {
        background: var(--surface-color) !important; border: 1px solid var(--border-strong) !important; box-shadow: var(--shadow-sm);
    }
    & #home-moods > div > span { color: var(--text-main) !important; }
    & #home-moods > div > i { color: var(--primary-color) !important; opacity: .2 !important; }

    & #discover-root-page #discover-countries > button,
    & #discover-root-page #discover-genres > button {
        background: var(--surface-color) !important; border: 1px solid var(--border-strong) !important; color: var(--text-main) !important;
    }
    & #discover-root-page #discover-countries > button > img,
    & #discover-root-page #discover-genres > button > img { opacity: .2 !important; }
    & #discover-root-page #discover-countries > button > span:first-of-type,
    & #discover-root-page #discover-genres > button > span:first-of-type {
        background: linear-gradient(to top, color-mix(in srgb, var(--surface-color) 96%, transparent), color-mix(in srgb, var(--surface-color) 16%, transparent)) !important;
    }
    & #discover-root-page #discover-countries > button > span:last-child,
    & #discover-root-page #discover-genres > button > span:last-child { color: var(--text-main) !important; }
    & #discover-root-page #discover-countries > button small { color: var(--text-muted) !important; }
    & #discover-root-page #discover-hero-3d-songs > div {
        background: var(--surface-color) !important; border: 1px solid var(--border-strong) !important;
    }
    & #discover-root-page #discover-hero-3d-songs > div > div > img + div { background: linear-gradient(to top, rgba(0,0,0,.48), transparent) !important; }
    & #discover-root-page #discover-hero-3d-songs > div > span.text-white { color: var(--text-main) !important; }
    & #discover-root-page #discover-hero-3d-songs > div > span.text-gray-400 { color: var(--text-muted) !important; }
    & #discover-root-page #discover-hero-3d-songs > div .bg-white.text-black { background: var(--text-main) !important; color: var(--bg-color) !important; }
    & #discover-hero p.text-violet-300, & #discover-hero #discover-featured-name,
    & #discover-hero #discover-featured-meta, & #discover-hero [class*="text-white/"] { color: #fff !important; }

    /* ---- Search ---- */
    & #search-page-root > .sticky { background: var(--surface-color) !important; border-radius: 14px; }
    & #search-input {
        background: var(--surface-color) !important; color: var(--text-main) !important;
        border-color: var(--border-soft) !important;
    }
    & #search-page-root .bg-black\/90 { background: var(--surface-color) !important; }

    /* ---- Library ---- */
    & #library-page-root .album-catalog-card {
        border: 1px solid var(--border-strong) !important; background: var(--surface-color) !important; box-shadow: var(--shadow-sm) !important;
    }
    & #lib-content button.text-black, & #lib-content button.bg-primary, & #studio-save-btn { color: var(--on-primary, #fff) !important; }

    /* ---- Admin ---- */
    & #admin-music-list .text-white { color: var(--text-main) !important; }
    & #admin-music-list .text-gray-400 { color: var(--text-muted) !important; }
    & #admin-music-list > div:not(:first-child) {
        border: 1px solid var(--border-strong) !important; background: var(--surface-color) !important;
    }
    & #admin-sub-content button { color: var(--on-primary, #fff) !important; }
    & #admin-sub-content [class*="bg-elevated"] { background: var(--surface-color) !important; }
    & #admin-sub-content [class*="border-white"] { border-color: var(--border-soft) !important; }
    & #admin-console .admin-console-header {
        color: var(--text-main) !important; border-color: var(--border-soft) !important;
        background: radial-gradient(ellipse at 0 0, color-mix(in srgb, var(--primary-color) 12%, var(--bg-color)), transparent 62%), var(--surface-color) !important;
        box-shadow: var(--shadow-md) !important;
    }
    & #admin-console .admin-console-header h2 { color: var(--text-main) !important; }
    & #admin-console .admin-console-header p, & #admin-console .admin-console-stats span { color: var(--text-muted) !important; }
    & #admin-console .admin-console-stats > div, & #admin-tabs-container {
        border-color: var(--border-soft) !important; background: var(--surface-color) !important; box-shadow: var(--shadow-sm) !important;
    }
    & #admin-console .admin-console-stats strong { color: var(--text-main) !important; }
    & #admin-tabs-container .admin-nav-label { color: var(--text-muted) !important; }
    & #admin-tabs-container .admin-sub-tab { color: color-mix(in srgb, var(--text-main) 78%, var(--bg-color)) !important; }
    & #admin-tabs-container .admin-sub-tab:hover { color: var(--text-main) !important; background: var(--fill-hover) !important; }
    & #admin-tabs-container .admin-sub-tab.text-primary { color: var(--primary-color) !important; }

    /* ---- Artists directory ---- */
    & #artists-page-root { color: var(--text-main) !important; }
    & #artists-page-root h1, & #artists-page-root #artists-default-view > p { color: var(--text-main) !important; }
    & #artists-page-root > div:first-child > button {
        color: var(--text-main) !important; background: var(--bg-color) !important;
        border: 1px solid var(--border-soft); box-shadow: var(--shadow-sm);
    }
    & #artist-search-input {
        color: var(--text-main) !important; background: var(--bg-color) !important;
        border: 1px solid var(--border-strong) !important; box-shadow: var(--shadow-sm);
    }
    & #artist-search-input::placeholder { color: var(--text-muted) !important; opacity: 1; }
    & #artists-page-root .all-artist-card {
        background: var(--bg-color) !important; border: 1px solid var(--border-strong) !important; box-shadow: var(--shadow-sm);
    }
    & #artists-page-root .all-artist-card:hover { border-color: var(--primary-color) !important; box-shadow: var(--shadow-md); }
    & #artists-page-root .all-artist-cover { background: var(--fill-soft) !important; }
    & #artists-page-root .all-artist-meta h3 { color: var(--text-main) !important; }
    & #artists-page-root .all-artist-meta p  { color: var(--text-muted) !important; }
    & #artists-page-root .all-artist-song-count {
        color: #fff !important; background: rgba(15,23,42,.82) !important; border: 1px solid rgba(255,255,255,.22);
    }
    & #artists-page-root .all-artist-card-hover { background: linear-gradient(to top, rgba(15,23,42,.94), rgba(15,23,42,.12) 78%) !important; }
    & #artists-page-root .all-artist-card-hover button { color: var(--on-primary, #fff) !important; background: var(--primary-color) !important; }

    @media (max-width: 649px) {
        & #artists-page-root .all-artist-card { background: transparent !important; border: 0 !important; box-shadow: none !important; }
        & #artists-page-root .all-artist-cover {
            background: var(--fill-soft) !important; border: 1px solid var(--border-strong) !important; border-radius: 50% !important;
        }
        & #artists-page-root .all-artist-cover > img { border-radius: 50% !important; object-fit: contain !important; }
    }

    /* ---- Artist page hero (text sits on imagery, stays white) ---- */
    & .artist-page-root #artist-cover-wrap > .absolute.inset-0.bg-gradient-to-b {
        background-image: linear-gradient(180deg, rgba(0,0,0,.08) 8%, rgba(0,0,0,.28) 42%, rgba(0,0,0,.84) 78%, rgba(0,0,0,.96) 100%) !important;
    }
    & .artist-page-root #artist-hero #art-name-display,
    & .artist-page-root #artist-hero .text-white { color: #fff !important; }
    & .artist-page-root #artist-hero #art-meta-row,
    & .artist-page-root #artist-hero #art-meta-row .text-gray-400 { color: rgba(255,255,255,.8) !important; }
    & .artist-page-root #artist-hero #hero-actions button { color: #fff !important; }

    /* ---- About drawer ---- */
    & #about-drawer { background: color-mix(in srgb, var(--text-main) 34%, transparent) !important; }
    & #about-drawer > #about-drawer-content {
        background: var(--bg-color) !important; color: var(--text-main) !important;
        border: 1px solid var(--border-soft) !important; box-shadow: var(--shadow-lg);
    }
    & #about-drawer-content h2, & #about-drawer-content h3, & #about-drawer-content p { color: var(--text-main) !important; }
    & #about-drawer-content p[style*="uppercase"] { color: var(--primary-color) !important; }
    & #about-drawer-content > div[style*="background:rgba(255,255,255,0.03)"],
    & #about-drawer-content > div[style*="background:rgba(255,255,255,0.03);"] {
        background: var(--fill-soft) !important; border: 1px solid var(--border-soft);
    }
    & #about-drawer-content > div[style*="width:100px;height:120px"] { border: 1px solid var(--border-strong) !important; }
    & #about-drawer-content > div > div[style*="width:100px"] p:last-child { color: var(--primary-color) !important; }
    & #about-drawer-content button { background: var(--primary-color) !important; color: var(--on-primary, #fff) !important; }

    @media (min-width: 650px) {
        & #about-drawer > #about-drawer-content { background: var(--bg-color) !important; }
        & #about-drawer-content > p { color: var(--text-muted) !important; }
        & #about-drawer-content > div:nth-of-type(2) { background: var(--fill-soft); border-color: var(--border-soft); }
        & #about-drawer-content > div:nth-of-type(3), & #about-drawer-content > div:nth-of-type(4) {
            background: var(--fill-soft) !important; border-color: var(--border-soft);
        }
        & #about-drawer-content > div:nth-of-type(3) p:last-child,
        & #about-drawer-content > div:nth-of-type(4) p:first-child { color: var(--text-main) !important; }
        & #about-drawer-content > div:nth-of-type(3) p:first-child,
        & #about-drawer-content > div:nth-of-type(4) p:nth-child(2) { color: var(--text-muted) !important; }
        & #about-drawer-content > button {
            background: var(--primary-color) !important; border-color: var(--primary-color) !important; color: var(--on-primary, #fff) !important;
        }
    }

    /* ---- Album / detail panels ---- */
    & #desktop-detail-panel #overlay-title, & #album-overlay #overlay-title { color: var(--text-main) !important; }
    & #desktop-detail-panel #overlay-stats, & #album-overlay #overlay-stats,
    & #desktop-detail-panel #overlay-tracks .text-gray-500, & #album-overlay #overlay-tracks .text-gray-500 { color: var(--text-muted) !important; }
    & #desktop-detail-panel #overlay-tracks .text-gray-200, & #album-overlay #overlay-tracks .text-gray-200 { color: var(--text-main) !important; }
    & #desktop-detail-panel #overlay-tracks svg, & #album-overlay #overlay-tracks svg,
    & #desktop-detail-panel #album-controls button:not(.bg-primary) svg,
    & #album-overlay #album-controls button:not(.bg-primary) svg { color: var(--text-main) !important; stroke: var(--text-main) !important; }
    & #desktop-detail-panel #album-controls button:not(.bg-primary), & #album-overlay #album-controls button:not(.bg-primary) {
        color: var(--text-main) !important; background: var(--fill-soft) !important; border-color: var(--border-strong) !important;
    }
    & #desktop-detail-panel #album-controls button[class*="bg-black"], & #album-overlay #album-controls button[class*="bg-black"] { color: var(--bg-color) !important; }
    & #desktop-detail-panel #album-controls button.bg-primary, & #album-overlay #album-controls button.bg-primary { color: var(--on-primary, #fff) !important; }
    & #desktop-detail-panel #album-controls button.bg-primary svg, & #album-overlay #album-controls button.bg-primary svg {
        color: var(--on-primary, #fff) !important; stroke: var(--on-primary, #fff) !important;
    }
    & #desktop-detail-panel .album-desktop-panel-header, & #desktop-detail-panel .album-desktop-panel-header h3 { color: var(--text-main) !important; }
    & #desktop-detail-panel .album-desktop-panel-header .album-panel-close {
        color: var(--text-main) !important; background: var(--fill-soft) !important; border-color: var(--border-strong) !important;
    }
    & #desktop-detail-panel button[class*="bg-black"], & #album-overlay button[class*="bg-black"] {
        color: var(--bg-color) !important; background: var(--text-main) !important;
    }
}

/* ==========================================================================
   8. DARK-MODE COMPONENT RULES
      Hairlines and elevation so layered dark surfaces stay readable.
   ========================================================================== */
[data-theme-mode="dark"] {
    & .bg-surface, & [class*="bg-[#121212]"], & [class*="bg-[#0a0a0a]"] {
        box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--text-main) 5%, transparent);
    }
    & .bg-elevated, & [class*="bg-[#1a1a1a]"], & [class*="bg-[#1a1a1f]"] {
        box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--text-main) 8%, transparent);
    }
    & .bg-white\/5  { background-color: color-mix(in srgb, var(--text-main) 6%, var(--surface-color)) !important; }
    & .bg-white\/10 { background-color: color-mix(in srgb, var(--text-main) 10%, transparent) !important; }
    & .border-white\/10 { border-color: var(--border-soft) !important; }
    & .text-gray-400, & .text-gray-500 { color: var(--text-muted) !important; }
    & .text-gray-300 { color: color-mix(in srgb, var(--text-main) 80%, var(--bg-color)) !important; }
    & input, & textarea, & select { caret-color: var(--primary-color); }
    & input:focus, & textarea:focus, & select:focus {
        border-color: color-mix(in srgb, var(--primary-color) 70%, transparent) !important;
    }
    & #context-menu > div, & #playlist-drawer > div, & #info-drawer > div,
    & #details-drawer-content, & #qs-drawer-content {
        border-top: 1px solid var(--border-soft);
        box-shadow: 0 -18px 60px rgba(var(--t-shadow-rgb), .45);
    }
    & #hero-card-container {
        border: 1px solid var(--border-soft);
        box-shadow: 0 24px 70px -24px var(--sig-glow, var(--primary-glow));
    }
    & .sda-toast { box-shadow: 0 12px 40px rgba(0, 0, 0, .55); }
}

/* ==========================================================================
   9. COMPONENT LIBRARY (opt-in .sda-* classes, fully theme-aware)
   ========================================================================== */

/* ---- Buttons ---- */
.sda-btn {
    --btn-bg: var(--elevated-color); --btn-fg: var(--text-main); --btn-bd: var(--border-soft);
    display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
    min-height: 40px; padding: .55rem 1.1rem;
    font: 600 .875rem/1 var(--app-font); letter-spacing: .01em;
    color: var(--btn-fg); background: var(--btn-bg);
    border: 1px solid var(--btn-bd); border-radius: calc(var(--radius-main) * .75);
    cursor: pointer; user-select: none; -webkit-tap-highlight-color: transparent;
    transition: transform .15s ease, filter .15s ease, background-color .2s ease, box-shadow .2s ease;
}
.sda-btn:hover  { filter: brightness(1.08); transform: translateY(-1px); box-shadow: var(--shadow-sm); }
.sda-btn:active { transform: translateY(0) scale(.98); filter: brightness(.96); box-shadow: none; }
.sda-btn[disabled], .sda-btn[aria-disabled="true"] { opacity: .45; cursor: not-allowed; transform: none; filter: none; box-shadow: none; }
.sda-btn--primary { --btn-bg: var(--primary-color); --btn-fg: var(--on-primary, #fff); --btn-bd: transparent; box-shadow: 0 6px 20px -8px var(--primary-glow); }
.sda-btn--accent  { --btn-bg: var(--complementary-color); --btn-fg: var(--on-complement, #fff); --btn-bd: transparent; }
.sda-btn--gradient { --btn-bd: transparent; --btn-fg: var(--on-primary, #fff); background: var(--sig-gradient, linear-gradient(135deg, var(--primary-color), var(--complementary-color))); }
.sda-btn--ghost   { --btn-bg: transparent; --btn-bd: transparent; }
.sda-btn--ghost:hover { background: var(--fill-hover); }
.sda-btn--outline { --btn-bg: transparent; --btn-bd: var(--border-strong); }
.sda-btn--outline:hover { border-color: var(--primary-color); color: var(--primary-color); }
.sda-btn--danger  { --btn-bg: var(--danger-color); --btn-fg: #fff; --btn-bd: transparent; }
.sda-btn--sm { min-height: 32px; padding: .35rem .8rem; font-size: .8rem; }
.sda-btn--lg { min-height: 48px; padding: .75rem 1.5rem; font-size: 1rem; }
.sda-btn--pill { border-radius: 999px; }
.sda-btn--icon { width: 40px; min-height: 40px; padding: 0; border-radius: 50%; }
.sda-btn--block { display: flex; width: 100%; }

/* ---- Cards ---- */
.sda-card {
    background: var(--surface-color); color: var(--text-main);
    border: 1px solid var(--border-soft); border-radius: var(--radius-main);
    box-shadow: var(--shadow-sm); overflow: hidden;
    transition: transform .2s ease, box-shadow .25s ease, border-color .2s ease;
}
.sda-card--hover:hover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--primary-color) 45%, transparent); box-shadow: var(--shadow-md); }
.sda-card--elevated { background: var(--elevated-color); box-shadow: var(--shadow-md); }
.sda-card--accent { border-color: color-mix(in srgb, var(--primary-color) 40%, transparent); background: var(--primary-soft); }
.sda-card--glass { background: var(--glass-bg); -webkit-backdrop-filter: blur(18px) saturate(1.4); backdrop-filter: blur(18px) saturate(1.4); }
.sda-card__body   { padding: 1rem 1.15rem; }
.sda-card__title  { margin: 0 0 .25rem; font-weight: 700; font-size: 1rem; color: var(--text-main); }
.sda-card__meta   { margin: 0; font-size: .8rem; color: var(--text-muted); }
.sda-card__footer { padding: .75rem 1.15rem; border-top: 1px solid var(--border-soft); background: var(--fill-soft); }

/* ---- Chips, badges, tags ---- */
.sda-chip {
    display: inline-flex; align-items: center; gap: .4rem; padding: .3rem .8rem;
    font: 500 .8rem/1 var(--app-font); color: var(--text-main);
    background: var(--fill-soft); border: 1px solid var(--border-soft); border-radius: 999px;
    cursor: pointer; transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}
.sda-chip:hover { background: var(--fill-hover); }
.sda-chip[aria-pressed="true"], .sda-chip.is-active {
    background: var(--primary-color); color: var(--on-primary, #fff); border-color: transparent;
}
.sda-badge {
    display: inline-flex; align-items: center; padding: .15rem .55rem;
    font: 700 .68rem/1.4 var(--app-font); letter-spacing: .06em; text-transform: uppercase;
    color: var(--primary-color); background: color-mix(in srgb, var(--primary-color) 14%, transparent);
    border-radius: 999px;
}
.sda-badge--accent  { color: var(--complementary-color); background: color-mix(in srgb, var(--complementary-color) 16%, transparent); }
.sda-badge--success { color: var(--success-color); background: color-mix(in srgb, var(--success-color) 16%, transparent); }
.sda-badge--warning { color: var(--warning-color); background: color-mix(in srgb, var(--warning-color) 18%, transparent); }
.sda-badge--danger  { color: var(--danger-color);  background: color-mix(in srgb, var(--danger-color) 16%, transparent); }
.sda-badge--solid   { color: var(--on-primary, #fff); background: var(--primary-color); }

/* ---- Form fields ---- */
.sda-field { display: grid; gap: .35rem; }
.sda-label { font: 600 .78rem/1.2 var(--app-font); color: var(--text-muted); letter-spacing: .03em; }
.sda-input, .sda-select, .sda-textarea {
    width: 100%; min-height: 42px; padding: .6rem .85rem;
    font: 400 .92rem/1.35 var(--app-font); color: var(--text-main);
    background: var(--surface-color); border: 1px solid var(--border-strong);
    border-radius: calc(var(--radius-main) * .7); outline: none;
    transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
.sda-textarea { min-height: 110px; resize: vertical; }
.sda-input:hover, .sda-select:hover, .sda-textarea:hover { border-color: color-mix(in srgb, var(--text-main) 38%, transparent); }
.sda-input:focus, .sda-select:focus, .sda-textarea:focus { border-color: var(--primary-color); box-shadow: 0 0 0 3px var(--ring); }
.sda-input[aria-invalid="true"], .sda-field.is-error .sda-input { border-color: var(--danger-color); box-shadow: 0 0 0 3px color-mix(in srgb, var(--danger-color) 25%, transparent); }
.sda-hint  { font-size: .76rem; color: var(--text-muted); }
.sda-error { font-size: .76rem; color: var(--danger-color); }

/* ---- Switch / checkbox / radio ---- */
.sda-switch { position: relative; display: inline-block; width: 44px; height: 26px; flex: none; }
.sda-switch input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; z-index: 1; }
.sda-switch__track {
    position: absolute; inset: 0; border-radius: 999px; background: var(--border-strong);
    transition: background-color .2s ease; pointer-events: none;
}
.sda-switch__track::after {
    content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%;
    background: #fff; box-shadow: 0 2px 6px rgba(0, 0, 0, .35); transition: transform .2s cubic-bezier(.4, 0, .2, 1);
}
.sda-switch input:checked + .sda-switch__track { background: var(--primary-color); }
.sda-switch input:checked + .sda-switch__track::after { transform: translateX(18px); }
.sda-switch input:focus-visible + .sda-switch__track { box-shadow: 0 0 0 3px var(--ring); }
.sda-switch input:disabled { cursor: not-allowed; }
.sda-switch input:disabled + .sda-switch__track { opacity: .45; }

/* ---- Range slider ---- */
.sda-range { -webkit-appearance: none; appearance: none; width: 100%; height: 6px; border-radius: 999px; outline: none;
    background: linear-gradient(to right, var(--primary-color) var(--fill, 0%), var(--border-strong) var(--fill, 0%)); }
.sda-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 16px; height: 16px; border-radius: 50%;
    background: var(--text-main); border: 3px solid var(--primary-color); box-shadow: var(--shadow-sm); cursor: pointer;
    transition: transform .15s ease;
}
.sda-range::-webkit-slider-thumb:hover { transform: scale(1.2); }
.sda-range::-moz-range-thumb { width: 12px; height: 12px; border-radius: 50%; background: var(--text-main); border: 3px solid var(--primary-color); cursor: pointer; }
.sda-range::-moz-range-track { height: 6px; border-radius: 999px; background: var(--border-strong); }
.sda-range::-moz-range-progress { height: 6px; border-radius: 999px; background: var(--primary-color); }

/* ---- Progress ---- */
.sda-progress { height: 6px; border-radius: 999px; overflow: hidden; background: var(--border-soft); }
.sda-progress > span { display: block; height: 100%; width: var(--value, 0%); border-radius: inherit;
    background: var(--sig-gradient, var(--primary-color)); transition: width .3s ease; }
.sda-progress--indeterminate > span { width: 40%; animation: sda-indeterminate 1.4s ease-in-out infinite; }
@keyframes sda-indeterminate { 0% { transform: translateX(-100%); } 100% { transform: translateX(260%); } }

/* ---- Tabs + segmented control ---- */
.sda-tabs { display: flex; gap: .25rem; border-bottom: 1px solid var(--border-soft); overflow-x: auto; scrollbar-width: none; }
.sda-tabs::-webkit-scrollbar { display: none; }
.sda-tab {
    position: relative; padding: .7rem 1rem; font: 600 .85rem/1 var(--app-font); color: var(--text-muted);
    background: none; border: 0; cursor: pointer; white-space: nowrap; transition: color .2s ease;
}
.sda-tab:hover { color: var(--text-main); }
.sda-tab[aria-selected="true"], .sda-tab.is-active { color: var(--primary-color); }
.sda-tab[aria-selected="true"]::after, .sda-tab.is-active::after {
    content: ""; position: absolute; left: .6rem; right: .6rem; bottom: -1px; height: 2px;
    border-radius: 2px; background: var(--primary-color); box-shadow: 0 0 12px var(--primary-glow);
}
.sda-segmented { display: inline-flex; padding: 3px; gap: 2px; background: var(--fill-soft); border: 1px solid var(--border-soft); border-radius: 999px; }
.sda-segmented button { padding: .4rem .95rem; font: 600 .8rem/1 var(--app-font); color: var(--text-muted); background: none; border: 0; border-radius: 999px; cursor: pointer; transition: all .2s ease; }
.sda-segmented button[aria-pressed="true"], .sda-segmented button.is-active { color: var(--on-primary, #fff); background: var(--primary-color); box-shadow: var(--shadow-sm); }

/* ---- Overlays: modal, menu, tooltip ---- */
.sda-backdrop { position: fixed; inset: 0; z-index: 90; background: color-mix(in srgb, var(--bg-color) 55%, rgba(0, 0, 0, .55)); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.sda-modal {
    position: fixed; z-index: 100; top: 50%; left: 50%; transform: translate(-50%, -50%);
    width: min(92vw, 520px); max-height: 86vh; overflow: auto; padding: 1.4rem;
    color: var(--text-main); background: var(--surface-color);
    border: 1px solid var(--border-soft); border-radius: calc(var(--radius-main) * 1.25); box-shadow: var(--shadow-lg);
    animation: sda-pop .22s cubic-bezier(.2, .9, .3, 1.2);
}
@keyframes sda-pop { from { opacity: 0; transform: translate(-50%, -46%) scale(.96); } to { opacity: 1; transform: translate(-50%, -50%) scale(1); } }
.sda-menu { min-width: 200px; padding: .35rem; background: var(--elevated-color); border: 1px solid var(--border-soft); border-radius: calc(var(--radius-main) * .8); box-shadow: var(--shadow-lg); }
.sda-menu__item { display: flex; align-items: center; gap: .6rem; width: 100%; padding: .55rem .75rem; font: 500 .85rem/1 var(--app-font); color: var(--text-main); background: none; border: 0; border-radius: calc(var(--radius-main) * .5); cursor: pointer; text-align: left; }
.sda-menu__item:hover, .sda-menu__item:focus-visible { background: var(--fill-hover); }
.sda-menu__item--danger { color: var(--danger-color); }
.sda-menu__sep { height: 1px; margin: .3rem .4rem; background: var(--border-soft); }
.sda-tooltip { position: relative; }
.sda-tooltip::after {
    content: attr(data-tip); position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translate(-50%, 4px);
    padding: .35rem .6rem; font: 500 .72rem/1.2 var(--app-font); white-space: nowrap; pointer-events: none;
    color: var(--bg-color); background: var(--text-main); border-radius: 6px; opacity: 0; transition: opacity .15s ease, transform .15s ease;
}
.sda-tooltip:hover::after, .sda-tooltip:focus-visible::after { opacity: 1; transform: translate(-50%, 0); }

/* ---- Alerts + toast variants ---- */
.sda-alert {
    --alert: var(--info-color); display: flex; gap: .75rem; align-items: flex-start; padding: .85rem 1rem;
    color: var(--text-main); background: color-mix(in srgb, var(--alert) 12%, var(--surface-color));
    border: 1px solid color-mix(in srgb, var(--alert) 35%, transparent); border-left: 4px solid var(--alert);
    border-radius: calc(var(--radius-main) * .6);
}
.sda-alert--success { --alert: var(--success-color); }
.sda-alert--warning { --alert: var(--warning-color); }
.sda-alert--danger  { --alert: var(--danger-color); }
.sda-toast--success { border-left: 4px solid var(--success-color) !important; }
.sda-toast--warning { border-left: 4px solid var(--warning-color) !important; }
.sda-toast--danger  { border-left: 4px solid var(--danger-color) !important; }

/* ---- Tables ---- */
.sda-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: .875rem; color: var(--text-main); }
.sda-table th { padding: .7rem 1rem; font: 700 .72rem/1 var(--app-font); letter-spacing: .08em; text-transform: uppercase; text-align: left; color: var(--text-muted); background: var(--fill-soft); border-bottom: 1px solid var(--border-soft); position: sticky; top: 0; }
.sda-table td { padding: .75rem 1rem; border-bottom: 1px solid var(--border-soft); }
.sda-table tbody tr { transition: background-color .15s ease; }
.sda-table tbody tr:hover { background: var(--fill-hover); }
.sda-table tbody tr:last-child td { border-bottom: 0; }

/* ---- Misc ---- */
.sda-avatar { display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; overflow: hidden; font: 700 .85rem/1 var(--app-font); color: var(--on-primary, #fff); background: var(--sig-gradient, var(--primary-color)); border: 2px solid var(--surface-color); }
.sda-avatar img { width: 100%; height: 100%; object-fit: cover; }
.sda-divider { height: 1px; border: 0; margin: 1rem 0; background: var(--border-soft); }
.sda-kbd { padding: .1rem .4rem; font: 600 .72rem/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; color: var(--text-main); background: var(--fill-soft); border: 1px solid var(--border-strong); border-bottom-width: 2px; border-radius: 5px; }
.sda-empty { display: grid; place-items: center; gap: .5rem; padding: 2.5rem 1rem; text-align: center; color: var(--text-muted); border: 1px dashed var(--border-strong); border-radius: var(--radius-main); }
.sda-skeleton {
    border-radius: calc(var(--radius-main) * .5);
    background: linear-gradient(100deg, var(--fill-soft) 30%, var(--fill-hover) 50%, var(--fill-soft) 70%);
    background-size: 220% 100%; animation: sda-shimmer 1.4s linear infinite;
}
@keyframes sda-shimmer { from { background-position: 120% 0; } to { background-position: -120% 0; } }
.sda-gradient-text { background: var(--sig-gradient, linear-gradient(135deg, var(--primary-color), var(--complementary-color))); -webkit-background-clip: text; background-clip: text; color: transparent; }
.sda-glow { box-shadow: 0 0 0 1px var(--border-soft), 0 12px 40px -12px var(--sig-glow, var(--primary-glow)); }
.sda-surface   { background: var(--surface-color); color: var(--text-main); }
.sda-elevated  { background: var(--elevated-color); color: var(--text-main); }
.sda-muted     { color: var(--text-muted); }
.sda-primary   { color: var(--primary-color); }
.sda-on-primary{ color: var(--on-primary, #fff); background: var(--primary-color); }

/* ---- Theme picker (for a settings screen driven by SDATheme.list()) ---- */
.sda-theme-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .75rem; }
.sda-theme-swatch {
    position: relative; display: grid; gap: .5rem; padding: .7rem; text-align: left; cursor: pointer;
    color: var(--text-main); background: var(--surface-color);
    border: 2px solid var(--border-soft); border-radius: var(--radius-main);
    transition: transform .15s ease, border-color .2s ease, box-shadow .2s ease;
}
.sda-theme-swatch:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.sda-theme-swatch[aria-checked="true"], .sda-theme-swatch.is-active { border-color: var(--primary-color); box-shadow: 0 0 0 3px var(--ring); }
.sda-theme-swatch__preview { display: flex; height: 46px; overflow: hidden; border-radius: calc(var(--radius-main) * .6); border: 1px solid var(--border-soft); }
.sda-theme-swatch__preview > i { flex: 1; }
.sda-theme-swatch__name { font: 700 .82rem/1.1 var(--app-font); }
.sda-theme-swatch__mode { font: 500 .68rem/1 var(--app-font); letter-spacing: .08em; text-transform: uppercase; color: var(--text-muted); }

/* ==========================================================================
   10. PRINT, CONTRAST + RESPONSIVE
   ========================================================================== */
@media print {
    [data-theme-colors], html[data-theme], body[data-theme] { background: #fff !important; color: #000 !important; }
    .glass, .sda-backdrop, .sda-toast, #desk-mini-island, .full-mini-player { display: none !important; }
    .sda-card, .sda-table { box-shadow: none !important; border-color: #bbb !important; }
}
@media (prefers-contrast: more) {
    [data-theme-colors] {
        --border-soft: color-mix(in srgb, var(--text-main) 38%, transparent);
        --border-strong: color-mix(in srgb, var(--text-main) 60%, transparent);
        --text-muted: color-mix(in srgb, var(--t-muted) 60%, var(--t-text));
    }
    .sda-btn, .sda-card, .sda-input { border-width: 2px; }
}
@media (max-width: 649px) {
    .sda-modal { width: 100vw; top: auto; bottom: 0; left: 0; transform: none; max-height: 90vh;
        border-radius: calc(var(--radius-main) * 1.5) calc(var(--radius-main) * 1.5) 0 0; animation: sda-sheet .26s ease; }
    .sda-theme-grid { grid-template-columns: repeat(2, 1fr); }
    .sda-btn { min-height: 44px; }
}
@keyframes sda-sheet { from { transform: translateY(100%); } to { transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) {
    .sda-btn, .sda-card, .sda-chip, .sda-modal, .sda-progress > span, .sda-theme-swatch { transition: none !important; animation: none !important; }
    .sda-skeleton { animation: none; }
}

/* ==========================================================================
   11. THEME SIGNATURES
       Every theme gets its own gradient, glow and page atmosphere. These are
       generated from one recipe so all 17 stay consistent; tweak a line to
       restyle a single theme. Consumed by .sda-btn--gradient, .sda-progress,
       .sda-avatar, .sda-glow and the hero / body / tab rules below.
   ========================================================================== */

/* Beacon Dark */
:root[data-theme="beacon-dark"], :root[data-theme-colors="beacon-dark"] {
    --sig-gradient: linear-gradient(135deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 40%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 15% -10%, color-mix(in srgb, var(--primary-color) 16%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 11%, transparent), transparent 70%);
}

/* Obsidian */
:root[data-theme="obsidian"], :root[data-theme-colors="obsidian"] {
    --sig-gradient: linear-gradient(150deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 36%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 85% -15%, color-mix(in srgb, var(--primary-color) 14%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 9%, transparent), transparent 70%);
}

/* Nebula */
:root[data-theme="nebula"], :root[data-theme-colors="nebula"] {
    --sig-gradient: linear-gradient(125deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 44%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 50% -20%, color-mix(in srgb, var(--primary-color) 20%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 15%, transparent), transparent 70%);
}

/* Aura */
:root[data-theme="aura"], :root[data-theme-colors="aura"] {
    --sig-gradient: linear-gradient(90deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 55%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 50% -25%, color-mix(in srgb, var(--primary-color) 18%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 13%, transparent), transparent 70%);
}

/* Xine */
:root[data-theme="xine"], :root[data-theme-colors="xine"] {
    --sig-gradient: linear-gradient(140deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 34%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 10% -5%, color-mix(in srgb, var(--primary-color) 15%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 10%, transparent), transparent 70%);
}

/* Oceanic */
:root[data-theme="oceanic"], :root[data-theme-colors="oceanic"] {
    --sig-gradient: linear-gradient(160deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 38%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 90% -10%, color-mix(in srgb, var(--primary-color) 18%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 13%, transparent), transparent 70%);
}

/* Ember */
:root[data-theme="ember"], :root[data-theme-colors="ember"] {
    --sig-gradient: linear-gradient(120deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 42%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 20% -15%, color-mix(in srgb, var(--primary-color) 17%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 12%, transparent), transparent 70%);
}

/* Crimson */
:root[data-theme="crimson"], :root[data-theme-colors="crimson"] {
    --sig-gradient: linear-gradient(130deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 40%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 80% -10%, color-mix(in srgb, var(--primary-color) 15%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 10%, transparent), transparent 70%);
}

/* Royal Gold */
:root[data-theme="royal-gold"], :root[data-theme-colors="royal-gold"] {
    --sig-gradient: linear-gradient(145deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 32%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 50% -30%, color-mix(in srgb, var(--primary-color) 12%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 7%, transparent), transparent 70%);
}

/* Arctic */
:root[data-theme="arctic"], :root[data-theme-colors="arctic"] {
    --sig-gradient: linear-gradient(155deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 30%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 30% -15%, color-mix(in srgb, var(--primary-color) 13%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 8%, transparent), transparent 70%);
}

/* Graphite */
:root[data-theme="graphite"], :root[data-theme-colors="graphite"] {
    --sig-gradient: linear-gradient(135deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 18%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 50% -25%, color-mix(in srgb, var(--primary-color) 7%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 3%, transparent), transparent 70%);
}

/* Pure White */
:root[data-theme="pure-white"], :root[data-theme-colors="pure-white"] {
    --sig-gradient: linear-gradient(135deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 22%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 15% -10%, color-mix(in srgb, var(--primary-color) 9%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 4%, transparent), transparent 70%);
}

/* Porcelain */
:root[data-theme="porcelain"], :root[data-theme-colors="porcelain"] {
    --sig-gradient: linear-gradient(150deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 22%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 85% -15%, color-mix(in srgb, var(--primary-color) 9%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 4%, transparent), transparent 70%);
}

/* Sanctuary */
:root[data-theme="sanctuary"], :root[data-theme-colors="sanctuary"] {
    --sig-gradient: linear-gradient(125deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 26%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 50% -20%, color-mix(in srgb, var(--primary-color) 14%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 9%, transparent), transparent 70%);
}

/* Rosewater */
:root[data-theme="rosewater"], :root[data-theme-colors="rosewater"] {
    --sig-gradient: linear-gradient(140deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 26%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 20% -10%, color-mix(in srgb, var(--primary-color) 12%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 7%, transparent), transparent 70%);
}

/* Mint */
:root[data-theme="mint"], :root[data-theme-colors="mint"] {
    --sig-gradient: linear-gradient(155deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 24%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 80% -10%, color-mix(in srgb, var(--primary-color) 12%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 7%, transparent), transparent 70%);
}

/* Lavender */
:root[data-theme="lavender"], :root[data-theme-colors="lavender"] {
    --sig-gradient: linear-gradient(130deg, var(--primary-color) 0%, color-mix(in srgb, var(--primary-color) 45%, var(--complementary-color)) 48%, var(--complementary-color) 100%);
    --sig-glow: color-mix(in srgb, var(--primary-color) 26%, transparent);
    --sig-atmosphere: radial-gradient(ellipse 70% 55% at 40% -15%, color-mix(in srgb, var(--primary-color) 12%, transparent), transparent 70%),
                      radial-gradient(ellipse 50% 40% at 100% 100%, color-mix(in srgb, var(--complementary-color) 7%, transparent), transparent 70%);
}

/* Signature consumers (shared by every theme) */
body[data-theme] { background-image: var(--sig-atmosphere); background-attachment: fixed; background-repeat: no-repeat; }
[data-theme-colors] .sda-tab[aria-selected="true"]::after { background: var(--sig-gradient); }
[data-theme-colors] #hero-btn-prev, [data-theme-colors] #hero-btn-next, [data-theme-colors] #hero-btn-shuffle { box-shadow: 0 8px 26px -8px var(--sig-glow) !important; }
[data-theme-colors] #hero-card-container { box-shadow: 0 24px 70px -26px var(--sig-glow); }
[data-theme-colors] .bg-primary:hover { filter: brightness(1.06); }
[data-theme-colors] .bg-primary { transition: filter .2s ease, box-shadow .2s ease; }
[data-theme-colors] button.bg-primary:hover { box-shadow: 0 8px 24px -10px var(--sig-glow); }
[data-theme-colors] input[type="range"] { accent-color: var(--primary-color); }
[data-theme-colors] progress { accent-color: var(--primary-color); }
[data-theme-colors] a:not([class]) { color: var(--primary-color); text-underline-offset: 3px; }
[data-theme-colors] a:not([class]):hover { color: var(--complementary-color); }
[data-theme-colors] hr { border-color: var(--border-soft); }
[data-theme-colors] kbd { background: var(--fill-soft); border: 1px solid var(--border-strong); border-radius: 5px; padding: 0 .35em; }
[data-theme-colors] code:not([class]) { background: var(--fill-soft); border: 1px solid var(--border-soft); border-radius: 5px; padding: .08em .35em; }
[data-theme-colors] table { border-color: var(--border-soft); }
[data-theme-colors] dialog { color: var(--text-main); background: var(--surface-color); border: 1px solid var(--border-soft); border-radius: var(--radius-main); }
[data-theme-colors] dialog::backdrop { background: color-mix(in srgb, var(--bg-color) 60%, rgba(0, 0, 0, .5)); backdrop-filter: blur(4px); }

/* Aura: keep the neon identity extra crisp */
[data-theme="aura"] .sda-btn--primary, [data-theme="aura"] .sda-btn--gradient { box-shadow: 0 0 22px rgba(0, 242, 255, .35); }
[data-theme="aura"] .sda-card--hover:hover { box-shadow: 0 0 28px rgba(0, 242, 255, .18); }
[data-theme="aura"] .sda-badge { text-shadow: 0 0 8px currentColor; }
/* Royal Gold: restrained metallic edge */
[data-theme="royal-gold"] .sda-card, [data-theme="royal-gold"] .sda-modal { border-color: color-mix(in srgb, var(--primary-color) 22%, transparent); }
[data-theme="royal-gold"] .sda-btn--primary { background: linear-gradient(180deg, #e6c65a, #b8932a); }
/* Graphite: flat, no color glow */
[data-theme="graphite"] { --primary-glow: transparent; --sig-glow: transparent; }
[data-theme="graphite"] .sda-btn--primary { box-shadow: none; }
/* Sanctuary / Rosewater: softer, rounder surfaces */
[data-theme="sanctuary"] .sda-card, [data-theme="rosewater"] .sda-card { box-shadow: 0 8px 24px -14px rgba(var(--t-shadow-rgb), .35); }

/* ==========================================================================
   12. DESIGN-SYSTEM TOKENS (type, space, radius, motion, layers)
   ========================================================================== */
:root {
    /* Type scale (fluid, 1.2 ratio) */
    --fs-2xs: .68rem; --fs-xs: .75rem; --fs-sm: .875rem; --fs-md: 1rem;
    --fs-lg: clamp(1.1rem, 1rem + .5vw, 1.25rem);
    --fs-xl: clamp(1.3rem, 1.1rem + 1vw, 1.6rem);
    --fs-2xl: clamp(1.6rem, 1.3rem + 1.6vw, 2.1rem);
    --fs-3xl: clamp(2rem, 1.5rem + 2.6vw, 3rem);
    --lh-tight: 1.15; --lh-snug: 1.3; --lh-body: 1.55;
    --tracking-tight: -.02em; --tracking-wide: .08em;

    /* Spacing (4px base) */
    --sp-1: .25rem; --sp-2: .5rem; --sp-3: .75rem; --sp-4: 1rem; --sp-5: 1.25rem;
    --sp-6: 1.5rem; --sp-8: 2rem; --sp-10: 2.5rem; --sp-12: 3rem; --sp-16: 4rem;

    /* Radius scale (relative to the active theme's --radius-main) */
    --r-xs: 4px; --r-sm: calc(var(--radius-main, 12px) * .5); --r-md: calc(var(--radius-main, 12px) * .75);
    --r-lg: var(--radius-main, 12px); --r-xl: calc(var(--radius-main, 12px) * 1.5); --r-full: 999px;

    /* Motion */
    --ease-out: cubic-bezier(.16, 1, .3, 1);
    --ease-spring: cubic-bezier(.2, .9, .3, 1.2);
    --ease-in-out: cubic-bezier(.65, 0, .35, 1);
    --dur-fast: .12s; --dur-base: .2s; --dur-slow: .35s;

    /* Layers */
    --z-base: 0; --z-sticky: 20; --z-drawer: 60; --z-backdrop: 90; --z-modal: 100; --z-toast: 120; --z-tooltip: 140;

    /* Layout */
    --container-sm: 640px; --container-md: 880px; --container-lg: 1180px; --container-xl: 1440px;
    --safe-top: env(safe-area-inset-top, 0px); --safe-bottom: env(safe-area-inset-bottom, 0px);
}
@media (prefers-reduced-motion: reduce) {
    :root { --dur-fast: 0s; --dur-base: 0s; --dur-slow: 0s; }
}

/* ==========================================================================
   13. LAYOUT + TYPOGRAPHY UTILITIES
   ========================================================================== */
.sda-container { width: min(100% - 2rem, var(--container-lg)); margin-inline: auto; }
.sda-container--sm { width: min(100% - 2rem, var(--container-sm)); }
.sda-container--md { width: min(100% - 2rem, var(--container-md)); }
.sda-container--xl { width: min(100% - 2rem, var(--container-xl)); }
.sda-stack   { display: flex; flex-direction: column; gap: var(--gap, var(--sp-4)); }
.sda-row     { display: flex; align-items: center; gap: var(--gap, var(--sp-3)); }
.sda-wrap    { flex-wrap: wrap; }
.sda-between { justify-content: space-between; }
.sda-center  { justify-content: center; }
.sda-grow    { flex: 1 1 0; min-width: 0; }
.sda-grid    { display: grid; gap: var(--gap, var(--sp-4)); grid-template-columns: repeat(auto-fill, minmax(var(--min, 220px), 1fr)); }
.sda-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sda-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 649px) { .sda-grid--2, .sda-grid--3 { grid-template-columns: minmax(0, 1fr); } }

.sda-h1 { font: 800 var(--fs-3xl)/var(--lh-tight) var(--app-font); letter-spacing: var(--tracking-tight); color: var(--text-main); }
.sda-h2 { font: 700 var(--fs-2xl)/var(--lh-tight) var(--app-font); letter-spacing: var(--tracking-tight); color: var(--text-main); }
.sda-h3 { font: 700 var(--fs-xl)/var(--lh-snug) var(--app-font); color: var(--text-main); }
.sda-h4 { font: 700 var(--fs-lg)/var(--lh-snug) var(--app-font); color: var(--text-main); }
.sda-body { font: 400 var(--fs-md)/var(--lh-body) var(--app-font); color: var(--text-main); }
.sda-small { font: 400 var(--fs-sm)/var(--lh-body) var(--app-font); color: var(--text-muted); }
.sda-eyebrow { font: 700 var(--fs-2xs)/1 var(--app-font); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--primary-color); }
.sda-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sda-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.sda-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.sda-tabular { font-variant-numeric: tabular-nums; }
.sda-no-scrollbar { scrollbar-width: none; }
.sda-no-scrollbar::-webkit-scrollbar { display: none; }

/* ==========================================================================
   14. ACCESSIBILITY HELPERS
   ========================================================================== */
.sda-sr-only {
    position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0;
    overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.sda-skip-link {
    position: fixed; z-index: var(--z-tooltip); top: var(--sp-2); left: var(--sp-2);
    padding: var(--sp-2) var(--sp-4); font: 700 var(--fs-sm)/1 var(--app-font);
    color: var(--on-primary, #fff); background: var(--primary-color); border-radius: var(--r-md);
    transform: translateY(-200%); transition: transform var(--dur-base) var(--ease-out);
}
.sda-skip-link:focus { transform: translateY(0); }
.sda-touch { min-width: 44px; min-height: 44px; }
.sda-focus-ring:focus-visible { outline: 2px solid var(--primary-color); outline-offset: 2px; box-shadow: 0 0 0 4px var(--ring); }

/* ==========================================================================
   15. MOTION UTILITIES
   ========================================================================== */
@keyframes sda-fade-in  { from { opacity: 0; } to { opacity: 1; } }
@keyframes sda-rise     { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
@keyframes sda-pulse    { 0%, 100% { box-shadow: 0 0 0 0 var(--primary-glow); } 50% { box-shadow: 0 0 0 10px transparent; } }
@keyframes sda-spin     { to { transform: rotate(360deg); } }
.sda-fade-in { animation: sda-fade-in var(--dur-slow) var(--ease-out) both; }
.sda-rise    { animation: sda-rise var(--dur-slow) var(--ease-out) both; }
.sda-pulse   { animation: sda-pulse 2s ease-out infinite; }
.sda-spinner {
    width: 22px; height: 22px; border-radius: 50%;
    border: 3px solid var(--border-strong); border-top-color: var(--primary-color);
    animation: sda-spin .8s linear infinite;
}
.sda-stagger > * { animation: sda-rise var(--dur-slow) var(--ease-out) both; }
.sda-stagger > *:nth-child(1) { animation-delay: .02s; } .sda-stagger > *:nth-child(2) { animation-delay: .06s; }
.sda-stagger > *:nth-child(3) { animation-delay: .10s; } .sda-stagger > *:nth-child(4) { animation-delay: .14s; }
.sda-stagger > *:nth-child(5) { animation-delay: .18s; } .sda-stagger > *:nth-child(6) { animation-delay: .22s; }
.sda-stagger > *:nth-child(7) { animation-delay: .26s; } .sda-stagger > *:nth-child(8) { animation-delay: .30s; }
@media (prefers-reduced-motion: reduce) {
    .sda-fade-in, .sda-rise, .sda-pulse, .sda-stagger > * { animation: none !important; }
    .sda-spinner { animation-duration: 2s; }
}

/* ==========================================================================
   16. MOBILE SHELL POLISH
   ========================================================================== */
@media (max-width: 649px) {
    [data-theme-colors] .glass { padding-bottom: var(--safe-bottom); }
    [data-theme-colors] .sda-toast { margin-bottom: var(--safe-bottom); }
    [data-theme-colors] body[data-theme] { -webkit-tap-highlight-color: color-mix(in srgb, var(--primary-color) 18%, transparent); }
    [data-theme-colors] input, [data-theme-colors] select, [data-theme-colors] textarea { font-size: max(16px, 1em); }
}
@media (hover: none) {
    .sda-btn:hover, .sda-card--hover:hover, .sda-theme-swatch:hover { transform: none; box-shadow: none; filter: none; }
}

/* ==========================================================================
   HOME HERO — image-led feature banner, shared by every named theme
   ========================================================================== */
#hero-card-container.home-hero {
    position: relative !important;
    display: block;
    width: 100%;
    height: clamp(460px, 48vw, 820px) !important;
    min-height: 460px;
    max-height: min(82vh, 820px);
    margin: 0 0 clamp(36px, 4vw, 64px) !important;
    overflow: hidden;
    isolation: isolate;
    border: 1px solid color-mix(in srgb, #fff 18%, transparent) !important;
    border-radius: clamp(24px, 3vw, 42px) !important;
    background: #111 !important;
    box-shadow: 0 28px 90px -34px rgba(0,0,0,.68), 0 16px 54px -28px var(--primary-glow) !important;
    color: #fff !important;
    cursor: default;
    transition: opacity .36s ease, transform .36s ease, border-color .3s ease;
}
#hero-card-container.home-hero.is-swapping { opacity: .18; transform: scale(.985); }
.home-hero__backdrop { position: absolute; inset: 0; overflow: hidden; border-radius: inherit; z-index: 0; }
.home-hero__image {
    position: absolute; inset: 0; width: 100%; height: 100%;
    object-fit: cover; object-position: center 52%;
    opacity: 1; transform: scale(1.015);
    filter: saturate(.9);
    transition: opacity .65s ease, transform 8s ease;
}
.home-hero__image.is-changing { opacity: .38; transform: scale(1.055); }
.home-hero__scrim {
    position: absolute; inset: 0;
    background:
        linear-gradient(90deg, rgba(5,10,20,.92) 0%, rgba(5,10,20,.77) 34%, rgba(5,10,20,.32) 60%, rgba(5,10,20,.04) 100%),
        linear-gradient(0deg, rgba(3,7,14,.7) 0%, transparent 36%, rgba(3,7,14,.12) 100%);
}
.home-hero__content {
    position: absolute; inset: 0; z-index: 1;
    display: flex; flex-direction: column; justify-content: space-between;
    padding: clamp(28px, 4.2vw, 70px);
    color: #fff;
}
.home-hero__copy { width: min(900px, 64%); margin-block: auto; padding-block: 12px 26px; }
.home-hero__eyebrow {
    width: fit-content; display: inline-flex; align-items: center; gap: 12px;
    margin-bottom: clamp(20px, 2vw, 32px); padding: 12px 20px;
    border: 1px solid rgba(255,255,255,.24); border-radius: 999px;
    background: rgba(7,14,27,.56); color: #fff;
    backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
    font-size: clamp(10px, .9vw, 14px); font-weight: 850;
    letter-spacing: .17em; text-transform: uppercase;
}
.home-hero__eyebrow svg { width: 24px; height: 24px; stroke-width: 2.1; }
.home-hero__eyebrow b { color: var(--primary-color); font-size: 1.15em; }
.home-hero__title {
    max-width: 950px; margin: 0;
    color: #fff !important;
    font-size: clamp(48px, 7.5vw, 126px); font-weight: 950;
    line-height: .91; letter-spacing: -.065em;
    text-wrap: balance; text-shadow: 0 4px 32px rgba(0,0,0,.24);
}
.home-hero__accent { color: var(--primary-color) !important; }
.home-hero__highlight {
    min-height: 1.2em; margin: 18px 0 0;
    color: rgba(255,255,255,.78); font-size: clamp(12px, 1.05vw, 16px);
    font-weight: 750; letter-spacing: .13em; text-transform: uppercase;
    transition: opacity .25s ease, transform .25s ease;
}
.home-hero__verse {
    display: flex; align-items: flex-start; gap: 16px;
    max-width: 760px; margin-top: clamp(22px, 2.5vw, 38px);
    color: #fff;
}
.home-hero__quote-mark {
    flex: 0 0 auto; margin-top: -8px; color: var(--primary-color);
    font-family: Georgia, serif; font-size: clamp(54px, 5vw, 82px);
    font-weight: 900; line-height: .9;
}
.home-hero__verse p {
    margin: 0; color: rgba(255,255,255,.94) !important;
    font-size: clamp(17px, 1.75vw, 28px); font-weight: 520;
    font-style: italic; line-height: 1.35; letter-spacing: -.025em;
}
.home-hero__verse > div > span {
    display: inline-flex; align-items: center; margin-top: 16px;
    padding: 8px 15px; border: 1px solid rgba(255,255,255,.16);
    border-radius: 999px; background: rgba(255,255,255,.16);
    color: #fff !important; font-size: 13px; font-weight: 750;
}
.home-hero__footer { display: flex; align-items: flex-start; flex-direction: column; justify-content: flex-end; gap: 18px; }
.home-hero__now-playing { min-width: 0; max-width: min(620px, 48%); }
.home-hero__now-label {
    display: block; margin-bottom: 8px; color: rgba(255,255,255,.68);
    font-size: 10px; font-weight: 900; letter-spacing: .19em; text-transform: uppercase;
}
.home-hero__now-playing .home-hero-current-track { max-width: 100%; }
.home-hero__now-playing .home-hero-title-text { font-size: clamp(18px, 1.5vw, 25px); }
.home-hero__actions { display: flex; align-items: center; gap: 14px; flex: 0 0 auto; }
.home-hero__actions button {
    min-height: 62px; display: inline-flex; align-items: center; justify-content: center; gap: 12px;
    padding: 0 28px; border-radius: 999px; font-size: clamp(14px, 1.1vw, 18px);
    font-weight: 850; letter-spacing: -.02em; transition: transform .2s ease, filter .2s ease, background .2s ease;
}
.home-hero__actions button:hover { transform: translateY(-2px); filter: brightness(1.08); }
.home-hero__actions button:active { transform: scale(.97); }
.home-hero__actions button svg { width: 21px; height: 21px; }
.home-hero__listen {
    border: 1px solid var(--primary-color); background: var(--primary-color);
    color: var(--on-primary, #fff); box-shadow: 0 12px 32px color-mix(in srgb, var(--primary-color) 32%, transparent);
}
.home-hero__explore {
    border: 1px solid rgba(255,255,255,.62); background: rgba(10,16,28,.28);
    color: #fff; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
}
.home-hero__carousel {
    position: absolute; z-index: 2; left: 0; right: 0; bottom: clamp(24px, 2.3vw, 38px);
    display: flex; align-items: center; justify-content: flex-end; padding: 0 clamp(28px, 3.5vw, 58px);
}
.home-hero__dots, .home-hero__arrows { display: flex; align-items: center; }
.home-hero__dots { position: absolute; left: 50%; transform: translateX(-50%); display: flex; gap: 13px; }
.home-hero__dot {
    width: 12px; height: 12px; padding: 0; border: 1.5px solid rgba(255,255,255,.95);
    border-radius: 50%; background: rgba(7,14,27,.2); cursor: pointer;
    transition: transform .2s ease, background-color .2s ease, border-color .2s ease;
}
.home-hero__dot:hover { transform: scale(1.18); }
.home-hero__dot.is-active { border-color: var(--primary-color); background: var(--primary-color); }
.home-hero__arrows { display: flex; gap: 12px; }
.home-hero__arrows button {
    width: 54px; height: 54px; display: grid; place-items: center; padding: 0;
    border: 1px solid rgba(255,255,255,.45); border-radius: 50%;
    background: rgba(7,14,27,.62); color: #fff;
    backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
    cursor: pointer; transition: transform .2s ease, background-color .2s ease, border-color .2s ease;
}
.home-hero__arrows button:hover { transform: scale(1.07); background: var(--primary-color); border-color: var(--primary-color); color: var(--on-primary,#fff); }
.home-hero__arrows button svg { width: 22px; height: 22px; }
@media (max-width: 1023px) {
    .home-hero__copy { width: min(760px, 76%); }
    .home-hero__title { font-size: clamp(46px, 8vw, 82px); }
    .home-hero__footer { align-items: flex-start; flex-direction: column; gap: 22px; }
    .home-hero__now-playing { max-width: 70%; }
    .home-hero__carousel { left: clamp(28px, 4vw, 48px); right: clamp(28px, 4vw, 48px); justify-content: space-between; }
}
@media (max-width: 649px) {
    #hero-card-container.home-hero {
        height: min(680px, 76svh) !important; min-height: 540px; max-height: 680px;
        margin: 0 -2px 34px !important; width: calc(100% + 4px);
        border-radius: 28px !important;
    }
    .home-hero__image { object-position: 58% center; }
    .home-hero__scrim {
        background:
            linear-gradient(90deg, rgba(5,10,20,.86), rgba(5,10,20,.47) 72%, rgba(5,10,20,.28)),
            linear-gradient(0deg, rgba(3,7,14,.86), transparent 62%, rgba(3,7,14,.18));
    }
    .home-hero__content { padding: 26px 22px 90px; }
    .home-hero__copy { width: 100%; margin-block: auto; padding: 0 0 18px; }
    .home-hero__eyebrow { gap: 9px; margin-bottom: 24px; padding: 10px 14px; font-size: 9px; letter-spacing: .13em; }
    .home-hero__eyebrow svg { width: 20px; height: 20px; }
    .home-hero__title { max-width: 360px; font-size: clamp(46px, 13vw, 68px); letter-spacing: -.06em; }
    .home-hero__highlight { margin-top: 14px; font-size: 10px; letter-spacing: .1em; }
    .home-hero__verse { gap: 10px; margin-top: 22px; max-width: 100%; }
    .home-hero__quote-mark { font-size: 48px; }
    .home-hero__verse p { font-size: 16px; line-height: 1.4; }
    .home-hero__verse > div > span { margin-top: 12px; padding: 7px 11px; font-size: 11px; }
    .home-hero__footer { gap: 18px; }
    .home-hero__now-playing { max-width: 100%; width: 100%; }
    .home-hero__now-playing .home-hero-current-track { gap: 10px; }
    .home-hero__now-playing .home-hero-title-text { max-width: 66vw; font-size: 17px; }
    .home-hero__now-playing .home-hero-wave { height: 24px; }
    .home-hero__actions { width: 100%; gap: 9px; }
    .home-hero__actions button { min-height: 50px; flex: 1 1 0; gap: 8px; padding: 0 12px; font-size: 12px; }
    .home-hero__actions button svg { width: 18px; height: 18px; }
    .home-hero__carousel { left: 0; right: 0; bottom: 18px; justify-content: flex-end; padding: 0 22px; }
    .home-hero__dots { left: 50%; }
    .home-hero__dots { gap: 10px; }
    .home-hero__dot { width: 9px; height: 9px; }
    .home-hero__arrows { gap: 8px; }
    .home-hero__arrows button { width: 40px; height: 40px; }
    .home-hero__arrows button svg { width: 18px; height: 18px; }
}
@media (prefers-reduced-motion: reduce) {
    .home-hero *, .home-hero *::before, .home-hero *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

/* HOME NAV ACTION DOCK — only populated while Home is active. */
.home-page-header {
    display: flex; align-items: center; justify-content: space-between;
    min-height: 42px;
}
.home-mobile-logo { width: 28px; height: 28px; object-fit: contain; opacity: .76; }
#home-header-actions-slot { margin-left: auto; }
#home-header-actions-slot #home-top-actions { display: flex; align-items: center; gap: 10px; }
#home-top-actions { min-width: 0; }
.home-profile-control {
    display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    padding: 0; border: 0; background: transparent; color: var(--text-main);
    cursor: pointer; text-align: left;
}
.home-profile-avatar { position: relative; display: inline-flex; width: 44px; height: 44px; flex: 0 0 44px; }
.home-profile-avatar img { width: 100%; height: 100%; }
.home-profile-label { display: none; color: var(--text-main); font-size: 12px; font-weight: 750; }
.home-recommendation-heading { display: flex; min-width: 0; flex-direction: column; gap: 3px; }
.home-recommendation-spotlight {
    max-width: min(460px, 48vw); min-height: 1em; margin: 0;
    overflow: hidden; color: var(--text-muted); font-size: 11px; font-weight: 700;
    line-height: 1.35; text-overflow: ellipsis; white-space: nowrap;
    transition: opacity .25s ease, transform .25s ease;
}
#nav #desktop-home-utilities { display: none; }

@media (min-width: 650px) {
    .home-page-header { display: none !important; }
    #nav #desktop-home-utilities:not(:empty) {
        display: flex; flex-direction: column; gap: 10px;
        width: 100%; margin-top: auto; padding-top: 16px;
        border-top: 1px solid var(--border-soft);
    }
    #nav #desktop-home-utilities #home-top-actions {
        display: flex; flex-direction: column; align-items: stretch; gap: 14px;
        width: 100%;
    }
    #nav #desktop-home-utilities #top-actions {
        display: grid; grid-template-columns: repeat(4, 36px);
        justify-content: space-between; gap: 6px; width: 100%;
    }
    #nav #desktop-home-utilities #top-actions button {
        width: 36px; height: 36px; padding: 0;
    }
    #nav #desktop-home-utilities .home-profile-control {
        justify-content: flex-start; width: 100%; min-height: 46px;
        padding: 3px 8px; border-radius: 14px;
        background: color-mix(in srgb, var(--text-main) 5%, transparent);
    }
    #nav #desktop-home-utilities .home-profile-avatar { width: 38px; height: 38px; flex-basis: 38px; }
    #nav #desktop-home-utilities .home-profile-label { display: inline; }
    body.desktop-nav-collapsed #nav #desktop-home-utilities #home-top-actions { align-items: center; }
    body.desktop-nav-collapsed #nav #desktop-home-utilities #top-actions {
        width: 42px; grid-template-columns: repeat(2, 18px); justify-content: center; gap: 6px;
    }
    body.desktop-nav-collapsed #nav #desktop-home-utilities #top-actions button {
        width: 18px; height: 28px; border: 0; background: transparent;
    }
    body.desktop-nav-collapsed #nav #desktop-home-utilities .home-profile-control {
        width: 44px; min-height: 44px; justify-content: center; padding: 0; background: transparent;
    }
    body.desktop-nav-collapsed #nav #desktop-home-utilities .home-profile-label { display: none; }
}

/* Keep the single daily-mix action clear of the image pagination at every size. */
#hero-card-container.home-hero {
    height: clamp(420px, 46vw, 760px) !important;
    min-height: 420px;
    max-height: none;
}
.home-hero__footer {
    display: flex; align-items: flex-end; justify-content: flex-end;
    flex-direction: row; gap: 18px; width: 100%;
}
.home-hero__actions { display: flex; justify-content: flex-end; width: auto; }
.home-hero__actions button { flex: 0 0 auto; }
@media (max-width: 1023px) {
    .home-hero__footer { align-items: flex-end; flex-direction: row; }
}
@media (max-width: 649px) {
    #hero-card-container.home-hero {
        height: clamp(520px, 76svh, 680px) !important;
        min-height: 520px; max-height: none;
    }
    .home-hero__footer { align-items: flex-end; justify-content: flex-end; }
    .home-hero__actions { width: auto; margin-left: auto; }
    .home-hero__actions button { min-height: 50px; flex: 0 0 auto; padding: 0 20px; }
    .home-recommendation-spotlight { max-width: min(48vw, 220px); font-size: 10px; }
}

/* Stable, compact home hero controls and content */
#hero-card-container.home-hero {
    height: clamp(480px, 48vw, 720px) !important;
    min-height: 440px;
    max-height: 84svh;
}
.home-hero__content { padding: clamp(26px, 4vw, 58px); }
.home-hero__copy { width: min(820px, 68%); padding-block: 0 74px; }
.home-hero__brand {
    position: absolute; z-index: 3; top: clamp(22px, 3vw, 42px); right: clamp(22px, 3vw, 42px);
    width: clamp(42px, 5vw, 68px); height: clamp(42px, 5vw, 68px);
    object-fit: contain; filter: drop-shadow(0 3px 14px rgba(0,0,0,.32));
}
.home-hero__eyebrow { margin-bottom: clamp(16px, 2vw, 28px); }
.home-hero__tagline { display: inline-flex; align-items: center; gap: .55em; white-space: nowrap; }
.home-hero__tagline > span { transition: opacity .2s ease, transform .2s ease; }
.home-hero__tagline > span.is-changing { opacity: 0; transform: translateY(4px); }
.home-hero__title {
    display: flex; flex-direction: column; align-items: flex-start; gap: 0;
    min-height: 1.82em; font-size: clamp(46px, 6.4vw, 104px); line-height: .91;
    transition: opacity .25s ease, transform .25s ease;
}
.home-hero__title.is-changing { opacity: .35; transform: translateY(5px); }
.home-hero__title-line {
    display: block; width: 100%; height: .91em; overflow: hidden;
    text-overflow: ellipsis; white-space: nowrap;
}
.home-hero__language-tag {
    display: inline; margin-left: .45em; color: rgba(255,255,255,.76);
    font-size: clamp(8px, .72vw, 11px); font-style: italic; font-weight: 650;
    letter-spacing: .02em; line-height: 0; vertical-align: super;
}
.home-hero__verse { margin-top: clamp(16px, 2vw, 28px); }
.home-hero__progress {
    position: absolute; z-index: 4; inset: 0; width: 100%; height: 100%;
    overflow: visible; pointer-events: none;
}
.home-hero__progress-track, .home-hero__progress-value {
    fill: none; vector-effect: non-scaling-stroke;
}
.home-hero__progress-track { stroke: color-mix(in srgb, var(--primary-color) 18%, transparent); stroke-width: 1.5; }
.home-hero__progress-value {
    stroke: var(--primary-color); stroke-width: 3; stroke-linecap: round;
    stroke-dasharray: 0 100; stroke-dashoffset: 0; opacity: 0;
    filter: drop-shadow(0 0 7px var(--primary-glow));
    transition: stroke-dasharray .18s linear, opacity .2s ease;
}
.home-hero__footer {
    position: absolute; z-index: 5; right: clamp(24px, 4vw, 58px); bottom: clamp(24px, 3vw, 42px);
    width: auto; pointer-events: none;
}
.home-hero__actions { width: auto; pointer-events: auto; align-items: center; gap: 10px; }
.home-hero__footer[hidden] { display: none !important; }
.home-hero__actions button.home-hero__transport-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 42px; height: 42px; min-height: 42px; padding: 0;
    border: 1px solid rgba(255,255,255,.5); border-radius: 50%;
    background: rgba(7,14,27,.5); color: #fff;
    backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
}
.home-hero__transport-btn[hidden] { display: none !important; }
.home-hero__transport-btn svg { width: 18px; height: 18px; }
.home-hero__transport-btn:hover { color: var(--primary-color); border-color: var(--primary-color); }
.home-hero__actions button.home-hero__listen {
    width: 58px; height: 58px; min-height: 58px; padding: 0; border-radius: 50%;
    border: 1px solid color-mix(in srgb, var(--primary-color) 85%, white);
    color: var(--on-primary, #fff); box-shadow: 0 10px 30px color-mix(in srgb, var(--primary-color) 42%, transparent);
}
.home-hero__actions button.home-hero__listen svg { width: 23px; height: 23px; }
.home-hero__now-playing {
    position: absolute; z-index: 3; left: clamp(26px, 4vw, 58px); bottom: clamp(5px, 1vw, 21px);
    width: min(340px, 42%); display: flex; flex-direction: column; align-items: flex-start; gap: 5px;
    padding-left: 12px; color: #fff; pointer-events: none;
}
.home-hero__now-playing[hidden] { display: none !important; }
.home-hero__wave {
    display: flex; align-items: center; justify-content: center; gap: 3px;
    width: 88px; height: 28px; flex: 0 0 88px; justify-content: flex-start;
}
.home-hero__wave i {
    display: block; width: 2px; height: var(--wave-height, 8px);
    border-radius: 3px; background: var(--primary-color); opacity: .9;
    transition: height 70ms linear;
}
.home-hero:not(.is-playing) .home-hero__wave i { animation-play-state: paused; }
@keyframes home-hero-wave { from { transform: scaleY(.38); } to { transform: scaleY(1); } }
.home-hero__track-copy { display: flex; min-width: 0; flex: 1 1 auto; flex-direction: column; gap: 3px; }
.home-hero__track-copy span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#hero-track-title { font-size: 14px; font-weight: 850; }
#hero-track-artist { color: rgba(255,255,255,.72); font-size: 11px; font-weight: 650; }
#nav #desktop-home-utilities #top-actions { grid-template-columns: repeat(2, 40px); justify-content: start; gap: 8px; }
#nav #desktop-home-utilities #top-actions button,
body.desktop-nav-collapsed #nav #desktop-home-utilities #top-actions button {
    display: inline-flex; align-items: center; justify-content: center;
    width: 40px; height: 40px; min-width: 40px; min-height: 40px; padding: 0;
    border: 1px solid var(--border-soft); border-radius: 12px;
    background: var(--surface-raised); color: var(--text-main);
    box-shadow: none; transition: color .18s ease, background .18s ease, border-color .18s ease;
}
#nav #desktop-home-utilities #top-actions button:hover {
    border-color: var(--primary-color); background: color-mix(in srgb, var(--primary-color) 14%, var(--surface-raised));
    color: var(--primary-color);
}
#nav #desktop-home-utilities #top-actions button svg { width: 18px; height: 18px; }
#nav #desktop-home-utilities #top-actions button.hidden { display: none !important; }
body.desktop-nav-collapsed #nav #desktop-home-utilities #top-actions {
    width: 44px; grid-template-columns: 40px; justify-content: center; gap: 7px;
}
body.desktop-nav-collapsed #nav #desktop-home-utilities #top-actions button { border-radius: 12px; }
@media (max-width: 649px) {
    #hero-card-container.home-hero {
        height: 360px !important;
        min-height: 360px; max-height: 360px;
        margin-bottom: 26px !important; border-radius: 22px !important;
    }
    .home-hero__content { padding: 16px 17px 70px; }
    .home-hero__brand { top: 14px; right: 14px; width: 34px; height: 34px; }
    .home-hero__copy { width: 100%; padding: 0 0 40px; }
    .home-hero__eyebrow {
        max-width: calc(100% - 42px); gap: 6px; margin-bottom: 14px;
        padding: 7px 10px; font-size: 8px; letter-spacing: .09em;
    }
    .home-hero__eyebrow svg { width: 16px; height: 16px; }
    .home-hero__tagline { gap: .35em; }
    .home-hero__title { min-height: 1.88em; font-size: clamp(32px, 9vw, 44px); line-height: .94; letter-spacing: -.055em; }
    .home-hero__title-line { height: .94em; }
    .home-hero__language-tag { font-size: 7px; margin-left: .4em; }
    .home-hero__verse { gap: 7px; margin-top: 13px; }
    .home-hero__quote-mark { margin-top: -4px; font-size: 36px; }
    .home-hero__verse p { font-size: clamp(11px, 3.2vw, 13px); line-height: 1.28; }
    .home-hero__verse > div > span { margin-top: 8px; padding: 5px 9px; font-size: 9px; }
    .home-hero__footer { right: 16px; bottom: 15px; }
    .home-hero__actions { gap: 7px; }
    .home-hero__actions button.home-hero__listen { width: 44px; height: 44px; min-height: 44px; }
    .home-hero__actions button.home-hero__listen svg { width: 18px; height: 18px; }
    .home-hero__actions button.home-hero__transport-btn { width: 34px; height: 34px; min-height: 34px; padding: 0; }
    .home-hero__transport-btn svg { width: 15px; height: 15px; }
    .home-hero__footer { right: 12px; bottom: 12px; }
    .home-hero__carousel { bottom: 31px; padding: 0 16px; }
    .home-hero__dots { left: 50%; gap: 9px; }
    .home-hero__dot { width: 8px; height: 8px; }
    .home-hero__now-playing { left: 5px; bottom: 33px; width: min(300px, calc(100% - 78px)); gap: 8px; padding-left: 8px; }
    .home-hero__wave { width: min(150px, 100%); height: 24px; flex: 0 0 24px; gap: 2px; }
    .home-hero__wave i { width: 1.5px; }
    #hero-track-title { font-size: 10px; }
    #hero-track-artist { font-size: 9px; }
    .home-recommendation-spotlight { max-width: min(48vw, 220px); font-size: 10px; }
}
@media (prefers-reduced-motion: reduce) {
    .home-hero__wave i { animation: none; }
}

/* Shared player surfaces and controls use the active theme tokens. */
#quick-settings-drawer #qs-drawer-content,
#playlist-drawer > div {
    background: var(--surface-color) !important;
    color: var(--text-main) !important;
    border-color: var(--border-soft) !important;
}
#quick-settings-drawer #qs-drawer-content :is(h3, span),
#playlist-drawer :is(#playlist-drawer-title, p, div) {
    color: var(--text-main);
}
#quick-settings-drawer #qs-drawer-content [style*="color:#eee"],
#quick-settings-drawer #qs-drawer-content [style*="color: #eee"],
#playlist-drawer [style*="color:#fff"],
#playlist-drawer [style*="color: #fff"],
#playlist-drawer [style*="color:rgba(255,255,255"],
#playlist-drawer [style*="color: #a78bfa"] {
    color: var(--text-main) !important;
}
#playlist-drawer [style*="color:#a78bfa"] { color: var(--primary-color) !important; }
#quick-settings-drawer #qs-drawer-content [style*="background:rgba(255,255,255"],
#playlist-drawer [style*="background:rgba(255,255,255"] {
    background: color-mix(in srgb, var(--text-main) 6%, var(--surface-color)) !important;
}
#playlist-drawer [style*="background:rgba(139,92,246"] {
    background: color-mix(in srgb, var(--primary-color) 14%, var(--surface-color)) !important;
}
#quick-settings-drawer #qs-drawer-content button[onclick*="closeQuickSettings"] {
    background: var(--primary-color) !important;
    color: var(--on-primary, #fff) !important;
}
#full-player.open #fp-title,
#immersive-overlay #imm-title {
    color: var(--text-main) !important;
    font-size: clamp(1.25rem, 2.2vw, 2rem) !important;
    line-height: 1.15 !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
#fp-play-btn,
#mini-play-btn,
#full-player button:has(> svg[data-feather="play"]),
.home-hero__actions button:has(svg[data-feather="play"]) {
    border-radius: 9999px !important;
}
#fp-play-btn {
    background: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
    color: var(--on-primary, #fff) !important;
}
#hero-card-container.home-hero .home-hero__scrim {
    background: linear-gradient(110deg, rgba(5, 8, 14, .10), rgba(5, 8, 14, .10)) !important;
}
#home-download-btn {
    color: #fff !important;
}
#home-download-btn svg { stroke: #fff !important; }

/* Home controls sit over the hero; the logo itself opens About. */
#hero-card-container.home-hero .home-hero__utility-slot {
    position: absolute !important; z-index: 6; top: clamp(14px, 3vw, 32px) !important;
    right: clamp(14px, 3vw, 32px) !important; left: auto !important;
}
#hero-card-container.home-hero #home-top-actions {
    position: static !important; inset: auto !important; margin: 0 !important;
    justify-content: flex-end !important;
}
#home-top-actions {
    display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center; justify-content: flex-end; gap: 6px;
    width: max-content; max-width: calc(100vw - 24px); padding: 0; border: 0; border-radius: 0;
    background: transparent; backdrop-filter: none; -webkit-backdrop-filter: none;
}
#home-top-actions #top-actions {
    display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center; align-self: center; gap: 6px;
    width: max-content; white-space: nowrap;
}
#home-top-actions .home-profile-control { align-self: center; margin: 0; }
#home-top-actions #top-actions button,
#home-top-actions .home-profile-control,
.home-hero__brand {
    display: inline-flex; box-sizing: border-box; flex: 0 0 34px;
    width: 34px; min-width: 34px; max-width: 34px; height: 34px; min-height: 34px; max-height: 34px;
    align-items: center; justify-content: center; padding: 0;
    border: 1px solid rgba(255,255,255,.2); border-radius: 50%;
    background: #000; color: #fff; box-shadow: none;
}
#home-top-actions #top-actions button svg { width: 15px; height: 15px; color: #fff; stroke: #fff; }
#home-top-actions .home-profile-control { overflow: hidden; }
#home-top-actions .home-profile-avatar { display: block; width: 34px; height: 34px; flex: 0 0 34px; }
#home-top-actions .home-profile-avatar img { display: block; width: 34px; height: 34px; border: 1px solid rgba(255,255,255,.6); }
#home-top-actions #top-actions button.hidden { display: none !important; }
.home-hero__brand {
    position: static !important; z-index: auto; cursor: pointer;
}
.home-hero__brand img {
    display: block; width: 20px; height: 20px; object-fit: contain;
    filter: brightness(0) invert(1);
}
.home-hero__brand:focus-visible,
#home-top-actions button:focus-visible { outline: 2px solid var(--primary-color); outline-offset: 3px; }
@media (max-width: 649px) {
    #hero-card-container.home-hero .home-hero__utility-slot {
        top: 10px !important; right: 10px !important; left: auto !important;
    }
}

/* Never clip the rotating hero greeting; fit each line smoothly to the available width. */
.home-hero__title-line {
    height: auto !important; min-height: 0; overflow: visible !important;
    overflow-wrap: anywhere; white-space: normal !important; text-overflow: clip !important;
    transition: font-size .48s cubic-bezier(.2,.75,.25,1), letter-spacing .48s cubic-bezier(.2,.75,.25,1);
}
/* Keep the profile in place and lower the three action controls slightly. */
#home-top-actions #top-actions button:not(.home-profile-control) {
    transform: translateY(14px);
}
#home-top-actions .home-profile-control {
    transform: translateY(15px);
}

