/* NBA page polish (order 166, Iris, 14 Oct 2026; Chris: "the pages work as they are. just make them look really nice").
   Looks only: margins, spacing, type, borders, radii, header bands, focus, touch size, reduced motion. Every tab, control,
   column, number, handler and semantic colour (heat cells, value colours, team badges, DK green / FD blue) is the page's own.
   Scope: the tab content only. Not the site header (order 167), not the Build dialog, not the Data tab's panels (order 159's
   assets/nba-admin-data.js). Inline paint is overridden only where it is chrome, never where it carries meaning.
   The tab content is <main class="sp-app-main">, except Minutes (div.sp-app-main) and On/Off (div.ct) which render beside it.
   The frame (1) leaves stream mode to its own sheet; every later rule skips the Data tab (data-stream-tab="data" on the root,
   which the page sets on every tab), so 159 keeps its panels as they are. :where() adds no specificity. */

/* 1. Frame: NFL's 16px side margin on desktop; phones keep the shared 8px. */
@media (min-width:601px){
  body[data-sp-ui="nba"] #root > div:not(.sp-stream-mode) > main.sp-app-main{padding:24px 16px 32px!important}
  body[data-sp-ui="nba"] #root > div:not(.sp-stream-mode) > div.sp-app-main{box-sizing:border-box;width:100%;max-width:1600px;margin:0 auto;padding:24px 16px 32px}
  body[data-sp-ui="nba"] #root > div:not(.sp-stream-mode) > div.ct{padding-top:24px;padding-bottom:32px}
}
/* Minutes and On/Off leave main empty: its padding was a 40px gap above their titles. */
body[data-sp-ui="nba"] #root > div:not(.sp-stream-mode) > main.sp-app-main:empty{padding:0!important;min-height:0}

