.app-navigation{height:48px;display:flex;align-items:center;gap:6px;background:#111;border-bottom:1px solid #383838;padding:0 20px}
.app-navigation button{background:transparent;color:#aaa;border:0;border-radius:5px;padding:9px 18px;font-size:12px}
.app-navigation button:hover{background:#282828;color:#fff}.app-navigation button[aria-current=page]{background:#333;color:#fff}
.app-navigation button[data-screen=planner]{margin-left:16px;border-left:1px solid #555}
.app-navigation button[data-screen=planner][aria-current=page]{background:#c63336}
#mode-label{margin-left:auto;font-size:9px;letter-spacing:1.4px;color:#bbb}.editor-mode #mode-label{color:#ff9da0}
.editor-mode .workspace{height:calc(100dvh - 104px)}
.editor-mode #planner-drawer,.editor-mode.studio-week-mode #planner-drawer{top:104px}
.publication-toolbar{display:flex;align-items:center;gap:7px;border:1px solid #87393c;border-left:4px solid #c63336;background:#321b1d;color:white;border-radius:7px;padding:9px 11px;flex-shrink:0}
.publication-toolbar>div{flex:1;min-width:0}.publication-toolbar strong{display:block;font-size:12px}.publication-toolbar small{display:block;color:#c8aaac;margin-top:4px;font-size:10px}
.publication-toolbar button{font-size:10px;background:#402b2d;border-color:#745154;color:#eee}.publication-toolbar .primary{background:#c63336;border-color:#c63336}
.viewer-mode #planner-drawer{display:none!important}
.viewer{height:calc(100dvh - 104px);padding:18px 20px 10px;display:flex;flex-direction:column;gap:14px;background:#171717;color:#eee;overflow:auto}
.viewer-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-shrink:0}
.viewer-heading h1{font-size:23px;letter-spacing:-.6px;margin:5px 0}.viewer-heading p{color:#bbb;font-size:12px;margin:5px 0}
.viewer .eyebrow{font-size:9px;letter-spacing:1.5px;color:#c4c4c4}
.viewer-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.viewer-controls button{background:#2c2c2c;color:#eee;border-color:#484848;font-size:11px}
.viewer-controls input{width:132px;padding:6px;background:#292929;border-color:#555;color:white;color-scheme:dark;min-height:32px;font-size:11px}
.preview-notice{background:#57341b;color:#ffdcaf;border:1px solid #ae7542;border-radius:5px;padding:9px 12px;font-size:12px}
.viewer-board{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px;flex:1;min-height:360px}
.viewer-day{display:flex;flex-direction:column;min-width:0;background:#282828;border:1px solid #444;border-radius:7px;overflow:hidden}
.viewer-day>header{display:flex;justify-content:space-between;align-items:center;gap:4px;padding:10px 7px;background:#101010;font-size:10px}
.viewer-day>header h2{font-size:12px;margin:0}.viewer-day>header span{color:#bbb}.viewer-day.is-today>header{background:#b82d32}.viewer-day.is-today>header span{color:#fff}
.viewer-locations,.viewer-room-headers,.viewer-time-grid{display:grid;grid-template-columns:29px repeat(4,minmax(0,1fr));gap:1px}
.viewer-locations{padding:9px 4px 2px;font-size:9px;text-align:center}.viewer-locations strong:first-of-type{grid-column:span 3;border-right:2px solid #666}
.viewer-room-headers{padding:4px;font-size:8px;text-align:center;color:#bbb}.viewer-room-headers>span:not(:first-child){border-bottom:3px solid;padding-bottom:4px}
.viewer-time-grid{flex:1;min-height:180px;padding:3px 4px 8px}
.viewer-ruler{position:relative;min-width:0}.viewer-ruler span{position:absolute;right:0;transform:translateY(-50%);font-size:8px;color:#bbb;padding-right:4px;font-variant-numeric:tabular-nums}
.viewer-ruler .quarter-tick{width:3px;border-top:1px solid #777}.viewer-ruler .hour-tick{width:100%;border-right:2px solid #bbb}.viewer-ruler span:first-child{transform:none}.viewer-ruler span:last-child{transform:translateY(-100%)}
.viewer-lane{position:relative;background:#242424;min-width:0}
.viewer-lane:last-child{border-left:3px solid #282828}
.viewer-lesson{position:absolute;border:0;border-bottom:1px solid #ffffff70;border-radius:0;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;overflow:hidden;color:#322629;font-size:clamp(7px,.75vw,13px);font-weight:800;letter-spacing:-.4px;min-width:0}
.viewer-lesson small{font-size:clamp(6px,.58vw,9px);font-weight:550;letter-spacing:-.2px}.viewer-lesson:hover{filter:brightness(1.08);z-index:2;outline:2px solid #fff;outline-offset:-2px;box-shadow:none}
.viewer-event{margin:5px 4px 0;padding:6px 4px;font-size:10px;text-align:left;border-radius:3px;overflow-wrap:anywhere;flex-shrink:0}
.viewer-holiday{padding:5px;color:#d0b985;font-size:9px}.viewer-no-lessons{font-size:10px;color:#aaa;text-align:center;margin:5px}
.viewer-footer{font-size:10px;color:#aaa;flex-shrink:0}.viewer-empty{margin:auto;text-align:center;background:#242424;border:1px solid #444;border-radius:10px;padding:35px;max-width:600px}.viewer-empty h2{font-size:22px}.viewer-empty p{line-height:1.7;color:#bbb}.viewer-empty button{background:#c63336;color:white;border-color:#c63336}
.viewer-day-board{grid-template-columns:1fr;max-width:1250px;width:100%;align-self:center}.viewer-day-board .viewer-day>header{display:none}.viewer-day-board .viewer-locations{font-size:15px}.viewer-day-board .viewer-room-headers{font-size:12px}.viewer-day-board .viewer-locations,.viewer-day-board .viewer-room-headers,.viewer-day-board .viewer-time-grid{grid-template-columns:48px repeat(4,minmax(0,1fr))}.viewer-day-board .viewer-ruler span{font-size:10px}.viewer-day-board .viewer-lesson{font-size:18px}.viewer-day-board .viewer-lesson small{font-size:11px}
.season-overview-info{padding:14px;background:#252525;border:1px solid #444;border-radius:8px;display:flex;flex-wrap:wrap;gap:10px;align-items:center}.season-overview-info strong{font-size:14px}.season-overview-info span{font-size:12px;color:#e4a0a0}.season-overview-info p{width:100%;font-size:11px;color:#bbb;margin:0}
.viewer-months{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;padding-bottom:20px}.viewer-month{background:#242424;padding:14px;border:1px solid #444;border-radius:8px}.viewer-month h2{font-size:15px;margin:0 0 12px;text-transform:capitalize}.viewer-month .month-grid button{color:#eee;font-size:12px;padding:9px 0;border-radius:3px}.viewer-month .weekday{color:#aaa}.viewer-month .holiday{background:repeating-linear-gradient(135deg,#333 0 4px,#292929 4px 8px)}.viewer-month .has-lessons:after{content:'';width:4px;height:4px;border-radius:50%;background:#ddd;position:absolute;bottom:2px;left:calc(50% - 2px)}.viewer-month .own-day{background:#b52b30!important}.viewer-month .external-day{box-shadow:inset 0 -2px #dbb663}.viewer-month .is-today{outline:1px solid white;outline-offset:-1px}.viewer-month .open-day{outline:2px solid #ffcc6b;outline-offset:-2px}.viewer-month>button{display:block;margin-top:10px;background:#333;border-color:#555;color:#ddd;font-size:10px;text-align:left;width:100%}
#publish-dialog{width:min(680px,94vw);max-height:90dvh;overflow:auto}#publish-summary ul{max-height:220px;overflow:auto;font-size:12px;line-height:1.8;padding-left:20px}#publish-warnings{font-size:12px;max-height:170px;overflow:auto;color:#96531c}#publish-error,#season-settings-error,#restore-error{color:#b32b30;font-size:12px}#season-settings-dialog{width:480px}#season-settings-form>label{display:block;margin-top:15px}#season-settings-form p{font-size:12px;line-height:1.6}
@media(max-width:1100px){.app-navigation{padding:0 12px}.app-navigation button{padding:9px 11px}.publication-toolbar{flex-wrap:wrap}.publication-toolbar>div{flex-basis:100%}.viewer{padding:12px 8px}.viewer-board{gap:5px}.viewer-day>header{flex-direction:column;align-items:flex-start}.viewer-locations,.viewer-room-headers,.viewer-time-grid{grid-template-columns:24px repeat(4,minmax(0,1fr))}.viewer-months{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){#mode-label{display:none}.app-navigation button{padding:9px 7px;font-size:11px}.app-navigation button[data-screen=planner]{margin-left:auto}.viewer-heading{align-items:flex-start;flex-direction:column;gap:8px}.viewer-heading h1{font-size:19px}.viewer-board:not(.viewer-day-board){min-width:850px}.viewer-months{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media print{.app-navigation,.publication-toolbar,.viewer-controls,#mode-label{display:none!important}.viewer{height:auto;overflow:visible;padding:0;background:white;color:black}.viewer-heading h1,.viewer-heading p{color:black}.viewer-board{height:170mm;min-height:0;break-inside:avoid}.viewer-day{background:#eee;border-color:#bbb}.viewer-day>header{background:#eee;color:black}.viewer-day>header span,.viewer-locations,.viewer-room-headers{color:#333}.viewer-ruler span{color:#555}.viewer-footer{color:#555}.viewer-months{grid-template-columns:repeat(4,1fr)}.viewer-month{break-inside:avoid}.viewer-mode .workspace{display:none!important}}

@media print{.viewer-lane{background:#f2f2f2}}
/* Season: compact activity counts, with a separate read-only day programme. */
.season-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:18px;align-items:start;min-height:0;flex:1;overflow:auto}
.season-layout .viewer-months{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.season-layout .viewer-month{padding:12px}.season-layout .viewer-month h2{margin-bottom:4px}
.month-summary{font-size:10px;color:#aaa;margin:0 0 12px}
.season-layout .month-grid button{min-height:49px;padding:5px 1px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:#2c2c2c;border:1px solid transparent}
.season-layout .month-grid button:hover{background:#414141}
.season-layout .month-grid button[aria-pressed=true]{border-color:#fff;box-shadow:0 0 0 1px #fff}
.season-layout .month-grid .holiday{background:repeating-linear-gradient(135deg,#333 0 4px,#292929 4px 8px)}
.season-date-number{font-size:12px}.season-day-count{font-size:8px;color:#bbb;line-height:1.2;white-space:nowrap}.own-day .season-day-count{color:#fff}
.season-event-mark{position:absolute;top:2px;right:3px;font-size:6px;color:#ffdd97}
.month-holiday-label{font-size:10px;line-height:1.5;color:#d9c191;padding-left:8px;border-left:2px solid #847148;margin:10px 0 0}
.viewer-month>button.month-event{font-size:11px;line-height:1.4}.viewer-month>button.month-event.own-event{background:#60302b;border-color:#a95748;color:#ffdfc6}.viewer-month>button.month-event.external-event{background:#303030;border-color:#555;color:#ccc}
.season-day-detail{position:sticky;top:0;background:#222;border:1px solid #555;border-top:3px solid #c63336;border-radius:8px;padding:15px;max-height:100%;overflow:auto}
.season-day-detail h2{font-size:20px;margin:7px 0}.season-detail-summary{font-size:11px;color:#bbb;margin-bottom:15px}
.season-holiday-note{background:#393326;color:#e0c89b;padding:9px;border-radius:5px;font-size:11px;line-height:1.5}
.season-detail-event{display:flex;flex-direction:column;gap:5px;width:100%;padding:10px;margin-bottom:10px;text-align:left;line-height:1.4}.season-detail-event strong{font-size:12px}.season-detail-event small{font-size:10px;font-weight:400}
.season-location-programme h3{font-size:13px;margin:16px 0 7px;color:#eee}.season-no-lessons{font-size:11px;color:#999;line-height:1.5}
.season-programme-row{display:flex;gap:9px;width:100%;text-align:left;background:#2b2b2b;border:0;border-left:3px solid var(--room-color);border-radius:3px;margin:5px 0;padding:9px 7px;color:#eee}.season-programme-row:hover{background:#393939}
.season-programme-time{font-size:11px;flex:0 0 36px;font-variant-numeric:tabular-nums}.season-programme-time small{display:block;font-size:9px;color:#aaa;margin-top:5px;font-weight:400}
.season-programme-course{min-width:0}.season-programme-course strong{display:block;font-size:11px;line-height:1.4;font-weight:650}.season-programme-course small{display:block;font-size:9px;line-height:1.5;color:#bbb;margin-top:4px;font-weight:400}
.season-detail-actions{display:flex;gap:6px;margin-top:16px;padding-top:12px;border-top:1px solid #444}.season-detail-actions button{flex:1;background:#333;border-color:#666;color:#eee;font-size:10px}
@media(min-width:1850px){.season-layout .viewer-months{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1350px){.season-layout{grid-template-columns:minmax(0,1fr) 280px}.season-layout .viewer-months{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:950px){.season-layout{grid-template-columns:1fr;overflow:visible}.season-day-detail{position:static;max-height:none}.season-layout .viewer-months{padding-bottom:0}.season-layout{min-height:auto}.viewer:has(.season-layout){overflow:auto}.season-layout .viewer-month{padding:9px}}
@media(max-width:470px){.season-layout .viewer-months{grid-template-columns:1fr}}
@media print{.season-layout{display:block;overflow:visible}.season-layout .viewer-months{grid-template-columns:repeat(3,minmax(0,1fr))}.season-day-detail{position:static;max-height:none;break-before:page}.season-detail-actions{display:none}}
.season-layout .viewer-months{align-items:start}
.season-layout .month-grid .is-today:not([aria-pressed=true]){outline:none}
.season-layout .month-grid .is-today .season-date-number{color:#ff9da0}
.season-layout .month-grid .own-day .season-date-number{color:#fff}

.viewer-heading h1{margin:0}.viewer{padding-top:12px}.viewer-controls:empty{display:none}
/* Keep the complete season on the board; day programmes open on demand. */
.viewer:has(.season-layout){overflow:hidden;gap:10px}
.season-overview-info{padding:9px 12px;gap:8px 16px;flex-shrink:0}
.season-compact-legend{margin-left:auto;color:#aaa;font-size:10px}
.season-layout{display:flex;flex:1;min-height:0;overflow:hidden}
.season-layout .viewer-months{display:grid;width:100%;height:100%;padding:0;grid-template-columns:repeat(var(--season-columns,3),minmax(0,1fr));grid-template-rows:repeat(var(--season-rows,2),minmax(0,1fr));gap:10px;align-items:stretch;min-height:0}
.season-layout .viewer-month{display:flex;flex-direction:column;min-height:0;padding:10px;overflow:hidden}
.season-layout .viewer-month h2{font-size:14px;flex-shrink:0;margin:0 0 3px}
.season-layout .month-summary{margin:0 0 7px;font-size:9px;flex-shrink:0}
.season-layout .month-grid{flex:1;min-height:0;grid-template-rows:15px repeat(6,minmax(0,1fr));gap:3px}
.season-layout .month-grid button{min-height:0;padding:1px;gap:2px;overflow:hidden}
.season-layout .month-grid .weekday{font-size:9px;align-self:center}
.season-layout .season-date-number{font-size:12px;line-height:1}.season-layout .season-day-count{font-size:8px;line-height:1}
.season-layout .month-holiday-label{font-size:9px;line-height:1.3;margin-top:5px;flex-shrink:0}
.season-layout .viewer-month>button.month-event{font-size:10px;line-height:1.2;padding:5px 7px;margin-top:5px;flex-shrink:0}
#season-day-dialog{background:#222;color:#eee;border:1px solid #555;border-top:3px solid #c63336;width:min(540px,94vw);max-height:90dvh;padding:0;overflow:auto}
#season-day-dialog .season-day-detail{position:static;border:0;border-radius:0;max-height:none;overflow:visible;padding:20px}
#season-day-dialog h2{color:#fff;padding-right:35px}#season-day-dialog .eyebrow{color:#bbb}
#season-day-dialog .season-modal-close{position:sticky;top:8px;float:right;z-index:2;margin:8px 10px -42px 0;background:#383838;color:#fff;border-color:#555;width:30px;height:30px;padding:0;font-size:23px}
#season-day-dialog .season-programme-row,#season-day-dialog .season-detail-actions button{color:#eee}
#season-day-dialog .season-detail-event.own-event{color:#77500b}
@media print{.season-layout .viewer-months{height:auto;grid-template-columns:repeat(3,1fr);grid-template-rows:none}.season-layout .viewer-month{min-height:65mm}.season-layout .month-grid{min-height:42mm}#season-day-dialog{display:none}}
#series-dates{max-height:300px;overflow:auto;border:1px solid #ddd;border-radius:7px;background:#fff;margin:10px 0;scrollbar-width:thin}
#series-dates:empty{display:none}
.series-date-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border-bottom:1px solid #e8e8e8;margin:0;cursor:pointer}
.series-date-row:last-child{border-bottom:0}.series-date-row:hover{background:#f6f6f6}
.series-date-row input{width:17px;height:17px;min-height:17px;margin:0;flex-shrink:0;accent-color:#c63336}
.series-date-description{display:flex;flex-direction:column;gap:3px;flex:1}.series-date-description strong{font-size:11px;color:#333}.series-date-description small{font-size:10px;font-weight:400;color:#777}
.series-date-number{font-size:10px;font-weight:700;color:#a42c30;background:#f9e9e9;padding:4px 6px;border-radius:4px;white-space:nowrap}
.series-date-row.is-skipped{background:#f7f7f7}.series-date-row.is-skipped .series-date-number{background:#e9e9e9;color:#777}
.series-date-row.is-holiday{border-left:3px solid #d4b87b;padding-left:7px}
.series-calendar-help{font-size:11px;line-height:1.5;color:#666}

/* Event days retain their own appearance; lesson-day borders are independent of holidays. */
.season-layout .month-grid button.season-has-lessons{border:1px solid #55b881}
.season-layout .month-grid button.season-no-class{border:1px solid #d96b6b}
.season-layout .month-grid button.season-has-lessons[aria-pressed=true],.season-layout .month-grid button.season-no-class[aria-pressed=true]{box-shadow:none;outline:1px solid #fff;outline-offset:1px}

/* Event titles read along the tall room blocks, distinct from yellow room cards. */
.event-block{background:#d12229!important;--bg:#d12229!important;color:#fff!important;box-shadow:inset 0 0 0 1px #f15b60!important}
.plan-lesson.event-block,.lesson.event-block,.viewer-lesson.event-block{display:flex;align-items:center;justify-content:center;padding:6px 2px;overflow:hidden}
.event-block .event-title{writing-mode:vertical-rl;text-orientation:mixed;white-space:normal;overflow-wrap:anywhere;text-align:center;max-height:100%;max-width:100%;font-size:14px;line-height:1.15;color:inherit!important}
.event-block.event-external{background:#535661!important;--bg:#535661!important;color:#fff!important;box-shadow:inset 0 0 0 1px #8f939e!important}
.school-event-chip.own-event,.viewer-event.own-event,.viewer-month>button.month-event.own-event,#season-day-dialog .season-detail-event.own-event{background:#d12229;border-color:#f15b60;color:#fff}
.viewer-month .own-day{background:#d12229!important}

.viewer-holiday{font-size:12px;font-weight:700;line-height:1.4;padding:7px 8px;color:#f1d397;background:#302c24;border-bottom:1px solid #504734}

.create-duration{margin:0;padding:0;border:0;min-width:0}.create-duration legend{font-size:12px;margin-bottom:6px}.duration-inputs{display:grid;grid-template-columns:1fr 1fr;gap:8px}.duration-inputs label{font-size:11px}.duration-inputs input{width:100%;min-width:0}

.audience-options{border:0;padding:0;margin:0;min-width:0;display:flex;flex-wrap:wrap;gap:8px}.audience-options legend{font-size:12px;margin-bottom:7px}.audience-options label{display:flex!important;align-items:center;gap:5px;font-size:12px!important;padding:5px 7px;border:1px solid #ddd;border-radius:5px;cursor:pointer}.audience-options label:has(input:checked){border-color:#c63336;background:#fbecec}.audience-options input{width:15px!important;min-height:15px!important;height:15px;padding:0!important;margin:0;accent-color:#c63336}

/* Ieper courses keep the blue palette; cyan distinguishes school events. */
.ieper-course{background:linear-gradient(155deg,#1277ce 0%,#2464c6 55%,#304fb2 100%)!important;color:#fff!important}
.ieper-course .lesson-number,.ieper-course .lesson-code,.ieper-course small,.ieper-course time,.ieper-course .level{color:#fff!important}
.event-block{background:linear-gradient(155deg,#6ce8f4 0%,#32cfe6 55%,#16b6d3 100%)!important;--bg:#32cfe6!important;color:#073744!important;box-shadow:inset 0 0 0 1px #80eafa,inset 0 4px 0 #b2f6ff!important}
.event-block[data-event-period]:before{content:attr(data-event-period);position:absolute;top:12px;left:0;right:0;text-align:center;font-size:8px;font-weight:500;letter-spacing:0;color:#164956;writing-mode:horizontal-tb}
.school-event-chip.own-event,.viewer-event.own-event,.viewer-month>button.month-event.own-event,#season-day-dialog .season-detail-event.own-event{background:linear-gradient(115deg,#6ce8f4,#21c4df);color:#073744;border:1px solid #80eafa;border-left:3px solid #b2f6ff;box-shadow:0 2px 7px #061d4938}
.school-event-chip.own-event small,.event-day-caption{color:#164956;font-weight:400}.event-day-caption{display:block;font-size:9px;margin-top:3px}
.viewer-month .own-day{background:linear-gradient(145deg,#6ce8f4,#21c4df)!important;box-shadow:inset 0 3px #b2f6ff}.viewer-month .open-day{outline:1px solid #b2f6ff;outline-offset:-1px}
.event-block.event-external{background:#303136!important;box-shadow:inset 0 0 0 1px #74757b!important;color:#d9d9dd!important}
@media screen and (min-width:701px){
 .appbar{height:48px}.brand-logo{height:37px;width:78px}
 .app-navigation{height:40px}.app-navigation button{padding:7px 16px}
 .viewer,.editor-mode .workspace{height:calc(100dvh - 88px)}
 .editor-mode #planner-drawer,.editor-mode.studio-week-mode #planner-drawer{top:88px;bottom:18px;border-bottom:1px solid #494949;border-radius:0 0 0 9px}
 .viewer{padding:12px 18px 24px;gap:10px;overflow:hidden}
 .viewer-board{min-height:0;padding:8px;background:#1e1e1e;border:1px solid #484848;border-bottom:3px solid #606064;border-radius:10px;box-shadow:0 9px 18px #0003}
 .viewer-day{border-radius:4px}.viewer-day>header{padding:8px 6px}
 .viewer-time-grid{min-height:0;padding-bottom:12px}.viewer-lane{border-bottom:2px solid #707074}
 .viewer-footer{padding:2px 3px;color:#999}
 .editor-mode .workspace{padding-top:8px;padding-bottom:24px;gap:7px}
 .publication-toolbar{padding:6px 10px;background:#242124;border-color:#49373a;border-left-color:#a94246}
 .publication-toolbar>div{display:flex;align-items:center;flex-wrap:wrap;gap:4px 12px}.publication-toolbar small{margin:0}
 .week-context{padding:4px 8px}.board-topbar{min-height:30px}
 .stage-caption,.studio-week-mode .stage-caption{min-height:55px;flex-basis:55px;padding:4px}
 .stage,.planning-mode .stage{border-bottom:3px solid #646468;box-shadow:0 9px 18px #0003}
 .stage-bottom{min-height:29px}.plan-day-title{height:32px;flex-basis:32px}
}

@media screen and (min-width:701px) and (min-height:850px){.viewer-board{max-height:72dvh}.editor-mode .stage{max-height:72dvh}}

.viewer-month .own-day .season-date-number,.viewer-month .own-day .season-day-count,.viewer-month .own-day .season-event-mark{color:#073744}

/* Event banners announce the occasion; hatching marks only its occupied rooms. */
.event-banner{display:flex;align-items:center;gap:8px;padding:9px 7px!important;text-align:left;min-width:0}
.event-banner-icon{width:19px;flex:0 0 19px}.event-banner-icon svg{display:block;width:100%;height:20px}
.event-banner-copy{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.event-banner-copy strong{font-size:10px;line-height:1.3;overflow-wrap:anywhere}.event-banner-copy small{font-size:9px;line-height:1.3;font-weight:450;color:inherit!important}
.event-banner-arrow{font-size:21px;font-weight:400;flex-shrink:0}
.event-banner.external-event .event-banner-icon{display:none}
.viewer-time-grid{position:relative;--viewer-ruler-width:29px}
.viewer-event-layer{position:absolute;inset:3px 4px 12px calc(var(--viewer-ruler-width) + 5px);pointer-events:none}
.viewer-event-band{position:absolute;pointer-events:auto;border:1px solid #26cde1;border-radius:2px;padding:0;min-width:0;z-index:1;overflow:hidden;color:#edfcff;background:repeating-linear-gradient(135deg,transparent 0 5px,#23c3db88 5px 6px),#10343e;box-shadow:inset 0 0 12px #00c8df14}
.viewer-event-band:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(to right,transparent calc(100% - 1px),#42d7e5aa 0);background-size:calc(100% / var(--event-rooms)) 100%}
.viewer-event-band:hover{filter:brightness(1.15)}
.event-band-label{position:absolute;left:50%;transform:translate(-50%,-50%);width:max-content;max-width:calc(100% - 8px);overflow:hidden;padding:8px 6px;display:flex;flex-direction:column;gap:5px;background:#103642f5;border:1px solid #40d5e6;border-radius:5px;box-shadow:0 3px 10px #0004;text-align:center;z-index:1;box-sizing:border-box;line-height:1.35}
.event-band-label strong{font-size:clamp(8px,.65vw,12px);overflow-wrap:anywhere;white-space:normal}.event-band-label small{font-size:10px;font-weight:450}
.viewer-lesson:not(.event-block){z-index:2}.viewer-lesson:not(.event-block):hover{z-index:3}
.viewer-event-band.event-external{border-color:#747d84;background:repeating-linear-gradient(135deg,transparent 0 5px,#8f9ea055 5px 6px),#263034;color:#eee}
.event-external .event-band-label{background:#293539;border-color:#74878e}
.event-block{background:repeating-linear-gradient(135deg,transparent 0 5px,#23c3db88 5px 6px),#10343e!important;--bg:#10343e!important;color:#edfcff!important;box-shadow:inset 0 0 0 1px #26cde1!important}
.event-block .event-title{writing-mode:horizontal-tb;max-width:calc(100% - 4px);padding:6px 3px;background:#103642f5;border-radius:3px;line-height:1.35;font-size:clamp(8px,.65vw,12px)!important;overflow-wrap:anywhere}
.event-block[data-event-period]:before{color:#d7faff}
@media(max-width:1100px){.viewer-time-grid{--viewer-ruler-width:24px}.event-banner{gap:4px}.event-banner-icon{width:14px;flex-basis:14px}.event-banner-copy strong{font-size:9px}.event-banner-copy small{font-size:8px}}
.viewer-day-board .viewer-time-grid{--viewer-ruler-width:48px}.viewer-day-board .event-band-label strong{font-size:15px}
@media print{.viewer-event-band,.event-block{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

/* One day banner, separate illustrated event areas, selectable local SVG icons. */
.event-banner-icon svg,.event-card-icon svg,.event-band-icon svg{width:100%;height:100%;display:block}
.event-card-icon{display:block;width:24px;height:24px;color:#47e5f5;flex:0 0 24px}
.plan-lesson.event-block,.lesson.event-block{flex-direction:column;gap:7px}
.event-band-icon{display:block;width:30px;height:30px;min-height:20px;align-self:center;color:#43e5f6;flex-shrink:0}
.event-band-label{gap:5px;padding:9px 6px}.event-band-label strong{font-size:clamp(9px,.7vw,13px)}.event-band-label small{font-size:9px}.event-band-rooms{opacity:.8}
.event-group-banner .event-summary-row{display:flex;align-items:baseline;gap:5px;text-align:left}.event-summary-row time{white-space:nowrap;flex-shrink:0;font-variant-numeric:tabular-nums}.event-summary-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.event-summary-row.is-external{opacity:.65}
#event-day-list{width:min(490px,94vw);background:#202526;color:#fff;border:1px solid #35757e;max-height:85dvh;overflow:auto}#event-day-list h2{font-size:19px}#event-day-list .school-event-chip{width:100%;margin:10px 0}#event-day-list .dialog-top button{background:#343b3d;color:#fff}
#event-icon-chooser{margin:13px 0;border:1px solid #275762;border-radius:7px;background:#0c242b;color:#78e7f3}
#event-icon-current{display:flex;align-items:center;gap:10px;padding:10px;cursor:pointer;list-style:none;outline-offset:2px;font-size:12px}
#event-icon-current::-webkit-details-marker{display:none}#event-icon-current .event-banner-icon{width:25px;height:25px;flex-basis:25px}#event-icon-current small{margin-left:auto;font-size:10px;color:#b1e6ed}
#event-icon-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px;padding:10px;max-height:330px;overflow:auto;border-top:1px solid #275762}
.event-icon-choice{display:flex;flex-direction:column;align-items:center;gap:7px;justify-content:center;min-height:78px;padding:7px 3px;background:#092129;color:#42e4f4;border:1px solid #206472;border-radius:5px}
.event-icon-choice .event-banner-icon{width:29px;height:29px;flex-basis:29px}.event-icon-choice>span:last-child{font-size:8px;line-height:1.3;text-align:center;color:#d1f6fa}
.event-icon-choice:hover{background:#143c46;border-color:#53eaff}.event-icon-choice[aria-pressed=true]{background:#155463;border-color:#7cf3ff;box-shadow:inset 0 0 0 1px #7cf3ff}
@media(max-width:500px){#event-icon-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* Actual filled icons from the user's reference, tinted to their UI surface. */
.event-banner-icon,.event-card-icon,.event-band-icon{display:inline-flex;align-items:center;justify-content:center}
.event-icon-art{display:block;width:100%;height:76.6667%;background:currentColor;mask-image:url('assets/event-icon-shapes.svg');mask-mode:alpha;mask-repeat:no-repeat;mask-size:1248.3333% 878.26087%;-webkit-mask-image:url('assets/event-icon-shapes.svg');-webkit-mask-repeat:no-repeat;-webkit-mask-size:1248.3333% 878.26087%}
.event-icon-choice .event-banner-icon{width:38px;height:38px;flex-basis:38px}.event-band-icon{width:38px;height:38px}

/* Compact cyan announcement bar, matching the supplied reference. */
.viewer-event.own-event,.event-day .school-event-chip.own-event{background:linear-gradient(110deg,#65e9f1 0%,#35dfed 70%,#24d7e9 100%);border:1px solid #80f1f6;border-radius:6px;box-shadow:inset 0 1px 0 #d9ffff55,0 2px 5px #00171b33;color:#032d36;padding:9px 10px!important;gap:10px}
.viewer-event .event-banner-icon,.event-day .school-event-chip .event-banner-icon{width:24px;height:26px;flex-basis:24px}
.viewer-event .event-banner-copy,.event-day .school-event-chip .event-banner-copy{gap:3px}
.viewer-event .event-banner-copy strong,.event-day .school-event-chip .event-banner-copy strong{font-size:clamp(10px,.72vw,13px);font-weight:800;line-height:1.25;letter-spacing:0}
.viewer-event .event-banner-copy small,.event-day .school-event-chip .event-banner-copy small{font-size:clamp(9px,.64vw,11px);line-height:1.35;font-weight:450}
.viewer-event .event-banner-arrow,.event-day .school-event-chip .event-banner-arrow{font-size:25px;line-height:1;margin-left:2px}
.event-group-banner .event-summary-row{gap:6px}.event-summary-row time{min-width:31px}.event-summary-row span{white-space:normal;overflow-wrap:anywhere}
.viewer-event .event-banner-copy strong,.event-day .school-event-chip .event-banner-copy strong{font-size:12px}
.viewer-event .event-banner-copy small,.event-day .school-event-chip .event-banner-copy small{font-size:11px}
.event-band-label{background:#10343eea;border:0;box-shadow:none;border-radius:3px;padding:8px 5px}
.event-band-label strong{font-size:12px;line-height:1.4}.event-band-label small{font-size:10px}.event-band-icon{width:42px;height:38px}

.event-icon-art{height:auto;aspect-ratio:60/46;flex-shrink:0}

/* Season dashboard: the complete season, one month per column on desktop. */
.viewer:has(.season-dashboard){background:radial-gradient(ellipse at 50% 0,#11222655,transparent 65%),#111718;gap:12px;padding-bottom:22px}
.season-heading{justify-content:flex-start;gap:28px;align-items:center}.season-heading h1{font-size:clamp(22px,2.1vw,33px);letter-spacing:-.7px}.season-heading .season-range{font-size:clamp(12px,1.15vw,18px);color:#b9c5c6;margin:5px 0 0}.season-heading .viewer-controls{margin-left:auto}
.season-statistics{display:flex;gap:10px;flex-shrink:0}.season-stat{display:flex;align-items:center;gap:12px;min-width:118px;padding:11px 14px;border:1px solid #284247;border-radius:7px;background:linear-gradient(120deg,#15282b,#0e191c);box-shadow:0 3px 10px #0002}.season-stat-icon{display:flex;align-items:center;width:32px;height:34px;color:#68eadc;flex-shrink:0}.season-stat strong{display:block;font-size:22px;line-height:1.1}.season-stat small{display:block;font-size:11px;color:#9bb4b7;margin-top:4px;max-width:100px}.season-stat.lessons .season-stat-icon,.season-stat.lessons small{color:#59dca0}.season-stat.holidays .season-stat-icon{color:#d8dedf}.season-stat.events .season-stat-icon,.season-stat.events small{color:#57dce9}
.season-legend{display:flex;align-items:center;gap:28px;padding:9px 13px;border:1px solid #273437;border-radius:5px;background:#111e2188;flex-shrink:0;align-self:flex-start;font-size:11px;color:#d1d9da}.season-legend>span{display:flex;align-items:center;gap:8px}.season-legend i{width:14px;height:14px;border-radius:50%;display:inline-block}.season-legend .season-key-lesson{background:#22c883}.season-legend .season-key-no-class{background:#803d47}.season-legend .season-key-event{background:#47dcea}.season-legend .season-key-important{background:#f0cb64}
.season-dashboard .viewer-months{gap:9px}.season-dashboard .viewer-month{padding:0;border:1px solid #29393c;border-radius:6px;background:linear-gradient(150deg,#14202377,#0e161977);box-shadow:0 5px 14px #0002;overflow:hidden}
.season-dashboard .viewer-month h2{font-size:clamp(12px,1.1vw,17px);margin:0;padding:11px 10px 4px}.season-dashboard .month-summary{font-size:10px;color:#b6c6c8;padding:0 10px;margin:0 0 8px}
.season-weekdays,.season-week-cells{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.season-weekdays{padding:6px 3px;background:#1a2529;border-top:1px solid #2b373b;border-bottom:1px solid #2b373b;flex-shrink:0;color:#c2cdcf;text-align:center;font-size:9px}
.season-calendar{display:grid;grid-template-rows:repeat(6,minmax(0,1fr));gap:3px;flex:1;min-height:0;padding:3px}
.season-calendar-week{display:flex;flex-direction:column;min-height:0}.season-week-cells{gap:2px;flex:1;min-height:0}
.season-week-cells button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:0;min-height:0;overflow:hidden;padding:4px 1px;border-radius:3px;border:1px solid #293336;background:#131c1e;color:#eef5f5;box-shadow:none}
.season-week-cells .season-date-number{font-size:clamp(10px,.95vw,14px);line-height:1.1}.season-week-cells .season-day-count{font-size:clamp(6px,.56vw,9px);color:inherit;line-height:1.15;white-space:nowrap;font-weight:550;letter-spacing:-.2px}
.season-week-cells .season-lesson-day{background:linear-gradient(140deg,#184a35,#0d3427);border-color:#348658;box-shadow:inset 0 1px 0 #83dba319}.season-lesson-day .season-day-count{background:#216741;border-radius:3px;padding:2px;color:#dff9e6}
.season-week-cells .season-no-lesson-day{background:#231d20;border-color:#52333c;color:#c6b5ba}.season-week-cells .season-holiday-day.season-no-lesson-day{background:repeating-linear-gradient(135deg,#56273055 0 4px,transparent 4px 8px),linear-gradient(145deg,#4e292f,#322027);border-color:#94535e;color:#f5dce0}
.season-week-cells .season-important-day{background:linear-gradient(140deg,#4c4021,#2d2a1b);border-color:#958347;color:#f1d990}
.season-week-cells .season-event-day{background:linear-gradient(130deg,#73eaf1,#2bcedf);border-color:#8af3f8;color:#063e46}.season-week-cells .season-event-day .season-day-count{color:#06404a}
.season-cell-icon{display:flex;align-items:center;justify-content:center;width:17px;height:15px;flex-shrink:0}.season-cell-event{font-size:clamp(6px,.52vw,8px);line-height:1.2;overflow-wrap:anywhere;text-align:center;max-width:100%}
.season-week-cells .season-external-day{box-shadow:inset 0 -2px #76b9c3}
.season-week-cells button:disabled{background:transparent;border-color:#202a2d;color:#556164;opacity:1}.season-week-cells .outside-month{color:#3d4b4e!important}
.season-week-cells button:not(:disabled):hover{filter:brightness(1.3);border-color:#dcf8f2}.season-week-cells button[aria-pressed=true]{outline:1px solid #eaffff;outline-offset:-1px}.season-week-cells .is-today .season-date-number{color:#fff;text-decoration:underline;text-underline-offset:3px}
.season-holiday-ribbon{font-size:8px;line-height:1.4;padding:3px 4px;background:linear-gradient(100deg,#70323f,#542b34);color:#ffe2e5;border:1px solid #935261;border-bottom:0;border-radius:3px 3px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
.season-month-notes{flex:0 0 auto;display:flex;flex-direction:column;justify-content:flex-end;gap:6px;padding:8px;min-height:146px;overflow:visible}
.season-note{display:flex;gap:8px;align-items:flex-start;padding:8px;border:1px solid #2a3d41;border-radius:5px;background:linear-gradient(120deg,#1c2c3066,#14202499);flex-shrink:0}.season-note>div{min-width:0;flex:1}.season-note-icon{display:flex;align-items:center;width:28px;height:28px;color:#69c1d1;flex-shrink:0}.season-note strong{display:block;font-size:10px;color:#9fdfdf;line-height:1.3}.season-note small{display:block;font-size:9px;color:#c0cccc;margin-top:4px;line-height:1.35}.holiday-note .season-note-icon{color:#e0bf78}.holiday-note strong{color:#edd6a5}.event-note .season-note-icon{color:#4fe1ed}
.season-note-event{display:block;text-align:left;padding:0;margin-top:4px;font-size:9px;line-height:1.4;border:0;background:transparent;color:#a8eaf0;font-weight:400}.season-note-event.external-event{color:#a9b6b8}.season-note-event:hover{color:#fff;text-decoration:underline}
.season-multirow .season-month-notes{flex-basis:auto;min-height:62px;justify-content:flex-start}.season-multirow .season-week-cells button{gap:1px;padding:1px}.season-multirow .season-cell-icon{display:none}.season-multirow .season-note{padding:5px}.season-multirow .season-holiday-ribbon{font-size:7px;padding:1px 3px}
@media(max-width:1100px){.season-heading{gap:16px}.season-stat{min-width:85px;padding:8px;gap:6px}.season-stat strong{font-size:19px}.season-stat-icon{width:25px}.season-stat small{font-size:9px}.season-legend{gap:18px}.season-month-notes{padding:5px}.season-note{gap:5px;padding:6px}.season-note-icon{width:22px}}
@media(max-width:750px){.season-heading{flex-wrap:wrap;gap:10px}.season-statistics{gap:5px}.season-stat{min-width:70px}.season-legend{gap:10px;font-size:9px;flex-wrap:wrap}.season-stat-icon{width:20px}.season-stat small{max-width:78px}}
@media print{.viewer:has(.season-dashboard){height:auto;overflow:visible;background:white;color:#111}.season-heading h1,.season-heading p{color:#111}.season-dashboard .viewer-months{grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:none;height:170mm}.season-dashboard .viewer-month{min-height:0;print-color-adjust:exact;-webkit-print-color-adjust:exact}.season-statistics,.season-legend{print-color-adjust:exact;-webkit-print-color-adjust:exact}.season-month-notes{flex-basis:25mm}}
@media screen and (min-width:1000px){.season-dashboard{max-height:none;width:100%}}

/* Week and Today overview: shared visual shell only. Each day's existing time scale stays intact. */
.week-room-legend{display:flex;align-items:center;gap:0;flex-wrap:wrap}
.week-room-key{display:flex;align-items:center;gap:7px;padding:8px 10px;font-size:10px;white-space:nowrap}
.week-room-key i{width:13px;height:18px;border-radius:3px;box-shadow:inset 0 1px 2px #fff5;flex:none}
.week-room-key strong{font-size:12px}.week-room-key+ .week-room-key{border-left:1px solid #ffffff12}
@media screen{
 .schedule-overview-mode .viewer{background:radial-gradient(ellipse at 45% 0,#10202755,transparent 70%),#080f13}
 .schedule-overview-mode .viewer-heading{flex-wrap:wrap;gap:8px 20px;padding:4px 2px}
 .schedule-overview-mode .week-room-legend{border:1px solid #3b3b3b;border-radius:5px;background:#222;color:#d2d2d2}
 .schedule-overview-mode .viewer-controls{margin-left:auto}
 .schedule-overview-mode .viewer-board{padding:0;gap:10px;background:transparent;border:0;box-shadow:none;border-radius:0;max-height:none}
 .schedule-overview-mode .viewer-day{background:linear-gradient(110deg,#142027,#0d171d);border:1px solid #3a4c56;border-radius:6px;box-shadow:inset 0 0 0 2px #ffffff03,0 4px 12px #0003}
 .schedule-overview-mode .viewer-day>header{flex-direction:column;align-items:flex-start;gap:3px;padding:11px 10px 9px;background:linear-gradient(110deg,#0b181f,#0a1319);border-bottom:1px solid #334149}
 .schedule-overview-mode .viewer-day>header h2{font-size:clamp(12px,1.05vw,18px);letter-spacing:-.2px}
 .schedule-overview-mode .viewer-day>header span{font-size:11px;color:#c5cdd2}
 .schedule-overview-mode .viewer-day.is-today{border-color:#ef4563;box-shadow:inset 0 0 0 1px #ef456355,0 0 18px #ec345c0a}
 .schedule-overview-mode .viewer-day.is-today>header{background:linear-gradient(110deg,#381d2a,#191820);border-bottom-color:#713745}
 .schedule-overview-mode .viewer-locations{color:#bcc6cd;padding-top:8px}
 .schedule-overview-mode .viewer-locations strong:first-of-type{border-right-color:#34454f}
 .schedule-overview-mode .viewer-room-headers{color:#d9e1e5;font-size:10px;padding-top:5px;padding-bottom:6px}
 .schedule-overview-mode .viewer-room-headers>span:first-child{font-size:7px;align-self:center;color:#8e9da7}
 .schedule-overview-mode .viewer-room-headers>span:not(:first-child){border-bottom-width:4px;padding-bottom:7px}
 .schedule-overview-mode .viewer-ruler span{color:#b7c4cc}
 .schedule-overview-mode .viewer-ruler .quarter-tick{border-color:#5d707a}
 .schedule-overview-mode .viewer-lane{background:#101c23;border-bottom:1px solid #42535e}
 .schedule-overview-mode .viewer-lane:last-child{border-left-color:#243740}
 .schedule-overview-mode .viewer-lesson{box-shadow:inset 0 1px #ffffff35,inset 0 -1px #0002;text-shadow:none}
 .schedule-overview-mode .viewer-footer{padding:10px 4px 0;border-top:1px solid #24333c;color:#aebcc5}
 .schedule-overview-mode #print{display:inline-flex}
}
@media screen and (max-width:1599px){
 .schedule-overview-mode .viewer-heading>div:first-child{flex:1}
 .schedule-overview-mode .week-room-legend{order:3}
 .schedule-overview-mode .week-room-key{padding:5px 9px}
}
@media screen and (max-width:900px){
 .schedule-overview-mode .viewer-board{gap:5px}
 .schedule-overview-mode .viewer-day>header{padding:8px 6px}
}
@media print{.week-room-legend{display:none}}
@media screen and (min-width:901px) and (max-width:1599px){
 .schedule-overview-mode .viewer-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 18px}
 .schedule-overview-mode .viewer-heading>div:first-child{grid-column:1;grid-row:1 / 3;align-self:center}
 .schedule-overview-mode .viewer-controls{grid-column:2;grid-row:1}
 .schedule-overview-mode .week-room-legend{grid-column:2;grid-row:2;justify-self:end}
}

/* Real one-pixel rules stay visible at fractional hour heights and browser zoom. */
.viewer-lane,.viewer-lane:last-child,.schedule-overview-mode .viewer-lane{border:0}
.viewer-lane::after{content:'';position:absolute;inset:0;border-left:1px solid #53616a;pointer-events:none;z-index:4}
.viewer-lane:last-child::after{border-right:1px solid #53616a}
.viewer-hour-line{position:absolute;left:0;right:0;height:0;border-top:1px solid #46535c;pointer-events:none}
.viewer-hour-line.last-hour-line{transform:translateY(-1px)}
@media print{.viewer-hour-line,.viewer-lane::after,.viewer-lane:last-child::after{border-color:#aaa}}

/* Keep the familiar three-level header: brand, navigation, then week controls. */
@media screen and (min-width:701px){
 .schedule-overview-mode .viewer-heading{margin:-12px -18px 0;padding:12px 18px;background:#171717;border-bottom:1px solid #303030}
}

/* Chosen palette 8: white type on the four room-coloured lesson cards. */
:is(.room-lane:not(.unassigned-lane) .lesson,.plan-lesson,.floor-lesson,.viewer-lesson):not(.card-private,.card-once,.postit,.plan-postit,.floor-postit,.event-block),
:is(.room-lane:not(.unassigned-lane) .lesson,.plan-lesson,.floor-lesson,.viewer-lesson):not(.card-private,.card-once,.postit,.plan-postit,.floor-postit,.event-block) :is(.lesson-number,.lesson-code,.plan-code,small,time,.level){color:#fff}
:is(.room-lane:not(.unassigned-lane) .lesson,.plan-lesson,.floor-lesson,.viewer-lesson):not(.card-private,.card-once,.postit,.plan-postit,.floor-postit,.event-block) .lesson-number{opacity:1}

/* Holiday exceptions: Kortrijk occupies the top-left half, Ieper the bottom-right. */
.season-legend .season-key-split{border-radius:3px;background:linear-gradient(to bottom right,#803d47 50%,#22c883 50%);border:1px solid #7c9990}
.season-week-cells .season-split-day{background:linear-gradient(to bottom right,var(--kortrijk-day) 49.5%,#9eb3a6 50%,var(--ieper-day) 50.5%);border-color:#8d7771;color:#fff}
.season-kortrijk-closed{--kortrijk-day:#803d47;--ieper-day:#16432f}
.season-ieper-closed{--kortrijk-day:#16432f;--ieper-day:#803d47}
.season-split-day .season-day-count{background:#142820d9;color:#fff}
.location-note{border-color:#665b32;background:linear-gradient(120deg,#3a321c66,#192020)}
.location-note .season-note-icon{color:#ffdc57;filter:drop-shadow(0 0 5px #ffd44d65)}
.location-note strong{color:#ffe18a}.location-note small{margin-top:2px;color:#e1e5dd}
/* Keep date cells equally readable when a holiday ribbon takes an extra line. */
.season-calendar{display:flex;flex-direction:column}
.season-calendar-week{flex:1 1 0}
.season-calendar-week:has(.season-holiday-ribbon){flex-basis:18px}

@media screen{
 .today-overview-mode .viewer-day-board{max-width:none}
 .today-overview-mode .viewer-room-headers{font-size:12px}
 .today-overview-mode .viewer-room-headers>span:first-child{font-size:9px}
}

/* Full course names in the spacious day view; week cards keep their abbreviations. */
.viewer-day-board .viewer-course-title{display:block;max-width:100%;padding:0 6px;line-height:1.15;text-align:center;overflow-wrap:anywhere}
.viewer-course-code{display:block;font-size:inherit;margin-bottom:2px}
.viewer-course-name{display:block;font-size:12px;font-weight:650;letter-spacing:0}
.viewer-day-board .viewer-course-meta{line-height:1.15}
