/* Broadcast identity: navy studio, red/blue score lanes, readable neutral data. */
:root{--ink:#14243b;--muted:#65738a;--line:#dfe5ee;--paper:#eef1f6;--rail:#0b172b;--accent:#cc1737;--accent-soft:#fff0f3;--opponent:#245bb5;--opponent-soft:#edf3ff;--live:#ff5a75;--final:#68778d;--radius:6px;--seg-track-bg:#e8eef5;--seg-track-border:#d5deea;--seg-color:#5a6d84;--seg-active-bg:#122640;--seg-active-color:#fff;--seg-label-color:#7a8ba0;--seg-count-bg:#dce5ef;--seg-count-color:#3a5270}
body{background:var(--paper)}
.rail{color:#9cabc3;border-right:1px solid #24324b}
.brand-mark{color:#fff;position:relative}.brand-logo{display:block;height:28px;width:auto}
.rail-home:hover{color:#fff;background:#1c2e49}
.rail-home.active,.rail-home.is-route-active{color:#fff;background:#cf193a}
.rail-item{border-radius:4px}.rail-item:hover{background:#1c2e49}.rail-item.active{background:#cf193a;color:#fff;box-shadow:0 5px 18px #0002}
.rail-item span{text-align:center;line-height:1.15;max-width:58px}
.topbar{background:#0e1d35;color:#fff;border-color:#283951;box-shadow:0 2px 8px #0b172b12}
.league-monogram{background:#eaf0fa;color:#173965;border-radius:3px}.topbar .league-monogram{background:#253b5c;color:#fff}
.topbar .season-badge,.topbar .league-switch i,.search-button{color:#b6c2d6}.topbar kbd{border-color:#40516c;color:#c1cce0}.topbar .icon-button:hover{background:#263c5d}
.league-tab{background:#1a2c48;color:#c5d2e6;border-color:#243a5a}.league-tab .league-monogram{background:#243a5a;color:#e8eef8}.league-tab .season-badge{color:#8fa0bb}.league-tab:hover{background:#223756}.league-tab.active{background:#cf193a;border-color:#cf193a;color:#fff}.league-tab.active .league-monogram{background:#fff;color:#b51535}.league-tab.active .season-badge{color:#ffd0d8}
h1{font:700 37px/1.12 Barlow,Arial,sans-serif;letter-spacing:.2px;text-transform:uppercase}
.eyebrow{color:#5e708c;letter-spacing:1.45px}
.source-toggle{border-radius:4px;color:#30415a}.icon-button:hover{background:#e8eaed}.week-navigation .icon-button{color:#5f6f86}
.data-state{background:#fff2d9;color:#805613}.data-state.api{background:#e9f1ff;color:#214f98}
.matchup-panel,.bench-panel{box-shadow:0 2px 7px #0b172b06}
.scoreboard{position:relative;overflow:hidden;color:#fff;border-top:0;background:
  radial-gradient(ellipse 52% 95% at 0% 42%,#e31e4230,transparent 58%),
  radial-gradient(ellipse 52% 95% at 100% 42%,#6c9df132,transparent 58%),
  linear-gradient(115deg,#101f38 0%,#142a49 55%,#0b1a31 100%)}
.scoreboard:before{content:none}
.scoreboard-top{color:#b8c7de;font-weight:700}.scoreboard .tag{background:#293d59;color:#d5dfed;border-radius:2px}.scoreboard .tag.live{background:#b51535;color:#fff}.tag.live:before{border-radius:1px}
.hero-logo{background:#f5f7fc;border-radius:5px}
/* Match generated-avatar inset (~10% plate) for ESPN/local logos that fill the box. */
.hero-logo--photo{padding:10%;box-sizing:border-box;object-fit:contain}
.hero-team{position:relative}
.hero-team>div:not(.hero-score){min-width:0}.hero-team h2{color:#fff;font-weight:800;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}.rival-name,.player-tile small,.search-result>div{overflow-wrap:anywhere}.team-record{color:#bcc8dc}.hero-score{color:#ff7189;font-variant-numeric:tabular-nums}.opponent .hero-score{color:#8fb9ff}
.versus,.versus .ph{color:#8096b8}.hero-proj{color:#b4c2d9}.hero-proj strong{color:#f3f6fc}.metric-row{color:#b4c2d9}.metric-row>strong{color:#f3f6fc}.minutes-side{color:#b4c2d9}.minutes-side strong{color:#f3f6fc}.minutes-proj{color:#f3f6fc}.minutes-clock{color:#b4c2d9}.minutes-label{color:#9eb0c8}.minutes-bar{background:#243552}.minutes-bar>span{background:#f34b69}.minutes-side.opponent .minutes-bar>span{background:#6c9df1}
/* Scoreboard enter: piece stagger + sheen (pill switch + first paint). */
@keyframes sb-sheen{from{opacity:.5}to{opacity:0}}
@keyframes sb-logo-home{from{opacity:0;transform:translateX(-16px) scale(.86);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
@keyframes sb-logo-away{from{opacity:0;transform:translateX(16px) scale(.86);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
@keyframes sb-meta-home{from{opacity:0;transform:translateX(-10px);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
@keyframes sb-meta-away{from{opacity:0;transform:translateX(10px);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
@keyframes sb-score-home{from{opacity:0;transform:translateY(12px) scale(.9);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
@keyframes sb-score-away{from{opacity:0;transform:translateY(12px) scale(.9);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
@keyframes sb-vs{from{opacity:0;transform:scale(.25);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
@keyframes sb-track-home{from{opacity:0;transform:translateX(-8px) translateY(6px)}to{opacity:1;transform:none}}
@keyframes sb-track-away{from{opacity:0;transform:translateX(8px) translateY(6px)}to{opacity:1;transform:none}}
@keyframes sb-lineup-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.scoreboard.is-entering{isolation:isolate}
.scoreboard.is-entering:after{
  content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(115deg,#ffffff28 0%,transparent 42%,#8fb9ff18 100%);
  animation:sb-sheen .55s var(--ease) both;
}
.scoreboard.is-entering .hero-team:not(.opponent) .hero-logo{animation:sb-logo-home .44s var(--ease) both}
.scoreboard.is-entering .hero-team:not(.opponent)>div:not(.hero-score){animation:sb-meta-home .4s var(--ease) .05s both}
.scoreboard.is-entering .hero-team:not(.opponent) .hero-score{animation:sb-score-home .48s cubic-bezier(.16,1,.3,1) .1s both}
.scoreboard.is-entering .versus{animation:sb-vs .4s cubic-bezier(.16,1,.3,1) .12s both;z-index:2}
.scoreboard.is-entering .hero-team.opponent .hero-logo{animation:sb-logo-away .44s var(--ease) .08s both}
.scoreboard.is-entering .hero-team.opponent>div:not(.hero-score){animation:sb-meta-away .4s var(--ease) .12s both}
.scoreboard.is-entering .hero-team.opponent .hero-score{animation:sb-score-away .48s cubic-bezier(.16,1,.3,1) .16s both}
.scoreboard.is-entering .minutes-side:not(.opponent){animation:sb-track-home .38s var(--ease) .22s both}
.scoreboard.is-entering .minutes-label{animation:sb-vs .32s var(--ease) .26s both}
.scoreboard.is-entering .minutes-side.opponent{animation:sb-track-away .38s var(--ease) .28s both}
.scoreboard.is-entering .minutes-bar>span{transition:width .85s cubic-bezier(.16,1,.3,1)}
/* Kill default content-in here — otherwise removing is-entering restarts it. */
.matchup-panel>.lineup-list>.lineup-row{animation:none}
.matchup-panel:has(>.scoreboard.is-entering)>.lineup-list>.lineup-row{
  animation:sb-lineup-in .32s var(--ease) both;
  animation-delay:calc(.26s + var(--row-index,0)*30ms);
}
.quiet-update .scoreboard.is-entering:after,
.quiet-update .scoreboard.is-entering .hero-logo,
.quiet-update .scoreboard.is-entering .hero-team>div:not(.hero-score),
.quiet-update .scoreboard.is-entering .hero-score,
.quiet-update .scoreboard.is-entering .versus,
.quiet-update .scoreboard.is-entering .minutes-side,
.quiet-update .scoreboard.is-entering .minutes-label,
.quiet-update .matchup-panel:has(>.scoreboard.is-entering)>.lineup-list>.lineup-row{animation:none!important}

/* Shared page enter (NFL / Liga / Spieler) — same language as scoreboard. */
@keyframes page-chrome-in{from{opacity:0;transform:translateY(-8px);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
@keyframes page-tile-in{from{opacity:0;transform:translateY(12px) scale(.97);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
@keyframes page-section-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
/* Kill whole-page fades — otherwise removing is-entering restarts mobile-view-in. */
.nfl-page.page-enter,
.league-page.page-enter,
.roster-page.page-enter{animation:none}
.nfl-page.is-entering .nfl-conference-toolbar,
.roster-page.is-entering .page-toolbar{animation:page-chrome-in .4s var(--ease) both}
.nfl-page.is-entering .nfl-conference-section{animation:page-section-in .38s var(--ease) both}
.nfl-page.is-entering .nfl-conference-section:nth-of-type(1){animation-delay:.06s}
.nfl-page.is-entering .nfl-conference-section:nth-of-type(2){animation-delay:.12s}
.nfl-page.is-entering .nfl-conference-section:nth-of-type(3){animation-delay:.18s}
.nfl-page.is-entering .nfl-conference-section:nth-of-type(4){animation-delay:.22s}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov{
  animation:page-tile-in .4s cubic-bezier(.16,1,.3,1) both;
  animation-delay:calc(.1s + .045s * var(--enter-i,0));
}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(1){--enter-i:0}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(2){--enter-i:1}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(3){--enter-i:2}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(4){--enter-i:3}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(5){--enter-i:4}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(6){--enter-i:5}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(7){--enter-i:6}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(8){--enter-i:7}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(9){--enter-i:8}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(10){--enter-i:9}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(11){--enter-i:10}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(12){--enter-i:11}
.nfl-page.is-entering .nfl-conference-grid>.nfl-ov:nth-child(n+13){--enter-i:12}
.league-page.is-entering>.side-card,
.league-page.is-entering>.text-link{
  animation:page-tile-in .42s cubic-bezier(.16,1,.3,1) both;
  animation-delay:calc(.06s + .07s * var(--enter-i,0));
}
.league-page.is-entering>.side-card:nth-child(1),
.league-page.is-entering>.text-link:nth-child(1){--enter-i:0}
.league-page.is-entering>.side-card:nth-child(2),
.league-page.is-entering>.text-link:nth-child(2){--enter-i:1}
.league-page.is-entering>.side-card:nth-child(3),
.league-page.is-entering>.text-link:nth-child(3){--enter-i:2}
.league-page.is-entering>.side-card:nth-child(4),
.league-page.is-entering>.text-link:nth-child(4){--enter-i:3}
.league-page.is-entering>.side-card:nth-child(5),
.league-page.is-entering>.text-link:nth-child(5){--enter-i:4}
.league-page.is-entering>.side-card:nth-child(n+6),
.league-page.is-entering>.text-link:nth-child(n+6){--enter-i:5}
.league-page.is-entering .league-matchup-list>.mini-match{
  animation:page-tile-in .36s var(--ease) both;
  animation-delay:calc(.14s + .04s * var(--enter-i,0));
}
.league-page.is-entering .league-matchup-list>.mini-match:nth-child(1){--enter-i:0}
.league-page.is-entering .league-matchup-list>.mini-match:nth-child(2){--enter-i:1}
.league-page.is-entering .league-matchup-list>.mini-match:nth-child(3){--enter-i:2}
.league-page.is-entering .league-matchup-list>.mini-match:nth-child(4){--enter-i:3}
.league-page.is-entering .league-matchup-list>.mini-match:nth-child(5){--enter-i:4}
.league-page.is-entering .league-matchup-list>.mini-match:nth-child(6){--enter-i:5}
.league-page.is-entering .league-matchup-list>.mini-match:nth-child(n+7){--enter-i:6}
.roster-page.is-entering .explorer-table tbody>.explorer-row{
  animation:page-tile-in .36s cubic-bezier(.16,1,.3,1) both;
  animation-delay:calc(.1s + .028s * var(--enter-i,0));
}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(1){--enter-i:0}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(2){--enter-i:1}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(3){--enter-i:2}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(4){--enter-i:3}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(5){--enter-i:4}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(6){--enter-i:5}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(7){--enter-i:6}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(8){--enter-i:7}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(9){--enter-i:8}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(10){--enter-i:9}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(11){--enter-i:10}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(12){--enter-i:11}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(13){--enter-i:12}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(14){--enter-i:13}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(15){--enter-i:14}
.roster-page.is-entering .explorer-table tbody>.explorer-row:nth-child(n+16){--enter-i:15}
.quiet-update .nfl-page.is-entering .nfl-conference-toolbar,
.quiet-update .nfl-page.is-entering .nfl-conference-section,
.quiet-update .nfl-page.is-entering .nfl-ov,
.quiet-update .league-page.is-entering>.side-card,
.quiet-update .league-page.is-entering>.text-link,
.quiet-update .league-page.is-entering .mini-match,
.quiet-update .roster-page.is-entering .page-toolbar,
.quiet-update .roster-page.is-entering .explorer-row{animation:none!important}
/* Foreign matchup: no own/opp lane colors — neutral chrome only. */
.matchup-stage--foreign .scoreboard{background:
  radial-gradient(ellipse 55% 90% at 50% 40%,#6b7f9a22,transparent 62%),
  linear-gradient(115deg,#101f38 0%,#142a49 55%,#0b1a31 100%)}
.matchup-stage--foreign .hero-score,
.matchup-stage--foreign .opponent .hero-score{color:#e8eef8}
.matchup-stage--foreign .minutes-bar>span,
.matchup-stage--foreign .minutes-side.opponent .minutes-bar>span{background:#8fa0b8}
.matchup-stage--foreign .player-cell.live,
.matchup-stage--foreign .player-cell.opp.live,
.matchup-stage--foreign .player-cell.live.possession-own,
.matchup-stage--foreign .player-cell.opp.live.possession-own{background:#f0f1f3}
.matchup-stage--foreign ~ .bench-panel .player-cell.live,
.matchup-stage--foreign ~ .bench-panel .player-cell.opp.live,
.matchup-stage--foreign ~ .bench-panel .player-cell.live.possession-own,
.matchup-stage--foreign ~ .bench-panel .player-cell.opp.live.possession-own,
.matchup-stage--foreign ~ .split-bench .player-cell.live,
.matchup-stage--foreign ~ .split-bench .player-cell.opp.live{background:#f0f1f3}
.insight-strip{background:#e9eef6}.insight{color:#62738a}.insight strong{color:#203956}
.segment{color:#6d7b90}.segment.active{color:#152d4d}.segment.active:after{background:#d61b3e;height:3px}
.roster-legend,.lineup-labels{color:#63728a}.lineup-labels{background:#f5f7fb}.lineup-labels>span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.lineup-row{border-color:#e7ebf2}.slot-label{background:#eef2f8;color:#657993;border-radius:2px;font-family:Barlow;font-size:11px;letter-spacing:.3px}
.player-cell{border-radius:3px}.player-cell:hover,.player-cell.opp:hover{background:#f3f4f6}
.player-shot{border-radius:2px 0 0 2px}.player-cell.opp .player-shot{border-radius:0 2px 2px 0}
.pc-name{color:#142640}.pc-position{color:#718097}.pc-score,.opp .pc-score{color:#192e4c}.pc-proj{color:#6b7b91}.pc-game{color:#64738a}
.pc-status.live{color:#ac1734}.pc-status.final{color:#69798e}.pc-status.upcoming{color:#92601d}.pc-status.bye{color:#69798e}.pc-stats,.pc-stats.no-stats{color:#4c5e75}
.player-cell.upcoming .pc-score{color:#8a98ad}.player-cell.live:after{display:none}
/* Live: soft side wash; hover = neutral gray (no blue/pink cast). */
.player-cell.live{background:var(--accent-soft)}
.player-cell.opp.live{background:var(--opponent-soft)}
.player-cell.live:hover,
.player-cell.opp.live:hover,
.player-cell.live.possession-own:hover,
.player-cell.opp.live.possession-own:hover,
.player-cell.live.possession-other:hover,
.player-cell.opp.live.possession-other:hover{background:#f3f4f6}
.player-cell.possession-own{background:#e5f2fb;box-shadow:none}.player-cell.possession-own:hover,.player-cell.possession-other:hover,.player-cell.opp.possession-own:hover,.player-cell.opp.possession-other:hover{background:#f3f4f6}.player-cell.possession-other{background:transparent;box-shadow:none}
.player-cell.live.possession-own{background:#ffe8ee}.player-cell.opp.live.possession-own{background:#e5f0ff}
.pc-field,.possession-other .pc-field{color:#63738b;border-color:#cfdae8}.possession-own .pc-field{color:#165e97;border-color:#9fc7e4}
.roster-legend .legend-ball{color:#205e8d;background:#e5f2fb}.bench-title span,.section-footnote{color:#66758c}
.side-heading h3{font:700 21px/1.2 Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.2px}.side-heading:before{content:'';height:16px;width:3px;background:#d81e40;margin-right:8px;flex-shrink:0}.side-heading h3{margin-right:auto}.side-heading>span{color:#697b96}
.mini-team img{background:#f0f1f3;border-radius:3px}.mini-match small{color:#66778d}.mini-match.current{background:#eef0f3;border-color:transparent;box-shadow:none}.mini-match:hover{background:#f3f4f6}.mini-match.current:hover{background:#e8eaed}.mini-proj{color:#8a9bb0}.text-link{color:#25466f}.nfl-game>strong{color:#3b5579}
/* Own matchup: pink/blue scores like scoreboard; own name slightly stronger. */
.mini-match--mine .mini-own .rival-name{font-weight:800;color:#e23d5c}
.mini-match--mine .mini-own .mini-score,
.mini-match--mine .mini-own .mini-score>.score-value{color:#e23d5c}
.mini-match--mine .mini-team:not(.mini-own) .mini-score,
.mini-match--mine .mini-team:not(.mini-own) .mini-score>.score-value{color:#3d7fd4}
.subtle-note,.setting-row p,.source-choice p,.league-choice small,.install-intro p,.scoreboard-note,.score-status-row{color:#63738a}
.tag.live{background:#ffedf1;color:#b51937}.scoreboard .tag.live{background:#b51535;color:#fff}
.toast{background:#132b4b;color:#fff;border-color:#425d80;box-shadow:0 12px 40px #10234333}
dialog{border-radius:9px;border-color:#cfd8e7;scrollbar-width:thin;scrollbar-color:#9aafc6 transparent}dialog::backdrop{background:#071426b5}.utility-heading{background:#112541;color:#fff;border-bottom:3px solid #d91c3f}.utility-heading h2{font:700 26px/1.2 Barlow,Arial,sans-serif;letter-spacing:.2px}.utility-heading .icon-button:hover{background:#284363}
/* Thin studio scrollbar — matches navy/soft-blue chrome, no OS arrows */
dialog::-webkit-scrollbar,
.utility-content::-webkit-scrollbar,
.season-path::-webkit-scrollbar,
.search-results::-webkit-scrollbar,
.nfl-dialog-scroll::-webkit-scrollbar{width:8px;height:8px}
dialog::-webkit-scrollbar-track,
.utility-content::-webkit-scrollbar-track,
.season-path::-webkit-scrollbar-track,
.search-results::-webkit-scrollbar-track,
.nfl-dialog-scroll::-webkit-scrollbar-track{background:transparent}
dialog::-webkit-scrollbar-thumb,
.utility-content::-webkit-scrollbar-thumb,
.season-path::-webkit-scrollbar-thumb,
.search-results::-webkit-scrollbar-thumb,
.nfl-dialog-scroll::-webkit-scrollbar-thumb{background:#9aafc6;border-radius:999px;border:2px solid transparent;background-clip:padding-box}
dialog::-webkit-scrollbar-thumb:hover,
.utility-content::-webkit-scrollbar-thumb:hover,
.season-path::-webkit-scrollbar-thumb:hover,
.search-results::-webkit-scrollbar-thumb:hover,
.nfl-dialog-scroll::-webkit-scrollbar-thumb:hover{background:#7e95b0;border:2px solid transparent;background-clip:padding-box}
dialog::-webkit-scrollbar-button,
.utility-content::-webkit-scrollbar-button,
.season-path::-webkit-scrollbar-button,
.search-results::-webkit-scrollbar-button,
.nfl-dialog-scroll::-webkit-scrollbar-button{display:none;width:0;height:0}
.utility-content,.season-path,.search-results,.nfl-dialog-scroll{scrollbar-width:thin;scrollbar-color:#9aafc6 transparent}
.dialog-topbar{color:#b8c8df;background:#122640;border-color:#304662}.dialog-topbar>span{min-width:0;overflow-wrap:anywhere}.dialog-nav{flex-shrink:0}.dialog-topbar .icon-button:hover{background:#294563}
.player-identity .eyebrow,.player-subtitle{color:#5c718e}.player-hero-score span,.player-hero-score p{color:#5e728e}
.player-hero .player-identity .eyebrow{color:color-mix(in srgb,var(--team-1) 50%,#5c718e)}
.dialog-tab{color:#66768b}.dialog-tab.active{color:#17365a}.game-banner{border-bottom-color:#e6ebf2}.game-banner small,.chart-heading span{color:#65768e}
.metric-tile span{color:#64758d}.metric-tile strong{color:#1d3e68}.gamelog-table .gamelog-fpts{color:#1d3e68}.gamelog-table tbody th,.gamelog-table td{border-color:#e6ebf2}.gamelog-table .gamelog-season th{color:#65768e;background:#f3f6fa;border-color:#e6ebf2}.data-table th{color:#596d89;background:#f3f6fa}.data-table td{border-color:#e6ebf2}.data-table .points-positive{color:#1d5b8c}
.standings-table tbody tr:hover td{background:#f2f6fb}.standings-team small{color:#6a7b91}.standings-team strong{overflow-wrap:anywhere}
.field input,.field select{border-color:#cbd5e4;background:#f7f9fc;color:#243d5d;border-radius:4px}.field input:focus,.field select:focus{border-color:#4775b1;background:#fff}
.primary-button{background:#c91c3b;color:#fff;border-radius:4px;box-shadow:0 2px 0 #94142c}.primary-button:hover{background:#af1532}.secondary-button{background:#eef0f3;color:#2a3544;border-radius:4px}.secondary-button:hover{background:#e3e5e9}
.setting-row h3{color:#243c5d}.field .league-name{color:#243c5d;font-weight:800}.setting-row input[type=checkbox]{accent-color:#c91c3b}.dev-preview{background:#edf2fa;border-color:#c5d3e6}.dev-preview>span{color:#6a7d96}
.league-choice.active{background:#eef0f3;border-color:#9aa3b0}.league-choice i{color:#315d98}.source-choice.selected{background:#fff1f4}.source-choice,.league-choice,.search-field{border-radius:5px}
.week-tile.selected{background:#fff0f3;border-color:#d97a8d;color:#ad1230}.week-tile span{color:#6f7e93}.week-tile.playoff{background:#fff2d8;border-color:#e6cea4}.week-tile.playoff span{color:#876420}
.season-summary span,.season-empty,.season-opponent small,.season-pa,.season-pf.season-phase{color:#6f7e93}.season-week.selected{border-color:#d97a8d;background:#fff0f3}.season-result.win{background:#e7f2ea;color:#1f6a3a}.season-result.loss{background:#fce8ec;color:#ad1230}.season-result.current,.season-result.upcoming{background:#e8eef6;color:#3d5a7a}
.explorer-scroll{border-color:#d5deea;border-radius:4px}.explorer-fpts{color:#173960}.explorer-stats{color:#4c5e75}.explorer-row:hover td{background:#f2f6fb}.explorer-row:hover td:nth-child(1){background:#f2f6fb}.explorer-table thead th:nth-child(1){background:#f3f6fa}.search-result span{color:#627590}.search-result img{background:#edf2f9}.search-result .result-score{color:#244d7d}
.score-delta{background:#e3f3ec;color:#176144;border-color:#b8d9ca}.score-delta.negative{background:#fff0f2;color:#ae1933}.scoreboard .score-delta{background:#d8f3e7;color:#125b3f}
.big-play{background:#102846;border-color:#5c81b2;border-radius:6px;border-top:3px solid #e82348;color:#fff}.opponent-play{background:#132d51;border-color:#5b86c5;border-top-color:#6a9de9}.big-play-open small{color:#ff9eb0}.big-play-open>span>span{color:#b8cbe4}.big-play-open>b{color:#fff}.big-play-close{color:#bfcee2}.alert-progress{background:#f24b69}.opponent-play .alert-progress{background:#82b1fa}
.field-details,.field-details.possession-other{background:#f1f4f9;border-radius:4px}.field-details.possession-own{background:#e5f2fb}.field-details small{color:#5e738d}
.load-indicator{color:#203f68}.load-indicator:before{background:#f8fbff;border-color:#afc5e1;box-shadow:0 5px 20px #0e2f5e24}.busy .weekbar:after{background-image:linear-gradient(90deg,transparent,#e32a4c,transparent)}
.initial-loading{color:#4b6281;background-image:linear-gradient(100deg,#f8faff 25%,#e7eef8 45%,#f8faff 65%)}
.alias-intro{margin:0 0 4px}.alias-help{margin:13px 0 8px}.alias-row{display:grid;grid-template-columns:32px minmax(0,1fr);gap:12px;align-items:center;border-bottom:1px solid var(--line);padding:14px 0}.alias-row>img{width:32px;height:32px}.alias-row .field{margin:0;font-size:11px}.alias-row input{font-size:14px;padding:11px 12px}.alias-row input::placeholder{font-size:12px;color:#7d8ba0}.alias-own{display:inline-block;margin-left:6px;color:#b61634;font-size:11px;letter-spacing:.4px}.alias-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:20px}.alias-setting{padding-top:0;margin-bottom:5px}
@media(min-width:651px){.scoreboard{padding-top:15px}.weekbar.page-chrome{margin-bottom:19px}.hero-team h2{font-size:16px}.side-card h3{font-size:21px}.insight strong{font-size:15px}.pc-stats,.pc-stats.no-stats{font-size:11px;color:#4c5e75}}
@media(max-width:650px){h1{font-size:27px;letter-spacing:.3px}.topbar{border-bottom:2px solid #d81e40}.scoreboard:before{height:2px}.scoreboard-top{font-size:6px}.hero-team h2{font-size:10px;line-height:1.15}.hero-logo{border-radius:3px}.hero-score{font-size:41px}.team-record{color:#c1cce0}.hero-proj strong{color:#f3f6fc}.slot-label{font-size:12px}.insight-strip{background:#e9eef6}.mobile-nav{background:#10243e;color:#9cb0cd;border-top:2px solid #2b405f}.mobile-nav button{color:#afc1db}.mobile-nav button.active{color:#fff;background:#1c3556}.mobile-nav button.active:before{content:'';position:absolute;left:24%;right:24%;top:0;height:3px;background:#ef3655}.mobile-nav button{position:relative}.dialog-topbar{background:#122640;color:#bdcde3}.standings-card:after{color:#60728d}.side-card h3{font-size:21px}.pc-stats,.pc-stats.no-stats{color:#4c5e75}.alias-actions .primary-button,.alias-actions .secondary-button{padding:11px 12px;font-size:11px}.alias-row input{font-size:16px}.lineup-labels{letter-spacing:.6px}.player-cell.possession-own{box-shadow:none}}
@keyframes score-flash{0%,100%{box-shadow:inset 0 0 0 1px transparent}30%{box-shadow:inset 0 0 0 1px #6b9bd2;background-color:#e7f1ff}}
@keyframes number-pulse{0%,100%{text-shadow:none}40%{text-shadow:0 0 15px #b4d7ff88}}

/* Opposing lineups face the center: scores inside, portraits outside.
   Mirror of own grid (64 score | 1fr | 72 photo) so mid text sits flush to the headshot. */
.player-cell.opp{grid-template-columns:56px minmax(0,1fr) 64px;text-align:right}
.opp .player-shot,.opp .player-photo{grid-column:3;grid-row:1/-1;width:64px;justify-self:end}
.opp .pc-score{grid-column:1;text-align:left;justify-self:stretch}
.opp .pc-name{grid-column:2;display:flex;flex-direction:row-reverse;justify-content:flex-start;align-items:baseline;gap:5px;min-width:0;width:100%;text-align:right}
.pc-name-main,.opp .pc-name-main{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.opp .pc-position{flex-shrink:0;margin:0}
.pc-score-row{display:flex;align-items:center;gap:4px;min-width:0}
.opp .pc-score-row{justify-content:flex-start}
.opp .pc-game{grid-column:1/3;display:flex;flex-direction:row-reverse;align-items:center;justify-content:flex-start;gap:3px;min-width:0;padding:0 0 0 56px;box-sizing:border-box}
.opp .pc-game>img{flex-shrink:0;width:14px;height:14px}
.opp .pc-mid{min-width:0}
.opp .pc-chips{margin-left:0;margin-right:4px;flex-shrink:0}
.opp .pc-field{border-left-width:0;border-right-width:1px;border-right-style:solid;padding-left:0;padding-right:4px}
.opp .pc-stats{grid-column:1/3;text-align:right;padding:0 0 0 56px;box-sizing:border-box;min-width:0}
.opp .pc-score-row .score-delta{position:static;left:auto;right:auto;transform:none}
.player-cell.opp.possession-own{box-shadow:none}
@media(min-width:651px) and (max-width:900px){
  .player-cell.opp{grid-template-columns:56px minmax(0,1fr) 64px}
  .opp .player-shot{grid-row:1/-1;width:64px}
  .opp .pc-game{grid-column:1/3;padding-left:56px}
  .opp .pc-stats{grid-column:1/3;padding-left:56px}
}
@media(max-width:650px){
  .player-cell.opp{grid-template-columns:36px minmax(0,1fr) 28px}
  .opp .player-shot,.opp .player-photo{grid-row:1/-1;width:28px}
  .opp .pc-game{grid-column:2;padding-left:0;flex-direction:row;justify-content:flex-end}
  .opp .pc-mid{flex:0 1 auto}
  .opp .pc-chips{margin-right:0;margin-left:4px}
  .opp .pc-stats{grid-column:1/3;padding-left:0;padding-right:2px}
  .opp .pc-name{flex-direction:row-reverse;justify-content:flex-start}
  .opp .pc-field{padding-right:3px}
  .opp .pc-score-row .score-delta{position:static;left:auto;right:auto;transform:none}
}
