/* Previously Live Grid — homepage dashboard (2026-10-05)
   Dark broadcast aesthetic. Mobile-first, desktop dashboard at 1024px+. */
:root{
  --lg-bg:var(--desert-card); --lg-surface:var(--desert-card); --lg-surface2:var(--desert-pressed); --lg-line:var(--desert-pressed);
  --lg-mod-bg:var(--desert-pressed);
  --lg-red:var(--brand-red); --lg-text:var(--desert-ink); --lg-muted:var(--desert-ink-dim); --lg-faint:var(--desert-ink-dim);
  --lg-green:var(--color-win); --lg-gold:var(--color-warn); --lg-blue:var(--lg-blue); --lg-pink:var(--desert-accent-soft);
  --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(--desert-ink);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%,var(--desert-pressed) 0%,var(--desert-pressed) 45%,var(--desert-pressed) 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(var(--desert-shadow-rgb), .8),0 1px 3px rgba(var(--desert-shadow-rgb), .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(var(--desert-card-rgb), .94);border-radius:14px;padding:7px;box-shadow:0 4px 18px rgba(var(--desert-shadow-rgb), .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(var(--desert-shadow-rgb), .8),0 1px 3px rgba(var(--desert-shadow-rgb), .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(var(--desert-shadow-rgb), .8),0 1px 3px rgba(var(--desert-shadow-rgb), .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(--desert-ink)}.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:transparent;border:none;box-shadow:0 1px 2px rgba(var(--desert-ink-rgb), .07), 0 6px 20px rgba(var(--desert-ink-rgb), .09);
  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(--desert-ink);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:transparent;
  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:14px;font-weight:600;
  padding:10px 14px 12px;background:transparent;border:none;border-bottom:2px solid transparent;white-space:nowrap;color:var(--lg-muted);cursor:pointer;margin-bottom:-1px;text-decoration:none}
.lg-mood:hover{color:var(--lg-text)}
.lg-mood.active{color:var(--lg-text);border-bottom-color:#c8442a}/* 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:var(--desert-card);border:none;border-radius:14px;box-shadow:0 1px 2px rgba(var(--desert-ink-rgb), .07), 0 6px 20px rgba(var(--desert-ink-rgb), .09);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:none;box-shadow:0 1px 2px rgba(var(--desert-ink-rgb), .07), 0 6px 20px rgba(var(--desert-ink-rgb), .09);
  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(var(--desert-ink-rgb), .14)}.lg-score-card .lg-score-link{display:block;padding:18px 20px 16px;color:inherit;text-decoration:none}.lg-score-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;padding:2px 2px 0}.lg-score-card .lg-lg{font-size:10px;font-weight:800;letter-spacing:.14em;color:var(--lg-faint);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:70%}.lg-score-card .lg-st{font-size:10px;font-weight:800;letter-spacing:.1em;padding:4px 10px;border-radius:4px;
  display:inline-flex;align-items:center;gap:6px}.lg-score-card .lg-st.lg-live{background:var(--desert-accent);color:var(--desert-card);box-shadow:0 2px 8px rgba(var(--desert-accent-rgb), .35)}.lg-score-card .lg-st.lg-final{background:rgba(var(--desert-shadow-rgb), .06);color:var(--lg-faint)}.lg-score-card .lg-st.lg-soon{background:rgba(var(--color-info-rgb), .1);color:var(--lg-blue)}.lg-pulse{width:7px;height:7px;border-radius:50%;background:var(--desert-card);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,var(--brand-red-deep),var(--desert-accent))}.lg-score-card:has(.lg-st.lg-live){box-shadow:0 2px 16px rgba(var(--desert-accent-rgb), .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(var(--desert-accent-rgb), .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:var(--desert-card);border-radius:8px;padding:3px;box-shadow:0 1px 4px rgba(var(--desert-ink-rgb), .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:16px 17px 14px}}/* the ticket */
/* ---------- THE TICKET — sportsbook ticket (2026-10-05 remodel) ---------- */
.lg-ticket{margin:0 16px;background:var(--lg-surface);border:none;border-radius:14px;box-shadow:0 1px 2px rgba(var(--desert-ink-rgb), .07), 0 6px 20px rgba(var(--desert-ink-rgb), .09);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(--desert-ink);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}.lg-t-legs{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:4px;white-space:nowrap}.lg-leg-won{background:rgba(var(--color-win-rgb), .16);color:var(--color-win);border:1px solid rgba(var(--color-win-rgb), .4)}.lg-leg-lost{background:rgba(var(--desert-accent-rgb), .12);color:var(--desert-accent);border:1px solid rgba(var(--desert-accent-rgb), .35)}.lg-leg-live{background:rgba(var(--color-warn-rgb), .14);color:var(--lg-gold);border:1px solid rgba(var(--color-warn-rgb), .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:var(--color-win)}.lg-leg.is-lost .lg-leg-main b{color:var(--desert-accent);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(var(--desert-shadow-rgb), .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(--desert-ink);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(var(--desert-shadow-rgb), .05)}.lg-t-yesterday[hidden]{display:none}.lg-t-yesterday.hit{color:var(--color-win)}.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(--desert-ink);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:var(--desert-card);border:none;border-radius:14px;box-shadow:0 1px 2px rgba(var(--desert-ink-rgb), .07), 0 6px 20px rgba(var(--desert-ink-rgb), .09);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:190px;padding:0;display:block;color:var(--lg-text)}.lg-tv-thumb{height:112px;display:flex;align-items:center;justify-content:center;font-size:30px;position:relative;
  background:linear-gradient(135deg,var(--desert-pressed),var(--desert-pressed))}.lg-tv-thumb .lg-livebadge{position:absolute;top:8px;left:8px;font-size:10px;font-weight:800;background:none;color:var(--lg-red,#C2410C);
  padding:0;border-radius:0;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(--desert-ink)}.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 28%,rgba(var(--desert-shadow-rgb), .93))}.lg-poster .lg-art span{position:relative;z-index:1;color:#FFF8EC;text-shadow:0 1px 6px rgba(0,0,0,.55),0 0 2px rgba(0,0,0,.4)}.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:var(--desert-accent);color:var(--desert-card);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(var(--desert-shadow-rgb), .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(var(--desert-shadow-rgb), .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 var(--desert-card);border-radius:9px;
  box-shadow:0 3px 10px rgba(var(--desert-shadow-rgb), .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:var(--desert-card);border:none;border-radius:12px;box-shadow:0 1px 2px rgba(var(--desert-ink-rgb), .07), 0 6px 20px rgba(var(--desert-ink-rgb), .09);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 var(--desert-ink);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:none;box-shadow:0 1px 2px rgba(var(--desert-ink-rgb), .07), 0 6px 20px rgba(var(--desert-ink-rgb), .09);
  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)}
/* verse of the week (James, 2026-10-07) — uniform cream theme */
.lg-verse{margin:0 16px;border-radius:14px;overflow:hidden;border:none;box-shadow:0 1px 2px rgba(var(--desert-ink-rgb), .07), 0 6px 20px rgba(var(--desert-ink-rgb), .09);
  background:transparent;padding:18px;color:var(--desert-ink)}
.lg-verse-img{width:100%;height:170px;object-fit:cover;border-radius:10px;margin-bottom:14px;display:block}
.lg-verse .lg-k{font-size:10.5px;font-weight:800;letter-spacing:.18em;color:var(--desert-accent);margin-bottom:8px}
.lg-verse h3{font-family:var(--lg-serif);font-size:21px;font-weight:700;margin:0 0 6px;color:var(--desert-ink)}
.lg-verse-bars{font-family:Georgia,"Times New Roman",serif;font-size:15px;line-height:1.6;color:var(--desert-ink);margin:0 0 12px;font-style:italic}
.lg-verse a{font-size:13px;font-weight:800;color:var(--desert-accent)}
/* 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(var(--desert-card-rgb), .96);border:1px solid var(--lg-line);border-radius:14px;padding:10px 13px;
  box-shadow:0 12px 40px rgba(var(--desert-shadow-rgb), .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(--desert-ink)}
  .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:transparent;border:none;border-radius:0;padding:22px;position:relative;overflow:hidden;box-shadow:0 8px 24px -12px rgba(var(--desert-card-rgb), .28),0 2px 6px -2px rgba(var(--desert-card-rgb), .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(var(--desert-card-rgb), .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}.lg-hero-grid[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:var(--desert-card)}.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:var(--desert-card);
    --lg-mod-bg:var(--desert-ink-faint);
    --lg-surface:transparent;
    --lg-surface2:rgba(var(--desert-ink-rgb), .06);
    --lg-line:rgba(var(--desert-ink-rgb), .14);
    --lg-red:var(--brand-red-deep);
    --lg-text:var(--desert-ink);
    --lg-muted:rgba(var(--desert-ink-rgb), .72);
    --lg-faint:rgba(var(--desert-ink-rgb), .68);
    --lg-green:var(--color-win);
    --lg-gold:var(--color-warn);
    --lg-blue:var(--color-info);
    --lg-pink:var(--lg-pink);
  }
  /* full-bleed strips: moods + mini player go cream, ticker stays a black chyron bar */
  .lg-moods{background:rgba(var(--desert-card-rgb), .94)}
  .lg-mini-player{background:rgba(var(--desert-card-rgb), .96)}
  .lg-ticker-track{color:rgba(var(--desert-card-rgb), .72)}
  .lg-ticker-track b{color:var(--desert-ink)}
  .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(--desert-ink)}
  .lg-hero .lg-kicker{color:var(--brand-red)}
  .lg-hero .lg-sub{color:rgba(var(--desert-card-rgb), .80)}
  .lg-hero .lg-vs{color:rgba(var(--desert-card-rgb), .55)}
  .lg-hero .lg-team .lg-abbr{color:var(--desert-ink)}
  .lg-hero .lg-team .lg-odds{color:rgba(var(--desert-card-rgb), .72)}
  .lg-hero .lg-team .lg-odds b{color:var(--lg-gold)}
  .lg-hero .lg-match-meta{color:rgba(var(--desert-card-rgb), .72)}
  .lg-hero .lg-match-meta b{color:var(--desert-ink)}
  .lg-hero .lg-btn{background:rgba(var(--desert-card-rgb), .10);border-color:rgba(var(--desert-card-rgb), .25);color:var(--desert-ink)}
  .lg-hero .lg-btn.lg-primary{background:var(--brand-red);border-color:var(--brand-red);color:var(--desert-ink)}
}/* ============ 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(var(--desert-shadow-rgb), .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}
  /* verse of the week desktop — feature image left, bars right */
  #lgVerse .lg-verse{display:grid;grid-template-columns:1.15fr 1fr;gap:26px;align-items:stretch;
    padding:26px;margin:0}
  #lgVerse .lg-verse-img{height:100%;min-height:280px;margin:0;border-radius:12px}
  #lgVerse .lg-verse-body{display:flex;flex-direction:column;justify-content:center}
  #lgVerse .lg-verse h3{font-size:30px;line-height:1.15}
  #lgVerse .lg-verse-bars{font-size:17px;line-height:1.6}
}/* ============ 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:var(--desert-card);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(var(--desert-card-rgb), .22) 0%,rgba(var(--desert-card-rgb), 0) 32%,rgba(var(--desert-card-rgb), .06) 55%,rgba(var(--desert-card-rgb), .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(var(--desert-card-rgb), .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:var(--desert-card);
  text-wrap:balance;text-shadow:0 2px 24px rgba(var(--desert-shadow-rgb), .45)}.lg-dm-dek{display:block;margin:12px 0 0;font-family:var(--lg-sans);
  font-size:14px;line-height:1.55;color:rgba(var(--desert-card-rgb), .8);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  text-shadow:0 1px 12px rgba(var(--desert-shadow-rgb), .5)}.lg-dm--breaking .lg-dm-kicker{color:var(--desert-accent-soft)}/* 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:var(--desert-card);
  border:2px solid var(--desert-card);
  font-family:var(--lg-sans);font-size:14px;font-weight:900;letter-spacing:.18em;text-transform:uppercase;
  box-shadow:0 4px 20px rgba(var(--desert-shadow-rgb), .5);
  transform:rotate(-3deg)}.lg-dm--breaking .lg-dm-badge{background:var(--desert-card);color:#E10600;border-color:#E10600}/* 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,var(--desert-accent));color:var(--desert-card);
  border:2px solid var(--desert-card);
  font-family:var(--lg-sans);font-size:13px;font-weight:900;letter-spacing:.18em;text-transform:uppercase;
  box-shadow:0 4px 20px rgba(var(--desert-shadow-rgb), .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}
}

/* ==========================================================================
   TODAY'S BOARD — responsive grid (James 2026-10-06).
   Was a single-column row list;now compact cards: 3 cols on mobile,
   4 cols on small tablets, 6 cols on laptop+. Same premium language —
   rounded cards, LIVE pills, real crests — just a layout change.
   Appended last so these rules win over the row styles above at every
   breakpoint (higher specificity + later source order).
   ========================================================================== */
