:root{--portal-nav-height:64px}
.portal-has-navigation{padding-top:var(--portal-nav-height)}
.portal-has-navigation #content,.portal-has-navigation [id]{scroll-margin-top:calc(var(--portal-nav-height) + 20px)}
.portal-navigation{--portal-nav-ink:#1d2924;--portal-nav-muted:#647169;--portal-nav-surface:#f7f9f7;--portal-nav-accent:#315e49;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--portal-nav-ink)}
.portal-navigation[data-nav-role="teacher"]{--portal-nav-ink:#202c3b;--portal-nav-muted:#677383;--portal-nav-surface:#f6f8fb;--portal-nav-accent:#365f8a}
.portal-global-header{position:fixed;inset:0 0 auto;z-index:80;background:rgba(247,249,247,.88);border-bottom:1px solid rgba(34,47,39,.07);backdrop-filter:saturate(150%) blur(20px);-webkit-backdrop-filter:saturate(150%) blur(20px)}
.portal-navigation[data-nav-role="teacher"] .portal-global-header{background:rgba(246,248,251,.88)}
.portal-global-bar{max-width:1200px;height:var(--portal-nav-height);margin:0 auto;padding:0 36px;display:flex;align-items:center;justify-content:space-between;gap:36px}
.portal-global-brand{flex:none;display:inline-flex;align-items:center;min-height:44px;color:var(--portal-nav-ink);text-decoration:none;font-weight:650;font-size:22px;letter-spacing:-1.2px;line-height:1}
.portal-global-links{display:flex;align-items:center;justify-content:flex-end;gap:28px;min-width:0;height:100%}
.portal-nav-trigger{display:flex;align-items:center;justify-content:center;gap:8px;align-self:stretch;min-height:44px;padding:0 8px;background:none;color:var(--portal-nav-muted);font-size:13px;font-weight:500;white-space:nowrap;border-radius:0;transition:color 160ms ease}
.portal-nav-trigger:hover,.portal-nav-trigger[aria-expanded="true"],.portal-nav-trigger.is-current{color:var(--portal-nav-ink)}
.portal-nav-trigger.is-current{font-weight:650}
.portal-nav-chevron{width:5px;height:5px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform 220ms cubic-bezier(.22,1,.36,1);opacity:.6}
.portal-nav-trigger[aria-expanded="true"] .portal-nav-chevron{transform:translateY(1px) rotate(225deg)}
.portal-nav-panel{background:var(--portal-nav-surface);max-height:calc(100vh - var(--portal-nav-height));max-height:calc(100dvh - var(--portal-nav-height));overflow-y:auto;overscroll-behavior:contain;box-shadow:0 28px 42px rgba(27,39,34,.06);animation:portal-menu-reveal 280ms cubic-bezier(.22,1,.36,1) both}
.portal-nav-panel[hidden],.portal-nav-backdrop[hidden]{display:none!important}
.portal-nav-panel-inner{max-width:1200px;margin:0 auto;padding:42px 36px 52px;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(36px,7vw,110px)}
.portal-nav-introduction,.portal-nav-column{min-width:0}
.portal-nav-introduction h2{max-width:480px;margin:0;font-size:clamp(26px,2.7vw,38px);line-height:1.2;letter-spacing:-.035em;font-weight:650;color:var(--portal-nav-ink);overflow-wrap:anywhere}
.portal-nav-introduction>p{font-size:13px;color:var(--portal-nav-muted);line-height:1.8;margin-top:16px;max-width:350px;overflow-wrap:anywhere}
.portal-nav-account-id{display:block;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin-top:4px}
.portal-nav-column-title{margin:0 0 12px;font-size:12px;font-weight:450;line-height:1.6;color:var(--portal-nav-muted)}
.portal-nav-links{display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.portal-nav-link{display:block;max-width:100%;min-height:44px;text-align:left;text-decoration:none;background:none;border:0;border-radius:4px;padding:6px 0;color:var(--portal-nav-ink);font-size:24px;line-height:1.35;letter-spacing:-.025em;font-weight:600;overflow-wrap:anywhere;transition:color 160ms ease}
.portal-nav-link:hover,.portal-nav-link[aria-current="page"]{color:var(--portal-nav-accent)}
.portal-nav-link[aria-current="page"]::after{content:"·";margin-left:10px;color:var(--portal-nav-accent)}
.portal-nav-description{max-width:300px;font-size:12px;line-height:1.8;color:var(--portal-nav-muted);margin-top:12px;overflow-wrap:anywhere}
.portal-nav-backdrop{position:fixed;inset:var(--portal-nav-height) 0 0;z-index:79;background:rgba(15,26,24,.24);animation:portal-scrim-reveal 180ms ease both}
.portal-navigation :is(a,button):focus-visible{outline:2px solid var(--portal-nav-accent);outline-offset:4px}
@keyframes portal-menu-reveal{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
@keyframes portal-scrim-reveal{from{opacity:0}to{opacity:1}}
@media(max-width:720px){
 :root{--portal-nav-height:60px}
 .portal-global-bar{padding:0 20px;gap:20px}
 .portal-global-brand{font-size:20px;letter-spacing:-1.1px}
 .portal-global-links{gap:10px}
 .portal-nav-trigger{font-size:12px;padding:0 4px;gap:6px}
 .portal-nav-panel-inner{padding:28px 24px 36px;grid-template-columns:minmax(0,1fr);gap:28px}
 .portal-nav-introduction h2{font-size:30px}
 .portal-nav-introduction>p{font-size:12px;margin-top:10px}
 .portal-nav-link{font-size:24px;min-height:46px}
}
@media(max-width:380px){.portal-global-bar{padding:0 14px;gap:10px}.portal-global-links{gap:4px}.portal-nav-trigger{gap:5px;padding:0 3px}.portal-global-brand{font-size:19px}.portal-nav-panel-inner{padding-inline:20px}}
@media(max-height:540px) and (min-width:721px){.portal-nav-panel-inner{padding-top:24px;padding-bottom:28px;gap:40px}.portal-nav-link{font-size:21px}}
@media(prefers-reduced-motion:reduce){.portal-nav-panel,.portal-nav-backdrop{animation:none}.portal-nav-chevron,.portal-nav-trigger,.portal-nav-link{transition:none}}
@media(forced-colors:active){.portal-global-header,.portal-nav-panel{background:Canvas;border-bottom:1px solid CanvasText;backdrop-filter:none}.portal-nav-backdrop{background:Canvas;opacity:.7}}
