/* Unslop pass (Joseph, 2026-10-29): flat, restrained, sentence case, one type family with tabular numbers.
   Loaded last on every page, so it overrides the older layers without touching their rules or any data. */
/* Design tokens (deslop pass 2): tune the whole look from here.
   Spacing is a 4/8 scale, two radii (card, control), one type scale, flat surfaces, one accent. */
:root{
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px; --sp-7:48px;
  --gap:var(--sp-5); --gutter:var(--sp-4); --pad-card:var(--sp-5); --pad-card-s:var(--sp-4);
  --r-card:14px; --r-inner:10px; --r-ctl:8px; --r-dot:50%;
  --fs-title:28px; --fs-h:18px; --fs-sub:15px; --fs-body:14px; --fs-sm:12px; --fs-xs:11px;
  --fw-title:650; --fw-h:600; --fw-body:400; --fw-label:500;
  --lh-tight:1.15; --lh-body:1.5;
  --c-bg:#0B0D10; --c-surface:#13161B; --c-raised:#191D23; --c-border:rgba(255,255,255,.08); --c-border-2:rgba(255,255,255,.14);
  --c-text:#EDEFF2; --c-text-2:#A3A9B3; --c-text-3:#737A85;
  --c-accent:#8AB4FF; --c-accent-ink:#0B0D10;
  --ic-stroke:1.5;
}
:root{
  --font:Geist,-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",system-ui,sans-serif;
  --disp:var(--font);
  --bg:var(--c-bg); --core:var(--c-surface); --core-2:var(--c-surface);
  --hair:var(--c-border); --hair-2:var(--c-border);
  --ink:var(--c-text); --ink-2:var(--c-text-2); --ink-3:var(--c-text-3);
  --s1:var(--sp-1); --s2:var(--sp-2); --s3:var(--sp-3); --s4:var(--sp-4); --s5:var(--sp-5); --s6:var(--sp-6);
}
/* 8. one neo-grotesque family, tabular numerals everywhere */
html,body,body *{font-family:var(--font)!important;font-variant-numeric:tabular-nums}
svg text,svg tspan{font-family:var(--font)!important}
/* 4. sentence case: no forced capitals, no tracked-out labels */
body *,body *::before,body *::after{text-transform:none!important;letter-spacing:0!important}
h1,h2{letter-spacing:-.01em!important}
/* 1. flat surfaces: no glow, bloom, grain, blur or shadows */
body::before,body::after{display:none!important}
body{background:var(--bg)!important}
body *,body *::before,body *::after{box-shadow:none!important;text-shadow:none!important}
body *:not(.pc-root):not(.sx):not([class*="scrim"]){backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
svg *{filter:none!important}
/* no gradient fills; selects keep their arrow, and the three legend ramps keep their scale (they encode data) */
body *:not(select):not(.ramp):not(.dots):not(.sw):not(.pd-sel select),body *::before,body *::after{background-image:none!important}
/* 2. one card surface with a 1px hairline */
.core,.shell>.core,.pd-sec,.kpi,.gm,.mk,.pc-core,#detail,.sheet{background-color:var(--core)!important;border-color:var(--hair)!important}
.shell{background:transparent!important;border:0!important;padding:0!important}
#nav,.nav,.bnav,.bn{background-color:var(--bg)!important;border-color:var(--hair)!important}
/* 7. badges: colour only means something (Joseph, 2026-10-29). Green = good for the Over (a cleared count of 7+ of 10), red = bad (3 or fewer),
   everything else neutral grey. A solid tint with bright text, no outline and no glow. */
.pill{background-color:var(--green-dim)!important;color:var(--green)!important;border:0!important;font-weight:600!important;padding-left:10px!important;padding-right:10px!important}
.pill.under,.pill.miss,.pill.dn,.pill.neg,.pill.PASS{background-color:var(--red-dim)!important;color:var(--red)!important}
.pill.pass,.pill.amb,.pill.hot,.pill.watch,.pill.nw,.pill.plain,.pill.sp,.pill.WATCH,.pill[class*="rk-"]{background-color:rgba(255,255,255,.07)!important;color:var(--ink-2)!important;font-weight:500!important}
.pill.up,.pill.LOOK{background-color:var(--green-dim)!important;color:var(--green)!important}
/* 6. charts: dotted horizontal gridlines only, no axis line, grey bars unless they mean something */
.pd-chart line.gl,svg line.gl{stroke:rgba(255,255,255,.14)!important;stroke-dasharray:1 3!important}
.pd-chart line.base{display:none}
.pd-chart text.yl{fill:var(--ink-3);font-size:10px}
.pd-chart polyline.sl,.pd-chart path.sl{stroke-dasharray:none!important;stroke:var(--ink)!important;stroke-width:1.6!important;fill:none;stroke-linecap:round;animation:pcfade .9s var(--ease) both}
.pd-chart rect.szn{fill:rgba(255,255,255,.02)!important}
/* Geist is wider than the old condensed display face: big display numbers step down so they keep their box */
.ps-v{font-size:40px!important;line-height:1!important}
.ps-pop:first-child .ps-v{font-size:clamp(48px,6.5vw,88px)!important}

/* ---- deslop pass 2: per-component spacing, type, radius, icons, all from the tokens ---- */
/* 5. icons: one thin stroke style, inherits text colour */
.ui-ic{display:inline-block;vertical-align:-1px;fill:none;stroke:currentColor;stroke-width:var(--ic-stroke);stroke-linecap:round;stroke-linejoin:round;flex:none}
/* 3. type hierarchy */
body{font-size:var(--fs-body);line-height:var(--lh-body);color:var(--c-text)}
.hero h1,.hc h1{font-size:var(--fs-title)!important;font-weight:var(--fw-title)!important;line-height:var(--lh-tight)!important}
.card-head h2,.pd-sec h3,.scv2-h{font-size:var(--fs-h)!important;font-weight:var(--fw-h)!important;line-height:var(--lh-tight)!important}
.pd-hd h2{font-size:var(--fs-title)!important;font-weight:var(--fw-title)!important;line-height:var(--lh-tight)!important}
.card-head small,.pd-kick,.hist-note,.mdl-note,.pd-note{font-size:var(--fs-sm)!important;color:var(--c-text-3)!important}
.hd,.tgh,.r.hd,.pd-case h4{font-size:var(--fs-xs)!important;font-weight:var(--fw-label)!important;color:var(--c-text-3)!important}
.tr .nm{font-size:var(--fs-sub);font-weight:var(--fw-label)}
.ck,.ck em{font-size:var(--fs-sm)!important}
/* 4. radius: cards one value, inner tiles one value, every chip/button/segment one value */
.core,.shell,.pc-shell,.pc-core,.pd-sec.scv2,.sheet,#detail{border-radius:var(--r-card)!important}
.kpi,.tg,.mo,.pd-readout,.pd-nums>div,.pd-nums,.scv2-court,.game,.game.all{border-radius:var(--r-inner)!important}
.seg,.seg button,.pd-seg,.pd-vw,.pd-vw button,.tb,.nav-links a,.nl,.pd-lnk,.pd-sec-pick,.pmore,.pb-add,.scv2-v,.scv2-v button{border-radius:var(--r-ctl)!important}
.seg button[aria-pressed="true"],.seg button.on,.seg .on,.pd-vw .on{background-color:var(--c-raised)!important;color:var(--c-text)!important;box-shadow:inset 0 -2px 0 var(--c-accent)!important}
:focus-visible{outline:2px solid var(--c-accent)!important;outline-offset:2px}
/* 2. spacing: per component on the 4/8 grid */
.hero.hero-c{padding:var(--sp-2) var(--sp-2) 0!important;gap:var(--sp-5)!important;margin-bottom:var(--sp-5)!important}
.hc{gap:var(--sp-2) var(--sp-3)!important}
.strip{gap:var(--sp-2)!important;padding:var(--sp-2) var(--sp-1)!important}
.game{padding:var(--sp-2) var(--sp-3)!important}
.view-row{gap:var(--sp-4)!important;margin-bottom:var(--sp-5)!important}
.bento{gap:var(--gap)!important}
.core.plays{padding:var(--pad-card)!important}
.card-head{gap:var(--sp-1) var(--sp-3)!important;margin-bottom:var(--sp-4)!important}
.mk-row{padding:var(--sp-2) 0!important;gap:var(--sp-2)!important;margin-bottom:var(--sp-4)!important}
.hd{padding:0 0 var(--sp-3)!important}
.tr{padding:var(--sp-4) 0!important}
.tr .c>.pill{white-space:nowrap}
.pmore{margin-top:var(--sp-4)!important;padding:var(--sp-2) var(--sp-3)!important}
.hist-note,.mdl-note{margin-top:var(--sp-3)!important}
/* player card */
.pc-shell{padding:var(--sp-1)!important}
.pc-core.pd{padding:var(--pad-card)!important}
.pd-head{padding:0 var(--sp-7) var(--sp-5) 0!important;gap:var(--sp-4)!important}
.pd-mk{gap:var(--sp-2)!important;margin-bottom:var(--sp-3)!important}
.pd-nums{gap:var(--sp-2)!important;padding:var(--sp-2)!important;margin-bottom:var(--sp-4)!important}
.pd-nums>div{padding:var(--sp-3)!important}
.pd-links{margin-bottom:var(--sp-4)!important}
.pd-seg{margin-bottom:var(--sp-5)!important}
.pd-blk>.pd-sec+.pd-sec,.pd-blk>*+*{margin-top:var(--sp-6)}
.pd-sh{gap:var(--sp-3)!important;margin-bottom:var(--sp-4)!important}
.pd-readout{padding:var(--sp-3) var(--sp-4)!important;gap:var(--sp-1) var(--sp-3)!important;margin-top:var(--sp-3)}
.pd-case{gap:var(--sp-4)!important}
.ck{padding:var(--sp-2) 0!important}
.mo{padding:var(--sp-4)!important}
.kpis{gap:var(--sp-2)!important}
.kpi{padding:var(--sp-3)!important}
.tg{padding:var(--sp-2) var(--sp-3)!important}
.pd-sec.scv2{padding:var(--pad-card)!important}
.scv2-t .r:not(.hd){padding:var(--sp-2)!important}
@media (max-width:640px){
  .core.plays,.pc-core.pd,.pd-sec.scv2{padding:var(--pad-card-s)!important}
  .pd-head{padding:0 var(--sp-7) var(--sp-4) 0!important}
  .hero h1,.hc h1,.pd-hd h2{font-size:24px!important}
  .bento{gap:var(--sp-4)!important}
}

/* deploy-together: an empty team chip keeps no gap, and the board header sits close to its first row (phones had ~70px of dead space above it) */
.team-chip:empty{display:none}
.plays .hd{padding-bottom:var(--sp-1)!important}

/* ---- iPhone pass (Joseph, 2026-10-29: "Focus on the iPhone version"): tab bar, strip, tap targets, type floor. Layout only; the player card is untouched. ---- */
@media (max-width:767px){
  /* the tab bar is docked, flat and opaque with a 1px top border; the home-indicator area is its own padding, and the page leaves room under it */
  .tabbar,.rd3 .tabbar{left:0!important;right:0!important;bottom:0!important;transform:none!important;width:100%!important;max-width:none!important;border:0!important;border-top:1px solid var(--c-border-2)!important;border-radius:0!important;background:var(--c-bg)!important;padding:var(--sp-1) var(--sp-2) calc(var(--sp-1) + env(safe-area-inset-bottom,0px))!important}
  .tabbar a,.rd3 .tabbar a{min-height:48px;font-size:12px!important;border-radius:var(--r-ctl)!important}
  .tabbar a[aria-current],.rd3 .tabbar a[aria-current]{background-color:var(--c-raised)!important;color:var(--c-text)!important}
  .rd3 main,main{padding-bottom:calc(88px + env(safe-area-inset-bottom,0px))!important}
  /* the first block clears the status bar */
  .rd3 main,main{padding-top:calc(var(--sp-4) + env(safe-area-inset-top,0px))!important}
  /* the selected game is a solid fill, not a glow */
  .game[aria-pressed="true"],.game.on{background-color:var(--c-raised)!important;border-color:var(--c-accent)!important}
  /* tap targets 44px */
  .brand{display:inline-flex;align-items:center;min-height:44px}
  .tb,.nav .tb,.hc-q,.pq-x,.pl-more,.rd3-more,.tab,summary,.rd3 .nav .rd3-season button,.rt-nm{min-height:44px!important}
  .tb,.hc-q,.pq-x{min-width:44px!important}
  main:not(.pg-research) :is(.seg,.dayseg) button{min-height:44px!important;min-width:44px!important}
  .dayseg{gap:var(--sp-2)}
  .rt-nm{display:flex;align-items:center}
  /* nothing under 12px outside the player card */
  main:not(.pg-research) :is(.s1,.dl-h span,.dl-r .c,small,em,i,.eyebrow,.meta span,.mk-s,.hd>span,.hd .c,.j,.plays .nm span,.dg-h,.dg-p,.dg-sub,.rt-pos,.l,.nav span,.row .num):not(.pc-core *){font-size:12px!important}
}

/* ---- Best looks tonight (top of the Props board): one line per look, keywords and ten dots ---- */
.bl .card-head{margin-bottom:var(--sp-2)!important}
.bl-r{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;column-gap:var(--sp-3);min-height:56px;padding:var(--sp-2) 0;border-top:1px solid var(--c-border);cursor:pointer}
.bl-r:first-child{border-top:0}
.bl-r .who{min-width:0}
.bl-r .nm b{font-size:var(--fs-sub);font-weight:var(--fw-label);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bl-r .nm span{display:block;color:var(--c-text-3);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bl-pk{text-align:center;line-height:1.25}
.bl-pk b{display:block;font-weight:600;color:var(--green)}
.bl-pk span{display:block;color:var(--c-text-3);font-size:var(--fs-sm)}
.bl-dots{display:flex;gap:2px}
.bl-dots i{width:5px;height:12px;border-radius:2px;background:rgba(255,255,255,.14)}
.bl-dots i.on{background:var(--green)}
.bl-tag{min-width:58px;text-align:center;padding:3px 8px;border-radius:var(--r-ctl);background:rgba(255,255,255,.07);color:var(--c-text-2);font-size:var(--fs-sm);font-weight:500;white-space:nowrap}
@media (max-width:767px){.bl-r{grid-template-columns:minmax(0,1fr) auto auto;row-gap:2px}.bl-tag{display:none}.bl-dots i{width:4px}}

/* ---- Player card: verdict first, four key numbers, detail behind a tap (Joseph, 2026-10-29). Green = good for the Over, red = bad, the rest neutral. ---- */
.pd-verdict{margin:var(--sp-4) 0 var(--sp-3);padding:var(--sp-4);border:1px solid var(--c-border);border-radius:var(--r-inner);background:var(--c-surface)}
.pd-verdict.pos{border-color:rgba(61,220,151,.45)}.pd-verdict.neg{border-color:rgba(232,119,111,.4)}
.vd-top{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}
.vd-tag{padding:3px 10px;border-radius:var(--r-ctl);background:rgba(255,255,255,.07);color:var(--c-text-2);font-size:var(--fs-sm);font-weight:600}
.pd-verdict.pos .vd-tag{background:var(--green-dim);color:var(--green)}.pd-verdict.neg .vd-tag{background:var(--red-dim);color:var(--red)}
.vd-pick{font-size:var(--fs-h);font-weight:650;color:var(--c-text)}
.vd-row{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-3)}
.vdots{display:inline-flex;gap:3px}.vdots i{width:7px;height:16px;border-radius:2px;background:rgba(255,255,255,.14)}.vdots i.on{background:var(--green)}
.vd-n{color:var(--c-text-2);font-size:var(--fs-sm)}
.vd-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-3)}
.vd-chip{display:inline-flex;gap:6px;align-items:center;padding:3px 10px;border-radius:var(--r-ctl);background:rgba(255,255,255,.07);color:var(--c-text-2);font-size:var(--fs-sm)}
.vd-chip b{font-weight:600;color:var(--c-text)}.vd-chip.pos{background:var(--green-dim);color:var(--green)}.vd-chip.pos b{color:var(--green)}.vd-chip.neg{background:var(--red-dim);color:var(--red)}.vd-chip.neg b{color:var(--red)}
.pd-k2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2);margin:0 0 var(--sp-4)}
.pd-k2>div{padding:var(--sp-3);border:1px solid var(--c-border);border-radius:var(--r-inner);background:var(--c-surface);min-width:0}
.pd-k2 .lab{display:block;color:var(--c-text-3);font-size:var(--fs-sm)}
.pd-k2 b{display:block;margin-top:2px;font-size:26px;line-height:1.1;font-weight:650;color:var(--c-text)}
.pd-k2 .pos b{color:var(--green)}.pd-k2 .neg b{color:var(--red)}
.pd-k2 small{display:block;margin:2px 0 var(--sp-2);color:var(--c-text-3);font-size:var(--fs-sm)}
.pd-k2 .vdots i{width:5px;height:12px}
.mv{display:block;height:4px;border-radius:2px;background:rgba(255,255,255,.1);overflow:hidden}.mv u{display:block;height:100%;background:var(--c-text-3)}.mv.pos u{background:var(--green)}.mv.neg u{background:var(--red)}
.pd-detail{margin-top:var(--sp-4);border-top:1px solid var(--c-border)}
.pd-detail>summary{display:flex;align-items:center;justify-content:space-between;min-height:48px;cursor:pointer;list-style:none;font-weight:600}
.pd-detail>summary::-webkit-details-marker{display:none}
.pd-detail>summary .h{color:var(--c-text-3);font-weight:400;font-size:var(--fs-sm)}
.pd-detail>summary::after{content:"+";margin-left:var(--sp-3);color:var(--c-text-3)}.pd-detail[open]>summary::after{content:"–"}
.pd-lead{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin:var(--sp-2) 0}