.lg-board-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:10px 0 12px}@media(min-width:700px){.lg-board-grid{grid-template-columns:repeat(4,1fr)}}@media(min-width:1024px){.lg-board-grid{grid-template-columns:repeat(6,1fr);gap:12px}}/* card: vertical stack, centered */
.lg-board-grid .lg-board-row{flex-direction:column;align-items:center;justify-content:flex-start;
  text-align:center;gap:8px;padding:12px 6px 10px;min-height:0;min-width:0;
  border:1px solid var(--lg-line);border-radius:14px;background:var(--lg-surface)}.lg-board-grid .lg-board-row::after{display:none}/* no chevron on cards */
.lg-board-grid .lg-board-row .lg-nb{font-size:8.5px;padding:4px 8px;flex:none}.lg-board-grid .lg-board-logos{display:flex;align-items:center;gap:8px;flex:none}.lg-board-grid .lg-board-logos .lg-team-logo{width:32px;height:32px;margin:0}.lg-board-grid .lg-board-logos .lg-team-logo + .lg-team-logo{margin-left:0;box-shadow:none}.lg-board-grid .lg-nt{flex:none;min-width:0;width:100%}.lg-board-grid .lg-board-main{font-size:12.5px;line-height:1.35}.lg-board-grid .lg-board-main b{font-size:12.5px;white-space:nowrap}.lg-board-grid .lg-board-main i{margin:0 5px;font-size:10.5px}.lg-board-grid .lg-nt > span{display:block;font-size:10.5px;color:var(--lg-muted);margin-top:3px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.lg-board-grid .lg-board-row:hover{border-color:var(--lg-red)}.lg-board-grid .lg-board-row:hover .lg-board-main,
.lg-board-grid .lg-board-row:hover .lg-board-main b{color:var(--lg-red)}.lg-board-grid .lg-board-row:focus-visible{outline:2px solid var(--lg-red);outline-offset:2px}/* laptop: the board breaks out of the 360px side column and spans full width
   under the hero, so 6 cards fit comfortably. #lgHeroSide carries only the
   board (other mounts target #lgNowMiss, which doesn't exist), so this is safe. */
@media(min-width:1024px){
  #lgHeroSide{grid-column:1 / -1}
}

/* ============ BREAKING BANNER (James 2026-10-07, item 480) ============
   Full-bleed banner: story picture always fills the band; white text over a
   dark scrim so copy is readable on any photo (text-visible rule, item 513).
   Red BREAKING kicker; fallback filler uses a neutral kicker, never faked. */
#pv-breaking-zone{display:none;margin:0 !important;padding:0 !important;max-width:none !important}
#pv-breaking-zone .pv-breaking-banner{
  display:block;position:relative;overflow:hidden;border-radius:0;border:0;
  min-height:180px;color:rgb(var(--desert-card-rgb));text-decoration:none;
}
#pv-breaking-zone .pv-breaking-bg{
  position:absolute;inset:0;background-size:cover;background-position:center;
}
#pv-breaking-zone .pv-breaking-scrim{
  position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(var(--desert-bg-rgb),.82) 0%,rgba(var(--desert-bg-rgb),.55) 45%,rgba(var(--desert-bg-rgb),.25) 100%);
}
#pv-breaking-zone .pv-breaking-copy{
  position:relative;z-index:1;display:flex;flex-direction:column;gap:8px;
  padding:26px 30px;max-width:760px;
}
#pv-breaking-zone .pv-breaking-kicker{
  align-self:flex-start;font-size:12px;font-weight:800;letter-spacing:.18em;
  padding:6px 12px;border-radius:4px;background:rgba(var(--desert-card-rgb),.16);
  border:1px solid rgba(var(--desert-card-rgb),.35);
}
#pv-breaking-zone .pv-breaking-kicker.is-breaking{
  background:#E10600;border-color:transparent;
}
#pv-breaking-zone .pv-breaking-head{
  font-size:clamp(20px,3.2vw,32px);font-weight:800;line-height:1.2;
  text-shadow:0 2px 12px rgba(var(--desert-bg-rgb),.55);
}
#pv-breaking-zone .pv-breaking-dek{
  font-size:14px;line-height:1.5;color:rgba(var(--desert-card-rgb),.85);
  text-shadow:0 1px 8px rgba(var(--desert-bg-rgb),.5);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
