/* NBA players and NBA teams (2026-10-01). The look of nhl-players.css. Tokens are --bp-* on purpose: nav.js owns
   fifteen :root names (--gold --navy --cream --ink --border --muted --text-* ...) with !important. */
:root{--bp-bg:#0e191f;--bp-surface:#18242d;--bp-raised:#1d2d35;--bp-line:#30414d;--bp-text:#ecf2f4;--bp-muted:#9fb3c0;--bp-accent:#D18445}
/* [hidden] must beat the display rules below (a label is display:grid, which beats the browser's [hidden]). */
#nba-players [hidden],#nba-teams [hidden],#nba-game [hidden],#nba-team [hidden]{display:none!important}
body{margin:0;padding-top:88px;background:var(--bp-bg);color:var(--bp-text);font-family:Inter,Arial,sans-serif}
#nba-players,#nba-teams,#nba-game,#nba-team{max-width:1200px;margin:0 auto;padding:24px 24px 60px;box-sizing:border-box}
.bp-eyebrow{color:var(--bp-accent);font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.bp-head h1{font-size:34px;margin:6px 0 6px}
.bp-sub{color:var(--bp-muted);font-size:14px;line-height:1.5;margin:0 0 18px}
.bp-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin-bottom:12px}
.bp-controls label{display:grid;gap:6px;font-size:12px;color:var(--bp-muted)}
.bp-controls select,.bp-controls input{min-height:40px;padding:8px 10px;border:1px solid #486473;border-radius:6px;background:var(--bp-surface);color:var(--bp-text);font:14px Inter,Arial,sans-serif}
.bp-controls input{width:190px}
.bp-toggle{display:flex;border:1px solid #486473;border-radius:6px;overflow:hidden}
.bp-toggle button{min-height:40px;padding:8px 16px;border:0;background:var(--bp-surface);color:var(--bp-muted);font:600 14px Inter,Arial,sans-serif;cursor:pointer}
.bp-toggle button[aria-pressed="true"]{background:var(--bp-accent);color:#221c18}
.bp-status{color:var(--bp-muted);font-size:13px;margin:6px 0 12px;min-height:18px;line-height:1.5}
.bp-table-wrap{overflow-x:auto;border:1px solid var(--bp-line);border-radius:8px;background:var(--bp-surface)}
#bp-table,#bt-table,.bp-mini{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
#bp-table th,#bp-table td,#bt-table th,#bt-table td,.bp-mini th,.bp-mini td{padding:8px 10px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--bp-line)}
#bp-table th:first-child,#bp-table td:first-child,#bt-table th:first-child,#bt-table td:first-child,.bp-mini th:first-child,.bp-mini td:first-child{text-align:left}
#bp-table th,#bt-table th,.bp-mini th{position:sticky;top:0;background:var(--bp-raised);color:var(--bp-muted);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
#bp-table th button,#bt-table th button{all:unset;cursor:pointer}
#bp-table th[aria-sort] button,#bt-table th[aria-sort] button{color:var(--bp-accent)}
#bp-table tbody tr{cursor:pointer;-webkit-tap-highlight-color:transparent}
#bp-table tbody tr:hover,#bp-table tbody tr:focus-visible{background:#233640;outline:none}
#bp-table td.bp-name a{color:var(--bp-text);font-weight:600;text-decoration:none}
.bp-namebox{display:flex;align-items:center;gap:8px}
.bp-inj{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.04em;padding:2px 6px;border-radius:3px;color:#fff;line-height:1.3}
.bp-who{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.bp-facts{color:var(--bp-muted);font-size:14px;line-height:1.8}
.bp-facts b{color:var(--bp-text)}
.bp-mini td.bp-dnp{text-align:left;color:var(--bp-muted)}
.bp-link{color:var(--bp-accent);font-weight:600}
.bp-back,.bp-more{display:inline-block;color:var(--bp-accent);text-decoration:none;font-size:14px;margin:4px 0 16px}
.bp-more{margin:12px 0 0}
.bp-card{background:var(--bp-surface);border:1px solid var(--bp-line);border-radius:10px;padding:20px;margin-bottom:18px}
.bp-card h3{margin:0 0 12px;font-size:15px;color:var(--bp-muted);font-weight:600}
@media(max-width:768px){body{padding-top:84px}#nba-players,#nba-teams,#nba-team{padding:16px 16px 80px}.bp-head h1{font-size:26px}.bp-controls input{width:100%}.bp-controls label{flex:1 1 140px}}
/* NBA game preview (2026-10-04): two team cards side by side, stacked on a phone. Reuses .bp-card and .bp-mini. */
.ng-teams{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:900px){.ng-teams{grid-template-columns:1fr}}
.ng-teams .bp-card{padding:16px;min-width:0}
.ng-wrap{overflow-x:auto}
.ng-player{display:flex;align-items:center;gap:8px;min-width:0}
.ng-player a{color:var(--bp-text);font-weight:600;text-decoration:none;white-space:nowrap}
.ng-player small{color:var(--bp-muted);font-size:11px;white-space:nowrap}
.ng-moved{color:var(--bp-muted);font-size:11px}
.ng-note{color:var(--bp-muted);font-size:12px;line-height:1.5;margin:12px 0 0}
/* NBA team page (D-257/D-259, 2026-10-14): the record as a row of small stats; the game log's per-game line. */
.tm-record{display:flex;flex-wrap:wrap;gap:10px;margin:4px 0 18px}
.tm-stat{display:grid;gap:2px;min-width:72px;padding:10px 12px;border:1px solid var(--bp-line);border-radius:8px;background:var(--bp-surface)}
.tm-stat span{color:var(--bp-muted);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.tm-stat b{font-size:18px;font-variant-numeric:tabular-nums}
.bp-mini tfoot td{font-weight:700;color:var(--bp-text);background:var(--bp-raised)}
.bp-mini td a{color:var(--bp-text);font-weight:600;text-decoration:none}
.bp-mini th.tm-l,.bp-mini td.tm-l{text-align:left}
#bt-table td a{color:var(--bp-text);font-weight:600;text-decoration:none}
/* D-257 piece 2: rank, left-aligned text columns, linked team cells on the players list */
#bp-table th.bp-l,#bp-table td.bp-l{text-align:left}
#bp-table th.bp-rank,#bp-table td.bp-rank{color:var(--bp-muted);width:1%}
#bp-table td a.bp-team{color:var(--bp-accent);text-decoration:none;font-weight:600}
#bp-table td a.bp-team:hover{text-decoration:underline}
.bp-toggle[hidden]{display:none}

/* ── THE NBA PLAYER PAGE (owner D-288, 2026-10-14; the approved mockup, layout and style only) ──
   --np-team (wash, bars) and --np-ink (text, rules) are set per page from nba-team-colors.js. Namespaced --np-*:
   nav.js owns fifteen :root names. Charcoal surfaces, copper (--bp-accent) for controls. */
body.np-mode{background:#0f1214}
body.np-mode #nba-players{max-width:1240px}
.np{display:grid;grid-template-columns:300px minmax(0,1fr);grid-template-areas:"side head" "side body";gap:0 28px;align-items:start}
.np-side{grid-area:side;background:#14181b;border:1px solid #23292e;border-radius:10px;overflow:hidden}
.np-head{grid-area:head;padding:8px 0 14px}
.np-body{grid-area:body;min-width:0}
.np-cut{position:relative;height:440px;background:radial-gradient(120% 80% at 50% 30%,color-mix(in srgb,var(--np-team) 55%,#14181b) 0%,color-mix(in srgb,var(--np-team) 22%,#14181b) 55%,#14181b 100%)}
.np-bio{display:grid;grid-template-columns:auto 1fr;gap:10px 18px;margin:0;padding:20px 22px 24px;border-top:1px solid #23292e;font-size:14px}
.np-bio dt{color:#8b98a1;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;align-self:center}
.np-bio dd{margin:0;color:#e9eef0;font-weight:600}
.np-team{color:var(--np-ink);font-size:13px;font-weight:800;letter-spacing:.22em;text-transform:uppercase}
#nba-players .np-head h1{font-family:'Big Shoulders Display','Barlow Condensed',Inter,sans-serif!important;font-size:68px;font-weight:900;line-height:.95;letter-spacing:.01em;margin:6px 0 10px;color:#f4f6f7}
.np-line{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:17px;color:#dfe5e8}
.np-dot{color:#5d6a72}
.np-teamlink{color:#dfe5e8;text-decoration:none;border-bottom:1px solid var(--np-ink)}
.np-teamlink:hover{color:var(--np-ink)}
.np-sub{margin-top:10px;color:#8b98a1;font-size:13px;line-height:1.6}
.np-tabs{display:flex;gap:28px;border-bottom:1px solid #2a3036;margin:0 0 18px;overflow-x:auto}
.np-tabs button{all:unset;cursor:pointer;padding:10px 2px 12px;font-size:16px;color:#aab6bd;border-bottom:3px solid transparent;white-space:nowrap}
.np-tabs button[aria-selected="true"]{color:#f4f6f7;font-weight:700;border-bottom-color:var(--bp-accent)}
.np-tabs button:focus-visible{outline:2px solid var(--bp-accent);outline-offset:2px}
.np-card{background:#15191c;border:1px solid #262c31;border-radius:10px;padding:16px 20px 18px;margin-bottom:16px;min-width:0}
.np-card-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}
.np-card-h h2{margin:0;font-size:13px!important;letter-spacing:.1em!important;color:#d6dde1}
.np-note{color:#8b98a1;font-size:12px;margin:10px 0 0}
.np-avg-row{display:grid;grid-template-columns:repeat(4,1fr)}
.np-stat{text-align:center;padding:4px 8px;border-left:1px solid #2a3036}
.np-stat:first-child{border-left:0}
.np-stat-v{font-size:36px;font-weight:800;color:#f4f6f7;font-variant-numeric:tabular-nums}
.np-stat-l{font-size:12px;color:#8b98a1;font-weight:700;letter-spacing:.08em;margin-top:2px}
.np-stat-bar{width:36px;height:3px;background:var(--np-ink);margin:10px auto 0;border-radius:2px}
.np-duo{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:16px}
.np-duo>.np-card{margin-bottom:16px}
.np-form-avg{text-align:right;line-height:1.3}
.np-form-n{display:block;color:#8b98a1;font-size:12px}
.np-form-avg b{font-size:18px;color:#f4f6f7}
.np-seg{display:inline-flex;margin-bottom:10px}
.np-seg button{min-height:34px;padding:6px 18px;font-size:13px}
.np-chart{width:100%;height:auto;display:block}
.np-grid{stroke:#262c31;stroke-width:1}
.np-ax{fill:#8b98a1;font:11px Inter,Arial,sans-serif}
.np-ax2{fill:#6f7c84;font-size:10px}
.np-vs{display:flex;align-items:center;justify-content:space-around;gap:10px;margin:8px 0 14px}
.np-vs-team{display:flex;flex-direction:column;align-items:center;gap:6px;text-decoration:none;color:#e9eef0;text-align:center;min-width:0}
.np-badge{display:flex;align-items:center;justify-content:center;width:58px;height:58px;border-radius:50%;border:3px solid;font-weight:900;font-size:15px;letter-spacing:.04em;background:#101316}
.np-vs-name{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.np-vs-rec{font-size:13px;color:#aab6bd}
.np-vs-at{color:#6f7c84;font-weight:700}
.np-when{text-align:center;font-size:15px;font-weight:700;color:#f4f6f7}
.np-next .np-note{text-align:center}
.np .bp-table-wrap{background:transparent;border:0}
.np .bp-mini th{background:transparent}
.np td.np-w::first-letter{color:#4ade80;font-weight:800}
.np td.np-l::first-letter{color:#f87171;font-weight:800}
.np-more{all:unset;cursor:pointer;display:inline-block;margin-top:12px;color:var(--bp-accent);font-size:14px;font-weight:600}
.np-more:focus-visible{outline:2px solid var(--bp-accent)}
@media(max-width:860px){
  .np{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "cut" "body" "bio";gap:0}
  .np-side{display:contents}
  .np-cut{grid-area:cut;height:220px;border-radius:10px;margin-bottom:14px}
  .np-bio{grid-area:bio;background:#14181b;border:1px solid #23292e;border-radius:10px}
  #nba-players .np-head h1{font-size:44px}
  .np-line{font-size:14px}
  .np-tabs{gap:20px}
  .np-duo{grid-template-columns:minmax(0,1fr);gap:0}
  .np-stat-v{font-size:24px}
  .np-card{padding:14px 14px 16px}
  .np-compact th:nth-child(4),.np-compact td:nth-child(4),.np-compact th:nth-child(n+8),.np-compact td:nth-child(n+8){display:none}
}
#nba-players .np-head h1{text-transform:uppercase!important}
.np-card-h h2{text-transform:uppercase!important}
.np .bp-mini th.np-tl,.np .bp-mini td.np-tl{text-align:left}

/* D-297: approved dark dashboard, with the generated artwork authorized in Mike's follow-up. */
body.np-mode{background:#101619}
body.np-mode #nba-players{max-width:1440px;padding:18px 28px 60px}
.np{grid-template-columns: minmax(270px,28%) minmax(0,1fr);gap:0 26px}
.np-side{background:linear-gradient(180deg,#0c1716,#0c1215);border-radius:6px;border-color:#202b30}
.np-cut{height:700px;overflow:hidden;background:radial-gradient(ellipse at 50% 30%,color-mix(in srgb,var(--np-team) 35%,#091310),#0c1215 78%)}
.np-player-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;z-index:1}
.np-team-watermark{position:absolute;width:112%;height:auto;top:24px;left:-6%;opacity:.24;filter:saturate(.65);pointer-events:none}
.np-head{position:relative;min-height:152px;padding:22px 110px 24px 0;box-sizing:border-box}
.np-head-logo{position:absolute;right:16px;top:24px;width:76px;height:76px;object-fit:contain}
#nba-players .np-head h1{font-size:60px;line-height:1.05;margin:10px 0 12px}
.np-team{font-size:12px;letter-spacing:.24em}
.np-line{font-size:14px}
.np-sub{font-size:11px;line-height:1.5;margin-top:12px}
.np-tabs{margin-bottom:18px;gap:28px}
.np-tabs button{font-size:14px;padding:8px 10px 14px}
.np-card{background:linear-gradient(130deg,#111a1e,#0e1418);border:1px solid #2a363e;border-radius:6px;padding:16px 18px 18px}
.np-card-h h2{font-size:11px!important;font-weight:600;letter-spacing:.09em!important}
.np-stat-v{font-family:'Big Shoulders Display',Inter,sans-serif;font-size:38px}
.np-stat-l{font-size:10px}
.np-stat-bar{height:2px;width:34px;margin-top:8px}
.np-note{font-size:10px;line-height:1.6}
.np-duo{grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:16px}
.np-seg{border-color:#394650;background:#0b1216}
.np-seg button{background:#0b1216;font-size:11px;min-height:32px;padding:6px 15px}
.np-seg button[aria-pressed=true]{color:white;background:linear-gradient(130deg,#c88753,#9f5b35)}
.np-form-n{font-size:10px;max-width:180px}
.np-form-avg b{font-size:17px}
.np-badge-logo{position:relative;border:0;background:transparent;font-size:0}
.np-match-logo{width:58px;height:58px;object-fit:contain}
.np-vs-name{font-size:10px;max-width:100px}
.np-vs-rec{font-size:12px}
.np-when{font-size:13px}
.np-bio{font-size:13px;padding:20px 22px 24px;gap:10px 18px}
.np-bio dt{font-size:10px;font-weight:500}
.np .bp-mini{font-size:12px}
.np .bp-mini th,.np .bp-mini td{padding:9px 7px;border-color:#29353b}
.np .bp-mini th{font-size:10px;font-weight:500}
.np-more{font-size:12px;font-weight:500}
@media(max-width:860px){
 body.np-mode #nba-players{padding:0 14px 60px}
 .np{grid-template-columns:minmax(0,1fr);grid-template-areas:"cut" "head" "body" "bio"}
 .np-cut{height:280px;margin:0 -14px;border-radius:0;isolation:isolate}
 .np-player-art{width:100%;height:auto;min-height:0;inset:8px 0 auto;object-fit:contain}
 .np-team-watermark{width:86%;left:7%;top:8px}
 .np-cut:after{content:"";position:absolute;z-index:2;inset:auto 0 0;height:46px;background:linear-gradient(transparent,#101619)}
 .np-head{min-height:0;padding:10px 0 20px}
 .np-head-logo{display:none}
 #nba-players .np-head h1{font-size:38px;margin:8px 0 10px}
 .np-team{font-size:10px}
 .np-line{font-size:12px}
 .np-tabs{gap:20px;margin-bottom:14px}
 .np-tabs button{font-size:12px;padding:6px 2px 12px}
 .np-card{padding:14px 12px 16px;margin-bottom:14px}
 .np-stat-v{font-size:27px}
 .np-stat-l{font-size:9px}
 .np-stat{padding:2px 6px}
 .np-duo{grid-template-columns:minmax(0,1fr);gap:0}
 .np-form-n{max-width:150px;font-size:9px}
 .np-form-avg b{font-size:16px}
 .np .bp-mini{font-size:11px}
 .np .bp-mini th,.np .bp-mini td{padding:8px 6px}
 .np-bio{background:#0e1518;border-color:#29353b;border-radius:6px;margin-top:4px}
}
@media(min-width:861px){.np-player-art[src$="/4065648-2.webp"]{transform:scale(1.2);transform-origin:center bottom}}
.np-stat-v{font-family:'Big Shoulders Display',Inter,sans-serif!important}
.np .bp-mini tbody tr{background:transparent!important}
.np .bp-mini th{background:transparent!important}
