:root{--navy:#102e48;--navy-deep:#092237;--blue:#2666ed;--blue-light:#edf3ff;--mint:#80e4bf;--canvas:#f5f7fa;--ink:#182c40;--muted:#778697;--line:#e8edf2;--white:#fff;--radius:18px;--shadow:0 10px 38px #102e480a;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--canvas);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,img:focus-visible{outline:3px solid #5791ff;outline-offset:4px}button{color:inherit}a{color:inherit;text-decoration:none}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}button svg{pointer-events:none}h1,h2,h3,p{margin:0}button{border:0;background:none}input{min-width:0}input[type=password],input[type=text]{border:1px solid #dce4ed;border-radius:10px;padding:13px 14px;background:#fff;color:var(--ink)}input::placeholder{color:#92a0ae}input[type=password]:focus{outline:2px solid #80aaff;outline-offset:1px}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}[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}.flip{transform:rotate(180deg)}.eyebrow{display:block;font-size:12px;letter-spacing:1.5px;font-weight:750;color:var(--muted);line-height:1.5}.button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:42px;padding:11px 16px;background:#fff;border:1px solid #dfe6ee;border-radius:9px;font-size:12px;font-weight:650;line-height:1.4;transition:background .15s,transform .15s}.button:hover{background:#f1f5fb}.button:active{transform:translateY(1px)}.button:disabled{opacity:.55}.button.primary{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 3px 8px #2666ed18}.button.primary:hover{background:#1557dd}.button.subtle{background:#f5f7fa;border-color:transparent}.button svg{width:16px;height:16px}.button-row{display:flex;gap:10px;flex-wrap:wrap}.text-button{display:inline-flex;align-items:center;gap:8px;color:var(--blue);font-weight:650;font-size:12px;padding:0;line-height:1.5;text-align:left}.text-button:hover{text-decoration:underline}.text-button svg{width:15px;height:15px}.icon-button{width:36px;height:36px;padding:8px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;flex-shrink:0}.icon-button:hover{background:#edf2f8}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#37a681;flex-shrink:0}.status-dot.stale{background:#e8a747}.status-dot.offline{background:#8291a2}.full-width{width:100%}.danger{color:#b44747}.field-error{font-size:12px;color:#ae3844;line-height:1.6}.field-error:empty{display:none}.loader{width:24px;height:24px;border:2px solid #c9d6e6;border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite;display:inline-block;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.refresh-button.busy svg{animation:spin 1s linear infinite}

/* The quiet sidebar leaves room for the day ahead. */
.app-layout{min-height:100vh;display:grid;grid-template-columns:226px minmax(0,1fr)}.sidebar{position:fixed;inset:0 auto 0 0;width:226px;background:var(--navy);padding:35px 22px 23px;color:#fff;display:flex;flex-direction:column;z-index:10}.brand{display:inline-flex;align-items:center;gap:12px;font-weight:740;font-size:31px;letter-spacing:-1.2px;width:max-content;line-height:1}.brand-mark{display:block;width:40px;height:40px;flex-shrink:0;object-fit:contain;background:#fff;border:0;border-radius:0;padding:0}.sidebar .brand{margin-left:9px}.sidebar-caption{font-size:12px;letter-spacing:1.7px;color:#849eb4;font-weight:650;margin:61px 13px 17px}.sidebar nav{display:flex;flex-direction:column;gap:7px}.nav-item{width:100%;display:flex;align-items:center;gap:12px;color:#a6bace;font-size:12px;font-weight:550;text-align:left;padding:13px 14px;border-radius:9px;min-height:46px}.nav-item svg{width:18px;height:18px}.nav-item.active{background:#27455e;color:#fff}.nav-item:not(.active):hover{background:#1a3953;color:#fff}.nav-active-dot{width:5px;height:5px;background:var(--mint);border-radius:50%;margin-left:auto}.sidebar-bottom{margin-top:auto;padding:32px 10px 0}.campus-logo{display:flex;gap:10px;align-items:center}.campus-logo>span{width:31px;height:31px;border-radius:7px;color:#bdd1e2;background:#ffffff0c;display:grid;place-items:center;font-family:Georgia,serif;font-size:21px;font-weight:bold}.campus-logo>div{font-size:12px;font-weight:600}.campus-logo small{display:block;font-size:12px;font-weight:500;letter-spacing:1.4px;color:#91a8bb;margin-top:4px}.sidebar-status{display:flex;align-items:center;gap:7px;font-size:12px;color:#9eb2c6;margin:17px 0 27px}.sidebar-status .status-dot{background:var(--mint)}.install-side{display:flex;align-items:center;gap:8px;padding:12px 0;border-top:1px solid #ffffff10;color:#adc0d2;font-size:12px;width:100%;text-align:left}.install-side svg{width:14px;height:14px}.install-side:hover{color:#fff}.sidebar-credit{font-size:12px;color:#6e8ba4;margin-top:9px}.main-column{grid-column:2;min-width:0}.topbar{height:82px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 42px;gap:16px}.breadcrumb{display:flex;align-items:center;gap:13px;font-size:12px;color:#95a0ad}.breadcrumb svg{width:10px;height:10px}.breadcrumb strong{font-weight:550;color:#56677a}.topbar-right{display:flex;align-items:center;gap:22px}.topbar-date{font-size:12px;color:#718092}.avatar{display:block;width:36px;height:36px;flex-shrink:0;object-fit:contain;background:#fff;border-radius:0}.mobile-brand,.mobile-settings{display:none}.main-content{max-width:1550px;padding:36px 42px 24px;margin:0 auto}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:26px}.page-heading h1{font-size:34px;font-weight:710;letter-spacing:-1.35px;line-height:1.15;margin-top:7px}.heading-dot{color:var(--blue)}.page-heading p{color:var(--muted);font-size:12px;margin-top:10px;line-height:1.5}.refresh-button{align-self:center;box-shadow:0 2px 3px #102e4803}.connection-banner,.offline-banner{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:12px 16px;background:#eaf1ff;border:1px solid #dce7fc;border-radius:10px;margin-bottom:22px;font-size:12px;line-height:1.6;color:#476086}.connection-banner .text-button{flex-shrink:0;font-size:12px}.offline-banner{justify-content:flex-start;background:#fff7e8;border-color:#f0e2c7;color:#83652f}.offline-banner svg{width:16px;height:16px}

.overview-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(265px,1fr);gap:20px;margin-bottom:34px}.next-course{position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;min-height:204px;text-align:left;padding:23px 26px;background:var(--navy);color:#fff;border-radius:var(--radius);box-shadow:0 6px 16px #102e4810}.next-course:enabled:hover{background:#153853}.next-course-top{display:flex;justify-content:space-between;gap:15px;align-items:center;position:relative;z-index:1}.next-badge{display:inline-flex;align-items:center;gap:7px;letter-spacing:1px;font-size:12px;font-weight:650;color:#c0d2e2}.next-badge::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--mint)}.next-countdown{border-radius:5px;background:#ffffff13;color:#c7dfed;padding:5px 8px;font-size:12px;white-space:nowrap}.next-countdown:empty{display:none}.next-course-copy{position:relative;z-index:1;margin:21px 0 21px}.next-course h2{font-size:21px;line-height:1.25;font-weight:620;letter-spacing:-.45px;max-width:90%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.next-course-copy p{font-size:12px;color:#97b4ca;margin-top:7px;line-height:1.5}.next-course-bottom{display:flex;align-items:center;gap:20px;font-size:12px;font-weight:520;position:relative;z-index:1;margin-top:auto}.next-course-bottom>span{display:inline-flex;align-items:center;gap:7px;min-width:0}.next-course-bottom>span>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.next-course-bottom svg{width:14px;height:14px;color:#86a6bf}.next-course-bottom .next-arrow{margin-left:auto;border-radius:50%;width:29px;height:29px;justify-content:center;background:#ffffff12;flex-shrink:0}.next-arrow svg{color:#d3e5f2}.card-orbit{position:absolute;width:280px;height:280px;border:1px solid #ffffff09;border-radius:50%;right:-150px;top:-35px;pointer-events:none;z-index:0}.card-orbit::before,.card-orbit::after{content:"";position:absolute;border:1px solid #ffffff09;border-radius:50%;inset:25px}.card-orbit::after{inset:55px}.day-summary{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px 25px 19px;display:flex;flex-direction:column;box-shadow:var(--shadow)}.summary-heading{display:flex;justify-content:space-between;align-items:center}.summary-heading .eyebrow{font-size:12px;letter-spacing:1.2px}.summary-heading svg{width:17px;height:17px;color:#94a3b3}.summary-metrics{display:flex;align-items:center;gap:24px;margin:23px 0 22px}.summary-metrics>div{display:flex;flex-direction:column;gap:7px}.summary-metrics strong{font-size:37px;letter-spacing:-1.2px;line-height:1;font-weight:630;white-space:nowrap}.summary-metrics strong span{font-size:20px;margin-left:2px;font-weight:500;letter-spacing:0}.summary-metrics>div>span{font-size:12px;color:#8895a4;white-space:nowrap}.summary-divider{width:1px;height:43px;background:var(--line)}.summary-footer{display:flex;align-items:center;gap:8px;border-top:1px solid var(--line);padding-top:14px;font-size:12px;color:#8292a0;line-height:1.5;margin-top:auto}.summary-footer .status-dot{width:5px;height:5px}

.planning-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:19px}.period-title h2{font-size:17px;letter-spacing:-.35px;font-weight:660;line-height:1.3}.period-title p{color:#8190a0;font-size:12px;margin-top:5px}.calendar-controls{display:flex;align-items:center;gap:14px}.view-switch{display:flex;padding:3px;border:1px solid #e0e7ee;background:#edf1f6;border-radius:8px}.view-switch button{font-size:12px;padding:7px 12px;border-radius:5px;color:#8795a5;font-weight:550}.view-switch .selected{background:#fff;color:#294967;box-shadow:0 1px 3px #102e4810}.period-navigation{display:flex;align-items:center;gap:3px}.period-navigation .icon-button{width:27px;height:31px;padding:8px}.period-navigation svg{width:12px;height:12px;color:#71869a}.today-button{font-size:12px;font-weight:600;padding:9px;color:#5a6f84}.today-button:hover{color:var(--blue)}.date-picker{position:relative;background:#fff;border:1px solid #e0e7ee;width:33px;height:33px;border-radius:7px;color:#617b93}.date-picker svg{width:15px;height:15px}.date-picker input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.date-picker input::-webkit-calendar-picker-indicator{position:absolute;inset:0;width:100%;height:100%;cursor:pointer;margin:0;padding:0}.calendar-surface{border:1px solid #e1e7ee;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 3px 10px #102e4803}.week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid var(--line);padding:12px 14px;gap:5px}.week-day{padding:9px 2px 8px;border-radius:9px;min-width:0;display:flex;align-items:center;flex-direction:column;gap:8px;border:1px solid transparent}.week-day:hover{background:#f5f8fc}.week-day .day-name{font-size:12px;font-weight:550;color:#8c99a8;text-transform:uppercase;letter-spacing:.8px}.week-day .day-number{font-size:17px;line-height:1;font-weight:580;color:#4b6278}.week-day .day-dot{width:3px;height:3px;background:#d0dbe7;border-radius:50%;margin-top:0}.week-day .day-dot.has-courses{background:#8ea6bf}.week-day.is-today .day-number{color:var(--blue)}.week-day.is-today{background:#f3f7ff}.week-day.is-selected{background:var(--blue);box-shadow:0 3px 7px #2666ed15}.week-day.is-selected .day-name{color:#cdddff}.week-day.is-selected .day-number{color:#fff}.week-day.is-selected .day-dot{background:#719afe}.week-day.is-selected .day-dot.has-courses{background:#d3e1ff}

.timetable-wrap{overflow:auto;max-height:640px;scrollbar-width:thin;scrollbar-color:#d5dde7 transparent}.timetable{display:grid;grid-template-columns:48px repeat(var(--days),minmax(100px,1fr));min-width:640px;position:relative}.time-axis{position:relative;background:#fff;border-right:1px solid var(--line);z-index:2}.time-label{position:absolute;right:9px;color:#99a7b6;font-size:12px;transform:translateY(-50%);white-space:nowrap}.time-label:first-child{transform:none;top:8px!important}.time-column{position:relative;border-right:1px solid #edf1f5;background:repeating-linear-gradient(to bottom,transparent 0,transparent 59px,#edf1f5 59px,#edf1f5 60px)}.time-column:last-child{border-right:0}.time-column.is-today{background-color:#fafcff}.grid-event{position:absolute;text-align:left;border-radius:6px;padding:8px 9px;background:var(--event-bg,#edf3ff);border-left:3px solid var(--event-accent,#457cf2);color:var(--event-ink,#3662ac);display:flex;flex-direction:column;gap:4px;overflow:hidden;min-height:22px;z-index:3;transition:filter .15s,box-shadow .15s}.grid-event:hover{filter:brightness(.98);box-shadow:0 3px 10px #102e4818;z-index:4}.grid-event .event-time{font-size:12px;font-weight:650;white-space:nowrap;opacity:.85}.grid-event .event-title{font-size:12px;font-weight:650;line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.grid-event .event-room{font-size:12px;line-height:1.35;opacity:.75;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:auto}.grid-event .event-type{font-size:12px;letter-spacing:.3px;font-weight:600;opacity:.75}.grid-event.compact{padding:4px 6px;gap:2px}.grid-event.compact .event-title{-webkit-line-clamp:1}.grid-event.compact .event-type,.grid-event.compact .event-room{display:none}.now-line{height:1px;background:#e68c6f;position:absolute;left:0;right:0;z-index:5;pointer-events:none}.now-line::before{content:"";position:absolute;left:-3px;top:-2px;width:5px;height:5px;background:#e68c6f;border-radius:50%}.desktop-week .week-strip{padding:0 0 0 48px;gap:0;grid-template-columns:repeat(var(--days),minmax(0,1fr));height:78px}.desktop-week .week-day{border-radius:0;padding:13px 2px;gap:5px;border-left:1px solid #edf1f5;position:relative}.desktop-week .week-day.is-selected{background:#f3f7ff;box-shadow:none}.desktop-week .week-day.is-selected .day-name{color:#6f8cb5}.desktop-week .week-day.is-selected .day-number{color:var(--blue)}.desktop-week .week-day.is-selected .day-dot{background:var(--blue)}.desktop-week .week-day.is-selected::after{content:"";position:absolute;bottom:0;height:2px;left:25%;right:25%;background:var(--blue);border-radius:2px}.desktop-week .week-day .day-name{font-size:12px}.desktop-week .week-day .day-number{font-size:16px}.desktop-week .week-day .day-dot{width:3px;height:3px}

.agenda{padding:12px 23px 18px}.agenda-day-heading{font-size:12px;text-transform:capitalize;font-weight:650;padding:14px 0 11px;color:#698098;display:flex;align-items:center;gap:10px}.agenda-day-heading span{height:1px;background:var(--line);flex:1}.agenda-day-heading small{font-size:12px;font-weight:500;color:#93a2b1}.agenda-event{width:100%;display:grid;grid-template-columns:70px 1fr 26px;gap:17px;text-align:left;align-items:center;padding:18px 0;border-bottom:1px solid #edf1f5;position:relative}.agenda-event:last-child{border-bottom:0}.agenda-event:hover .agenda-card{background:#f9fbff}.agenda-time{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:650;color:#4d657c;align-self:start;padding-top:14px}.agenda-time span{font-size:12px;font-weight:450;color:#a0adba}.agenda-card{border-radius:8px;border-left:3px solid var(--event-accent);background:var(--event-bg);padding:13px 16px;min-width:0;transition:background .15s}.agenda-card-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}.agenda-card-header>span{font-size:12px;letter-spacing:.6px;font-weight:650;color:var(--event-ink)}.agenda-live{color:#278e6c!important;letter-spacing:0!important}.agenda-card h3{font-size:13px;font-weight:650;line-height:1.5}.agenda-card p{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;color:#71859b;margin-top:7px;line-height:1.5}.agenda-card p svg{width:12px;height:12px}.agenda-card .meta-divider{width:3px;height:3px;background:#b0bdcb;border-radius:50%;margin:0 3px}.agenda-event>svg{width:15px;height:15px;color:#b1c0cc}.empty-state{padding:49px 24px 55px;display:flex;align-items:center;flex-direction:column;text-align:center}.empty-icon{width:49px;height:49px;display:grid;place-items:center;background:#f0f5fb;color:#7c99b3;border-radius:14px;margin-bottom:17px}.empty-icon svg{width:23px;height:23px}.empty-state h3{font-size:16px;font-weight:620;letter-spacing:-.2px}.empty-state p{color:#8a9aaa;font-size:12px;margin-top:9px;line-height:1.7;max-width:350px}.empty-state .button{margin-top:20px}.planning-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:16px;color:#93a1af;font-size:12px}.sync-indicator{display:flex;align-items:center;gap:7px;line-height:1.6}.sync-indicator .status-dot{width:5px;height:5px}.planning-footer a{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.planning-footer a:hover{color:var(--blue)}.planning-footer svg{width:11px;height:11px;transform:rotate(-45deg)}

.dialog{border:1px solid #e6edf4;border-radius:20px;background:#fff;padding:34px;width:calc(100% - 32px);max-width:490px;max-height:calc(100dvh - 40px);overflow:auto;color:var(--ink);box-shadow:0 30px 100px #06203b33}.dialog::backdrop{background:#08213880;backdrop-filter:blur(4px)}.dialog-close{position:absolute;top:15px;right:15px;color:#8c9eae}.dialog-close svg{width:18px;height:18px}.dialog>.eyebrow{margin:5px 40px 8px 0}.dialog h2{font-size:25px;letter-spacing:-.8px;font-weight:670;line-height:1.3;margin-right:20px}.dialog p{line-height:1.65}.event-detail-tag{display:inline-block;padding:6px 9px;border-radius:5px;font-size:12px;font-weight:650;letter-spacing:.6px;background:#edf3ff;color:#4676c9;margin-bottom:18px}.event-date{margin-top:10px!important;font-size:12px;color:#8b9aaa;text-transform:capitalize}.event-detail-list{margin:26px 0}.detail-row{display:grid;grid-template-columns:24px 1fr;column-gap:13px;padding:12px 0;border-top:1px solid var(--line)}.detail-row svg{width:18px;height:18px;grid-row:span 2;color:#8ea2b4;margin-top:3px}.detail-row dt{font-size:12px;color:#96a4b2;margin-bottom:4px}.detail-row dd{font-size:12px;font-weight:550;line-height:1.6;margin:0;overflow-wrap:anywhere}.event-description{white-space:pre-wrap;font-size:12px;line-height:1.8;background:#f7f9fc;padding:14px;border-radius:8px;margin:0 0 24px;overflow-wrap:anywhere}.settings-section{padding:24px 0;border-bottom:1px solid var(--line)}.settings-section h3{font-size:13px;font-weight:650;margin-bottom:8px}.settings-section>p{font-size:12px;color:#8292a2;margin-bottom:15px}.settings-section .setting-note,.setting-note{font-size:12px;line-height:1.75;color:#95a2b0;margin-top:13px;margin-bottom:0}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:13px}.switch-row strong{display:block;font-size:12px;font-weight:650}.switch-row small{display:block;font-size:12px;color:#8999a9;margin-top:6px;line-height:1.6}.switch-row input{appearance:none;width:36px;height:21px;border-radius:20px;background:#cbd6e2;position:relative;cursor:pointer;flex-shrink:0;transition:background .15s}.switch-row input::before{content:"";position:absolute;top:3px;left:3px;width:15px;height:15px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0002;transition:transform .15s}.switch-row input:checked{background:var(--blue)}.switch-row input:checked::before{transform:translateX(15px)}.settings-bottom{display:flex;flex-direction:column;align-items:flex-start;gap:17px;padding-top:23px}.settings-bottom a{font-size:12px;color:#708398}.settings-bottom .text-button{font-size:12px}.campus-dialog{max-width:870px;padding:30px}.campus-dialog>p:not(.setting-note){font-size:12px;color:#7f90a2;margin-top:8px}.remote-status{display:flex;align-items:center;gap:7px;margin-top:18px;margin-bottom:12px;color:#7c8da0;font-size:12px}.remote-status #remote-domain{margin-left:auto;max-width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#edf4fb;border-radius:5px;padding:5px 7px;color:#58738d}.remote-viewport{position:relative;width:100%;background:#edf2f6;border:1px solid #e3eaf1;border-radius:9px;overflow:auto;max-height:52dvh}.remote-viewport img{display:block;width:100%;height:auto;min-width:360px;cursor:crosshair;touch-action:pan-x pan-y}.remote-busy{position:absolute;top:10px;right:10px;border-radius:6px;background:#102e48e8;padding:7px 10px;color:white;font-size:12px;pointer-events:none}.remote-loading{background:#f5f8fc;border-radius:9px;min-height:130px;display:flex;align-items:center;justify-content:center;gap:14px;font-size:12px;color:#8294a6}.remote-input-form{margin-top:17px}.remote-input-form label{display:block;font-size:12px;font-weight:600;margin-bottom:8px}.remote-input-row{display:flex;gap:9px}.remote-input-row input{flex:1;font-size:12px}.remote-keyboard{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.remote-keyboard .button{font-size:12px;min-height:35px;padding:8px 12px}.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);max-width:calc(100% - 32px);width:max-content;padding:14px 21px;border-radius:11px;background:var(--navy-deep);color:#fff;font-size:12px;line-height:1.6;box-shadow:0 8px 40px #102e4830;z-index:100}.toast.error{background:#693b45}

.loading-view{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;background:var(--canvas)}.loading-view .brand-mark{width:64px;height:64px}.loading-view p{font-size:13px;color:var(--muted)}.loading-view .loader{width:18px;height:18px}.login-view{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:100dvh}.login-story{background:var(--navy);color:#fff;position:relative;padding:45px 11%;display:flex;flex-direction:column;overflow:hidden}.login-story-copy{margin:auto 0;padding:65px 0 45px;position:relative;z-index:1}.login-story-copy .eyebrow{color:#8ba9c2;letter-spacing:2px;font-size:12px}.login-story h1{font-weight:620;font-size:clamp(38px,4vw,62px);letter-spacing:-2.5px;line-height:1.15;margin:21px 0 24px}.login-story-copy p{font-size:14px;line-height:1.9;color:#a4bed2}.login-footnote{font-size:12px;color:#7393ad;margin-top:auto;padding-top:50px}.login-decoration{display:grid;grid-template-columns:repeat(5,1fr);gap:11px;transform:rotate(-9deg);opacity:.5;position:relative;right:-10%;margin-bottom:35px}.login-decoration span{font-size:12px;letter-spacing:1px;color:#7297b5;text-align:center;margin-bottom:6px}.login-decoration i{height:44px;border-radius:5px;background:#729edd38;border-left:3px solid #77aaff}.login-decoration i:nth-last-child(2){grid-column:3;background:#6dddd238;border-left-color:#6dddd2;transform:translateY(15px)}.login-decoration i:nth-last-child(3){background:#6dddd238;border-left-color:#6dddd2;transform:translateY(-12px)}.login-decoration i:last-child{grid-column:4;background:#6dddd238;border-left-color:#6dddd2;transform:translateY(8px)}.login-panel{background:#f8fafc;display:flex;align-items:center;justify-content:center;padding:40px}.login-card{width:100%;max-width:350px}.tiny-icon{width:42px;height:42px;border:1px solid #e2e9f1;border-radius:12px;background:#fff;display:grid;place-items:center;margin-bottom:31px;color:#6d8ca8}.tiny-icon svg{width:19px;height:19px}.login-card>.eyebrow{font-size:12px;letter-spacing:1.6px}.login-card h2{font-size:30px;font-weight:650;letter-spacing:-1px;margin-top:11px}.login-card>p{font-size:12px;color:#8495a5;line-height:1.8;margin-top:13px}.login-card form{margin-top:29px}.login-card label{display:block;font-size:12px;font-weight:600;margin-bottom:9px;color:#60768b}.login-card input{width:100%;font-size:12px;height:45px}.login-card form .button{margin-top:14px;width:100%;height:45px;justify-content:space-between}.login-card .field-error{margin-top:12px}.login-card .login-note{display:flex;gap:7px;align-items:center;font-size:12px;margin-top:24px;color:#95a5b4}.login-note svg{width:12px;height:12px}

@media(min-width:1600px){.main-content{padding-top:42px}.overview-grid{grid-template-columns:minmax(0,2fr) minmax(285px,1fr)}.next-course{min-height:215px}.timetable-wrap{max-height:730px}}
@media(max-width:1200px){.app-layout{grid-template-columns:190px minmax(0,1fr)}.sidebar{width:190px;padding-left:15px;padding-right:15px}.sidebar .brand{font-size:28px}.topbar{padding:0 28px}.main-content{padding:29px 28px 24px}.overview-grid{gap:15px;grid-template-columns:minmax(0,1.55fr) minmax(235px,1fr)}.next-course{padding:21px}.next-course h2{font-size:19px}.day-summary{padding:22px 20px 18px}.summary-metrics{gap:18px}.summary-metrics strong{font-size:33px}.summary-metrics>div>span{font-size:12px}.calendar-controls{gap:8px}.view-switch button{padding:7px 9px}.period-title h2{font-size:16px}.next-course-bottom{gap:13px}.next-course-bottom>span>span{max-width:160px}.next-location{max-width:160px}.connection-banner{align-items:flex-start}.timetable{grid-template-columns:42px repeat(var(--days),minmax(100px,1fr));min-width:580px}.desktop-week .week-strip{padding-left:42px}.grid-event{padding:7px}.grid-event .event-title{font-size:12px}.grid-event .event-time{font-size:12px}}
@media(max-width:1023px){.app-layout{grid-template-columns:170px minmax(0,1fr)}.sidebar{width:170px;padding-left:11px;padding-right:11px}.sidebar .brand{font-size:26px;gap:9px}.sidebar-caption{font-size:12px;letter-spacing:1.2px}.nav-item{font-size:12px;padding-left:11px;gap:9px}.install-side{font-size:12px}.topbar{padding:0 24px;height:70px}.main-content{padding:28px 24px}.page-heading h1{font-size:30px}.page-heading .eyebrow{font-size:12px}.overview-grid{grid-template-columns:1fr}.day-summary{min-height:100px;display:grid;grid-template-columns:1fr 1.2fr;gap:8px 20px;padding:18px 21px}.summary-heading{justify-content:flex-start;gap:15px;align-self:center}.summary-heading svg{display:none}.summary-metrics{grid-column:2;grid-row:1/3;margin:0;gap:22px;justify-content:flex-end}.summary-metrics strong{font-size:30px}.summary-footer{grid-column:1;border:0;padding-top:0;margin:0}.summary-divider{height:30px}.planning-toolbar{flex-wrap:wrap}.calendar-controls{margin-left:auto}.view-switch{margin-left:auto}.next-course{min-height:195px}.connection-banner{flex-direction:column;gap:5px}.timetable{min-width:550px}.topbar-date{font-size:12px}}
@media(max-width:767px){.app-layout{display:block}.sidebar{display:none}.main-column{display:block}.topbar{height:74px;padding:0 22px;background:var(--canvas);border:0}.breadcrumb{display:none}.mobile-brand{display:flex;font-size:26px;color:var(--navy);gap:10px}.mobile-brand .brand-mark{width:36px;height:36px}.mobile-settings{display:flex;color:#617a90;background:#fff;border:1px solid #e5ebf1;width:34px;height:34px}.mobile-settings svg{width:17px;height:17px}.avatar{display:none}.topbar-date{display:none}.topbar-right{gap:9px}.main-content{padding:15px 22px 30px}.page-heading{margin-bottom:22px;align-items:flex-end;gap:12px}.page-heading h1{font-size:31px;letter-spacing:-1.25px;margin-top:7px}.page-heading .eyebrow{font-size:12px;letter-spacing:1.2px}.page-heading p{font-size:12px;line-height:1.7;margin-top:9px;max-width:240px}.refresh-button{font-size:0;min-width:38px;min-height:38px;padding:10px;border-radius:10px;margin-bottom:5px;align-self:flex-end}.refresh-button svg{width:17px;height:17px}.refresh-button span{display:none}.overview-grid{margin-bottom:30px;gap:13px}.next-course{padding:22px 22px 21px;min-height:202px;border-radius:15px}.next-course h2{font-size:21px;max-width:100%;line-height:1.3}.next-course-copy{margin:21px 0}.next-course-copy p{font-size:12px}.next-badge{font-size:12px;letter-spacing:.9px}.next-countdown{font-size:12px}.next-course-bottom{font-size:12px;gap:14px}.next-course-bottom>span>span{max-width:140px}.next-course-bottom .next-arrow{width:26px;height:26px}.next-course-bottom svg{width:13px;height:13px}.day-summary{padding:17px 21px;border-radius:13px;grid-template-columns:minmax(0,1fr) auto;column-gap:12px}.summary-metrics{gap:19px}.summary-metrics strong{font-size:27px}.summary-metrics strong span{font-size:15px}.summary-metrics>div{gap:6px}.summary-metrics>div>span{font-size:12px}.summary-heading .eyebrow{font-size:12px;letter-spacing:1px}.summary-footer{font-size:12px;line-height:1.5;gap:5px;max-width:155px}.summary-footer .status-dot{width:4px;height:4px}.summary-divider{height:33px}.planning-toolbar{gap:15px 10px;margin-bottom:14px}.period-title{flex:1}.period-title h2{font-size:16px}.period-title p{font-size:12px}.calendar-controls{display:contents}.view-switch{order:0;margin-left:auto}.view-switch button{font-size:12px;padding:7px 9px}.period-navigation{order:1;background:#fff;border:1px solid #e2e9f0;border-radius:7px;padding:2px;justify-content:space-between;min-width:165px}.period-navigation .icon-button{height:27px;width:28px}.today-button{padding:5px 11px;font-size:12px}.date-picker{order:2;margin-left:auto}.calendar-surface{border-radius:12px}.week-strip{padding:9px 8px;gap:3px}.week-day{padding:9px 1px 7px;gap:8px;border-radius:7px}.week-day .day-name{font-size:12px;letter-spacing:.35px}.week-day .day-number{font-size:15px}.week-day .day-dot{width:3px;height:3px}.agenda{padding:5px 14px 8px}.agenda-event{grid-template-columns:43px minmax(0,1fr);gap:9px;padding:12px 0}.agenda-event>svg{display:none}.agenda-time{font-size:12px;gap:5px;padding-top:14px}.agenda-time span{font-size:12px}.agenda-card{padding:12px 12px;border-radius:7px}.agenda-card h3{font-size:12px;font-weight:650;line-height:1.55}.agenda-card-header>span{font-size:12px}.agenda-card p{font-size:12px;gap:5px;margin-top:7px}.agenda-card p svg{width:11px;height:11px}.agenda-card .teacher-meta{display:none}.agenda-card .meta-divider{display:none}.agenda-day-heading{font-size:12px;padding:14px 0 6px}.agenda-day-heading small{font-size:12px}.planning-footer{font-size:12px;align-items:flex-start;margin-top:14px;gap:12px}.planning-footer a{font-size:12px;padding-top:1px}.planning-footer .sync-indicator{max-width:210px}.sync-indicator .status-dot{margin-top:4px;align-self:flex-start;width:4px;height:4px}.connection-banner{font-size:12px;padding:12px 13px;margin-bottom:21px;border-radius:9px}.connection-banner .text-button{font-size:12px}.offline-banner{font-size:12px}.empty-state{padding:36px 18px 41px}.empty-state h3{font-size:14px}.empty-state p{font-size:12px}.dialog{padding:29px 23px;max-height:calc(100dvh - 28px);border-radius:17px}.dialog h2{font-size:23px}.dialog-close{top:12px;right:12px}.campus-dialog{padding:25px 18px}.remote-status{font-size:12px;gap:6px}.remote-status #remote-domain{max-width:45%;font-size:12px}.remote-keyboard{gap:6px}.remote-keyboard .button{padding:7px 9px;font-size:12px}.remote-input-form label{font-size:12px}.remote-input-row input{font-size:12px;padding:10px}.remote-input-row .button{font-size:12px;padding:10px}.remote-viewport{max-height:42dvh}.campus-dialog>p:not(.setting-note){font-size:12px}.setting-note{font-size:12px}.toast{font-size:12px;bottom:calc(20px + env(safe-area-inset-bottom));padding:12px 16px}.login-view{display:flex;flex-direction:column}.login-story{padding:26px 28px 30px;min-height:auto}.login-story .brand{font-size:27px}.login-story .brand-mark{width:36px;height:36px}.login-story-copy{padding:35px 0 0;margin:0}.login-story-copy .eyebrow{font-size:12px;letter-spacing:1.5px}.login-story h1{font-size:35px;letter-spacing:-1.2px;margin:12px 0 14px}.login-story-copy p{font-size:12px;line-height:1.8}.login-decoration,.login-footnote{display:none}.login-panel{padding:31px 28px 45px;flex:1;align-items:flex-start}.login-card{max-width:430px}.tiny-icon{display:none}.login-card>.eyebrow{font-size:12px}.login-card h2{font-size:26px;margin-top:8px}.login-card>p{font-size:12px;margin-top:11px}.login-card form{margin-top:23px}.login-card .login-note{font-size:12px}.login-card input{height:46px}.login-card form .button{height:46px}.login-card label{font-size:12px}}
@media(max-width:370px){.main-content{padding-left:15px;padding-right:15px}.topbar{padding-left:15px;padding-right:15px}.next-course{padding:20px}.next-course h2{font-size:19px}.next-course-bottom{gap:10px;font-size:12px}.next-course-bottom>span>span{max-width:120px}.summary-metrics{gap:12px}.day-summary{padding:16px}.summary-footer{font-size:12px;max-width:115px}.summary-metrics strong{font-size:25px}.view-switch button{font-size:12px}.agenda{padding-left:10px;padding-right:10px}.agenda-card{padding:11px}.planning-footer a{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition:none!important;scroll-behavior:auto!important}}

/* Keep the planning readable at every screen size, including compact phones. */
.button,.text-button,.nav-item,.today-button,.view-switch button{font-size:14px}
.eyebrow,.sidebar-caption,.summary-heading .eyebrow{font-size:12px;letter-spacing:1px}
.page-heading p,.login-story-copy p,.login-card>p,.settings-section>p,.campus-dialog>p:not(.setting-note){font-size:16px}
.breadcrumb,.topbar-date,.period-title p,.login-card label,.remote-input-form label,.switch-row strong,.settings-section h3{font-size:14px}
.next-badge,.next-countdown,.next-course-copy p,.next-course-bottom,.summary-footer,.summary-metrics>div>span,.connection-banner,.connection-banner .text-button,.offline-banner,.planning-footer,.planning-footer a,.sidebar-status,.install-side,.sidebar-credit,.campus-logo small,.setting-note,.settings-section .setting-note,.settings-bottom a,.settings-bottom .text-button,.switch-row small,.login-card .login-note,.remote-status,.remote-status #remote-domain{font-size:12px}
.next-badge{letter-spacing:.7px}.next-course-copy p{line-height:1.65}.next-course h2{font-size:24px}.next-course-bottom{gap:15px}.next-course-bottom>span>span{max-width:230px}
.day-summary{padding:21px}.summary-metrics{gap:20px}.summary-metrics>div>span{white-space:normal;line-height:1.4}.summary-footer{line-height:1.5}
.overview-grid{grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr)}
.period-title h2{font-size:20px}.calendar-controls{gap:9px}.view-switch button{padding:7px 10px}.today-button{padding:7px}.period-navigation .icon-button{width:32px;height:36px}
.week-day .day-name,.desktop-week .week-day .day-name{font-size:12px;letter-spacing:.35px}.week-day .day-number,.desktop-week .week-day .day-number{font-size:18px}.desktop-week .week-strip{height:86px}.desktop-week .week-day{padding:13px 2px;gap:7px}
.time-label{font-size:12px;right:5px}.grid-event{padding:7px;gap:4px}.grid-event .event-time,.grid-event .event-room{font-size:12px}.grid-event .event-title{font-size:16px;line-height:1.25;flex-shrink:1;min-height:19px}.grid-event .event-type{display:none}.grid-event .event-room{flex-shrink:0}.grid-event.compact{gap:3px}.grid-event.compact .event-title{font-size:14px;min-height:17px}.grid-event .event-time{flex-shrink:0;white-space:normal;line-height:1.25}
.agenda-event{grid-template-columns:76px 1fr 20px;gap:13px}.agenda-time{font-size:16px;gap:6px}.agenda-time span{font-size:14px}.agenda-card h3{font-size:16px;line-height:1.45}.agenda-card-header>span,.agenda-card p{font-size:12px}.agenda-card p{line-height:1.6}.agenda-card p svg{width:14px;height:14px}.agenda-day-heading{font-size:14px}.agenda-day-heading small{font-size:12px}.empty-state h3{font-size:18px}.empty-state p{font-size:14px}
.detail-row dt{font-size:12px}.detail-row dd{font-size:16px}.event-date,.event-description{font-size:14px}.event-detail-tag{font-size:12px}.settings-section h3,.switch-row strong{font-size:16px}.remote-input-row input,.login-card input{font-size:16px}.remote-keyboard .button{font-size:12px}.field-error,.toast{font-size:14px}.remote-input-row .button{font-size:14px}
.sidebar{padding-left:15px;padding-right:15px}.nav-item{gap:9px;padding-left:10px;padding-right:10px}.sidebar-bottom{padding-left:8px;padding-right:8px}.sidebar-credit{line-height:1.6}.sidebar-status{line-height:1.5}.install-side{line-height:1.5}.campus-logo small{letter-spacing:.6px}
@media(max-width:1200px){.overview-grid{grid-template-columns:minmax(0,1.5fr) minmax(290px,1fr)}.planning-toolbar{flex-wrap:wrap}.calendar-controls{margin-left:auto}.next-course h2{font-size:22px}.next-course-bottom>span>span{max-width:170px}.summary-metrics{gap:17px}}
@media(max-width:1023px){.overview-grid{grid-template-columns:1fr}.day-summary{grid-template-columns:1fr auto;gap:8px 20px}.summary-metrics{gap:24px}.summary-heading .eyebrow{font-size:12px}.nav-item{font-size:14px;padding-left:8px;gap:8px}.nav-item svg{width:16px;height:16px}.sidebar-caption{letter-spacing:.4px;margin-left:8px}.sidebar-bottom{padding-left:5px;padding-right:5px}.campus-logo>div{font-size:14px}.campus-logo small{font-size:12px}.install-side{gap:6px}.summary-footer{max-width:none}.page-heading .eyebrow{font-size:12px}}
@media(max-width:767px){
  .main-content{padding:12px 18px 26px}.topbar{padding:0 18px;height:66px}.page-heading{margin-bottom:18px}.page-heading h1{font-size:30px;margin-top:5px}.page-heading .eyebrow{font-size:12px;letter-spacing:.7px}.page-heading p{font-size:14px;max-width:255px;margin-top:8px;line-height:1.6}.refresh-button{font-size:14px;min-width:40px;height:40px}.refresh-button span{display:none}
  .overview-grid{gap:12px;margin-bottom:25px}.next-course{padding:19px;min-height:202px}.next-badge{font-size:12px;letter-spacing:.3px}.next-countdown{font-size:12px;padding:5px 6px}.next-course-top{gap:8px;align-items:flex-start}.next-course h2{font-size:22px;line-height:1.3}.next-course-copy{margin:18px 0}.next-course-copy p{font-size:12px}.next-course-bottom{font-size:12px;gap:10px;flex-wrap:wrap}.next-course-bottom>span>span{max-width:155px}.next-course-bottom .next-arrow{margin-left:auto}.next-course-bottom svg{width:14px;height:14px}
  .day-summary{padding:17px;display:grid;grid-template-columns:1fr;gap:14px}.summary-heading{grid-column:1;grid-row:1}.summary-heading .eyebrow{font-size:12px}.summary-metrics{grid-column:1;grid-row:2;justify-content:flex-start;margin:0;gap:25px}.summary-metrics>div{gap:5px}.summary-metrics strong{font-size:30px}.summary-metrics strong span{font-size:18px}.summary-metrics>div>span{font-size:12px;white-space:normal}.summary-divider{height:35px}.summary-footer{grid-column:1;grid-row:3;max-width:none;font-size:12px;padding-top:12px;border-top:1px solid var(--line)}
  .planning-toolbar{gap:13px 8px}.period-title h2{font-size:18px}.period-title p{font-size:12px;line-height:1.5}.period-title{min-width:140px}.view-switch button{font-size:14px;padding:7px 8px}.period-navigation{min-width:187px;padding:2px}.period-navigation .icon-button{width:32px;height:32px}.today-button{font-size:14px;padding:6px}.date-picker{width:38px;height:38px}.date-picker svg{width:17px;height:17px}
  .week-strip{padding:9px 5px;gap:1px}.week-day{padding:9px 1px 7px;gap:9px}.week-day .day-name{font-size:12px;letter-spacing:0}.week-day .day-number{font-size:18px}.week-day .day-dot{width:4px;height:4px}
  .agenda{padding:4px 11px 8px}.agenda-event{grid-template-columns:52px minmax(0,1fr);gap:9px;padding:12px 0}.agenda-time{font-size:14px;padding-top:13px;gap:6px}.agenda-time span{font-size:12px}.agenda-card{padding:12px 10px}.agenda-card h3{font-size:16px;line-height:1.45}.agenda-card-header{margin-bottom:6px;flex-wrap:wrap;gap:4px}.agenda-card-header>span{font-size:12px}.agenda-card p{font-size:12px;gap:5px;line-height:1.6}.agenda-card p svg{width:13px;height:13px}.agenda-day-heading{font-size:14px;padding:14px 0 8px;flex-wrap:wrap;gap:8px}.agenda-day-heading small{font-size:12px}
  .planning-footer{font-size:12px;flex-direction:column;gap:9px}.planning-footer .sync-indicator{max-width:none;font-size:12px}.planning-footer a{font-size:12px}.planning-footer svg{width:13px;height:13px}.connection-banner,.connection-banner .text-button,.offline-banner{font-size:12px}.connection-banner{margin-bottom:18px;padding:11px 12px}.empty-state{padding:30px 18px 35px}.empty-state h3{font-size:18px}.empty-state p{font-size:14px}
  .dialog{padding:29px 21px}.dialog h2{font-size:24px}.event-date,.event-description{font-size:14px}.detail-row dt{font-size:12px}.detail-row dd{font-size:16px}.settings-section>p,.campus-dialog>p:not(.setting-note){font-size:16px}.setting-note,.settings-section .setting-note,.settings-bottom a,.settings-bottom .text-button,.switch-row small{font-size:12px}.settings-section h3,.switch-row strong{font-size:16px}.remote-input-form label{font-size:14px}.remote-input-row input{font-size:16px}.remote-input-row .button{font-size:14px}.remote-keyboard .button{font-size:12px;padding:8px}.remote-status,.remote-status #remote-domain{font-size:12px}.remote-status{flex-wrap:wrap}.remote-status #remote-domain{max-width:100%;margin-left:0}.campus-dialog{padding:25px 17px}.toast,.field-error{font-size:14px}
  .login-story-copy .eyebrow,.login-card>.eyebrow{font-size:12px;letter-spacing:.7px}.login-story-copy p,.login-card>p{font-size:16px}.login-card label{font-size:14px}.login-card input{font-size:16px}.login-card .login-note{font-size:12px;align-items:flex-start}.login-card form .button{font-size:14px}.login-note svg{margin-top:4px}
}
@media(max-width:370px){.main-content{padding-left:14px;padding-right:14px}.topbar{padding-left:14px;padding-right:14px}.next-course{padding:17px}.next-course-top{flex-wrap:wrap;gap:7px}.next-course h2{font-size:21px}.next-course-bottom{font-size:12px;gap:9px}.next-course-bottom>span>span{max-width:138px}.next-course-bottom .next-arrow{display:none}.day-summary{padding:16px}.summary-metrics{gap:23px}.summary-metrics strong{font-size:30px}.summary-footer,.summary-metrics>div>span{font-size:12px}.view-switch button{font-size:14px;padding:7px}.period-title{min-width:120px}.agenda{padding-left:8px;padding-right:8px}.agenda-event{grid-template-columns:48px minmax(0,1fr);gap:7px}.agenda-card{padding:11px 9px}.agenda-card h3{font-size:16px}.agenda-time{font-size:14px}.agenda-time span,.agenda-card-header>span,.agenda-card p{font-size:12px}.planning-footer a{font-size:12px}.week-day .day-name{font-size:12px}.week-day .day-number{font-size:18px}}
.grid-event{container-type:size;container-name:course}.grid-event.compact .event-time{display:none}.grid-event.compact .event-title{font-size:16px;min-height:20px}
@container course (max-height:90px){.grid-event .event-room{display:none}.grid-event .event-title{-webkit-line-clamp:2}}
