/* Sharp Nine Prime Time theme — GENERATED by nfl-projections/tools/export_prime.py from data/prime.py; edit there. */

@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@600;700;800&display=swap');
:root {
  --sn-font-display:"Barlow Condensed","Archivo","Arial Narrow",system-ui,sans-serif;
  --sn-canvas:#070a12; --sn-surface:#111726; --sn-surface-2:#182033; --sn-surface-3:#212b40;
  --sn-line:rgba(255,255,255,.07); --sn-line-2:rgba(255,255,255,.12);
  --sn-gold:#e6bd4f; --sn-gold-hi:#f6d67a; --sn-gold-dim:rgba(230,189,79,.14);
  --pt-glass:rgba(17,23,38,.72); --pt-glass-2:rgba(24,32,51,.78);
  --pt-shadow:0 10px 30px rgba(0,0,0,.45), 0 1px 0 rgba(255,255,255,.04) inset;
  --pt-gold-grad:linear-gradient(135deg,#f6d67a 0%,#e6bd4f 45%,#c9972e 100%);
  --pt-gold-glow:0 6px 22px rgba(230,189,79,.28);
}
html { scroll-behavior:smooth; }
/* Longhand, not the `background` shorthand: a colour is only legal in the LAST
   layer of the shorthand, and this had it FIRST -- so from the theme's first day
   until 2026-11-03 the whole declaration was invalid and never painted. The page
   still looked right because body::before below carries the visible glow, which
   is why nobody noticed. Keep these as longhand so it cannot regress. */
body { background-color:#070a12;
       background-image:radial-gradient(1200px 600px at 15% -10%, rgba(230,189,79,.10), transparent 60%),
                        radial-gradient(900px 500px at 90% 0%, rgba(80,110,220,.14), transparent 60%);
       background-attachment:fixed; }
body::before { content:""; position:fixed; inset:-20% -10% auto -10%; height:70vh; z-index:0; pointer-events:none;
  background:
    radial-gradient(600px 320px at 20% 30%, rgba(230,189,79,.13), transparent 70%),
    radial-gradient(700px 360px at 75% 10%, rgba(70,100,210,.16), transparent 70%),
    radial-gradient(500px 300px at 55% 60%, rgba(140,80,200,.08), transparent 70%);
  filter:blur(30px); opacity:.9; animation:pt-aurora 38s ease-in-out infinite alternate; }
@keyframes pt-aurora { from { transform:translate3d(-3%,0,0) scale(1); } to { transform:translate3d(3%,2%,0) scale(1.08); } }
main { position:relative; z-index:1; }
::selection { background:rgba(230,189,79,.35); }
* { scrollbar-width:thin; scrollbar-color:#2a3550 transparent; }
*::-webkit-scrollbar { width:8px; height:8px; } *::-webkit-scrollbar-thumb { background:#2a3550; border-radius:8px; }

/* ── chrome: frosted header + nav, the strike as the active mark ── */
.header { background:rgba(7,10,18,.62); backdrop-filter:blur(18px) saturate(140%); -webkit-backdrop-filter:blur(18px) saturate(140%);
          border-bottom:1px solid rgba(255,255,255,.06); padding:12px 18px; }
.header-logo { font-size:21px; letter-spacing:.06em; text-transform:uppercase; font-weight:800; }
.header-logo span { background:var(--pt-gold-grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.header-logo img { height:30px; filter:drop-shadow(0 0 10px rgba(230,189,79,.35)); }
.header-date { font-family:var(--sn-font-display); font-size:13px; letter-spacing:.04em; text-transform:uppercase; color:var(--sn-fg-3); }
.sport-btn { background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.10); font-size:12px; letter-spacing:.12em; }
.nav { background:rgba(7,10,18,.55); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); border-bottom:1px solid rgba(255,255,255,.05); padding:6px 14px; }
.group-btn { font-size:14px; letter-spacing:.06em; text-transform:uppercase; position:relative; min-height:42px; border-radius:10px; }
.group-btn.active { background:transparent; color:var(--sn-fg); }
.group-btn.active::after { content:""; position:absolute; left:14px; right:14px; bottom:2px; height:3px; border-radius:2px;
  background:var(--pt-gold-grad); transform:skewX(-22deg); box-shadow:0 0 12px rgba(230,189,79,.55); }
.group-btn svg { opacity:.8; } .group-btn.active svg { color:var(--sn-gold); opacity:1; }
.subnav { background:rgba(7,10,18,.55); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); border-bottom:1px solid rgba(255,255,255,.05); }
.nav-btn, .sn-ptab, .sn-filters select, .sn-filters .sn-fbtn { background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.09); color:var(--sn-fg-2);
  font-size:13px; letter-spacing:.05em; text-transform:uppercase; transition:transform .12s ease, background .2s, color .2s, border-color .2s, box-shadow .2s; }
.nav-btn:hover, .sn-ptab:hover { background:rgba(255,255,255,.07); color:var(--sn-fg); transform:translateY(-1px); }
.nav-btn:active, .sn-ptab:active, .group-btn:active, .sn-game > summary:active, .sn-slip > summary:active { transform:scale(.98); }
.nav-btn.active, .sn-ptab.active, .sn-filters select.set, .sn-filters .sn-fbtn.on { background:var(--pt-gold-grad); border-color:transparent; color:#120d02; box-shadow:var(--pt-gold-glow); font-weight:800; }
.sn-ptab .n { background:rgba(255,255,255,.08); } .sn-ptab.active .n { background:rgba(0,0,0,.18); }

/* ── sections as soft glass panels ── */
.sn-section { background:var(--pt-glass); border:1px solid rgba(255,255,255,.06); border-radius:18px; padding:22px 24px; box-shadow:var(--pt-shadow);
              backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); }
.sn-section-head { border-bottom:0; padding-bottom:10px; margin-bottom:14px; position:relative; }
.sn-section-head::after { content:""; position:absolute; left:0; bottom:0; width:56px; height:3px; border-radius:2px; background:var(--pt-gold-grad); transform:skewX(-22deg); }
.sn-section-h { font-size:26px; font-weight:800; letter-spacing:.01em; text-transform:uppercase; }
.sn-section-sub { font-size:13.5px; }
.sn-page-h, .sn-day-h { font-size:34px; font-weight:800; letter-spacing:.01em; text-transform:uppercase; line-height:1; }
.sn-day-h { margin:8px 0 4px; }
.sn-group-h, .sn-fam-h, .sn-tier-h, .sn-sub-h, .res-h { font-size:12.5px; letter-spacing:.14em; }
.sn-tier-h { border-top:0; color:var(--sn-gold); }
.sn-note { background:rgba(255,255,255,.03); border-color:rgba(255,255,255,.06); border-radius:12px; font-size:13px; }
.sn-note.warn { border-left:3px solid var(--sn-gold); }

/* ── rows: lift, glass, gold rank, probability meter ── */
.sn-row { background:linear-gradient(180deg, rgba(255,255,255,.035), rgba(255,255,255,.015)); border:1px solid rgba(255,255,255,.06); border-radius:12px;
          transition:transform .15s ease, border-color .2s, box-shadow .2s, opacity .4s ease; }
.sn-row:hover { border-color:rgba(255,255,255,.13); transform:translateY(-1px); box-shadow:0 8px 24px rgba(0,0,0,.35); }
.sn-row.core { border-color:rgba(230,189,79,.28); box-shadow:0 0 0 1px rgba(230,189,79,.06) inset; }
.sn-rank { font-size:20px; font-weight:800; background:var(--pt-gold-grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.sn-title { font-size:15.5px; font-weight:600; }
.sn-chip { background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.09); border-radius:10px; position:relative; overflow:hidden; padding-bottom:9px; }
.sn-chip .pt-meter { position:absolute; left:0; right:0; bottom:0; height:3px; background:rgba(255,255,255,.06); }
.sn-chip .pt-meter::after { content:""; position:absolute; left:0; top:0; bottom:0; width:var(--w,0%); background:var(--pt-gold-grad); box-shadow:0 0 8px rgba(230,189,79,.6);
  transform-origin:left; animation:pt-fill .9s cubic-bezier(.2,.7,.2,1) both; }
@keyframes pt-fill { from { transform:scaleX(0); } to { transform:scaleX(1); } }
.sn-badge { letter-spacing:.08em; }
.sn-badge.core { background:var(--sn-gold-dim); color:var(--sn-gold-hi); border:1px solid rgba(230,189,79,.3); }
.sn-badge.win { box-shadow:0 0 14px rgba(127,215,154,.35); } .sn-badge.loss { box-shadow:0 0 14px rgba(240,147,140,.25); }
.sn-row.won { border-left:3px solid var(--sn-good); box-shadow:-6px 0 18px -8px rgba(127,215,154,.6); }
.sn-row.lost { border-left:3px solid var(--sn-bad); }
.sn-take { background:var(--pt-gold-grad); color:#120d02; border:0; font-weight:800; box-shadow:var(--pt-gold-glow); }
.sn-odds { color:var(--sn-gold-hi); }
button.sn-chip.sn-odds:hover { border-color:var(--sn-gold); box-shadow:var(--pt-gold-glow); }

/* ── game groups wear the two teams' colours ── */
.sn-game > summary { position:relative; overflow:hidden; border-radius:12px; background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.07); min-height:52px;
  transition:transform .12s ease, border-color .2s; }
.sn-game > summary.pt-teams { background:
  linear-gradient(90deg, rgba(var(--ta),.26) 0%, rgba(var(--ta),.06) 38%, rgba(var(--tb),.06) 62%, rgba(var(--tb),.26) 100%), rgba(255,255,255,.02); }
.sn-game > summary.pt-teams::before { content:""; position:absolute; left:0; right:0; top:0; height:3px;
  background:linear-gradient(90deg, rgb(var(--ta)) 0 50%, rgb(var(--tb)) 50% 100%); opacity:.85; }
.sn-game > summary .m { font-size:19px; letter-spacing:.03em; text-transform:uppercase; }
.sn-game > summary .tog::after { content:""; display:inline-block; width:8px; height:8px; border-right:2px solid var(--sn-gold); border-bottom:2px solid var(--sn-gold);
  transform:rotate(45deg); transition:transform .22s ease; margin-left:6px; }
.sn-game[open] > summary .tog::after { transform:rotate(-135deg); }
.sn-game[open] > summary { border-radius:12px 12px 0 0; }
.sn-held > summary, body.sn-core-only .sn-also > summary { border-radius:12px; border-color:rgba(255,255,255,.12); }

/* ── sim cards: team colour edges, win split bar, glow on the favourite ── */
.sim-card { background:var(--pt-glass-2); border:1px solid rgba(255,255,255,.07); border-radius:18px; box-shadow:var(--pt-shadow); position:relative; overflow:hidden; }
.sim-card.pt-teams { background:
  linear-gradient(135deg, rgba(var(--ta),.22) 0%, transparent 42%), linear-gradient(315deg, rgba(var(--tb),.22) 0%, transparent 42%), var(--pt-glass-2); }
.sim-card.pt-teams::before { content:""; position:absolute; left:0; right:0; top:0; height:4px; background:linear-gradient(90deg, rgb(var(--ta)) 0 50%, rgb(var(--tb)) 50% 100%); }
.sim-head { border-bottom:1px solid rgba(255,255,255,.07); padding:16px 18px 12px; }
.sim-head-l .matchup { font-size:28px; letter-spacing:.02em; text-transform:uppercase; }
.sim-side .team { font-size:13px; letter-spacing:.14em; color:var(--sn-fg-2); }
.sim-side .pct { font-size:46px; letter-spacing:-.01em; }
.sim-side.fav .pct { background:var(--pt-gold-grad); -webkit-background-clip:text; background-clip:text; color:transparent; filter:drop-shadow(0 0 14px rgba(230,189,79,.35)); }
.sim-split { border-bottom:0; padding-bottom:6px; }
.pt-winbar { height:6px; margin:0 18px 12px; border-radius:6px; background:rgb(var(--tb,40,50,70)); overflow:hidden; position:relative; }
.pt-winbar i { display:block; height:100%; background:rgb(var(--ta,120,130,150)); border-right:2px solid #070a12; transform-origin:left; animation:pt-fill 1s cubic-bezier(.2,.7,.2,1) both; }
.sim-verdict { border-top:1px solid rgba(255,255,255,.07); }
.tier.strong { background:var(--pt-gold-grad); color:#120d02; }
.sn-beginner { background:linear-gradient(135deg, rgba(230,189,79,.16), rgba(230,189,79,.04)); border-color:rgba(230,189,79,.5); border-radius:12px; font-size:18px; box-shadow:var(--pt-gold-glow); }
.sn-beginner .bet { background:var(--pt-gold-grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.sim-dist-col { background:rgba(255,255,255,.08); } .sim-dist-col.peak { background:var(--sn-gold); box-shadow:0 0 10px rgba(230,189,79,.5); } .sim-dist-col.near { background:rgba(230,189,79,.55); }

/* ── slips and tickets ── */
.sn-slip { border-radius:14px; background:rgba(255,255,255,.03); border-color:rgba(255,255,255,.07); transition:border-color .2s, transform .12s ease; }
.sn-slip:hover { border-color:rgba(255,255,255,.14); }
.sn-slip > summary .k { font-size:13px; letter-spacing:.12em; color:var(--sn-gold-hi); }
.sn-slip > summary .px { font-size:17px; }
.sn-slip.won { box-shadow:0 0 0 1px rgba(127,215,154,.25), 0 0 22px -6px rgba(127,215,154,.5); }
.sn-ticket { background:transparent; }
.sn-ticket .tk-head { background:linear-gradient(180deg, rgba(255,255,255,.03), transparent); }
.sn-ticket .tk-kind { font-size:13px; letter-spacing:.14em; }
.sn-ticket .tk-price .v { font-family:var(--sn-font-display); font-size:32px; font-weight:800; }
.sn-ticket .tk-foot { background:rgba(255,255,255,.03); }
.sn-rec { background:rgba(255,255,255,.03); }
.sn-rec.up { background:rgba(127,215,154,.08); } .sn-rec.down { background:rgba(240,147,140,.08); }

/* ── Plan tab hero + results tiles ── */
#sec-plan .sn-section-head { padding:22px 22px 18px; margin:-22px -24px 16px; border-radius:18px 18px 0 0;
  background:linear-gradient(120deg, rgba(230,189,79,.18) 0%, rgba(230,189,79,.04) 40%, rgba(70,100,210,.10) 100%); }
#sec-plan .sn-section-head::after { left:22px; bottom:12px; }
#sec-plan .sn-section-h { font-size:34px; }
.sn-plan th { font-size:12px; letter-spacing:.14em; } .sn-plan td { font-size:14px; }
.sn-plan-stake input { background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.12); border-radius:10px; font-size:16px; }
.sn-plan-stake input:focus { outline:0; border-color:var(--sn-gold); box-shadow:var(--pt-gold-glow); }
.sn-res-tile, #sec-results .res-tile, #sec-results .res-card, #sec-results .res-verdict { background:rgba(255,255,255,.03); border-color:rgba(255,255,255,.07); border-radius:14px; }
#sec-results .res-verdict { background:linear-gradient(120deg, rgba(230,189,79,.16), rgba(230,189,79,.03) 60%); border-color:rgba(230,189,79,.4); box-shadow:var(--pt-gold-glow); }
#sec-results .res-verdict-n { font-size:44px; } #sec-results .res-tile-v { font-size:28px; } .sn-res-tile .tv { font-size:24px; }
#sec-results .res-tile-v.up, .sn-res-tile .tv.up, #sec-results .res-num.up .res-v { text-shadow:0 0 16px rgba(127,215,154,.45); }
#sec-results .res-card.up { background:linear-gradient(180deg, rgba(127,215,154,.10), rgba(127,215,154,.03)); }

/* ── alt-line rows wear the player's team colour; the team tag is tinted everywhere ── */
.sn-row.pt-team { border-left:3px solid rgb(var(--tc)); background:linear-gradient(90deg, rgba(var(--tc),.18) 0%, rgba(var(--tc),.04) 40%, rgba(255,255,255,.015) 100%); }
.sn-row.pt-team.won { border-left-color:var(--sn-good); } .sn-row.pt-team.lost { border-left-color:var(--sn-bad); }
.sn-team.pt-tag { color:rgb(var(--tc)); background:rgba(var(--tc),.14); border:1px solid rgba(var(--tc),.38); font-size:9.5px; padding:0 5px; }
/* ── plan tables: never wider than the frame; on phones each product stacks its numbers under the name ── */
.tbl { overflow-x:auto; max-width:100%; }
@media (max-width:620px) {
  .sn-plan, .sn-plan tbody { display:block; width:100%; }
  .sn-plan th { display:none; }
  /* two fixed columns so every row lines up with the next: stake | record, then units | return */
  .sn-plan tr { display:grid; grid-template-columns:1fr 1fr; gap:12px 16px; padding:16px 2px; border-bottom:1px solid var(--sn-line); }
  .sn-plan td { display:block; border:0; padding:0; min-width:0; }
  .sn-plan td:first-child { grid-column:1 / -1; font-size:16px; }
  .sn-plan td:first-child .muted { display:block; margin-top:3px; font-size:12.5px; line-height:1.45; }
  .sn-plan td.r { text-align:left; font-size:16px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .sn-plan td.r::before { display:block; font-family:var(--sn-font-display); font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--sn-fg-3); margin-bottom:3px; }
  .sn-plan td:nth-child(2):nth-last-child(4)::before { content:"stake"; }
  .sn-plan td:nth-child(3):nth-last-child(3)::before { content:"record"; }
  .sn-plan td:nth-child(3):nth-last-child(3) { white-space:normal; line-height:1.35; }
  .sn-plan td:nth-child(4):nth-last-child(2)::before { content:"units"; }
  .sn-plan td:nth-child(5):nth-last-child(1)::before { content:"return"; }
  .sn-plan tr:has(td:first-child:nth-last-child(3)) { grid-template-columns:1fr auto auto; align-items:baseline; padding:12px 2px; }
  .sn-plan tr:has(td:first-child:nth-last-child(3)) td:first-child { grid-column:auto; font-size:15px; }
  .sn-plan tr:has(td:first-child:nth-last-child(3)) td.r { font-size:15px; }
  .sn-plan tr:has(td:first-child:nth-last-child(3)) td.r::before { display:none; }
}

/* ── parlays: family headers carry the strike, slips carry a chance meter, legs carry the team ── */
.sn-fam-h { position:relative; padding-left:16px; color:var(--sn-fg-2); }
.sn-fam-h::before { content:""; position:absolute; left:0; top:50%; width:9px; height:3px; margin-top:-1px; border-radius:2px; background:var(--pt-gold-grad); transform:skewX(-22deg); }
.sn-slip > summary { position:relative; padding:12px 14px 14px; }
.sn-slip > summary .pt-meter { position:absolute; left:0; right:0; bottom:0; height:3px; background:rgba(255,255,255,.05); }
.sn-slip > summary .pt-meter::after { content:""; position:absolute; left:0; top:0; bottom:0; width:var(--w,0%); background:var(--pt-gold-grad); box-shadow:0 0 8px rgba(230,189,79,.5); animation:pt-fill .9s cubic-bezier(.2,.7,.2,1) both; }
.sn-slip.won > summary .pt-meter::after { background:var(--sn-good); box-shadow:0 0 8px rgba(127,215,154,.6); }
.sn-slip.lost > summary .pt-meter::after { background:var(--sn-bad); box-shadow:none; }
.sn-slip > summary .ch { font-size:13.5px; } .sn-slip > summary .ch b { color:var(--sn-fg); }
.sn-slip > summary .px { font-family:var(--sn-font-display); font-size:22px; font-weight:800; }
.sn-ticket .tk-leg { padding:9px 0 9px 12px; position:relative; }
.sn-ticket .tk-leg.pt-team::before { content:""; position:absolute; left:0; top:10px; bottom:10px; width:3px; border-radius:2px; background:rgb(var(--tc)); opacity:.9; }
.sn-ticket .tk-leg .who span.pt-tag { font-family:var(--sn-font-display); font-size:10px; letter-spacing:.06em; padding:0 5px; border-radius:3px; margin-left:6px; vertical-align:1px; }
.sn-ticket .tk-head .tk-kind { position:relative; padding-left:16px; }
.sn-ticket .tk-head .tk-kind::before { content:""; position:absolute; left:0; top:7px; width:9px; height:3px; border-radius:2px; background:var(--pt-gold-grad); transform:skewX(-22deg); }
.sn-ticket.won .tk-price .v { color:var(--sn-good); text-shadow:0 0 16px rgba(127,215,154,.45); }
.sn-ticket.lost .tk-price .v { color:var(--sn-fg-3); }
/* ── PrizePicks board: rows carry the team, the chance gets a meter, goblins green and demons violet ── */
#sec-dfs .sn-row > .sn-right, #sec-alt .sn-row > .sn-right { min-width:92px; padding:6px 10px 10px; border-radius:10px; background:rgba(255,255,255,.035); border:1px solid rgba(255,255,255,.07); position:relative; overflow:hidden; }
#sec-dfs .sn-row > .sn-right .v, #sec-alt .sn-row > .sn-right .v { font-family:var(--sn-font-display); font-size:22px; font-weight:800; line-height:1; }
#sec-dfs .sn-row > .sn-right .lbl, #sec-alt .sn-row > .sn-right .lbl { font-size:9.5px; letter-spacing:.08em; text-transform:uppercase; margin-top:3px; }
.sn-right .pt-meter { position:absolute; left:0; right:0; bottom:0; height:3px; background:rgba(255,255,255,.06); }
.sn-right .pt-meter::after { content:""; position:absolute; left:0; top:0; bottom:0; width:var(--w,0%); background:var(--pt-gold-grad); animation:pt-fill .9s cubic-bezier(.2,.7,.2,1) both; }
.sn-row.pt-goblin > .sn-right { border-color:rgba(127,215,154,.35); } .sn-row.pt-goblin > .sn-right .v { color:var(--sn-good); } .sn-row.pt-goblin > .sn-right .pt-meter::after { background:var(--sn-good); }
.sn-row.pt-demon > .sn-right { border-color:rgba(199,139,255,.4); } .sn-row.pt-demon > .sn-right .v { color:#c78bff; } .sn-row.pt-demon > .sn-right .pt-meter::after { background:#c78bff; }
.sn-tier-h.pt-goblin { color:var(--sn-good); } .sn-tier-h.pt-demon { color:#c78bff; }
.sn-title .pt-side { font-weight:800; color:var(--sn-fg); }
@media (max-width:560px) { #sec-dfs .sn-row > .sn-right, #sec-alt .sn-row > .sn-right { padding-left:12px; } .header-logo { font-size:15px; } .header-logo img { height:24px; } .sport-btn { font-size:11px; padding:0 8px; } }

@media (max-width:620px) {
  /* slip rows on a phone: kind + price on the first line, chance under, legs + result on the third */
  .sn-slip > summary { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:4px 10px; align-items:center; padding:12px 12px 14px; }
  .sn-slip > summary .k { grid-column:1; grid-row:1; }
  .sn-slip > summary .px { grid-column:2; grid-row:1; justify-self:end; }
  .sn-slip > summary .ch { grid-column:1 / -1; grid-row:2; }
  .sn-slip > summary .n { grid-column:1; grid-row:3; }
  .sn-slip > summary .sn-badge { grid-column:2; grid-row:3; justify-self:end; white-space:nowrap; }
  .sn-slip > summary .tog { display:none; }
  .sn-ticket .tk-head { flex-wrap:wrap; gap:6px 10px; }
  .sn-ticket .tk-kind { flex:1 1 100%; }
  .sn-ticket .tk-price { text-align:left; display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
  .sn-ticket .tk-price .v { font-size:28px; }
}

/* ── reveal ── */
.pt-reveal .sn-row, .pt-reveal .sn-game, .pt-reveal .sim-card, .pt-reveal .sn-slip, .pt-reveal .sn-res-tile, .pt-reveal .res-tile, .pt-reveal .res-card {
  opacity:0; transform:translateY(8px); }
.pt-reveal .pt-in { opacity:1; transform:none; transition:opacity .45s ease, transform .45s cubic-bezier(.2,.7,.2,1); transition-delay:var(--d,0ms); }

/* ── phone ── */
@media (max-width:768px) {
  .header { padding:10px 12px; } .header-logo { font-size:17px; } .header-logo img { height:26px; }
  .nav { background:rgba(7,10,18,.78); border-top:1px solid rgba(255,255,255,.07); }
  .group-btn { font-size:10.5px; letter-spacing:.08em; }
  .group-btn.active::after { left:30%; right:30%; bottom:auto; top:0; height:3px; }
  .sn-section { padding:16px 14px; border-radius:16px; }
  #sec-plan .sn-section-head { margin:-16px -14px 14px; padding:18px 16px 16px; }
  .sn-section-h { font-size:23px; } .sn-page-h, .sn-day-h { font-size:28px; }
  .nav-btn, .sn-ptab, .sn-filters select, .sn-filters .sn-fbtn { font-size:12px; letter-spacing:.04em; }
  .sn-filters select, .sn-filters .sn-fbtn { min-height:40px; padding:0 11px; }
  .sim-side .pct { font-size:38px; } .sim-head-l .matchup { font-size:24px; }
}
@media (prefers-reduced-motion: reduce) {
  body::before { animation:none; } .pt-reveal .sn-row, .pt-reveal .sn-game, .pt-reveal .sim-card, .pt-reveal .sn-slip, .pt-reveal .sn-res-tile, .pt-reveal .res-tile, .pt-reveal .res-card { opacity:1; transform:none; }
  .sn-chip .pt-meter::after, .pt-winbar i { animation:none; } html { scroll-behavior:auto; }
}

.sn-playoff-banner { background:linear-gradient(120deg, rgba(230,189,79,.16), rgba(230,189,79,.03) 60%); border:1px solid rgba(230,189,79,.4); border-radius:16px; box-shadow:var(--pt-gold-glow); }
.sim-tile { background:rgba(255,255,255,.035); border:1px solid rgba(255,255,255,.07); border-radius:12px; }
.sim-tile .v { font-size:22px; }
.sim-tile.sweet-spot { border-color:rgba(230,189,79,.45); box-shadow:0 0 14px rgba(230,189,79,.18); }
.sim-total .v { font-family:var(--sn-font-display); font-size:22px; font-weight:800; }
.sim-head-l .matchup .at { color:var(--sn-fg-3); }
.sim-series-chip { background:rgba(255,255,255,.04); }
.sn-row-extra .sn-rung { background:rgba(255,255,255,.035); border:1px solid rgba(255,255,255,.07); border-radius:10px; }
.sn-row-extra .sn-rung .od { color:var(--sn-gold-hi); }
.sn-badge.good { box-shadow:0 0 12px rgba(127,215,154,.25); }
.sn-right .v { font-family:var(--sn-font-display); font-size:20px; font-weight:800; }
.sn-right .lbl { letter-spacing:.08em; text-transform:uppercase; font-size:9.5px; }
.sn-row.pt-team .sn-rank { color:rgb(var(--tc)); -webkit-text-fill-color:currentColor; background:none; }

/* explorer top bar + search */
.nav.nav { background:rgba(7,10,18,.62); backdrop-filter:blur(18px) saturate(140%); -webkit-backdrop-filter:blur(18px) saturate(140%); border-color:rgba(255,255,255,.06); }
.brand .wm-gold { background:var(--pt-gold-grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.brand .brand-mark { filter:drop-shadow(0 0 10px rgba(230,189,79,.35)); }
.search input { background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.10); border-radius:12px; }
.search input:focus { border-color:var(--sn-gold); box-shadow:var(--pt-gold-glow); outline:0; }
.back-to-slate, .compact-back { background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.10); border-radius:999px; }
.list-header h2 { font-family:var(--sn-font-display); font-size:18px; letter-spacing:.12em; }
/* the slate: game headers in both clubs' colours, batter rows edged in their club's */
.game-group { border-radius:14px; overflow:hidden; border:1px solid rgba(255,255,255,.07); background:var(--pt-glass); box-shadow:var(--pt-shadow); margin-bottom:10px; }
.game-group-header { position:relative; font-family:var(--sn-font-display); letter-spacing:.08em; }
.game-group-header.pt-teams { background:linear-gradient(90deg, rgba(var(--ta),.30) 0%, rgba(var(--ta),.08) 38%, rgba(var(--tb),.08) 62%, rgba(var(--tb),.30) 100%) !important; }
.game-group-header.pt-teams::before { content:""; position:absolute; left:0; right:0; top:0; height:3px; background:linear-gradient(90deg, rgb(var(--ta)) 0 50%, rgb(var(--tb)) 50% 100%); }
.game-group-header .game-group-header-label { font-size:13px; }
.batter-row { position:relative; transition:background .18s, transform .12s ease; }
.batter-row.pt-team { background:linear-gradient(90deg, rgba(var(--tc),.14), transparent 34%); }
.batter-row.pt-team::before { content:""; position:absolute; left:0; top:8px; bottom:8px; width:3px; border-radius:2px; background:rgb(var(--tc)); }
.batter-row:hover { background:rgba(255,255,255,.05); }
.batter-row.pt-team:hover { background:linear-gradient(90deg, rgba(var(--tc),.22), rgba(255,255,255,.04) 40%); }
.batter-row .row-badge { box-shadow:0 0 12px rgba(var(--tc,255,255,255),.35); }
.batter-row .row-name { font-size:14.5px; }
.row-tag.hit, .row-tag.hrr, .row-tag.k, .row-tag.tb, .row-tag.r { letter-spacing:.08em; }
/* the player header wears the club */
.player-header { position:relative; overflow:hidden; border-radius:18px; border:1px solid rgba(255,255,255,.07); background:var(--pt-glass); box-shadow:var(--pt-shadow); }
.player-header.pt-team { background:linear-gradient(100deg, rgba(var(--tc),.32) 0%, rgba(var(--tc),.08) 45%, transparent 75%), var(--pt-glass); }
.player-header.pt-team::before { content:""; position:absolute; left:0; right:0; top:0; height:4px; background:linear-gradient(90deg, rgb(var(--tc)), rgba(var(--tc),.1)); }
.player-header .avatar { box-shadow:0 0 0 2px rgba(var(--tc,255,255,255),.75), 0 0 20px rgba(var(--tc,255,255,255),.35); }
.identity .name { font-family:var(--sn-font-display); font-size:40px; text-transform:uppercase; letter-spacing:.01em; }
.identity .team-line strong { color:rgb(var(--tc,232,235,241)); letter-spacing:.14em; }
.matchup-vs { font-family:var(--sn-font-display); font-size:22px; text-transform:uppercase; letter-spacing:.02em; }
.matchup-label { color:var(--sn-gold); letter-spacing:.16em; }
/* tabs, pills, cards */
.tab-nav { background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.07); border-radius:14px; overflow:hidden; }
.tab-nav-btn { font-family:var(--sn-font-display); letter-spacing:.12em; text-transform:uppercase; font-size:12.5px; }
.tab-nav-btn.active { background:var(--pt-gold-grad) !important; color:#120d02 !important; box-shadow:var(--pt-gold-glow); }
.pill { background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.09); font-family:var(--sn-font-display); letter-spacing:.08em; text-transform:uppercase; }
.pill.active { background:var(--pt-gold-grad) !important; color:#120d02 !important; border-color:transparent; box-shadow:var(--pt-gold-glow); }
.card { background:var(--pt-glass-2); border:1px solid rgba(255,255,255,.07); border-radius:16px; box-shadow:var(--pt-shadow); }
.card h2 { font-family:var(--sn-font-display); letter-spacing:.12em; position:relative; padding-left:16px; }
.card h2::before { content:""; position:absolute; left:0; top:.55em; width:9px; height:3px; margin-top:0; border-radius:2px; background:var(--pt-gold-grad); transform:skewX(-22deg); }
.prop-panel { border-radius:14px; background:rgba(255,255,255,.03); }
.prop-panel-value { font-family:var(--sn-font-display); font-size:30px; font-weight:800; letter-spacing:.01em; }
.prop-panel.verdict-bet { box-shadow:0 0 0 1px rgba(127,215,154,.35), 0 0 22px -6px rgba(127,215,154,.5); }
.prop-panel-copy, .prop-chip-copy { border-radius:999px; font-family:var(--sn-font-display); letter-spacing:.1em; }
.prop-panel-copy:hover { background:var(--pt-gold-grad); color:#120d02; }
.stat-tile { background:rgba(255,255,255,.035); border:1px solid rgba(255,255,255,.07); border-radius:12px; }
.stat-tile-value { font-family:var(--sn-font-display); font-size:20px; font-weight:800; }
.h2h-stat.hot .v { text-shadow:0 0 14px rgba(255,107,53,.45); }
.form-bar.top { filter:drop-shadow(0 0 6px rgba(230,189,79,.6)); }
.form-chart-wrap { border-radius:12px; }
.sn-bnav { background:rgba(7,10,18,.78); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); border-top:1px solid rgba(255,255,255,.07); }
.sn-bnav-btn { font-family:var(--sn-font-display); letter-spacing:.08em; text-transform:uppercase; position:relative; }
.sn-bnav-btn.active::after { content:""; position:absolute; left:30%; right:30%; top:0; height:3px; border-radius:2px; background:var(--pt-gold-grad); transform:skewX(-22deg); box-shadow:0 0 12px rgba(230,189,79,.55); }
@media (max-width:640px) { .identity .name { font-size:28px; } .matchup-vs { font-size:18px; } }
