/* ═══════════════════════════════════════════════════════════════════════
   FUN RADIO PLAYER — Broadcast Console Design System
   v2026.1  ·  Pro Star Web Development
   ─────────────────────────────────────────────────────────────────────
   ONE design system for the whole experience.
   Section map:
     01  Tokens
     02  Reset & base
     03  Typography & shared primitives
     04  App shell / header / module rail
     05  Console (hero player)
     06  Station selector
     07  Now playing
     08  Transport & audio controls
     09  Meter bay (VU + LED + EQ)
     10  Info screen (station info + sports)
     11  Module cards (shared language)
     12  Song log & trivia
     13  Weather
     14  News & events
     15  Scores
     16  Arcade + game modal
     17  Horoscope
     18  Gallery
     19  Modals / lightbox
     20  Dock (persistent mini player)
     21  Footer
     22  Responsive
     23  Accessibility & reduced motion
   ═══════════════════════════════════════════════════════════════════════ */

/* ══ 01 · TOKENS ═══════════════════════════════════════════════════════ */
:root{
  /* ground */
  --bg:            #060910;
  --bg-deep:       #04070d;
  --surface-1:     #0c1220;
  --surface-2:     #111a2c;
  --surface-3:     #17223a;
  --surface-inset: #080d18;

  /* lines */
  --line:          rgba(125,165,225,.13);
  --line-strong:   rgba(125,165,225,.24);
  --line-soft:     rgba(125,165,225,.07);

  /* text — high contrast is a requirement, not a preference */
  --ink:           #eaf1fb;
  --ink-2:         #a9b8d0;
  --ink-3:         #7f8fab;
  --ink-on-accent: #04070d;

  /* accents */
  --cyan:          #22d3ee;
  --cyan-dim:      #0e7f92;
  --blue:          #4a90ff;
  --amber:         #f7b32b;
  --amber-deep:    #c9860e;
  --red:           #ff5252;
  --green:         #34d399;
  --violet:        #8b7cf6;

  /* station accent — overridden per selected station */
  --accent:        #f7b32b;
  --accent-ink:    #1a1204;
  --accent-soft:   rgba(247,179,43,.14);
  --accent-line:   rgba(247,179,43,.42);

  /* metal — used sparingly, for character only */
  --metal-1:       #2a3448;
  --metal-2:       #1a2234;
  --metal-edge:    rgba(190,215,255,.16);

  /* radii */
  --r-xs: 4px; --r-sm: 8px; --r-md: 12px; --r-lg: 18px; --r-xl: 26px; --r-pill: 999px;

  /* elevation */
  --sh-1: 0 1px 2px rgba(0,0,0,.5);
  --sh-2: 0 2px 6px rgba(0,0,0,.45), 0 8px 24px rgba(0,0,0,.35);
  --sh-3: 0 6px 18px rgba(0,0,0,.5), 0 24px 60px rgba(0,0,0,.45);
  --sh-inset: inset 0 1px 0 rgba(255,255,255,.045), inset 0 -1px 0 rgba(0,0,0,.5);

  /* controlled glow — only on live/active things */
  --glow-accent: 0 0 0 1px var(--accent-line), 0 0 22px -6px var(--accent);
  --glow-live:   0 0 14px -2px rgba(255,82,82,.75);

  /* type */
  --ff-ui:   'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --ff-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Consolas, monospace;

  /* motion */
  --ease:      cubic-bezier(.22,.61,.36,1);
  --ease-out:  cubic-bezier(.16,1,.3,1);
  --t-fast: 140ms; --t: 240ms; --t-slow: 420ms;

  /* metrics */
  --header-h: 60px;
  --rail-h:   48px;
  --gutter:   clamp(12px, 2.2vw, 28px);
  --maxw:     1560px;
}