@media(max-width:640px){
  #pv-breaking-zone .pv-breaking-copy{padding:20px}
  #pv-breaking-zone .pv-breaking-banner{min-height:220px}
}

/* ==========================================================================
   UNIFIED GOLDEN DESIGN — homepage (James 2026-10-08, approved mockup)
   Scoped to body.pv-home (class set on index.html) so shared stylesheets and
   other pages are untouched. The body.pv-home prefix outranks the unscoped
   rules in later-loaded shared files (nav/footer/newsroom/search).
   Rules: one cream background everywhere; cards transparent with a thin
   1px rgba(42,28,17,.12) border and ~14px radius; all text dark ink;
   dark gradient scrims wherever text sits on a photo; generous padding.
   Token-safe: no raw colors (design-token-gate).
   ========================================================================== */
body.pv-home{background:var(--desert-bg);color:var(--desert-ink)}
/* --lg-pink remap was a light wash (illegible) / cyclic in light mode;
   pin it to the legible #A83A6E token for vegas kickers + links */
body.pv-home{--lg-pink:var(--color-loss)}

/* --- ticker: cream chyron, dark ink text (bg var --surface-black is
   undefined, so the bar is already transparent; the track text was white) */
body.pv-home .lg-ticker{background:transparent}
body.pv-home .lg-ticker-track{color:rgba(var(--desert-ink-rgb),.62)}
body.pv-home .lg-ticker-track b{color:var(--desert-ink)}

