/* Previously Sports Hub v2 — research-driven layout, Bible skin.
   Patterns: ESPN persistent score strip; editorial asymmetric hero;
   3-col keyline grid (LATEST / THIS WEEK / STANDINGS); video rail;
   stats leaders; NBA.com-style standings toggles. */
:root{
  color-scheme:light;
  --hv2-red:#c8102e; --hv2-ink:#1a1512; --hv2-cream:#FAF6EE;
  --hv2-card:#fff; --hv2-line:#e7ddc9; --hv2-muted:#7a6f5f;
}
.hv2-wrap{max-width:1200px;margin:0 auto;padding:0 16px 48px;}
/* ---------- 1. SCOREBOARD STRIP (ESPN pattern) ---------- */
.hv2-strip{background:#f1e8d5;border:1px solid var(--hv2-line);border-radius:14px;margin:14px 0 22px;overflow:hidden;}
.hv2-strip__head{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--hv2-line);}
.hv2-strip__head .kicker{color:var(--hv2-red);font:700 11px/1 system-ui;letter-spacing:.18em;text-transform:uppercase;margin:0;}
.hv2-strip__week{color:var(--hv2-muted);font:600 11px/1 system-ui;margin-left:auto;letter-spacing:.08em;}
.hv2-strip__rail{display:flex;gap:10px;overflow-x:auto;padding:12px 16px;scrollbar-width:thin;}
.hv2-game{flex:0 0 auto;min-width:172px;background:#fffdf8;border:1px solid var(--hv2-line);border-radius:10px;padding:10px 12px;color:var(--hv2-ink);text-decoration:none;}
.hv2-game.is-live{border-color:var(--hv2-red);box-shadow:0 0 0 1px var(--hv2-red);}
.hv2-game__status{display:flex;align-items:center;gap:6px;font:700 10px/1.4 system-ui;letter-spacing:.12em;text-transform:uppercase;color:var(--hv2-muted);margin-bottom:8px;}
.hv2-game.is-live .hv2-game__status{color:#ff5b5b;}
.livedot{width:7px;height:7px;border-radius:50%;background:#ff3b3b;animation:blink 1.2s infinite;}
@keyframes blink{50%{opacity:.25}}
.hv2-game__row{display:flex;align-items:center;justify-content:space-between;font:600 13px/1.7 system-ui;}
.hv2-game__row .t{color:var(--hv2-ink);}
.hv2-game__row .s{font-variant-numeric:tabular-nums;color:var(--hv2-ink);}
.hv2-game__row.winner .t{color:var(--hv2-ink);font-weight:800;}
/* ---------- 2. EDITORIAL HERO (broadsheet pattern) ---------- */
.hv2-hero{display:grid;grid-template-columns:7fr 5fr;gap:22px;margin:0 0 6px;}
.hv2-lead{position:relative;border-radius:16px;overflow:hidden;background:#e9dfc9;min-height:380px;display:flex;align-items:flex-end;text-decoration:none;}
.hv2-lead img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;}
.hv2-lead__veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,8,6,0) 30%,rgba(10,8,6,.82) 100%);}
.hv2-lead__body{position:relative;padding:26px;color:#fff;}
.hv2-kicker{display:inline-block;font:700 11px/1 system-ui;letter-spacing:.22em;text-transform:uppercase;color:#ffd9a8;background:rgba(200,16,46,.85);padding:7px 12px;border-radius:999px;margin:0 0 12px;}
.hv2-lead h2{font-family:Georgia,"Times New Roman",serif;font-size:clamp(26px,3.4vw,40px);line-height:1.08;margin:0 0 10px;color:#fff;font-weight:800;}
.hv2-lead p{margin:0;color:#e8dcc4;font:400 15px/1.5 system-ui;max-width:56ch;}
.hv2-hero__side{display:flex;flex-direction:column;gap:14px;}
.hv2-side-story{display:grid;grid-template-columns:132px 1fr;gap:14px;background:var(--hv2-card);border:1px solid var(--hv2-line);border-radius:12px;overflow:hidden;text-decoration:none;flex:1;}
.hv2-side-story img{width:132px;height:100%;min-height:110px;object-fit:cover;object-position:center;}
.hv2-side-story .b{padding:12px 14px 12px 0;}
.hv2-side-story .k{font:700 10px/1 system-ui;letter-spacing:.18em;text-transform:uppercase;color:var(--hv2-red);margin:0 0 6px;}
.hv2-side-story h3{font-family:Georgia,serif;font-size:17px;line-height:1.25;margin:0;color:var(--hv2-ink);}
/* red divider — Bible signature */
.hv2-rule{border:0;border-top:3px solid var(--hv2-red);margin:26px 0;}
/* ---------- 3. MAIN GRID ---------- */
.hv2-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:28px;align-items:start;}
.hv2-sec{margin:0 0 34px;}
.hv2-sec__head{display:flex;align-items:baseline;gap:12px;border-bottom:2px solid var(--hv2-ink);padding-bottom:8px;margin-bottom:6px;}
.hv2-sec__head .kicker{font:700 11px/1 system-ui;letter-spacing:.2em;text-transform:uppercase;color:var(--hv2-red);margin:0;}
.hv2-sec__head h2{font-family:Georgia,serif;font-size:24px;margin:0;color:var(--hv2-ink);}
.hv2-sec__head .more{margin-left:auto;font:600 12px/1 system-ui;color:var(--hv2-muted);text-decoration:none;}
/* LATEST — numbered stories */
.hv2-latest{list-style:none;margin:0;padding:0;}
.hv2-latest li{display:grid;grid-template-columns:44px 1fr;gap:4px 12px;padding:14px 0;border-bottom:1px solid var(--hv2-line);}
.hv2-latest .n{font-family:Georgia,serif;font-size:30px;font-weight:800;color:#d8c9ab;line-height:1;}
.hv2-latest a{text-decoration:none;color:inherit;display:grid;grid-template-columns:1fr 96px;gap:12px;align-items:center;}
.hv2-latest h3{font-family:Georgia,serif;font-size:17px;line-height:1.3;margin:0 0 4px;color:var(--hv2-ink);}
.hv2-latest .meta{font:500 11px/1.5 system-ui;color:var(--hv2-muted);letter-spacing:.06em;text-transform:uppercase;}
.hv2-latest img{width:96px;height:64px;object-fit:cover;object-position:center;border-radius:8px;}
/* video rail */
.hv2-rail{display:flex;gap:14px;overflow-x:auto;padding:6px 2px 12px;scrollbar-width:thin;}
.hv2-clip{flex:0 0 240px;background:var(--hv2-card);border:1px solid var(--hv2-line);border-radius:12px;overflow:hidden;text-decoration:none;}
.hv2-clip__thumb{position:relative;aspect-ratio:16/9;background:#e9dfc9;}
.hv2-clip__thumb img{width:100%;height:100%;object-fit:cover;}
.hv2-clip__dur{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.82);color:#fff;font:700 11px/1 system-ui;padding:4px 7px;border-radius:6px;}
.hv2-clip__play{position:absolute;left:8px;bottom:8px;width:30px;height:30px;border-radius:50%;background:rgba(200,16,46,.92);display:grid;place-items:center;color:#fff;font-size:12px;}
.hv2-clip h4{font:600 13.5px/1.4 system-ui;margin:0;padding:10px 12px;color:var(--hv2-ink);}
/* stats leaders */
.hv2-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0;}
.hv2-tab{border:1px solid var(--hv2-line);background:var(--hv2-card);border-radius:999px;padding:8px 14px;font:600 12px/1 system-ui;color:var(--hv2-ink);cursor:pointer;}
.hv2-tab[aria-selected="true"]{background:var(--hv2-ink);color:#fff;border-color:var(--hv2-ink);}
.hv2-leaders{list-style:none;margin:0;padding:0;}
.hv2-leaders li{display:grid;grid-template-columns:34px 44px 1fr auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--hv2-line);}
.hv2-leaders .r{font:800 15px/1 Georgia;color:#c9b891;}
.hv2-leaders img{width:44px;height:44px;border-radius:50%;object-fit:cover;background:#e9e0cd;}
.hv2-leaders .nm{font:700 14px/1.3 system-ui;color:var(--hv2-ink);}
.hv2-leaders .tm{font:500 11px/1.4 system-ui;color:var(--hv2-muted);}
.hv2-leaders .st{font:800 16px/1 system-ui;color:var(--hv2-ink);font-variant-numeric:tabular-nums;text-align:right;}
.hv2-leaders .st small{display:block;font:600 10px/1.4 system-ui;color:var(--hv2-muted);letter-spacing:.08em;}
/* sidebar */
.hv2-card{background:var(--hv2-card);border:1px solid var(--hv2-line);border-radius:14px;padding:18px;margin-bottom:22px;}
.hv2-card h3{font-family:Georgia,serif;font-size:19px;margin:0 0 4px;color:var(--hv2-ink);}
.hv2-card .sub{font:500 11px/1.5 system-ui;color:var(--hv2-muted);letter-spacing:.1em;text-transform:uppercase;margin:0 0 12px;}
.hv2-standings table{width:100%;border-collapse:collapse;font:500 12.5px/1.5 system-ui;}
.hv2-standings th{font:700 10px/1 system-ui;letter-spacing:.1em;color:var(--hv2-muted);text-align:right;padding:6px 4px;border-bottom:1px solid var(--hv2-line);}
.hv2-standings th:first-child,.hv2-standings td:first-child{text-align:left;}
.hv2-standings td{padding:7px 4px;border-bottom:1px solid #f0e8d6;text-align:right;font-variant-numeric:tabular-nums;color:var(--hv2-ink);}
.hv2-standings td:first-child{font-weight:700;}
.hv2-divname{font:700 11px/1 system-ui;letter-spacing:.14em;text-transform:uppercase;color:var(--hv2-red);margin:14px 0 4px;}
.hv2-divname:first-of-type{margin-top:2px;}
.hv2-upcoming{list-style:none;margin:0;padding:0;}
.hv2-upcoming li{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid #f0e8d6;font:600 13px/1.4 system-ui;color:var(--hv2-ink);}
.hv2-upcoming .when{font:600 11px/1.4 system-ui;color:var(--hv2-muted);}
/* teams */
.hv2-teams{margin-top:6px;}
/* ---------- VOIDFIX 2026-10-14: rail composition + honest reflow ----------
   Spec anti-void laws: no empty rail, columns use full width, layout
   reflows when a rail is thin. generate.py now composes the rail from
   standings/leaders/upcoming/results/bridges and collapses the grid to
   .hv2-grid--solo when the rail has no data module. min-width:0 stops
   wide rail/main content (leaders rows, standings tables, clip rails)
   from blowing the grid columns out past the viewport on mobile. */
.hv2-grid--solo{grid-template-columns:minmax(0,1fr);}
.hv2-main,.hv2-side{min-width:0;}
.hv2-side .hv2-sec{background:var(--hv2-card);border:1px solid var(--hv2-line);border-radius:14px;padding:18px;margin:0 0 22px;}
.hv2-standings{overflow-x:auto;max-width:100%;}
.hv2-upcoming li a{color:inherit;text-decoration:none;}
.hv2-upcoming li a:hover{color:var(--hv2-red);}
@media(max-width:900px){
  .hv2-hero{grid-template-columns:1fr;}
  .hv2-lead{min-height:300px;}
  .hv2-grid{grid-template-columns:1fr;}
  .hv2-side-story{grid-template-columns:110px 1fr;}
  .hv2-side-story img{width:110px;}
}

/* NAV CLEANUP 2026-10-12 (James): sport hubs use the hub masthead + league
   nav only — no unified nav bar, no hamburger, no side drawer. The bottom
   nav Menu button would open a drawer that no longer loads on these pages,
   so hide it here (hub-scoped). The 5 bottom tabs (Home/Sports/Podcasts/
   Games/Free) remain as the complete mobile navigation. */
.pv-bottom-nav__menu{display:none!important}


/* ==== CONTRAST FIX 2026-10-14 (white-text sweep) ====
   Re-applied as an override layer: the VOIDFIX regen overwrote the in-place
   edits. --hv2-muted #7a6f5f measured 3.4-4.4:1 on cream/sand -> #6B5F4C
   (5.1:1). The lead headline/dek sit on the bright part of the hero photo;
   the veil gradient alone left white text at ~2:1 there, so the body gets
   its own scrim (white headline ~8:1, cream dek ~5.8:1 over it).
   If the hub generator is updated, fold these two declarations into it. */
:root{--hv2-muted:#6B5F4C}
.hv2-lead__body{background:linear-gradient(180deg,rgba(10,8,6,.66),rgba(10,8,6,.88))}

/* Scoreboard strip cards are whole-card gamecast links (2026-10-15):
   the card must read as tappable -- hover lift via border + team-name
   color, and a clear keyboard focus ring. */
a.hv2-game{cursor:pointer}
a.hv2-game:hover{border-color:var(--hv2-red)}
a.hv2-game:hover .hv2-game__row .t{color:var(--hv2-red)}
a.hv2-game:focus-visible{outline:2px solid var(--hv2-red);outline-offset:2px}
