/* Previously Live Grid — homepage dashboard (2026-10-05)
   Dark broadcast aesthetic. Mobile-first, desktop dashboard at 1024px+. */
:root{
  --lg-bg:#0b0b0f; --lg-surface:#141419; --lg-surface2:#1c1c24; --lg-line:#26262f;
  --lg-mod-bg:#111a2e;
  --lg-red:var(--brand-red); --lg-text:#f4f2ec; --lg-muted:#a7a3b8; --lg-faint:#6b6878;
  --lg-green:#35d07f; --lg-gold:#e8b64c; --lg-blue:#5aa9ff; --lg-pink:#e08bd0;
  --lg-serif:'Newsreader',Georgia,serif; --lg-sans:'Archivo',-apple-system,'Segoe UI',sans-serif;
}
.lg-wrap{max-width:1360px;margin:0 auto;padding:0 16px}
@media(min-width:1024px){.lg-wrap{padding:0 32px}}

/* ticker */
.lg-ticker{background:var(--surface-black);border-bottom:1px solid var(--lg-line);overflow:hidden;position:relative}
.lg-ticker-label{position:absolute;left:0;top:0;bottom:0;z-index:2;display:flex;align-items:center;gap:6px;
  background:var(--lg-red);color:var(--text-on-dark);font-size:10px;font-weight:800;letter-spacing:.12em;padding:0 10px;white-space:nowrap}
@media(min-width:1024px){.lg-ticker-label{font-size:10.5px;padding:0 16px}}
.lg-ticker-track{display:flex;gap:26px;padding:9px 0 9px 118px;width:max-content;animation:lg-tick 38s linear infinite;
  font-size:12px;color:var(--lg-muted);white-space:nowrap;font-family:var(--lg-sans)}
@media(min-width:1024px){.lg-ticker-track{gap:34px;padding-left:170px;font-size:12.5px}}
.lg-ticker-track b{color:var(--lg-text);font-weight:700}
.lg-ticker-track a{color:inherit}
@keyframes lg-tick{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.lg-ticker-track{animation:none}}

/* hero */
.lg-hero{position:relative;padding:26px 18px 22px;overflow:hidden;font-family:var(--lg-sans);
  background:radial-gradient(120% 90% at 50% 0%,#1a2340 0%,#101a33 45%,#0a1226 100%)}
.lg-hero::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(115deg,transparent 0 46px,rgba(var(--brand-red-rgb),.05) 46px 47px)}
.lg-kicker{display:inline-flex;align-items:center;gap:7px;font-size:10.5px;font-weight:800;letter-spacing:.18em;color:var(--lg-red);margin-bottom:10px}
.lg-hero h1{font-family:var(--lg-serif);font-weight:700;font-size:33px;line-height:1.08;letter-spacing:-.01em;margin:0 0 8px;color:var(--lg-text)}
.lg-hero h1 em{font-style:italic;color:var(--lg-red)}
.lg-hero .lg-sub{color:var(--lg-muted);font-size:13.5px;max-width:300px;margin-bottom:16px}
.lg-matchup{display:flex;align-items:center;gap:12px;background:none;border:none;
  border-radius:0;padding:4px 0;margin-bottom:14px}
.lg-matchup .lg-abbr,.lg-matchup .lg-team-sub,.lg-matchup .lg-vs{text-shadow:0 2px 12px rgba(0,0,0,.8),0 1px 3px rgba(0,0,0,.9)}
.lg-team{flex:1;text-align:center}
.lg-team .lg-team-logo{width:64px;height:64px;object-fit:contain;margin:0 auto 6px;display:block;
  background:rgba(255,255,255,.94);border-radius:14px;padding:7px;box-shadow:0 4px 18px rgba(0,0,0,.35)}
.lg-team .lg-abbr{font-weight:900;font-size:19px;letter-spacing:.04em;color:var(--lg-text)}
/* James 2026-10-05: live score under each hero team abbr */
.lg-team .lg-score{font-weight:900;font-size:34px;line-height:1;color:var(--lg-text);margin-top:2px;
  text-shadow:0 2px 12px rgba(0,0,0,.8),0 1px 3px rgba(0,0,0,.9)}
.lg-team .lg-team-sub{font-size:11.5px;color:var(--lg-muted);font-weight:700;margin-top:1px}
.lg-team .lg-odds{font-size:11.5px;color:var(--lg-muted);margin-top:2px}
.lg-team .lg-odds b{color:var(--lg-gold)}
.lg-vs{font-size:13px;color:var(--lg-faint);font-weight:800;letter-spacing:.1em}
.lg-hero-oddsline{display:inline-block;font-size:12.5px;font-weight:800;letter-spacing:.06em;color:var(--lg-gold);
  background:none;border:none;border-radius:0;
  padding:0;margin-bottom:14px;text-shadow:0 2px 12px rgba(0,0,0,.8),0 1px 3px rgba(0,0,0,.9)}
.lg-match-meta{display:flex;justify-content:space-between;font-size:11px;color:var(--lg-muted);margin-bottom:14px;gap:8px;flex-wrap:wrap}
.lg-match-meta b{color:var(--lg-text)}
.lg-hero-actions{display:flex;gap:9px}
.lg-btn{flex:1;text-align:center;font-size:13px;font-weight:800;padding:12px 8px;border-radius:11px;
  border:1px solid var(--lg-line);background:var(--lg-surface2);color:var(--lg-text);font-family:var(--lg-sans);cursor:pointer}
.lg-btn.lg-primary{background:var(--lg-red);border-color:var(--lg-red);color:var(--text-on-dark)}
.lg-btn.lg-ghost{background:transparent}

/* right-now panel — mobile-first glanceable panel.
   James 2026-10-05: rows were unstyled below 1024px (badges + text ran together). */
.lg-hero-side{margin:14px 0 4px;background:var(--lg-mod-bg);border:1px solid var(--lg-line);
  border-radius:16px;padding:14px 16px 4px;font-family:var(--lg-sans)}
.lg-hero-side:empty{display:none}
.lg-hero-side h3{font-size:11px;font-weight:800;letter-spacing:.18em;color:var(--lg-muted);margin:2px 0 4px}
.lg-now-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-top:1px solid var(--lg-line);
  font-size:13.5px;color:var(--lg-text);text-decoration:none;min-height:58px}