/* --- hero: flat cream when JS sets no photo; photographic + dark overlay
   when it does (inline background-image). White-text pins only apply then. */
body.pv-home .lg-hero{background:var(--desert-bg)}
body.pv-home .lg-hero::after{display:none}
body.pv-home .lg-hero:not([style*="background-image"]) .lg-sub,
body.pv-home .lg-hero:not([style*="background-image"]) .lg-vs,
body.pv-home .lg-hero:not([style*="background-image"]) .lg-odds,
body.pv-home .lg-hero:not([style*="background-image"]) .lg-team-sub,
body.pv-home .lg-hero:not([style*="background-image"]) .lg-match-meta,
body.pv-home .lg-hero:not([style*="background-image"]) .lg-hero-oddsline{color:rgba(var(--desert-ink-rgb),.62)}
body.pv-home .lg-hero:not([style*="background-image"]) h1,
body.pv-home .lg-hero:not([style*="background-image"]) .lg-abbr,
body.pv-home .lg-hero:not([style*="background-image"]) .lg-score,
body.pv-home .lg-hero:not([style*="background-image"]) .lg-match-meta b{color:var(--desert-ink)}
body.pv-home .lg-hero:not([style*="background-image"]) .lg-matchup .lg-abbr,
body.pv-home .lg-hero:not([style*="background-image"]) .lg-matchup .lg-team-sub,
body.pv-home .lg-hero:not([style*="background-image"]) .lg-matchup .lg-vs,
body.pv-home .lg-hero:not([style*="background-image"]) .lg-team .lg-score,
body.pv-home .lg-hero:not([style*="background-image"]) .lg-hero-oddsline{text-shadow:none}

