/* 1030US-B unslop polish pass: look only, for /nba/, /nfl/ and /mlb/. Linked last by those three
   pages and by nothing else. Every rule sits under body[data-sp-ui] and reaches page content only:
   the header, logo, nav, footer, email capture and The Handy's arcade theme are untouched.
   No number, column, sort, word or behaviour changes here; the rule-7 cuts are in the page scripts.
   Inline styles are reached by attribute selectors so no page script value had to change; each one
   ends in a class so Blink tests it only on those elements (an unqualified [style*=], or one ending
   in a bare tag such as the MLB lane pills, slowed MLB tab switches, so those pills keep theirs).
   Platform, favourite and export buttons keep their own hue; only the two-stop gradient goes. */
:root {
  --us-ease: cubic-bezier(.22, 1, .36, 1);
  --us-sky: #00b6ef;
  --us-gold: #fcb040;
  --us-surface: #101c2b;
  --us-line: rgba(148, 170, 196, .16);
  --us-line-2: rgba(148, 170, 196, .28);
  --us-r: 14px;
  --us-r-in: 10px;
  --us-depth: 0 1px 0 rgba(255, 255, 255, .05) inset, 0 24px 48px -28px rgba(0, 0, 0, .8);
}

/* 1 Spacing: off-grid recap cells onto the 4px grid; the player search box keeps its outer size
   with a 1px hairline (15px padding + 1px = the old 14px + 2px). The 3px heatmap cells stay: a
   4px step would add ~80px to every board, and that density is the data. */
body[data-sp-ui="nfl"] .recap-table :is(td, th) { padding: 8px; }
body[data-sp-ui] #root input.wf.tc.tlg[style*="2px solid"] { padding: 15px !important; }

/* 2 Colour: no two-stop gradients or coloured glows in content; gold for the one primary action,
   sky for focus */
body[data-sp-ui] #root .btn[style*="linear-gradient(135deg, rgb(34, 197, 94), rgb(22, 163, 74))"] { background: #22c55e !important; }
body[data-sp-ui] #root .btn[style*="linear-gradient(135deg, rgb(239, 68, 68), rgb(220, 38, 38))"] { background: #ef4444 !important; }
body[data-sp-ui] #root .btn[style*="linear-gradient(135deg, rgb(139, 92, 246), rgb(99, 102, 241))"] { background: #8b5cf6 !important; }
body[data-sp-ui] #root .btn[style*="linear-gradient(135deg, rgb(168, 85, 247), rgb(99, 102, 241))"] { background: #a855f7 !important; }
body[data-sp-ui] #root .btn[style*="linear-gradient(135deg, rgb(249, 115, 22), rgb(239, 68, 68))"] { background: #f97316 !important; }
body[data-sp-ui] #root .btn[style*="linear-gradient(135deg, rgb(252, 176, 64), rgb(249, 115, 22))"] { background: var(--us-gold) !important; }
body[data-sp-ui] #root a.btn[style*="linear-gradient(135deg, rgb(251, 191, 36), rgb(255, 107, 43))"] { background: var(--us-gold) !important; }
body[data-sp-ui="nfl"] #root h2.sp-page-title[style*="linear-gradient(90deg, rgb(251, 191, 36), rgb(255, 107, 43))"] {
  background: none !important;
  -webkit-text-fill-color: var(--us-gold) !important;
  color: var(--us-gold);
}
body[data-sp-ui] #root .gl[style*="linear-gradient(135deg, rgba(34, 211, 238, 0.08)"],
body[data-sp-ui] #root .gl[style*="linear-gradient(135deg, rgba(200, 16, 46, 0.08)"] { background: rgba(255, 255, 255, .025) !important; }
body[data-sp-ui="nfl"] .nfl-lineups-controls .nfl-lu-csv { background: #8b5cf6; }
body[data-sp-ui="nfl"] .nfl-lineups-controls .nfl-lu-favs { background: #ef4444; }
body[data-sp-ui="nfl"] .nfl-lineups-controls .nfl-lu-load { background: #f97316; }
body[data-sp-ui="nfl"] .nfl-lineups-exposure-actions .btn:nth-child(1) { background: #8b5cf6; }
body[data-sp-ui="nfl"] .nfl-lineups-exposure-actions .btn:nth-child(2) { background: #f97316; }
body[data-sp-ui="nfl"] .nfl-progress-fill { background: #22c55e; }
body[data-sp-ui="nfl"] .nfl-batch-close { background: #22c55e; }
body[data-sp-ui="nfl"] .nfl-portfolio-dialog { background: #0f1720; }
body[data-sp-ui="mlb"] .toggle-btn.active { background: #c8102e; }
body[data-sp-ui="nba"] .nbap-model { background: rgba(252, 176, 64, .05); }
body[data-sp-ui] .gw { box-shadow: none; }
body[data-sp-ui] .bp:hover { box-shadow: none; transform: none; }
body[data-sp-ui] .edit-input:focus { border-color: var(--us-sky); box-shadow: none; }
body[data-sp-ui] #root input.wf.tc.tlg[style*="2px solid"] { border: 1px solid var(--us-line-2) !important; }
body[data-sp-ui] #root input.wf.tc.tlg[style*="2px solid"]:focus { border-color: var(--us-sky) !important; outline: none; }

/* 3 Icons: nothing here; nav and title emoji are a decision for Chris (🏔️ Apex and 🔒 lock stay) */

/* 4 Copy: the search helper line is cut in the page scripts. The Recap tagline under its title
   ("Every game, one week at a time. ...") is cut here, so nfl/recap-view.js, its manifest hash and
   its integrity pin stay as they are; the feed line, status box and legends below it stay. */
body[data-sp-ui="nfl"] .nfl-recap > .recap-toolbar + p.recap-muted { display: none; }

/* 5 Type: figures on tabular numerals; content buttons no heavier than 600; small caps labels
   lose their wide tracking */
body[data-sp-ui] #root :is(td, th, .fm) { font-variant-numeric: tabular-nums; }
body[data-sp-ui] #root .sp-file-action[style*="font-weight: 700"] { font-weight: 600 !important; }
body[data-sp-ui="nba"] .nmu-l,
body[data-sp-ui="nba"] .nbap-fact small,
body[data-sp-ui="nfl"] .group-header th,
body[data-sp-ui="nfl"] .rec-score .lbl,
body[data-sp-ui="mlb"] .toggle-btn { letter-spacing: .02em; }

/* 6 Layout: nothing moves */

/* 7 Details: the search box takes the control radius; Recap heat cells get an inset hairline so
   neighbouring cells of one colour still read as separate figures (no width or height change) */
body[data-sp-ui] #root input.wf.tc.tlg[style*="2px solid"] { border-radius: var(--us-r-in) !important; }
body[data-sp-ui="nfl"] .recap-table td + td { box-shadow: inset 1px 0 0 rgba(8, 14, 24, .55); }

/* 8 Visuals: the tables, heatmaps, team colours and The Handy stay the moments; nothing added */

/* 9 Motion: named properties, one easing, no lift */
body[data-sp-ui] .btn,
body[data-sp-ui="mlb"] .toggle-btn,
body[data-sp-ui="nfl"] .rec-card,
body[data-sp-ui="mlb"] .proj-card,
body[data-sp-ui] .upload-zone {
  transition-property: background-color, border-color, color, opacity;
  transition-duration: .16s;
  transition-timing-function: var(--us-ease);
}

@media (prefers-reduced-motion: reduce) {
  body[data-sp-ui] #root :is(.btn, button, .toggle-btn, .rec-card, .proj-card, .upload-zone) { transition: none !important; }
}
