/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.hidden{display:none}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#102a43;--muted:#627d98;--line:#d9e2ec;--paper:#f4f7fa;--blue:#00274c;--maize:#ffcb05}*{box-sizing:border-box}html,body{background:#eaf0f5;min-height:100%;margin:0}html.night-mode,html.night-mode body{background:#000}body{color:var(--ink);font-family:Arial,Helvetica,sans-serif}button{font:inherit}.night-screen{z-index:9999;color:#000;cursor:default;-webkit-user-select:none;user-select:none;background:#000;border:0;outline:0;width:100%;height:100%;padding:0;position:fixed;inset:0;overflow:hidden}.night-screen span{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.dashboard{background:radial-gradient(circle at 85% -10%, #d6e9f6 0, transparent 38%), var(--paper);min-height:100vh;padding:clamp(18px,2.5vw,34px);transition:filter .25s}.topbar{grid-template-columns:1fr auto 1fr;align-items:center;max-width:1500px;margin:0 auto 22px;display:grid}.brand{letter-spacing:-.03em;align-items:center;gap:12px;font-size:22px;font-weight:800;display:flex}.brand-mark{width:42px;height:42px;color:var(--blue);background:var(--maize);border-radius:12px;place-items:center;font-family:Georgia,serif;font-size:28px;display:grid}.date-navigation{justify-content:center;align-items:center;gap:14px;display:flex;position:relative}.date-navigation .today{text-align:center;gap:4px;min-width:235px;display:grid}.date-navigation .today strong{font-size:18px}.date-navigation .today span{color:var(--muted);font-size:14px}.today-button{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:10px;padding:7px 12px}.today-button:hover{background:#ffffffb8}.today-button:focus-visible{outline:3px solid var(--maize);outline-offset:2px}.date-picker-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.day-arrow{border:1px solid var(--line);width:42px;height:42px;color:var(--blue);cursor:pointer;background:#ffffffe6;border-radius:50%;font-size:24px;line-height:1;box-shadow:0 4px 14px #102a430f}.day-arrow:hover{background:#fff;border-color:#9fb3c8}.day-arrow:focus-visible{outline:3px solid var(--maize);outline-offset:2px}.clock{text-align:right;color:var(--blue);letter-spacing:-.05em;font-size:clamp(30px,3.7vw,48px);font-weight:800}.message-banner{color:#fff;background:#174f78;border-radius:14px;align-items:stretch;max-width:1500px;min-height:48px;margin:0 auto 18px;display:flex;overflow:hidden;box-shadow:0 7px 22px #102a431f}.message-label{min-height:48px;color:var(--blue);background:var(--maize);letter-spacing:.1em;text-transform:uppercase;flex:none;place-items:center;padding:0 18px;font-size:11px;font-weight:900;display:grid}.message-banner p{align-items:center;min-width:0;margin:0;padding:13px 24px;font-size:16px;font-weight:700;line-height:1.4;display:flex}.dashboard-tabs{gap:7px;max-width:1500px;margin:0 auto 18px;display:flex}.dashboard-tabs button{border:1px solid var(--line);color:#486581;cursor:pointer;background:#ffffffd9;border-radius:999px;padding:9px 18px;font-weight:800}.dashboard-tabs button.active{border-color:var(--blue);color:#fff;background:var(--blue)}.dashboard-tabs button:focus-visible{outline:3px solid var(--maize);outline-offset:2px}.next-card{color:#fff;background:var(--blue);border-radius:26px;grid-template-columns:1fr 295px;max-width:1500px;min-height:235px;margin:0 auto 22px;display:grid;overflow:hidden;box-shadow:0 18px 45px #102a432e}.next-copy{align-self:center;padding:34px 42px}.eyebrow{color:#829ab1;letter-spacing:.14em;text-transform:uppercase;margin:0 0 7px;font-size:12px;font-weight:800}.next-copy .eyebrow{color:#a7bdd1}.next-copy h1{letter-spacing:-.055em;margin:0;font-size:clamp(44px,6vw,74px);line-height:.98}.next-detail{color:#d9e2ec;margin:12px 0 24px;font-size:22px}.route-line{color:#b9cada;flex-wrap:wrap;align-items:center;gap:10px;font-size:15px;display:flex}.walk-icon{color:var(--maize);font-size:13px}.dot{opacity:.5}.route-link{color:var(--maize);font-weight:800;text-decoration:none}.location-button{color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff59;border-radius:8px;padding:6px 10px}.location-button:hover{border-color:var(--maize)}.leave-panel{color:var(--blue);background:var(--maize);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:26px;display:flex}.leave-panel>span{font-size:17px;font-weight:700}.leave-panel>strong{letter-spacing:-.08em;font-size:92px;line-height:.9}.leave-by{border-top:1px solid #00274c33;width:100%;margin-top:20px;padding-top:16px;font-size:14px;font-weight:800}.content-grid{grid-template-columns:minmax(0,1.12fr) minmax(380px,.88fr);gap:22px;max-width:1500px;margin:0 auto;display:grid}.grades-view{max-width:1500px;min-height:560px;margin:0 auto}.grades-title{justify-content:space-between;align-items:end;margin-bottom:20px;display:flex}.grades-title h1{color:var(--blue);letter-spacing:-.05em;margin:0;font-size:46px}.grades-title>span{color:var(--muted);font-size:13px}.grades-empty{text-align:center;background:#ffffffb3;border:1px dashed #bcccdc;border-radius:22px;padding:70px 30px}.grades-empty strong{color:var(--blue);font-size:22px}.grades-empty p{color:var(--muted)}.course-grade-grid{grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:15px;margin-bottom:22px;display:grid}.course-grade-card{border:1px solid var(--line);border-top:5px solid var(--maize);background:#fff;border-radius:18px;grid-template-rows:1fr auto auto;gap:12px;min-height:185px;padding:22px;display:grid;box-shadow:0 8px 25px #102a430f}.course-grade-card span{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-size:11px;font-weight:800}.course-grade-card h2{color:var(--blue);margin:5px 0 0;font-size:18px}.grade-total{align-items:baseline;gap:10px;display:flex}.grade-total strong{color:var(--blue);letter-spacing:-.05em;font-size:36px}.course-grade-card a{color:#2f6f9f;font-size:12px;font-weight:800;text-decoration:none}.recent-grades{padding-top:24px}.grade-row{border-top:1px solid #edf2f7;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;min-height:80px;padding:12px 0;display:grid}.grade-row:first-child{border-top:0}.grade-row h3{color:var(--blue);margin:0;font-size:16px}.grade-row h3 a{color:inherit;text-decoration:none}.grade-row h3 a:hover{text-decoration:underline}.grade-row p{color:var(--muted);margin:5px 0 0;font-size:12px}.grade-score{justify-items:end;display:grid}.grade-score strong{color:var(--blue);font-size:18px}.grade-score span{color:var(--muted);font-size:12px}.panel{background:#ffffffeb;border:1px solid #d9e2ece6;border-radius:22px;padding:26px 28px;box-shadow:0 8px 30px #102a4312}.panel-heading{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.panel-heading h2{color:var(--blue);letter-spacing:-.035em;margin:0;font-size:27px}.count-pill,.now-pill{color:var(--muted);background:#edf2f7;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:800}.class-row{border-top:1px solid #edf2f7;grid-template-columns:62px 5px minmax(0,1fr) auto;align-items:center;gap:17px;min-height:92px;display:grid}.class-row:first-child{border-top:0}.class-row.current{background:#f5f9fc;border-radius:14px;margin:0 -12px;padding:0 12px}.time-block{display:grid}.time-block strong{font-size:18px}.time-block span{color:var(--muted);font-size:12px}.class-color{border-radius:9px;width:5px;height:50px}.class-color.blue{background:#3e7cb1}.class-color.maize{background:var(--maize)}.class-color.mint{background:#28a787}.class-copy>div{align-items:center;gap:8px;display:flex}.class-copy h3,.assignment h3{color:var(--blue);margin:0;font-size:16px}.class-copy p,.assignment p{color:var(--muted);margin:5px 0 0;font-size:13px}.now-pill{color:var(--blue);background:var(--maize);padding:3px 7px}.assignment h3 a{color:inherit;text-decoration:none}.assignment h3 a:hover{text-decoration:underline}.empty-assignments{color:var(--muted);margin:28px 0;font-size:14px}.location{justify-items:end;gap:5px;display:grid}.location strong{font-size:14px}.location span,.location a{color:#3778a8;font-size:12px;font-weight:700}.location a{text-decoration:none}.location a:hover{text-decoration:underline}.location a:focus-visible{outline:2px solid var(--maize);outline-offset:3px}.text-button,.footer-button{color:#2f6f9f;cursor:pointer;background:0 0;border:0;font-size:13px;font-weight:800}.text-button{padding:10px}.assignment{border-top:1px solid #edf2f7;grid-template-columns:5px minmax(0,1fr) auto;align-items:center;gap:15px;min-height:92px;display:grid}.assignment:first-child{border-top:0}.urgency{border-radius:9px;width:5px;height:48px}.urgency.today{background:#d64545}.urgency.soon{background:#d89b21}.urgency.later{background:#3e7cb1}.course-label{color:#829ab1;letter-spacing:.1em;margin-bottom:5px;font-size:10px;font-weight:900;display:block}.due{text-align:right;max-width:105px;font-size:12px}.due.today{color:#c43c3c}.due.soon{color:#a36d00}.due.later{color:#486581}.statusbar{max-width:1500px;color:var(--muted);justify-content:space-between;align-items:center;margin:18px auto 0;font-size:12px;display:flex}.sync-group{flex-wrap:wrap;gap:20px;display:flex}.sync-group span{align-items:center;gap:6px;display:flex}.status-dot{border-radius:50%;width:7px;height:7px;display:inline-block}.status-dot.connected{background:#2f9e79}.status-dot.pending{background:#d89b21}.footer-button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 12px}.footer-actions{gap:8px;display:flex}.footer-actions a{text-decoration:none}.setup-shell{background:var(--paper);min-height:100vh;padding:clamp(24px,5vw,70px)}.setup-top,.setup-header,.connection-grid,.security-note{max-width:1050px;margin-left:auto;margin-right:auto}.setup-top{justify-content:space-between;align-items:center;display:flex}.setup-top a{color:#2f6f9f;font-weight:800;text-decoration:none}.setup-header{padding:70px 0 35px}.setup-header h1{color:var(--blue);letter-spacing:-.06em;margin:0;font-size:clamp(42px,7vw,74px)}.setup-header>p:last-child{max-width:650px;color:var(--muted);font-size:18px;line-height:1.6}.connection-grid{gap:12px;display:grid}.connection-card{border:1px solid var(--line);background:#fff;border-radius:18px;grid-template-columns:48px 1fr auto;align-items:center;gap:20px;padding:22px 24px;display:grid}.connection-number{color:#9fb3c8;font-size:13px;font-weight:900}.connection-card h2{color:var(--blue);margin:0 0 5px;font-size:18px}.connection-card p{color:var(--muted);margin:0;font-size:13px}.connection-state{color:#8d6500;background:#fff6d6;border-radius:999px;padding:7px 10px;font-size:11px;font-weight:900}.connection-state.configured{color:#16705a;background:#dff7ef}.security-note{border-left:4px solid var(--maize);background:#fffdf4;margin-top:25px;padding:20px 24px}.security-note p{color:var(--muted);margin:6px 0 0;font-size:13px;line-height:1.5}@media (width<=900px){.dashboard{padding:16px}.topbar{grid-template-columns:1fr 1fr}.date-navigation .today{display:none}.next-card{grid-template-columns:1fr 220px}.content-grid{grid-template-columns:1fr}.statusbar{align-items:flex-start;gap:15px}.sync-group{gap:8px 14px}}@media (width<=620px){.brand{font-size:18px}.brand-mark{width:36px;height:36px}.next-card{grid-template-columns:1fr}.next-copy{padding:28px}.leave-panel{grid-template-columns:auto auto auto;gap:8px;padding:18px;display:grid}.leave-panel>strong{font-size:48px}.leave-by{grid-column:1/-1;margin-top:5px;padding-top:10px}.panel{padding:22px 18px}.class-row{grid-template-columns:54px 4px minmax(0,1fr);gap:10px}.location{grid-column:3;justify-items:start;margin-top:-14px;padding-bottom:10px}.assignment{grid-template-columns:4px minmax(0,1fr);padding:12px 0}.due{text-align:left;grid-column:2;max-width:none}.statusbar{display:grid}.clock{font-size:30px}.grades-title{flex-direction:column;align-items:start;gap:6px}.grades-title h1{font-size:38px}.course-grade-grid,.grade-row{grid-template-columns:1fr}.grade-score{justify-items:start}.connection-card{grid-template-columns:34px 1fr}.connection-state{grid-column:2;justify-self:start}.setup-header{padding-top:45px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}@media (width<=900px){.topbar{grid-template-columns:auto 1fr auto;gap:12px}.date-navigation{grid-column:2}.date-navigation .today{min-width:190px;display:grid}}@media (width<=620px){.topbar{grid-template-columns:1fr auto}.date-navigation{grid-area:2/1/auto/-1}.date-navigation .today{min-width:180px}.day-arrow{width:38px;height:38px}}