/* 2. Page heading row: title, platform switch and tools on one aligned line. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) :is(h2.fd.t2x,h2.fd.t2x.to4){font-size:32px;line-height:1.15;letter-spacing:.02em;margin:0}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) .flex.ac.jb.fw:has(> * > h2.fd.t2x, > h2.fd.t2x){row-gap:10px;column-gap:16px;align-items:center}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) .flex.ac.jb.fw.mb4:has(h2.fd.t2x){margin-bottom:4px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) .flex.ac.jb.fw.mb2:has(h2.fd.t2x){margin-bottom:0}
/* The tab containers are block boxes (their .g4/.g3 gap never applied), so the title row sat on the table. 12px between blocks;
   an existing bottom margin (mb4) still wins where it is larger. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(main.sp-app-main > .fc:not(.flex),#root > div > div.fc:not(.flex)) > * + *{margin-top:12px}
/* Meta beside or under a title ("582 players", "Updated …", "PBPStats-style …"): quiet DM Sans, not mono. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) .flex:has(> h2.fd.t2x) > :is(span,p).txs,
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) div:has(> h2.fd.t2x) > p.txs,
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) .flex.jb:has(> h2.fd.t2x) > span.ts5{font-family:'DM Sans',system-ui,sans-serif!important;font-size:12.5px!important;letter-spacing:0;color:var(--sp-muted,#93a6bf)!important;font-variant-numeric:tabular-nums}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main div:has(> h2.fd.t2x) > p.txs{margin-top:2px}

/* 3. Text fields and selects outside tables: one height, one face, the site's input paint. Widths stay the page's. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) :is(input:not([type]),input[type=text],input[type=search],input[type=date],input[type=number],select):not(td *):not(.edit-input):not(.tlg){
  font-family:'DM Sans',system-ui,sans-serif!important;letter-spacing:0!important;color:var(--sp-text,#e8eef7)!important;
  background:var(--sp-input,#0b1624)!important;border:1px solid var(--sp-control-line,#52677f)!important;border-radius:8px!important;
  box-sizing:border-box;line-height:1.3}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) :is(input:not([type]),input[type=text],input[type=search],input[type=date],input[type=number],select):not(td *):not(.edit-input):not(.tlg):focus{border-color:var(--sp-sport,#fcb040)!important}
@media (min-width:601px){
  body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) :is(input:not([type]),input[type=text],input[type=search],input[type=date],input[type=number],select):not(td *):not(.edit-input):not(.tlg){font-size:13px!important;height:36px;padding:0 12px!important}
}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) select:not(td *){padding-right:28px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) input[type=number]:not(td *):not(.edit-input):not(.tlg){padding-left:6px!important;padding-right:4px!important}
/* One height for the controls in a page's title row on desktop (the field's 36px); the DK/FD switch keeps its own. */
@media (min-width:601px){
  body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) .flex.ac.jb.fw:has(h2.fd.t2x) .btn:not(.nav-toggle *):not(td *){min-height:36px}
}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) input::placeholder{color:var(--sp-muted,#93a6bf);opacity:1;letter-spacing:0}
/* The Search tab's one field is the screen's hero: larger, calm border, gold when in use. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main input.tlg{font-family:'DM Sans',system-ui,sans-serif!important;font-size:18px!important;letter-spacing:0!important;
  height:56px;border-radius:12px!important;border:1px solid var(--sp-control-line,#52677f)!important;background:var(--sp-input,#0b1624)!important;color:var(--sp-text,#e8eef7)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main input.tlg:focus{border-color:var(--sp-sport,#fcb040)!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .fc.g4:has(> input.tlg){gap:12px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .fc.g4:has(> input.tlg) > h2{margin-bottom:4px}

/* 4. Buttons: one with no role class read as a white system button on the dark page; it gets the secondary paint. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) .btn:not(.bs):not(.bp):not(.ba):not(.blk):not(.bjoin):not([style*="background"]){
  background:var(--sp-raised,#172638);color:var(--sp-secondary,#b5c2d4);border:1px solid var(--sp-control-line,#52677f)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) .btn:not(.bs):not(.bp):not(.ba):not(.blk):not(.bjoin):not([style*="background"]):hover{
  background:var(--sp-hover,#1b3046);color:var(--sp-text,#e8eef7);border-color:var(--sp-focus,#8bdeff)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) .btn{font-family:'DM Sans',system-ui,sans-serif;font-weight:600;letter-spacing:0;border-radius:6px;justify-content:center}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) .nav-toggle{border:1px solid var(--sp-line,#2a3c51);border-radius:8px!important}

/* 5. Data tables: the site's header band, DM Sans tabular figures (NFL's approved table), quieter row rules. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) :is(.gl,.gc).rx:has(> .ox > table){border-radius:10px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) table thead :is(th.bb5,th){background-color:var(--sp-input,#0b1624);border-bottom:1px solid var(--sp-line,#2a3c51)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) table thead th.fd{font-family:'DM Sans',system-ui,sans-serif!important;font-size:11.5px!important;font-weight:600!important;letter-spacing:.035em!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) :is(tbody.fm,tbody .fm,td.fm){font-family:'DM Sans',system-ui,sans-serif;font-variant-numeric:tabular-nums}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) tbody tr:is(.bt,[style*="border-bottom"]){border-color:rgba(147,166,191,.14)!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) tbody tr:hover > td{background-color:rgba(73,200,255,.045)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) :is(table[style*="JetBrains Mono"],td[style*="JetBrains Mono"]){font-family:'DM Sans',system-ui,sans-serif!important;font-variant-numeric:tabular-nums}
/* The player's name leads each row. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main tbody td:first-child[style*="DM Sans"]{font-weight:600!important;color:var(--sp-text,#e8eef7);font-size:13.5px}
/* Team badges: same colours, set in the UI face at badge size instead of bold mono. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main td span.rd.txs.fw6{font-family:'DM Sans',system-ui,sans-serif;font-size:11px;font-weight:700;letter-spacing:.04em;line-height:16px;padding:2px 7px!important;border-radius:5px;display:inline-block;min-width:36px;text-align:center}
/* The one team colour light ink cannot sit on: San Antonio silver (#C4CED4). The badge keeps its colour; its letters go dark
   (contrast 1.4:1 -> 11.4:1). Text only; no other team badge changes. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) span:is([style*="background: rgb(196, 206, 212)"],[style*="background:#C4CED4" i],[style*="background: #C4CED4" i]){color:#0b1624!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main td > span[style*="border-radius: 4px"][style*="font-weight: 600"]{font-family:'DM Sans',system-ui,sans-serif;letter-spacing:.04em;border-radius:5px!important;display:inline-block;min-width:34px;text-align:center}
/* Minutes: the editable projection keeps its colour and box; the box gets the site's input paint. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main td input:not([type=checkbox]){font-family:'DM Sans',system-ui,sans-serif!important;font-variant-numeric:tabular-nums;border-radius:5px!important;border-color:var(--sp-line,#2a3c51)!important;background:var(--sp-input,#0b1624)!important}

/* 6. Matchups: the game header is calmer (no glow on the abbreviations), the team bands keep their colours. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gc > .gto{padding:16px 20px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gr.g4 > .gc{border-radius:12px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gc .fc > .f1 > div:first-child{padding:10px 16px!important}

/* 7. Matrix: the position cards keep their fixed height and own scroll; heads and rows get the table look. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .sp-matrix-card > div:first-child{padding:6px 12px!important;background:var(--sp-raised,#172638)!important;border-bottom-color:var(--sp-line,#2a3c51)!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .sp-matrix-card .fm{font-family:'DM Sans',system-ui,sans-serif;font-variant-numeric:tabular-nums}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .sp-matrix-card .flex.ac.g1.tc.fm{font-size:10.5px!important;font-weight:600;letter-spacing:.03em;text-transform:uppercase;padding:0 4px 2px!important;margin-bottom:2px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .sp-matrix-card .hr{font-size:12px!important;line-height:16px;padding:3px 4px!important;border-color:rgba(147,166,191,.14)!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .sp-matrix-card .hr > .f1{font-weight:500;color:var(--sp-text,#e8eef7)}
/* Whole rows at rest: the card keeps the page's 240px; a 46px head, 12px above the column labels and 19px of labels leave
   161px, exactly seven 23px rows, at every width (the head was 45px on desktop and 37px on phones, so a part row showed).
   Stream mode sizes its cards itself. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main:not(.sp-stream-mode > *) .sp-matrix-card > div:first-child{height:46px;box-sizing:border-box;display:flex;align-items:center;justify-content:center}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main:not(.sp-stream-mode > *) .sp-matrix-card > div:first-child + div{padding-top:12px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main:not(.sp-stream-mode > *) .sp-matrix-card .flex.ac.g1.tc.fm{line-height:15px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .mgrid3,body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .mgrid2{gap:12px}

/* 8. Sims: the two tool panels (Lineup news, Late swap) and the legend read as one family. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gl.rx.mb4[style*="padding: 8px 10px"]{padding:10px 14px!important;border-radius:10px;margin-bottom:0;line-height:1.45}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gl.rx.mb4[style*="padding: 8px 10px"] strong{color:var(--sp-text,#e8eef7);font-weight:600;font-size:13px;margin-right:4px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gl.rx.mb4[style*="padding: 8px 10px"] .btn{min-height:30px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gl.rx.p6.mb4:has(> .flex.fw.g4.jc){padding:16px 24px!important;margin-bottom:0}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gl.rx.p6.mb4:has(> .flex.fw.g4.jc) .tc{font-size:13px;color:var(--sp-secondary,#b5c2d4)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gl.rx.p6.mb4:has(> .flex.fw.g4.jc) .tc > .fd{font-size:12px;letter-spacing:.08em;margin-bottom:2px}

/* 9. Recaps: filters on the grid, dates as section heads, games as quiet rows. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main div[style*="grid-template-columns: 1fr 1fr 1.5fr 1.5fr"]{padding:4px 0 20px!important;border-bottom-color:var(--sp-line-soft,#233449)!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) label[style*="font-size: 0.82rem"]{font-size:12px!important;color:var(--sp-secondary,#b5c2d4)!important;font-weight:600;margin-bottom:6px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main div[style*="JetBrains Mono"][style*="font-size: 1.4rem"]{font-family:Oswald,sans-serif!important;font-size:18px!important;font-weight:500;letter-spacing:.06em!important;color:var(--sp-secondary,#b5c2d4)!important;margin:24px 0 8px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main div[style*="cursor: pointer"][style*="padding: 14px 18px"]{background:var(--sp-surface,#101c2b)!important;border:1px solid var(--sp-line-soft,#233449);border-radius:8px!important;margin-bottom:6px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main div[style*="cursor: pointer"][style*="padding: 14px 18px"]:hover{border-color:var(--sp-control-line,#52677f);background:var(--sp-raised,#172638)!important}

/* 10. On/Off: the filter column and the table speak the same type as the other tabs. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) #root > div > div.ct > div[style*="grid-template-columns: 260px 1fr"] > div:first-child{background:var(--sp-surface,#101c2b)!important;border-color:var(--sp-line,#2a3c51)!important;border-radius:10px!important;padding:16px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) #root > div > div.ct div[style*="font-family: Oswald"][style*="letter-spacing: 0.1em"]{font-family:'DM Sans',system-ui,sans-serif!important;font-size:11px!important;font-weight:600;letter-spacing:.06em!important;color:var(--sp-secondary,#b5c2d4)!important;margin-bottom:6px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) #root > div > div.ct span[style*="Oswald"][style*="0.7rem"]{font-family:'DM Sans',system-ui,sans-serif!important;font-size:11px!important;letter-spacing:.02em!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) #root > div > div.ct table thead th{font-family:'DM Sans',system-ui,sans-serif!important;font-size:11.5px!important;font-weight:600!important;letter-spacing:.035em!important;text-transform:uppercase;padding-top:9px!important;padding-bottom:9px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) #root > div > div.ct table tbody{font-family:'DM Sans',system-ui,sans-serif;font-variant-numeric:tabular-nums}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) #root > div > div.ct .btn{font-size:13px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) #root > div > div.ct > div[style*="grid-template-columns: 260px 1fr"] > div:last-child > table{width:max(100%,850px)!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) #root > div > div.ct button[style*="Oswald"]{font-family:'DM Sans',system-ui,sans-serif!important;font-size:12px!important;font-weight:600;letter-spacing:.02em!important;min-height:30px;border-radius:6px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) #root > div > div.ct > div[style*="grid-template-columns: 260px 1fr"] > div:last-child{border-radius:10px}

/* 11. Own: the model report stays a printed report (mono), at reading size; its table matches the others. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .fc.g1.ts5[style*="JetBrains Mono"]{font-size:13px;line-height:1.65}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main div[style*="rgba(168, 85, 247, 0.28)"]{padding:14px 16px!important;border-radius:10px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gl.rx.fm,body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .fc > .gl.rx > .fm{font-size:13px;line-height:1.6}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main span.fd.txs.ts5{letter-spacing:.06em}

/* 12. Cards, empty and loading states: one radius, one padding, the line colour. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) :is(.gl,.gc,.mc){border-color:var(--sp-line,#2a3c51)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gl.rx.p6.tc{padding:28px 24px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gl.rx.p6.tc > p.ts4{font-size:15px;color:var(--sp-secondary,#b5c2d4)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main .gl.rx.p6.tc .fd.to4{letter-spacing:.03em}

/* 13. Phones and touch: every control in the tabs is at least 44px to the finger (inside table rows they keep the row's size). */
@media (max-width:600px),(pointer:coarse){
  body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) :is(button,.btn,label.btn):not(td *):not(th *){min-height:44px}
  body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) :is(input:not([type]),input[type=text],input[type=search],input[type=date],input[type=number],select):not(td *):not(.tlg){min-height:44px}
}
@media (max-width:600px){
  body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) :is(h2.fd.t2x,h2.fd.t2x.to4){font-size:23px}
  body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main input.tlg{height:52px;font-size:17px!important}
  body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) #root > div > div.ct{padding:12px 8px 20px}
  body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) #root > div > div.ct .btn{white-space:nowrap;padding-left:10px!important;padding-right:10px!important}
  body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) select:not(td *){min-width:7.5em;flex-shrink:0;padding-left:10px!important;padding-right:24px!important}
  body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) .sp-app-main td span.rd.txs.fw6{font-size:10.5px;padding:2px 5px!important;min-width:32px}
}