/* --- mood strip: pure cream --- */
body.pv-home .lg-moods{background:transparent}

/* --- transparent cards: thin border, no shadow --- */
body.pv-home .lg-card,
body.pv-home .lg-score-card,
body.pv-home .lg-game-card,
body.pv-home .lg-ep-card,
body.pv-home .lg-rewind-card,
body.pv-home .lg-track,
body.pv-home .lg-board-grid .lg-board-row{
  background:transparent;
  border:1px solid rgba(var(--desert-ink-rgb),.12);
  border-radius:14px;
  box-shadow:none;
}
/* --- generous padding: nothing touches card edges --- */
body.pv-home .lg-game-card{padding:18px}
body.pv-home .lg-track{padding:18px}
body.pv-home .lg-score-card .lg-score-link{padding:18px}
body.pv-home .lg-poster .lg-p-meta{padding:14px 18px 18px}
body.pv-home .lg-tv-card .lg-ch{padding:14px 18px 18px}
body.pv-home .lg-rewind-info{padding:14px 18px 18px}
body.pv-home .lg-ep-card .lg-ep-info{padding:14px 18px 18px 0}
body.pv-home #lgListen .lg-ep-info{padding:14px 18px 18px}
body.pv-home .lg-tv-thumb{background:var(--desert-pressed)}
/* logo chips: neutral wash, never a white patch */
body.pv-home .lg-team .lg-team-logo,
body.pv-home .lg-score-card .lg-team-logo{background:rgba(var(--desert-ink-rgb),.05);box-shadow:none}