/* Per-station accent themes. Applied to <body data-station="id"> by shell.js. */
body[data-station="wafn927"]    { --accent:#f7b32b; --accent-soft:rgba(247,179,43,.15); --accent-line:rgba(247,179,43,.45); --accent-ink:#1a1204; }
body[data-station="wrab1071"]   { --accent:#ff9153; --accent-soft:rgba(255,145,83,.15); --accent-line:rgba(255,145,83,.45); --accent-ink:#1c0d05; }
body[data-station="wtnk935"]    { --accent:#22d3ee; --accent-soft:rgba(34,211,238,.15); --accent-line:rgba(34,211,238,.45); --accent-ink:#031416; }
body[data-station="wafn1049"]   { --accent:#a78bfa; --accent-soft:rgba(167,139,250,.15); --accent-line:rgba(167,139,250,.45); --accent-ink:#120a24; }
body[data-station="wafn927hd2"] { --accent:#2dd4bf; --accent-soft:rgba(45,212,191,.15); --accent-line:rgba(45,212,191,.45); --accent-ink:#031614; }
body[data-station="prostar"]    { --accent:#6aa8ff; --accent-soft:rgba(106,168,255,.15); --accent-line:rgba(106,168,255,.45); --accent-ink:#04101f; }

/* ══ 02 · RESET & BASE ═════════════════════════════════════════════════ */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:var(--ff-ui); font-size:15px; line-height:1.55;
  font-weight:400; letter-spacing:.005em;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden; min-height:100dvh;
}
img,svg,video,canvas{ max-width:100%; display:block; }
button,input,select,textarea{ font:inherit; color:inherit; }
button{ background:none; border:0; cursor:pointer; }
a{ color:var(--cyan); text-decoration:none; }
a:hover{ text-decoration:underline; }
h1,h2,h3,h4{ margin:0; font-weight:700; letter-spacing:-.012em; line-height:1.2; }
p{ margin:0 0 .8em; }
p:last-child{ margin-bottom:0; }
ul{ margin:0; padding:0; list-style:none; }
[hidden],.hidden{ display:none !important; }

/* Ambient studio backdrop canvas (ambient-bg.js draws into it) */
/* ambient-bg.js sets z-index:-1 inline; override so the tone-down layer
   below (body::before) sits on top of the artwork rather than under it. */
#ambientBg{ position:fixed; inset:0; width:100%; height:100%; z-index:-2 !important; pointer-events:none; opacity:.85; }
body::before{
  content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
  background:
    radial-gradient(1200px 620px at 50% -8%, rgba(34,211,238,.075), transparent 62%),
    radial-gradient(900px 520px at 12% 8%, rgba(74,144,255,.06), transparent 60%),
    linear-gradient(180deg, rgba(4,7,13,.30) 0%, rgba(4,7,13,.80) 46%, var(--bg-deep) 100%);
}

::selection{ background:var(--accent); color:var(--accent-ink); }

/* Scrollbars */
*{ scrollbar-width:thin; scrollbar-color:var(--metal-1) transparent; }
::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-track{ background:transparent; }
::-webkit-scrollbar-thumb{ background:var(--metal-1); border-radius:var(--r-pill); border:2px solid transparent; background-clip:content-box; }
::-webkit-scrollbar-thumb:hover{ background:var(--metal-edge); background-clip:content-box; }

/* Focus — one consistent, always-visible ring */
:focus-visible{ outline:2px solid var(--cyan); outline-offset:2px; border-radius:var(--r-xs); }
.skip-link{
  position:absolute; left:12px; top:-64px; z-index:2000;
  background:var(--cyan); color:var(--ink-on-accent);
  padding:10px 18px; border-radius:var(--r-sm); font-weight:700;
  transition:top var(--t) var(--ease);
}
.skip-link:focus{ top:12px; text-decoration:none; }

/* ══ 03 · TYPOGRAPHY & PRIMITIVES ══════════════════════════════════════ */
.eyebrow{
  font-family:var(--ff-mono); font-size:10.5px; font-weight:700;
  letter-spacing:.16em; text-transform:uppercase; color:var(--ink-3);
}
.mono{ font-family:var(--ff-mono); font-variant-numeric:tabular-nums; }
.truncate{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.clamp-2{ display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.clamp-3{ display:-webkit-box; -webkit-line-clamp:3; line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.sr-only{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0;
}

/* Source attribution chip — every module fed by an external source shows one */
.src{
  display:inline-flex; align-items:center; gap:5px;
  font-family:var(--ff-mono); font-size:10px; font-weight:500;
  letter-spacing:.07em; text-transform:uppercase;
  color:var(--ink-3); background:rgba(125,165,225,.07);
  border:1px solid var(--line-soft); border-radius:var(--r-pill);
  padding:3px 9px; white-space:nowrap; line-height:1.5;
}
a.src:hover{ color:var(--ink-2); border-color:var(--line); text-decoration:none; }
.src::before{ content:""; width:4px; height:4px; border-radius:50%; background:currentColor; flex:none; opacity:.7; }

/* Buttons — one family */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  height:38px; padding:0 16px; border-radius:var(--r-sm);
  font-size:13px; font-weight:600; letter-spacing:.01em;
  border:1px solid var(--line); background:var(--surface-2); color:var(--ink);
  transition:background var(--t-fast), border-color var(--t-fast), transform var(--t-fast), color var(--t-fast);
  white-space:nowrap;
}
.btn:hover{ background:var(--surface-3); border-color:var(--line-strong); text-decoration:none; }
.btn:active{ transform:translateY(1px); }
.btn--primary{ background:var(--accent); border-color:var(--accent); color:var(--accent-ink); font-weight:700; }
.btn--primary:hover{ filter:brightness(1.12); }
.btn--ghost{ background:transparent; }
.btn--sm{ height:31px; padding:0 12px; font-size:12px; }
.btn svg{ width:15px; height:15px; fill:currentColor; flex:none; }

/* Prev / next — identical everywhere (replaces four different old styles) */
.nav-btn,.sp-nav-btn,.ev-nav-btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:32px; height:32px; flex:none;
  border-radius:var(--r-sm); border:1px solid var(--line);
  background:var(--surface-2); color:var(--ink-2); font-size:11px;
  transition:background var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}
.nav-btn:hover,.sp-nav-btn:hover,.ev-nav-btn:hover{ background:var(--surface-3); color:var(--ink); border-color:var(--accent-line); }
.nav-btn:disabled,.sp-nav-btn:disabled,.ev-nav-btn:disabled{ opacity:.35; cursor:not-allowed; }

/* Dots */
.dots,.sp-nav-dots,.alnews-dots,.ln-dots,.ev-dots{
  display:flex; gap:6px; align-items:center; justify-content:center; flex-wrap:wrap;
  min-height:12px;
}
.sp-dot,.aln-dot,.ln-dot,.ev-dot{
  width:6px; height:6px; border-radius:50%; flex:none; display:block;
  background:var(--line-strong); transition:width var(--t-fast), background var(--t-fast);
}
.sp-dot.active,.aln-dot.active,.ln-dot.active,.ev-dot.active{
  background:var(--accent); width:18px; border-radius:var(--r-pill);
}

/* Loading / empty / error — consistent across every module */
.state{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:9px; padding:26px 20px; text-align:center; min-height:110px;
  color:var(--ink-3); font-size:13px;
}
.state__icon{ font-size:22px; opacity:.55; line-height:1; }
.state strong{ display:block; color:var(--ink); font-size:13.5px; font-weight:600; }
.state__note{ font-size:12px; color:var(--ink-3); max-width:40ch; line-height:1.5; }

.skeleton{
  background:linear-gradient(90deg, var(--surface-2) 25%, var(--surface-3) 50%, var(--surface-2) 75%);
  background-size:200% 100%; animation:shimmer 1.5s linear infinite; border-radius:var(--r-sm);
}
@keyframes shimmer{ to{ background-position:-200% 0; } }

/* Live indicator */
.live-dot{
  width:7px; height:7px; border-radius:50%; background:var(--red); flex:none;
  box-shadow:var(--glow-live); animation:pulse-live 2s var(--ease) infinite;
}
@keyframes pulse-live{ 0%,100%{ opacity:1; } 50%{ opacity:.3; } }

/* ══ 04 · APP SHELL / HEADER / MODULE RAIL ═════════════════════════════ */
.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gutter); }

.site-header{
  position:sticky; top:0; z-index:120;
  height:var(--header-h);
  background:linear-gradient(180deg, rgba(8,12,22,.96), rgba(8,12,22,.88));
  backdrop-filter:blur(14px) saturate(1.2);
  -webkit-backdrop-filter:blur(14px) saturate(1.2);
  border-bottom:1px solid var(--line);
}
.site-header__in{
  height:100%; display:flex; align-items:center; gap:18px;
}
.brand{ display:flex; align-items:center; gap:11px; min-width:0; text-decoration:none; }
.brand:hover{ text-decoration:none; }
.brand__mark{
  width:34px; height:34px; flex:none; border-radius:9px; position:relative;
  background:linear-gradient(150deg, var(--surface-3), var(--surface-1));
  border:1px solid var(--line-strong); display:grid; place-items:center;
  box-shadow:var(--sh-inset);
}
.brand__mark::after{
  content:""; width:13px; height:13px; border-radius:50%;
  border:2.5px solid var(--accent); border-right-color:transparent;
  animation:brand-spin 5s linear infinite;
}
@keyframes brand-spin{ to{ transform:rotate(360deg); } }
.brand__name{
  font-size:17px; font-weight:800; letter-spacing:.02em; color:var(--ink);
  line-height:1.1; white-space:nowrap;
}
.brand__name b{ color:var(--accent); font-weight:800; }
.brand__sub{
  display:block; font-family:var(--ff-mono); font-size:9.5px; font-weight:500;
  letter-spacing:.13em; text-transform:uppercase; color:var(--ink-3); margin-top:1px;
}

.header-status{
  display:flex; align-items:center; gap:9px; margin-left:6px;
  padding:5px 12px 5px 10px; border-radius:var(--r-pill);
  background:var(--surface-1); border:1px solid var(--line);
  font-family:var(--ff-mono); font-size:11px; letter-spacing:.08em;
  color:var(--ink-2); white-space:nowrap;
}
.header-status[data-live="1"]{ border-color:rgba(255,82,82,.4); color:var(--ink); }
.header-status__dot{ width:7px; height:7px; border-radius:50%; background:var(--ink-3); flex:none; transition:background var(--t); }
.header-status[data-live="1"] .header-status__dot{ background:var(--red); box-shadow:var(--glow-live); animation:pulse-live 2s var(--ease) infinite; }
.header-status__count{ color:var(--ink-3); }
.header-status__count b{ color:var(--accent); font-weight:700; }

.header-spacer{ flex:1 1 auto; }
.header-links{ display:flex; align-items:center; gap:8px; }
.header-link{
  font-size:12.5px; font-weight:600; color:var(--ink-2);
  padding:7px 12px; border-radius:var(--r-sm); border:1px solid transparent;
  transition:all var(--t-fast); white-space:nowrap;
}
.header-link:hover{ color:var(--ink); background:var(--surface-2); border-color:var(--line); text-decoration:none; }
.header-link--cta{ color:var(--accent-ink); background:var(--accent); border-color:var(--accent); font-weight:700; }
.header-link--cta:hover{ color:var(--accent-ink); background:var(--accent); filter:brightness(1.12); border-color:var(--accent); }

/* Module rail — secondary navigation */
.rail{
  position:sticky; top:var(--header-h); z-index:110;
  background:linear-gradient(180deg, rgba(6,9,16,.95), rgba(6,9,16,.78));
  backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line-soft);
}
.rail__in{ display:flex; align-items:center; gap:6px; height:var(--rail-h); overflow-x:auto; scrollbar-width:none; }
.rail__in::-webkit-scrollbar{ display:none; }
.rail__label{
  font-family:var(--ff-mono); font-size:9.5px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ink-3); padding-right:10px; margin-right:4px; border-right:1px solid var(--line);
  white-space:nowrap; flex:none; align-self:center; height:20px; line-height:20px;
}
.rail-btn{
  display:inline-flex; align-items:center; gap:7px; flex:none;
  height:32px; padding:0 13px; border-radius:var(--r-pill);
  font-size:12.5px; font-weight:600; color:var(--ink-2);
  border:1px solid transparent; background:transparent;
  transition:all var(--t-fast); white-space:nowrap;
}
.rail-btn .ic{ font-size:13px; line-height:1; opacity:.8; }
.rail-btn:hover{ color:var(--ink); background:var(--surface-2); border-color:var(--line); }
.rail-btn[aria-current="true"]{
  color:var(--accent); background:var(--accent-soft); border-color:var(--accent-line);
}
.rail-btn[aria-current="true"] .ic{ opacity:1; }

/* ══ 05 · CONSOLE (HERO PLAYER) ════════════════════════════════════════ */
.console{
  position:relative; margin-top:22px; margin-bottom:26px;
  border-radius:var(--r-xl);
  background:
    linear-gradient(180deg, rgba(23,34,58,.55), rgba(10,15,26,.85)),
    var(--surface-1);
  border:1px solid var(--line-strong);
  box-shadow:var(--sh-3), var(--sh-inset);
  overflow:hidden;
}
/* Refined metallic top edge — a single restrained detail, not a frame */
.console::before{
  content:""; position:absolute; inset:0 0 auto 0; height:1px;
  background:linear-gradient(90deg, transparent, var(--metal-edge) 18%, rgba(255,255,255,.28) 50%, var(--metal-edge) 82%, transparent);
}
/* Accent light-bar that reacts to the selected station */
.console::after{
  content:""; position:absolute; inset:auto 0 0 0; height:2px;
  background:linear-gradient(90deg, transparent, var(--accent) 30%, var(--accent) 70%, transparent);
  opacity:.45; transition:opacity var(--t);
}
body.is-playing .console::after{ opacity:.95; }

.console__grid{
  display:grid;
  grid-template-columns:288px minmax(0,1fr) 372px;
  gap:0;
  align-items:stretch;
}
.console__col{ padding:20px; min-width:0; }
.console__col + .console__col{ border-left:1px solid var(--line-soft); }
.console__col--stations{ background:linear-gradient(180deg, rgba(8,13,24,.5), transparent); }
.console__col--info{ background:linear-gradient(180deg, rgba(8,13,24,.5), transparent); display:flex; flex-direction:column; }

.console__title{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  margin-bottom:13px;
}
.console__title h2{ font-size:11px; font-family:var(--ff-mono); letter-spacing:.16em; text-transform:uppercase; color:var(--ink-3); font-weight:700; }

/* ══ 06 · STATION SELECTOR ═════════════════════════════════════════════ */
.station-hint{
  font-size:12px; color:var(--ink-3); margin-bottom:10px; line-height:1.45;
}
.station-btns{ display:flex; flex-direction:column; gap:7px; }

.station-btn{
  --st: var(--line-strong);
  display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:10px;
  width:100%; padding:10px 12px; text-align:left;
  border-radius:var(--r-md); border:1px solid var(--line);
  background:var(--surface-2); color:var(--ink-2);
  transition:background var(--t-fast), border-color var(--t-fast), color var(--t-fast), transform var(--t-fast);
  position:relative; overflow:hidden;
}
.station-btn::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:var(--st); opacity:0; transition:opacity var(--t-fast);
}
.station-btn:hover{ background:var(--surface-3); color:var(--ink); border-color:var(--line-strong); }
.station-btn.active{
  color:var(--ink); background:linear-gradient(90deg, var(--accent-soft), var(--surface-2) 62%);
  border-color:var(--accent-line);
}
.station-btn.active::before{ opacity:1; background:var(--accent); }
.station-btn.playing{ box-shadow:var(--glow-accent); }

.station-btn-play{ display:grid; place-items:center; width:22px; height:22px; flex:none; }
.station-btn-play svg{ width:11px; height:11px; fill:var(--ink-3); transition:fill var(--t-fast); }
.station-btn:hover .station-btn-play svg{ fill:var(--ink-2); }
.station-btn.active .station-btn-play svg{ fill:var(--accent); }
.station-btn.playing .station-btn-play{ display:none; }

.station-btn-led{
  width:7px; height:7px; border-radius:50%; flex:none;
  background:var(--line-strong); transition:background var(--t-fast), box-shadow var(--t-fast);
  grid-column:1; grid-row:1; justify-self:center; display:none;
}
.station-btn.playing .station-btn-led{
  display:block; background:var(--red); box-shadow:var(--glow-live);
  animation:pulse-live 2s var(--ease) infinite;
}
.station-btn-name{
  font-size:14px; font-weight:600; letter-spacing:.005em; min-width:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.station-btn-stop{
  display:none; place-items:center; width:26px; height:26px; flex:none;
  border-radius:var(--r-xs); border:1px solid var(--line); background:var(--surface-1);
  transition:all var(--t-fast);
}
.station-btn-stop svg{ width:10px; height:10px; fill:var(--ink-2); }
.station-btn.playing .station-btn-stop{ display:grid; }
.station-btn-stop:hover{ background:var(--red); border-color:var(--red); }
.station-btn-stop:hover svg{ fill:#fff; }

.station-extra{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:12px; }
.scores-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  height:36px; border-radius:var(--r-sm); border:1px solid var(--line);
  background:var(--surface-2); color:var(--ink-2);
  font-size:11.5px; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  transition:all var(--t-fast); text-decoration:none;
}
.scores-btn:hover{ background:var(--surface-3); color:var(--ink); border-color:var(--line-strong); text-decoration:none; }
.scores-btn[aria-expanded="true"],
.scores-btn.active{ background:var(--accent-soft); border-color:var(--accent-line); color:var(--accent); }
.contest-btn{ color:var(--amber); border-color:rgba(247,179,43,.3); }
.contest-btn:hover{ color:var(--amber); background:rgba(247,179,43,.12); border-color:rgba(247,179,43,.5); }

/* ══ 07 · NOW PLAYING ══════════════════════════════════════════════════ */
.np{ display:flex; flex-direction:column; gap:16px; height:100%; }

.np__main{ display:grid; grid-template-columns:auto 1fr; gap:16px; align-items:center; }
.np__art{
  width:104px; height:104px; flex:none; border-radius:var(--r-md);
  background:var(--surface-inset); border:1px solid var(--line);
  overflow:hidden; position:relative; display:grid; place-items:center;
  box-shadow:var(--sh-2);
}
.np__art img{ width:100%; height:100%; object-fit:cover; }
.np__art-fallback{ font-size:30px; opacity:.28; }
.np__art::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(150deg, rgba(255,255,255,.09), transparent 42%);
}
body.is-playing .np__art{ border-color:var(--accent-line); }

.np__text{ min-width:0; display:flex; flex-direction:column; gap:5px; }
.np__eyebrow{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.np__badge{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--ff-mono); font-size:10px; font-weight:700; letter-spacing:.13em;
  text-transform:uppercase; color:var(--ink-3);
  padding:3px 9px; border-radius:var(--r-pill);
  border:1px solid var(--line); background:var(--surface-1);
  transition:all var(--t);
}
body.is-playing .np__badge{ color:var(--ink); border-color:rgba(255,82,82,.4); }
.np__station{
  font-family:var(--ff-mono); font-size:11px; font-weight:600; letter-spacing:.1em;
  text-transform:uppercase; color:var(--accent);
}
.np__title{
  font-size:clamp(19px,2.4vw,27px); font-weight:800; letter-spacing:-.02em;
  color:var(--ink); line-height:1.18;
  display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.np__artist{ font-size:14.5px; color:var(--ink-2); font-weight:500; }
.np__state{
  display:inline-flex; align-items:center; gap:7px; font-size:12px; color:var(--ink-3);
  font-family:var(--ff-mono); letter-spacing:.05em;
}
.np__state-dot{ width:6px; height:6px; border-radius:50%; background:var(--ink-3); flex:none; }
.np[data-state="playing"] .np__state-dot{ background:var(--green); box-shadow:0 0 10px -2px var(--green); }
.np[data-state="loading"] .np__state-dot,
.np[data-state="reconnecting"] .np__state-dot{ background:var(--amber); animation:pulse-live 1s linear infinite; }
.np[data-state="error"] .np__state-dot{ background:var(--red); }
.np[data-state="paused"] .np__state-dot{ background:var(--ink-3); }

/* ══ 08 · TRANSPORT & AUDIO CONTROLS ═══════════════════════════════════ */
.transport{
  display:grid; grid-template-columns:auto 1fr; gap:18px; align-items:center;
  padding:15px 16px; border-radius:var(--r-lg);
  background:var(--surface-inset); border:1px solid var(--line);
  box-shadow:var(--sh-inset);
}
.transport__primary{ display:flex; align-items:center; gap:10px; }

/* Hero play button */
.play-hero{
  position:relative; width:62px; height:62px; flex:none; border-radius:50%;
  display:grid; place-items:center;
  background:linear-gradient(160deg, var(--accent), var(--accent-ink) 190%);
  border:1px solid var(--accent);
  color:var(--accent-ink);
  box-shadow:0 4px 16px -4px var(--accent), var(--sh-2);
  transition:transform var(--t-fast) var(--ease), filter var(--t-fast), box-shadow var(--t);
}
.play-hero:hover{ transform:scale(1.05); filter:brightness(1.1); }
.play-hero:active{ transform:scale(.97); }
.play-hero svg{ width:24px; height:24px; fill:currentColor; }
.play-hero .ic-pause{ display:none; }
body.is-playing .play-hero .ic-play{ display:none; }
body.is-playing .play-hero .ic-pause{ display:block; }
/* Attention ring while idle — draws the eye to the one thing that matters first */
.play-hero::after{
  content:""; position:absolute; inset:-6px; border-radius:50%;
  border:1.5px solid var(--accent); opacity:0; pointer-events:none;
}
body:not(.is-playing) .play-hero::after{ animation:ring-pulse 2.6s var(--ease-out) infinite; }
@keyframes ring-pulse{
  0%{ opacity:.55; transform:scale(.92); }
  70%{ opacity:0; transform:scale(1.18); }
  100%{ opacity:0; transform:scale(1.18); }
}

.transport-btn{
  width:42px; height:42px; flex:none; border-radius:var(--r-md);
  display:grid; place-items:center;
  border:1px solid var(--line); background:var(--surface-2); color:var(--ink-2);
  transition:all var(--t-fast);
}
.transport-btn:hover{ background:var(--surface-3); color:var(--ink); border-color:var(--line-strong); }
.transport-btn svg,.transport-icon{ width:15px; height:15px; fill:currentColor; }
.transport-btn.active-glow{ color:var(--accent); border-color:var(--accent-line); background:var(--accent-soft); }

.transport__aux{ display:flex; flex-direction:column; gap:11px; min-width:0; }

/* Volume */
.vol-inline{ display:flex; align-items:center; gap:10px; min-width:0; }
.vol-label-sm{
  font-family:var(--ff-mono); font-size:10px; font-weight:700; letter-spacing:.14em;
  color:var(--ink-3); flex:none;
}
input[type="range"]{
  -webkit-appearance:none; appearance:none; background:transparent; height:22px;
  width:100%; min-width:0; cursor:pointer;
}
input[type="range"]::-webkit-slider-runnable-track{
  height:5px; border-radius:var(--r-pill);
  background:linear-gradient(90deg, var(--accent) var(--fill,65%), var(--surface-3) var(--fill,65%));
  border:1px solid var(--line);
}
input[type="range"]::-moz-range-track{
  height:5px; border-radius:var(--r-pill); background:var(--surface-3); border:1px solid var(--line);
}
input[type="range"]::-moz-range-progress{ height:5px; border-radius:var(--r-pill); background:var(--accent); }
input[type="range"]::-webkit-slider-thumb{
  -webkit-appearance:none; appearance:none;
  width:15px; height:15px; border-radius:50%; margin-top:-6px;
  background:#e9f1fb; border:1px solid rgba(0,0,0,.5);
  box-shadow:0 1px 4px rgba(0,0,0,.6);
  transition:transform var(--t-fast);
}
input[type="range"]::-moz-range-thumb{
  width:15px; height:15px; border-radius:50%; border:1px solid rgba(0,0,0,.5);
  background:#e9f1fb; box-shadow:0 1px 4px rgba(0,0,0,.6);
}
input[type="range"]:hover::-webkit-slider-thumb{ transform:scale(1.15); }
input[type="range"]:focus-visible::-webkit-slider-thumb{ box-shadow:0 0 0 3px rgba(34,211,238,.5); }

/* Channel / mode buttons */
.ctrl-group{ display:flex; gap:7px; flex-wrap:wrap; }
.rack-btn{
  display:inline-flex; align-items:center; gap:7px;
  height:32px; padding:0 12px; border-radius:var(--r-sm);
  font-family:var(--ff-mono); font-size:10.5px; font-weight:700; letter-spacing:.1em;
  text-transform:uppercase;
  border:1px solid var(--line); background:var(--surface-2); color:var(--ink-2);
  transition:all var(--t-fast); white-space:nowrap;
}
.rack-btn:hover{ background:var(--surface-3); color:var(--ink); border-color:var(--line-strong); }
.rack-btn.muted{ background:rgba(255,82,82,.13); border-color:rgba(255,82,82,.45); color:#ffb3b3; }
.rack-btn.mode-midside{ border-color:rgba(247,179,43,.42); color:var(--amber); background:rgba(247,179,43,.1); }
.rack-btn.mode-mono{ border-color:rgba(34,211,238,.42); color:var(--cyan); background:rgba(34,211,238,.1); }
.rack-btn-led{
  width:7px; height:7px; border-radius:50%; flex:none;
  background:var(--surface-inset); border:1px solid var(--line-strong);
  transition:all var(--t-fast);
}
.rack-btn-led.red{ background:var(--red); border-color:var(--red); box-shadow:var(--glow-live); }
.rack-btn-led.active{ background:var(--green); border-color:var(--green); box-shadow:0 0 9px -2px var(--green); }
.rack-btn-led.amber{ background:var(--amber); border-color:var(--amber); box-shadow:0 0 9px -2px var(--amber); }

/* ══ 09 · METER BAY ════════════════════════════════════════════════════ */
.meterbay{
  display:grid; grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr) auto; gap:10px;
  align-items:stretch;
  padding:12px; border-radius:var(--r-lg);
  background:var(--surface-inset); border:1px solid var(--line);
  box-shadow:var(--sh-inset);
}
.meter-led-outer{
  width:13px; height:100%; align-self:stretch; border-radius:var(--r-xs);
  background:var(--bg-deep); border:1px solid var(--line-soft);
}
.meter-bezel{
  border-radius:var(--r-md); padding:1px;
  background:linear-gradient(180deg, var(--metal-edge), rgba(0,0,0,.5));
  box-shadow:var(--sh-1);
  min-width:0;
}
.meter-glass{
  position:relative; border-radius:calc(var(--r-md) - 1px); overflow:hidden;
  background:var(--bg-deep); border:1px solid rgba(0,0,0,.6);
}
.meter-glass canvas{ width:100%; height:auto; display:block; }
/* Subtle glass sheen — the only skeuomorphic flourish that survived */
.meter-glass::after{
  content:""; position:absolute; inset:0; pointer-events:none; border-radius:inherit;
  background:linear-gradient(158deg, rgba(255,255,255,.07) 0%, transparent 34%);
}
/* Trim control — a real control, no longer a fake screw */
.meter-screw{
  position:absolute; right:6px; bottom:6px; width:16px; height:16px;
  border-radius:50%; border:1px solid var(--line-strong);
  background:var(--surface-2); cursor:ns-resize; z-index:2;
  transition:border-color var(--t-fast), background var(--t-fast);
}
.meter-screw:hover{ border-color:var(--accent-line); background:var(--surface-3); }
.screw-slot{
  position:absolute; left:50%; top:50%; width:8px; height:1.5px;
  background:var(--ink-3); border-radius:1px;
  transform:translate(-50%,-50%);
}
.meter-mid{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; }
.vol-track{
  position:relative; width:26px; flex:1 1 auto; min-height:80px;
  border-radius:var(--r-sm); background:var(--bg-deep);
  border:1px solid var(--line); overflow:hidden;
}
.vol-track-fill{
  position:absolute; inset:0; transform-origin:bottom;
  background:linear-gradient(180deg, var(--accent), color-mix(in srgb, var(--accent) 45%, transparent));
  opacity:.55; transition:opacity var(--t);
}
body.is-playing .vol-track-fill{ opacity:.85; }
.vol-scale{ position:absolute; inset:0; pointer-events:none; }
.vol-notch{
  position:absolute; left:0; right:0; display:flex; align-items:center;
  font-family:var(--ff-mono); font-size:6.5px; color:var(--ink-3);
  justify-content:flex-end; padding-right:2px;
}
.vol-notch i{ position:absolute; left:0; width:5px; height:1px; background:var(--line-strong); }
.vol-vert{
  position:absolute; inset:0; width:100%; height:100%; margin:0; opacity:0; cursor:ns-resize;
  writing-mode:vertical-lr; direction:rtl;
}
.meter-vol-label{
  font-family:var(--ff-mono); font-size:9px; font-weight:700; letter-spacing:.14em; color:var(--ink-3);
}

/* EQ */
.eq-wrap{
  position:relative; border-radius:var(--r-lg); overflow:hidden;
  background:var(--bg-deep); border:1px solid var(--line);
  box-shadow:var(--sh-inset);
}
.eq-canvas{ width:100%; height:88px; display:block; cursor:pointer; }
.eq-hint{
  position:absolute; right:9px; top:8px; pointer-events:none;
  font-family:var(--ff-mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--ink-3); opacity:0; transition:opacity var(--t);
}
.eq-wrap:hover .eq-hint{ opacity:.85; }

/* Big overlay play button on the EQ (first-interaction affordance) */
.big-play-btn{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center; gap:12px;
  background:linear-gradient(180deg, rgba(6,9,16,.72), rgba(6,9,16,.86));
  backdrop-filter:blur(2px); -webkit-backdrop-filter:blur(2px);
  color:var(--ink); transition:opacity var(--t), visibility var(--t);
}
.big-play-btn.hidden{ opacity:0; visibility:hidden; display:flex !important; pointer-events:none; }
.big-play-triangle{
  width:38px; height:38px; border-radius:50%; display:grid; place-items:center;
  background:var(--accent); color:var(--accent-ink); font-size:14px; padding-left:3px;
  box-shadow:0 4px 14px -4px var(--accent);
}
.big-play-label{
  font-family:var(--ff-mono); font-size:12px; font-weight:700; letter-spacing:.2em; text-transform:uppercase;
}
.big-play-btn:hover .big-play-triangle{ filter:brightness(1.12); }

/* ══ 10 · INFO SCREEN (station info + sports) ══════════════════════════ */
.infoscreen{
  position:relative; flex:1 1 auto; min-height:214px;
  border-radius:var(--r-lg); overflow:hidden;
  background:linear-gradient(180deg, rgba(10,20,30,.92), rgba(6,11,18,.96));
  border:1px solid var(--line);
  box-shadow:var(--sh-inset);
}
.tv-scanlines{
  position:absolute; inset:0; pointer-events:none; z-index:3; opacity:.35;
  background:repeating-linear-gradient(180deg, rgba(255,255,255,.028) 0 1px, transparent 1px 3px);
}
/* Attribution rides with the sports layer, so it is only shown when ESPN
   content is actually on screen. */
.espn-credit{
  align-self:flex-end; margin-top:2px;
  font-family:var(--ff-mono); font-size:9px; letter-spacing:.06em;
  color:var(--ink-3); text-decoration:none;
}
.espn-credit:hover{ color:var(--ink-2); text-decoration:none; }
.tv-layer{
  position:absolute; inset:0; padding:16px 16px 26px;
  transition:opacity var(--t-slow) var(--ease);
  overflow:hidden; display:flex; flex-direction:column;
}
#tvStationLayer{ gap:5px; }
.tv-station{ font-size:18px; font-weight:800; letter-spacing:-.015em; color:var(--ink); line-height:1.2; }
.tv-call{
  font-family:var(--ff-mono); font-size:11px; font-weight:700; letter-spacing:.16em;
  color:var(--accent); text-transform:uppercase;
}
.tv-genre{
  display:inline-block; align-self:flex-start; margin-top:2px;
  font-family:var(--ff-mono); font-size:10px; font-weight:600; letter-spacing:.1em; text-transform:uppercase;
  color:var(--ink-2); background:var(--surface-2); border:1px solid var(--line);
  border-radius:var(--r-pill); padding:3px 10px;
}
.tv-info{ font-size:13px; line-height:1.6; color:var(--ink-2); margin-top:6px; }
#tvStationLayer{ overflow-y:auto; }
.tv-address,.tv-phone{
  font-family:var(--ff-mono); font-size:11px; color:var(--ink-3); line-height:1.6;
}
.tv-address{ margin-top:auto; padding-top:8px; }

/* Sports layer */
.tv-sports{ opacity:0; pointer-events:none; gap:9px; }
.sp-story-area{ display:flex; flex-direction:column; gap:9px; min-height:0; flex:1 1 auto; cursor:pointer; }
.sp-top-row{ display:grid; grid-template-columns:auto 1fr; gap:11px; align-items:start; }
.sp-img-wrap{
  width:78px; height:56px; flex:none; border-radius:var(--r-sm); overflow:hidden;
  background:var(--surface-2); border:1px solid var(--line); position:relative;
}
.sp-img-wrap.hidden{ display:none; }
.sp-img{ width:100%; height:100%; object-fit:cover; }
.sp-img-wrap.has-video::after{
  content:"\25B6"; position:absolute; inset:0; display:grid; place-items:center;
  background:rgba(0,0,0,.45); color:#fff; font-size:14px;
}
.sp-text-col{ min-width:0; display:flex; flex-direction:column; gap:5px; }
.sp-badge{
  display:flex; align-items:center; gap:7px; flex-wrap:wrap;
  font-family:var(--ff-mono); font-size:9.5px; font-weight:700; letter-spacing:.13em;
  text-transform:uppercase; color:var(--accent);
}
.sp-headline{
  font-size:14px; font-weight:700; line-height:1.3; color:var(--ink);
  display:-webkit-box; -webkit-line-clamp:3; line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.sp-desc{
  font-size:12.5px; line-height:1.5; color:var(--ink-2);
  display:-webkit-box; -webkit-line-clamp:3; line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.sp-scores-ticker{
  display:flex; flex-direction:column; gap:3px; max-height:74px; overflow-y:auto;
  padding-right:4px;
}
.sp-score-row{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  font-family:var(--ff-mono); font-size:10.5px; padding:3px 7px;
  border-radius:var(--r-xs); background:var(--surface-1); border:1px solid var(--line-soft);
}
.sp-s-teams{ color:var(--ink-2); }
.sp-s-result{ color:var(--ink); font-weight:700; }
.sp-s-result.live{ color:var(--red); }
.sp-s-result.final{ color:var(--ink-3); }
.sp-nav{ display:flex; align-items:center; justify-content:center; gap:10px; margin-top:auto; padding-top:4px; }

/* ══ 11 · MODULE CARDS (shared language) ═══════════════════════════════ */
.modules{ display:flex; flex-direction:column; gap:20px; padding-bottom:34px; }

.mod{
  position:relative;
  border-radius:var(--r-lg);
  background:linear-gradient(180deg, rgba(17,26,44,.55), rgba(10,15,26,.72)), var(--surface-1);
  border:1px solid var(--line);
  box-shadow:var(--sh-2);
  /* NOT overflow:hidden — the horoscope birthday picker opens past the card
     edge and must not be clipped. Corner rounding is handled per-child. */
  scroll-margin-top:calc(var(--header-h) + var(--rail-h) + 14px);
}
.mod__head{
  display:flex; align-items:center; gap:11px; flex-wrap:wrap;
  padding:13px 16px; border-bottom:1px solid var(--line-soft);
  background:linear-gradient(180deg, rgba(23,34,58,.45), transparent);
  border-radius:calc(var(--r-lg) - 1px) calc(var(--r-lg) - 1px) 0 0;
}
.mod[data-collapsed="true"] .mod__head{
  border-radius:calc(var(--r-lg) - 1px); border-bottom-color:transparent;
}
.mod__icon{
  width:30px; height:30px; flex:none; border-radius:var(--r-sm); display:grid; place-items:center;
  background:var(--surface-2); border:1px solid var(--line); font-size:14px; line-height:1;
}
.mod__titles{ min-width:0; flex:1 1 auto; }
.mod__title{
  font-size:13px; font-weight:700; letter-spacing:.09em; text-transform:uppercase;
  color:var(--ink); line-height:1.25;
}
.mod__sub{ font-size:11.5px; color:var(--ink-3); line-height:1.4; }
.mod__tools{ display:flex; align-items:center; gap:7px; margin-left:auto; }

/* Expand / collapse — an obvious control, not a tiny CLOSE label */
.mod__toggle{
  display:inline-flex; align-items:center; gap:7px; height:30px; padding:0 11px;
  border-radius:var(--r-sm); border:1px solid var(--line); background:var(--surface-2);
  color:var(--ink-2); font-size:11.5px; font-weight:600;
  transition:all var(--t-fast);
}
.mod__toggle:hover{ background:var(--surface-3); color:var(--ink); border-color:var(--line-strong); }
.mod__toggle svg{ width:13px; height:13px; fill:currentColor; transition:transform var(--t) var(--ease); }
.mod__toggle .lbl-collapse{ display:inline; }
.mod__toggle .lbl-expand{ display:none; }
.mod[data-collapsed="true"] .mod__toggle svg{ transform:rotate(-90deg); }
.mod[data-collapsed="true"] .mod__toggle .lbl-collapse{ display:none; }
.mod[data-collapsed="true"] .mod__toggle .lbl-expand{ display:inline; }

.mod__body{ padding:16px; }
.mod__body--flush{ padding:0; }
.mod[data-collapsed="true"] .mod__body{ display:none; }
.mod[data-collapsed="true"]{ box-shadow:var(--sh-1); }

/* Two/three column module layouts */
.grid-2{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.grid-3{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.col{ min-width:0; display:flex; flex-direction:column; gap:11px; }
.col + .col{ position:relative; }
.col-head{
  display:flex; align-items:center; gap:9px; flex-wrap:wrap;
  padding-bottom:9px; border-bottom:1px solid var(--line-soft);
}
.col-head h3,.songlog-title,.alnews-title,.ev-title{
  font-family:var(--ff-mono); font-size:11px; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--ink-2); margin:0;
}
.alnews-by{ font-weight:400; color:var(--ink-3); letter-spacing:.06em; }
.col-foot{ display:flex; align-items:center; justify-content:center; gap:11px; margin-top:auto; padding-top:6px; }

/* Article card — one shape reused by Alabama news, local news and events */
.acard{ display:flex; flex-direction:column; gap:9px; min-width:0; flex:1 1 auto; }
.acard__img{
  width:100%; aspect-ratio:16/9; border-radius:var(--r-md); overflow:hidden;
  background:var(--surface-2); border:1px solid var(--line); flex:none;
}
.acard__img.hidden{ display:none; }
.acard__img img{ width:100%; height:100%; object-fit:cover; transition:transform var(--t) var(--ease); }

/* Card artwork that carries its card's Read More link */
.acard__img.is-linked,.ev-img-wrap.is-linked{ cursor:pointer; position:relative; overflow:hidden; }
.acard__img.is-linked:hover,.ev-img-wrap.is-linked:hover{ border-color:var(--accent-line); }
.acard__img.is-linked:hover img,.ev-img-wrap.is-linked:hover img{ transform:scale(1.04); }
.acard__img.is-linked:focus-visible,.ev-img-wrap.is-linked:focus-visible{
  outline:2px solid var(--cyan); outline-offset:2px;
}
.acard__img.is-linked::after,.ev-img-wrap.is-linked::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(180deg, transparent 55%, rgba(6,10,18,.42));
  opacity:0; transition:opacity var(--t);
}
.acard__img.is-linked:hover::after,.ev-img-wrap.is-linked:hover::after{ opacity:1; }
.acard__headline{
  font-size:15.5px; font-weight:700; line-height:1.32; color:var(--ink);
  display:-webkit-box; -webkit-line-clamp:3; line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.acard__headline:hover{ color:var(--accent); }
.acard__excerpt{
  font-size:13px; line-height:1.55; color:var(--ink-2);
  display:-webkit-box; -webkit-line-clamp:4; line-clamp:4; -webkit-box-orient:vertical; overflow:hidden;
}
.acard__meta{ font-family:var(--ff-mono); font-size:11px; color:var(--ink-3); }
.ln-readmore,.ev-readmore{
  display:inline-flex; align-items:center; gap:6px; align-self:flex-start;
  height:32px; padding:0 13px; border-radius:var(--r-sm);
  border:1px solid var(--accent-line); background:var(--accent-soft); color:var(--accent);
  font-size:12px; font-weight:700; transition:all var(--t-fast); margin-top:auto;
}
.ln-readmore:hover,.ev-readmore:hover{ background:var(--accent); color:var(--accent-ink); text-decoration:none; }
/* Rotator crossfades — same timing for Alabama news, local news and events */
.aln-fade-out,.ln-fade-out,.ev-fade-out{ opacity:0; transition:opacity 240ms var(--ease); }
.aln-fade-in,.ln-fade-in,.ev-fade-in{ opacity:1; transition:opacity 240ms var(--ease); }

/* ══ 12 · SONG LOG & TRIVIA ════════════════════════════════════════════ */
.songlog-station{
  margin-left:auto; font-family:var(--ff-mono); font-size:10.5px; font-weight:700;
  letter-spacing:.1em; text-transform:uppercase; color:var(--accent);
}
.songlog-list{
  display:grid; grid-template-columns:minmax(0,1fr); gap:6px; align-content:start;
  max-height:340px; overflow-y:auto; padding-right:5px;
}
@media (min-width:900px){ .songlog-list{ grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:14px; } }
@media (min-width:1500px){ .songlog-list{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
.songlog-row{
  display:grid; grid-template-columns:auto 1fr auto; gap:11px; align-items:center;
  padding:7px 10px; border-radius:var(--r-sm);
  background:rgba(14,21,36,.80); border:1px solid var(--line-soft);
  transition:background var(--t-fast), border-color var(--t-fast);
}
.songlog-row:hover{ background:rgba(23,34,58,.92); border-color:var(--line); }
.songlog-row:first-child{
  background:linear-gradient(90deg, rgba(247,179,43,.22), rgba(14,21,36,.82));
  border-color:var(--accent-line);
}
/* Text sits over live video, which can be bright on any given frame.
   Keep the video clear and raise the TEXT instead: the secondary artist line
   is lifted a step and everything gets a hairline shadow. */
.songlog-col-left:has(#stationVideo) .songlog-text .songlog-title,
.songlog-col-left:has(#stationVideo) .songlog-artist,
.songlog-col-left:has(#stationVideo) .songlog-num,
.songlog-col-left:has(#stationVideo) .col-head{
  text-shadow:0 1px 3px rgba(0,0,0,.9), 0 0 10px rgba(0,0,0,.55);
}
.songlog-col-left:has(#stationVideo) .songlog-artist{ color:var(--ink-2); }
.songlog-col-left:has(#stationVideo) .songlog-num{ color:var(--ink-2); }
.songlog-col-left:has(#stationVideo) .col-head{
  position:relative; z-index:3;
  background:linear-gradient(180deg, rgba(6,10,18,.55), rgba(6,10,18,0));
  border-radius:var(--r-sm) var(--r-sm) 0 0;
  padding-inline:6px; margin-inline:-6px;
}
.songlog-row:first-child .songlog-num{ color:var(--accent); }
.songlog-art{
  width:40px; height:40px; flex:none; border-radius:var(--r-xs); overflow:hidden;
  background:var(--surface-inset); display:grid; place-items:center; font-size:15px; color:var(--ink-3);
}
.songlog-art img{ width:100%; height:100%; object-fit:cover; }
.songlog-text{ min-width:0; }
.songlog-text .songlog-title{
  font-family:var(--ff-ui); font-size:13.5px; font-weight:600; letter-spacing:0; text-transform:none;
  color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.songlog-artist{
  font-size:12px; color:var(--ink-3); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.songlog-num{
  font-family:var(--ff-mono); font-size:11px; color:var(--ink-3); flex:none;
  width:20px; text-align:right; font-variant-numeric:tabular-nums;
}
.songlog-empty{ padding:24px 16px; text-align:center; color:var(--ink-3); font-size:13px; }
.songlog-list.trivia-dimmed{ opacity:.25; }

.flip-enter{ opacity:0; transform:translateY(8px); }
.flip-visible{ opacity:1; transform:none; transition:opacity 320ms var(--ease-out), transform 320ms var(--ease-out); }

/* Station background video (player.js injects #stationVideo for stations whose
   config carries video_url). It sits behind the song log; this scrim keeps the
   track titles readable while the video still reads as studio atmosphere. */
.songlog-col-left{ position:relative; padding-bottom:36px; }
/* The station video fills the whole panel (cover-sized by player.js).
   It plays CLEAR through the middle and is feathered away at the edges by a
   pure vignette — no blanket dimming layer. Legibility comes from the track
   rows themselves, which carry their own tint, not from hiding the video. */
#stationVideo{ border-radius:var(--r-md); filter:saturate(1.05) brightness(1); }
.songlog-col-left:has(#stationVideo)::after{
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  border-radius:var(--r-md);
  background:radial-gradient(ellipse 82% 92% at 50% 50%,
    rgba(6,10,18,0)    0%,
    rgba(6,10,18,0)   38%,
    rgba(6,10,18,.14) 58%,
    rgba(6,10,18,.46) 80%,
    rgba(6,10,18,.88) 100%);
}
/* Keep the list and its header above the video/scrim in every browser,
   including ones without :has() support. */
.songlog-col-left > .col-head{ position:relative; z-index:3; }
.songlog-list{ position:relative; z-index:2; }

/* ── Trivia overlay ──
   The class/geometry contract below is what js/trivia.js drives:
     .trivia-wrap                → hidden
     .trivia-wrap.enter-bounce   → visible, cloud plays triviaEnter
     .trivia-wrap.visible        → visible, no entry animation
     .trivia-wrap.game-show-pulse→ visible, entry + breathing pulse
     .trivia-cloud must be absolutely centred with
        transform: translate(-50%,-50%) rotate(-9deg)
     because animateOut() drives that exact transform frame by frame.
   Only the styling inside that contract has been modernised. */
.trivia-wrap{
  position:absolute; inset:0; z-index:50; pointer-events:none;
  opacity:0; transition:opacity .4s var(--ease);
}
.trivia-wrap.visible,
.trivia-wrap.enter-bounce,
.trivia-wrap.game-show-pulse{ opacity:1; }
/* Dim the song log behind the bubble so the question is the focus */
.trivia-wrap::after{
  content:""; position:absolute; inset:0; z-index:-1; border-radius:var(--r-md);
  background:rgba(6,10,18,.58); opacity:0; transition:opacity .4s var(--ease);
}
.trivia-wrap.enter-bounce::after,
.trivia-wrap.visible::after,
.trivia-wrap.game-show-pulse::after{ opacity:1; }

.trivia-bg-reaction{
  position:absolute; inset:0; border-radius:var(--r-md); opacity:0;
  transition:opacity 300ms var(--ease); pointer-events:none;
  background:radial-gradient(circle at 50% 55%, var(--accent-soft), transparent 68%);
}
.trivia-bg-reaction.active{ opacity:1; }
.trivia-flash{
  position:absolute; inset:0; background:#fff; opacity:0; pointer-events:none; border-radius:var(--r-md);
}
.trivia-flash.active{ animation:trivia-flash 250ms var(--ease); }
@keyframes trivia-flash{ 0%{ opacity:.32; } 100%{ opacity:0; } }

.trivia-cloud{
  position:absolute; top:50%; left:50%;
  width:92%; max-width:470px; min-height:190px;
  display:flex; align-items:center; justify-content:center;
  transform:translate(-50%,-50%) rotate(-9deg);
  pointer-events:auto;
  --trivia-var-rot:0deg; --trivia-var-ox:0px; --trivia-var-oy:0px;
}
.trivia-wrap.enter-bounce .trivia-cloud{
  animation:triviaEnter .7s cubic-bezier(.34,1.56,.64,1) forwards;
}
.trivia-wrap.game-show-pulse .trivia-cloud{
  animation:triviaEnter .7s cubic-bezier(.34,1.56,.64,1) forwards,
            triviaGamePulse 2.4s var(--ease) .7s infinite;
}
@keyframes triviaEnter{
  0%  { opacity:0; transform:translate(calc(-50% + var(--trivia-var-ox)), calc(-50% + var(--trivia-var-oy))) scale(.15) rotate(40deg); }
  50% { opacity:1; transform:translate(calc(-52% + var(--trivia-var-ox)), calc(-48% + var(--trivia-var-oy))) scale(1.08) rotate(calc(-5deg + var(--trivia-var-rot))); }
  70% { transform:translate(calc(-49% + var(--trivia-var-ox)), calc(-51% + var(--trivia-var-oy))) scale(.96) rotate(calc(-7deg + var(--trivia-var-rot))); }
  85% { transform:translate(calc(-50.5% + var(--trivia-var-ox)), calc(-49.5% + var(--trivia-var-oy))) scale(1.02) rotate(calc(-10deg + var(--trivia-var-rot))); }
  100%{ opacity:1; transform:translate(calc(-50% + var(--trivia-var-ox)), calc(-50% + var(--trivia-var-oy))) scale(1) rotate(calc(-9deg + var(--trivia-var-rot))); }
}
@keyframes triviaGamePulse{
  0%,100%{ filter:none; }
  50%{ filter:drop-shadow(0 0 18px var(--accent-soft)); }
}
/* The SVG IS the bubble now — a scalloped thought-cloud, not a card. */
.trivia-cloud-svg{
  position:absolute; inset:0; width:100%; height:100%;
  opacity:1; pointer-events:none; overflow:visible;
}
/* Comms sweep running the cloud outline — the "signal is live" tell */
.trivia-cloud-trace{
  stroke-dasharray:70 900;
  stroke-dashoffset:0;
  opacity:.85;
  filter:drop-shadow(0 0 5px rgba(127,233,255,.9));
  animation:trivia-trace 4.2s linear infinite;
}
@keyframes trivia-trace{ to{ stroke-dashoffset:-970; } }

.trivia-inner{
  position:relative; z-index:2; width:100%;
  /* Inset far enough to clear the scalloped rim on every side */
  padding:38px 46px;
  background:none; border:0; box-shadow:none;
}
/* Faint scanlines inside the cloud, matching the console info screen */
.trivia-inner::before{
  content:""; position:absolute; inset:14px 26px; z-index:-1; pointer-events:none;
  border-radius:34px; opacity:.5;
  background:repeating-linear-gradient(180deg, rgba(255,255,255,.03) 0 1px, transparent 1px 4px);
}
.trivia-logo{ width:98px; margin:0 auto 10px; }
.trivia-text{ display:flex; flex-direction:column; gap:9px; text-align:center; }
.trivia-label{
  font-family:var(--ff-mono); font-size:10px; font-weight:700; letter-spacing:.18em;
  text-transform:uppercase; color:var(--accent);
}
.trivia-content{ font-size:15px; font-weight:600; line-height:1.4; color:var(--ink); }
/* Answer reveal state */
.trivia-content.answer{ color:var(--green); font-size:16px; font-weight:700; }
.trivia-choices{ display:flex; flex-direction:column; gap:6px; margin-top:3px; }
.trivia-choice-btn{
  display:block; width:100%; text-align:left; padding:9px 12px;
  border-radius:var(--r-sm); border:1px solid var(--line);
  background:var(--surface-2); color:var(--ink-2);
  font-size:13px; font-weight:500; line-height:1.35;
  transition:all var(--t-fast);
}
.trivia-choice-btn:empty{ display:none; }
.trivia-choice-btn:hover{ background:var(--surface-3); color:var(--ink); border-color:var(--line-strong); }
.trivia-choice-btn.selected{ border-color:var(--accent-line); background:var(--accent-soft); color:var(--ink); }
.trivia-choice-btn.reveal-correct{ border-color:var(--green); background:rgba(52,211,153,.15); color:#a7f3d0; }
.trivia-choice-btn.reveal-user-correct{ border-color:var(--green); background:rgba(52,211,153,.25); color:#d1fae5; font-weight:700; }
.trivia-choice-btn.reveal-user-wrong{ border-color:var(--red); background:rgba(255,82,82,.18); color:#fecaca; }
.trivia-choice-btn.reveal-dim{ opacity:.4; }
.trivia-engagement{ font-size:11.5px; color:var(--ink-3); font-style:italic; }
/* Decorative "thought" dots from the original bubble — kept, but as quiet
   accents rather than cartoon blobs. */
/* Thought trail: three little cloudlets, each an irregular blob rather than a
   plain circle, drifting up toward the corner. */
.trivia-dot{
  position:absolute; z-index:51; pointer-events:none;
  background:linear-gradient(180deg, rgba(22,33,58,.97), rgba(7,12,23,.99));
  border:1.5px solid rgba(247,179,43,.5);
  box-shadow:0 0 12px -3px var(--accent), inset 0 1px 0 rgba(255,255,255,.07);
  opacity:0; transform:scale(.5);
  transition:opacity .35s var(--ease), transform .35s var(--ease);
}
.trivia-dot-1{
  width:26px; height:19px; top:17%; right:15%;
  border-radius:62% 74% 58% 68% / 70% 58% 74% 62%;
}
.trivia-dot-2{
  width:17px; height:13px; top:9%; right:9%;
  border-radius:72% 58% 70% 60% / 60% 72% 56% 74%;
}
.trivia-dot-3{
  width:10px; height:8px; top:3%; right:4.5%;
  border-radius:66% 70% 60% 72% / 74% 60% 70% 58%;
}
.trivia-wrap.enter-bounce .trivia-dot,
.trivia-wrap.visible .trivia-dot,
.trivia-wrap.game-show-pulse .trivia-dot{
  animation:trivia-puff-float 5s var(--ease) infinite;
}
.trivia-dot-1{ animation-delay:0s; }
.trivia-dot-2{ animation-delay:.35s; }
.trivia-dot-3{ animation-delay:.7s; }
@keyframes trivia-puff-float{
  0%,100%{ transform:translate(0,0) scale(1); }
  50%    { transform:translate(2px,-4px) scale(1.06); }
}
.trivia-wrap.enter-bounce .trivia-dot,
.trivia-wrap.visible .trivia-dot,
.trivia-wrap.game-show-pulse .trivia-dot{ opacity:1; transform:scale(1); transition-delay:.3s; }

.trivia-scoreboard{
  position:absolute; left:50%; bottom:10px; transform:translateX(-50%); z-index:52;
  display:flex; gap:8px; pointer-events:none;
}
.trivia-score-right,.trivia-score-wrong{
  font-family:var(--ff-mono); font-size:10px; font-weight:700; letter-spacing:.1em;
  padding:3px 10px; border-radius:var(--r-pill); border:1px solid var(--line);
  background:var(--surface-1); white-space:nowrap;
  opacity:0; transition:opacity .3s var(--ease), transform var(--t-fast);
}
.trivia-wrap.enter-bounce .trivia-score-right,
.trivia-wrap.enter-bounce .trivia-score-wrong,
.trivia-wrap.visible .trivia-score-right,
.trivia-wrap.visible .trivia-score-wrong,
.trivia-wrap.game-show-pulse .trivia-score-right,
.trivia-wrap.game-show-pulse .trivia-score-wrong{ opacity:1; }
.trivia-score-right{ color:var(--green); border-color:rgba(52,211,153,.35); }
.trivia-score-wrong{ color:var(--red);   border-color:rgba(255,82,82,.35); }
.trivia-score-pop{ transform:scale(1.22); }
.trivia-countdown{
  position:absolute; left:50%; bottom:2px; transform:translateX(-50%); z-index:6;
  font-family:var(--ff-mono); font-size:11px; font-weight:600; letter-spacing:.06em;
  color:var(--ink-2); background:var(--surface-1); border:1px solid var(--line);
  padding:4px 12px; border-radius:var(--r-pill);
  opacity:0; visibility:hidden; transition:opacity var(--t), color var(--t), border-color var(--t);
}
.trivia-countdown.visible{ opacity:1; visibility:visible; }
.trivia-countdown.urgent-yellow{ color:var(--amber); border-color:rgba(247,179,43,.45); }
.trivia-countdown.urgent-red{ color:var(--red); border-color:rgba(255,82,82,.5); }


/* ══ 13 · WEATHER ══════════════════════════════════════════════════════ */
.wx{ display:grid; grid-template-columns:300px minmax(0,1fr); gap:16px; align-items:stretch; }
.wx-now{
  position:relative; border-radius:var(--r-md); overflow:hidden; min-height:186px;
  background:var(--surface-2) center/cover no-repeat; border:1px solid var(--line);
  display:flex; flex-direction:column; padding:14px; color:#fff;
  box-shadow:var(--sh-1);
}
.wx-now::before{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(4,10,22,.32) 0%, rgba(4,10,22,.68) 62%, rgba(4,10,22,.88) 100%);
}
.wx-now > *{ position:relative; z-index:1; }
.wx-now-top{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.wx-loc{ font-size:14px; font-weight:700; text-shadow:0 1px 4px rgba(0,0,0,.8); }
.wx-badge{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--ff-mono); font-size:9.5px; font-weight:700; letter-spacing:.12em;
  padding:3px 9px; border-radius:var(--r-pill);
  background:rgba(6,10,20,.6); border:1px solid rgba(255,255,255,.18);
}
.wx-dot{ width:5px; height:5px; border-radius:50%; background:var(--cyan); }
.wx-now-mid{ display:flex; align-items:center; gap:12px; margin-top:auto; }
.wx-icon{ font-size:44px; line-height:1; filter:drop-shadow(0 3px 8px rgba(0,0,0,.6)); }
.wx-now-text{ min-width:0; }
.wx-temp{ font-size:38px; font-weight:800; letter-spacing:-.03em; line-height:1; text-shadow:0 2px 8px rgba(0,0,0,.7); }
.wx-cond{ font-size:13px; color:rgba(255,255,255,.9); margin-top:3px; text-shadow:0 1px 4px rgba(0,0,0,.85); }
.wx-now-name{
  font-family:var(--ff-mono); font-size:10px; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:rgba(255,255,255,.7); margin-top:8px;
}
.wx-strip{
  display:flex; gap:10px; overflow-x:auto; padding-bottom:6px;
  scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch;
}
.wx-tile{
  position:relative; flex:0 0 132px; scroll-snap-align:start;
  border-radius:var(--r-md); overflow:hidden; min-height:186px;
  background:var(--surface-2) center/cover no-repeat; border:1px solid var(--line);
  display:flex; flex-direction:column; justify-content:flex-end; gap:2px;
  padding:11px; color:#fff;
}
.wx-tile::before{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(4,10,22,.25) 0%, rgba(4,10,22,.72) 58%, rgba(4,10,22,.92) 100%);
}
.wx-tile > *{ position:relative; z-index:1; }
.wx-tile-name{
  position:absolute; top:10px; left:11px; right:11px; z-index:1;
  font-family:var(--ff-mono); font-size:9.5px; font-weight:700; letter-spacing:.1em;
  text-transform:uppercase; color:rgba(255,255,255,.92); text-shadow:0 1px 4px rgba(0,0,0,.9);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.wx-tile-icon{ font-size:26px; line-height:1; filter:drop-shadow(0 2px 6px rgba(0,0,0,.6)); }
.wx-tile-temp{ font-size:22px; font-weight:800; letter-spacing:-.02em; text-shadow:0 2px 6px rgba(0,0,0,.8); }
.wx-tile-cond{
  font-size:11px; line-height:1.35; color:rgba(255,255,255,.85); text-shadow:0 1px 4px rgba(0,0,0,.9);
  display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}

/* ══ 14 · EVENTS ═══════════════════════════════════════════════════════ */
.ev-card{ display:flex; flex-direction:column; gap:9px; flex:1 1 auto; min-width:0; }
.ev-img-wrap{
  width:100%; aspect-ratio:16/9; border-radius:var(--r-md); overflow:hidden;
  background:var(--surface-2); border:1px solid var(--line); flex:none;
}
.ev-img-wrap.hidden{ display:none; }
.ev-img{ width:100%; height:100%; object-fit:cover; transition:transform var(--t) var(--ease); }
.ev-info{ display:flex; flex-direction:column; gap:6px; flex:1 1 auto; min-width:0; }
.ev-card-title{
  font-size:15.5px; font-weight:700; line-height:1.3; color:var(--ink); cursor:pointer;
  display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.ev-card-title:hover{ color:var(--accent); }
.ev-card-date{
  display:inline-flex; align-items:center; gap:6px; align-self:flex-start;
  font-family:var(--ff-mono); font-size:11px; font-weight:700; letter-spacing:.06em;
  color:var(--accent); background:var(--accent-soft); border:1px solid var(--accent-line);
  border-radius:var(--r-pill); padding:3px 10px;
}
.ev-card-loc{ font-family:var(--ff-mono); font-size:11.5px; color:var(--ink-3); }
.ev-card-excerpt{
  font-size:13px; line-height:1.55; color:var(--ink-2);
  display:-webkit-box; -webkit-line-clamp:3; line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}

/* ══ 15 · SCORES ═══════════════════════════════════════════════════════ */
.scores-panel{
  overflow:hidden; height:0;
  border-radius:var(--r-lg);
  background:linear-gradient(180deg, rgba(17,26,44,.6), rgba(10,15,26,.75)), var(--surface-1);
  border:1px solid transparent; box-shadow:none;
  margin-bottom:0;
}
.scores-panel.open{ border-color:var(--line); box-shadow:var(--sh-2); margin-bottom:20px; }
.scores-panel-inner{ padding:16px; }
.scores-panel-header{
  display:flex; align-items:center; gap:11px; flex-wrap:wrap;
  padding-bottom:12px; margin-bottom:12px; border-bottom:1px solid var(--line-soft);
}
.scores-panel-title{
  font-size:13px; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--ink);
}
.scores-panel-close{
  margin-left:auto; display:inline-flex; align-items:center; gap:7px;
  height:30px; padding:0 12px; border-radius:var(--r-sm);
  border:1px solid var(--line); background:var(--surface-2); color:var(--ink-2);
  font-size:11.5px; font-weight:600; transition:all var(--t-fast);
}
.scores-panel-close:hover{ background:var(--surface-3); color:var(--ink); border-color:var(--line-strong); }
.scores-list{ display:flex; flex-direction:column; gap:16px; }
.sc-day{
  font-family:var(--ff-mono); font-size:11px; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--accent);
  padding-bottom:7px; border-bottom:1px solid var(--accent-line);
}
.sc-sponsor{ font-size:12px; color:var(--ink-3); font-style:italic; margin-top:-8px; }
.sc-tbl{
  width:100%; border-collapse:collapse; font-size:13px; display:block; overflow-x:auto;
  white-space:nowrap;
}
.sc-tbl thead,.sc-tbl tbody{ display:table; width:100%; min-width:640px; }
.sc-tbl th,.sc-tbl td{
  padding:7px 9px; text-align:center; border-bottom:1px solid var(--line-soft);
}
.sc-tbl th{
  font-family:var(--ff-mono); font-size:9.5px; letter-spacing:.11em; text-transform:uppercase;
  color:var(--ink-3); font-weight:700; border-bottom-color:var(--line);
}
.sc-th-team,.sc-td-team{ text-align:left; min-width:132px; }
.sc-tbl td{ color:var(--ink-2); }
.sc-td-team{ color:var(--ink); font-weight:600; }
.sc-td-q{ font-family:var(--ff-mono); color:var(--ink-3); font-variant-numeric:tabular-nums; }
.sc-td-final{
  font-family:var(--ff-mono); font-weight:700; color:var(--ink);
  font-variant-numeric:tabular-nums; background:var(--surface-2);
}
.sc-td-final.zero{ color:var(--ink-3); background:transparent; }
.sc-td-vs{ font-family:var(--ff-mono); font-size:10px; color:var(--ink-3); letter-spacing:.09em; }
.sc-tbl tbody tr{ cursor:pointer; transition:background var(--t-fast); }
.sc-tbl tbody tr:hover{ background:var(--surface-2); }
.sc-has-focus tbody tr:not(.sc-focused){ opacity:.42; }
.sc-focused{ background:var(--accent-soft) !important; }
.sc-flip-enter{ opacity:0; transform:translateY(8px); }
.sc-flip-visible{ opacity:1; transform:none; transition:opacity 300ms var(--ease-out), transform 300ms var(--ease-out); }

/* ══ 16 · ARCADE ═══════════════════════════════════════════════════════ */
.games-grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(158px,1fr)); gap:14px;
}
.games-card{
  position:relative; display:flex; flex-direction:column; gap:0;
  border-radius:var(--r-md); overflow:hidden;
  border:1px solid var(--line); background:var(--surface-2);
  transition:transform var(--t) var(--ease), border-color var(--t-fast), box-shadow var(--t);
}
.games-card:hover{ transform:translateY(-3px); border-color:var(--accent-line); box-shadow:var(--sh-2), 0 0 26px -12px var(--accent); }
.games-card-icon{ width:100%; aspect-ratio:4/3; object-fit:cover; display:block; }
.games-card-label{
  padding:10px 12px; font-family:var(--ff-mono); font-size:11.5px; font-weight:700;
  letter-spacing:.13em; text-transform:uppercase; color:var(--ink-2); text-align:center;
  border-top:1px solid var(--line-soft); background:var(--surface-1);
  transition:color var(--t-fast);
}
.games-card:hover .games-card-label{ color:var(--accent); }
.games-card::after{
  content:"\25B6 PLAY"; position:absolute; top:9px; right:9px;
  font-family:var(--ff-mono); font-size:9.5px; font-weight:700; letter-spacing:.1em;
  padding:3px 8px; border-radius:var(--r-pill);
  background:rgba(6,10,20,.78); border:1px solid var(--line-strong); color:var(--ink-2);
  opacity:0; transform:translateY(-4px); transition:all var(--t) var(--ease);
}
.games-card:hover::after{ opacity:1; transform:none; color:var(--accent); border-color:var(--accent-line); }

/* Game modal */
.game-modal{
  position:fixed; inset:0; z-index:900; display:none;
  background:rgba(3,6,12,.9); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  padding:clamp(8px,2vw,26px);
}
.game-modal.open{ display:flex; align-items:center; justify-content:center; animation:fade-in var(--t) var(--ease); }
@keyframes fade-in{ from{ opacity:0; } to{ opacity:1; } }
.game-modal-inner{
  display:flex; flex-direction:column; width:100%; height:100%;
  max-width:1180px; border-radius:var(--r-lg); overflow:hidden;
  background:var(--surface-1); border:1px solid var(--line-strong); box-shadow:var(--sh-3);
}
.game-modal-inner.portrait{ max-width:760px; }
.game-modal-header{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  padding:10px 14px; border-bottom:1px solid var(--line); background:var(--surface-2); flex:none;
}
.game-modal-badge{
  font-family:var(--ff-mono); font-size:12px; font-weight:700; letter-spacing:.12em;
  text-transform:uppercase; color:var(--accent);
}
.game-mute-controls{ display:flex; align-items:center; gap:9px; margin-left:auto; flex-wrap:wrap; }
.game-vol-wrap{ display:flex; align-items:center; gap:7px; }
.game-vol-label{ font-family:var(--ff-mono); font-size:9.5px; font-weight:700; letter-spacing:.13em; color:var(--ink-3); }
.game-vol-slider{ width:88px; }
.music-btn-wrap{ display:flex; align-items:center; gap:8px; }
.game-mute-btn{
  height:30px; padding:0 11px; border-radius:var(--r-sm);
  border:1px solid var(--line); background:var(--surface-1); color:var(--ink-3);
  font-family:var(--ff-mono); font-size:10px; font-weight:700; letter-spacing:.09em;
  transition:all var(--t-fast); white-space:nowrap;
}
.game-mute-btn.active{ color:var(--accent); border-color:var(--accent-line); background:var(--accent-soft); }
.game-mute-btn.flash-attention{ animation:flash-attn 1s var(--ease) 3; }
@keyframes flash-attn{ 0%,100%{ box-shadow:none; } 50%{ box-shadow:0 0 0 3px var(--accent-soft); } }
.led-bars{ display:flex; align-items:flex-end; gap:2px; height:20px; opacity:0; transition:opacity var(--t); }
.led-bars.active{ opacity:1; }
.led-bars span{
  width:2.5px; height:100%; border-radius:1px; transform-origin:bottom; transform:scaleY(.06);
  background:linear-gradient(180deg, var(--accent), var(--cyan-dim));
}
.game-modal-close{
  width:32px; height:32px; border-radius:var(--r-sm); display:grid; place-items:center;
  border:1px solid var(--line); background:var(--surface-1); color:var(--ink-2);
  font-size:19px; line-height:1; transition:all var(--t-fast);
}
.game-modal-close:hover{ background:var(--red); border-color:var(--red); color:#fff; }
.game-modal-body{ flex:1 1 auto; min-height:0; background:#000; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.game-modal-body canvas{ max-width:100%; max-height:100%; }
.game-modal-footer{
  padding:7px 14px; text-align:center; flex:none;
  font-family:var(--ff-mono); font-size:10px; letter-spacing:.09em; color:var(--ink-3);
  border-top:1px solid var(--line); background:var(--surface-2);
}
/* High-score entry overlay (scoped so it never collides with the horoscope module) */
#hiScoreOverlay{
  position:absolute; inset:0; z-index:20; display:none;
  flex-direction:column; align-items:center; justify-content:center; gap:12px;
  background:rgba(3,6,12,.94); text-align:center; padding:22px;
}
#hiScoreOverlay .hs-title{
  font-family:var(--ff-mono); font-size:20px; font-weight:700; letter-spacing:.16em;
  color:var(--accent); text-transform:uppercase;
}
#hiScoreOverlay .hs-score{ font-family:var(--ff-mono); font-size:34px; font-weight:700; color:var(--ink); }
#hiScoreOverlay .hs-input{
  width:132px; text-align:center; text-transform:uppercase;
  font-family:var(--ff-mono); font-size:26px; font-weight:700; letter-spacing:.28em;
  padding:9px; border-radius:var(--r-sm); border:1px solid var(--line-strong);
  background:var(--surface-inset); color:var(--ink);
}
#hiScoreOverlay .hs-error{ color:var(--red); font-family:var(--ff-mono); font-size:12px; min-height:18px; }
#hiScoreOverlay .hs-submit{
  height:40px; padding:0 26px; border-radius:var(--r-sm);
  background:var(--accent); color:var(--accent-ink); font-weight:700; letter-spacing:.1em;
}
#hiScoreOverlay .hs-skip{ color:var(--ink-3); font-size:12px; cursor:pointer; letter-spacing:.1em; }
#hiScoreOverlay .hs-skip:hover{ color:var(--ink-2); }
#hiScoreOverlay .hs-credit{ font-size:10.5px; color:var(--ink-3); line-height:1.6; margin-top:8px; }

/* ══ 17 · HOROSCOPE ════════════════════════════════════════════════════ */
.hs-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(84px,1fr)); gap:8px; }
.hs-icon{
  display:flex; flex-direction:column; align-items:center; gap:4px;
  padding:11px 6px; border-radius:var(--r-md);
  border:1px solid var(--line); background:var(--surface-2); color:var(--ink-2);
  transition:all var(--t-fast);
}
.hs-icon:hover{ background:var(--surface-3); color:var(--ink); border-color:var(--line-strong); transform:translateY(-2px); }
.hs-icon.active{ background:var(--accent-soft); border-color:var(--accent-line); color:var(--accent); }
.hs-icon-sym{ font-size:21px; line-height:1; }
.hs-icon-name{ font-family:var(--ff-mono); font-size:9.5px; font-weight:700; letter-spacing:.09em; text-transform:uppercase; }

.hs-bottom{ display:grid; grid-template-columns:minmax(0,1fr) 226px; gap:16px; margin-top:16px; align-items:start; }
.hs-readout{
  display:grid; grid-template-columns:auto 1fr auto; gap:14px; align-items:center;
  padding:15px; border-radius:var(--r-md);
  background:var(--surface-2); border:1px solid var(--line);
  opacity:0; transition:opacity var(--t);
}
.hs-readout.visible{ opacity:1; }
.hs-ro-symbol{
  width:52px; height:52px; flex:none; border-radius:var(--r-md); display:grid; place-items:center;
  font-size:26px; background:var(--accent-soft); border:1px solid var(--accent-line); color:var(--accent);
}
.hs-ro-info{ min-width:0; }
.hs-ro-name{ font-size:16px; font-weight:700; color:var(--ink); }
.hs-ro-range{ font-family:var(--ff-mono); font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-3); margin-bottom:5px; }
.hs-ro-text{ font-size:13.5px; line-height:1.55; color:var(--ink-2); }
.hs-nav-arrows{ display:flex; flex-direction:column; gap:7px; }

.hs-picker-wrap{ position:relative; }
.hs-picker-btn{
  width:100%; height:40px; border-radius:var(--r-sm);
  border:1px solid var(--accent-line); background:var(--accent-soft); color:var(--accent);
  font-size:13px; font-weight:700; transition:all var(--t-fast);
}
.hs-picker-btn:hover{ background:var(--accent); color:var(--accent-ink); }
.hs-picker-drop{
  position:absolute; top:calc(100% + 8px); left:0; right:0; z-index:30;
  padding:14px; border-radius:var(--r-md);
  background:var(--surface-2); border:1px solid var(--line-strong); box-shadow:var(--sh-3);
  display:none;
}
.hs-picker-drop.open{ display:block; animation:drop-in var(--t) var(--ease-out); }
@keyframes drop-in{ from{ opacity:0; transform:translateY(-6px); } to{ opacity:1; transform:none; } }
.hs-picker-label{
  font-family:var(--ff-mono); font-size:10px; font-weight:700; letter-spacing:.13em;
  text-transform:uppercase; color:var(--ink-3); margin-bottom:9px;
}
.hs-picker-row{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:10px; }
.hs-sel{
  height:36px; padding:0 9px; border-radius:var(--r-sm);
  border:1px solid var(--line); background:var(--surface-inset); color:var(--ink); font-size:13px;
}
.hs-go-btn{
  width:100%; height:36px; border-radius:var(--r-sm);
  background:var(--accent); color:var(--accent-ink); font-weight:700; font-size:13px;
}

/* ══ 18 · GALLERY ══════════════════════════════════════════════════════ */
.gallery-strip{
  display:flex; gap:11px; overflow-x:auto; padding-bottom:8px;
  scroll-snap-type:x proximity; -webkit-overflow-scrolling:touch;
}
.gallery-thumb{
  flex:0 0 190px; aspect-ratio:4/3; scroll-snap-align:start;
  border-radius:var(--r-md); overflow:hidden; cursor:pointer;
  border:1px solid var(--line); background:var(--surface-2);
  transition:transform var(--t) var(--ease), border-color var(--t-fast);
}
.gallery-thumb:hover{ transform:scale(1.03); border-color:var(--accent-line); }
.gallery-thumb img{ width:100%; height:100%; object-fit:cover; }
.gallery-count{ font-family:var(--ff-mono); font-size:11px; color:var(--ink-3); letter-spacing:.08em; }

/* ══ 19 · MODALS / LIGHTBOX ════════════════════════════════════════════ */
.article-modal{
  position:fixed; inset:0; z-index:950; display:none;
  background:rgba(3,6,12,.9); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  padding:clamp(12px,3vw,40px); overflow-y:auto;
}
.article-modal.open{ display:flex; align-items:flex-start; justify-content:center; animation:fade-in var(--t) var(--ease); }
.article-modal-inner{
  width:100%; max-width:720px; margin:auto;
  border-radius:var(--r-lg); overflow:hidden;
  background:var(--surface-1); border:1px solid var(--line-strong); box-shadow:var(--sh-3);
}
.article-modal-header{
  display:flex; align-items:center; gap:12px;
  padding:12px 16px; border-bottom:1px solid var(--line); background:var(--surface-2);
}
.article-modal-badge{
  font-family:var(--ff-mono); font-size:11px; font-weight:700; letter-spacing:.13em;
  text-transform:uppercase; color:var(--accent);
}
.article-modal-close{
  margin-left:auto; width:32px; height:32px; border-radius:var(--r-sm); display:grid; place-items:center;
  border:1px solid var(--line); background:var(--surface-1); color:var(--ink-2);
  font-size:19px; line-height:1; transition:all var(--t-fast); flex:none;
}
.article-modal-close:hover{ background:var(--red); border-color:var(--red); color:#fff; }
.article-modal-body{ padding:18px; }
.article-modal-img-wrap{
  width:100%; aspect-ratio:16/9; border-radius:var(--r-md); overflow:hidden;
  background:var(--surface-2); border:1px solid var(--line); margin-bottom:14px;
}
.article-modal-img-wrap.hidden{ display:none; }
.article-modal-img{ width:100%; height:100%; object-fit:cover; }
.article-modal-headline{ font-size:21px; font-weight:800; letter-spacing:-.02em; line-height:1.25; margin-bottom:10px; }
.article-modal-desc{ font-size:14.5px; line-height:1.68; color:var(--ink-2); }
.article-modal-desc p{ margin:0 0 .95em; }
.article-modal-link{
  display:inline-flex; align-items:center; gap:7px; margin-top:14px;
  height:38px; padding:0 16px; border-radius:var(--r-sm);
  border:1px solid var(--accent-line); background:var(--accent-soft); color:var(--accent);
  font-size:13px; font-weight:700;
}
.article-modal-link:hover{ background:var(--accent); color:var(--accent-ink); text-decoration:none; }
.event-modal-date,.event-modal-loc{ font-family:var(--ff-mono); font-size:12px; color:var(--ink-3); margin-bottom:5px; }
.event-modal-date{ color:var(--accent); }

/* "More from this source" block that news.js appends inside .article-modal-desc */
.article-modal-divider{ height:1px; background:var(--line); margin:18px 0 14px; }
.article-modal-more-title{
  font-family:var(--ff-mono); font-size:10.5px; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--ink-3); margin-bottom:9px;
}
.article-modal-related{
  display:block; padding:8px 11px; margin-bottom:6px;
  border-radius:var(--r-sm); border:1px solid var(--line-soft); background:var(--surface-2);
  font-size:13.5px; line-height:1.45; color:var(--ink-2);
  transition:background var(--t-fast), border-color var(--t-fast), color var(--t-fast);
}
.article-modal-related:hover{ background:var(--surface-3); border-color:var(--accent-line); color:var(--ink); text-decoration:none; }
.article-modal-note{ margin-top:12px; font-size:12.5px; color:var(--ink-3); }

.gallery-lightbox{
  position:fixed; inset:0; z-index:960; display:none;
  align-items:center; justify-content:center; padding:clamp(12px,4vw,60px);
  background:rgba(3,6,12,.95); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
}
.gallery-lightbox.open{ display:flex; animation:fade-in var(--t) var(--ease); }
.gallery-lightbox img{ max-width:100%; max-height:100%; border-radius:var(--r-md); box-shadow:var(--sh-3); }
.gallery-lb-close{
  position:absolute; top:18px; right:18px; width:40px; height:40px;
  border-radius:var(--r-sm); display:grid; place-items:center;
  border:1px solid var(--line); background:var(--surface-1); color:var(--ink-2); font-size:22px;
  transition:all var(--t-fast);
}
.gallery-lb-close:hover{ background:var(--red); border-color:var(--red); color:#fff; }
.gallery-lb-nav{
  position:absolute; top:50%; transform:translateY(-50%);
  width:46px; height:46px; border-radius:50%; display:grid; place-items:center;
  border:1px solid var(--line); background:rgba(12,18,32,.85); color:var(--ink-2); font-size:15px;
  transition:all var(--t-fast);
}
.gallery-lb-nav:hover{ background:var(--surface-3); color:var(--ink); border-color:var(--accent-line); }
.gallery-lb-prev{ left:clamp(10px,2vw,26px); }
.gallery-lb-next{ right:clamp(10px,2vw,26px); }

/* ══ 20 · DOCK (persistent mini player) ════════════════════════════════ */
.dock{
  position:fixed; left:0; right:0; bottom:0; z-index:130;
  border-top:1px solid var(--line-strong);
  background:linear-gradient(180deg, rgba(10,15,26,.96), rgba(6,9,16,.99));
  backdrop-filter:blur(16px) saturate(1.2); -webkit-backdrop-filter:blur(16px) saturate(1.2);
  box-shadow:0 -8px 32px rgba(0,0,0,.5);
  transform:translateY(102%); transition:transform var(--t-slow) var(--ease-out);
  padding-bottom:env(safe-area-inset-bottom);
}
.dock.visible{ transform:none; }
.dock__in{ display:flex; align-items:center; gap:14px; height:66px; }
.dock__accent{ width:3px; height:34px; border-radius:2px; background:var(--accent); flex:none; }
.dock__play{
  width:44px; height:44px; flex:none; border-radius:50%; display:grid; place-items:center;
  background:var(--accent); color:var(--accent-ink); border:1px solid var(--accent);
  box-shadow:0 3px 12px -4px var(--accent);
  transition:transform var(--t-fast), filter var(--t-fast);
}
.dock__play:hover{ transform:scale(1.06); filter:brightness(1.1); }
.dock__play svg{ width:17px; height:17px; fill:currentColor; }
.dock__play .ic-pause{ display:none; }
body.is-playing .dock__play .ic-play{ display:none; }
body.is-playing .dock__play .ic-pause{ display:block; }
.dock__text{ min-width:0; flex:1 1 auto; }
.dock__station{
  font-family:var(--ff-mono); font-size:10px; font-weight:700; letter-spacing:.13em;
  text-transform:uppercase; color:var(--accent);
}
.dock__track{ font-size:13.5px; font-weight:600; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dock__vol{ display:flex; align-items:center; gap:9px; width:150px; flex:none; }
.dock__top{
  width:36px; height:36px; flex:none; border-radius:var(--r-sm); display:grid; place-items:center;
  border:1px solid var(--line); background:var(--surface-2); color:var(--ink-2);
  transition:all var(--t-fast);
}
.dock__top:hover{ background:var(--surface-3); color:var(--ink); border-color:var(--line-strong); }
.dock__top svg{ width:15px; height:15px; fill:currentColor; }
body.dock-on{ padding-bottom:66px; }

/* ══ 21 · FOOTER ═══════════════════════════════════════════════════════ */
.site-footer{
  border-top:1px solid var(--line); background:rgba(6,9,16,.7);
  padding:26px 0 34px; margin-top:8px;
}
.site-footer__in{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.footer-brand{ font-size:14px; font-weight:800; letter-spacing:.02em; color:var(--ink); }
.brand-gold{ color:var(--accent); }
.footer-copy{ font-size:12.5px; color:var(--ink-3); }
.footer-links{ display:flex; gap:16px; margin-left:auto; flex-wrap:wrap; }
.footer-links a{ font-size:12.5px; color:var(--ink-2); }
.footer-links a:hover{ color:var(--accent); }
.footer-builder{ width:100%; font-size:11.5px; color:var(--ink-3); padding-top:12px; border-top:1px solid var(--line-soft); }

/* Staging banner — removed automatically at root deployment */
.staging-banner{
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  margin:12px 0 0; padding:9px 14px; border-radius:var(--r-sm);
  background:rgba(247,179,43,.1); border:1px solid rgba(247,179,43,.4);
  font-family:var(--ff-mono); font-size:11px; letter-spacing:.06em; color:var(--amber);
}

/* ══ 22 · RESPONSIVE ═══════════════════════════════════════════════════ */
@media (max-width:1400px){
  .console__grid{ grid-template-columns:258px minmax(0,1fr) 336px; }
}
@media (max-width:1150px){
  .console__grid{ grid-template-columns:246px minmax(0,1fr); }
  .console__col--info{
    grid-column:1 / -1; border-left:0; border-top:1px solid var(--line-soft);
  }
  .infoscreen{ min-height:200px; }
  .wx{ grid-template-columns:262px minmax(0,1fr); }
}
@media (max-width:980px){
  .console__grid{ grid-template-columns:minmax(0,1fr); }
  .console__col + .console__col{ border-left:0; border-top:1px solid var(--line-soft); }
  .station-btns{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); }
  .grid-3{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .wx{ grid-template-columns:minmax(0,1fr); }
  .hs-bottom{ grid-template-columns:minmax(0,1fr); }
}
@media (max-width:768px){
  :root{ --header-h:56px; --rail-h:46px; }
  body{ font-size:15px; }
  .brand__sub{ display:none; }
  .header-status{ display:none; }
  .header-link:not(.header-link--cta){ display:none; }
  .console{ margin-top:14px; border-radius:var(--r-lg); }
  .console__col{ padding:15px; }
  /* Phone order: the player is the hero and its controls come first.
     Stations sit directly beneath it, station info last. */
  .console__grid{ display:flex; flex-direction:column; }
  .console__col--now{ order:1; }
  .console__col--stations{ order:2; background:none; }
  .console__col--info{ order:3; }
  .console__col--now + .console__col{ border-top:1px solid var(--line-soft); }
  /* Phone order inside the player: the metering leads, directly under the
     JUMP TO rail, then now-playing, then the controls. */
  .np{ display:flex; flex-direction:column; }
  .np #zMeters{ order:1; }
  .np .eq-wrap{ order:2; }
  .np__main{ order:3; }
  .np .transport{ order:4; }
  /* Tighten the metering block so the Play control stays within easy reach */
  .np #zMeters .console__title{ margin-bottom:9px; }
  .np__main{ padding-top:4px; border-top:1px solid var(--line-soft); margin-top:2px; }
  .station-hint{ display:none; }
  .grid-2,.grid-3{ grid-template-columns:minmax(0,1fr); }
  .np__main{ grid-template-columns:auto 1fr; gap:13px; }
  .np__art{ width:78px; height:78px; }
  .transport{ grid-template-columns:minmax(0,1fr); gap:14px; }
  .transport__primary{ justify-content:center; }
  .play-hero{ width:66px; height:66px; }
  .play-hero svg{ width:26px; height:26px; }
  .transport-btn{ width:46px; height:46px; }
  .rack-btn{ height:38px; flex:1 1 auto; justify-content:center; }
  .ctrl-group{ display:grid; grid-template-columns:repeat(3,1fr); }
  /* Keep both meters side by side on small screens — they are the signature
     of the console. The vertical fader steps aside; the horizontal fader in
     the transport strip is the touch-friendly volume control. */
  .meterbay{ grid-template-columns:auto minmax(0,1fr) minmax(0,1fr) auto; gap:7px; padding:9px; }
  .meter-mid{ display:none; }
  .meter-led-outer{ width:9px; }
  .eq-canvas{ height:74px; }
  /* One play affordance on a phone: the hero button is directly above. */
  .big-play-btn{ display:none !important; }
  .infoscreen{ min-height:236px; }
  .games-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:11px; }
  .gallery-thumb{ flex-basis:152px; }
  .wx-tile{ flex-basis:118px; min-height:168px; }
  .mod__head{ padding:12px 14px; }
  .mod__body{ padding:14px; }
  .mod__toggle .lbl-collapse,.mod__toggle .lbl-expand{ display:none !important; }
  .mod__toggle{ width:30px; padding:0; justify-content:center; }
  .songlog-list{ max-height:290px; }
  .trivia-inner{ padding:15px 16px; }
  .trivia-content{ font-size:14px; }
  .dock__vol{ display:none; }
  .dock__top{ display:none; }
  .dock__in{ height:62px; gap:11px; padding-right:64px; }
  body.dock-on{ padding-bottom:62px; }
  .site-footer__in{ flex-direction:column; align-items:flex-start; gap:8px; }
  .footer-links{ margin-left:0; }
  .game-modal{ padding:0; }
  .game-modal-inner{ border-radius:0; max-width:100%; }
  .game-modal-header{ padding:8px 10px; gap:8px; }
  .game-vol-wrap{ display:none; }
  .game-mute-btn{ font-size:9px; padding:0 8px; }
}
@media (max-width:420px){
  .station-btns{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; }
  .station-btn{ padding:9px 10px; gap:7px; }
  .station-btn-name{ font-size:13px; }
  .games-grid{ grid-template-columns:minmax(0,1fr); }
  .np__title{ font-size:18px; }
  .hs-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); }
}

/* Wide desktops get more breathing room, not just bigger boxes */
@media (min-width:1700px){
  :root{ --maxw:1680px; }
  .console__grid{ grid-template-columns:320px minmax(0,1fr) 400px; }
  .console__col{ padding:24px; }
  .eq-canvas{ height:104px; }
}

/* ══ 23 · ACCESSIBILITY & REDUCED MOTION ═══════════════════════════════ */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important; scroll-behavior:auto !important;
  }
  .brand__mark::after{ animation:none; border-right-color:var(--accent); }
  .play-hero::after{ display:none; }
  .live-dot,.header-status__dot,.station-btn.playing .station-btn-led{ animation:none !important; }
  .trivia-cloud-trace{ animation:none !important; opacity:.35; }
  .trivia-dot{ animation:none !important; }
  .dock{ transition:none; }
}
@media (prefers-contrast:more){
  :root{
    --line:rgba(160,200,255,.32); --line-strong:rgba(160,200,255,.5);
    --ink-2:#c8d6ea; --ink-3:#9dabc4;
  }
}
