.weekly-calendar{box-shadow:var(--shadow)}
.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.3rem 1.4rem;background:var(--navy);color:white}
.calendar-toolbar .eyebrow{color:var(--gold);margin-bottom:.45rem}.calendar-toolbar h3{color:white;font-size:1.7rem;letter-spacing:-.02em}
.week-controls{display:flex;gap:.4rem;align-items:center}.week-controls button{border:1px solid #63789c;border-radius:9px;background:#20395f;color:white;min-height:40px;min-width:40px;padding:.45rem .8rem;font-size:.85rem;font-weight:700}.week-controls button:hover{background:#344d73}.week-controls button:disabled{opacity:.35;cursor:default}
.calendar-filters{display:flex;flex-wrap:wrap;align-items:end;gap:.8rem;padding:1rem 1.4rem;border-bottom:1px solid var(--line);background:#fafcff}.calendar-filters label{display:grid;gap:.3rem;font-size:.7rem;font-weight:700;color:var(--muted);letter-spacing:.02em}.calendar-filters select{font:500 .83rem 'DM Sans',sans-serif;border:1px solid #cbd6e7;border-radius:8px;background:white;color:var(--navy);padding:.55rem .65rem;max-width:100%;min-height:38px}.week-count{font-size:.78rem;color:var(--muted);margin-left:auto;padding-bottom:.6rem}
.calendar-viewport{overflow:auto;max-height:540px;scrollbar-color:#a5b6d1 #edf2f9;scrollbar-width:thin;overscroll-behavior-x:contain;scroll-snap-type:x proximity}.calendar-viewport:focus-visible{outline:3px solid var(--blue);outline-offset:-3px}.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(156px,1fr));min-width:1092px;align-items:stretch}.calendar-day{border-right:1px solid var(--line);min-height:245px;scroll-snap-align:start;background:#fff}.calendar-day:last-child{border-right:0}.calendar-day.is-today{background:#f2f7ff}.day-head{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.8rem .75rem;background:#f0f4fb;border-bottom:1px solid var(--line);font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.day-head strong{font:800 1.3rem 'League Spartan',sans-serif;color:var(--navy)}.is-today .day-head{background:#e4edff;color:var(--blue)}.is-today .day-head strong{display:grid;place-items:center;background:var(--blue);color:#fff;width:30px;height:30px;border-radius:50%}.day-events{display:grid;align-content:start;gap:.6rem;padding:.65rem .5rem}.day-empty{font-size:.75rem;color:var(--muted);padding:.6rem .25rem}
.calendar-event{border:1px solid #dce6f4;border-left:3px solid var(--blue);border-radius:9px;padding:.65rem .55rem;background:#f7faff;min-width:0;overflow-wrap:anywhere}.calendar-event.is-arts{border-left-color:#ab7512;background:#fffaf0}.calendar-event.is-canceled,.calendar-event.is-rescheduled{border-left-color:#bd6067;background:#fff8f8}.event-clock{font-size:.72rem;font-weight:800;color:var(--blue);margin:0 0 .4rem}.calendar-event h4{font-size:.81rem;line-height:1.35;margin:0 0 .3rem;color:var(--navy);font-weight:800}.calendar-event.is-canceled h4,.calendar-event.is-rescheduled h4{text-decoration:line-through}.event-opponent{font-size:.73rem;line-height:1.4;margin:0 0 .4rem}.event-location{font-size:.69rem;line-height:1.45;color:#596984;margin:.35rem 0 0}.event-round{font-size:.69rem;line-height:1.4;margin:.4rem 0;color:#465c7e}.calendar-badges{display:flex;gap:.3rem;flex-wrap:wrap;margin-top:.5rem}.calendar-badge{font-size:.62rem;font-weight:700;border-radius:5px;padding:.18rem .35rem;background:#e6eefc;color:#174b9f}.badge-home{background:#e3f3e9;color:#19693e}.badge-away{background:#eef0f5;color:#5c667b}.badge-warning{background:#fff0c9;color:#7b5711}.badge-canceled{background:#ffe5e7;color:#9c2833}.badge-points{background:#fff0c9;color:#7b5711}.event-moved{font-size:.67rem;color:#92525a;margin:.4rem 0 0}.calendar-foot{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.85rem 1.3rem;border-top:1px solid var(--line);font-size:.72rem;color:var(--muted)}.legend-dot{display:inline-block;width:7px;height:7px;background:var(--blue);border-radius:50%;margin-right:.3rem}.arts-dot{background:#ab7512;margin-left:.7rem}.section-note a{color:var(--blue)}
@media(max-width:600px){.calendar-toolbar{padding:1rem;align-items:start;flex-direction:column;gap:.85rem}.calendar-toolbar h3{font-size:1.5rem}.week-controls{width:100%}.week-controls #week-today{flex:1}.calendar-filters{padding:.9rem;gap:.65rem}.calendar-filters label{flex:1 1 42%;min-width:0}.calendar-filters label:last-of-type{flex-basis:42%}.week-count{font-size:.72rem}.calendar-days{grid-template-columns:repeat(7,180px);min-width:1260px}.calendar-viewport{max-height:505px}.calendar-foot{padding:.85rem 1rem;font-size:.68rem}.calendar-event h4{font-size:.85rem}}
@media(max-width:560px){header .navlinks a:nth-child(2){display:inline}header .navlinks a{font-size:.78rem}header .navlinks{gap:.7rem}}
.bonus-body{padding:1.1rem 1.3rem}.bonus-body>p{font-size:.9rem;color:var(--muted);margin:0 0 1rem}.bonus-rotation{list-style:none;padding:0;margin:0;counter-reset:weeks}.bonus-rotation li{counter-increment:weeks;position:relative;padding:.8rem .8rem .8rem 2.8rem;border:1px solid var(--line);border-radius:11px;margin:.55rem 0;background:#fafcff}.bonus-rotation li:before{content:counter(weeks);position:absolute;left:.75rem;top:.85rem;font-weight:800;color:var(--muted)}.bonus-rotation li.active{border-color:var(--gold);background:#fffbeb}.bonus-rotation li.active:before{color:#936100}.bonus-rotation strong{display:block;font-size:.88rem;color:var(--navy)}.bonus-rotation span{display:block;margin-top:.25rem;font-size:.78rem;color:var(--muted)}.bonus-body .bonus-note{font-size:.76rem;margin:1rem 0;line-height:1.5}.spectator-rule{font-size:.81rem;border-top:1px solid var(--line);padding-top:1rem;color:var(--navy)}
