/* ==========================================================================
   Previously Sports — NBA hub identity · "NBA REWIND" · v20261006a
   --------------------------------------------------------------------------
   Per-league identity layer for /sports/nba/. Loads AFTER hubs.css and
   hubs-elevated.css. Desert Golden Hour (cream/paper/espresso) + NBA red accents, condensed
   Oswald display type, scoreboard strip, conference tables. Desktop-first; collapses cleanly to phone.

   TRADEMARK-SAFE "REWIND" SUB-BRAND (James, 2026-10-02 — PERMANENT): league
   hubs never brand as the league itself. Our brand follows the league name:
   "NBA REWIND", "MLB REWIND", etc., each with our own custom rewind logo
   mark (our drawing — never the league's logo or anything echoing it;the
   old red/white/blue tri-bar is gone for exactly this reason, replaced by
   a single solid red rule). Official TEAM logos stay per his 2026-10-01
   decision — this rule covers OUR hub/league-level branding only.

   Pattern for future leagues: hub-identity-{mlb,nhl,...}.css — same hooks,
   different palette/type/motifs. Shared template stays untouched.
   ========================================================================== */

/* ==========================================================================
   DESERT GOLDEN HOUR (James, 2026-10-06 — PERMANENT): converted
   UNCONDITIONALLY — no prefers-color-scheme anywhere in this file. Cream
   page #FAF6EE, white cards, espresso ink #2A1C11, burnt-orange depth
   #92400E. League accents kept, darkened where needed to clear AA on
   paper. Photo scrims/veils stay dark (warmed to espresso) because the
   hero is a dark photo — media wells stay dark, like YouTube in light
   mode. On-photo text (hero kicker/lede/updated, rewind wordmark) keeps
   the original bright accent values, flagged with an on-photo comment.
   ========================================================================== */