/* --- the ticket: mockup treatment — transparent, 2px ink border,
   header becomes an ink hairline row instead of a solid red banner --- */
body.pv-home .lg-ticket{
  background:transparent;
  border:2px solid var(--desert-ink);
  border-radius:14px;
  box-shadow:none;
}
body.pv-home .lg-ticket .lg-t-head{
  background:transparent;
  color:var(--desert-ink);
  border-bottom:1px solid rgba(var(--desert-ink-rgb),.12);
}
body.pv-home #lgParlay .lg-ticket{margin:0 16px;border:2px solid var(--desert-ink);border-radius:14px}
@media(min-width:1024px){
  body.pv-home #lgParlay .lg-ticket{margin:0}
}

/* --- rewind: keep the dashed identity, drop the confetti gradient --- */
body.pv-home .lg-rewind{
  background:transparent;
  border:1.5px dashed rgba(var(--color-warn-rgb),.55);
  box-shadow:none;
}

/* --- text over images: dark gradient scrim per the approved mockup --- */
body.pv-home .lg-dm-scrim{
  background:linear-gradient(180deg,rgba(var(--desert-ink-rgb),0) 30%,rgba(var(--desert-ink-rgb),.72) 100%);
}
body.pv-home #pv-breaking-zone .pv-breaking-scrim{
  background:linear-gradient(180deg,rgba(var(--desert-ink-rgb),0) 30%,rgba(var(--desert-ink-rgb),.72) 100%);
}

/* --- right-now side panel + desktop modules: no shadows, thin border --- */
body.pv-home .lg-hero-side{box-shadow:none;border:1px solid rgba(var(--desert-ink-rgb),.12)}
body.pv-home .lg-mod{box-shadow:none}