/* ---- phone pass 2 (Joseph, 2026-10-29: "Empty space again", "I wanna see the line of the Sportsbook", ladder overlaps) ---- */
@media (max-width:767px){
  /* title row: Props, the slate line and the ? sit on one row; no 44px orphan row under the title */
  .hero .hc{display:grid!important;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:var(--sp-2);row-gap:0}
  .hero .hc .hc-m{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .hero .hc .hc-q{justify-self:end;margin:0}
  .strip-wrap .dayseg{justify-content:flex-start}
  /* pinned slate: one compact, opaque row (the day filter collapses), no shadow, edge to edge */
  .strip-stuck .strip-wrap{left:0!important;right:0!important;border-radius:0!important;border:0!important;border-bottom:1px solid var(--c-border-2)!important;box-shadow:none!important;background:var(--c-bg)!important;padding:4px var(--sp-2)!important}
  .strip-stuck .strip-wrap .dayseg{display:none!important}
  .strip-stuck .strip-wrap .game{width:112px;padding:4px 8px}
  .strip-stuck .strip-wrap .game .meta{display:none}
  .strip-stuck .strip-wrap .game.all{width:52px}
  /* Props board: the sportsbook line and price always show; Fair moves to the card. :is(main,#pm-win) carries id weight so this beats the older nth-child hides in nba-model.css and nba-redesign.css */
  :is(main,#pm-win) .plays.pm{--cols:minmax(0,1fr) 22px 56px 58px 38px!important;--g:6px!important}
  :is(main,#pm-win) .plays.pm .hd>.book,:is(main,#pm-win) .plays.pm .tr>.book{display:block!important}
  :is(main,#pm-win) .plays.pm .hd>[data-sk="l"],:is(main,#pm-win) .plays.pm .tr>.line{display:block!important}
  :is(main,#pm-win) .plays.pm .hd>.fair,:is(main,#pm-win) .plays.pm .tr>.fair{display:none!important}
  :is(main,#pm-win) .plays.pm .hd>.book{font-size:0!important;overflow:hidden}
  :is(main,#pm-win) .plays.pm .hd>.c:not(.who),:is(main,#pm-win) .plays.pm .tr>.c{text-align:center!important;justify-content:center!important}
  :is(main,#pm-win) .plays.pm .tr>.book{display:flex!important;align-items:center}
  :is(main,#pm-win) .plays.pm .tr>.line{font-weight:700;line-height:1.15}
  :is(main,#pm-win) .plays.pm .tr>.line .j{display:block!important;margin:2px 0 0!important;font-size:11px!important;font-weight:500;color:var(--c-text-3)}
  :is(main,#pm-win) .plays.pm .hd>[data-sk]{position:relative}
  :is(main,#pm-win) .plays.pm .hd>[data-sk]::after{position:absolute;top:50%;transform:translateY(-50%);margin-left:1px}
  :is(main,#pm-win) .plays.pm .tr>.book img,:is(main,#pm-win) .plays.pm .tr>.book span{width:20px!important;height:20px!important;border-radius:6px!important;font-size:9px}
  /* 3PM ladders: name row = name | 3PA (L10 over szn) | Def rank pill; nothing shares a cell */
}
@media (max-width:560px){
  .lb-r .who{grid-column:1/-1!important;grid-row:1}
  .lb-r .att{grid-column:1/3!important;grid-row:2!important;margin:0!important;text-align:left!important;display:flex;align-items:baseline;gap:var(--sp-2)}
  .lb-r .att b{display:inline!important}.lb-r .att small{display:inline!important}
  .lb-r .lgr{grid-column:3!important;grid-row:2!important;justify-self:end;display:flex}
  .lb-r .lgr .pill{white-space:nowrap}
  .lb-r .rc{grid-row:3}
  .lb .rc .k,.lb .rc b,.lb .rc em{white-space:nowrap}
}
/* Best looks: the line is the value (bold), the price is a smaller neutral number beside it; columns line up across rows */
.bl-r{grid-template-columns:minmax(0,1fr) 96px 64px auto}
.bl-pk{text-align:right}
.bl-ln{display:flex;justify-content:flex-end;align-items:baseline;gap:6px;white-space:nowrap}
.bl-ln b{display:inline!important;font-weight:700;color:var(--c-text)!important;font-size:var(--fs-sub)}
.bl-ln em{font-style:normal;color:var(--c-text-3);font-size:var(--fs-sm);font-weight:500}
.bl-pk .bl-pj{display:block;color:var(--c-text-3);font-size:var(--fs-sm)}
.bl-dots{justify-content:flex-end}
.lrk{font-size:var(--fs-sm)}
@media (max-width:767px){.bl-r{grid-template-columns:minmax(0,1fr) 84px 54px;column-gap:var(--sp-2)}}
