/* Shared readability contract. Sport-specific layout and data remain owned by
   their desks. Keep meaningful copy readable, even in a dense research view. */
html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
body .eh-scope {
  --eh-type-sm:14px; --eh-type-sm-lh:21px;
  --eh-type-label:14px; --eh-type-label-lh:20px;
}
body:has(.ot-navigation) .eh-scope {
  --eh-color-text-dim:#b0b6ba; --eh-color-text-mut:#b0b6ba;
}
body :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea) {
  font-size:16px!important;
  min-height:44px;
  max-width:100%;
}
body :is(button,summary,[role=button]) { min-height:44px; }
body :is(button,summary,a,input,select,textarea):focus-visible {
  outline:2px solid #d5f451; outline-offset:3px;
}
body :is(.ot-navigation,.platform-main,.customer-access,.member-admin) { min-width:0; }
body .member-admin { --ma-muted:#b0b6ba; }
body .customer-access { --ca-dim:#b0b6ba; }
body :is(.biv2,.biv2-drawer) { --bi-dim:#b0b6ba; --bi-muted:#b0b6ba; }
body.ehp-stadium-press-review { --sp-muted:#505650; --sp-oxide:#a73c28; }
body.ehp-stadium-press-review #ehp-card .ehp-stadium-state { color:var(--sp-ink)!important; }
body.ehp-stadium-press-review #ehp-card .ehp-stadium-state>span { color:var(--sp-oxide)!important; }
body.ehp-stadium-press-review #ehp-card .ehp-stadium-state p { color:var(--sp-muted)!important; }
body.ehp-stadium-press-review .badge { font-size:14px!important; line-height:1.4; }
body .brand-lockup { min-width:0; max-width:100%; }
body .brand-lockup__copy { min-width:0; }
body .brand-lockup__copy small { white-space:normal; line-height:1.5; letter-spacing:.06em; }
body .brand-lockup__mark { flex-shrink:0; }
body .site-footer__main { min-width:0; }
body .site-footer__main>* { min-width:0; }
body:has(.ot-navigation) .g-view .eh-table__rank { color:#b0b6ba; }
body:has(.ot-navigation) .eh-scope:has(.g-view) .eh-topbar .eh-sportsw a.is-active { background:#222629!important; color:#eef0ef!important; }
body:has(.ot-navigation) :is(.today-game:hover,.research-card:hover,.filters button:hover) { background:var(--wn-paper-2); color:var(--wn-ink); }
body:has(.ot-navigation) .daily-record-row .daily-outcome.win { color:#9bd8b6; }
body:has(.ot-navigation) .eh-scope:has(.g-view) :is(.eh-card--interactive:hover,.eh-btn:not(.eh-btn--primary):hover) { background:var(--gf-paper-2); color:var(--gf-ink); }
/* Text-sized rank columns must accommodate two/three digit ranks. */
.eh-scope .eh-pcard__rank,.g-card__rank { width:2.5em; }
.eh-scope .eh-pill { height:auto; min-height:26px; line-height:1.4; white-space:normal; }
.eh-scope .eh-pcard__metric .l { line-height:1.4; }
body:has(.ot-navigation) :is(.ptable,.nr-table-wrap,.eh-table-wrap) { scrollbar-width:thin; }
body:has(.ot-navigation) :is(.ptable th,.ptable td,.nr-table-wrap th,.nr-table-wrap td) { line-height:1.5; }
body:has(.ot-navigation) :is(.receipt-grid span,.receipt p,.nba-grid th,.nba-chips button,.nba-gband span,.nba-gband em) { font-size:14px!important; }
.ehp-stadium-empty { padding:24px; border:1px solid #373c40; background:#191c1f; color:#eef0ef; }
body.ehp-stadium-press-review .ehp-main-hero .ehp-stadium-empty p {
  color:#b0b6ba!important; font-size:16px; line-height:1.6; max-width:65ch;
}
/* Preserve charts' geometry; these rules apply to HTML controls and rows, not
   SVG/canvas labels. Never hide overflow to disguise a broken page width. */
@media(max-width:900px) {
  body:has(.platform-main) .site-header__inner { flex-wrap:wrap; gap:12px; }
  body:has(.platform-main) .platform-nav { margin-left:0; flex-wrap:wrap; gap:20px; }
  body .site-header:has(:is(.account-nav,.auth-nav,.auth-error-nav)) { position:static; height:auto; padding:16px 0; }
  body .site-header:has(:is(.account-nav,.auth-nav,.auth-error-nav)) .site-header__inner { flex-wrap:wrap; gap:16px; }
  body .site-nav:is(.account-nav,.auth-nav,.auth-error-nav) { width:100%; min-width:0; flex-wrap:wrap; gap:8px; }
  body .site-nav:is(.account-nav,.auth-nav,.auth-error-nav) a { min-height:44px; white-space:normal; }
  body:has(.site-header .account-nav) .customer-access,
  body:has(.site-header .auth-nav) .customer-access,
  body:has(.site-header .auth-error-nav) .customer-access { padding-top:32px; }
  body:has(.ot-navigation) .exp-games { grid-template-columns:minmax(0,1fr); }
  body:has(.ot-navigation) .sgp-grid { grid-template-columns:minmax(0,1fr); }
  body:has(.ot-navigation) .filters { flex-wrap:wrap; gap:8px; overflow:visible; }
  body:has(.ot-navigation) .filters button { white-space:normal; padding:10px 12px; }
  body:has(.ot-navigation) :is(.game-expand,.props-toggle,.addsgp,.alts-toggle,.rung button) { min-height:44px; }
  body:has(.ot-navigation) .rung { flex-wrap:wrap; gap:10px; }
  body:has(.ot-navigation) .opt-row { grid-template-columns:64px minmax(0,1fr); gap:10px; }
  body:has(.ot-navigation) .opt-row .acts { grid-column:1/-1; }
  body:has(.ot-navigation) .metric-row { grid-template-columns:minmax(90px,1fr) repeat(3,minmax(52px,auto)); gap:8px; }
  #nbaOpportunities .ot-market-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  #nbaOpportunities :is(.ot-tabs,.ot-global) { height:auto; flex-wrap:wrap; }
  #nbaOpportunities .ot-tabs button { white-space:normal; }
  #nbaOpportunities .ot-detail-heading { flex-wrap:wrap; }
  body:has(.ot-navigation) :is(.nh-receipt,.nh-summary) { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:480px) {
  body:has(.ot-navigation) :is(h1,h2,h3,h4,section[id]) { scroll-margin-top:140px; }
  body:has(.ot-navigation) .topbar { flex-wrap:wrap; gap:10px; padding:12px; }
  body:has(.ot-navigation) .topbar .brand { flex:1 1 160px; }
  body:has(.ot-navigation) .pt-players>tbody>tr.prow {
    grid-template-columns:repeat(2,minmax(0,1fr));
    grid-template-areas:"name name" "min min" "pts reb" "ast tpm" "edge edge" "act act";
  }
  body:has(.ot-navigation) .pt-players>tbody>tr.prow>td { min-width:0; overflow-wrap:anywhere; }
  body:has(.ot-navigation) .pt-players .sum-line { display:block; }
  body:has(.ot-navigation) .metric-row { grid-template-columns:minmax(0,1fr) repeat(3,48px); gap:5px; }
  body:has(.ot-navigation) .ot-board-filters { grid-template-columns:minmax(0,1fr); }
  body:has(.ot-navigation) .ot-board-filters>* { grid-column:1; }
  body:has(.ot-navigation) .ot-navigation__main>a { padding-inline:10px; }
  body:has(.ot-navigation) .ot-navigation__tools a { overflow-wrap:anywhere; }
}
