/* Shared visual layer. Existing league and tool styles retain their layout hooks. */
:root {
 --bg:#0b121d;
 --panel:#111d2c;
 --panel-deep:#0e1825;
 --line:#35465b;
 --muted:#b1c1d4;
 --text:#eff4f9;
 --paper:#eff4f9;
 --ice:#9ed3ff;
 --ink:#101e2d;
}
body {background:var(--bg)}
.masthead,#workspace-nav {background:#101a28}
.brand small,.nav-group>small {color:var(--muted)}
.brand strong {font-size:clamp(19px,2.1vw,28px)}
.league-row,.mobile-nav {margin:0;padding:0;border:0}
.league-row {display:flex;gap:6px;flex-wrap:nowrap}
.league-row a {
 display:grid;place-items:center;min-height:44px;min-width:53px;padding:0 8px;
 border:1px solid #35465b;border-radius:8px;background:#111d2c;color:#c0d0e2;
 font-weight:700;text-decoration:none;
}
.league-row a:hover,.league-row a[aria-current] {background:#18344f;border-color:#6499c3;color:#e5f4ff}
#workspace-nav button {color:var(--muted)}
#workspace-nav button:hover {background:#17283a;color:var(--paper)}
#workspace-nav button[aria-pressed=true] {background:#18334e;border-color:#5c89af;color:var(--paper);box-shadow:none}
:where(a,button,input,select,summary):focus-visible {outline:2px solid #a8d9ff;outline-offset:3px}
.room-hero,.nba-room .room-hero.nba-hero,.nhl-room .room-hero,.mlb-room .season-hero,.epl-room .season-hero {
 min-height:0;grid-template-columns:minmax(0,1fr);padding:8px 0 20px;background:transparent;
 border:0;box-shadow:none;
}
.room-hero::after,.room-hero :is(.playbook-art,.nhl-rink,.room-field) {display:none}
.room-hero .room-intro h1,.nba-room .nba-hero h1 {font-size:clamp(36px,4.3vw,62px);line-height:1.08}
.room-search {max-width:none}
.room-search button,.action {background:var(--ice);border-color:var(--ice);color:var(--ink)}
.room-tools a,.social-links a {background:var(--panel);border:1px solid var(--line)}
.room-tools a:hover {background:#182b40;border-color:var(--ice)}
.room-tools strong {font-family:inherit;color:var(--paper)}
.room-feature,.featured {background:#152337;border-color:var(--line);box-shadow:none}
#home-screen>.room-feature {padding:clamp(16px,3vw,28px);min-height:154px}
#home-screen>.room-bottom {grid-template-columns:minmax(0,1fr)}
.feature-teams {color:#bdcde02d}
#spotlight {background:var(--panel-deep);border-color:var(--line)}
.prop-table table {font-variant-numeric:tabular-nums}
.prop-table th {background:#152337;color:var(--text)}
.prop-table tr:focus-within td,.prop-table tbody tr:hover td {background:#182a40}
.dvp-rank-list {grid-template-columns:1fr}
.dvp-rank {margin:0}
.dvp-rank>button {grid-template-columns:minmax(0,1fr) auto minmax(45px,14%) minmax(0,1.2fr)}
.dvp-rank>button small {grid-column:auto}
.dvp-value-bar {height:6px;border-radius:4px;background:linear-gradient(90deg,#80b6e0 var(--value),#293c51 var(--value))}
.matchup-analysis-hero {margin-top:12px}
.matchup-shortcuts {display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}
.matchup-shortcuts a {padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}
#matchup-availability {scroll-margin-top:130px}
.mobile-nav {display:none}
@media(max-width:860px) {
 .masthead {position:static;display:grid;gap:8px;padding:10px 14px}
 .league-row {display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}
 .league-row a {min-width:0}
 main {scroll-margin-top:12px}
 .has-mobile-nav {--mobile-nav-height:calc(60px + env(safe-area-inset-bottom))}
 .has-mobile-nav main {padding-bottom:calc(var(--mobile-nav-height) + 20px)}
 .has-mobile-nav #workspace-nav {display:none}
 .has-mobile-nav #workspace-nav.menu-open {
  position:fixed;inset:auto 10px var(--mobile-nav-height);display:flex;align-content:start;
  max-height:55dvh;overflow:auto;padding:12px;z-index:9;border:1px solid var(--line);
  border-radius:12px;box-shadow:0 6px 24px #0008;
 }
 .has-mobile-nav #workspace-nav button {min-height:44px}
 .mobile-nav {
  display:flex;position:fixed;inset:auto 0 0;z-index:10;height:var(--mobile-nav-height);
  padding:6px 6px calc(6px + env(safe-area-inset-bottom));gap:4px;
  background:#111d2c;border-top:1px solid var(--line);
 }
 .mobile-nav button {
  flex:1;min-width:0;min-height:44px;padding:3px;border-color:transparent;
  font-size:clamp(12px,2.8vw,15px);background:transparent;
 }
 .mobile-nav button[aria-pressed=true],.mobile-nav button[aria-expanded=true] {
  background:#18334e;border-color:#6499c3;color:#e5f4ff;box-shadow:none;
 }
 .has-mobile-nav :is(#pm-mobile-actions,.player-filter-actions,.prop-change-stat) {
  bottom:calc(var(--mobile-nav-height) + 12px);
 }
}
@media(max-width:620px) {
 .dvp-rank>button {grid-template-columns:minmax(0,1fr) auto}
 .dvp-rank>button small,.dvp-value-bar {grid-column:1/-1}
}
.room-intro p {color:var(--muted);max-width:70ch}
.room-search input,input,select,button {background:var(--panel-deep);border-color:var(--line)}
.room-search button,.action {background:var(--ice);border-color:var(--ice)}
.room-tools .tool-icon {color:var(--ice)}
#home-screen>.room-feature>a {padding:5px 10px;border:1px solid var(--line);border-radius:7px;text-decoration:none}

/* Research desk and mobile refinements. */
#home-screen .room-hero {padding-bottom:14px}
#home-screen .room-hero h1 {font-size:clamp(29px,4vw,52px);letter-spacing:-.035em}
#home-screen>.room-search {margin:16px 0 0}
#home-screen>.broadcast-matchup {
 display:grid;grid-template-columns:minmax(190px,.72fr) minmax(0,1fr);gap:clamp(14px,3vw,32px);
 align-items:center;background:linear-gradient(110deg,#1c2230,#14243a 70%);border-color:#405269;
}
.broadcast-teams {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.broadcast-side {
 display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;
 padding:12px 5px;border:1px solid #ffffff18;border-radius:8px;
}
.broadcast-side img {width:clamp(32px,4vw,56px);height:auto;object-fit:contain}
.broadcast-side small,.broadcast-side strong {display:block}
.broadcast-side small {color:#c4d0e0}
.broadcast-away {background:#472434;border-top-color:#c17762}
.broadcast-home {background:#1a365f;border-top-color:#7698cc}
.broadcast-copy h2 {line-height:1.12;margin:4px 0}
.broadcast-kickoff {color:var(--text);font-size:.88rem;margin:5px 0}
.broadcast-link {display:inline-block;margin-top:8px;font-weight:700;text-underline-offset:4px}
.room-reports>a {display:inline-flex;padding:8px 0;font-weight:700}
.matchup-tool-heading>a {white-space:nowrap;flex-shrink:0;padding:7px 10px;border:1px solid var(--line);border-radius:8px}
.matchup-selected {display:none}
.mobile-tools {
 width:min(460px,calc(100% - 20px));max-height:76dvh;inset:auto 0 calc(12px + env(safe-area-inset-bottom));
 margin:0 auto;padding:14px;border:1px solid #465d78;border-radius:14px;color:var(--text);background:#101b2b;
 box-shadow:0 18px 45px #0008;overflow:auto;
}
.mobile-tools::backdrop {background:#030912b8}
.mobile-tools-heading {display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}
.mobile-tools-heading h2 {font-size:1.25rem}
.mobile-tools section {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:10px}
.mobile-tools section h3 {grid-column:1/-1;color:var(--muted);font:700 .76rem/1.3 system-ui,sans-serif}
.mobile-tools button {min-height:44px;text-align:left;font-size:.84rem}
.mobile-tools button[aria-pressed=true] {background:#18334e;border-color:#6499c3;color:#e5f4ff}
.prop-table td,.prop-table th {font-variant-numeric:tabular-nums}
.prop-filter-panel summary {font-weight:700}
@media(max-width:860px) {
 .brand small {font-size:clamp(8px,2.4vw,11px);letter-spacing:.09em}
 .has-mobile-nav :is(#pm-mobile-actions,.player-filter-actions,.prop-change-stat) {
  position:static;inset:auto;max-width:none;width:fit-content;margin:8px 0;
  box-shadow:none;z-index:auto;
 }
 .has-mobile-nav .prop-change-stat:not([hidden])+:is(#prop-output,#nba-output,#nhl-prop-output) {padding-bottom:0}
 .mobile-nav button {font-weight:700}
}
@media(max-width:620px) {
 #home-screen>.broadcast-matchup {grid-template-columns:minmax(0,1fr);gap:12px;min-height:0}
 .broadcast-side {padding:5px}
 .broadcast-side img {width:38px}
 .matchup-tool-heading,.matchup-tool-heading~#pm-results .heading {align-items:flex-start;flex-direction:column;gap:8px}
 .matchup-tool-heading h2 {line-height:1.15;margin-bottom:5px}
 #pm-week,#pm-game,#pm-search,#pm-stat,#pm-mode {width:100%;min-height:44px}
 .prop-controls:has(#pm-game),.prop-controls:has(#pm-stat) {grid-template-columns:minmax(0,1fr)}
 .prop-controls:has(#pm-game)>label:last-child {grid-column:1/-1}
 .matchup-selected:not(:empty) {display:block;color:var(--text);overflow-wrap:anywhere;line-height:1.3}
}
.league-feature-analysis.broadcast-matchup {
 display:grid;grid-template-columns:minmax(180px,.65fr) minmax(0,1fr);
 align-items:center;gap:clamp(14px,3vw,28px);padding:clamp(16px,3vw,28px);
}
.league-feature-analysis .broadcast-side {border-top-width:3px}
.league-feature-analysis .broadcast-teams {align-self:start}
.league-feature-analysis h2 {line-height:1.15;overflow-wrap:anywhere}
.league-feature-analysis ul {padding-left:18px;font-size:.88rem;color:var(--muted)}
#nba-body>.room-search {margin:16px 0}
@media(max-width:620px) {
 .league-feature-analysis.broadcast-matchup {grid-template-columns:minmax(0,1fr)}
 .league-feature-analysis .broadcast-side {background:#14243a}
}
.standings-group {margin:22px 0}
.standings-group h3 {margin-bottom:10px}
.standings-scroll {overflow-x:auto;border:1px solid var(--line);border-radius:10px}
.standings-table {width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:.88rem}
.standings-table th,.standings-table td {padding:10px 12px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
.standings-table th:first-child {text-align:left}
.standings-table thead {background:#152337;color:var(--ice)}
.standings-team {display:flex;align-items:center;gap:9px}
.standings-team img {object-fit:contain}
.visually-hidden {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@media(max-width:620px){
 .standings-table th,.standings-table td {padding:9px 8px}
 .standings-table th:first-child {position:sticky;left:0;background:var(--panel)}
 .standings-team span {max-width:110px;white-space:normal;line-height:1.3}
}
