:root{--gray-0: #ffffff;--gray-25: #f7f7f9;--gray-50: #f2f2f5;--gray-100: #e9e9ee;--gray-150: #dfdfe6;--gray-200: #d1d1da;--gray-300: #b4b4c0;--gray-400: #93939f;--gray-500: #74747e;--gray-600: #545458;--gray-700: #3a3a3e;--gray-800: #232326;--gray-850: #1b1b1e;--gray-900: #131316;--gray-950: #0b0b0d;--gray-1000: #000000;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 32px;--space-8: 40px;--space-9: 48px;--space-10: 64px;--text-xs: 11px;--leading-xs: 14px;--text-sm: 12.5px;--leading-sm: 17px;--text-md: 14px;--leading-md: 20px;--text-lg: 17px;--leading-lg: 24px;--text-xl: 22px;--leading-xl: 28px;--text-2xl: 28px;--leading-2xl: 34px;--r-xs: 5px;--r-sm: 8px;--r-md: 10px;--r-card: 12px;--r-lg: 16px;--r-pill: 999px;--dur-1: .12s;--dur-2: .2s;--dur-3: .32s;--ease-out: cubic-bezier(.2, .8, .2, 1);--ease-spring: cubic-bezier(.3, 1.4, .4, 1);--font-ui: "Geist", -apple-system, "Segoe UI", system-ui, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace}@font-face{font-family:Geist;src:url(/fonts/geist-var.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap;ascent-override:95%;descent-override:24%;line-gap-override:0%}@media (prefers-reduced-motion: reduce){:root{--dur-1: 0ms;--dur-2: 0ms;--dur-3: 0ms}}:root{color-scheme:light dark}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}:root{--surface-0: light-dark(var(--gray-25), var(--gray-950));--surface-1: light-dark(var(--gray-0), var(--gray-900));--surface-2: light-dark(var(--gray-50), var(--gray-850));--surface-3: light-dark(var(--gray-100), var(--gray-800));--overlay: light-dark(var(--gray-0), var(--gray-850));--scrim: light-dark(rgba(11, 11, 13, .4), rgba(0, 0, 0, .6));--ink-1: light-dark(var(--gray-950), var(--gray-25));--ink-2: light-dark(var(--gray-800), var(--gray-200));--ink-3: light-dark(var(--gray-600), #a8a8b0);--ink-4: light-dark(#6e6e76, #8e8e96);--line-1: light-dark(rgba(19, 19, 22, .08), rgba(247, 247, 249, .09));--line-2: light-dark(rgba(19, 19, 22, .16), rgba(247, 247, 249, .18));--ok: light-dark(#1f7a3d, #4cc272);--warn: light-dark(#9a6b00, #e0b34c);--danger: light-dark(#b3261e, #f28b82);--ok-soft: light-dark(#e3f2e8, rgba(76, 194, 114, .16));--warn-soft: light-dark(#f8edd4, rgba(224, 179, 76, .16));--danger-soft: light-dark(#f9e2e0, rgba(242, 139, 130, .16));--c-blue: light-dark(#2563ae, #7ab3ea);--c-teal: light-dark(#0f766e, #5ecec4);--c-violet: light-dark(#6d4fc2, #b39ceb);--c-rose: light-dark(#b0355c, #e88aa9);--c-orange: light-dark(#b45309, #e8a25e);--c-green: light-dark(#3f6f21, #9cc57a);--c-yellow: light-dark(#8a6d00, #d6bd55);--c-blue-soft: light-dark(#e3edf8, rgba(122, 179, 234, .2));--c-teal-soft: light-dark(#dcf1ef, rgba(94, 206, 196, .18));--c-violet-soft: light-dark(#ece6f9, rgba(179, 156, 235, .2));--c-rose-soft: light-dark(#f8e4ec, rgba(232, 138, 169, .2));--c-orange-soft: light-dark(#f8ead9, rgba(232, 162, 94, .18));--c-green-soft: light-dark(#e7f0dd, rgba(156, 197, 122, .2));--c-yellow-soft: light-dark(#f5eed2, rgba(214, 189, 85, .18));--shadow-raise: 0 1px 2px rgba(11, 11, 13, .05), 0 0 0 .5px var(--line-1);--shadow-overlay: 0 12px 32px rgba(11, 11, 13, .16), 0 2px 8px rgba(11, 11, 13, .08), 0 0 0 .5px var(--line-2)}@media (prefers-contrast: more){:root{--line-1: light-dark(rgba(19, 19, 22, .28), rgba(247, 247, 249, .32));--ink-3: light-dark(var(--gray-700), var(--gray-200));--ink-4: light-dark(var(--gray-600), var(--gray-300))}}[data-school=uottawa]{--accent: #8b1a30;--accent-hover: light-dark(#74172a, #9a2238);--accent-soft: light-dark(#f3e2e6, rgba(224, 122, 147, .18));--accent-fg: light-dark(#8b1a30, #e6859b);--accent-on: #ffffff}[data-school=carleton]{--accent: #cc0633;--accent-hover: light-dark(#a80529, #e0224a);--accent-soft: light-dark(#fbe3e8, rgba(240, 110, 138, .18));--accent-fg: light-dark(#b00530, #f08099);--accent-on: #ffffff}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}:root:not([data-school]){--accent: light-dark(var(--gray-800), var(--gray-100));--accent-hover: light-dark(var(--gray-700), var(--gray-200));--accent-soft: light-dark(var(--gray-100), rgba(247, 247, 249, .1));--accent-fg: light-dark(var(--gray-800), var(--gray-100));--accent-on: light-dark(var(--gray-0), var(--gray-950))}body{margin:0;font-family:var(--font-ui);font-size:var(--text-md);line-height:var(--leading-md);color:var(--ink-1);background:var(--surface-0);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior:none}.tnum{font-variant-numeric:tabular-nums}button,input,select,textarea{font:inherit;color:inherit}button{background:none;border:none;padding:0;cursor:pointer}a{color:var(--accent-fg);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}::selection{background:var(--accent-soft)}h1,h2,h3,h4,p{margin:0}.display{font-weight:650;letter-spacing:-.02em}.overline{font-size:var(--text-xs);line-height:var(--leading-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4)}.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}.skip-link{position:fixed;top:-100px;left:var(--space-2);z-index:100;padding:var(--space-2) var(--space-3);background:var(--overlay);border-radius:var(--r-sm);box-shadow:var(--shadow-overlay)}.skip-link:focus{top:var(--space-2)}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-weight:500;border-radius:var(--r-sm);transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out);white-space:nowrap}.ui-btn--md{height:32px;padding:0 var(--space-3);font-size:var(--text-md)}.ui-btn--sm{height:26px;padding:0 var(--space-2);font-size:var(--text-sm)}.ui-btn--primary{background:var(--accent);color:var(--accent-on)}.ui-btn--primary:hover{background:var(--accent-hover)}.ui-btn--secondary{background:var(--surface-2);color:var(--ink-2);box-shadow:inset 0 0 0 .5px var(--line-1)}.ui-btn--secondary:hover{background:var(--surface-3)}.ui-btn--ghost{background:transparent;color:var(--ink-3)}.ui-btn--ghost:hover{background:var(--surface-2);color:var(--ink-2)}.ui-btn--danger{background:var(--danger-soft);color:var(--danger)}.ui-btn:disabled{opacity:.45;cursor:default}.ui-iconbtn{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-sm);color:var(--ink-3);transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.ui-iconbtn--md{width:30px;height:30px}.ui-iconbtn--sm{width:24px;height:24px}.ui-iconbtn:hover{background:var(--surface-2);color:var(--ink-1)}.ui-toggle{position:relative;width:36px;height:22px;border-radius:var(--r-pill);background:var(--surface-3);box-shadow:inset 0 0 0 .5px var(--line-2);transition:background var(--dur-2) var(--ease-out);flex:none}.ui-toggle.is-on{background:var(--accent);box-shadow:none}.ui-toggle-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0b0b0d40;transition:transform var(--dur-2) var(--ease-spring)}.ui-toggle.is-on .ui-toggle-knob{transform:translate(14px)}.ui-toggle:after{content:"";position:absolute;inset:-11px -4px}.ui-seg{display:inline-flex;padding:2px;gap:2px;background:var(--surface-2);border-radius:var(--r-md);box-shadow:inset 0 0 0 .5px var(--line-1)}.ui-seg-item{display:inline-flex;align-items:center;gap:5px;border-radius:var(--r-sm);color:var(--ink-3);font-weight:500;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.ui-seg--md .ui-seg-item{height:26px;padding:0 10px;font-size:var(--text-sm)}.ui-seg--sm .ui-seg-item{height:22px;padding:0 8px;font-size:var(--text-xs)}.ui-seg-item.is-active{background:var(--surface-1);color:var(--ink-1);box-shadow:var(--shadow-raise)}.ui-seg-item:disabled{opacity:.4;cursor:default}.ui-tabs{display:flex;gap:var(--space-1)}.ui-tab{height:30px;padding:0 var(--space-3);border-radius:var(--r-sm);color:var(--ink-3);font-weight:500;display:inline-flex;align-items:center;gap:6px}.ui-tab:hover{background:var(--surface-2);color:var(--ink-2)}.ui-tab.is-active{background:var(--accent-soft);color:var(--accent-fg)}.ui-kbd{display:inline-block;min-width:18px;padding:1px 5px;font-family:var(--font-ui);font-size:var(--text-xs);line-height:16px;text-align:center;color:var(--ink-3);background:var(--surface-2);border-radius:var(--r-xs);box-shadow:inset 0 -1px 0 var(--line-2),inset 0 0 0 .5px var(--line-1)}.ui-popover{z-index:60;background:var(--overlay);border-radius:var(--r-card);box-shadow:var(--shadow-overlay);animation:ui-pop-in var(--dur-2) var(--ease-out)}@keyframes ui-pop-in{0%{opacity:0;transform:scale(.98)}}.ui-menu{min-width:180px;padding:var(--space-1);display:flex;flex-direction:column}.ui-menu-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:7px 10px;border-radius:var(--r-sm);color:var(--ink-2);font-size:var(--text-md);text-align:left}.ui-menu-item:hover,.ui-menu-item:focus-visible{background:var(--surface-2);color:var(--ink-1);outline:none}.ui-menu-item.is-danger{color:var(--danger)}.ui-menu-item:disabled{opacity:.45}.ui-menu-hint{color:var(--ink-4);font-size:var(--text-sm)}.ui-dialog-scrim{position:fixed;inset:0;z-index:70;background:var(--scrim);display:grid;place-items:center;padding:var(--space-4);animation:ui-fade-in var(--dur-2) var(--ease-out)}@keyframes ui-fade-in{0%{opacity:0}}.ui-dialog{background:var(--overlay);border-radius:var(--r-lg);box-shadow:var(--shadow-overlay);max-width:min(560px,calc(100vw - 32px));max-height:calc(100dvh - 64px);overflow:auto;animation:ui-pop-in var(--dur-2) var(--ease-out)}.ui-sheet-scrim{position:fixed;inset:0;z-index:70;background:var(--scrim);animation:ui-fade-in var(--dur-2) var(--ease-out)}.ui-sheet{position:fixed;left:0;right:0;bottom:0;max-height:55dvh;background:var(--overlay);border-radius:var(--r-lg) var(--r-lg) 0 0;box-shadow:var(--shadow-overlay);display:flex;flex-direction:column;padding-bottom:env(safe-area-inset-bottom);animation:ui-sheet-up var(--dur-3) var(--ease-out)}.ui-sheet--tall{max-height:92dvh;height:92dvh}@keyframes ui-sheet-up{0%{transform:translateY(24px);opacity:0}}.ui-sheet-handle{display:grid;place-items:center;padding:var(--space-2) 0 var(--space-1);touch-action:none;cursor:grab}.ui-sheet-grip{width:36px;height:4px;border-radius:var(--r-pill);background:var(--line-2)}.ui-sheet-body{overflow:auto;padding:var(--space-2) var(--space-4) var(--space-4)}.ui-toast-viewport{position:fixed;bottom:calc(var(--space-4) + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:var(--space-2);align-items:center;pointer-events:none}.ui-toast{pointer-events:auto;display:flex;align-items:flex-start;gap:var(--space-2);max-width:min(480px,calc(100vw - 32px));padding:10px 12px;background:var(--overlay);border-radius:var(--r-card);box-shadow:var(--shadow-overlay);font-size:var(--text-md);animation:ui-toast-up var(--dur-2) var(--ease-out)}@keyframes ui-toast-up{0%{transform:translateY(8px);opacity:0}}.ui-toast--success{box-shadow:var(--shadow-overlay),inset 3px 0 0 var(--ok)}.ui-toast--warn{box-shadow:var(--shadow-overlay),inset 3px 0 0 var(--warn)}.ui-toast--error{box-shadow:var(--shadow-overlay),inset 3px 0 0 var(--danger)}.ui-toast-body{display:flex;flex-direction:column;gap:4px;min-width:0}.ui-toast-msg{color:var(--ink-1)}.ui-toast-expand{align-self:flex-start;font-size:var(--text-sm);color:var(--accent-fg)}.ui-toast-details{margin:0;padding-left:var(--space-4);color:var(--ink-3);font-size:var(--text-sm)}.ui-toast-action{flex:none;font-weight:600;color:var(--accent-fg);padding:0 4px}.ui-toast-close{flex:none;color:var(--ink-4);font-size:15px;line-height:1;padding:2px 4px}.ui-slider{position:relative;height:28px;cursor:pointer;touch-action:none}.ui-slider-track{position:absolute;top:50%;left:0;right:0;height:3px;transform:translateY(-50%);border-radius:var(--r-pill);background:var(--surface-3)}.ui-slider-fill{position:absolute;top:50%;height:3px;transform:translateY(-50%);border-radius:var(--r-pill);background:var(--accent)}.ui-slider-knob{position:absolute;top:50%;width:16px;height:16px;transform:translate(-50%,-50%);border-radius:50%;background:#fff;box-shadow:0 0 0 .5px var(--line-2),0 1px 3px #0b0b0d4d}.ui-slider-knob:after{content:"";position:absolute;inset:-14px}.ui-vlist{overflow-y:auto;overscroll-behavior:contain}.app{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.app-main{flex:1;min-height:0;display:flex;flex-direction:column}.app-loading{flex:1}.app-notfound{flex:1;display:grid;place-content:center;gap:var(--space-3);text-align:center}.topbar{flex:none;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);height:52px;padding:0 var(--space-4);padding-top:env(safe-area-inset-top);border-bottom:.5px solid var(--line-1);background:var(--surface-1)}.topbar-left{display:flex;align-items:center;gap:var(--space-3);min-width:0}.topbar-brand{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-lg);color:var(--ink-1)}.topbar-brand:hover{text-decoration:none}.topbar-mark{display:grid;place-items:center;width:26px;height:26px;border-radius:var(--r-sm);background:var(--accent);color:var(--accent-on);font-size:var(--text-md);font-weight:700}.topbar-school{padding:3px 8px;border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent-fg);font-size:var(--text-sm);font-weight:600;white-space:nowrap}.topbar-nav{flex:none}.topbar-right{display:flex;align-items:center;gap:var(--space-2)}@media (pointer: coarse){.ui-btn,.ui-iconbtn,.ui-seg-item,.ui-tab{position:relative}.ui-btn:after,.ui-iconbtn:after,.ui-seg-item:after,.ui-tab:after{content:"";position:absolute}.ui-btn--md:after{inset:-6px 0}.ui-btn--sm:after{inset:-9px 0}.ui-iconbtn--md:after{inset:-7px}.ui-iconbtn--sm:after{inset:-10px}.ui-seg--md .ui-seg-item:after{inset:-9px 0}.ui-seg--sm .ui-seg-item:after{inset:-11px 0}.ui-tab:after{inset:-7px 0}.ui-menu-item{min-height:44px;padding-top:var(--space-3);padding-bottom:var(--space-3)}.ui-toast-close{position:relative}.ui-toast-close:after{content:"";position:absolute;inset:-12px}.app .bp-mbtn{min-height:44px}.ph-row--controls.ph-row--controls{row-gap:16px}.ph-actions.ph-actions{margin-top:4px}}@supports (padding: max(0px,env(safe-area-inset-left))){.app .topbar{padding-left:max(var(--space-4),env(safe-area-inset-left));padding-right:max(var(--space-4),env(safe-area-inset-right))}.app .bp-mobilebar{padding-left:max(var(--space-3),env(safe-area-inset-left));padding-right:max(var(--space-3),env(safe-area-inset-right))}.ui-sheet-body{padding-left:max(var(--space-4),env(safe-area-inset-left));padding-right:max(var(--space-4),env(safe-area-inset-right))}}@media (max-width: 767.98px){.app .topbar{gap:var(--space-2);padding-left:max(var(--space-3),env(safe-area-inset-left));padding-right:max(var(--space-3),env(safe-area-inset-right))}.app .topbar-brand{gap:0;font-size:0}.app .topbar-mark,.app .topbar-school{flex:none}.app .topbar-left{gap:var(--space-2)}.app .topbar-nav,.app .topbar-right{min-width:0}.app .topbar-right{gap:var(--space-1)}.app .ui-tab{padding:0 var(--space-2)}.app .bp-term{min-width:0;flex:0 1 auto}.app .bp-term-label{max-width:12ch}}@media (max-width: 480px){.app .topbar-school{display:none}.app .topbar{padding-left:max(var(--space-2),env(safe-area-inset-left));padding-right:max(var(--space-2),env(safe-area-inset-right))}}.welcome{width:min(420px,calc(100vw - 32px))}.welcome-inner{position:relative;display:flex;flex-direction:column;gap:var(--space-5);padding:var(--space-6)}.welcome-slide{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);min-height:208px}.welcome-icon{display:grid;place-items:center;width:38px;height:38px;margin-bottom:var(--space-1);border-radius:var(--r-md);background:var(--accent-soft);color:var(--accent-fg)}.welcome-title{font-size:var(--text-xl);line-height:var(--leading-xl);color:var(--ink-1)}.welcome-copy{color:var(--ink-3);font-size:var(--text-md);line-height:var(--leading-md);max-width:40ch}.welcome-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.welcome-dots{display:inline-flex;align-items:center;gap:6px}.welcome-dot{width:6px;height:6px;border-radius:50%;background:var(--line-2);transition:background var(--dur-2) var(--ease-out),width var(--dur-2) var(--ease-out)}.welcome-dot.is-on{width:18px;border-radius:var(--r-pill);background:var(--accent)}.welcome-actions{display:inline-flex;align-items:center;gap:var(--space-2)}.welcome-close{position:absolute;top:var(--space-3);right:var(--space-3)}.coach-pop{max-width:min(260px,calc(100vw - 24px))}.coach{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-2);padding:var(--space-3)}.coach-text{align-self:stretch;color:var(--ink-1);font-size:var(--text-md);line-height:var(--leading-md)}.coach-ok{flex:none}@media (max-width: 480px){.welcome-inner{gap:var(--space-4);padding:var(--space-5)}.welcome-slide{min-height:232px}.welcome-title{font-size:var(--text-lg);line-height:var(--leading-lg)}}
