:root{font-synthesis:none;text-rendering:optimizelegibility;--surface:#f9f9ff;--card:#fff;--surface-low:#f0f3ff;--surface-mid:#e7eeff;--surface-high:#dee8ff;--surface-highest:#d8e3fb;--text:#111c2d;--text-muted:#64748b;--navy:#002746;--navy-container:#0f3d64;--teal:#006781;--teal-soft:#b9eaff;--border:#e2e8f0;--green:#059669;--warning:#d97706;--error:#ba1a1a;color:var(--text);background:var(--surface);font-family:Noto Sans,system-ui,sans-serif}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--surface:#0c1727;--card:#142337;--surface-low:#1b2b42;--surface-mid:#263953;--surface-high:#304662;--surface-highest:#3a526e;--text:#eff5ff;--text-muted:#a6b4c7;--navy:#d3e6ff;--navy-container:#0e3d63;--teal:#81d1f0;--teal-soft:#17465a;--border:#304258}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5rem}body{background:var(--surface);min-width:320px;min-height:100vh;color:var(--text);margin:0}button,input{font:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer}.material-symbols-outlined{letter-spacing:normal;text-transform:none;white-space:nowrap;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;direction:ltr;font-family:Material Symbols Outlined;font-size:1.25rem;font-style:normal;font-weight:400;line-height:1;display:inline-block}.app-shell{min-height:100vh;padding-bottom:5.75rem}.site-header{z-index:20;background:color-mix(in srgb, var(--surface) 87%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid color-mix(in srgb, var(--border) 56%, transparent);height:4rem;position:fixed;inset:0 0 auto}.header-inner{justify-content:space-between;align-items:center;max-width:920px;height:100%;margin:auto;padding:0 1rem;display:flex}.brand{align-items:center;gap:.625rem;min-width:0;display:flex}.brand-logo,.brand-mark{object-fit:cover;border-radius:50%;width:2.25rem;height:2.25rem}.brand-mark{background:var(--teal-soft);color:var(--teal);place-items:center;display:grid}.brand-copy{flex-direction:column;min-width:0;display:flex}.brand-copy strong{color:var(--navy);font-size:.9rem;line-height:1.25}.brand-copy small{color:var(--text-muted);font-size:.68rem}.header-actions{align-items:center;gap:.25rem;display:flex}.icon-button{width:2.75rem;height:2.75rem;color:var(--text-muted);background:0 0;border:0;border-radius:.75rem;place-items:center;display:grid}.icon-button:hover{background:var(--surface-mid);color:var(--teal)}.main-content{width:100%;padding:4.75rem 1rem 1.5rem}.content-stack{flex-direction:column;gap:1.5rem;width:min(100%,850px);margin:0 auto;display:flex}.hero-section,.section-block{flex-direction:column;gap:1rem;scroll-margin-top:4.5rem;display:flex}.surface-card{background:var(--card);border:1px solid color-mix(in srgb, var(--border) 75%, transparent);border-radius:1rem;box-shadow:0 1px 5px #050b140a}.welcome-card{padding:1rem}.welcome-main{align-items:flex-start;gap:1rem;display:flex}.hero-emblem{background:var(--teal-soft);width:3.5rem;height:3.5rem;color:var(--teal);border-radius:50%;flex:none;place-items:center;font-size:1.8rem;display:grid;overflow:hidden}.hero-emblem img{object-fit:cover;width:100%;height:100%}.welcome-copy{flex:1;min-width:0}.badges{flex-wrap:wrap;gap:.375rem;margin-bottom:.45rem;display:flex}.badge{border-radius:999px;padding:.15rem .55rem;font-size:.69rem;font-weight:700}.badge-primary{color:#001d36;background:#d1e4ff}.badge-secondary{background:var(--teal-soft);color:var(--teal)}.welcome-copy h1{color:var(--navy);margin:0;font-size:1.16rem;line-height:1.55}.welcome-copy p{color:var(--text-muted);margin:.3rem 0 0;font-size:.78rem;line-height:1.7}.notice-card{background:var(--surface-low);border-radius:.75rem;flex-direction:column;gap:.65rem;margin-top:1rem;padding:.75rem;display:flex}.notice-copy{align-items:flex-start;gap:.45rem;display:flex}.notice-copy .material-symbols-outlined{color:var(--warning);margin-top:.1rem;font-size:1.2rem}.notice-copy p{margin:0;font-size:.76rem;line-height:1.65}.notice-actions{gap:.5rem;display:flex}.button{border:0;border-radius:.65rem;justify-content:center;align-items:center;gap:.4rem;min-height:2.55rem;padding:.5rem .8rem;font-size:.76rem;font-weight:700;transition:transform .15s,background .15s;display:inline-flex}.button:active{transform:scale(.98)}.button .material-symbols-outlined{font-size:1rem}.notice-actions .button{flex:1}.button-primary{background:var(--navy-container);color:#fff}.button-primary:hover{background:var(--navy)}.button-soft{background:var(--surface-highest);color:var(--text)}.button-soft:hover{background:var(--surface-high)}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.stat-card{align-items:center;gap:.6rem;min-width:0;padding:.65rem;display:flex}.stat-icon{background:var(--teal-soft);width:2.5rem;height:2.5rem;color:var(--teal);border-radius:.65rem;flex:none;place-items:center;display:grid}.stat-copy{flex-direction:column;min-width:0;display:flex}.stat-copy strong{color:var(--navy);font-size:.86rem;line-height:1.3}.stat-copy small{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.67rem;overflow:hidden}.progress-card{flex-direction:column;gap:.4rem;padding:.75rem;display:flex}.progress-copy{justify-content:space-between;align-items:center;gap:.5rem;font-size:.75rem;font-weight:700;display:flex}.progress-copy strong{color:var(--teal)}.progress-track{background:var(--surface-mid);border-radius:999px;height:.5rem;overflow:hidden}.progress-track span{border-radius:inherit;background:var(--teal);height:100%;transition:width .25s;display:block}.progress-card small{color:var(--text-muted);font-size:.67rem}.section-heading{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.section-heading h2{color:var(--navy);margin:0;font-size:1.08rem;line-height:1.6}.section-heading p{color:var(--text-muted);margin:.15rem 0 0;font-size:.69rem}.heading-line{align-items:center;gap:.4rem;display:flex}.heading-line>.material-symbols-outlined{color:var(--teal);font-size:1.4rem}.shift-badge{background:var(--surface-mid);color:var(--text-muted);border-radius:999px;flex:none;align-items:center;gap:.35rem;padding:.3rem .55rem;font-size:.67rem;display:inline-flex}.shift-badge i{background:var(--green);border-radius:50%;width:.45rem;height:.45rem}.day-tabs{scrollbar-width:none;gap:.4rem;padding:.1rem 0 .3rem;display:flex;overflow-x:auto}.day-tabs::-webkit-scrollbar{display:none}.day-tab{color:var(--text-muted);background:var(--surface-low);border:0;border-radius:.65rem;flex:none;padding:.5rem .75rem;font-size:.72rem;font-weight:700}.day-tab:hover{background:var(--surface-mid)}.day-tab.active{color:#fff;background:var(--navy)}.schedule-list{flex-direction:column;gap:.7rem;display:flex}.schedule-card,.off-card{padding:.9rem}.schedule-card-heading{align-items:center;gap:.55rem;min-width:0;display:flex}.day-marker{background:var(--teal);border-radius:999px;flex:none;width:.55rem;height:1.35rem}.marker-green{background:var(--green)}.schedule-card-heading h3{color:var(--navy);flex:1;margin:0;font-size:.92rem}.count-badge,.off-pill{background:var(--teal-soft);color:var(--teal);border-radius:.5rem;flex:none;padding:.22rem .5rem;font-size:.66rem;font-weight:700}.off-pill{background:var(--surface-mid);color:var(--green)}.lecture-list{flex-direction:column;gap:.4rem;margin-top:.7rem;display:flex}.lecture-row{background:var(--surface-low);border-radius:.65rem;justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem;display:flex}.lecture-copy{flex-direction:column;gap:.15rem;min-width:0;display:flex}.lecture-copy strong{text-overflow:ellipsis;white-space:nowrap;color:var(--navy);font-size:.8rem;overflow:hidden}.lecture-copy span{color:var(--text-muted);font-size:.66rem}.lecture-meta{flex-direction:column;flex:none;align-items:flex-end;gap:.28rem;display:flex}.lecture-meta>strong{color:var(--navy);font-size:.7rem}.kind-badge{color:#001d36;background:#d1e4ff;border-radius:.3rem;padding:.12rem .4rem;font-size:.58rem;font-weight:700}.kind-lab{background:var(--teal-soft);color:var(--teal)}.off-card>p{background:var(--surface-low);color:var(--text-muted);border-radius:.65rem;align-items:flex-start;gap:.5rem;margin:.65rem 0 0;padding:.7rem;font-size:.73rem;line-height:1.7;display:flex}.off-card>p .material-symbols-outlined{color:var(--teal);flex:none}.print-button{background:var(--card);border:1px solid var(--border);width:100%;color:var(--navy)}.print-button:hover{background:var(--surface-high)}.search-box{border:1px solid var(--border);background:var(--card);min-height:2.8rem;color:var(--text-muted);border-radius:.7rem;align-items:center;gap:.4rem;padding:0 .8rem;display:flex;box-shadow:0 1px 4px #050b1408}.search-box input{width:100%;min-width:0;color:var(--text);background:0 0;border:0;outline:0;font-size:.76rem}.search-box input::placeholder{color:color-mix(in srgb, var(--text-muted) 75%, transparent)}.courses-list{flex-direction:column;gap:.75rem;display:flex}.course-card{flex-direction:column;gap:.65rem;padding:.9rem;display:flex}.course-heading{justify-content:space-between;align-items:flex-start;gap:.6rem;display:flex}.course-heading h3{color:var(--navy);margin:0;font-size:.93rem;line-height:1.6}.teacher-label{color:var(--text-muted);margin:.12rem 0 0;font-size:.67rem}.course-status{background:var(--teal-soft);color:var(--teal);border-radius:999px;flex:none;padding:.25rem .5rem;font-size:.62rem;font-weight:700}.tone-warning{color:#9a4f00;background:#fff0d8}.tone-muted{background:var(--surface-high);color:var(--text-muted)}.tone-success{color:#047857;background:#d6f7eb}.course-alert{color:#93000a;background:#ffdad6;border-radius:.65rem;padding:.65rem;font-size:.72rem;line-height:1.7}.course-alert strong{align-items:center;gap:.3rem;display:flex}.course-alert p{margin:.2rem 0 0}.course-description{background:var(--surface-low);color:var(--text-muted);border-radius:.65rem;align-items:flex-start;gap:.35rem;margin:0;padding:.65rem;font-size:.7rem;line-height:1.7;display:flex}.course-description .material-symbols-outlined{color:var(--teal);flex:none;font-size:1.1rem}.classroom-box{background:var(--surface-mid);border-radius:.65rem;align-items:center;gap:.4rem;padding:.55rem;font-size:.68rem;display:flex}.classroom-box>div{flex:1;align-items:center;gap:.35rem;min-width:0;display:flex}.classroom-box>div .material-symbols-outlined{color:var(--navy)}.classroom-box code{background:var(--card);color:var(--navy);border-radius:.3rem;padding:.1rem .4rem}.classroom-box a{color:var(--teal);font-weight:700}.copy-button{width:2rem;height:2rem;color:var(--teal);background:0 0;border:0;border-radius:.45rem;place-items:center;display:grid}.tool-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;display:grid}.tool-link{background:var(--teal);color:#fff;text-align:center;border-radius:.6rem;justify-content:center;align-items:center;gap:.35rem;min-height:2.35rem;padding:.4rem;font-size:.68rem;font-weight:700;display:flex}.resource-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;display:grid}.resource-row{background:var(--surface-low);min-height:2.65rem;color:var(--text);border-radius:.6rem;justify-content:space-between;align-items:center;gap:.35rem;padding:.5rem;font-size:.67rem;transition:background .15s;display:flex}.resource-row:hover{background:var(--surface-mid)}.resource-row>span:first-child{align-items:center;gap:.35rem;min-width:0;display:flex}.resource-row>span:first-child .material-symbols-outlined{color:var(--error);flex:none;font-size:1rem}.resource-row>span:first-child:not(.material-symbols-outlined){overflow-wrap:anywhere}.resource-row>.material-symbols-outlined{color:var(--teal);flex:none;font-size:1rem}.resource-row.unavailable{cursor:default;opacity:.72}.resource-row.unavailable small{color:var(--text-muted);flex:none;font-size:.58rem}.archive-link{background:var(--surface-highest);min-height:2.3rem;color:var(--navy);border-radius:.6rem;justify-content:center;align-items:center;gap:.35rem;padding:.4rem;font-size:.67rem;font-weight:700;display:flex}.course-footnote{color:var(--text-muted);align-items:flex-start;gap:.35rem;margin:0;font-size:.66rem;display:flex}.course-footnote .material-symbols-outlined{color:var(--teal);font-size:1rem}.course-empty{background:var(--surface-low);text-align:center;border-radius:.75rem;flex-direction:column;align-items:center;gap:.4rem;padding:1.1rem;display:flex}.course-empty>.material-symbols-outlined{color:var(--text-muted);font-size:2rem}.course-empty strong{font-size:.75rem}.course-empty p{max-width:25rem;color:var(--text-muted);margin:0;font-size:.68rem;line-height:1.65}.course-empty a{color:#001d36;background:#d1e4ff;border-radius:.55rem;align-items:center;gap:.3rem;margin-top:.25rem;padding:.45rem .7rem;font-size:.66rem;font-weight:700;display:inline-flex}.empty-state{text-align:center;color:var(--text-muted);padding:1rem;font-size:.78rem}.empty-note{color:var(--text-muted);margin:0;font-size:.7rem}.community-card{background:var(--navy-container);color:#fff;border-radius:1rem;padding:1rem;scroll-margin-top:4.5rem;position:relative;overflow:hidden;box-shadow:0 4px 14px #050b141f}.community-intro{align-items:flex-start;gap:.7rem;display:flex}.community-icon{width:3rem;height:3rem;color:var(--teal-soft);background:#ffffff1f;border-radius:.75rem;flex:none;place-items:center;display:grid}.community-icon .material-symbols-outlined{font-size:1.7rem}.community-intro h2{margin:0;font-size:.95rem}.community-intro p{color:#d2e6fa;margin:.25rem 0 0;font-size:.7rem;line-height:1.7}.community-actions{flex-direction:column;gap:.45rem;margin-top:.8rem;display:flex}.community-primary{color:#002746;background:#fff}.community-secondary{color:#fff;background:#ffffff24}.site-footer{color:var(--text-muted);text-align:center;padding:.25rem 0 1rem;font-size:.65rem}.bottom-nav{z-index:20;min-height:4.35rem;padding:.25rem .5rem env(safe-area-inset-bottom,0px);background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid color-mix(in srgb, var(--border) 75%, transparent);justify-content:space-around;align-items:center;display:flex;position:fixed;inset:auto 0 0}.nav-item{width:4.5rem;min-height:3.4rem;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:.12rem;font-size:.62rem;display:flex}.nav-item .material-symbols-outlined{font-size:1.45rem}.nav-item.active{color:var(--navy);font-weight:800}.page-state{min-height:100vh;color:var(--text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;padding:1.5rem;display:flex}.page-state h1{color:var(--navy);margin:0;font-size:1.2rem}.page-state p{max-width:32rem;margin:0;font-size:.82rem;line-height:1.7}.state-icon{color:var(--teal);font-size:2.5rem}.loader{border:3px solid var(--surface-high);border-top-color:var(--teal);border-radius:50%;width:2rem;height:2rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width>=720px){.main-content{padding:5.25rem 1.5rem 2rem}.content-stack{gap:1.75rem}.welcome-card,.schedule-card,.off-card,.course-card,.community-card{padding:1.2rem}.welcome-copy h1{font-size:1.45rem}.welcome-copy p,.notice-copy p{font-size:.84rem}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem}.stat-card{padding:.8rem}.course-card{gap:.8rem}.resource-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.lecture-row{padding:.7rem .85rem}.lecture-copy strong{font-size:.86rem}.community-actions{flex-direction:row}.community-actions .button{flex:1}.bottom-nav{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0;justify-content:flex-end;gap:.35rem;width:min(850px,100%);min-height:3rem;padding:0 1.5rem;inset:4rem auto auto 50%;transform:translate(-50%)}.nav-item{background:color-mix(in srgb, var(--surface) 78%, transparent);border-radius:.6rem;flex-direction:row;gap:.3rem;width:auto;min-height:2.6rem;padding:0 .65rem}.nav-item.active{background:var(--surface-mid)}.app-shell{padding-bottom:0}}@media print{.site-header,.bottom-nav,.notice-actions,.search-box,.print-button,.community-card{display:none!important}.app-shell,body{color:#111;background:#fff;padding:0}.main-content{padding:0}.content-stack{width:100%}#home,#materials,#contact,.site-footer,.section-block{display:none}#schedule{display:flex}}