.lg-now-row:first-of-type{border-top:none}
.lg-now-row:active .lg-nt b{color:var(--lg-red)}
.lg-now-row .lg-nb{font-size:9.5px;font-weight:800;letter-spacing:.1em;padding:5px 9px;border-radius:6px;flex:0 0 auto}
.lg-nb.lg-live{background:var(--lg-red);color:var(--text-on-dark);animation:lg-now-pulse 2.2s ease-in-out infinite}
.lg-nb.lg-soon{background:var(--lg-surface2);color:var(--lg-blue);border:1px solid var(--lg-line)}
.lg-nb.lg-new{background:var(--lg-surface2);color:var(--lg-green);border:1px solid var(--lg-line)}
@keyframes lg-now-pulse{0%,100%{box-shadow:0 0 0 0 rgba(var(--brand-red-rgb),.45)}50%{box-shadow:0 0 0 5px rgba(var(--brand-red-rgb),0)}}
.lg-now-row .lg-nt{flex:1;min-width:0}
.lg-now-row .lg-nt b{display:block;font-size:14.5px;font-weight:800;line-height:1.25}
.lg-now-row .lg-nt span{display:block;font-size:12px;color:var(--lg-muted);margin-top:2px}
.lg-now-row::after{content:"›";color:var(--lg-faint);font-size:22px;font-weight:700;flex:0 0 auto;line-height:1}

/* TODAY'S BOARD — James 2026-10-06: hero-side matchup rows, all API-driven */
.lg-nb.lg-league{background:var(--lg-surface2);color:var(--lg-text);border:1px solid var(--lg-line)}
.lg-board-row{text-decoration:none;color:inherit}
.lg-board-logos{display:flex;flex:0 0 auto;align-items:center}
.lg-board-logos .lg-team-logo{width:30px;height:30px;margin:0}
.lg-board-logos .lg-team-logo + .lg-team-logo{margin-left:-9px;box-shadow:0 0 0 2px var(--lg-mod-bg)}
.lg-board-main{font-size:14.5px;font-weight:800;line-height:1.25}
.lg-board-main i{font-style:normal;font-weight:600;color:var(--lg-muted);margin:0 7px;font-size:11.5px;letter-spacing:.04em}
.lg-board-main b{white-space:nowrap}

/* mood nav */
.lg-moods{display:flex;gap:8px;overflow-x:auto;padding:10px 14px;background:rgba(11,11,15,.94);
  border-bottom:1px solid var(--lg-line);scrollbar-width:none;font-family:var(--lg-sans)}
.lg-moods::-webkit-scrollbar{display:none}
.lg-mood{flex:0 0 auto;display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;
  padding:9px 14px;border-radius:999px;background:transparent;border:1px solid var(--lg-line);white-space:nowrap;color:var(--lg-text);cursor:pointer}

/* modules */
.lg-module{padding:20px 0 4px;font-family:var(--lg-sans)}
.lg-mod-head{display:flex;align-items:baseline;justify-content:space-between;padding:0 16px;margin-bottom:12px}
.lg-mod-head h2{font-size:12px;font-weight:800;letter-spacing:.16em;color:var(--lg-muted);text-transform:uppercase;margin:0}
.lg-mod-head h2 .lg-dot{color:var(--lg-red)}
.lg-mod-head a{font-size:12px;font-weight:700;color:var(--lg-red)}
.lg-rail{display:flex;gap:10px;overflow-x:auto;padding:2px 16px 8px;scroll-snap-type:x mandatory;scrollbar-width:none}
.lg-rail::-webkit-scrollbar{display:none}
.lg-card{scroll-snap-align:start;flex:0 0 auto;background:transparent;border:1px solid var(--lg-line);border-radius:14px;overflow:hidden;color:var(--lg-text)}

/* scores — premium sports-network cards (2026-10-06 redesign) */
.lg-score-card{width:252px;padding:0;border-radius:16px;background:var(--lg-surface);
  border:1px solid var(--lg-line);box-shadow:0 2px 12px rgba(60,40,20,.07);
  overflow:hidden;position:relative;transition:transform .18s ease,box-shadow .18s ease}
.lg-score-card.lg-tappable:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(60,40,20,.14)}
.lg-score-card .lg-score-link{display:block;padding:16px 18px 14px;color:inherit;text-decoration:none}
.lg-score-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.lg-score-card .lg-lg{font-size:10px;font-weight:800;letter-spacing:.14em;color:var(--lg-faint);text-transform:uppercase}
.lg-score-card .lg-st{font-size:10px;font-weight:800;letter-spacing:.1em;padding:4px 10px;border-radius:999px;
  display:inline-flex;align-items:center;gap:6px}
