*{box-sizing:border-box}html{color-scheme:light}body{margin:0;background:#f4f6f8;color:#223346;font:16px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}main{max-width:1000px;margin:0 auto;padding:18px 20px}.pages{display:flex;gap:4px;overflow-x:auto;padding-bottom:10px;border-bottom:1px solid #dce2e8;scrollbar-width:thin}.pages a{padding:7px 10px;white-space:nowrap;text-decoration:none;font-size:14px;color:#53667a;border-radius:4px}.pages a[aria-current]{color:white;background:#294b66}.pages a:hover{background:#e0e7ee;color:#294b66}.roster-total{font-size:12px;opacity:.75}.roster-total:not(:empty)::before{content:' · '}header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:15px 0 11px}h1{font-size:23px;line-height:1.2;margin:0;letter-spacing:-.025em}#week-info{font-size:12px;color:#66788b}.toolbar{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:center;font-size:12px;color:#617285}.controls{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.controls label{display:flex;align-items:center;gap:4px;white-space:nowrap}select,button{font:inherit;color:inherit}select,#refresh-week,#copy-sync{background:#fff;border:1px solid #cbd5df;border-radius:4px;padding:6px 8px;cursor:pointer;font-size:12px;min-height:32px}input{accent-color:#294b66}h2{font-size:14px;font-weight:650;color:#54677a;margin:15px 0 6px}h2 span{font-size:12px;color:#8291a0;margin-left:5px;font-weight:400}.roster-list{list-style:none;margin:0;padding:0;background:#fff;border:1px solid #dce3ea;border-radius:5px}.roster-row{border-bottom:1px solid #e5eaf0;min-width:0}.roster-row:last-child{border-bottom:0}.row-main{display:grid;grid-template-columns:minmax(0,1fr) auto 86px;gap:10px;align-items:center;padding:4px 11px;min-height:48px}.player{display:flex;align-items:center;gap:10px;min-width:0;text-align:left;border:0;background:none;padding:3px 0;cursor:pointer;min-height:40px}.player:hover .name{text-decoration:underline;text-underline-offset:3px}.portrait{display:grid;place-items:center;flex:none;width:34px;height:34px;border-radius:50%;background:#edf2f6;overflow:hidden;color:#78899a;font-size:12px}.portrait img{width:100%;height:100%;object-fit:cover;object-position:top}.name{font-size:16px;font-weight:550;overflow-wrap:anywhere;line-height:1.25}.tags{display:flex;justify-content:flex-end;align-items:center;gap:4px;flex-wrap:wrap;max-width:125px}.slot,.injury{display:inline-block;border-radius:3px;font-size:12px;font-weight:650;padding:3px 5px;line-height:1.15;white-space:nowrap}.slot.bench{background:#464c54;color:#fff}.injury{color:#fff;background:#bd3940}.schedule-cell{font-size:12px;color:#718294;text-align:right;min-width:0}.game-count{display:inline-block;white-space:nowrap;padding:3px 7px;border:1px solid #d1dbe6;border-radius:4px;font-size:12px;font-weight:650;background:#edf2f6;color:#607389}.game-count.bronze{background:#eed9c4;border-color:#d1ae88;color:#744b24}.game-count.silver{background:#e4e9ef;border-color:#b8c6d4;color:#485d73}.game-count.gold{background:#f7e3a2;border-color:#d9bd61;color:#71550e}.game-count.diamond{background:#ddf0ff;border-color:#a8c8e9;color:#375b89}.schedule-details{position:relative}.schedule-details summary{list-style:none;cursor:pointer;padding:6px 0}.schedule-details summary::-webkit-details-marker{display:none}.game-days{display:none}.game-dates{position:absolute;right:0;top:100%;width:235px;z-index:5;text-align:left;padding:10px 12px;background:#fff;border:1px solid #cbd7e3;border-radius:5px;box-shadow:0 4px 14px #1c364622;font-size:12px;line-height:1.5}.game-dates span{display:block;margin:3px 0}.stats-panel{background:#f6f8fa;border-top:1px solid #e5eaf0;padding:9px 12px 12px}.player-meta{font-size:12px;color:#6a7b8d;display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:8px}.player-meta a{color:#4b6b88}.stats-bar{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:4px;font-variant-numeric:tabular-nums}.stat{text-align:center;display:flex;flex-direction:column;gap:4px}.stat-label{font-size:12px;color:#718396}.stat-value{font-size:16px;font-weight:650}.live-scores{display:flex;gap:6px;overflow-x:auto;margin-top:10px;scrollbar-width:thin}.score{background:#fff;border:1px solid #dce3ea;padding:4px 7px;border-radius:3px;font-size:12px;white-space:nowrap}.score small{font-size:12px;color:#77889a;margin-left:6px}.score.live{border-color:#819fbf}.refresh-banner{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:9px 11px;border:1px solid #dec979;border-radius:4px;background:#fff5d7;margin-bottom:11px;color:#725a1b}.refresh-banner strong{font-size:12px}.refresh-banner p{font-size:12px;margin:3px 0 0}#copy-sync{white-space:nowrap}footer{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:13px;color:#7b8a98;font-size:12px}.schedule-warning{color:#956210}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid #5282b0;outline-offset:3px}button:disabled{opacity:.5}@media(max-width:600px){main{padding:10px 9px}.pages a{padding:8px;font-size:14px}header{margin:12px 0 9px}h1{font-size:21px}.toolbar{gap:7px}.controls{width:100%;gap:8px}#refresh-week{margin-left:auto}.row-main{grid-template-columns:minmax(0,1fr) auto 72px;gap:6px;padding:4px 8px}.player{gap:7px}.portrait{width:31px;height:31px}.name{font-size:14px}.tags{max-width:58px;gap:3px}.slot,.injury{font-size:12px;padding:2px 4px}.game-count{padding:3px 5px}.stats-bar{grid-template-columns:repeat(4,minmax(0,1fr));row-gap:10px}.stats-panel{padding:9px 10px 11px}.refresh-banner{flex-wrap:wrap}.game-dates{width:225px}.player-meta{font-size:12px}}

.player-label{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 9px;min-width:0}.positions{font-size:12px;font-weight:500;color:#63788d;white-space:nowrap;line-height:1.3}@media(max-width:600px){.player-label{display:block}.positions{display:block;margin-top:2px}}

.row-main{grid-template-columns:minmax(0,1fr) auto 112px}.games-with-team{display:flex;justify-content:flex-end;align-items:center;gap:6px;min-width:0}.team-logo{display:block;flex:none;width:24px;height:24px;object-fit:contain}.games-with-team .schedule-cell{flex:1}@media(max-width:600px){.row-main{grid-template-columns:minmax(0,1fr) auto 98px}.games-with-team{gap:4px}.team-logo{width:22px;height:22px}}

.name-line{display:inline-flex;align-items:center;gap:5px;min-width:0}.today-stick{font-size:13px;line-height:1;flex:none}.plays-today .name{color:#20713b;font-weight:650}

/* Subtle Canadiens jersey banner, only on Montreal NHL players. */
.roster-row[data-team="MTL"] .row-main{
 background-image:linear-gradient(rgba(255,255,255,.94),rgba(255,255,255,.94)),linear-gradient(to bottom,#af1e2d 0% 38%,#fff 38% 44%,#192168 44% 72%,#fff 72% 78%,#af1e2d 78% 100%);
 background-size:100% 100%,100% 100%;
 background-position:center,center;
 background-repeat:no-repeat;
}
@media(max-width:600px){.roster-row[data-team="MTL"] .row-main{background-size:100% 100%,58px 34px,100% 100%;background-position:center,60% center,center}}

.in-game-tag{display:inline-block;background:#277b41;color:#fff;border-radius:3px;font-size:12px;font-weight:700;padding:3px 5px;line-height:1.15;white-space:nowrap}
.roster-row.in-game{background:#d5f1dc}
.roster-row.in-game[data-team] .row-main{background:#d5f1dc}
.roster-row.in-game .stats-panel{background:#eaf7ed;border-top-color:#c8e5d0}
.roster-row.in-game .name{color:#1c6030;font-weight:650}
@media(max-width:600px){.in-game-tag{padding:2px 4px}}

/* Compact navigation and matchups. */
.compact-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 8px}
#team-select{min-width:0;max-width:calc(100% - 48px);width:auto;flex:1;font-size:20px;font-weight:650;color:#223346;background:#fff;border:1px solid #d5dee6;border-radius:5px;padding:9px 32px 9px 10px;height:44px;cursor:pointer}
#team-select option{font-size:16px;font-weight:400}
.week-line{display:flex;justify-content:space-between;gap:6px 12px;flex-wrap:wrap;margin:0 1px 10px;color:#728294;font-size:12px}
.week-line #roster-games{font-size:12px;font-weight:400}
.settings{position:relative;flex:none}
.settings>summary{list-style:none;cursor:pointer;display:grid;place-items:center;width:38px;height:40px;border:1px solid #d5dee6;border-radius:5px;background:white;color:#63788d;font-size:15px;letter-spacing:1px}
.settings>summary::-webkit-details-marker{display:none}
.settings-panel{position:absolute;right:0;top:calc(100% + 7px);z-index:20;width:268px;max-width:calc(100vw - 28px);padding:14px;background:#fff;border:1px solid #d4dee8;border-radius:6px;box-shadow:0 7px 20px #22334625;display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:center;font-size:14px}
.settings-panel select{font-size:14px;padding:7px;min-height:38px;max-width:100%}
.settings-panel .auto-option{grid-column:1/-1;display:flex;align-items:center;gap:7px;font-size:14px}
.settings-panel #refresh-week{grid-column:1/-1;margin:0;min-height:38px;font-size:14px}
.sync-details{grid-column:1/-1;display:grid;gap:5px;padding-top:10px;border-top:1px solid #e4eaf0;font-size:12px;color:#768798}
.live-scores{gap:7px;margin:0 0 12px;padding:0 0 3px}
.score{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-width:103px;padding:7px 10px;border-radius:5px;flex:none}
.match-teams{display:flex;align-items:center;justify-content:center;gap:9px}
.match-teams img{width:24px;height:24px;object-fit:contain}
.match-teams b{font-size:13px;font-weight:600;color:#455e76;font-variant-numeric:tabular-nums}
.score small{margin:0;font-size:12px;line-height:1.2}
.score.live small{color:#277b41;font-weight:700}
@media(max-width:600px){#team-select{font-size:18px}.compact-header{margin:0 0 8px}.week-line{margin-bottom:9px}.score{min-width:97px;padding:6px 8px}.match-teams{gap:7px}}

.scoreboard-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.scoreboard-row .live-scores{flex:1;min-width:0;margin:0;padding-bottom:3px}
.h2h-card{flex:0 0 278px;margin-left:auto;background:#fff;border:1px solid #d6e0e9;border-radius:5px;padding:8px 10px}
.h2h-score{display:grid;grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr);gap:6px;align-items:center;text-align:center}
.h2h-side{min-width:0}.h2h-name{display:block;font-size:12px;font-weight:600;color:#526a81;line-height:1.25;overflow-wrap:anywhere}
.h2h-side strong{display:block;font-size:24px;line-height:1.15;margin-top:3px;color:#223b55;font-variant-numeric:tabular-nums}
.h2h-vs{font-size:12px;color:#91a0ad}.h2h-stamp{font-size:12px;text-align:center;color:#8291a0;margin-top:5px}
@media(max-width:600px){.scoreboard-row{flex-direction:column;gap:9px}.scoreboard-row .live-scores{flex:auto;width:100%}.h2h-card{flex:auto;width:100%;padding:7px 10px}.h2h-side strong{font-size:22px}.h2h-stamp{margin-top:3px}}

#yahoo-sync{font-size:12px;color:#637482;margin-left:auto}.week-line{flex-wrap:wrap}#yahoo-sync.schedule-warning{color:#8b6427}
.event-banner{position:fixed;z-index:100;bottom:calc(14px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:11px;width:min(440px,calc(100% - 24px));padding:12px 13px;background:#183647;color:#fff;border:1px solid #325362;border-radius:8px;box-shadow:0 5px 18px #10232a26;animation:event-appear .18s ease-out}.event-portrait{width:44px;height:44px;border-radius:50%;object-fit:cover;background:#eff3f5;flex:none}.event-copy{display:flex;flex:1;min-width:0;flex-wrap:wrap;gap:2px 8px;align-items:baseline}.event-name{font-size:14px;overflow-wrap:anywhere}.event-action{font-size:14px;color:#d3e6ed}.event-context{flex-basis:100%;font-size:12px;color:#acc4cf}.event-banner[data-kind=goal] .event-action,.event-banner[data-kind=assist] .event-action{color:#a5e8b8;font-weight:650}.event-close{border:0;background:transparent;color:#d9e7ec;font-size:24px;width:34px;height:34px;flex:none;cursor:pointer}.event-close:focus-visible{outline:2px solid white}#events-status{font-size:12px;color:#66788b}#preview-event{border:1px solid #cbd5df;border-radius:4px;background:white;padding:6px 8px;text-align:left;cursor:pointer}@keyframes event-appear{from{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}@media(prefers-reduced-motion:reduce){.event-banner{animation:none}}
.event-banner[data-side=own]{border-color:#729d83}.event-banner[data-side=opponent]{border-color:#b88686}.event-open{display:flex;align-items:center;gap:11px;flex:1;min-width:0;border:0;padding:0;background:none;color:inherit;text-align:left;cursor:pointer}.event-open:focus-visible{outline:2px solid #b5ccda;outline-offset:5px}.history-open{display:block;margin:5px auto 0;border:0;background:none;color:#60788c;font-size:11px;cursor:pointer;padding:2px 6px}.history-open:hover{text-decoration:underline}#event-history{width:min(530px,calc(100% - 24px));max-height:80dvh;padding:16px;border:1px solid #d5dfe7;border-radius:8px;background:#fafbfd;color:#223b55}#event-history::backdrop{background:#12233366}#event-history header{display:flex;align-items:center;justify-content:space-between}.history-close{border:0;background:none;font-size:26px;color:inherit;cursor:pointer}.history-status{font-size:12px;color:#66798b;margin:6px 0 12px}.history-list{display:grid;gap:7px}.history-event{display:flex;gap:10px;align-items:center;border:1px solid #abc4b3;border-radius:5px;padding:8px;background:white}.history-event[data-side=opponent]{border-color:#d6b3b3}.history-event img{width:36px;height:36px;object-fit:cover;border-radius:50%}.history-event div{min-width:0;display:flex;flex-wrap:wrap;gap:3px 8px}.history-event strong,.history-event span{font-size:13px}.history-event small{flex-basis:100%;font-size:11px;color:#748392}
.live-panel{min-width:260px;flex:1;border:1px solid #dce3e7;border-radius:10px;background:#fff;padding:12px;max-width:520px}.live-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;letter-spacing:.07em;color:#61747f}.live-scope{font-size:11px;color:#7a8a94;white-space:nowrap}.history-shortcut{margin-left:auto}.latest-event{display:flex;width:100%;gap:10px;align-items:center;text-align:left;border:0;background:none;padding:12px 0 0;color:#172d3b}.latest-event>span{display:grid;gap:4px}.latest-action{font-size:14px}.latest-details,.latest-owner{font-size:12px;color:#63747e}.latest-portrait{object-fit:contain;border-radius:50%;background:#f1f4f6}.live-panel[data-side=own]{border-color:#9bbda7}.live-panel[data-side=opponent]{border-color:#d3a1a1}.live-panel.important{animation:goal-flash 1s ease-out 2}@keyframes goal-flash{50%{box-shadow:0 0 0 3px #cba95d66}}@media(prefers-reduced-motion:reduce){.live-panel.important{animation:none}}@media(max-width:600px){.live-panel{max-width:none;min-width:0;width:100%}.scoreboard-row{flex-wrap:wrap}}
/* Team identity across the latest-event card and live notifications. */
.live-panel,.event-banner{position:relative;isolation:isolate;overflow:hidden}.event-banner{position:fixed;background:#fff;color:#193246;border-radius:12px;padding:12px 14px;box-shadow:0 8px 28px #132f4324}.team-branded{background:linear-gradient(115deg,#fff 20%,var(--event-tint,#edf2f6))}.team-branded::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(160deg,transparent 60%,var(--event-tint) 60% 73%,transparent 73% 76%,var(--event-tint) 76% 85%,transparent 85%)}.event-watermark{position:absolute;z-index:-1;width:135px;height:110px;object-fit:contain;right:12px;bottom:-20px;opacity:.075;pointer-events:none;transform:rotate(-12deg)}.event-banner .event-watermark{right:30px;width:112px;height:92px;bottom:-15px;opacity:.085}.event-avatar{position:relative;display:block;flex:none;width:56px;height:56px;align-self:center}.event-avatar .latest-portrait,.event-avatar .event-portrait{display:block;width:56px;height:56px;border-radius:12px;object-fit:cover;object-position:50% 20%;background:linear-gradient(150deg,#f4f6f8,var(--event-tint,#e8eff3));border:1px solid #dce4e9}.event-club-badge{position:absolute!important;right:-11px!important;bottom:-8px!important;width:34px!important;height:34px!important;object-fit:contain!important;background:transparent!important;border:0!important;border-radius:0!important;padding:0!important;box-shadow:none!important;filter:drop-shadow(0 2px 3px rgba(22,38,52,.16))}.latest-event{gap:14px;margin-top:7px;padding:7px 0 2px;position:relative;text-decoration:none!important}.latest-event>span:not(.event-avatar){min-width:0;gap:3px;flex:1}.event-identity{display:block;color:#0969a8;font-size:10px;font-weight:850;line-height:1.4;letter-spacing:.045em;overflow-wrap:anywhere;text-transform:uppercase}.latest-action,.event-name{font-size:16px;letter-spacing:-.025em;font-weight:720;line-height:1.25;overflow-wrap:anywhere;color:#142f43}.latest-details{line-height:1.4;font-size:11px}.latest-owner{font-size:10px;color:#6c7f8a}.event-copy{display:grid;gap:3px;flex:1;min-width:0}.event-banner .event-action{display:none}.event-context{font-size:11px;line-height:1.4;color:#637887}.event-close{color:#748692;width:26px;height:30px;font-size:23px}.event-close:focus-visible{outline-color:#294b66}.live-panel-heading{position:relative;z-index:1}.event-banner[data-side=own]{border-color:#8dad98}.event-banner[data-side=opponent]{border-color:#c89b9b}.event-open{gap:14px;position:relative;z-index:1}.event-avatar[hidden],.event-watermark[hidden],.event-club-badge[hidden]{display:none}.event-identity:empty{display:none}@media(max-width:420px){.event-avatar,.event-avatar .latest-portrait,.event-avatar .event-portrait{width:48px;height:48px}.latest-action,.event-name{font-size:15px}.event-banner{padding:11px 12px;gap:7px}.event-watermark{right:0;width:110px}.latest-event,.event-open{gap:12px}}

/* Compact event strip below today's matches. Empty state is controls only. */
.scoreboard-row{margin-bottom:8px}
.live-panel{width:100%;max-width:none;min-width:0;flex:none;padding:7px 10px;margin:0 0 14px;border-radius:8px}
.live-panel-heading{justify-content:flex-start;gap:8px;font-size:14px;letter-spacing:0;min-height:30px}
.live-panel-heading>strong{white-space:nowrap;color:#354e60}
.live-panel-heading .live-scope{min-width:0;overflow:hidden;text-overflow:ellipsis}
.history-shortcut{flex:none;padding:6px 9px;background:transparent;border:1px solid #dce3e7;border-radius:5px;color:#536b7b;font:inherit;cursor:pointer}
.live-panel .latest-event{margin-top:5px;padding:4px 0 0;gap:10px}
.live-panel .latest-event[hidden]{display:none}
.live-panel .event-avatar,.live-panel .event-avatar .latest-portrait{width:38px;height:38px;border-radius:8px}
.live-panel .event-club-badge{width:28px!important;height:28px!important;right:-9px!important;bottom:-6px!important}
.live-panel .latest-action{font-size:14px}
.live-panel .latest-details,.live-panel .latest-owner,.live-panel .event-identity{font-size:12px;line-height:1.3}
.live-panel .latest-event>span:not(.event-avatar){display:flex;flex-wrap:wrap;align-items:baseline;gap:3px 10px}
.live-panel .latest-owner{flex-basis:100%}
.live-panel .event-watermark{width:95px;height:80px;bottom:-12px}
.history-shortcut:focus-visible,.latest-event:focus-visible{outline:2px solid #256682;outline-offset:2px}
@media(max-width:480px){.live-panel{padding:6px 8px}.live-panel-heading{gap:6px}.live-scope{font-size:10px}.history-shortcut{font-size:12px;padding:6px}.live-panel-heading>strong{font-size:13px}.live-panel .latest-details{flex-basis:100%}}


/* Recent-form arrows: last five appearances vs earlier selected-season average. */
.trend-arrow{display:inline-block!important;flex:none;width:auto;height:auto;padding:0;border:0;border-radius:0;background:transparent!important;font-size:15px;font-weight:900;line-height:1;text-decoration:none;vertical-align:middle}.trend-arrow.up{color:#16833a}.trend-arrow.down{color:#c53a42}.trend-arrow.steady,.trend-arrow.neutral{color:#738293}.trend-detail{font-size:12px;color:#687b8d;margin:0 0 9px;padding:6px 8px;border-radius:4px;background:#eef3f7}.name-line .trend-arrow{margin-left:3px}@media(max-width:600px){.trend-arrow{font-size:14px}.trend-detail{font-size:11px}}

.build-stamp{font-size:10px;color:#91a0ad}

.hot-streak{display:inline-block;flex:none;margin-left:1px;font-size:14px;line-height:1;vertical-align:middle}.hot-streak[hidden]{display:none!important}@media(max-width:600px){.hot-streak{font-size:13px}}

/* v7: streak context, five-game mini form, team momentum, and today's event points. */
.cold-streak{display:inline-block;flex:none;margin-left:1px;font-size:14px;line-height:1;vertical-align:middle}.cold-streak[hidden]{display:none!important}
.player-subline{display:inline-flex;align-items:center;gap:7px;min-width:0}.today-points{font-size:11px;font-weight:700;white-space:nowrap;color:#16833a}.today-points.negative{color:#c53a42}.today-points.inactive{color:#7c8996;font-weight:600}.today-points[hidden]{display:none!important}
.momentum-bar{display:flex;align-items:center;gap:7px;height:22px;margin:-2px 1px 8px;padding:2px 6px;border:1px solid #dce3e7;border-radius:4px;background:#fff;color:#637482;font-size:10px;line-height:1;white-space:nowrap;overflow:hidden}.momentum-label{font-weight:650;color:#516679;overflow:hidden;text-overflow:ellipsis}.momentum-counts{font-variant-numeric:tabular-nums}.momentum-meter{display:flex;flex:1;min-width:45px;max-width:150px;height:4px;overflow:hidden;border-radius:1px;background:#edf1f4}.momentum-meter i{display:block;flex-grow:0;flex-shrink:1;min-width:0}.momentum-up{background:#4aa765}.momentum-neutral{background:#a9b3bc}.momentum-down{background:#d46168}.momentum-bar.hot .momentum-label{color:#26723d}.momentum-bar.cold .momentum-label{color:#a33d44}
@media(max-width:600px){.cold-streak{font-size:13px}.player-subline{display:flex;margin-top:2px;gap:6px}.today-points{font-size:10px}.momentum-bar{height:21px;font-size:9.5px;gap:5px}.momentum-meter{max-width:90px}}

/* v14: Yahoo-style Monday-to-Sunday fantasy point total. */
.weekly-points-bar{display:flex;align-items:center;gap:7px;min-height:27px;margin:0 1px 7px;padding:4px 7px;border:1px solid #dce3e7;border-radius:4px;background:#fff;color:#637482;font-size:11px;line-height:1;white-space:nowrap;overflow:hidden}.weekly-points-label{font-weight:650;color:#516679}.weekly-points-value{font-size:13px;color:#243f55;font-variant-numeric:tabular-nums}.weekly-points-range{overflow:hidden;text-overflow:ellipsis}.weekly-points-state{margin-left:auto;font-size:9px;font-weight:750;letter-spacing:.06em;text-transform:uppercase;color:#7d8b97}.weekly-points-bar.live{border-color:#9bbda7;background:#f8fcf9}.weekly-points-bar.live .weekly-points-state{color:#24713d}.weekly-points-bar.warning .weekly-points-state{color:#a2682a}@media(max-width:600px){.weekly-points-bar{font-size:10px;gap:5px}.weekly-points-value{font-size:12px}.weekly-points-range{flex:1}.weekly-points-state{font-size:8px}}

/* v15 fantasy-critical event emphasis + finished-night recap */
.roster-row.fantasy-critical .row-main{position:relative;z-index:1;animation:fantasy-critical-positive 1.15s ease-out 2}
.roster-row.fantasy-critical[data-critical-tone=negative] .row-main{animation-name:fantasy-critical-negative}
.roster-row.fantasy-critical[data-critical-kind=hat-trick] .row-main{animation-name:fantasy-hat-trick;animation-duration:1.35s}
.event-banner.critical-event{box-shadow:0 8px 28px #132f4324,0 0 0 3px #d6b35b66;animation:event-appear .18s ease-out,critical-banner 1.05s ease-out 2}
.event-banner.critical-event[data-critical-kind=shutout-broken]{box-shadow:0 8px 28px #132f4324,0 0 0 3px #c9797966}
.live-panel.critical-event{box-shadow:0 0 0 2px #d6b35b55}
.daily-recap{display:grid;width:100%;gap:4px;text-align:left;border:0;background:none;padding:8px 0 3px;color:#17364a;cursor:pointer}
.daily-recap[hidden]{display:none}.daily-recap-label{font-size:10px;font-weight:800;letter-spacing:.07em;color:#687d89}.daily-recap-summary{font-size:14px;font-weight:700;line-height:1.35}.daily-recap-top{font-size:11px;color:#687d89}.live-panel.recap-mode{border-color:#a9c3b3;background:linear-gradient(115deg,#fff,#f3f8f5)}
.history-recap{display:grid;gap:3px;border:1px solid #b8cec0;background:#f5faf7;border-radius:6px;padding:9px 10px;margin:0 0 10px}.history-recap[hidden]{display:none}.history-recap strong{font-size:13px}.history-recap span{font-size:12px;color:#405968}.history-recap small{font-size:11px;color:#657984}
@keyframes fantasy-critical-positive{0%{box-shadow:inset 0 0 0 0 #5ca87500}35%{box-shadow:inset 4px 0 0 #5ca875,0 0 0 2px #5ca87544}100%{box-shadow:inset 0 0 0 0 #5ca87500}}
@keyframes fantasy-critical-negative{0%{box-shadow:inset 0 0 0 0 #bd6b6b00}35%{box-shadow:inset 4px 0 0 #bd6b6b,0 0 0 2px #bd6b6b44}100%{box-shadow:inset 0 0 0 0 #bd6b6b00}}
@keyframes fantasy-hat-trick{0%{box-shadow:inset 0 0 0 0 #c7a44800}30%{box-shadow:inset 5px 0 0 #c7a448,0 0 0 3px #c7a44855}100%{box-shadow:inset 0 0 0 0 #c7a44800}}
@keyframes critical-banner{40%{transform:translateX(-50%) scale(1.012)}}
@media(prefers-reduced-motion:reduce){.roster-row.fantasy-critical .row-main,.event-banner.critical-event{animation:none}.roster-row.fantasy-critical .row-main{box-shadow:inset 4px 0 0 #5ca875}.roster-row.fantasy-critical[data-critical-tone=negative] .row-main{box-shadow:inset 4px 0 0 #bd6b6b}}

.live-panel-heading .live-scope{display:none!important}
.weekly-points-range,.weekly-points-state{display:none!important}
.weekly-points-bar{gap:10px;align-items:center}
.weekly-points-label{margin-right:2px}

.live-panel .event-identity{color:#0969a8!important;font-weight:850!important}
.event-club-badge{clip-path:none!important}

/* v18: saved Yahoo fantasy matchup schedule. */
.fantasy-matchup-bar{display:flex;align-items:center;gap:8px;min-height:29px;margin:0 1px 7px;padding:4px 7px;border:1px solid #dce3e7;border-radius:4px;background:#fff;color:#53697a;font-size:11px}.fantasy-matchup-bar[hidden]{display:none}.fm-week{font-weight:700;color:#607384}.fm-opponent{font-size:13px;color:#213e55;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fm-open{margin-left:auto;border:0;background:transparent;color:#2b678b;font:inherit;font-weight:700;cursor:pointer;padding:4px 5px}.fm-open:hover{text-decoration:underline}#fantasy-schedule-dialog{width:min(420px,calc(100% - 24px));max-height:78dvh;padding:14px;border:1px solid #d5dfe7;border-radius:8px;background:#fbfcfd;color:#233e54}#fantasy-schedule-dialog::backdrop{background:#12233366}#fantasy-schedule-dialog header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.fm-close{border:0;background:none;color:inherit;font-size:25px;cursor:pointer}.fm-list{display:grid;gap:5px;max-height:55dvh;overflow:auto}.fm-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 9px;border:1px solid #e0e6eb;border-radius:5px;background:#fff;font-size:12px}.fm-row.current{border-color:#9bb9cb;background:#f4f9fc}.fm-row span{color:#70808d}.fm-row strong{text-align:right}.fm-meta{display:block;margin-top:9px;color:#84919b;font-size:10px}@media(max-width:600px){.fantasy-matchup-bar{font-size:10px;gap:6px}.fm-opponent{font-size:12px}.fm-open{font-size:10px}}

/* v20: head-to-head fantasy scoring feed only. */
.scoring-heading{display:flex;align-items:center;gap:7px;min-width:0}.scoring-live-dot{width:9px;height:9px;border-radius:50%;background:#d83d49;box-shadow:0 0 0 3px #d83d4920;flex:none}.scoring-live-tag{font-size:10px;font-weight:900;letter-spacing:.08em;color:#c52f3c}.scoring-title{font-size:14px;color:#263f53;white-space:nowrap}.scoring-player-list{display:grid;gap:8px;padding:6px 0 2px}.scoring-side{display:grid;gap:5px}.scoring-side>header{display:flex;align-items:center;gap:7px;padding:0 2px}.scoring-side>header strong{font-size:9px;letter-spacing:.08em}.scoring-side[data-side=own]>header strong{color:#176ca6}.scoring-side[data-side=opponent]>header strong{color:#b83843}.scoring-side>header span{font-size:10px;color:#657887;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scoring-player-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:6px}.scoring-player{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 8px;border:2px solid;border-radius:7px;background:#fff;min-width:0}.scoring-player[data-side=own]{border-color:#2e82bd;background:#f7fbfe}.scoring-player[data-side=opponent]{border-color:#d0515b;background:#fff9f9}.scoring-player img{width:34px;height:34px;border-radius:8px;object-fit:cover;background:#eef3f6}.scoring-player>div{display:grid;min-width:0;gap:1px}.scoring-player>div strong{font-size:12px;color:#203b50;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scoring-player>div span{font-size:10px;color:#526d7f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scoring-player>b{font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;color:#22445b}.scoring-player[data-side=own]>b{color:#176ca6}.scoring-player[data-side=opponent]>b{color:#b83843}.scoring-empty{font-size:11px;color:#687b89;padding:4px 2px}.live-panel{border-color:#d8e1e7}.live-panel-heading{justify-content:flex-start}.live-panel-heading .history-shortcut{margin-left:auto}.latest-event{display:none!important}.event-banner .event-action{display:block!important;color:#0d6399!important;font-weight:850;font-size:14px}.event-banner[data-side=own]{border:2px solid #2e82bd}.event-banner[data-side=opponent]{border:2px solid #d0515b}.event-banner[data-kind=goal-against] .event-action{color:#bd303c!important}.history-event{border-width:2px}.history-event[data-side=own]{border-color:#2e82bd;background:#f8fcff}.history-event[data-side=opponent]{border-color:#d0515b;background:#fff9f9}.history-event span{font-weight:750}.history-event[data-side=own] span{color:#176ca6}.history-event[data-side=opponent] span{color:#b83843}.history-status{margin:5px 0 10px}.daily-recap{border-top:1px solid #e4eaee;margin-top:3px}
@media(max-width:600px){.scoring-player-grid{grid-template-columns:1fr}.scoring-player{padding:6px 7px}.scoring-player>div strong{font-size:12px}.scoring-player>div span{font-size:10px}}

#roster-games{display:none!important}
.weekly-points-bar{display:grid;grid-template-columns:auto auto 1fr auto;grid-template-rows:auto auto;column-gap:8px;row-gap:4px;align-items:center;min-height:36px;padding:6px 8px}.weekly-points-label,.weekly-points-value,.weekly-games-meta{grid-row:1}.weekly-points-label{grid-column:1}.weekly-points-value{grid-column:2}.weekly-games-meta{grid-column:4;justify-self:end;font-weight:700;color:#5d7184;font-variant-numeric:tabular-nums;white-space:nowrap}.weekly-games-progress{grid-column:1 / -1;grid-row:2;position:relative;height:8px;border-radius:999px;background:#e7edf2;overflow:hidden;display:block}.weekly-games-fill{position:absolute;left:0;top:0;bottom:0;border-radius:999px}.weekly-games-fill.own{background:linear-gradient(90deg,#2c7bd9,#63a6ff);opacity:.95}.weekly-games-fill.opp{background:linear-gradient(90deg,#d75151,#f29191);top:auto;height:4px;bottom:0;opacity:.95}.weekly-points-bar .weekly-points-range,.weekly-points-bar .weekly-points-state{display:none!important}.weekly-points-bar.warning .weekly-games-meta{color:#a2682a}.weekly-points-bar.live .weekly-games-progress{box-shadow:inset 0 0 0 1px rgba(48,109,71,.12)}@media(max-width:600px){.weekly-points-bar{grid-template-columns:auto auto 1fr;grid-template-rows:auto auto auto}.weekly-games-meta{grid-column:1 / -1;grid-row:2;justify-self:start;font-size:10px}.weekly-games-progress{grid-row:3}.weekly-points-value{font-size:12px}}

.scoring-player-list{display:block;padding:7px 0 2px}.scoring-latest{grid-template-columns:38px minmax(0,1fr) auto;padding:8px 10px;min-height:54px}.scoring-latest img{width:38px;height:38px}.scoring-latest>div strong{font-size:13px}.scoring-latest>div span{font-size:11px}.scoring-latest>b{font-size:13px}.live-panel[data-side=own]{border-color:#2e82bd}.live-panel[data-side=opponent]{border-color:#d0515b}

/* v23: matchup lives inside weekly points bar */
#fantasy-matchup-bar{display:none!important}
.weekly-points-bar{grid-template-columns:auto auto auto minmax(0,1fr) auto auto;grid-template-rows:auto auto;column-gap:8px;row-gap:4px}
.weekly-points-bar .weekly-points-label{grid-column:1;grid-row:1}
.weekly-points-bar .weekly-points-value{grid-column:2;grid-row:1}
.weekly-points-bar .fm-week{grid-column:3;grid-row:1;font-weight:700;color:#607384;white-space:nowrap}
.weekly-points-bar .fm-opponent{grid-column:4;grid-row:1;font-size:12px;color:#213e55;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.weekly-points-bar .fm-open{grid-column:5;grid-row:1;border:0;background:transparent;color:#2b678b;font:inherit;font-weight:700;cursor:pointer;padding:2px 4px;white-space:nowrap}
.weekly-points-bar .fm-open:hover{text-decoration:underline}
.weekly-points-bar .weekly-games-meta{grid-column:6;grid-row:1;justify-self:end}
.weekly-points-bar .weekly-games-progress{grid-column:1 / -1;grid-row:2}
.weekly-points-bar .fm-week[hidden],.weekly-points-bar .fm-opponent[hidden],.weekly-points-bar .fm-open[hidden]{display:none!important}
@media(max-width:700px){
 .weekly-points-bar{grid-template-columns:auto auto 1fr auto;grid-template-rows:auto auto auto}
 .weekly-points-bar .weekly-points-label{grid-column:1}.weekly-points-bar .weekly-points-value{grid-column:2}
 .weekly-points-bar .fm-week{grid-column:3}.weekly-points-bar .fm-open{grid-column:4}
 .weekly-points-bar .fm-opponent{grid-column:1 / 4;grid-row:2;font-size:11px}
 .weekly-points-bar .weekly-games-meta{grid-column:4;grid-row:2;font-size:10px}
 .weekly-points-bar .weekly-games-progress{grid-row:3}
}

.scoring-live-dot[hidden],.scoring-live-tag[hidden]{display:none!important}.live-panel:not(.is-live) .scoring-player-list{display:none}.live-panel:not(.is-live) .daily-recap{display:none!important}

.legal-disclaimer{grid-column:1/-1;margin:0;padding-top:10px;border-top:1px solid #e4eaf0;color:#8a98a4;font-size:10px;line-height:1.45;font-weight:400}


/* v25.3: non-logo team badges */
.sb-team-badge{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;border-radius:8px;background:linear-gradient(135deg,var(--sb-team-primary,#294b66),var(--sb-team-secondary,#dce5ec));color:#fff;border:1px solid rgba(20,35,50,.12);font-weight:800;letter-spacing:.02em;line-height:1;text-transform:uppercase;text-align:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.16)}
.games-with-team .sb-team-badge,.team-logo.sb-team-badge{flex:none;width:24px;height:24px;font-size:9px}.match-teams .sb-team-badge{width:24px;height:24px;font-size:9px}.event-club-badge.sb-team-badge{position:absolute!important;right:-11px!important;bottom:-8px!important;width:34px!important;height:34px!important;font-size:10px!important;border-radius:10px!important;border:2px solid #fff!important;box-shadow:0 2px 8px rgba(22,38,52,.18)!important}.event-watermark.sb-team-badge{position:absolute;z-index:-1;right:12px;bottom:-20px;width:135px;height:110px;border-radius:24px;font-size:28px;opacity:.12;pointer-events:none}.event-banner .event-watermark.sb-team-badge{right:30px;width:112px;height:92px;bottom:-15px;opacity:.13}.live-panel .event-watermark.sb-team-badge{width:95px;height:80px;bottom:-12px}.gb-scoreline .sb-team-badge{width:58px;height:58px;border-radius:18px;font-size:18px}.gb-content h3 .sb-team-badge{width:25px;height:25px;border-radius:8px;font-size:9px;vertical-align:middle}.gb-graph-teams .sb-team-badge{width:26px;height:26px;border-radius:8px;font-size:9px}.score .match-teams .sb-team-badge{width:24px;height:24px;border-radius:8px;font-size:9px}@media(max-width:600px){.games-with-team .sb-team-badge,.team-logo.sb-team-badge,.score .match-teams .sb-team-badge{width:22px;height:22px;font-size:8px}}@media(max-width:480px){.gb-scoreline .sb-team-badge{width:46px;height:46px;font-size:14px}}
.roster-row[data-team="MTL"] .row-main{background-image:linear-gradient(rgba(255,255,255,.94),rgba(255,255,255,.94)),linear-gradient(to bottom,#af1e2d 0% 38%,#fff 38% 44%,#192168 44% 72%,#fff 72% 78%,#af1e2d 78% 100%)!important;background-size:100% 100%,100% 100%!important;background-position:center,center!important;background-repeat:no-repeat!important}
.legal-disclaimer::after{content:" Team colors and abbreviations are used as simple reference badges only."}


/* v25.4 — image-free roster + full-name team labels */
.portrait,.event-portrait,.latest-portrait,.history-event>img,.scoring-player>img{display:none!important}
.player{gap:0}.player-label{min-width:0}
.row-main{grid-template-columns:minmax(0,1fr) auto 158px}
.games-with-team{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-width:0}
.sb-team-badge{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:25px;padding:4px 8px;border:1px solid rgba(16,31,43,.14);border-radius:4px;background:linear-gradient(90deg,var(--sb-team-primary,#294b66) 0 78%,var(--sb-team-secondary,#dce5ec) 78% 100%);color:var(--sb-team-text,#fff);font-size:9px;font-weight:800;line-height:1.05;text-align:center;white-space:normal;overflow-wrap:normal;letter-spacing:0;text-transform:none;box-shadow:inset 0 1px rgba(255,255,255,.14)}
.team-logo.sb-team-badge{width:91px;max-width:91px;flex:none}
.games-with-team .schedule-cell{flex:1;min-width:52px}
.match-teams{gap:6px}.match-teams .sb-team-badge{width:78px;max-width:78px;min-height:27px;font-size:8px;padding:3px 5px}.score{min-width:188px}
.scoring-player,.scoring-latest{grid-template-columns:minmax(0,1fr) auto!important}.scoring-player>div{padding-left:0}.scoring-latest{min-height:48px}
.history-event{display:block}.history-event div{display:flex}
.event-open{align-items:center}.event-club-badge.sb-team-badge{position:static!important;width:104px!important;max-width:104px!important;min-height:30px!important;padding:5px 7px!important;border-radius:5px!important;border:1px solid rgba(16,31,43,.14)!important;box-shadow:none!important;flex:none;font-size:9px!important}
.event-watermark.sb-team-badge{position:absolute!important;right:16px!important;bottom:-10px!important;width:150px!important;max-width:150px!important;height:54px!important;min-height:54px!important;font-size:12px!important;opacity:.08!important;transform:rotate(-8deg);pointer-events:none}
.event-avatar{display:none!important}
.live-panel .event-watermark.sb-team-badge{width:130px!important;height:46px!important;min-height:46px!important}
@media(max-width:600px){.row-main{grid-template-columns:minmax(0,1fr) auto 122px}.team-logo.sb-team-badge{width:67px;max-width:67px;min-height:28px;font-size:8px;padding:3px 4px}.games-with-team{gap:4px}.games-with-team .schedule-cell{min-width:48px}.match-teams .sb-team-badge{width:70px;max-width:70px}.score{min-width:170px}.event-club-badge.sb-team-badge{width:86px!important;max-width:86px!important;font-size:8px!important}}

/* v25.4 team labels in live cards/history */
.scoring-player,.scoring-latest{grid-template-columns:auto minmax(0,1fr) auto!important}
.scoring-player .event-club-badge.sb-team-badge{position:static!important;width:86px!important;max-width:86px!important;min-height:28px!important;font-size:8px!important;padding:4px 6px!important}
.history-event{display:grid!important;grid-template-columns:auto minmax(0,1fr);align-items:center}.history-event .history-team-badge{width:86px;max-width:86px;min-height:28px;font-size:8px;padding:4px 6px}
@media(max-width:600px){.scoring-player .event-club-badge.sb-team-badge,.history-event .history-team-badge{width:72px!important;max-width:72px!important;font-size:7.5px!important}}

/* v25.5 compact two-colour abbreviations + tap/hover explanations */
.row-main{grid-template-columns:minmax(0,1fr) auto 82px!important}
.player-cell{display:flex;align-items:center;gap:8px;min-width:0}
.player-cell .player{flex:1;min-width:0;gap:0}
.games-with-team{display:block!important;min-width:0}
.games-with-team .schedule-cell{text-align:right;width:100%}
.sb-team-badge{position:relative;display:inline-flex!important;align-items:center!important;justify-content:center!important;flex:none!important;width:37px!important;max-width:37px!important;min-width:37px!important;height:24px!important;min-height:24px!important;padding:0 6px 0 4px!important;border:0!important;border-radius:4px!important;background:linear-gradient(90deg,var(--sb-team-primary,#294b66) 0 74%,var(--sb-team-primary,#294b66) 74%,var(--sb-team-secondary,#9eb2c1) 74%,var(--sb-team-secondary,#9eb2c1) 100%)!important;color:#fff!important;font-size:9px!important;font-weight:850!important;line-height:1!important;letter-spacing:.02em!important;text-transform:uppercase!important;white-space:nowrap!important;box-shadow:none!important;cursor:help;text-shadow:0 1px 1px rgba(0,0,0,.3)}
.roster-team-badge{margin-left:0}
.sb-explainable{position:relative;cursor:help}
.sb-explainable::after{content:attr(data-explain);position:absolute;left:50%;bottom:calc(100% + 7px);z-index:80;transform:translate(-50%,4px);width:max-content;max-width:min(260px,80vw);padding:6px 8px;border-radius:5px;background:#172b3a;color:#fff;font-size:11px;font-weight:600;line-height:1.35;letter-spacing:0;text-transform:none;text-align:left;white-space:normal;box-shadow:0 5px 16px rgba(19,39,54,.22);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s ease,transform .12s ease}
.sb-explainable::before{content:"";position:absolute;left:50%;bottom:calc(100% + 2px);z-index:81;transform:translateX(-50%);border:5px solid transparent;border-top-color:#172b3a;opacity:0;visibility:hidden;pointer-events:none}
.sb-explainable:hover::after,.sb-explainable:hover::before,.sb-explainable:focus-visible::after,.sb-explainable:focus-visible::before,.sb-explainable.tip-open::after,.sb-explainable.tip-open::before{opacity:1;visibility:visible}
.sb-explainable:hover::after,.sb-explainable:focus-visible::after,.sb-explainable.tip-open::after{transform:translate(-50%,0)}
.injury.sb-explainable,.slot.sb-explainable{cursor:help;position:relative}
.match-teams .sb-team-badge{width:37px!important;max-width:37px!important;min-width:37px!important;height:24px!important;min-height:24px!important;padding:0 6px 0 4px!important;font-size:9px!important}
.score{min-width:103px!important}
.event-club-badge.sb-team-badge,.scoring-player .event-club-badge.sb-team-badge,.history-event .history-team-badge{position:relative!important;right:auto!important;bottom:auto!important;width:37px!important;max-width:37px!important;min-width:37px!important;height:24px!important;min-height:24px!important;padding:0 6px 0 4px!important;border:0!important;border-radius:4px!important;font-size:9px!important;box-shadow:none!important}
.event-watermark.sb-team-badge{width:72px!important;max-width:72px!important;min-width:72px!important;height:40px!important;min-height:40px!important;font-size:14px!important;opacity:.07!important}
@media(max-width:600px){.row-main{grid-template-columns:minmax(0,1fr) auto 70px!important;gap:5px}.player-cell{gap:6px}.sb-team-badge,.match-teams .sb-team-badge{width:34px!important;max-width:34px!important;min-width:34px!important;height:22px!important;min-height:22px!important;font-size:8px!important}.tags{max-width:64px}.sb-explainable::after{max-width:min(235px,86vw);font-size:10px}}