/* 14. Reduced motion: the loading shimmer and every transition in the tabs stop; nothing is lost without them. */
@media (prefers-reduced-motion:reduce){
  body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) :is(*,*::before,*::after){animation:none!important;transition:none!important}
}

/* Member portfolio: NFL's control rhythm and action hierarchy, existing NBA markup.
   Parent ba4b843. Native Track select is retained; no flow/copy/availability changes. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]{min-width:0;max-width:100%;font:14px/1.5 'DM Sans',system-ui,sans-serif;color:var(--sp-text,#e8eef7)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio="builder"]{display:flex;flex-direction:column;gap:16px;padding:20px;border:1px solid var(--sp-line,#2a3c51);border-radius:10px;background:var(--sp-surface,#111923)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>h3{font:500 23px/1.2 Oswald,sans-serif;letter-spacing:0;color:var(--sp-text,#f8fafc)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>p{font-size:12px;line-height:1.5;color:var(--sp-secondary,#94a3b8);overflow-wrap:anywhere}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>.flex{align-items:flex-end;gap:12px 24px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>.flex:has(>label){padding:14px 16px;border:1px solid var(--sp-line,#26313f);border-radius:10px;background:var(--sp-input,#0b121b)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio] label{display:flex;flex-direction:column;gap:6px;min-width:130px;max-width:100%;font-size:12px;line-height:1.5;color:var(--sp-secondary,#94a3b8)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio] :is(input,select){min-width:0;max-width:100%;height:38px;border:1px solid var(--sp-control-line,#314154);border-radius:6px;background:var(--sp-input,#0b121b);color:var(--sp-text,#e2e8f0);font:16px/1.3 'DM Sans',system-ui,sans-serif;padding:8px 10px;font-variant-numeric:tabular-nums}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio] input[type="number"]{width:110px!important}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio] select{width:100%;min-width:160px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio] input[type="file"]{width:100%;height:auto;min-height:40px;padding:8px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio] .btn{min-height:40px;max-width:100%;padding:8px 14px;font-size:13px;line-height:1.4;white-space:normal;text-align:center;justify-content:center}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>.flex:not(:has(>label)){padding-bottom:16px;border-bottom:1px solid var(--sp-line,#26313f);gap:8px}
/* Override inherited important13px/eight-pixel generic fields only in this builder. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] section[data-nba-portfolio="builder"].card :is(input[type="number"],select){font-size:16px!important;border-radius:6px!important;padding:8px 10px!important;height:38px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] section[data-nba-portfolio="builder"].card select{padding-right:28px!important}
/* Existing action row: Clear entries, Build, Cancel, Download. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>.flex:not(:has(>label))>button:nth-child(2){background:linear-gradient(135deg,#fcb040,#f97316);border-color:transparent;color:#0a0a0f;font-weight:700}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio] :is(button,input,select):focus-visible{outline:2px solid var(--sp-accent,#49c8ff);outline-offset:2px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>[role="status"]{min-height:1.5em;font-size:13px;color:var(--sp-secondary,#94a3b8)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>progress{width:min(420px,100%);height:12px;accent-color:var(--sp-accent,#00aeef)}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>div:has(>table){max-width:100%;min-width:0;overflow-x:auto;overscroll-behavior-x:contain}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio] table{width:max-content;min-width:100%;border-collapse:collapse;font-size:12px}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio] :is(th,td){padding:8px 10px!important;vertical-align:middle;font-variant-numeric:tabular-nums}
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio] td{min-width:88px;max-width:155px;white-space:normal;overflow-wrap:break-word;line-height:1.35}
@media(max-width:600px){
 body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio="builder"]{padding:12px;gap:12px}
 body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>.flex{gap:12px}
 body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>.flex:has(>label){padding:12px}
 body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>.flex>label{flex:1 1 calc(50% - 6px);min-width:0}
 body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio]>.flex>label:has(select){flex-basis:100%}
 body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio] :is(input[type="number"],select){width:100%!important;min-width:0;min-height:44px}
 body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio] .btn{min-height:44px}
}

/* Order210 item16: preserve reading-size ink for the only unavailable-state message. */
body[data-sp-ui="nba"]:where(:not(:has(#root > [data-stream-tab="data"]))) :is(.sp-app-main,#root > div > div.ct) [data-nba-member] [data-nba-portfolio="unavailable"]>p{font-size:16px;color:var(--sp-text,#e8eef7)}