/* --- floating mini player: cream glass (token-blessed for sticky bars),
   never a white sheet --- */
body.pv-home .lg-mini-player{background:rgba(var(--desert-bg-rgb),.96);box-shadow:none}

/* --- footer: cream, keeps its top hairline --- */
body.pv-home [data-pv-footer].pvf-footer{background:transparent}

/* --- developing cards (newsroom.css): transparent, mockup radius --- */
body.pv-home .dev-card{background:transparent;border-radius:14px}

/* --- search: transparent pill + cream results sheet --- */
body.pv-home .nr-searchwrap__field{background:transparent;border:1px solid rgba(var(--desert-ink-rgb),.12)}
body.pv-home .nr-search-results{background:var(--desert-bg)}


/* ---- Today's Finals: compact double rail (James 2026-10-11) ---- */
.lg-finals-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 16px}
.lg-final-card{background:#fff;border:1px solid #e8e0cd;border-radius:10px;padding:10px;min-width:0}
.lg-final-league{font-size:9px;font-weight:700;color:#c8442a;letter-spacing:1px;text-transform:uppercase;margin-bottom:4px;font-family:var(--lg-sans)}
.lg-final-row{display:flex;justify-content:space-between;align-items:center;padding:2px 0;font-size:13px}
.lg-final-row.winner{font-weight:600}
.lg-final-row.winner .lg-final-team::after{content:" ▸";color:#c8442a;font-size:10px}
.lg-final-score{font-family:var(--lg-sans);font-weight:800;font-size:15px}
.lg-final-row:not(.winner) .lg-final-score{color:#a99e86}
.lg-final-row:not(.winner){color:#8a7d64}
.lg-final-status{font-size:10px;color:#8a7d64;margin-top:6px;text-transform:uppercase;letter-spacing:.5px;font-family:var(--lg-sans)}
.lg-viewall{display:block;text-align:center;font-size:13px;font-weight:600;color:#c8442a;margin:10px 0 4px;text-decoration:none;font-family:var(--lg-sans)}
.lg-mod-date{font-size:11px;color:var(--lg-muted);text-transform:uppercase;letter-spacing:1px;font-family:var(--lg-sans)}

/* James 2026-10-11: homepage module stacking — no cramped columns on mobile */
@media(max-width:767.98px){
  .lg-dash > .lg-span3,
  .lg-dash > .lg-span4,
  .lg-dash > .lg-span6{grid-column:span 12}
}
/* James 2026-10-12: Watch rail upgrades — bigger cards, muted autoplay,
   sponsored slots, no pills. */
.lg-tv-card{width:190px}
.lg-tv-thumb{height:112px}
.lg-tv-logo{max-width:110px;max-height:64px}
/* Live badge: plain text, no pill */
.lg-tv-thumb .lg-livebadge{background:none;color:var(--lg-red,#C2410C);padding:0;border-radius:0;font-size:10px}
/* muted autoplay on the first tile */
.lg-tv-autoplay{overflow:hidden}
.lg-tv-autoplay .lg-tv-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2}
.lg-tv-autoplay .lg-tv-poster{position:relative;z-index:1}
.lg-unmute{position:absolute;bottom:8px;right:8px;z-index:4;background:rgba(20,12,6,.72);color:#fff;
  border:none;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  padding:6px 10px;cursor:pointer}
.lg-unmute[hidden]{display:none}
/* sponsored slot */
.lg-tv-sponsor{cursor:default}
.lg-sponsor-art{background:var(--desert-card,#FAF6EE);flex-direction:column;gap:2px}
.lg-sponsor-kicker{font-size:9px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--lg-muted)}
.lg-sponsor-word{font-family:var(--lg-serif);font-size:22px;font-weight:700;color:var(--desert-ink)}
.lg-sponsor-dot{color:var(--lg-red,#C2410C)}
.lg-sponsor-tag{font-size:10.5px;color:var(--lg-muted)}

/* gamecast tap-through (2026-10-15): linked finals cards are anchors */
a.lg-final-card{display:block;color:inherit;text-decoration:none}