.lg-score-card .lg-st.lg-live{background:#C2410C;color:#fff;box-shadow:0 2px 8px rgba(194,65,12,.35)}
.lg-score-card .lg-st.lg-final{background:rgba(0,0,0,.06);color:var(--lg-faint)}
.lg-score-card .lg-st.lg-soon{background:rgba(30,100,200,.1);color:var(--lg-blue)}
.lg-pulse{width:7px;height:7px;border-radius:50%;background:#fff;animation:lgPulse 1.6s infinite}
@keyframes lgPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}
/* live accent bar */
.lg-score-card:has(.lg-st.lg-live)::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;
  background:linear-gradient(180deg,#E8590C,#C2410C)}
.lg-score-card:has(.lg-st.lg-live){box-shadow:0 2px 16px rgba(194,65,12,.16)}
.lg-score-teams{display:flex;flex-direction:column;gap:2px}
.lg-score-row{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;margin:0 -10px;border-radius:10px}
.lg-score-row .lg-t{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;min-width:0}
.lg-score-row .lg-t .lg-tn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lg-score-row .lg-s{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--lg-muted);line-height:1}
.lg-score-row.lg-w{background:rgba(194,65,12,.07)}
.lg-score-row.lg-w .lg-t{color:var(--lg-text)}
.lg-score-row.lg-w .lg-s{color:var(--lg-text)}
.lg-score-card .lg-team-logo{width:34px;height:34px;object-fit:contain;flex-shrink:0;
  background:#fff;border-radius:8px;padding:3px;box-shadow:0 1px 4px rgba(60,40,20,.12);margin:0;vertical-align:middle}
.lg-score-card .lg-tap-hint{display:block;margin-top:10px;font-size:11px;font-weight:700;color:var(--lg-red);letter-spacing:.04em}
@media(max-width:480px){.lg-score-card{width:236px}
  .lg-score-card .lg-score-link{padding:14px 15px 12px}}

/* parlay ticket */
/* ---------- PARLAY P — sportsbook ticket (2026-10-05 remodel) ---------- */
.lg-ticket{margin:0 16px;background:var(--lg-surface);border:1px solid var(--lg-line);border-radius:14px;padding:0;position:relative;color:var(--lg-text);overflow:hidden}
.lg-ticket .lg-t-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:var(--lg-red);color:var(--text-on-dark);gap:8px}
.lg-ticket .lg-t-head b{font-size:13px;letter-spacing:.12em;font-weight:800}
.lg-ticket .lg-t-head span{font-size:11px;font-weight:700;opacity:.92;letter-spacing:.04em;white-space:nowrap}
#lgParlayLegs{padding:6px 18px}
.lg-leg{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--lg-line);font-size:14px}
.lg-leg:last-child{border-bottom:0}
.lg-leg-sport{flex:0 0 auto;font-size:10px;font-weight:800;letter-spacing:.1em;color:var(--lg-gold);border:1px solid var(--lg-line);border-radius:6px;padding:4px 8px;min-width:44px;text-align:center}
.lg-leg-main{flex:1;min-width:0}
.lg-leg-main b{display:block;font-size:14.5px;font-weight:700;color:var(--lg-text)}
.lg-leg-main span{display:block;font-size:12px;color:var(--lg-muted);margin-top:2px}
/* live leg status badges (James 2026-10-05): W/L from grading, LIVE from reprice */
.lg-leg-st{flex:0 0 auto;font-size:10px;font-weight:800;letter-spacing:.08em;
  padding:5px 10px;border-radius:999px;white-space:nowrap}