/* ---- self-hosted condensed display face (no third-party origins) ---- */
@font-face{
  font-family: 'Oswald';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('./fonts/oswald-var-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
    U+2193, U+2215, U+FEFF, U+FFFD;
}.nba-hub{
  --nba-deep: var(--desert-bg);
  --nba-navy: var(--desert-card);
  --nba-navy2: var(--desert-pressed);
  --nba-red: var(--desert-accent);
  --nba-red-bright: var(--desert-accent);
  --nba-blue: var(--color-info);
  --nba-sky: var(--color-info);
  --nba-ice: var(--desert-ink);
  --nba-dim: rgba(var(--desert-ink-rgb), .68);
  --nba-faint: rgba(var(--desert-ink-rgb), .52);
  --nba-line: rgba(var(--desert-ink-rgb), .14);
  --nba-card: var(--desert-card);
  --nba-display: 'Oswald', 'Arial Narrow', 'Helvetica Neue', sans-serif;
  max-width: 1400px;
  background:
    radial-gradient(1100px 380px at 12% -4%, rgba(var(--desert-accent-rgb), .10), transparent 62%),
    radial-gradient(900px 340px at 88% 2%, rgba(var(--desert-accent-rgb), .06), transparent 60%),
    var(--nba-deep);
  border-radius: 24px;
  padding-left: 28px; padding-right: 28px;
  border: none;
}/* ============ HERO — bright game-day photo, giant Association type ============ */
.nba-hub .hub-hero.hero-art{
  min-height: 440px;
  border-radius: 18px;
  border: none;
  background-position: center 30%;
}.nba-hub .hero-veil{
  background: linear-gradient(100deg,
    rgba(var(--desert-ink-rgb), .88) 0%, rgba(var(--desert-ink-rgb), .62) 34%,
    rgba(var(--desert-ink-rgb), .12) 62%, rgba(var(--desert-ink-rgb), .30) 100%),
    linear-gradient(0deg, rgba(var(--desert-ink-rgb), .92) 0%, transparent 42%);
}.nba-hub .hero-inner{ padding: 64px 40px 30px; max-width: 760px; }.nba-hub .hub-hero .kicker{
  font-family: var(--nba-display); font-weight: 600; font-size: 15px;
  letter-spacing: 6px; color: var(--color-info); margin-bottom: 12px; /* on-photo: original bright accent for the dark hero photo */
}/* ---- REWIND lockup: our own brand. Custom rewind glyph (drawn here,
   never a league mark) + "NBA REWIND" wordmark. ---- */
.nba-hub .hub-hero h1.rewind-lockup{
  display: flex; align-items: center; gap: .18em;
  font-family: var(--nba-display); font-weight: 700;
  font-size: clamp(44px, 8.5vw, 104px); line-height: 1;
  letter-spacing: .01em; margin: 0 0 14px;
  text-shadow: 0 4px 34px rgba(var(--desert-shadow-rgb), .65);
}.nba-hub .rewind-mark{ display: inline-flex; flex: 0 0 auto; width: 1.02em; }.nba-hub .rewind-mark svg{ width: 100%; height: auto; display: block;
  filter: drop-shadow(0 3px 10px rgba(var(--desert-shadow-rgb), .5)); }.nba-hub .rewind-word{ color: var(--desert-card); white-space: nowrap; }.nba-hub .rewind-word .rw{ color: var(--desert-accent); /* on-photo */ }/* solid red rule — single line, never the league-echoing tri-color */
.rewind-rule{ height: 8px; width: 210px; border-radius: 4px;
  background: var(--nba-red); margin: 0 0 18px;
  box-shadow: 0 2px 12px rgba(var(--desert-shadow-rgb), .28); }.nba-hub .hub-hero .lede{ color: var(--desert-bg); /* on-photo */ font-size: 17px; max-width: 560px; }.nba-hub .hub-hero .updated{ color: rgba(var(--desert-bg-rgb), .72); /* on-photo */ }.nba-hub .hub-hero .updated b{ color: var(--desert-card); }.nba-hub .art-credit{ color: rgba(var(--desert-ink-faint-rgb), .6); }/* ============ section headers — condensed, athletic ============ */
.nba-hub .hub-sec > .sec-head{ align-items: center; gap: 14px; margin-bottom: 18px; }.nba-hub .hub-sec > .sec-head::before{
  width: 6px; height: 26px; border-radius: 3px;
  background: linear-gradient(180deg, var(--nba-red-bright), var(--nba-red));
  box-shadow: 0 0 14px rgba(var(--desert-accent-rgb), .55);
}.nba-hub .hub-sec > .sec-head h2{
  font-family: var(--nba-display); font-weight: 700; font-size: 30px;
  letter-spacing: .04em; text-transform: uppercase; color: var(--desert-ink);
}.nba-hub .hub-sec > .sec-head .kicker{
  font-family: var(--nba-display); font-weight: 500; font-size: 13px;
  letter-spacing: 3.5px; color: var(--nba-sky);
}.nba-hub .hub-sub{
  font-family: var(--nba-display); font-weight: 600; font-size: 16px;
  letter-spacing: 2px; color: var(--nba-dim);
}/* ============ SCOREBOARD STRIP — NBA.com style horizontal rail ============ */
.nba-hub .nba-scores .ggrid{
  display: flex; gap: 14px; overflow-x: auto; padding: 4px 4px 14px;
  scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
  scrollbar-width: thin; scrollbar-color: var(--nba-blue) transparent;
}.nba-hub .nba-scores .gcard{
  flex: 0 0 320px; scroll-snap-align: start;
  background: linear-gradient(165deg, var(--nba-navy2), var(--nba-card));
  border: none; border-radius: 16px;
  transition: transform .2s ease, border-color .2s ease;
}@media (hover: hover){.nba-hub .nba-scores .gcard:hover{ transform: translateY(-3px); border-color: var(--nba-blue); }
}.nba-hub .nba-scores .gcard.is-live{
  border-color: var(--nba-red); box-shadow: 0 0 0 1px var(--nba-red), 0 8px 28px rgba(var(--desert-accent-rgb), .28);
}.nba-hub .live-flag{
  background: var(--nba-red); color: var(--desert-card); border-radius: 999px;
  padding: 5px 11px 5px 9px; top: 14px; right: 14px;
  box-shadow: 0 2px 10px rgba(var(--desert-accent-rgb), .5);
}.nba-hub .live-flag .pulse{ background: var(--desert-card); }.nba-hub .gteam b{ color: var(--nba-ice); font-weight: 700; }.nba-hub .gscore{ font-family: var(--nba-display); font-weight: 700; font-size: 24px; }.nba-hub .gmeta{ color: var(--nba-dim); }.nba-hub .gmeta .gvenue{ color: var(--nba-faint); }/* ============ DESKTOP GRID — main column + sticky rail ============ */
@media (min-width: 1024px){
  .nba-hub .hub-grid { display: grid; grid-template-columns: minmax(0,1fr) 372px;
    gap: 36px; align-items: start; }
  .nba-hub .hub-rail { position: sticky; top: 18px; display: grid; gap: 40px; }
  .nba-hub .hub-rail .hub-sec { margin-bottom: 0; }
}/* ============ standings — conference tables ============ */
.nba-hub .twrap{ background: var(--nba-card); border-color: var(--nba-line); border-radius: 16px; }.nba-hub .twrap th{
  background: var(--nba-navy); color: var(--nba-sky);
  font-family: var(--nba-display); font-weight: 600; font-size: 12px; letter-spacing: 2px;
}.nba-hub .twrap td{ border-bottom-color: var(--nba-line); color: var(--nba-ice); }.nba-hub .twrap tbody tr:hover td{ background: rgba(var(--desert-accent-rgb), .08); }.nba-hub .twrap td.rk{ color: var(--nba-faint); font-family: var(--nba-display); font-weight: 600; }.nba-hub .hub-empty{ color: var(--nba-dim); background: var(--nba-card);
  border: 1px dashed var(--nba-line); border-radius: 14px; padding: 22px; font-size: 14.5px; }/* ============ news — lead + cards in Association colors ============ */
.nba-hub .pg-lead{ border-color: var(--nba-line); border-radius: 16px; background: var(--nba-navy); }.nba-hub .pg-tag{ background: var(--nba-red); border-radius: 4px;
  font-family: var(--nba-display); font-weight: 600; letter-spacing: 2.5px; }.nba-hub .pg-lead-head{ font-family: var(--nba-display); font-weight: 600;
  letter-spacing: .02em; text-transform: none; }.nba-hub .pg-src{ color: var(--nba-sky); }.nba-hub .pg-card{ background: var(--nba-card); border-color: var(--nba-line); border-radius: 14px; }.nba-hub .pg-head{ color: var(--nba-ice); }@media (hover: hover){.nba-hub a.pg-card:hover{ border-color: var(--nba-blue); box-shadow: 0 18px 44px rgba(var(--desert-shadow-rgb), .25); }
}@media (min-width: 700px){.nba-hub .pg-grid{ grid-template-columns: 1fr 1fr; } }/* ============ video / clips / poll ============ */
.nba-hub .vspot-card, .nba-hub .clip-card, .nba-hub .poll-card{
  background: var(--nba-card); border-color: var(--nba-line); }.nba-hub .vspot-title, .nba-hub .clip-title, .nba-hub .poll-q{ color: var(--nba-ice); }.nba-hub .vspot-kicker{ color: var(--nba-sky); font-family: var(--nba-display);
  font-weight: 600; letter-spacing: 2.5px; }.nba-hub .vplay span{ background: rgba(var(--desert-accent-rgb), .95); }.nba-hub .poll-opt{ background: var(--nba-deep); border-color: var(--nba-line); color: var(--nba-ice); }.nba-hub .poll-opt:active{ border-color: var(--nba-red); }.nba-hub .poll-bar{ background: var(--nba-navy2); }.nba-hub .poll-fill, .nba-hub .poll-top .pct{ background: var(--nba-red); color: var(--nba-red-bright); }.nba-hub .poll-top .pct{ background: none; }/* ============ teams ============ */
.nba-hub .team-tile{ background: var(--nba-card); border-color: var(--nba-line); border-radius: 16px; }.nba-hub a.team-tile:hover{ border-color: var(--nba-red); box-shadow: 0 10px 26px rgba(var(--desert-accent-rgb), .22); }.nba-hub .team-tile .tname{ color: var(--nba-ice); }.nba-hub .team-tools input{ background: var(--nba-card); border-color: var(--nba-line); color: var(--desert-ink); }.nba-hub .team-tools input:focus{ border-color: var(--nba-blue); outline: none; }.nba-hub .follow{ border-color: var(--nba-line); color: var(--nba-dim); }.nba-hub .follow[aria-pressed="true"]{ border-color: var(--nba-red); color: var(--nba-red-bright); }/* ============ loading / error states ============ */
.nba-hub .hub-skel span{
  background: linear-gradient(100deg, var(--nba-navy) 40%, var(--nba-navy2) 50%, var(--nba-navy) 60%);
  background-size: 200% 100%;
}.nba-hub .hub-error{ background: var(--desert-card); border-color: rgba(var(--desert-accent-rgb), .35); color: var(--desert-accent-deep); }.nba-hub .hub-error button{ background: var(--nba-red); color: var(--desert-card); }/* ============ breadcrumb ============ */
.nba-hub .crumb a{ color: var(--nba-dim); }.nba-hub .crumb a:hover{ color: var(--desert-ink); }.nba-hub .crumb a .back-arrow{ color: var(--nba-red-bright); }/* ============ phone ============ */
@media (max-width: 640px){
  .nba-hub { padding-left: 14px; padding-right: 14px; border-radius: 18px; }
  .nba-hub .hub-hero.hero-art { min-height: 340px; }
  .nba-hub .hero-inner { padding: 40px 22px 20px; }
  .nba-hub .hub-sec > .sec-head h2 { font-size: 24px; }
  .nba-hub .nba-scores .gcard { flex-basis: 272px; }
}@media (prefers-reduced-motion: reduce){.nba-hub .nba-scores .gcard{ transition: none; }
}

/* ==========================================================================
   Elevated-layer overrides — the bright "game-day" layer forces light cards
   with !important; the desert theme answers in kind (cream page, paper cards, espresso ink).
   Scoped to .nba-hub only;other hubs keep the bright theme.
   ========================================================================== */
body:has(.nba-hub){ background: var(--desert-bg) !important; color: var(--desert-ink) !important; }.nba-hub .crumb a{ color: var(--nba-dim) !important; }.nba-hub .crumb a:hover{ color: var(--desert-ink) !important; }.nba-hub .hero-veil{
  background: linear-gradient(100deg,
    rgba(var(--desert-ink-rgb), .88) 0%, rgba(var(--desert-ink-rgb), .62) 34%,
    rgba(var(--desert-ink-rgb), .12) 62%, rgba(var(--desert-ink-rgb), .30) 100%),
    linear-gradient(0deg, rgba(var(--desert-ink-rgb), .92) 0%, transparent 42%) !important;
}.nba-hub .hub-skel span{
  background: linear-gradient(100deg, var(--nba-navy) 40%, var(--nba-navy2) 50%, var(--nba-navy) 60%) !important;
  background-size: 200% 100% !important;
}.nba-hub .gcard{
  background: linear-gradient(165deg, var(--nba-navy2), var(--nba-card)) !important;
  border: 1px solid var(--nba-line) !important;
}.nba-hub .gcard.is-live{
  border: 1px solid var(--nba-red) !important;
  box-shadow: 0 0 0 1px var(--nba-red), 0 8px 28px rgba(var(--desert-accent-rgb), .28) !important;
}.nba-hub .gmeta{ color: var(--nba-dim) !important; border-top: 1px solid var(--nba-line) !important; }.nba-hub .vspot-card, .nba-hub .clip-card{
  background: var(--nba-card) !important; border: 1px solid var(--nba-line) !important;
}/* failed/slow thumbnails still hold a proper 16:9 frame */
.nba-hub .vthumb{ display: block; background: linear-gradient(135deg, var(--nba-navy), var(--nba-deep)); }/* spotlight meta stacks: kicker / title / source */
.nba-hub .vspot-meta > span{ display: block; }.nba-hub .vspot-kicker{ margin-bottom: 8px; }.nba-hub .vspot-title{ margin-bottom: 8px; }.nba-hub .vspot-title, .nba-hub .clip-title{ color: var(--nba-ice) !important; }.nba-hub .vspot-kicker{ color: var(--nba-sky) !important; }.nba-hub .vspot-sub{ color: var(--nba-dim) !important; }.nba-hub .poll-card{ background: var(--nba-card) !important; border: 1px solid var(--nba-line) !important; }.nba-hub .poll-q{ color: var(--nba-ice) !important; }.nba-hub .poll-opt{
  background: var(--nba-deep) !important; border: 1px solid var(--nba-line) !important;
  color: var(--nba-ice) !important;
}.nba-hub .poll-opt:hover{ border-color: var(--nba-red) !important; }.nba-hub .poll-note{ color: var(--nba-faint) !important; }/* ---- elevated newsroom cards (rendered by hub-elevated.js as .elv-*) ---- */
.nba-hub .elv-nlead{ border: none; border-radius: 16px; }.nba-hub .elv-nlead .nshade{
  background: linear-gradient(180deg, rgba(var(--desert-ink-rgb), 0) 20%, rgba(var(--desert-ink-rgb), .45) 55%, rgba(var(--desert-ink-rgb), .92) 100%);
}.nba-hub .elv-ntag{ background: var(--nba-red); border-radius: 4px;
  font-family: var(--nba-display); font-weight: 600; letter-spacing: 2.5px; }.nba-hub .elv-nlead-body h3{ font-family: var(--nba-display); font-weight: 600; letter-spacing: .02em; }.nba-hub .elv-ngrid{ grid-template-columns: 1fr; }@media (min-width: 700px){.nba-hub .elv-ngrid{ grid-template-columns: 1fr 1fr; } }.nba-hub .elv-ncard{ background: var(--nba-card); border: none; }.nba-hub .elv-ncard:hover{ border-color: var(--nba-blue); }.nba-hub .elv-ncard .nart{ background: var(--nba-navy); }.nba-hub .elv-ncard .nsrc{ color: var(--nba-sky); }.nba-hub .elv-ncard h4{ font-family: var(--nba-display); font-weight: 600; letter-spacing: .02em; color: var(--nba-ice); }.nba-hub .elv-ncard .nmeta{ color: var(--nba-faint); }

/* ============ VISIBILITY AUDIT 2026-10-03 ============
   The NBA hub panel is desert cream;bare headings and components inherit
   dark body text (invisible on navy). Force light text inside the panel.
   Also overrides hubs.css .sec-head h2 which targets the paper canvas. */
.nba-hub h1, .nba-hub h2, .nba-hub h3{ color: var(--desert-ink); }.nba-hub .hub-sec > .sec-head h2{ color: var(--desert-ink); }
/* hubs-elevated.css uses !important on .poll-opt;match it for the desert panel */
.nba-hub .poll-opt{ color: var(--desert-ink) !important; background: var(--desert-pressed) !important; border-color: rgba(var(--desert-ink-rgb), .14) !important; }
