:root {
  --badge-green-bg:#dcfce7;--badge-green-text:#166534;--badge-green-line:#86efac;
  --badge-yellow-bg:#fef3c7;--badge-yellow-text:#854d0e;--badge-yellow-line:#fcd34d;
  --badge-orange-bg:#ffedd5;--badge-orange-text:#9a3412;--badge-orange-line:#fdba74;
  --badge-red-bg:#fee2e2;--badge-red-text:#991b1b;--badge-red-line:#fca5a5;
  --game-live:#eaf3ff;--game-finished:#eceff3;--game-upcoming:#eff2f6;--selection-bg:#eaf1ff;
  --player-defense-bg:#f0edfc;--player-goalie-bg:#e9f5f5;
  --ir-bg:#edf0f7;--ir-text:#465572;--ir-line:#aebcd3;
  --eyebrow-text:var(--accent);
  --reserve-ir:#4f5b78;--reserve-bench:#526174;--reserve-minors:#e8bd4c;
}

/* In-page scoring alerts share the same surfaces in both themes. */
html[data-theme] .current-teams-page .team-toolbar{display:flex;align-items:center;gap:8px}
html[data-theme] .live-score-updates-toggle{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;position:relative;flex:none;width:36px;height:34px;min-height:34px;padding:3px;background:var(--panel);border:1px solid var(--line);border-radius:10px;cursor:pointer;transition:border-color .18s,box-shadow .18s,background .18s}
.live-score-updates-toggle .live-score-updates-icon{font-size:22px;line-height:1;opacity:.35;filter:grayscale(1);transition:opacity .18s,filter .18s,transform .18s}
html[data-theme] .live-score-updates-toggle[data-enabled="true"]{background:var(--badge-orange-bg);border-color:#f4a340;box-shadow:0 0 0 1px #f4a34044,0 0 16px #f4a34066}
.live-score-updates-toggle[data-enabled="true"] .live-score-updates-icon{opacity:1;filter:none;transform:scale(1.06)}
.live-score-updates-toggle #live-score-updates-count{position:absolute;top:-7px;right:-8px;min-width:15px;padding:1px 3px;border-radius:9px;background:#f4a340;color:#172033;font-size:10px;font-weight:700;line-height:1.2}
.live-score-updates-toggle[data-enabled="false"] #live-score-updates-count{display:none}
.live-score-updates{--score-popup-top:clamp(112px,calc(18dvh + 16px),186px);position:fixed;right:16px;top:var(--score-popup-top);z-index:1200;width:min(390px,calc(100vw - 24px));max-height:min(60dvh,540px,calc(100dvh - var(--score-popup-top) - 24px));display:flex;flex-direction:column;overflow:hidden;background:var(--panel);color:var(--text);border:1px solid #f4a340;border-radius:14px;box-shadow:0 0 0 1px #f4a34033,0 0 24px #f4a34044,var(--shadow-raised)}
.live-score-updates[hidden]{display:none}
.live-score-updates-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 12px;background:#f4a340;color:#172033;flex-shrink:0;cursor:grab;touch-action:none;user-select:none}
.live-score-updates[data-dragging="true"] .live-score-updates-heading{cursor:grabbing}
.live-score-updates-heading button{touch-action:manipulation}
.live-score-updates-heading h2{margin:0;font-size:14px;line-height:1.2}
.live-score-updates-heading button{border:0;background:transparent;color:inherit;font-size:22px;line-height:1;cursor:pointer;min-width:28px;min-height:28px;border-radius:6px}
.live-score-updates-list{overflow-y:auto;overscroll-behavior:contain;padding:12px 14px;min-height:0}
.live-score-updates-empty{font-size:12px;color:var(--muted);margin:0}
.live-score-update-batch+.live-score-update-batch{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}
.live-score-update-time{display:block;color:var(--muted);font-size:10px;margin-bottom:7px}
.live-score-update-team+.live-score-update-team{margin-top:12px}
.live-score-update-team-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:13px;margin-bottom:3px}
.live-score-update-team-heading strong{min-width:0;overflow-wrap:anywhere}
.live-score-update-points{color:var(--accent);white-space:nowrap;font-weight:800;font-variant-numeric:tabular-nums}
.live-score-update-player{display:flex;justify-content:space-between;gap:10px;padding:7px 0 7px 9px;border-left:2px solid var(--line);font-size:12px}
.live-score-update-player strong{font-weight:600}
.live-score-update-stats{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.live-score-update-player-points{font-weight:800;color:var(--accent);white-space:nowrap}
.live-score-updates :is(button,[tabindex]):focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
@media(max-width:850px){.live-score-updates{--score-popup-top:clamp(112px,calc(18dvh + 16px),166px);right:12px;max-height:min(55dvh,calc(100dvh - var(--score-popup-top) - 86px - env(safe-area-inset-bottom,0px)))}.current-teams-page .team-toolbar{flex-wrap:wrap;gap:8px}}
html[data-theme="dark"] {
  color-scheme:dark;
  --badge-green-bg:#163d2a;--badge-green-text:#86efac;--badge-green-line:#3a8756;
  --badge-yellow-bg:#453510;--badge-yellow-text:#fde68a;--badge-yellow-line:#9b792b;
  --badge-orange-bg:#482b16;--badge-orange-text:#fdba74;--badge-orange-line:#a76636;
  --badge-red-bg:#482027;--badge-red-text:#fecaca;--badge-red-line:#a95160;
  --game-live:#1c344e;--game-finished:#263445;--game-upcoming:#182231;--selection-bg:#1b3558;
  --player-defense-bg:#272641;--player-goalie-bg:#18343b;
  --ir-bg:#252d40;--ir-text:#c3cfec;--ir-line:#566783;
  --eyebrow-text:var(--accent);
}
html[data-theme="light"]{color-scheme:light}
.page-head .eyebrow{color:var(--eyebrow-text)}
main .button.secondary{background:var(--panel-2);color:var(--text);border-color:var(--line)}
main .hero .button.secondary{background:#ffffff10;color:#fff;border-color:#ffffff50}
/* Shared assignment stickers apply to forwards and defense on every page. */
:is(.line-1,.pp1,.goalie-1,.tips-line-1,.tips-pp1,.tips-g1,.player-assignment-1,.tips-odds-good,.vegas-odds-good,.contract-green){background:var(--badge-green-bg)!important;color:var(--badge-green-text)!important;border-color:var(--badge-green-line)!important}
:is(.line-2,.pp2,.goalie-2,.tips-line-2,.tips-pp2,.tips-g2,.player-assignment-2,.tips-odds-even,.vegas-odds-even,.contract-yellow){background:var(--badge-yellow-bg)!important;color:var(--badge-yellow-text)!important;border-color:var(--badge-yellow-line)!important}
:is(.line-3,.tips-line-3,.player-assignment-3){background:var(--badge-orange-bg)!important;color:var(--badge-orange-text)!important;border-color:var(--badge-orange-line)!important}
:is(.line-4,.tips-line-4,.player-assignment-4,.tips-odds-bad,.vegas-odds-bad,.contract-red){background:var(--badge-red-bg)!important;color:var(--badge-red-text)!important;border-color:var(--badge-red-line)!important}
:is(.team-player-lines,.matchup-player-name) :is(.line-1,.line-2,.line-3,.line-4,.pp1,.pp2){display:inline-flex!important;font-size:9px;padding:1px 4px;white-space:nowrap}
html[data-theme="dark"] :is(.team-next-opponent,.team-lineup-advisor,.team-live-matchup-card,.team-live-matchup-summary,.team-live-matchup-expanded,.matchup-card,.matchup-summary,.matchup-expanded,.matchup-roster-grid,.matchup-roster-col,.matchup-player-row,.matchup-bench){background:var(--panel)!important;color:var(--text)!important;border-color:var(--line)!important}
html[data-theme="dark"] :is(.matchup-player-name,.matchup-team-name,.matchup-stat-value,.matchup-summary-name){color:var(--text)!important}
html[data-theme="dark"] :is(.matchup-roster-section-title,.matchup-roster-heading,.matchup-section-title,.matchup-bench-title){background:var(--panel-2)!important;color:var(--muted)!important;border-color:var(--line)!important}
html[data-theme="dark"] :is(.matchup-player-cats,.matchup-daily-cats,.matchup-stat-label,.matchup-player-metrics span,.team-live-score small){color:var(--muted)!important}
html[data-theme="dark"] .notification-team-matchup>.matchup-summary{background:var(--selection-bg)!important}
html[data-theme] :is(.matchup-player-row,.team-player-data-row:not(.team-ir-row)).team-game-live-row{background:var(--game-live)!important}
html[data-theme] :is(.matchup-player-row,.team-player-data-row:not(.team-ir-row)).team-game-finished-row{background:var(--game-finished)!important}
html[data-theme] :is(.matchup-player-row,.team-player-data-row:not(.team-ir-row)).team-game-upcoming-row{background:var(--game-upcoming)!important}
html[data-theme] .score-up,html[data-theme] :is(.team-live-score,.matchup-summary-side,.matchup-player-row,.team-roster-table) .score-up{color:var(--success)!important}
html[data-theme] .score-down,html[data-theme] :is(.team-live-score,.matchup-summary-side,.matchup-player-row,.team-roster-table) .score-down{color:var(--danger)!important}
html[data-theme] .score-same,html[data-theme] :is(.team-live-score,.matchup-summary-side,.matchup-player-row,.team-roster-table) .score-same{color:var(--text)!important}
html[data-theme] :is(.team-live-score,.matchup-summary-side,.matchup-player-row,.team-roster-table) strong.score-up{color:var(--success)!important}
html[data-theme] :is(.team-live-score,.matchup-summary-side,.matchup-player-row,.team-roster-table) strong.score-down{color:var(--danger)!important}
html[data-theme] :is(.team-live-score,.matchup-summary-side,.matchup-player-row,.team-roster-table) strong.score-same{color:var(--text)!important}
html[data-theme="dark"] .team-lineup-advisor-title{background:var(--panel-2);color:var(--text)}
html[data-theme="dark"] :is(.admin-notice,.owner-notice,.projection-notice,.job-message-ok,.tips-refresh-success){background:var(--badge-green-bg);color:var(--badge-green-text);border-color:var(--badge-green-line)}
html[data-theme="dark"] :is(.owner-errors,.projection-errors,.job-message-error){background:var(--badge-red-bg);color:var(--badge-red-text);border-color:var(--badge-red-line)}
html[data-theme="dark"] :is(.tips-date-inactive,.tips-start-unconfirmed,.tips-start-na,.team-bench){background:var(--panel-2)!important;color:var(--text)!important;border-color:var(--line)!important}
html[data-theme="dark"] .tips-result-row{background:var(--panel)!important;color:var(--text)!important}
html[data-theme="dark"] .tips-player-cell.tips-home:after{color:var(--badge-green-text)}
html[data-theme="dark"] .tips-player-cell.tips-away:after{color:var(--badge-yellow-text)}
html[data-theme="dark"] .tips-table td[data-label="Status"] .tips-fa{background:var(--panel-2);color:var(--text);border-color:var(--line)}
html[data-theme="dark"] .tips-table td[data-label="Status"] .tips-waiver{background:var(--badge-yellow-bg);color:var(--badge-yellow-text);border-color:var(--badge-yellow-line)}
/* Administrative states and image controls share the same theme as public pages. */
html[data-theme="dark"] :is(.status-card-success,.job-run-active.status-card-success,.status-ok,.job-live-results.ok,.advisor-style-balanced,.team-active,.goalie-status-confirmed){background:var(--badge-green-bg)!important;color:var(--badge-green-text)!important;border-color:var(--badge-green-line)!important}
html[data-theme="dark"] :is(.status-card-warning,.job-run-active.status-card-warning,.status-stale,.job-live-results.warning,.advisor-style-conservative,.goalie-status-likely,.target-waiver){background:var(--badge-yellow-bg)!important;color:var(--badge-yellow-text)!important;border-color:var(--badge-yellow-line)!important}
html[data-theme="dark"] :is(.status-card-failed,.job-run-active.status-card-failed,.status-failed-pill,.job-live-results.error,.advisor-style-aggressive,.advisor-delete,.goalie-status-not-starting){background:var(--badge-red-bg)!important;color:var(--badge-red-text)!important;border-color:var(--badge-red-line)!important}
html[data-theme="dark"] .job-outcomes-cleared .status-card:not(.job-run-active){background:var(--panel)!important;color:var(--text)!important;border-color:var(--line)!important}
html[data-theme="dark"] :is(.team-image-preview,.advisor-admin-image,.team-icon-modal-close,.team-icon-advisor-input,.team-lineup-advisor-body,.position-count-pill,.status-empty){background:var(--panel-2);color:var(--text);border-color:var(--line)}
html[data-theme="dark"] .job-live-results:not(.ok):not(.error):not(.warning){background:var(--selection-bg);color:var(--text);border-color:var(--line)}
html[data-theme="dark"] :is(.team-next-lineup-empty,.team-next-opponent-vs){color:var(--muted)!important}
html[data-theme="dark"] .tips-line-filter.active,html[data-theme="dark"] .tips-goalie-filter.active,html[data-theme="dark"] .tips-pp-filter.active{background:var(--badge-green-bg);color:var(--badge-green-text);border-color:var(--badge-green-line)}
html[data-theme="dark"] :is(.tips-line-filter[data-line="2"].active,.tips-goalie-filter[data-goalie="2"].active,.tips-pp-filter[data-pp="2"].active){background:var(--badge-yellow-bg);color:var(--badge-yellow-text);border-color:var(--badge-yellow-line)}
html[data-theme="dark"] .tips-line-filter[data-line="3"].active{background:var(--badge-orange-bg);color:var(--badge-orange-text);border-color:var(--badge-orange-line)}
html[data-theme="dark"] :is(.tips-line-filter[data-line="4"].active,.tips-injury-filter.active){background:var(--badge-red-bg);color:var(--badge-red-text);border-color:var(--badge-red-line)}

/* Game time and live NHL score remain readable on every dark roster row. */
html[data-theme="dark"] :is(.matchup-player-opponent,.team-player-opponent) > :is(.team-playing-text,.team-home,.team-away){color:#fde68a!important}
/* Shared expanded matchup rows. Natural height preserves schedule and all stats. */
.ecfhl-scoreboard .matchup-expanded .matchup-player-row{
 display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;
 grid-template-rows:auto!important;align-items:start!important;gap:4px 8px!important;
 height:auto!important;min-height:0!important;overflow:visible!important;
 padding:7px 10px!important;box-sizing:border-box;border-bottom:1px solid var(--line)!important;
}
.ecfhl-scoreboard .matchup-expanded .matchup-player-main{
 display:block!important;grid-column:1!important;grid-row:1!important;
 width:auto!important;min-width:0!important;padding:0!important;
}
.ecfhl-scoreboard .matchup-expanded .matchup-player-name{
 display:flex!important;flex-wrap:wrap!important;gap:3px!important;
 width:100%!important;font-size:14px!important;line-height:1.15!important;
}
.ecfhl-scoreboard .matchup-expanded .matchup-player-name strong{
 flex-basis:100%!important;width:100%!important;min-width:0!important;
 white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
}
.ecfhl-scoreboard .matchup-expanded .matchup-player-name a{color:var(--text);text-decoration:none!important}
.ecfhl-scoreboard .matchup-expanded .matchup-player-name .pill{font-size:9px!important;padding:1px 4px!important;line-height:1.1!important}
.ecfhl-scoreboard .matchup-expanded .matchup-player-opponent{
 display:flex!important;flex-direction:column!important;gap:2px!important;
 margin:3px 0 0!important;padding:0!important;min-height:0!important;
 width:auto!important;font-size:10px!important;line-height:1.2!important;
 white-space:normal!important;overflow:visible!important;
}
.ecfhl-scoreboard .matchup-expanded .matchup-player-cats{
 position:static!important;display:flex!important;flex-wrap:wrap!important;
 gap:3px 5px!important;margin:0!important;font-size:9px!important;color:var(--muted);
}
.ecfhl-scoreboard .matchup-expanded .matchup-player-metrics{
 grid-column:2!important;grid-row:1!important;position:static!important;
 display:block!important;align-self:start!important;margin:0!important;padding:0!important;
}
.ecfhl-scoreboard .matchup-expanded .matchup-player-today{
 position:static!important;display:flex!important;flex-direction:column!important;
 align-items:center!important;gap:3px!important;margin:0!important;
}
.ecfhl-scoreboard .matchup-expanded .matchup-player-today strong{
 order:0!important;font-size:28px!important;font-weight:900!important;line-height:1!important;
 font-variant-numeric:tabular-nums;
}
.ecfhl-scoreboard .matchup-expanded .matchup-player-today span{
 order:1!important;font-size:8px!important;font-weight:800!important;line-height:1.2!important;
 text-transform:uppercase;letter-spacing:.04em;color:var(--muted);
}
.ecfhl-scoreboard .matchup-expanded .matchup-player-blank{min-height:64px!important}
.ecfhl-scoreboard .matchup-expanded :is(.matchup-section-title,.team-live-section-title){
 background:var(--panel-2)!important;color:var(--muted)!important;
 font-size:10px!important;padding:6px 10px!important;
}
.current-team-page .team-roster-table .team-today-fpts{font-size:36px!important;font-weight:900!important;line-height:1!important;font-variant-numeric:tabular-nums}

/* Neutralize roster-only opponent styling inside the shared matchup cards. */
.ecfhl-scoreboard .matchup-expanded .matchup-player-opponent{align-items:flex-start!important;justify-content:flex-start!important;text-align:left!important}
.ecfhl-scoreboard .matchup-expanded .matchup-player-opponent > :is(.team-playing-text,.team-home,.team-away){
 position:static!important;inset:auto!important;transform:none!important;
 width:auto!important;align-self:flex-start!important;text-align:left!important;
 font-size:10px!important;line-height:1.2!important;font-weight:400!important;
 color:var(--text)!important;
}
html[data-theme="dark"] .ecfhl-scoreboard .matchup-expanded .matchup-player-opponent > :is(.team-playing-text,.team-home,.team-away){color:#fde68a!important}

html[data-theme] :is(.matchup-player-row,.team-player-data-row,.team-target-row).team-ir-row{background:var(--ir-bg)!important;color:var(--text)}
html[data-theme] .pill.team-ir{background:var(--ir-bg)!important;color:var(--ir-text)!important;border-color:var(--ir-line)!important}

/* Shared table headers: position blue, with distinct reserve-group colors. */
:root{--table-heading-bg:var(--heading-bg);--table-heading-text:var(--heading-text)}

.roster-table-heading{--roster-heading-bg:var(--table-heading-bg);--roster-heading-text:var(--table-heading-text)}
.roster-table-heading[data-roster-section="IR"]{--roster-heading-bg:var(--reserve-ir);--roster-heading-text:#fff}
.roster-table-heading[data-roster-section="Bench"]{--roster-heading-bg:var(--reserve-bench);--roster-heading-text:#fff}
.roster-table-heading[data-roster-section="Minors"]{--roster-heading-bg:var(--reserve-minors);--roster-heading-text:#172033}
html[data-theme] main :is(.ecfhl-scoreboard,.individual-team-page) .roster-table-heading{
 background:var(--roster-heading-bg)!important;color:var(--roster-heading-text)!important;
 border-color:color-mix(in srgb,var(--roster-heading-bg) 75%,#000)!important;
}
html[data-theme] main table thead th,
html[data-theme] main :is(.data-table,.season-player-table,.league-teams-table,.tips-table,.player-profile table) thead th,
html[data-theme] main .season-player-table thead th.myproj,
html[data-theme] .player-fixed-header thead th{
 background:var(--table-heading-bg)!important;color:var(--table-heading-text)!important;
 border-bottom-color:color-mix(in srgb,var(--table-heading-bg) 75%,#000)!important;
}
html[data-theme] main table thead th a,html[data-theme] .player-fixed-header thead th a{color:inherit!important}
html[data-theme] main .team-lineup-advisor-title{background:var(--table-heading-bg)!important;color:var(--table-heading-text)!important}

/* ECFHL visual system. Page assets own layout; this file owns the shared skin.
   Use app.css tokens for surfaces/actions and the semantic tokens above for states. */
html{color-scheme:light;scroll-padding-top:76px}
html[data-theme="dark"]{color-scheme:dark}
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased;background:var(--bg);color:var(--text)}
button,input,select,textarea{font-family:inherit}
button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}
::selection{background:var(--accent-soft);color:var(--text)}
:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}
:where(a,button,input,select,textarea,summary){transition:background-color .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease}
:where(h1,h2,h3){text-wrap:balance}
:where(.page-head,.league-teams-heading,.team-page-head) h1{font-weight:800;letter-spacing:-.035em}
.page-head p{font-size:14px;line-height:1.55}
.page-head .eyebrow,.overview-hero .eyebrow{color:var(--accent);font-size:10px;letter-spacing:.12em;font-weight:800}

/* The navy masthead anchors both themes. */
.site-header{background:linear-gradient(115deg,var(--navy),var(--navy-2));border-bottom:1px solid #ffffff14;box-shadow:0 2px 12px #00000012}
.site-header .brand-copy strong{font-weight:800;letter-spacing:.09em}
.site-header .brand-copy small{color:var(--header-text);opacity:.75}
.site-header .main-nav>a.active,.site-header .nav-dropdown.active>.nav-dropdown-row{background:#ffffff12!important;box-shadow:inset 0 -2px 0 var(--focus)}
.site-header .main-nav a:focus-visible,.site-header button:focus-visible{outline-color:#93c5fd}
.site-header .nav-dropdown-menu,.site-header .push-team-picker{background:var(--navy-2);border-color:#ffffff26;border-radius:var(--radius);box-shadow:var(--shadow-raised)}
.site-header .nav-dropdown-menu a:hover{background:#ffffff12!important}
.site-header .other-menu-heading{color:var(--header-text)}
.header-theme-toggle{width:32px;height:32px;border:1px solid #ffffff26!important;border-radius:var(--radius-sm)!important;background:#ffffff08!important;opacity:1!important;color:#ffffff!important;font-size:17px!important}
.header-theme-toggle:hover{background:#ffffff18!important}
.header-filter-button{color:var(--header-text)}
.header-filter-button.active{background:var(--action-bg);color:var(--on-action)}
.header-filter-button:hover:not(.active){background:#ffffff12;color:#ffffff}
.site-footer{background:linear-gradient(115deg,var(--navy),var(--navy-2));border-top:1px solid var(--line)}

/* One surface treatment across public, archive, account and admin pages. */
:is(.card,.table-card,.league-teams-panel,.overview-home__card,.season-card,.standings-award-card,.team-next-opponent,.team-lineup-advisor,.franchise-summary,.stats-grid){border-radius:var(--radius);border-color:var(--line);background:var(--panel);box-shadow:var(--shadow)}
:is(.card,.table-card,.league-teams-panel,.overview-home__card,.season-card,.standings-award-card){color:var(--text)}
:is(.rule-card-head,.leader-card-title,.season-card-head,.standings-award-head){background:var(--heading-bg);color:var(--heading-text);border-color:#ffffff14}
:is(.leader-card-title small,.season-card-head span,.season-card-head .fantrax-standings-link){color:#d6e5fa}
.rule-card-head h2{color:inherit}
:is(.season-card,.feature-link,.season-action-card):hover{border-color:var(--focus);box-shadow:var(--shadow-raised)}
:is(.overview-home__date,.page-date-badge,.pill,.season-badge){background:var(--panel-2);border-color:var(--line)}
:where(.section-title h2,.standings-awards h2,.owner-settings-fieldset legend){letter-spacing:-.02em}

/* Clear filled actions, subdued secondary actions and consistent selected filters. */
html[data-theme] .button{font-family:inherit;cursor:pointer;border-radius:var(--radius-sm);font-weight:750}
html[data-theme] :is(.button.primary,.guest-signup-primary,.tips-add-button:not(.tips-add-disabled),.main-nav a.nav-create-account){background:var(--action-bg)!important;border-color:var(--action-bg)!important;color:var(--on-action)!important;box-shadow:0 2px 5px #2458d31a}
html[data-theme] :is(.button.primary,.guest-signup-primary,.tips-add-button:not(.tips-add-disabled),.main-nav a.nav-create-account):hover{background:var(--action-hover)!important;border-color:var(--action-hover)!important}
html[data-theme] :is(.button.secondary,.button.status-back,.button.test-notification){background:var(--panel-2);color:var(--text);border:1px solid var(--line)}
html[data-theme] :is(.button.secondary,.button.status-back,.button.test-notification):hover{background:var(--hover-bg);border-color:var(--focus)}
html[data-theme] :is(.filter-button,.player-filter,.team-date-inactive,.tips-date-inactive){background:var(--panel-2)!important;color:var(--muted)!important;border-color:var(--line)!important;border-radius:var(--radius-sm)}
html[data-theme] :is(.filter-button,.player-filter,.team-date-inactive,.tips-date-inactive):hover{background:var(--hover-bg)!important;color:var(--text)!important}
html[data-theme] :is(.filter-button.active,.player-filter.active){background:var(--action-bg)!important;color:var(--on-action)!important;border-color:var(--action-bg)!important;box-shadow:0 1px 3px #2458d322}
html[data-theme] :is(.tips-line-filter,.tips-goalie-filter,.tips-pp-filter,.tips-injury-filter):not(.active){background:var(--panel-2);color:var(--muted);border-color:var(--line)}
html[data-theme] :is(.control,.owner-form input:not([type=checkbox]):not([type=radio]),.projection-input,.advisor-input,.advisor-style-select,.league-teams-sort select){background:var(--panel);color:var(--text);border-color:var(--line);border-radius:var(--radius-sm)}
html[data-theme] main :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=hidden]),select,textarea):focus{outline:2px solid var(--focus);outline-offset:2px}
html[data-theme] :is(.owner-setting input:checked,.owner-team-choice input,.owner-goalie-choice input){accent-color:var(--action-bg)}
html[data-theme] .owner-setting input:checked{background:var(--action-bg)}
html[data-theme] :is(.owner-team-choice,.owner-goalie-choice):has(input:checked){border-color:var(--focus);background:var(--selection-bg)}

/* Tables retain their existing column widths, frozen columns and mobile layouts. */
html[data-theme] :is(.data-table,.season-player-table,.league-teams-table,.team-roster-table,.tips-table,.player-profile table){font-variant-numeric:tabular-nums}
html[data-theme] main table thead th,html[data-theme] .player-fixed-header thead th{font-weight:800;border-bottom-color:#ffffff1f!important}
html[data-theme] main table thead th :is(a,button){color:inherit}
@media(hover:hover) and (pointer:fine){
 html[data-theme] .data-table:not(.team-roster-table) tbody tr:hover td{background:var(--hover-bg)}
}
html[data-theme] .league-team-row:hover{background:var(--hover-bg)}
html[data-theme] .league-team-row-mine,html[data-theme] .league-team-row-mine:hover{background:var(--selection-bg)}
html[data-theme] .league-team-mine-label,html[data-theme] .league-teams-my-link{color:var(--accent)}
html[data-theme] .standings-award-rank{background:var(--panel-2);color:var(--text)}
html[data-theme] .standings-award-player>span,html[data-theme] .standings-award-stat span{color:var(--muted)!important}
html[data-theme] .standings-period-body{background:var(--panel-2)}
html[data-theme] .standings-matchup-card{background:var(--panel)}
html[data-theme] .team-roster-table tr.team-bench:not(.team-ir-row){background:var(--panel-2)}

/* Matchups share the same neutral surface, with blue reserved for My Team. */
html[data-theme] main :is(.ecfhl-scoreboard,.matchup-card){border:1px solid var(--line)!important;border-radius:var(--radius);background:var(--panel)!important;box-shadow:var(--shadow)!important}
html[data-theme] main :is(.ecfhl-scoreboard,.matchup-card) :is(.team-live-matchup-summary,.matchup-summary){background:var(--panel)!important}
html[data-theme] main :is(.ecfhl-scoreboard,.matchup-card)[open]{border-color:var(--focus)!important;box-shadow:0 0 0 1px var(--focus),var(--shadow)!important}
html[data-theme] main .notification-team-matchup{border-color:var(--focus)!important;background:var(--selection-bg)!important}
html[data-theme] main .notification-team-matchup :is(.team-live-matchup-summary,.matchup-summary){background:var(--selection-bg)!important}
html[data-theme] main .overview-home .overview-matchup .team-live-matchup-summary{background:var(--panel-2)!important}
html[data-theme] main .overview-home .overview-matchup--mine .team-live-matchup-summary{background:var(--selection-bg)!important}
html[data-theme] main .matchup-projected-score{background:var(--accent-soft);color:var(--accent)!important;border:1px solid var(--line)}
html[data-theme] .individual-team-page{--team-blue:var(--accent);--team-heading-bg:var(--heading-bg);--team-heading-text:var(--heading-text)}
html[data-theme] .current-teams-page .matchup-period-label{color:var(--muted)}

/* Home card title bands reinforce the same blue table-heading palette. */
.overview-hero{background:linear-gradient(115deg,var(--panel) 40%,var(--accent-soft));border-bottom:1px solid var(--line)}
.overview-home__card{overflow:hidden}
.overview-home__title{margin:-12px -12px 10px;padding:11px 12px;min-height:40px;background:var(--heading-bg);border-bottom:1px solid #ffffff14}
.overview-home__title h2{color:var(--heading-text);font-size:13px;letter-spacing:.01em}
.overview-home__title>a{color:#d6e5fa}
.overview-home__title>a:hover{color:#ffffff}
.overview-home .overview-matchup{border-color:var(--line);box-shadow:none}
.overview-home :is(.overview-standing,.overview-target-link):hover{background:var(--hover-bg);border-radius:var(--radius-sm)}
.overview-home__heading h2{letter-spacing:-.02em}

/* All notices and badges use semantic colors in both themes. */
html[data-theme] :is(.goalie-status-confirmed,.tips-start-confirmed,.player-goalie-confirmed,.status-ok,.advisor-style-balanced,.team-active,.status-active){background:var(--badge-green-bg)!important;color:var(--badge-green-text)!important;border-color:var(--badge-green-line)!important}
html[data-theme] :is(.goalie-status-likely,.tips-start-likely,.tips-start-probable,.player-goalie-likely,.status-stale,.advisor-style-conservative,.target-waiver){background:var(--badge-yellow-bg)!important;color:var(--badge-yellow-text)!important;border-color:var(--badge-yellow-line)!important}
html[data-theme] :is(.goalie-status-not-starting,.player-goalie-not-starting,.status-failed-pill,.advisor-style-aggressive,.status-inactive){background:var(--badge-red-bg)!important;color:var(--badge-red-text)!important;border-color:var(--badge-red-line)!important}
html[data-theme] :is(.player-vegas-odds-good){background:var(--badge-green-bg)!important;color:var(--badge-green-text)!important;border-color:var(--badge-green-line)!important}
html[data-theme] :is(.player-vegas-odds-neutral){background:var(--badge-yellow-bg)!important;color:var(--badge-yellow-text)!important;border-color:var(--badge-yellow-line)!important}
html[data-theme] :is(.player-vegas-odds-bad){background:var(--badge-red-bg)!important;color:var(--badge-red-text)!important;border-color:var(--badge-red-line)!important}
html[data-theme] :is(.owner-notice,.admin-notice,.projection-notice,.job-message-ok,.job-live-results.ok,.tips-refresh-success){background:var(--badge-green-bg)!important;color:var(--badge-green-text)!important;border-color:var(--badge-green-line)!important}
html[data-theme] :is(.owner-errors,.projection-errors,.job-message-error,.job-live-results.error){background:var(--badge-red-bg)!important;color:var(--badge-red-text)!important;border-color:var(--badge-red-line)!important}
html[data-theme] :is(.job-live-results.warning){background:var(--badge-yellow-bg)!important;color:var(--badge-yellow-text)!important;border-color:var(--badge-yellow-line)!important}
html[data-theme] .job-outcomes-cleared .status-card:not(.job-run-active){background:var(--panel)!important;color:var(--text)!important;border-color:var(--line)!important}
html[data-theme] .job-run-active.status-card-success{background:var(--badge-green-bg)!important;border-color:var(--badge-green-line)!important}
html[data-theme] .job-run-active.status-card-warning{background:var(--badge-yellow-bg)!important;border-color:var(--badge-yellow-line)!important}
html[data-theme] .job-run-active.status-card-failed{background:var(--badge-red-bg)!important;border-color:var(--badge-red-line)!important}

/* Dialogs match the cards while remaining compact on phones. */
html[data-theme] :is(.player-stats-dialog,.guest-signup-dialog,.navigation-loading-card){border-radius:var(--radius);background:var(--panel);color:var(--text);box-shadow:var(--shadow-raised)}
html[data-theme] #player-stats-dialog .player-profile header{background:var(--heading-bg);color:var(--heading-text)}
html[data-theme] #player-stats-dialog .player-stats-close{background:var(--heading-bg);color:var(--heading-text);border-color:#ffffff30}
html[data-theme] #player-stats-dialog .player-profile header .eyebrow{color:#d6e5fa}
html[data-theme] #player-stats-dialog .player-profile-overview .player-profile-projection{color:var(--accent)}
html[data-theme] #player-stats-dialog .player-profile header .player-profile-rookie{color:#f2cb70}
html[data-theme] .guest-signup-dialog::backdrop{background:#081220b8;backdrop-filter:blur(5px)}
html[data-theme] .player-stats-dialog::backdrop{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
html[data-theme] .mobile-primary-nav{isolation:isolate;background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 92%,white),var(--panel) 45%,color-mix(in srgb,var(--panel) 92%,black));box-shadow:inset 0 1px 0 #ffffff40,inset 0 -2px 0 #00000025,0 4px 0 color-mix(in srgb,var(--panel) 70%,black),0 10px 18px #00000035,0 20px 34px #00000030;border-color:color-mix(in srgb,var(--line) 75%,white);border-radius:16px}
html[data-theme="light"] .mobile-primary-nav{background:linear-gradient(180deg,#fdfcf8,#f7f5ef 45%,#ece9e1);border-color:#d8d5cc;box-shadow:inset 0 1px 0 #ffffff,inset 0 -2px 0 #d7d2c6,0 4px 0 #d5d0c4,0 10px 18px #142c4a24,0 20px 34px #142c4a1a}
html[data-theme] .mobile-primary-nav::before{content:"";position:absolute;top:1px;left:16px;right:16px;height:1px;background:linear-gradient(90deg,transparent,#ffffff60,transparent);pointer-events:none}
html[data-theme] .mobile-primary-nav a{border-radius:10px;position:relative;transition:background .16s ease,color .16s ease,transform .12s ease,box-shadow .12s ease}
html[data-theme] .mobile-primary-nav .mobile-nav-icon{filter:drop-shadow(0 2px 1px #00000030)}
html[data-theme] .mobile-primary-nav a.active{background:linear-gradient(180deg,color-mix(in srgb,var(--accent-soft) 92%,white),var(--accent-soft))!important;color:var(--accent);transform:translateY(-3px);box-shadow:inset 0 1px 0 #ffffff40,inset 0 -1px 0 #00000025,0 3px 0 color-mix(in srgb,var(--accent-soft) 65%,black),0 7px 12px #00000035,0 0 12px color-mix(in srgb,var(--focus) 15%,transparent)}
html[data-theme] .mobile-primary-nav a.active .mobile-nav-label{color:var(--accent)}
html[data-theme] .mobile-primary-nav a:active{transform:translateY(1px) scale(.98);box-shadow:inset 0 2px 4px #00000025,0 1px 0 #00000020}
@media(prefers-reduced-motion:reduce){html[data-theme] .mobile-primary-nav a{transition:none}}

@media(min-width:901px){.current-teams-page .ecfhl-scoreboard{border-radius:10px}}
@media(max-width:600px){
 .page-head p{font-size:12px}
 .overview-home__title{padding:10px 12px}
 .overview-hero h1{font-size:26px}
}
@media(prefers-reduced-motion:reduce){
 :where(a,button,input,select,textarea,summary){transition:none}
 html{scroll-behavior:auto}
}

html[data-theme] :is(.player-filter.selected,.tips-filter-button.active){background:var(--action-bg)!important;color:var(--on-action)!important;border-color:var(--action-bg)!important;box-shadow:0 1px 3px #2458d322}
html[data-theme] main :is(.tips-search,.tips-filter-button,.player-slicer select){background:var(--panel);color:var(--text);border-color:var(--line);border-radius:var(--radius-sm)}
html[data-theme] main .tips-filter-button:not(.active){background:var(--panel-2);color:var(--muted)}
html[data-theme] .season-player-table tbody .myproj{color:var(--accent)!important}
html[data-theme] .season-player-table tbody tr.player-on-my-team{--player-row-bg:var(--selection-bg)}
html[data-theme] .individual-team-page{--team-idle-bg:var(--game-upcoming)}
html[data-theme] .advisor-style-neutral{background:var(--selection-bg);color:var(--accent);border-color:var(--focus)}
html[data-theme] :is(.leader-card-head .leader-expand-button,.season-card-head .expand-card-icon){color:var(--heading-text)}
html[data-theme] .draft-season-header td{background:var(--heading-bg);color:var(--heading-text)}
html[data-theme] .draft-round-header td{background:var(--panel-2);color:var(--muted)}
html[data-theme] :is(.team-icon-modal-close,.team-icon-advisor-input){background:var(--panel);color:var(--text)}
html[data-theme] .team-icon-modal-close:hover{background:var(--hover-bg)}
html[data-theme] .site-header :is(.nav-live-icon,.nav-live-text){color:#ff8992!important}
html[data-theme] .team-target-add{background:var(--action-bg);color:var(--on-action);border-color:var(--action-bg)}
html[data-theme] .team-target-add:hover{background:var(--action-hover);border-color:var(--action-hover)}
html[data-theme] .tips-ir{background:#b42338!important;color:#ffffff!important;border-color:#b42338!important}

/* Shared image viewer: silhouette shadows lift transparent artwork off the page. */
html[data-theme] .team-icon-modal{background:rgba(8,18,32,.64);backdrop-filter:blur(3px)}
html[data-theme] .team-icon-modal-card{isolation:isolate;perspective:900px;gap:16px}
.team-icon-modal-card::before{content:"";position:absolute;inset:15% -6% 10%;z-index:-1;border-radius:50%;background:radial-gradient(ellipse,rgba(115,181,255,.18),transparent 68%);pointer-events:none}
html[data-theme] .team-icon-modal-image{filter:drop-shadow(0 22px 16px rgba(0,0,0,.55)) drop-shadow(0 0 14px rgba(147,197,253,.32));transform-origin:50% 65%;transition:transform .25s ease,filter .25s ease;max-height:calc(88dvh - 170px)}
.team-icon-modal.open:not(.loading) .team-icon-modal-image{animation:team-viewer-pop .42s cubic-bezier(.2,.8,.25,1) backwards}
html[data-theme] .team-icon-modal-title{position:relative;color:#f0f6ff;font-weight:900;font-size:clamp(21px,3.5vw,32px);font-style:italic;letter-spacing:.035em;line-height:1.15;text-wrap:balance;text-shadow:0 2px 2px #081220,0 6px 20px #081220b3;padding-bottom:12px}
.team-icon-modal-title::after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:clamp(48px,20%,90px);height:3px;border-radius:3px;background:linear-gradient(90deg,#93c5fd,#e4c878);box-shadow:0 2px 12px #93c5fd66}
.team-icon-modal-actions{position:relative}
@keyframes team-viewer-pop{from{opacity:0;transform:translateY(18px) scale(.9) rotateX(7deg)}to{opacity:1;transform:translateY(0) scale(1) rotateX(0)}}
@media(hover:hover) and (pointer:fine){
 .team-icon-modal-image:hover{transform:translateY(-5px) scale(1.015);filter:drop-shadow(0 28px 18px rgba(0,0,0,.6)) drop-shadow(0 0 20px rgba(147,197,253,.4))}
}
@media(max-width:700px){
 html[data-theme] .team-icon-modal-card{gap:12px}
 html[data-theme] .team-icon-modal-title{font-size:clamp(20px,5vw,28px);padding-inline:28px}
}
@media(prefers-reduced-motion:reduce){
 .team-icon-modal.open:not(.loading) .team-icon-modal-image{animation:none}
 html[data-theme] .team-icon-modal-image,html[data-theme] .team-icon-modal-image:hover{transition:none;transform:none}
}

.live-score-updates-actions{display:flex;align-items:center;gap:3px}
.live-score-updates-actions button{display:inline-flex;align-items:center;justify-content:center}
.live-score-update-player[data-new="true"]{background:var(--badge-green-bg);border-left-color:var(--success);border-radius:4px}
.live-score-update-player[data-new="true"] .live-score-update-player-points{color:var(--success)}
html[data-theme] :is(.matchup-player-row,.team-player-data-row).team-injured-row.team-injured-row{background:var(--badge-red-bg)!important;box-shadow:inset 3px 0 0 var(--badge-red-line)}
html[data-theme] .team-player-data-row.team-injured-row>td{background:var(--badge-red-bg)!important}

/* Subtle roster contrast; live, finished and injury colors retain priority. */
html[data-theme="light"] .individual-team-page{--roster-playing-bg:#f6f9ff;--roster-idle-bg:#eff2f6}
html[data-theme="dark"] .individual-team-page{--roster-playing-bg:#1c293b;--roster-idle-bg:#182231}
html[data-theme] .individual-team-page .team-player-data-row[data-playing="1"]:not(.team-game-live-row):not(.team-game-finished-row):not(.team-injured-row):not(.team-ir-row){background:var(--roster-playing-bg)!important}
html[data-theme] .individual-team-page .team-player-data-row[data-playing="0"]:not(.team-injured-row):not(.team-ir-row){background:var(--roster-idle-bg)!important}

html[data-theme] .live-score-updates-toggle{width:auto;gap:4px;padding:3px 8px}
.live-score-updates-actions button:disabled{opacity:.35;cursor:default}
.live-score-updates-filters{padding:8px 12px;display:flex;gap:8px;flex-wrap:wrap;font-size:12px}
.live-score-updates-filters select{max-width:180px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:5px;padding:4px}
.live-score-updates-restore{border:0;background:var(--panel);color:var(--text);padding:12px;cursor:pointer}
.live-score-updates[data-minimized="true"]{width:auto;min-width:100px}
.live-score-updates[data-minimized="true"] :is(.live-score-updates-heading,.live-score-updates-filters,.live-score-updates-list){display:none}
.live-score-updates-restore[hidden]{display:none}

.live-score-update-new{display:inline-block;margin-right:6px;padding:1px 5px;border-radius:5px;background:var(--success);color:var(--panel);font-size:10px;font-weight:800;vertical-align:middle}