.lg-leg-won{background:rgba(46,160,67,.16);color:#2ea043;border:1px solid rgba(46,160,67,.4)}
.lg-leg-lost{background:rgba(220,38,38,.12);color:#dc2626;border:1px solid rgba(220,38,38,.35)}
.lg-leg-live{background:rgba(198,160,90,.14);color:var(--lg-gold);border:1px solid rgba(198,160,90,.45);
  animation:lg-leg-pulse 2s ease-in-out infinite}
@keyframes lg-leg-pulse{0%,100%{opacity:1}50%{opacity:.55}}
.lg-leg.is-won .lg-leg-main b{color:#2ea043}
.lg-leg.is-lost .lg-leg-main b{color:#dc2626;text-decoration:line-through;text-decoration-thickness:1px}
.lg-t-foot{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-top:2px dashed var(--lg-line);background:rgba(0,0,0,.04)}
.lg-t-combined span{display:block;font-size:10px;font-weight:800;letter-spacing:.14em;color:var(--lg-muted)}
.lg-t-combined b{display:block;font-size:26px;font-weight:800;color:var(--lg-gold);font-variant-numeric:tabular-nums;line-height:1.1}
.lg-ticket .lg-cta{display:inline-block;font-size:13px;font-weight:800;color:var(--text-on-dark);background:var(--lg-red);padding:10px 20px;border-radius:8px;text-decoration:none}
.lg-ticket .lg-cta:hover{opacity:.9}
/* James 2026-10-05: ticket IS the module — no dead space. The red ticket
   header replaces the redundant mod-head; the ticket fills edge to edge. */
#lgParlay{padding:0;overflow:hidden}
#lgParlay .lg-ticket{margin:0;border:0;border-radius:0}
#lgParlay .lg-t-head{border-radius:0}
/* yesterday's result line — filled by buildParlay from record.json; hidden when ungraded */
.lg-t-yesterday{padding:10px 18px;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;text-align:center;border-top:1px dashed var(--lg-line);background:rgba(0,0,0,.05)}
.lg-t-yesterday[hidden]{display:none}
.lg-t-yesterday.hit{color:#1e7a4c}
.lg-t-yesterday.lost{color:var(--lg-muted)}
.lg-t-yesterday.push{color:var(--lg-gold)}

/* podcasts */
.lg-ep-card{width:250px;padding:13px 14px;display:flex;gap:11px;align-items:center}
.lg-ep-rank{font-size:11px;font-weight:800;color:var(--lg-faint);border:1px solid var(--lg-line);border-radius:8px;padding:5px 7px;text-align:center;line-height:1.2;flex:0 0 auto}
.lg-ep-rank b{display:block;font-size:15px;color:var(--lg-text)}
.lg-ep-info{flex:1;min-width:0}
.lg-ep-info .lg-show{font-size:11px;color:var(--lg-muted);font-weight:700}
.lg-ep-info .lg-title{font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--lg-text)}
.lg-ep-info .lg-meta{font-size:11px;color:var(--lg-faint);margin-top:2px}
.lg-play-btn{flex:0 0 auto;width:44px;height:44px;border-radius:50%;background:var(--lg-red);border:none;color:var(--text-on-dark);font-size:16px;
  display:flex;align-items:center;justify-content:center;cursor:pointer}
.lg-play-btn.lg-playing{background:var(--lg-surface2);border:1px solid var(--lg-red)}
.lg-eq{display:none;align-items:flex-end;gap:2.5px;height:16px}
.lg-playing .lg-eq{display:flex} .lg-playing .lg-tri{display:none}
.lg-eq i{width:3px;background:var(--lg-red);border-radius:2px;animation:lg-eq .9s ease-in-out infinite}
.lg-eq i:nth-child(2){animation-delay:.15s}.lg-eq i:nth-child(3){animation-delay:.3s}.lg-eq i:nth-child(4){animation-delay:.45s}
@keyframes lg-eq{0%,100%{height:5px}50%{height:16px}}

/* games */
.lg-game-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0 16px}
.lg-game-card{background:transparent;border:1px solid var(--lg-line);border-radius:14px;padding:14px;position:relative;overflow:hidden;color:var(--lg-text);display:block}
.lg-game-card .lg-g-ico{font-size:22px;margin-bottom:8px}
.lg-game-card b{font-size:13.5px;display:block}
.lg-game-card span{font-size:11.5px;color:var(--lg-muted)}
.lg-game-card .lg-streak{position:absolute;top:10px;right:11px;font-size:10.5px;font-weight:800;color:var(--lg-gold)}
.lg-game-card .lg-go{margin-top:10px;font-size:12px;font-weight:800;color:var(--lg-green)}

/* tv */
.lg-tv-card{width:150px;padding:0;display:block;color:var(--lg-text)}
.lg-tv-thumb{height:86px;display:flex;align-items:center;justify-content:center;font-size:30px;position:relative;
  background:linear-gradient(135deg,#23232e,#17171f)}
.lg-tv-thumb .lg-livebadge{position:absolute;top:8px;left:8px;font-size:9px;font-weight:800;background:var(--lg-red);color:var(--text-on-dark);
  padding:3px 7px;border-radius:5px;letter-spacing:.1em}
.lg-tv-card .lg-ch{padding:10px 12px;font-size:12.5px;font-weight:700}
.lg-tv-card .lg-ch span{display:block;font-size:11px;color:var(--lg-muted);font-weight:500;margin-top:1px}

/* movies */
.lg-poster{width:118px;display:block;color:var(--lg-text)}
.lg-poster .lg-art{height:168px;border-radius:10px 10px 0 0;display:flex;flex-direction:column;justify-content:flex-end;padding:10px;
  font-family:var(--lg-serif);font-weight:700;font-size:14px;line-height:1.15;position:relative;overflow:hidden;color:var(--text-on-dark)}
.lg-poster .lg-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lg-poster .lg-art::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(0,0,0,.78))}
.lg-poster .lg-art span{position:relative;z-index:1}
.lg-poster .lg-art .lg-feat{position:absolute;top:8px;left:8px;z-index:2;font-style:normal;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;background:#C2410C;color:#fff;padding:3px 8px;border-radius:20px}
.lg-poster .lg-p-meta{padding:9px 11px;font-size:11.5px}
.lg-poster .lg-p-meta b{font-size:12.5px;display:block;color:var(--lg-text)}
.lg-poster .lg-p-meta span{color:var(--lg-muted)}

/* rewind — LOUD playful identity: goofy mascot burst, sticker badges, gold confetti stripes.
   James 2026-10-05: "make it stand out... let people know these people are crazy/funny." */
.lg-rewind{
  background:repeating-linear-gradient(-45deg, color-mix(in srgb, var(--lg-gold) 9%, transparent) 0 14px, transparent 14px 28px),
    var(--lg-surface);
  border:1.5px dashed color-mix(in srgb, var(--lg-gold) 60%, transparent);
  border-radius:18px;
  padding:16px 0 12px;
  margin-top:20px;
}
.lg-rewind .lg-mod-head{align-items:center}
/* rewind mascot: donkey mascot image, sticker-style pop */
.lg-rewind .lg-mod-head h2{display:flex;align-items:center;color:var(--lg-gold);font-size:13px}
.lg-rewind-mascot{flex:0 0 auto;width:54px;height:54px;margin-right:12px;
  filter:drop-shadow(0 4px 10px rgba(0,0,0,.32))}
.lg-rewind-mascot img{display:block;width:100%;height:100%;object-fit:cover;border-radius:14px}
.lg-rewind .lg-mod-head a{color:var(--lg-gold)}
.lg-rewind-card{width:230px;display:block}
.lg-rewind-card .lg-art{position:relative;height:130px;overflow:hidden}
.lg-rewind-card .lg-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lg-rewind-card .lg-art::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 45%,rgba(0,0,0,.55))}
/* sticker badge: tilted, white outline, hard shadow — slapped-on look */
.lg-rewind-badge{position:absolute;z-index:1;top:10px;left:10px;transform:rotate(-6deg);
  background:var(--lg-gold);color:var(--lg-bg);font-size:10px;font-weight:800;
  letter-spacing:.12em;padding:5px 10px;border:2px solid #fff;border-radius:9px;
  box-shadow:0 3px 10px rgba(0,0,0,.4);font-family:var(--lg-sans)}
.lg-rewind-info{padding:10px 12px}
.lg-rewind-info b{display:block;font-size:13px;font-weight:700;line-height:1.3;
  color:var(--lg-text);margin-bottom:4px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lg-rewind-info span{font-size:11px;color:var(--lg-muted)}

/* music */
.lg-track{display:flex;align-items:center;gap:12px;margin:0 16px 9px;background:transparent;border:1px solid var(--lg-line);border-radius:12px;padding:11px 13px;color:var(--lg-text)}
.lg-track .lg-t-art{width:44px;height:44px;border-radius:9px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:20px;overflow:hidden;background:var(--lg-surface2)}
.lg-track .lg-t-art img{width:100%;height:100%;object-fit:cover}
.lg-track .lg-t-info{flex:1;min-width:0} .lg-track .lg-t-info b{font-size:13px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lg-track .lg-t-info span{font-size:11.5px;color:var(--lg-muted)}
.lg-track .lg-t-date{font-size:10.5px;font-weight:800;color:var(--lg-gold);border:1px solid #4a3f2c;border-radius:7px;padding:4px 8px;white-space:nowrap}

/* news */
.lg-news-item{display:flex;gap:12px;padding:12px 16px;border-top:1px solid var(--lg-line);color:var(--lg-text)}
.lg-news-item .lg-n-img{width:74px;height:74px;border-radius:10px;flex:0 0 auto;object-fit:cover;background:var(--lg-surface2)}
.lg-news-item .lg-n-body b{font-family:var(--lg-serif);font-size:15px;font-weight:700;line-height:1.25;display:block;margin-bottom:4px}
.lg-news-item .lg-n-body span{font-size:11.5px;color:var(--lg-muted)}

/* vegas */
.lg-vegas{margin:0 16px;border-radius:14px;overflow:hidden;border:1px solid var(--lg-line);
  background:transparent;padding:18px;color:var(--lg-text)}
.lg-vegas-img{width:100%;height:170px;object-fit:cover;border-radius:10px;margin-bottom:14px;display:block}
.lg-vegas .lg-k{font-size:10.5px;font-weight:800;letter-spacing:.18em;color:var(--lg-pink);margin-bottom:8px}
.lg-vegas h3{font-family:var(--lg-serif);font-size:21px;font-weight:700;margin:0 0 6px;color:var(--lg-text)}
.lg-vegas p{font-size:13px;color:var(--lg-muted);margin-bottom:12px}
.lg-vegas a{font-size:13px;font-weight:800;color:var(--lg-pink)}

/* mini player */
.lg-mini-player{position:fixed;left:12px;right:12px;bottom:12px;z-index:60;display:none;align-items:center;gap:11px;
  background:rgba(20,20,26,.96);border:1px solid var(--lg-line);border-radius:14px;padding:10px 13px;
  box-shadow:0 12px 40px rgba(0,0,0,.6);font-family:var(--lg-sans);color:var(--lg-text)}
.lg-mini-player.lg-on{display:flex}
.lg-mini-player .lg-mp-info{flex:1;min-width:0}
.lg-mini-player .lg-mp-info b{font-size:12.5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lg-mini-player .lg-mp-info span{font-size:11px;color:var(--lg-muted)}
.lg-mini-player .lg-mp-close{background:none;border:none;color:var(--lg-faint);font-size:18px;cursor:pointer;padding:4px}

/* desktop dashboard */
@media(min-width:1024px){
  .lg-hero-grid{display:grid;grid-template-columns:1fr 360px;gap:22px;margin:26px 0}
  /* James 2026-10-05: scoreboard as a grid on laptop */
  #lgScores #lgScoreRail{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:0 16px 16px}
  #lgScores #lgScoreRail .lg-score-card{margin:0}  .lg-hero{border-radius:20px;border:1px solid var(--lg-line);min-height:430px;padding:38px;display:flex;flex-direction:column;justify-content:flex-end}
  .lg-hero h1{font-size:54px;max-width:560px}
  .lg-hero .lg-sub{font-size:15px;max-width:480px}
  .lg-hero-side{background:transparent;border:1px solid var(--lg-line);border-radius:20px;padding:22px;display:flex;flex-direction:column;margin:0}
  .lg-hero-side h3{font-size:11px;font-weight:800;letter-spacing:.18em;color:var(--lg-muted);margin:0 0 14px}
  .lg-now-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--lg-line);font-size:13.5px;color:var(--lg-text);text-decoration:none;cursor:pointer}
  .lg-now-row:hover .lg-nt b{color:var(--lg-red)}
  .lg-now-row:first-of-type{border-top:none}
  .lg-now-row .lg-nb{font-size:9.5px;font-weight:800;letter-spacing:.1em;padding:4px 8px;border-radius:6px;flex:0 0 auto}
  .lg-nb.lg-live{background:var(--lg-red);color:var(--text-on-dark)}
  .lg-nb.lg-soon{background:var(--lg-surface2);color:var(--lg-blue);border:1px solid var(--lg-line)}
  .lg-nb.lg-new{background:var(--lg-surface2);color:var(--lg-green);border:1px solid var(--lg-line)}
  .lg-now-row .lg-nt{flex:1}.lg-now-row .lg-nt b{display:block;font-size:13.5px}.lg-now-row .lg-nt span{font-size:12px;color:var(--lg-muted)}
  .lg-dash{display:grid;grid-template-columns:repeat(12,1fr);gap:22px;margin-bottom:8px}
  .lg-mod{background:var(--lg-mod-bg);border:1px solid var(--lg-line);border-radius:18px;padding:22px;position:relative;overflow:hidden;box-shadow:0 8px 24px -12px rgba(10,16,32,.28),0 2px 6px -2px rgba(10,16,32,.12)}
  .lg-span4{grid-column:span 4}.lg-span6{grid-column:span 6}.lg-span8{grid-column:span 8}.lg-span12{grid-column:span 12}
  .lg-span3{grid-column:span 3}
  .lg-mod .lg-mod-head{padding:0}
  .lg-mod .lg-rail{padding:2px 0 8px}
  .lg-mod .lg-game-grid{padding:0}
  .lg-mod .lg-ticket{margin:0}
  .lg-mod .lg-track{margin:0 0 9px}
  .lg-mod .lg-vegas{margin:0;height:100%}
  /* James 2026-10-05: scoreboard sits inside a stadium atmosphere — background
   photo with a dark scrim so the scorelines stay readable in both themes.
   Applies to mobile + desktop; James asked for artwork here explicitly. */
#lgScores{position:relative;overflow:hidden;border-radius:14px;
  background:var(--lg-card);border:1px solid var(--lg-line)}
#lgScores .lg-mod-head{position:relative;padding:14px 16px 0}
#lgScores .lg-mod-head h2,
#lgScores .lg-mod-head a{color:var(--lg-text)}
#lgScores #lgScoreRail{position:relative;padding:0 16px 14px}
#lgScores .lg-scoreline{border-top:1px solid var(--lg-line);color:var(--lg-text)}
#lgScores .lg-scoreline .lg-lg,
#lgScores .lg-scoreline .lg-st{color:var(--lg-muted)}
#lgScores .lg-scoreline .lg-mt{color:var(--lg-text)}
#lgScores .lg-team-logo{background:rgba(255,255,255,.94)}
.lg-scoreline{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-top:1px solid var(--lg-line);font-size:14px;color:var(--lg-text)}
  .lg-scoreline:first-of-type{border-top:none}
  .lg-scoreline .lg-lg{font-size:10px;font-weight:800;letter-spacing:.12em;color:var(--lg-faint);flex:0 0 108px}
  .lg-scoreline .lg-mt{flex:1;font-weight:700}
  .lg-scoreline .lg-st{flex:0 0 92px;text-align:right;font-size:10.5px;font-weight:800;letter-spacing:.08em}
  .lg-games3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
  .lg-tvgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
  .lg-tvgrid .lg-tv-card{width:auto}
  .lg-tvgrid .lg-tv-thumb{height:78px}
  .lg-prail{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px;overflow:visible}
  .lg-prail .lg-poster{width:auto}
  .lg-prail .lg-poster .lg-art{height:200px;font-size:17px}
  .lg-newslead{display:grid;grid-template-columns:1fr 1fr;gap:0}
  .lg-newslead .lg-news-item{padding:14px 18px 14px 0}
  .lg-newslead .lg-news-item:nth-child(-n+2){border-top:none}
  .lg-newslead .lg-n-img{width:92px;height:92px}
  .lg-newslead .lg-n-body b{font-size:16.5px}
  .lg-mini-player{left:50%;transform:translateX(-50%);right:auto;min-width:420px;bottom:18px;padding:12px 18px;border-radius:16px}
}
/* hide empty modules (fail-closed) */
.lg-module[data-lg-empty="1"]{display:none}
.lg-hero[data-lg-empty="1"]{display:none}
.lg-ticker[data-lg-empty="1"]{display:none}

/* real visuals — team logos, show art, channel logos, ticket art */
.lg-team-logo{width:26px;height:26px;object-fit:contain;vertical-align:-7px;margin-right:7px;background:var(--surface-light);border-radius:6px;padding:2px}
.lg-scoreline .lg-team-logo{width:22px;height:22px;vertical-align:-5px;margin:0 4px}
.lg-score-row .lg-t{display:flex;align-items:center}
.lg-ep-card{padding:0}
.lg-ep-art{width:76px;height:76px;object-fit:cover;flex:0 0 auto;border-radius:13px 0 0 13px}
.lg-ep-card .lg-ep-info{padding:10px 4px 10px 0}
.lg-ep-card .lg-play-btn{margin-right:12px}
.lg-tv-thumb{background:#101016}
.lg-tv-logo{max-width:88px;max-height:52px;object-fit:contain}
@media(min-width:1024px){
  .lg-team-logo{width:30px;height:30px}
  .lg-ep-art{width:88px;height:88px}
}

/* score tap-through (James 2026-10-05): tappable cards get affordance, others don't */
.lg-score-card.lg-tappable{cursor:pointer}
.lg-score-card.lg-tappable:active{transform:scale(.98)}
.lg-score-link{display:block;color:inherit;text-decoration:none}
.lg-tap-hint{display:block;margin-top:6px;font-size:10px;font-weight:800;letter-spacing:.1em;color:var(--lg-blue)}
.lg-mt-link{font-size:11px;font-weight:800;color:var(--lg-blue);text-decoration:none;white-space:nowrap}

/* ============ mobile: hero stays full-bleed inside the wrap (2026-10-05) ============
   #lgHero moved inside .lg-hero-grid for the desktop side-by-side layout.
   On mobile the grid wrapper is unstyled, so offset the wrap padding here —
   mobile rendering is pixel-identical to before the move. */
@media(max-width:1023.98px){
  .lg-hero-grid .lg-hero{margin:0 -16px}
}

/* ============ light theme — "Previously in daylight" (2026-10-05) ============
   Cards are transparent and blend with the cream page background (#faf8f2).
   Dark-mode tokens above are untouched (approved dark look).
   Every text color below is picked for WCAG AA on cream:
   ink #1e1a14 (~15:1), muted 66% (~5.9:1), faint 60% (~4.9:1),
   red #b02a1a (~6.5:1), gold #8a6a2f (~4.9:1), green #2c7a4b (~6:1),
   blue #1f5fb8 (~6:1), pink #a03d7e (~6:1). */
@media (prefers-color-scheme:light){
  :root{
    --lg-bg:#faf8f2;
    --lg-mod-bg:#eceef2;
    --lg-surface:transparent;
    --lg-surface2:rgba(30,26,20,.06);
    --lg-line:rgba(30,26,20,.14);
    --lg-red:var(--brand-red-deep);
    --lg-text:#1e1a14;
    --lg-muted:rgba(30,26,20,.72);
    --lg-faint:rgba(30,26,20,.68);
    --lg-green:#2c7a4b;
    --lg-gold:#8a6a2f;
    --lg-blue:#1f5fb8;
    --lg-pink:#a03d7e;
  }
  /* full-bleed strips: moods + mini player go cream, ticker stays a black chyron bar */
  .lg-moods{background:rgba(250,248,242,.94)}
  .lg-mini-player{background:rgba(250,248,242,.96)}
  .lg-ticker-track{color:rgba(244,242,236,.72)}
  .lg-ticker-track b{color:var(--text-on-dark)}
  .lg-hero::after{background:repeating-linear-gradient(115deg,transparent 0 46px,rgba(var(--brand-red-deep-rgb),.06) 46px 47px)}
  /* hero keeps its dark photographic treatment in both modes — pin light text */
  .lg-hero h1{color:var(--text-on-dark)}
  .lg-hero .lg-kicker{color:var(--brand-red)}
  .lg-hero .lg-sub{color:rgba(244,242,236,.80)}
  .lg-hero .lg-vs{color:rgba(244,242,236,.55)}
  .lg-hero .lg-team .lg-abbr{color:var(--text-on-dark)}
  .lg-hero .lg-team .lg-odds{color:rgba(244,242,236,.72)}
  .lg-hero .lg-team .lg-odds b{color:var(--lg-gold)}
  .lg-hero .lg-match-meta{color:rgba(244,242,236,.72)}
  .lg-hero .lg-match-meta b{color:var(--text-on-dark)}
  .lg-hero .lg-btn{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.25);color:var(--text-on-dark)}
  .lg-hero .lg-btn.lg-primary{background:var(--brand-red);border-color:var(--brand-red);color:var(--text-on-dark)}
}

/* ============ desktop additions (2026-10-05) ============
   Real desktop dashboard: mood nav becomes a centered row, horizontal rails
   become wrapping grids that use the width. Mobile rails are untouched. */
@media(min-width:1024px){
  .lg-moods{justify-content:center;flex-wrap:wrap;overflow:visible}
  /* James 2026-10-05: Tonight / Scores / P's Card are visible without
     scrolling on desktop — their jump pills just nudge the page a pixel.
     Hide them; keep the pills for sections below the fold. */
  .lg-mood[href="#lgHero"],
  .lg-mood[href="#lgScores"],
  .lg-mood[href="#lgParlay"]{display:none}
  /* hero grid: single column until the side panel actually has content,
     then hero + 360px "right now" rail. :not(:empty) mirrors the JS
     (innerHTML is "" when the panel is hidden). */
  .lg-hero-grid{grid-template-columns:1fr}
  .lg-hero-grid:has(> .lg-hero-side:not(:empty)){grid-template-columns:1fr 360px}
  .lg-mod .lg-rail:not(.lg-tvgrid):not(.lg-prail){
    display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
    gap:14px;overflow:visible}
  .lg-mod .lg-rail:not(.lg-tvgrid):not(.lg-prail) .lg-card,
  .lg-mod .lg-rail:not(.lg-tvgrid):not(.lg-prail) .lg-score-card,
  .lg-mod .lg-rail:not(.lg-tvgrid):not(.lg-prail) .lg-ep-card{width:auto}
  .lg-mod .lg-rail:not(.lg-tvgrid):not(.lg-prail) .lg-ep-card .lg-ep-art{border-radius:12px}
  /* James 2026-10-05: desktop scores render as .lg-scoreline rows (see
     fmtScore in livegrid.js), NOT cards. The card grid above breaks them —
     each row got squeezed into a 240px grid cell. Stack the scorelines as
     full-width rows instead: a real scoreboard list. */
  #lgScoreRail{display:block;overflow:visible}
  #lgScoreRail .lg-scoreline{padding:12px 4px}
  /* James 2026-10-05: podcast section was text-heavy on desktop. Redesign as
     a visual browse grid — big cover art, show name only, play button
     overlaid on the artwork like a podcast app. Episode title + duration
     hidden on desktop (they stay on mobile). */
  #lgListen .lg-rail{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:22px 18px;overflow:visible;padding:4px 0 10px}
  #lgListen .lg-ep-card{width:auto;flex-direction:column;align-items:stretch;gap:0;padding:0;border:none;position:relative}
  #lgListen .lg-ep-art{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;border-radius:16px;margin:0;flex:none}
  #lgListen .lg-ep-info{padding:10px 2px 0}
  #lgListen .lg-ep-info .lg-show{font-size:13px;font-weight:800;color:var(--lg-text);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #lgListen .lg-ep-info .lg-title,
  #lgListen .lg-ep-info .lg-meta{display:none}
  #lgListen .lg-play-btn{position:absolute;right:10px;bottom:56px;margin:0;
    box-shadow:0 4px 16px rgba(0,0,0,.45)}
  /* James 2026-10-05: Vegas Tonight gets a real desktop composition — big
     feature image left, stories stacked right. Not a stretched phone card. */
  #lgVegas .lg-vegas{display:grid;grid-template-columns:1.15fr 1fr;gap:26px;align-items:stretch;
    padding:26px;margin:0}
  #lgVegas .lg-vegas-img{height:100%;min-height:280px;margin:0;border-radius:12px}
  #lgVegas .lg-vegas-body{display:flex;flex-direction:column;justify-content:center}
  #lgVegas .lg-vegas h3{font-size:30px;line-height:1.15}
  #lgVegas .lg-vegas p{font-size:14.5px;line-height:1.55}
  #lgVegas #lgVegasExtra a{font-size:14px!important;margin-top:12px!important;display:block}
}

/* ============ legacy hero suppression (2026-10-05) ============
   The lead pipeline still owns <section class="hero"> and keeps baking it
   (it feeds the Live Grid hero via data/homepage-lead.json), but the Live
   Grid now provides the visible hero. Hide the legacy block so visitors
   don't see two heroes stacked. */
section.hero{display:none!important}

/* ============ Don't Miss — seamless cinematic (James 2026-10-05) ============
   No cards, no pills, no borders, no badges. The artwork IS the module:
   full-bleed photography with the serif headline set directly on the image,
   one whisper-quiet kicker, gradient scrim for legibility.
   Lives in the bottom half of the Right Now panel (#lgNowMiss). */
.lg-now-miss{margin:6px -16px -4px;border-radius:0 0 16px 16px;overflow:hidden}
.lg-now-miss[hidden]{display:none!important}
.lg-now-miss:empty{display:none}
.lg-dm{position:relative;display:block;min-height:300px;overflow:hidden;
  text-decoration:none;color:#fff;background:var(--lg-bg)}
#lgNowMiss .lg-dm + .lg-dm{margin-top:3px;min-height:240px}
.lg-dm-media{position:absolute;inset:0}
.lg-dm-media img{width:100%;height:100%;object-fit:cover;display:block;
  transform:scale(1.015);transition:transform 1.4s cubic-bezier(.22,.8,.28,1)}
.lg-dm:hover .lg-dm-media img,.lg-dm:focus-visible .lg-dm-media img{transform:scale(1.07)}
.lg-dm-scrim{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(4,5,9,.22) 0%,rgba(4,5,9,0) 32%,rgba(4,5,9,.06) 55%,rgba(4,5,9,.86) 100%)}
.lg-dm-copy{position:absolute;left:0;right:0;bottom:0;padding:30px 22px 26px;max-width:880px}
.lg-dm-kicker{display:block;margin:0 0 12px;font-family:var(--lg-sans);
  font-size:11px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;
  color:rgba(255,255,255,.74)}
.lg-dm-kicker::after{content:"";display:block;width:36px;height:2px;background:var(--lg-red);margin-top:9px}
.lg-dm-headline{display:block;margin:0;font-family:var(--lg-serif);font-weight:700;
  font-size:clamp(29px,6vw,44px);line-height:1.05;letter-spacing:-.015em;color:#fff;
  text-wrap:balance;text-shadow:0 2px 24px rgba(0,0,0,.45)}
.lg-dm-dek{display:block;margin:12px 0 0;font-family:var(--lg-sans);
  font-size:14px;line-height:1.55;color:rgba(255,255,255,.8);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  text-shadow:0 1px 12px rgba(0,0,0,.5)}
.lg-dm--breaking .lg-dm-kicker{color:#ffc9c2}
/* DON'T MISS badge — James 2026-10-05: make the card pop with a real stamp,
   not just the whisper-quiet kicker. Bold stamp treatment, impossible to miss. */
.lg-dm-badge{position:absolute;top:16px;left:16px;z-index:3;
  display:inline-block;padding:10px 18px;
  background:var(--lg-red);color:#fff;
  border:2px solid #fff;
  font-family:var(--lg-sans);font-size:14px;font-weight:900;letter-spacing:.18em;text-transform:uppercase;
  box-shadow:0 4px 20px rgba(0,0,0,.5);
  transform:rotate(-3deg)}
.lg-dm--breaking .lg-dm-badge{background:#fff;color:var(--lg-red);border-color:var(--lg-red)}
/* DON'T MISS date badge — automated "premiering soon" items get a TODAY /
   TOMORROW / weekday stamp. Desert palette, pairs with the red badge. */
.lg-dm-date{position:absolute;top:16px;right:16px;z-index:3;
  display:inline-block;padding:10px 16px;
  background:var(--desert-accent,#C2410C);color:#fff;
  border:2px solid #fff;
  font-family:var(--lg-sans);font-size:13px;font-weight:900;letter-spacing:.18em;text-transform:uppercase;
  box-shadow:0 4px 20px rgba(0,0,0,.5);
  transform:rotate(3deg)}
@media(min-width:1024px){
  .lg-now-miss{margin:10px -22px -22px;border-radius:0 0 20px 20px}
  .lg-dm{min-height:380px}
  #lgNowMiss .lg-dm + .lg-dm{min-height:300px}
  .lg-dm-copy{padding:44px 44px 40px}
  .lg-dm-headline{font-size:clamp(40px,3.8vw,58px)}
  .lg-dm-dek{font-size:15.5px;max-width:640px}
  /* James 2026-10-05: the card lives in a 360px sidebar on laptop — a tall
     narrow box that crops landscape photos badly. Bias the crop toward the
     top (faces) instead of dead center. */
  .lg-dm-media img{object-position:center 25%}
  .lg-dm-badge{top:18px;left:18px}
}
@media (prefers-reduced-motion:reduce){
  .lg-dm-media img{transition:none;transform:none}
}
