:root{color-scheme:dark;font-family:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";color:#e8edf3;background:#0c131c;font-synthesis:none}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button,select{font:inherit;color:inherit;cursor:pointer}button{border:0}button:focus-visible,a:focus-visible,select:focus-visible{outline:2px solid #c6f769;outline-offset:2px} .app{max-width:1240px;margin:auto;min-height:100svh;min-height:100dvh;padding:0 24px env(safe-area-inset-bottom);display:flex;flex-direction:column}.brand{height:52px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #25303d}.brand a{font-size:22px;font-weight:700;letter-spacing:-1px}.brand a>span:not(.brand-mark):not(.brand-dot){font-weight:400}.brand-mark{color:#c3f775;margin-right:5px}.brand-dot{color:#c3f775}.brand-caption{font-size:9px;letter-spacing:2px;color:#8d9aaa}.week-nav{display:flex;gap:4px;align-items:center;justify-content:center;padding:8px 0;border-bottom:1px solid #25303d}.week-nav a{min-height:44px;display:flex;flex:1;max-width:88px;flex-direction:column;align-items:center;justify-content:center;border-radius:5px}.week-nav span{font-size:9px;letter-spacing:1px;color:#8d9aaa}.week-nav b{font-size:16px;margin-top:2px}.week-nav .all{max-width:65px;margin-right:12px}.week-nav .all b{font-size:11px}.week-nav .arrow{max-width:36px;font-size:25px;color:#9cabbc}.week-nav .selected{background:#c3f775;color:#172117}.week-nav .selected span{color:#304b29}.week-nav .today:not(.selected) b{color:#c3f775}.toolbar{display:flex;justify-content:space-between;align-items:center;min-height:46px;gap:6px}.toolbar strong{font-size:10px;letter-spacing:1.2px}.status-dot{display:inline-block;background:#b7ef75;width:5px;height:5px;border-radius:50%;margin-right:7px}.month{font-size:11px;color:#8b9bac;margin-left:12px}.tools{display:flex;align-items:center;gap:12px}select{background:#172230;border:1px solid #2a394a;font-size:11px;padding:6px;border-radius:4px;max-width:115px}#share{font-size:11px;background:none;padding:7px 0;color:#c3f775}.notice{font-size:9px;letter-spacing:1px;color:#b6c196;border-left:2px solid #a6bf72;padding:3px 7px;margin:0 0 10px}.notice span{letter-spacing:0;color:#8593a2}#grid{display:flex;flex-direction:column;gap:16px;flex:1}.day-section{flex:var(--rows) 0 auto;display:flex;flex-direction:column}.day-section.sparse{flex:0 0 auto}.day-heading{display:flex;justify-content:space-between;align-items:center;height:24px}.day-heading h2{font-size:12px;letter-spacing:.4px;margin:0;font-weight:600}.day-heading>span{font-size:9px;color:#8291a2}.timeline{display:flex;flex-direction:column;flex:1}.axis{display:grid;grid-template-columns:55px 1fr;height:23px;color:#798b9e;font-size:9px}.axis>span{padding-top:5px;font-weight:700}.axis>div{position:relative}.axis>div span{position:absolute;top:5px}.rows{display:flex;flex-direction:column;flex:1}.network-row{display:grid;grid-template-columns:55px 1fr;min-height:54px;flex:1}.network{display:flex;align-items:center;font-size:10px;font-weight:700;color:#a5b4c4;border-top:1px solid #24303f}.track{position:relative;border-top:1px solid #24303f;background:none}.game{position:absolute;top:3px;bottom:3px;text-align:left;background:#1d2a39;border-radius:3px;border-left:3px solid var(--accent);padding:5px 8px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;gap:2px;transition:background .15s}.game:hover{background:#2a3b4f}.game.final{opacity:.65}.team{display:flex;align-items:center;gap:5px;font-family:inherit;font-weight:600;font-size:16px;line-height:1;white-space:nowrap}.team sup{font-size:9px;font-family:inherit;color:#a8b8cb;margin-right:3px;vertical-align:baseline}.badge{display:inline-flex;align-items:center;justify-content:center;width:11px;height:11px;background:var(--team);border-radius:2px;flex-shrink:0}.badge:has(img){background:transparent}.badge img{width:13px;height:13px;object-fit:contain}.game small{color:#92a5ba;font-size:9px;line-height:1.1;margin-top:1px}.now{position:absolute;top:0;bottom:0;border-left:1px solid #d1f880;pointer-events:none;z-index:2}.tbd{font-size:10px;display:flex;align-items:center;gap:12px;min-height:30px;border-top:1px solid #24303f}.tbd>span{font-size:8px;letter-spacing:1px;color:#8594a6}.tbd button{background:none;font-size:10px;padding:7px;color:#b6c7d8}footer{display:flex;justify-content:space-between;padding:14px 0 7px;font-size:9px;color:#8191a3}.attribution{font-size:8px;color:#647387;margin:0 0 9px}.empty{margin:auto;text-align:center;padding:60px 20px;max-width:400px}.empty>span{font-size:48px;color:#8c9d75}.empty h1{font-size:20px}.empty p{font-size:13px;color:#9aaabc;line-height:1.7}.empty a{display:inline-block;font-size:12px;background:#c3f775;color:#172117;padding:12px 16px;border-radius:5px;margin-top:16px}dialog{background:#172230;color:#e8edf3;border:1px solid #394b61;border-radius:12px;width:min(420px,90vw);padding:30px}dialog::backdrop{background:#050a10b8}.close{position:absolute;right:10px;top:8px;background:none;font-size:24px}.detail-label{color:#b7ef75;font-size:10px;letter-spacing:2px}.detail-matchup{font-size:24px}dialog p{color:#a8b8ca;font-size:13px;line-height:1.7}#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);font-size:12px;background:#c3f775;color:#142011;padding:10px 20px;border-radius:6px;display:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(min-width:750px){.app{padding-top:12px;padding-bottom:6px}.brand{height:58px}#grid{gap:20px}.network-row{min-height:65px}.game{padding:7px 12px}.team{font-size:19px}.game small{font-size:10px}.badge{width:13px;height:13px}}
@media(max-width:520px){.app{padding-left:10px;padding-right:10px}.brand{height:38px}.brand a{font-size:19px}.brand-caption{font-size:7px;letter-spacing:1px}.week-nav{gap:1px;padding:4px 0}.week-nav .all{margin-right:3px}.week-nav a{min-width:0}.week-nav .arrow{max-width:23px}.week-nav span{font-size:8px;letter-spacing:.5px}.week-nav b{font-size:14px}.toolbar{min-height:40px}.toolbar strong{font-size:9px}.month{display:none}.tools{gap:8px}.notice{margin-bottom:7px;font-size:8px}.notice span{font-size:8px}#grid{gap:9px}.axis,.network-row{grid-template-columns:40px 1fr}.network{font-size:8px}.network-row{min-height:52px}.game{padding:3px 4px;border-left-width:2px}.team{font-size:13px;gap:3px}.team sup{font-size:7px;margin-right:2px}.badge{width:7px;height:7px}.badge img{width:9px;height:9px}.game small{font-size:8px}.day-heading h2{font-size:11px}.day-heading{height:22px}.axis{height:20px}.tbd{min-height:27px}footer{padding-top:9px;font-size:8px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Semantic palette shared by the page and settings panel. */
:root{--page:#0c131c;--ink:#e8edf3;--surface:#172230;--tile:#1d2a39;--hover:#2a3b4f;--line:#25303d;--muted:#9aaabc;--accent:#c3f775;--accent-ink:#172117;color-scheme:dark}
:root[data-appearance=light]{--page:#f5f7f9;--ink:#172536;--surface:#fff;--tile:#e6edf4;--hover:#d7e3ef;--line:#ced8e2;--muted:#53667b;--accent:#365e16;--accent-ink:#fff;color-scheme:light}
@media(prefers-color-scheme:light){:root:not([data-appearance=dark]){--page:#f5f7f9;--ink:#172536;--surface:#fff;--tile:#e6edf4;--hover:#d7e3ef;--line:#ced8e2;--muted:#53667b;--accent:#365e16;--accent-ink:#fff;color-scheme:light}}
:root,body{background:var(--page);color:var(--ink)}.brand,.week-nav,.network,.track,.tbd{border-color:var(--line)}.game{background:var(--tile)}.game:hover{background:var(--hover)}.track{background:none}.game small,.team sup,.network,.axis,.week-nav span,.week-nav .arrow,.day-heading>span,.month,footer,.attribution,.tbd>span,dialog p{color:var(--muted)}.brand-mark,.brand-dot,#share,.week-nav .today:not(.selected) b,.detail-label{color:var(--accent)}.week-nav .selected,.empty a,#toast{background:var(--accent);color:var(--accent-ink)}.week-nav .selected span{color:inherit}.status-dot{background:var(--accent)}select,dialog{background:var(--surface);color:var(--ink);border-color:var(--line)}.tbd button{color:var(--ink)}.now{border-color:var(--accent)}button:focus-visible,a:focus-visible,select:focus-visible{outline-color:var(--accent)}
#settings-open{display:grid;place-items:center;background:transparent;width:40px;height:36px;border-radius:6px;color:var(--muted)}#settings-open:hover{background:var(--tile);color:var(--ink)}
#settings{position:fixed;inset:0 0 0 auto;margin:0;width:min(360px,100vw);max-width:100vw;height:100dvh;max-height:100dvh;border:0;border-left:1px solid var(--line);border-radius:0;padding:24px;box-shadow:-12px 0 48px #0003;overflow:auto}#settings header{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px}#settings h2{font-size:20px;margin:0}#settings-close{background:transparent;font-size:28px;width:40px;height:40px;color:var(--muted)}#settings label{display:block;font-size:13px;font-weight:600;margin:24px 0 10px}#settings select{width:100%;max-width:none;padding:12px;font-size:14px;border-radius:6px}#settings p{font-size:12px;line-height:1.6;margin-top:10px}#settings .settings-note{border-top:1px solid var(--line);padding-top:18px;margin-top:30px}

/* AP ranking follows the team name; game-span color treatments remain separate. */
.team sup.team-rank{font-size:.62em;margin-left:3px;margin-right:0;vertical-align:super;line-height:0;color:var(--muted)}

/* Two-team bars: the kickoff stays at the geometric center of the broadcast. */
.game,.game:hover{background:linear-gradient(90deg,var(--away-primary) 0%,var(--game-midpoint) 50%,var(--home-primary) 100%);border:0;border-radius:8px;height:40px;top:50%;bottom:auto;transform:translateY(-50%);padding:0 8px;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px;color:#fff;font-size:12px;text-shadow:0 1px 2px #0006;isolation:isolate}
.game::before{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;padding:1px;background:linear-gradient(160deg,#ffffff66,#ffffff20 45%,#00000040);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude}
.game:hover{filter:brightness(1.06)}.game .team{min-width:0;display:flex;gap:6px;font-family:inherit;font-size:12px;font-weight:700;color:#fff;line-height:1.1}.game .team-home{flex-direction:row-reverse;justify-self:end}.game .team-away{justify-self:start}.game .badge{width:24px;height:28px;flex:0 0 24px;background:transparent}.game .badge img{width:24px;height:28px;filter:drop-shadow(0 1px 1px #0002)}.game .game-time{font-size:12px;font-weight:400;white-space:nowrap;text-align:center;line-height:1.2}.game .team sup.team-rank{color:#fff;font-size:8px;margin-left:2px;opacity:.9}.network-row{min-height:46px}.timeline{min-width:1010px}#grid{overflow-x:auto;min-width:0;padding-bottom:4px}.day-section{min-width:1010px}.day-heading{padding-right:2px}.week-nav{justify-content:flex-start;gap:20px}.week-nav .all{flex:0 0 54px;max-width:54px;margin:0}.calendar-selector{display:flex;align-items:center;gap:4px;flex:1;max-width:740px;margin:0 auto}.calendar-selector a{flex:1}.calendar-selector .arrow{flex:0 0 28px}
@media(max-width:520px){.week-nav{gap:6px}.week-nav .all{flex-basis:42px;max-width:42px}.calendar-selector{gap:0;min-width:0}.calendar-selector .arrow{flex:0 0 18px}.week-nav .all b{font-size:10px}.calendar-selector a{min-width:0}.game{padding:0 8px}.game .team{font-size:12px}.game .badge,.game .badge img{width:24px;height:28px}.axis,.network-row{grid-template-columns:55px 1fr}.network{font-size:9px}}

/* Guides share the exact percentage positions used by the time axis and bars. */
.grid-line{position:absolute;top:0;bottom:0;border-left:1px solid var(--line);pointer-events:none}
.axis>div span::after{content:"";position:absolute;left:0;top:13px;height:5px;border-left:1px solid var(--line)}

/* Compact header, with outline controls inspired by shadcn's outline variant. */
.app{padding-top:0}.brand{height:40px;min-height:40px;gap:12px}.brand>a{font-size:19px;white-space:nowrap}.brand .month{display:block;margin:0 auto 0 8px;font-size:14px;font-weight:600;white-space:nowrap;color:var(--ink);letter-spacing:.03em}.brand .tools{gap:6px}
.brand #filter,.brand #settings-open,.brand #share{height:30px;border:1px solid var(--line);border-radius:6px;background:var(--page);color:var(--ink);box-shadow:0 1px 2px #0000000d;font-size:12px;font-weight:500;padding:0 9px;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;transition:background .15s,box-shadow .15s}
.brand #settings-open{width:30px;padding:0;flex-shrink:0}.brand #settings-open svg{width:16px;height:16px}.brand #filter{max-width:120px}.brand #share:hover,.brand #settings-open:hover,.brand #filter:hover{background:var(--tile)}.brand :is(button,select):focus-visible{outline:2px solid var(--muted);outline-offset:2px;box-shadow:0 0 0 3px color-mix(in srgb,var(--muted) 25%,transparent)}
.week-nav{padding:4px 0}.week-nav a{min-height:36px}.week-nav .selected{position:relative;background:var(--selection);color:var(--selection-ink);box-shadow:inset 0 2px 4px #0004;border-radius:6px;isolation:isolate}.week-nav .selected::before{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;padding:1px;background:linear-gradient(160deg,#00000040,#ffffff20 55%,#ffffff66);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude}.week-nav .selected span{color:inherit}.week-nav .today:not(.selected) b{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.grid-line{border-color:color-mix(in srgb,var(--muted) 35%,var(--page))}
@media(max-width:520px){.brand{gap:5px}.brand>a{font-size:14px;letter-spacing:-.6px}.brand-mark,.brand-dot{display:none}.brand .month{font-size:11px;letter-spacing:0;margin:0 auto}.brand .tools{gap:4px}.brand #filter{width:67px;font-size:10px;padding:0 3px}.brand #share{padding:0 5px;font-size:10px;gap:3px}.brand #settings-open{width:28px}.week-nav b{font-size:14px}}
@media(max-width:359px){.brand #share span{display:none}.brand #share{width:28px}.brand .month{font-size:10px}}

/* One page-scrolling timeline with a persistent shared clock axis. */
#grid{overflow:visible;gap:8px;min-height:calc(100dvh - 150px)}
.timeline,.day-section{min-width:0}.day-section,.day-section.sparse{flex:var(--rows) 0 auto}.timeline{flex:1}.rows{flex:1}
.shared-axis{position:sticky;top:0;z-index:5;background:var(--page);flex:0 0 24px;height:24px;box-shadow:0 1px 0 var(--line)}
.channel-block{display:grid;grid-template-columns:55px minmax(0,1fr);flex:var(--lanes) 0 auto;min-height:calc(var(--lanes)*44px)}
.channel-lanes{display:flex;flex-direction:column;min-width:0}.channel-lanes .track{flex:1;min-height:44px}.network{overflow-wrap:anywhere;padding-right:4px}
.game,.game:hover{top:2px;bottom:2px;height:auto;transform:none;min-width:0}.game .badge,.game .badge img{width:18px;height:22px}.game .badge{flex-basis:18px}.game .team{gap:3px}
@media(max-width:750px){
 .app{padding-left:6px;padding-right:6px}.axis,.channel-block{grid-template-columns:42px minmax(0,1fr)}
 .channel-block{min-height:calc(var(--lanes)*28px)}.channel-lanes .track{min-height:28px}.network{font-size:8px;line-height:1.1}
 #grid{gap:4px;min-height:calc(100dvh - 130px)}.day-heading{height:20px}.day-heading h2{font-size:10px}.shared-axis{font-size:8px}
 .game,.game:hover{padding:2px 3px;gap:1px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:1fr 1fr;border-radius:4px}
 .game .team{font-size:9px;gap:1px}.game .team-home{grid-column:2;grid-row:1}.game .game-time{grid-row:2;grid-column:1 / -1;font-size:8px;align-self:center}.game .badge,.game .badge img{width:10px;height:12px}.game .badge{flex-basis:10px}.game .team sup.team-rank{font-size:6px;margin-left:1px}
}
@media(max-width:420px){.game .badge{display:none}.game .team{font-size:8px}.game .game-time{font-size:8px}.game,.game:hover{padding:2px;gap:0}}

/* Sportsball Guide: keep the complete game summary on one line. */
.time-compact{display:none}.brand>a{letter-spacing:-.5px;font-weight:700}.app{padding-bottom:env(safe-area-inset-bottom)}#grid{min-height:calc(100dvh - 85px);padding-bottom:0}
#settings select,#settings-close{border:1px solid var(--line);border-radius:6px;background:var(--page);color:var(--ink);box-shadow:0 1px 2px #0000000d;font-size:12px;font-weight:500;padding:0 9px;height:34px;transition:background .15s,box-shadow .15s}#settings-close{width:30px;height:30px;font-size:22px;padding:0}#settings select:hover,#settings-close:hover{background:var(--tile)}#settings :is(select,button):focus-visible{outline:2px solid var(--muted);outline-offset:2px}.schedule-info{border-top:1px solid var(--line);margin-top:24px;padding-top:12px}#settings .attribution{font-size:12px}
#settings{transform:translateX(100%);opacity:0;transition:transform 250ms cubic-bezier(.22,1,.36,1),opacity 250ms,display 250ms allow-discrete,overlay 250ms allow-discrete}#settings[open]{transform:translateX(0);opacity:1}#settings::backdrop{background:rgb(0 0 0 / 0);transition:background 250ms,display 250ms allow-discrete,overlay 250ms allow-discrete}#settings[open]::backdrop{background:rgb(0 0 0 / .25)}
@starting-style{#settings[open]{transform:translateX(100%);opacity:0}#settings[open]::backdrop{background:rgb(0 0 0 / 0)}}
@media(max-width:750px){
 .game,.game:hover{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-template-rows:1fr;gap:1px;padding:1px 2px}
 .game .team-away{grid-column:1;grid-row:1}.game .team-home{grid-column:3;grid-row:1}.game .game-time{grid-column:2;grid-row:1;font-size:8px}.game .time-full{display:none}.game .time-compact{display:inline}.game .team{font-size:8px}.game .badge{display:none}.game .team sup.team-rank{font-size:5px;margin-left:0}
}
@media(max-width:520px){.brand>a{font-size:10px;letter-spacing:-.3px}.brand .month{font-size:9px}.brand{gap:4px}.brand .tools{gap:3px}.brand #filter{width:59px}.brand #share{width:28px;padding:0}.brand #share span{display:none}}
@media(max-width:359px){.brand .month{font-size:8px}.brand>a{font-size:9px}.brand #filter{width:50px}}
@media(prefers-reduced-motion:reduce){#settings,#settings::backdrop{transition:none}}

@media(max-width:750px){.game .team>span:last-child{position:relative}.game .team sup.team-rank{position:absolute;right:0;top:-5px;font-size:6px;line-height:1;vertical-align:baseline}.game .game-time{letter-spacing:-.2px}}

/* Rows grow only up to 64px; unused viewport space stays below sparse days. */
:root{--min-lane:44px;--page-gutter:24px}
.app{padding-bottom:max(var(--page-gutter),env(safe-area-inset-bottom))}#grid{min-height:0;flex:1;justify-content:flex-start}.day-section,.day-section.sparse{flex:0 0 auto}.timeline,.rows{flex:0 0 auto}.channel-block{flex:0 0 auto;min-height:0;height:calc(var(--lanes)*var(--lane-height))}.channel-lanes .track{min-height:0;max-height:64px}.game{scroll-margin-top:30px}
:is(button,a,select):focus-visible,.brand :is(button,select):focus-visible,#settings :is(select,button):focus-visible{outline:2px solid var(--selection,#64748b);outline-offset:2px;box-shadow:0 0 0 2px var(--page),0 0 0 5px var(--ink);z-index:6}
@media(max-width:750px){:root{--min-lane:29px;--page-gutter:6px}.calendar-selector .arrow{flex-basis:24px;min-width:24px}}

/* Skip navigation appears only when reached by keyboard. */
.skip-link{position:fixed;top:8px;left:8px;transform:translateY(-200%);z-index:100;padding:10px 14px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:6px}.skip-link:focus{transform:translateY(0)}#grid:focus{outline:none}

/* Keep native select behavior, with a consistently inset decorative caret. */
.brand #filter,#settings select{appearance:none;-webkit-appearance:none;padding-right:30px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%237b8898' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:14px 14px}
.brand #filter:hover,#settings select:hover{background-color:var(--tile)}
#settings-close,#settings-close:hover{display:grid;place-items:center;border:0;background:transparent;padding:0;box-shadow:none;color:var(--ink);width:32px;height:32px;flex-shrink:0}#settings-close svg{display:block;pointer-events:none}#settings-close:focus-visible{box-shadow:0 0 0 2px var(--page),0 0 0 5px var(--ink)}
@media(max-width:520px){.brand #filter{padding-right:17px;background-position:right 3px center;background-size:12px 12px}}
@media(forced-colors:active){.brand #filter,#settings select{appearance:auto;-webkit-appearance:auto;background-image:none;padding-right:4px}}

.brand #filter:hover,#settings select:hover{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%237b8898' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:14px 14px}
@media(max-width:520px){.brand #filter:hover{background-position:right 3px center;background-size:12px 12px}}
@media(forced-colors:active){.brand #filter:hover,#settings select:hover{background-image:none}}

/* Completed games retain their timeline position and show the final result. */
.game.final{opacity:1;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.game.final .team-away{grid-column:1;grid-row:1}
.game.final .team-home{grid-column:2;grid-row:1}
.game.final.has-winner,.game.final.has-winner:hover{background:var(--winner)}
@media(max-width:375px){.game.final .team{font-size:7px}}

/* Continuous schedule: dates are the navigation, not page boundaries. */
.date-nav{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:6px 0;font-size:12px}
.date-nav input,.date-nav button,.load-days,.today-jump{font:inherit;border:1px solid var(--line);border-radius:6px;background:var(--page);color:var(--ink);padding:8px 12px;box-shadow:0 1px 2px #0000000d}
.date-nav input{max-width:160px;font-size:12px;min-height:36px}.date-nav button{min-height:36px}
.timeline-days{display:flex;flex-direction:column;gap:16px;overflow-anchor:none}
.day-section{position:relative;--lane-height:60px!important;gap:0}
.day-heading{position:sticky;top:0;z-index:8;flex:0 0 36px;height:36px;padding:0 12px;border-radius:8px;background:color-mix(in srgb,var(--selection,#64748b) 16%,var(--page));color:var(--ink);isolation:isolate}
.day-heading h2{font-size:12px;font-weight:600;letter-spacing:.4px}
.day-actions{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--muted);white-space:nowrap}
.day-link{font:inherit;text-decoration:underline;text-underline-offset:3px;padding:8px 2px;min-height:36px;background:none;color:inherit}
.shared-axis{top:36px;z-index:7}
.channel-block{height:calc(var(--lanes)*60px);min-height:0}
.channel-lanes .track{height:60px;flex:0 0 60px;max-height:none}
.game,.game:hover{top:2px;bottom:2px;height:56px;border-radius:8px;container-type:inline-size;container-name:game;padding:8px 7px;gap:5px}
.game .team{font-size:14px;gap:4px}
.game .badge,.game .badge img{display:inline-flex;width:32px;height:32px}
.game .badge{flex-basis:32px}
.game .team sup.team-rank{position:static;font-size:8px;vertical-align:super;line-height:0;margin-left:2px}
.game .team>span:last-child{position:static}
.game.final{grid-template-rows:1fr;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.tbd{display:block;border:0;padding:12px 0 0 55px}
.tbd h3{font-size:11px;font-weight:500;color:var(--muted);margin:0 0 8px}
.tbd-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.tbd-cards button{border:1px dashed var(--muted);border-radius:8px;min-height:56px;padding:8px;background:var(--surface);color:var(--ink);font-size:12px;font-weight:600}
.tbd-cards small{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:5px}
.load-days{align-self:center;font-size:12px;margin:8px auto;min-height:44px}
.load-days[hidden],.today-jump[hidden]{display:none}
.today-jump{position:fixed;left:50%;transform:translateX(-50%);z-index:12;min-height:44px;padding:10px 20px;font-size:14px;font-weight:600;box-shadow:0 3px 14px #0003;background:var(--surface)}
.today-jump[data-edge=top]{top:70px;animation:today-from-top 180ms ease-out}
.today-jump[data-edge=bottom]{bottom:max(12px,env(safe-area-inset-bottom));animation:today-from-bottom 180ms ease-out}
@keyframes today-from-top{from{opacity:0;transform:translate(-50%,-20px)}}
@keyframes today-from-bottom{from{opacity:0;transform:translate(-50%,20px)}}
.empty-day p{padding:24px;font-size:13px;color:var(--muted)}
#expanded-game{position:fixed;inset:auto;margin:0;border:1px solid var(--line);border-radius:8px;padding:24px;background:var(--surface);color:var(--ink);box-shadow:0 10px 40px #0004;max-height:calc(100dvh - 12px);overflow:auto;transform-origin:0 0}
#expanded-game::backdrop{background:transparent;pointer-events:none}
#expanded-game .close{display:grid;place-items:center;background:transparent;color:var(--ink);width:40px;height:40px;top:4px;right:4px}
#expanded-game h2{font-size:21px;line-height:1.4;margin:12px 0;font-weight:700;padding-right:12px}
#expanded-game sup{font-size:11px;white-space:nowrap}
#expanded-game p{font-size:14px;line-height:1.6;color:var(--muted);margin:10px 0}
#expanded-game .detail-at{display:block;font-size:12px;font-weight:400;color:var(--muted);margin:3px 0}
#expanded-game .detail-note{font-size:12px}
#expanded-game .day-link{font-size:13px}
@container game (max-width:200px){.game .badge,.game .badge img{width:20px;height:20px}.game .badge{flex-basis:20px}.game .team{font-size:12px}.game .game-time{font-size:10px}}
@media(max-width:750px){
 .date-nav{font-size:11px}.day-heading{padding:0 8px}.day-actions{font-size:10px;gap:4px}
 .timeline-days{gap:12px}.tbd{padding-left:42px}.tbd-cards{gap:5px}.tbd-cards button{font-size:10px;padding:6px 3px}
 .game,.game:hover{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:1fr 1fr;padding:2px 3px;gap:0 2px}
 .game .team-away{grid-column:1;grid-row:1;justify-self:start}
 .game .team-home{grid-column:1;grid-row:2;justify-self:start;flex-direction:row}
 .game .game-time{grid-column:2;grid-row:1 / 3;font-size:10px;letter-spacing:0}
 .game .time-full{display:none}.game .time-compact{display:inline}
 .game .team{font-size:14px;gap:3px}
 .game .badge,.game .badge img{width:20px;height:20px}.game .badge{flex-basis:20px}
 .game.final{grid-template-columns:minmax(0,1fr);grid-template-rows:1fr 1fr}
 .game.final .team-away{grid-column:1;grid-row:1}
 .game.final .team-home{grid-column:1;grid-row:2;justify-self:end;flex-direction:row-reverse}
 .game .team sup.team-rank{font-size:7px}
}
@media(max-width:375px){.tbd-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.today-jump{animation:none}html{scroll-behavior:auto}}
/* Keep controls reachable while browsing earlier and later dates. */
html{overflow-anchor:none}
:root{--controls-height:40px}
.brand{position:sticky;top:0;z-index:20;background:var(--page)}
#settings .date-nav{position:static;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 8px;padding:0 0 18px;border-bottom:1px solid var(--line);margin-bottom:18px}
#settings .date-nav label{grid-column:1 / -1;margin:0;font-size:13px}
#settings .date-nav input{width:100%;max-width:none;min-width:0;height:40px;background:var(--page)}
#settings .date-nav button{height:40px;padding:0 16px}
.day-heading{top:var(--controls-height)}
.shared-axis{top:calc(var(--controls-height) + 36px)}
.today-jump[data-edge=top]{top:calc(var(--controls-height) + 70px)}
/* Stacked teams use matching vertical colors and compact visible marks. */
@media(max-width:750px){
 .game,.game:hover{background:linear-gradient(180deg,var(--away-primary) 0%,var(--game-midpoint) 50%,var(--home-primary) 100%);padding:8px 4px;gap:0 2px}
 .game.final.has-winner,.game.final.has-winner:hover{background:var(--winner)}
 .game .team{font-size:14px;gap:2px}
 .game .badge,.game .badge img{display:inline-flex;width:16px;height:16px}
 .game .badge{flex:0 0 16px}
 @container game (max-width:130px){.game .team{font-size:11px}.game .game-time{font-size:8px}}
 @container game (max-width:100px){.game .team{font-size:9px;gap:1px}.game .team sup.team-rank{font-size:5px;margin-left:1px}.game .game-time{font-size:7px}}
 @container game (max-width:80px){.game .team{font-size:8px}.game .team sup.team-rank{font-size:4px}.game .game-time{font-size:6px}}
}
