/* ===== Playoff Bound v3 (Figma "Playoff Bound v3", 10/20). Loaded last; overrides only.
   v2 palette tokens; rating tier colours (.ovr.t-*) intentionally untouched (app.css). ===== */
.g-dark{--g-bg:#07090F;--g-surf:#0E121B;--g-surf2:#151A26;--g-surf3:#1D2433;--g-line:#262D3D;--g-line2:#353E52;--g-text:#F4F6FA;--g-mute:#8B93A7;--g-mute2:#5B6377;
  --g-blue:#7CC8FF;--g-blue-soft:rgba(124,200,255,.13);--g-hot:#F7381E;--g-hot-dark:#C42813;--g-hot-soft:rgba(247,56,30,.16);--g-gold:#E9C46A;--g-gold-dark:#B8862B;--g-gold-soft:rgba(233,196,106,.16);--g-green:#34D3A6}
body.g{background:radial-gradient(120% 60% at 0% 0%,rgba(247,56,30,.07),transparent 60%),var(--g-bg)}
/* header: centered wordmark 26px, "by discover NIL" beneath, menu = plain dots, 44px tap (v3d) */
.dnil-bar{border-bottom:1px solid var(--g-line);max-width:none}
.dnil-bar .gname{font-size:26px;font-style:normal;font-weight:800;letter-spacing:.04em}
body.g button.menu-btn{width:40px;height:40px;border-radius:50%;background:transparent;border:1.5px solid var(--g-line2);color:var(--g-text)}
body.g button.menu-btn:hover{border-color:var(--g-blue)}
/* cards, chips, buttons */
.card{background:var(--g-surf);border-color:var(--g-line)}
.chip{background:var(--g-surf2);border-color:var(--g-line)}
.chip.mchip{background:var(--g-blue-soft);color:var(--g-blue);border-color:transparent;letter-spacing:.06em;text-transform:uppercase;font-size:11px}
.chip.hot.mchip{background:var(--g-hot-soft);color:var(--g-hot)}
.gb.soft{background:var(--g-surf2);border:1px solid var(--g-line);color:var(--g-text)}
.gb.ghost{border-color:var(--g-line2)}
.prow{background:var(--g-surf);border:1px solid var(--g-line);border-radius:14px}
.prow:hover{border-color:var(--g-line2)}
/* ---- spinner: live gold cabinet ---- */
.machine{padding:30px 14px 14px;border:2px solid transparent;border-radius:20px;
  background:linear-gradient(180deg,#221a3a,#141a2e 70%) padding-box,linear-gradient(160deg,#FFE08A,#C98A12 45%,#7A5208 70%,#E9C46A) border-box;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 14px 34px -18px rgba(0,0,0,.9);transition:box-shadow .35s}
.machine.landed{box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 0 0 1px rgba(233,196,106,.55),0 0 26px rgba(233,196,106,.28)}
.mwin{background:#05060B;box-shadow:inset 0 8px 16px rgba(0,0,0,.9),inset 0 -8px 16px rgba(0,0,0,.9),0 1px 0 rgba(255,255,255,.06)}
.mwin .reel{position:relative;background:linear-gradient(180deg,#bfc3cc 0%,#fff 26%,#fff 70%,#c3c7cf 100%);color:#0B0D12}
.mwin .reel::after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:8px;background:linear-gradient(180deg,rgba(255,255,255,.75),rgba(255,255,255,0) 22%),linear-gradient(0deg,rgba(0,0,0,.22),transparent 30%)}
.mwin .reel.yr .it{color:#D7261A}
.machine.spinning .reel>div{filter:blur(1.4px)}
.payline::before{border-left-color:#F7381E}.payline::after{border-right-color:#F7381E}
.mpill{position:absolute;top:8px;right:12px;height:20px;padding:0 9px;display:inline-flex;align-items:center;gap:5px;border-radius:999px;font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;background:rgba(233,196,106,.16);color:var(--g-gold)}
.mpill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.mpill.live{background:rgba(247,56,30,.18);color:#FF6A52}.mpill.live::before{animation:livedot 1s ease-in-out infinite}
@keyframes livedot{50%{opacity:.25}}
.row.spinrow{justify-content:center;margin-top:10px}
.mconf{flex:none;text-align:center;color:var(--g-gold);font-size:13px}
.rsbtns{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%;max-width:340px;margin:10px auto 0}
.gb.rsb{width:100%;min-height:46px;background:rgba(124,200,255,.08);border:1px solid rgba(124,200,255,.35);color:var(--g-blue);border-radius:12px}
.gb.rsb:disabled{opacity:1;background:rgba(255,255,255,.03);border-color:var(--g-line);color:var(--g-mute2)}
.tbdg{margin-top:8px}
/* list header */
/* ---- drawer ---- */
.drawer{background:linear-gradient(180deg,#0E121B,#0A0D14);border-top:1px solid var(--g-line);box-shadow:0 -18px 40px rgba(0,0,0,.6)}
#app.drafting{padding-bottom:200px}
.drawer .slots .slot{min-height:50px;background:var(--g-surf2);border-color:var(--g-line)}
.drawer .slots .slot:not(.on){border-style:dashed;background:transparent}
.dfilt{display:flex;flex-wrap:wrap;gap:6px;padding-top:6px}
.fbtn{height:32px;padding:0 13px;border-radius:999px;border:1px solid var(--g-line2);background:var(--g-surf2);color:var(--g-mute);font:700 12.5px var(--g-body);cursor:pointer}
.fbtn.on{background:var(--g-blue-soft);border-color:rgba(124,200,255,.6);color:var(--g-blue)}
.projwl{margin-top:10px}
/* ---- W/L tiles (v2): outlined blue W, red L; 6x2 grid that fits 390px ---- */
.wlgrid{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;max-width:100%}
.wl{font-size:15px;border-radius:9px;border:1px solid var(--g-line);background:var(--g-surf2);color:var(--g-mute2)}
.wl.W{background:rgba(124,200,255,.12);border-color:rgba(124,200,255,.55);color:var(--g-blue)}
.wl.L{background:rgba(247,56,30,.14);border-color:rgba(247,56,30,.6);color:#FF6A52}
.projwl .wl{font-size:12px;border-radius:7px}
/* ---- results ---- */
.rhero .score{color:var(--g-text)}
.rhero.made .rstatus{background:linear-gradient(135deg,#FFE08A,#E9C46A 50%,#B8862B);color:#231700}
.pobtn{background:linear-gradient(135deg,#FFE08A,#E9C46A 45%,#B8862B);color:#231700;border:0;box-shadow:0 8px 26px -6px rgba(233,196,106,.55);min-height:60px}
.pobtn .cond{font-size:19px;font-weight:800}
.poseed.you{background:var(--g-gold-soft);color:var(--g-gold)}.poseed.you b{color:var(--g-gold)}
.poteam.you{color:var(--g-gold)}
.pogame.w{border-color:rgba(124,200,255,.4)}.pogame.w .pores{color:var(--g-blue)}
html,body{overflow-x:hidden}
/* fixes after first pass */
body.g .gb.pobtn{background:linear-gradient(135deg,#FFE08A,#E9C46A 45%,#B8862B);color:#231700;border:0}
body.g .gb.pobtn .cond{color:#231700}
.chip.mchip{white-space:nowrap;flex:none}
.fbtn{border-color:#3A4560;color:var(--g-text);background:var(--g-surf2)}
.card.pofield{padding:12px 14px}
/* ===== College Legends rename (10/20): game header + hub ===== */
.brandlock .btxt{display:grid;justify-items:center;line-height:1.05;gap:1px}
.dnil-bar .hubname{font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--g-gold)}
.hubwrap{display:grid;gap:16px;padding-top:22px;padding-bottom:28px;max-width:560px}
.hubhero h1{font-size:30px;line-height:1.1;margin:0 0 6px}.hubhero h1 span{color:var(--g-hot)}
.hubhero p{margin:0}
.gcard{position:relative;display:grid;gap:10px;padding:18px;border-radius:18px;text-decoration:none!important;color:var(--g-text)!important;
  background:linear-gradient(180deg,#221a3a,#141a2e 70%) padding-box,linear-gradient(160deg,#FFE08A,#C98A12 45%,#7A5208 70%,#E9C46A) border-box;border:2px solid transparent}
.gcard .gtag{position:absolute;top:14px;right:14px;height:20px;padding:0 9px;border-radius:999px;background:rgba(233,196,106,.16);color:var(--g-gold);font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;display:inline-flex;align-items:center}
.gmini{display:flex;gap:6px;padding:5px;border-radius:10px;background:#05060B;width:fit-content}
.gmini span{height:40px;padding:0 12px;display:grid;place-items:center;border-radius:6px;background:linear-gradient(180deg,#bfc3cc,#fff 26%,#fff 70%,#c3c7cf);font-weight:800;font-size:18px;color:#0B0D12}
.gmini .y{color:#D7261A;font-family:var(--g-num)}
.gtitle{font-size:24px;font-weight:800}
.gdesc{font-size:14px;line-height:1.4}
.gplay{justify-self:start;min-width:140px}
.gsoon{display:grid;gap:4px;padding:16px 18px;border:1.5px dashed var(--g-line2);background:transparent;border-radius:18px}
.gsoon .gtitle{font-size:18px;color:var(--g-mute)}
/* collapsed drawer ~185px: compact slot cards (name + small rating) */
.drawer:not(.open) .slots .slot{min-height:46px;padding:4px 3px;gap:1px}
.drawer:not(.open) .slots .slot .ovr.sm{width:28px;height:20px;font-size:12px}
.drawer:not(.open) .slots .slot .sl{font-size:9.5px}.drawer:not(.open) .slots .slot .sn{font-size:11px}
/* ===== 10/20 v3b: compact spinner. Conference left + re-spin chips right on one row; tighter padding ===== */
.machine{padding:26px 12px 10px}
.mpill{top:5px}
.spinrow{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;min-width:0}
.mconf{flex:1 1 auto;min-width:0;text-align:left;font-size:12.5px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rsbtns{display:flex;gap:6px;flex:none;width:auto;max-width:none;margin:0}
.rsb{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 10px;border-radius:999px;border:1px solid rgba(124,200,255,.45);background:rgba(124,200,255,.1);color:var(--g-blue);font:700 12px var(--g-body);cursor:pointer;position:relative}
.rsb:hover:not(:disabled){background:rgba(124,200,255,.18)}
.rsb:disabled{cursor:default}
.rsb.used{border-color:var(--g-line);background:transparent;color:var(--g-mute2);text-decoration:line-through;opacity:.75}
.rsb::after{content:"";position:absolute;inset:-8px -2px}   /* 44px touch target without the visual bulk */
.tbdg{margin-top:6px;min-height:0}
/* ===== v3c: balanced, shorter cabinet + auto-fit reel names (never truncated) ===== */
.machine{padding:14px 12px 12px;margin-top:8px}
.mpill{top:-11px;right:auto;left:50%;transform:translateX(-50%);height:22px;border:1px solid rgba(233,196,106,.55);background:#1b1630;box-shadow:0 2px 8px rgba(0,0,0,.6)}
.mpill.live{border-color:rgba(247,56,30,.6);background:#2a1220}
.spinrow{margin-top:10px}
.tbdg{margin-top:8px}.tbdg:empty{display:none}
.mwin .reel .it{text-overflow:clip;overflow:hidden;padding:0 7px}
.mwin .reel .it .t{display:inline-block;white-space:nowrap;line-height:1;text-align:center}
.mwin .reel .it .t.two{white-space:normal;line-height:1.04;overflow-wrap:normal;word-break:normal;hyphens:none}
.mwin .reel.tm{flex:1 1 0;width:0;min-width:0}.mwin .reel.tm>div,.mwin .reel.tm .it{width:100%;box-sizing:border-box}.mwin .reel.tm .it .t{display:block;width:max-content;max-width:none}.mwin .reel.tm .it .t.two{width:auto}
/* v3d header: title + single sub row; plain-dots menu */
.dnil-bar .subrow{display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;margin-top:2px}
.dnil-bar .subrow .hubname{font-size:10.5px;line-height:1}
.dnil-bar .subrow .by{display:inline-flex;align-items:center;gap:4px;margin:0;line-height:1}
.dnil-bar .sdot{width:3px;height:3px;border-radius:50%;background:var(--g-line2);flex:none}
body.g button.menu-btn{width:44px;height:44px;border:0!important;border-radius:0;background:transparent!important;box-shadow:none!important;outline-offset:-4px}
body.g button.menu-btn:hover{border:0;opacity:.8}
.dnil-bar{min-height:52px}
body.g button.menu-btn{top:calc(4px + env(safe-area-inset-top))}
body.g .dnil-bar .gname{font-size:min(26px,6.3vw)}
/* v3e sticky footer: page column fills the viewport, footer pinned by margin-top:auto (never fixed) */
html{height:auto}
body.g{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;margin:0}
body.g>main{flex:0 0 auto;width:100%;box-sizing:border-box}
body.g>.foot{margin-top:auto;margin-left:auto;margin-right:auto;padding-bottom:calc(24px + env(safe-area-inset-bottom))}
/* drawer shown: clearance for the collapsed drawer lives below the footer, so the footer is never hidden */
#app.drafting{padding-bottom:16px}
body.g.drawer-on{padding-bottom:calc(var(--drawer-h,96px) + env(safe-area-inset-bottom))}
/* v3f: no footer while drafting; body keeps only the drawer's own clearance */
body.g.drawer-on>.foot{display:none}
body.g.drawer-on{padding-bottom:calc(var(--drawer-h,96px) + 12px + env(safe-area-inset-bottom))}
/* run history (feature/run-history): tappable leaderboard rows + history list */
button.lbr{appearance:none;-webkit-appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;grid-template-columns:minmax(0,1fr) auto 48px 48px 14px;border:1px solid transparent;transition:background .15s,border-color .15s,transform .1s;-webkit-tap-highlight-color:transparent}
button.lbr.free{border-color:var(--g-line)}
button.lbr:hover{border-color:var(--g-line2);background:var(--g-surf2)}
button.lbr:active,.hrun:active{transform:scale(.985)}
button.lbr:focus-visible,.hrun:focus-visible,.hbbtn:focus-visible{outline:2px solid var(--g-blue);outline-offset:2px}
.lbchev{font-size:22px;line-height:1;color:var(--g-mute);justify-self:end}
@media (max-width:360px){button.lbr{grid-template-columns:minmax(0,1fr) auto 40px 40px 12px;gap:6px;padding:10px}}
.hback{display:flex;align-items:center;gap:10px;min-width:0}.hback .mute{font-size:12.5px;min-width:0;overflow-wrap:anywhere}
.hbbtn{min-height:44px;padding:0 14px;flex:none}
.hhead{display:grid;gap:4px}.hhead h1{margin:0;font-size:28px;line-height:1.1}
.hlist,.htoday{display:grid;gap:8px}
.hrun{appearance:none;-webkit-appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;display:grid;grid-template-columns:minmax(0,1fr) auto 14px;gap:10px;align-items:center;padding:12px;border-radius:12px;background:var(--g-surf2);border:1px solid var(--g-line);min-height:56px;box-sizing:border-box;-webkit-tap-highlight-color:transparent;transition:border-color .15s,transform .1s}
.hrun:hover{border-color:var(--g-line2)}.hrun.old{cursor:default;opacity:.7;background:transparent}
.hmain{display:grid;gap:3px;min-width:0;justify-items:start}.hwhen{font-size:14px}.hsub{font-size:12px;overflow-wrap:anywhere}
.hrec{font-size:22px}.hrec.made{color:var(--g-gold)}
.hpo{font-size:10.5px;height:20px;padding:0 8px}.hpo.champ{color:var(--g-gold);border-color:rgba(233,196,106,.5)}
.hnote{margin:0;font-size:12.5px}
.actions.one{grid-template-columns:1fr}
#app{align-content:start}.hlist,.htoday{padding:14px;align-content:start}.hlist>.k,.htoday>.k{margin-bottom:2px}
/* ===== lineup in the spinner card (feature/lineup-in-spinner): drawer removed ===== */
#app.drafting{padding-bottom:calc(20px + env(safe-area-inset-bottom))}
body.g.is-drafting>.foot{display:none}
.machine .ldiv{margin:10px 2px 8px;border-top:1.5px dotted rgba(233,196,106,.35)}
.lineup{display:grid;gap:6px}
.lhead{appearance:none;-webkit-appearance:none;display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;min-height:32px;padding:2px 2px;background:none;border:0;border-radius:8px;color:var(--g-text);font:inherit;cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent}
.lhead .k{color:var(--g-mute);white-space:nowrap}
.lproj{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--g-mute);white-space:nowrap}.lproj b{font-size:15px;color:var(--g-text)}
.linfo{color:var(--g-gold);flex:none}
.lhead:hover .linfo,.lhead:focus-visible .linfo{color:#fff}.lhead:active{transform:scale(.99)}
.lhead:focus-visible{outline:2px solid var(--g-blue);outline-offset:2px}
.lineup .dhint{font-size:12px;text-align:center}
.lineup .slots{gap:4px}
.lineup .slots .slot{min-height:0;padding:5px 1px 4px;gap:3px;border-radius:8px;border:1px solid transparent;background:rgba(255,255,255,.03)}
.lineup .slots .slot.on{background:rgba(255,255,255,.05);border-color:var(--g-line)}
.lineup .slots .slot .sl{font-size:10px;letter-spacing:.02em}
.lineup .slots .slot .sn{font-size:10.5px;font-weight:700;line-height:1.1;min-height:1.1em}
.lineup .slots .slot .sn.ph{font-weight:600}
.lineup .slots .slot .ovr.sm{width:30px;height:30px;font-size:14px;border-radius:7px}
.lineup .slots .slot .lempty{display:block;width:30px;height:30px;border-radius:7px;border:1.5px dashed var(--g-line2);box-sizing:border-box}
.lineup .slot[role=button]{cursor:pointer}
.lineup .slot[role=button]:hover{border-color:var(--g-line2)}
.lineup .slot.flt{border:1.5px solid var(--g-blue);background:var(--g-blue-soft)}
.lineup.choose .slot.fade{opacity:.2}
.lineup.choose .slot.elig{border:1.5px solid var(--g-blue);background:var(--g-blue-soft);animation:slotpulse 1.2s ease-in-out infinite}
.lineup .slot.pick{background:var(--g-blue);color:#0E1530}
body.hide-ratings #app.drafting .lineup .ovr{display:none}
body.hide-ratings #app.drafting .lineup .slot.on .ovr+.sn{margin-top:0}
@media (max-width:370px){.lineup .slots{gap:3px}.lineup .slots .slot .ovr.sm,.lineup .slots .slot .lempty{width:26px;height:26px;font-size:12.5px}.lineup .slots .slot .sl{font-size:9px}.lineup .slots .slot .sn{font-size:9.5px}}
/* insights bottom sheet */
.isheet-bg{position:fixed;inset:0;z-index:40;background:rgba(3,5,10,.62);display:flex;align-items:flex-end;justify-content:center;animation:fadein .18s ease both}
.isheet{width:100%;max-width:560px;max-height:min(80vh,80dvh);overflow:auto;overscroll-behavior:contain;box-sizing:border-box;background:linear-gradient(180deg,#121726,#0B0E16);border:1px solid var(--g-line2);border-bottom:0;border-radius:20px 20px 0 0;padding:4px 18px calc(20px + env(safe-area-inset-bottom));display:grid;gap:12px;box-shadow:0 -24px 60px rgba(0,0,0,.6);animation:sheetup .26s cubic-bezier(.2,.9,.3,1) both}
.shandle{appearance:none;display:grid;place-items:center;width:100%;height:24px;background:none;border:0;cursor:pointer;padding:0}
.shandle .grab{display:block;width:40px;height:4px;border-radius:2px;background:var(--g-line2)}
.shead{justify-content:space-between;align-items:center}.shead .gb.sm{min-height:36px}
body.sheet-open{overflow:hidden}
@keyframes sheetup{from{transform:translateY(100%)}to{transform:none}}@keyframes fadein{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.isheet,.isheet-bg{animation:none}}
.machine{row-gap:0}.machine .spinrow{margin-top:4px}.machine .tbdg{margin-top:2px}.machine .ldiv{margin:8px 2px 4px}.lineup{gap:4px}
.machine,.wrap:has(.dgrid) .machine{position:relative}
/* ===== 10/21 drum hybrid: live-style skinny spinner (one dark window, thin white rim, red edge arrows,
   small ↻ Team / ↻ Year chips either side of the centred conference) with the drum reels (single value + faint ghosted neighbours,
   clean decelerate, no overshoot). Conference / record / bowl area unchanged. ===== */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.drums{display:flex;flex-direction:column;cursor:default}
.machine.spinning .drums{cursor:pointer}
.dwin{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:6px;padding:5px;border-radius:12px;background:#05060B;
  border:3px solid rgba(255,255,255,.9);box-shadow:inset 0 6px 12px rgba(0,0,0,.9),inset 0 -6px 12px rgba(0,0,0,.9),0 0 0 3px rgba(5,6,11,.55)}
.drum{position:relative;height:60px;min-width:0;border-radius:8px;overflow:hidden}
.drum::after{content:"";position:absolute;inset:0;border-radius:8px;pointer-events:none;z-index:1;
  background:linear-gradient(180deg,rgba(5,6,11,.82),rgba(5,6,11,.3) 24%,transparent 36%,transparent 64%,rgba(5,6,11,.3) 76%,rgba(5,6,11,.82)),linear-gradient(170deg,rgba(255,255,255,.12),transparent 42%);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.drum .reel{height:100%;overflow:hidden;border-radius:8px;background:linear-gradient(180deg,#0b1020,#1a2342 30%,#222c52 50%,#1a2342 70%,#0b1020);mask:none;-webkit-mask:none}
.drum .reel>div{display:flex;flex-direction:column;will-change:transform;transition:none}
.drum .reel .it{height:34px;display:grid;place-items:center;padding:0 9px;box-sizing:border-box;width:100%;overflow:visible;font:800 clamp(20px,6vw,24px)/1 var(--g-cond);letter-spacing:-.02em;color:#fff;white-space:nowrap;text-shadow:0 2px 0 rgba(0,0,0,.6)}
.drum .reel.yr .it{font-family:var(--g-num);padding:0 6px}
.drum .reel .it .t{display:block;width:max-content;max-width:none;line-height:1;text-align:center}
.drum .reel .it .t.two{width:auto;white-space:normal;line-height:1.04}
.dwin .payline{position:absolute;left:0;right:0;top:50%;height:0;pointer-events:none;z-index:2}
.dwin .payline::before,.dwin .payline::after{content:"";position:absolute;top:-6px;border:6px solid transparent}
.dwin .payline::before{left:-5px;border-left-color:#F7381E}.dwin .payline::after{right:-5px;border-right-color:#F7381E}
.drum .reel>div,.machine.spinning .drum .reel>div{filter:none}   /* v3: no motion blur; reels stay crisp while scrolling */
/* v3: no pulse/scale/glow when the reels land or the card locks in */
#panel.machine.landed{animation:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 14px 34px -18px rgba(0,0,0,.9)}
#panel.machine{transition:none}
.drum .reel.stop{animation:none}
.drow .rsb{height:26px;min-height:0;padding:0 9px;font-size:11.5px}
.drow .rsb::after{inset:-9px -3px}   /* keeps a 44px touch target */
.drow .rsb:focus-visible{outline:2px solid var(--g-gold);outline-offset:2px}
.drow .rsb.used{text-decoration:line-through}
.machine .spinrow.drow{display:grid;grid-template-columns:minmax(max-content,1fr) minmax(0,auto) minmax(max-content,1fr);align-items:center;gap:8px;margin-top:8px}
.drow .rs-team{justify-self:start}.drow .rs-year{justify-self:end}
.machine .drow .mconf{min-width:0;text-align:center;white-space:normal;overflow:visible;overflow-wrap:break-word;line-height:1.15}
@media (max-width:360px){.drow .rsb{padding:0 7px;font-size:11px}.machine .drow .mconf{font-size:11px}}
@media (max-width:360px){.dwin{grid-template-columns:minmax(0,1fr) 80px}}

/* 10/21: 10-slot lineup (TE + FLEX). One row on desktop, two rows of five on phones */
@media (max-width:640px){.lineup .slots.two{grid-template-columns:repeat(5,minmax(0,1fr))!important;row-gap:5px}}
.sh-tap{font-size:12px;text-align:center;margin:4px 0 0}
/* 10/21: score-by-score playoff reveal + WIN / LOSS stamp */
.pogame{position:relative;overflow:hidden}
.pogame.live{border-color:var(--g-line2)}
.pogame .poscore{transition:color .2s}.pogame .poscore.bump{animation:poscore .35s ease-out}
@keyframes poscore{0%{transform:scale(1.25);color:var(--g-gold,#E9C46A)}100%{transform:none}}
.postamp{display:none;position:absolute;right:12px;bottom:8px;top:auto;font:800 22px/1 "DM Sans",system-ui,sans-serif;letter-spacing:.06em;padding:4px 12px;border:3px solid currentColor;border-radius:8px;transform:rotate(-8deg);opacity:.9;pointer-events:none}
.pogame.w .postamp{color:var(--g-blue)}.pogame.l .postamp{color:var(--g-hot)}
.pogame.stamped .postamp{display:block;animation:postamp .45s cubic-bezier(.2,.9,.3,1.3) both}
@keyframes postamp{0%{transform:rotate(-8deg) scale(2.4);opacity:0}100%{transform:rotate(-8deg) scale(1);opacity:.9}}
@media (prefers-reduced-motion:reduce){.pogame.stamped .postamp,.pogame .poscore.bump{animation:none}}
/* 10/21 padding pass: more air around the "Presented by Discover NIL" footer chip and the lines below it */
body.g>.foot{padding-top:20px}
.foot .presented{margin:8px 0 18px}
.foot p{margin:6px 0;line-height:1.6}
/* 10/21: team info under the spinner (real record, AP rank, bowl) and the season record read bigger */
.tbdg .bdg{height:24px;padding:0 9px;font-size:12.5px;border-radius:6px}
.machine .drow .mconf{font-size:14px}
.rhero .score{font-size:clamp(84px,28vw,120px)}
/* 10/21 (Dave): spinner card + roster strip stay pinned at the top on every width while drafting;
   the player list scrolls underneath. Opaque card + page-colour band above it (safe area included)
   so rows never show through. Same size stuck or not (no compact mode). */
#app.drafting #panel.machine{position:sticky;top:calc(env(safe-area-inset-top,0px) + 13px);z-index:6;}
/* overflow-x:hidden on html+body makes body a scroll container and kills position:sticky; clip doesn't */
html,body{overflow-x:clip}
/* band sits ABOVE the 2px gold border (absolute offsets are from the padding box, so bottom:100% used to paint over the border) */
#app.drafting #panel.machine:not(.stuck)::before{display:none}
#app.drafting #panel.machine::before{content:"";position:absolute;left:-6px;right:-6px;bottom:calc(100% + 2px);height:calc(env(safe-area-inset-top,0px) + 14px);background:var(--g-bg);pointer-events:none}
/* r2: the LOCKED IN / LIVE pill (top:-11px) is the top edge of the sticky area, fully visible */
.list .lph{min-height:560px}
.stick-sn{display:block;height:1px;margin-bottom:-1px}
/* r2 playoff simulation: bracket strip, animated scoreboards */
.pobracket{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:2px 0}
.pbr{display:grid;gap:2px;padding:7px 6px;border-radius:10px;background:var(--g-surf);border:1px solid var(--g-line);text-align:center;min-width:0;transition:border-color .3s,background .3s}
.pbrd{font-size:10px;font-weight:800;letter-spacing:.08em;color:var(--g-mute)}
.pbop{font-size:11.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pbsc{font-size:11px;color:var(--g-mute)}
.pbr.now{border-color:var(--g-gold,#E9C46A);background:rgba(233,196,106,.08);animation:slotpulse 1.4s ease-in-out infinite}
.pbr.won{border-color:rgba(124,200,255,.55)}.pbr.won .pbsc{color:var(--g-blue)}
.pbr.lost{border-color:rgba(247,56,30,.6)}.pbr.lost .pbsc{color:var(--g-hot)}
.pbr.bye .pbop,.pbr.todo .pbop,.pbr.out .pbop{color:var(--g-mute)}.pbr.out{opacity:.45}
.poskiprow{display:flex;justify-content:flex-end}
.pogame.psb{gap:8px;padding:12px 12px 10px}
.sbhead{display:flex;align-items:center;gap:8px;min-height:26px}
.sbhead .k{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sbclock{font-size:12px;font-weight:800;letter-spacing:.06em;padding:3px 8px;border-radius:6px;background:var(--g-surf3);color:var(--g-text)}
.sbclock.fin{background:var(--g-gold,#E9C46A);color:#1b1408;animation:poscore .5s ease-out}
.pogame.psb .postamp{position:static;display:none;font-size:15px;padding:3px 9px;border-width:2px;transform:rotate(-6deg)}
.pogame.psb.stamped .postamp{display:inline-block}
.pogame.psb.justin .postamp{animation:sbstamp .5s cubic-bezier(.2,.9,.3,1.3) both}
@keyframes sbstamp{0%{transform:rotate(-6deg) scale(2.6);opacity:0}100%{transform:rotate(-6deg) scale(1);opacity:1}}
.sbgrid{display:grid;gap:4px}
.sbrow{display:grid;grid-template-columns:30px minmax(0,1fr) repeat(4,20px) 34px;align-items:center;gap:6px}
.sbrow.sbhd{font-size:10px;font-weight:800;color:var(--g-mute);letter-spacing:.06em}
.sbname{font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sbname b{color:var(--g-mute);font-weight:700}.sbname i{font-style:normal;font-size:11.5px;color:var(--g-mute)}
.sbrow.you .sbname{color:var(--g-gold,#E9C46A)}
.sbq{font-size:12.5px;text-align:center;color:var(--g-mute)}
.sbt{font-size:20px;font-weight:800;text-align:right}
.sbt.bump{animation:poscore .4s ease-out}
.plogo{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;font-size:10px;font-weight:800;letter-spacing:.02em;color:#fff;background:hsl(var(--h) 55% 38%);box-shadow:inset 0 0 0 2px hsl(var(--h) 60% 60% / .6)}
.plogo.you{background:var(--g-hot);box-shadow:inset 0 0 0 2px rgba(255,255,255,.35);font-size:9px}
.wpbar{position:relative;height:16px;border-radius:999px;background:rgba(247,56,30,.35);overflow:hidden}
.wpbar i{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,#3c86d8,var(--g-blue));transition:width .6s cubic-bezier(.3,.8,.3,1)}
.wpbar span{position:absolute;inset:0;display:grid;place-items:center;font-size:9.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.6)}
.sbplay{margin:0;font-size:12.5px;min-height:18px}.sbplay b{color:var(--g-text)}
.lchg{font-style:normal;font-weight:800;font-size:10.5px;letter-spacing:.06em;color:#1b1408;background:var(--g-gold,#E9C46A);padding:1px 6px;border-radius:4px;margin-left:4px;animation:poscore .5s ease-out}
@media (prefers-reduced-motion:reduce){.pbr.now,.sbclock.fin,.pogame.psb.justin .postamp,.sbt.bump,.lchg{animation:none}.wpbar i{transition:none}}
@media (max-width:360px){.sbrow{grid-template-columns:26px minmax(0,1fr) repeat(4,17px) 30px;gap:4px}.plogo{width:26px;height:26px}.sbname{font-size:12.5px}}
.sbrow.sbhd .sbt{font-size:10px;font-weight:800;color:var(--g-mute)}
/* wr2: 9-slot strip = 5 + 4 centered, equal fixed tiles; every state keeps identical box (constant 1.5px border, state via color/shadow only) */
.slots.two{display:flex!important;flex-wrap:wrap;justify-content:center;column-gap:var(--sg,5px);row-gap:5px}
.slots.two>.slot{flex:0 0 calc((100% - 4 * var(--sg,5px)) / 5);box-sizing:border-box}
.lineup .slots.two{--sg:4px}
@media (max-width:370px){.lineup .slots.two{--sg:3px}}
.slots .slot,.lineup .slots .slot,.drawer .slots .slot,.slots .slot.flt,.slots .slot.elig,.slots .slot.pick,.slots .slot.pop,.lineup .slot.flt,.lineup.choose .slot.elig,.drawer .slot.flt,.drawer.choose .slot.elig{border-width:1.5px!important;box-sizing:border-box}
.slots .slot.pop{transform-origin:center}
.lineup.choose .slot.elig,.drawer.choose .slot.elig{animation:slotpulse2 1.2s ease-in-out infinite}
@keyframes slotpulse2{50%{box-shadow:inset 0 0 0 1px var(--g-blue)}}
.slots .slot .sl,.slots .slot .sn{width:100%}
/* 10/21 (Dave): '…' menu lives in the header flow and scrolls away with it (absolute to the page, not fixed),
   so it never floats over the sticky spinner card; the menu panel anchors the same way. */
body.g button.menu-btn,.menu-pop{position:absolute}
body.g button.menu-btn{z-index:5}
/* 10/21 (Dave) footer spacing pass: more air above, between the lines, and at the bottom (safe area incl.) */
body.g>.foot{padding-top:36px;padding-bottom:calc(36px + env(safe-area-inset-bottom))}
.foot .presented{margin:0 0 16px}
.foot p{margin:0 0 11px;line-height:1.55}
.foot p:last-child{margin-bottom:0}
/* playoffs end: buttons clear the "Knocked out by ..." line */
#pofinal .actions{margin-top:16px}
/* the chip link carries .foot a margin:-14px 0, so 42px here = 28px visible gap */
.foot .presented{margin-bottom:42px}
/* 10/21: no iOS double-tap zoom on fast taps (pinch zoom still works; viewport meta unchanged) */
html,button,a,.slot,.prow,.machine,.list{touch-action:manipulation}
/* 10/21 Utah 2021 bug: a long nowrap bowl tag ("L Rose Bowl Game Pres. By Capital One Venture X 45-48") set the
   spinner card's grid track to its min-content width, so reels + roster grew past the card and off the right edge.
   Card children may shrink, and the tag wraps inside the card instead. */
.machine>*{min-width:0}
.tbdg .bdg{max-width:100%;white-space:normal;height:auto;min-height:24px;line-height:1.25;padding-top:3px;padding-bottom:3px;text-align:center;box-sizing:border-box}
/* bottom-of-draft tools (replaces the header "…" menu) */
.gtools{display:grid;gap:14px;margin:28px 0 8px;padding-top:20px;border-top:1px solid var(--g-line)}
.gtools .setrow{justify-content:space-between;align-items:center}
.gtools .setrow label{display:grid;gap:2px}
.gtbtns{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.gtbtns .gb{min-height:46px;width:100%}
/* no header menu any more: no space reserved for it, title shows in full (still never wider than the viewport) */
body.g button.menu-btn,.menu-pop{display:none!important}
.dnil-bar{padding-right:calc(16px + env(safe-area-inset-right))!important;padding-left:calc(16px + env(safe-area-inset-left))!important}
.dnil-bar .gname{overflow:visible;text-overflow:clip;white-space:nowrap;font-size:clamp(17px,6vw,26px)}
/* header "BY [Discover NIL]": uppercase BY has no descenders, so its ink sits ~.25em above the line-box centre
   that flex centring uses; lift the logo by the same amount so both ink centres line up (all widths, hub + game) */
/* bullet: centre on the uppercase cap-height middle (measured 2.2px low) and even out the trailing letter-spacing gap */


/* 10/21 (Dave): header is just the title + COLLEGE LEGENDS (no "BY Discover NIL"), centred; title never clipped, it scales */
.dnil-bar .gname{white-space:nowrap;font-size:clamp(17px,5.8vw,26px)}
@media (min-width:720px){.dnil-bar .gname{font-size:28px}}
.brandlock .btxt{justify-items:center;text-align:center}
/* footer on every screen, draft included (below Restart / Home) */
body.g.drawer-on>.foot,body.g.is-drafting>.foot{display:block}
/* ---- players: your stats + public boards (10/21) ---- */
.ystats,.boards{display:grid;gap:12px;padding:16px}
.ystats .row,.boards .row{display:flex;justify-content:space-between;align-items:center;gap:10px}
.ysub{font-size:12px}
.ygrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.ygrid>div{display:grid;gap:2px;justify-items:center;padding:10px 4px;border-radius:12px;background:var(--g-surf2);border:1px solid var(--g-line);text-align:center}
.ygrid b{font-size:20px;line-height:1.1}.ygrid small{font-size:11px;color:var(--g-mute);line-height:1.2}
.ynote{font-size:12.5px;line-height:1.5;margin:0}.ywho{font-size:12.5px;margin:0}
.linkbtn{appearance:none;background:none;border:0;padding:6px 2px;margin:-6px 0;font:inherit;color:var(--g-blue);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.yname{font-weight:700;color:var(--g-text);text-decoration:none;font-size:14px}
.ymute{font-size:12px;color:var(--g-mute);justify-self:start}
.ylink{display:grid;gap:8px;padding-top:12px;border-top:1px solid var(--g-line)}
.ylbtns{display:flex;flex-wrap:wrap;gap:8px}.ylbtns .gb{flex:1 1 30%;min-height:42px}
.yqr{display:grid;justify-items:center;gap:6px;padding:12px;background:#fff;border-radius:12px;justify-self:center}
.yqr svg{width:180px;height:180px;display:block}.yqr small{color:#333}
#yflash{font-size:12px;margin:0;min-height:16px}
.yspark{display:flex;align-items:flex-end;gap:2px;height:56px;padding:6px;border-radius:10px;background:var(--g-surf2)}
.yspark i{flex:1;height:var(--v);min-height:2px;border-radius:2px 2px 0 0;background:var(--g-blue)}
.btabs{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:3px;border-radius:12px;background:var(--g-surf2);border:1px solid var(--g-line)}
.btab{appearance:none;border:0;background:none;color:var(--g-mute);font:inherit;font-size:12.5px;font-weight:700;min-height:38px;border-radius:9px;cursor:pointer;padding:0 4px}
.btab.on{background:var(--g-surf);color:var(--g-text);box-shadow:0 0 0 1px var(--g-line2)}
.blist{list-style:none;margin:0;padding:0;display:grid}
.brow{display:grid;grid-template-columns:28px minmax(0,1fr) auto 56px;gap:8px;align-items:center;padding:9px 6px;border-top:1px solid var(--g-line)}
.brow:first-child{border-top:0}.brow .bn{color:var(--g-mute);font-size:13px;text-align:center}
.brow .bnm{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brow .bx{font-size:12px;text-align:right}
.brow.you{background:var(--g-blue-soft);border-radius:10px;border-top-color:transparent;box-shadow:inset 0 0 0 1px var(--g-blue)}
.brow.you+.brow{border-top-color:transparent}
.brow em{font-style:normal;font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--g-blue);margin-left:4px}
.bnote{margin:0;padding:10px 14px;border-radius:12px;background:var(--g-blue-soft);color:var(--g-text);font-size:14px}
.jhint{font-size:12px;line-height:1.45}.jbtns{display:flex;margin-top:10px}.jbtns .gb{flex:1}
a.card.glb{display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:center;text-decoration:none;color:var(--g-text);padding:16px}
a.card.glb .gtitle{grid-column:1}a.card.glb .mute{grid-column:1;font-size:13px}a.card.glb .lbchev{grid-column:2;grid-row:1/3;font-size:24px;color:var(--g-mute)}
@media (min-width:720px){.ygrid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.yqr[hidden]{display:none}
.ygrid>div:last-child:nth-child(3n+1){grid-column:1/-1}
@media (min-width:720px){.ygrid>div:last-child:nth-child(3n+1){grid-column:auto}.ygrid>div:last-child:nth-child(4n+1){grid-column:1/-1}}
