.env-banner{bottom:max(.75rem, env(safe-area-inset-bottom,0px));left:max(.75rem, env(safe-area-inset-left,0px));z-index:9999;letter-spacing:.08em;text-transform:uppercase;pointer-events:none;box-shadow:var(--shadow-md);border-radius:999px;padding:.25rem .625rem;font-size:.6875rem;font-weight:700;position:fixed}.env-banner--dev{background:color-mix(in srgb, var(--status-info) 18%, var(--surface));color:var(--status-info);border:1px solid color-mix(in srgb, var(--status-info) 35%, var(--border-default))}.env-banner--hmg{background:color-mix(in srgb, var(--status-warning) 22%, var(--surface));color:color-mix(in srgb, var(--status-warning) 85%, var(--text-primary));border:1px solid color-mix(in srgb, var(--status-warning) 45%, var(--border-default))}.loading-screen{z-index:9999;box-sizing:border-box;min-height:100svh;padding:max(1rem, env(safe-area-inset-top,0px)) max(1rem, env(safe-area-inset-right,0px)) max(1rem, env(safe-area-inset-bottom,0px)) max(1rem, env(safe-area-inset-left,0px));background:var(--surface-background);color:var(--text-primary);opacity:1;transition:opacity .6s var(--ease-smooth);justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow:hidden}.loading-screen--exit{opacity:0;pointer-events:none}.loading-screen__content{text-align:center;flex-direction:column;align-items:center;gap:clamp(1.25rem,4dvh,2.5rem);width:min(100%,22rem);max-height:100%;display:flex}.loading-screen__header{flex-direction:column;gap:.375rem;width:100%;display:flex}.loading-screen__brand{letter-spacing:-.03em;color:var(--text-primary);text-wrap:balance;margin:0;font-size:clamp(1.125rem,3.5vw + .5rem,1.875rem);font-weight:700;line-height:1.25}.loading-screen__tagline{color:var(--text-secondary);text-wrap:balance;margin:0;font-size:clamp(.8125rem,2vw + .5rem,1.0625rem);font-weight:500;line-height:1.45}.loading-screen__progress{border:1px solid var(--border-default);background:var(--surface);width:100%;box-shadow:var(--shadow-sm);border-radius:clamp(.875rem,2vw,1.25rem);flex-direction:column;justify-content:center;align-items:center;gap:clamp(.875rem,2.5dvh,1.5rem);padding:clamp(1.25rem,4dvh,2rem) clamp(1rem,4vw,1.5rem);display:flex}.loading-screen__spinner{border:clamp(3px, .5vw, 4px) solid var(--surface-muted);border-top-color:var(--brand-primary);border-radius:50%;flex-shrink:0;width:clamp(2.75rem,8vw,4rem);height:clamp(2.75rem,8vw,4rem);animation:.9s linear infinite loading-screen-spin}@keyframes loading-screen-spin{to{transform:rotate(360deg)}}.loading-screen__percent{justify-content:center;align-items:flex-start;gap:.125rem;margin:0;line-height:1;display:flex}.loading-screen__percent-value{font-variant-numeric:tabular-nums;letter-spacing:-.04em;color:var(--brand-primary);font-size:clamp(2.5rem,10vw + .5rem,4.25rem);font-weight:700}.loading-screen__percent-symbol{color:var(--text-muted);margin-top:clamp(.25rem,1dvh,.375rem);font-size:clamp(1rem,3vw + .25rem,1.75rem);font-weight:600}.loading-screen__label{letter-spacing:.02em;color:var(--text-muted);text-wrap:balance;margin:0;font-size:clamp(.8125rem,2vw + .375rem,.9375rem);font-weight:500}@media (width<=359px){.loading-screen__content{width:100%}.loading-screen__progress{padding-inline:.875rem}}@media (height<=32rem){.loading-screen__content{gap:.875rem}.loading-screen__header{gap:.25rem}.loading-screen__progress{gap:.75rem;padding-block:1rem}.loading-screen__label{display:none}}@media (width>=768px){.loading-screen__content{gap:clamp(2rem,5dvh,3rem);width:min(100%,26rem)}.loading-screen__progress{gap:clamp(1.25rem,3dvh,1.75rem);padding:clamp(2rem,5dvh,2.5rem) clamp(1.5rem,4vw,2rem)}}@media (width>=1280px){.loading-screen__content{width:min(100%,28rem)}}@media (prefers-reduced-motion:reduce){.loading-screen,.app-content{transition:none}.loading-screen__spinner{border-top-color:var(--brand-primary);opacity:.85;animation:none}}.logout-overlay{z-index:10000;isolation:isolate;box-sizing:border-box;min-height:100svh;padding:max(1rem, env(safe-area-inset-top,0px)) max(1rem, env(safe-area-inset-right,0px)) max(1rem, env(safe-area-inset-bottom,0px)) max(1rem, env(safe-area-inset-left,0px));pointer-events:all;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.logout-overlay--exit{animation:logout-overlay-exit .5s var(--ease-smooth) forwards}.logout-overlay--exit .logout-overlay__icon-wrap{animation:logout-icon-exit .5s var(--ease-smooth) forwards}.logout-overlay__backdrop{z-index:0;background:var(--surface-overlay);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:logout-backdrop-enter .45s var(--ease-smooth) both;position:absolute;inset:0}.logout-overlay--exit .logout-overlay__backdrop{animation:logout-backdrop-exit .5s var(--ease-smooth) forwards}.logout-overlay__content{z-index:1;border:1px solid var(--border-default);background:var(--surface);width:min(100%,20rem);box-shadow:var(--shadow-lg);text-align:center;animation:logout-card-enter .5s var(--ease-smooth) both;border-radius:clamp(.875rem,2vw,1.25rem);flex-direction:column;align-items:center;gap:clamp(.5rem,2dvh,.875rem);padding:clamp(1.5rem,5dvh,2.25rem) clamp(1.25rem,4vw,1.75rem);display:flex;position:relative}.logout-overlay--exit .logout-overlay__content{animation:logout-card-exit .45s var(--ease-smooth) forwards}.logout-overlay__icon-wrap{width:clamp(3rem,10vw,3.75rem);height:clamp(3rem,10vw,3.75rem);color:var(--brand-primary);background:var(--status-info-subtle);animation:logout-icon-pulse 1.4s var(--ease-smooth) infinite;border-radius:50%;justify-content:center;align-items:center;display:flex}.logout-overlay__title{letter-spacing:-.02em;color:var(--text-primary);text-wrap:balance;margin:0;font-size:clamp(1rem,2.5vw + .5rem,1.25rem);font-weight:700;line-height:1.3}.logout-overlay__subtitle{color:var(--text-secondary);text-wrap:balance;margin:0;font-size:clamp(.8125rem,2vw + .375rem,.9375rem);font-weight:500;line-height:1.45}body.logout-active .app-content{pointer-events:none}@keyframes logout-overlay-exit{0%{opacity:1}to{opacity:0}}@keyframes logout-backdrop-enter{0%{opacity:0;-webkit-backdrop-filter:blur();backdrop-filter:blur()}to{opacity:1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}}@keyframes logout-backdrop-exit{0%{opacity:1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}to{opacity:0;-webkit-backdrop-filter:blur();backdrop-filter:blur()}}@keyframes logout-card-enter{0%{opacity:0;transform:translateY(1rem)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes logout-card-exit{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-.75rem)scale(.96)}}@keyframes logout-icon-pulse{0%,to{transform:scale(1);box-shadow:0 0 #06f3}50%{transform:scale(1.04);box-shadow:0 0 0 .625rem #06f0}}@keyframes logout-icon-exit{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(1.25rem)scale(.85)}}@media (width<=359px){.logout-overlay__content{width:100%}}@media (height<=32rem){.logout-overlay__content{gap:.375rem;padding-block:1.25rem}.logout-overlay__subtitle{display:none}}@media (prefers-reduced-motion:reduce){.logout-overlay__backdrop,.logout-overlay__content,.logout-overlay__icon-wrap{animation:none}.logout-overlay--exit{opacity:0}}.teacher-workspace-switch-overlay{z-index:10000;isolation:isolate;box-sizing:border-box;min-height:100svh;padding:max(1rem, env(safe-area-inset-top,0px)) max(1rem, env(safe-area-inset-right,0px)) max(1rem, env(safe-area-inset-bottom,0px)) max(1rem, env(safe-area-inset-left,0px));pointer-events:all;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.teacher-workspace-switch-overlay--exit{animation:teacher-workspace-switch-overlay-exit .4s var(--ease-smooth) forwards}.teacher-workspace-switch-overlay__backdrop{z-index:0;background:var(--surface-overlay);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:teacher-workspace-switch-backdrop-enter .35s var(--ease-smooth) both;position:absolute;inset:0}.teacher-workspace-switch-overlay--exit .teacher-workspace-switch-overlay__backdrop{animation:teacher-workspace-switch-backdrop-exit .4s var(--ease-smooth) forwards}.teacher-workspace-switch-overlay__content{z-index:1;border:1px solid var(--border-default);background:var(--surface);width:min(100%,20rem);box-shadow:var(--shadow-lg);text-align:center;animation:teacher-workspace-switch-card-enter .4s var(--ease-smooth) both;border-radius:clamp(.875rem,2vw,1.25rem);flex-direction:column;align-items:center;gap:clamp(.5rem,2dvh,.875rem);padding:clamp(1.5rem,5dvh,2.25rem) clamp(1.25rem,4vw,1.75rem);display:flex;position:relative}.teacher-workspace-switch-overlay--exit .teacher-workspace-switch-overlay__content{animation:teacher-workspace-switch-card-exit .35s var(--ease-smooth) forwards}.teacher-workspace-switch-overlay__spinner{border:3px solid color-mix(in srgb, var(--brand-primary) 12%, var(--surface-muted));border-top-color:var(--brand-primary);border-radius:50%;width:clamp(2.75rem,10vw,3.25rem);height:clamp(2.75rem,10vw,3.25rem);animation:.75s linear infinite teacher-workspace-switch-spin}.teacher-workspace-switch-overlay__title{letter-spacing:-.02em;color:var(--text-primary);text-wrap:balance;margin:0;font-size:clamp(1rem,2.5vw + .5rem,1.25rem);font-weight:700;line-height:1.3}.teacher-workspace-switch-overlay__subtitle{color:var(--text-secondary);text-wrap:balance;margin:0;font-size:clamp(.8125rem,2vw + .375rem,.9375rem);font-weight:500;line-height:1.45}body.workspace-switch-active .app-content{pointer-events:none}@keyframes teacher-workspace-switch-overlay-exit{0%{opacity:1}to{opacity:0}}@keyframes teacher-workspace-switch-backdrop-enter{0%{opacity:0;-webkit-backdrop-filter:blur();backdrop-filter:blur()}to{opacity:1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}}@keyframes teacher-workspace-switch-backdrop-exit{0%{opacity:1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}to{opacity:0;-webkit-backdrop-filter:blur();backdrop-filter:blur()}}@keyframes teacher-workspace-switch-card-enter{0%{opacity:0;transform:translateY(1rem)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes teacher-workspace-switch-card-exit{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-.75rem)scale(.96)}}@keyframes teacher-workspace-switch-spin{to{transform:rotate(360deg)}}@media (width<=359px){.teacher-workspace-switch-overlay__content{width:100%}}@media (height<=32rem){.teacher-workspace-switch-overlay__content{gap:.375rem;padding-block:1.25rem}.teacher-workspace-switch-overlay__subtitle{display:none}}@media (prefers-reduced-motion:reduce){.teacher-workspace-switch-overlay__backdrop,.teacher-workspace-switch-overlay__content,.teacher-workspace-switch-overlay__spinner{animation:none}.teacher-workspace-switch-overlay--exit{opacity:0}.teacher-workspace-switch-overlay__spinner{border-top-color:var(--brand-primary);opacity:.85}}:root,[data-theme=light]{--brand-primary:#06f;--brand-primary-hover:#0052cc;--brand-primary-active:#003d99;--brand-on-primary:#fff;--brand-accent:#8b5cf6;--brand-accent-hover:#7040d9;--brand-on-accent:#fff;--surface-background:#f8fafc;--surface:#fff;--surface-muted:#f1f5f9;--surface-elevated:#fff;--surface-overlay:#0a0e1780;--border-default:#cbd5e1;--border-strong:#94a3b8;--border-focus:#06f;--text-primary:#0f172a;--text-secondary:#334155;--text-muted:#475569;--text-inverse:#fff;--text-link:#0052cc;--text-link-hover:#004099;--status-success:#10b981;--status-success-subtle:#d1fae5;--status-warning:#f59e0b;--status-warning-subtle:#fef3c7;--status-danger:#ef4444;--status-danger-subtle:#fee2e2;--status-info:#3b82f6;--status-info-subtle:#dbeafe;--shadow-sm:0 1px 3px #0f172a14;--shadow-md:0 8px 24px #0f172a1a;--shadow-lg:0 16px 40px #0f172a1f;--shadow-glow:0 4px 16px #06f3;--gradient-hero:none;--gradient-brand:var(--brand-primary);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ease-smooth:cubic-bezier(.4, 0, .2, 1);--duration-fast:.15s;--duration-normal:.28s;--scrollbar-size:.375rem;--scrollbar-thumb:color-mix(in srgb, var(--brand-accent) 45%, var(--border-default));--scrollbar-track:transparent;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--brand-primary:#66a3ff;--brand-primary-hover:#99c2ff;--brand-primary-active:#cce0ff;--brand-on-primary:#0a0e17;--brand-accent:#be9aff;--brand-accent-hover:#d4bcff;--brand-on-accent:#0a0e17;--surface-background:#0a0e17;--surface:#111827;--surface-muted:#1a2332;--surface-elevated:#1e293b;--surface-overlay:#000000a6;--border-default:#243044;--border-strong:#2d3748;--border-focus:#66a3ff;--text-primary:#f8fafc;--text-secondary:#e2e8f0;--text-muted:#94a3b8;--text-inverse:#0a0e17;--text-link:#99c2ff;--text-link-hover:#cce0ff;--status-success:#6ee7b7;--status-success-subtle:#10b98126;--status-warning:#fcd34d;--status-warning-subtle:#f59e0b26;--status-danger:#fca5a5;--status-danger-subtle:#ef444426;--status-info:#93c5fd;--status-info-subtle:#3b82f626;--shadow-sm:0 1px 3px #0006;--shadow-md:0 8px 24px #00000073;--shadow-lg:0 16px 48px #00000080;--shadow-glow:0 0 28px #66a3ff66;--gradient-hero:linear-gradient(135deg, #0066ff26 0%, #8b5cf61f 50%, #0066ff0f 100%);--gradient-brand:linear-gradient(135deg, #3385ff 0%, #a978ff 100%);--scrollbar-thumb:color-mix(in srgb, var(--brand-accent) 45%, var(--border-default));--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme]){--brand-primary:#66a3ff;--brand-primary-hover:#99c2ff;--brand-primary-active:#cce0ff;--brand-on-primary:#0a0e17;--brand-accent:#be9aff;--brand-accent-hover:#d4bcff;--brand-on-accent:#0a0e17;--surface-background:#0a0e17;--surface:#111827;--surface-muted:#1a2332;--surface-elevated:#1e293b;--surface-overlay:#000000a6;--border-default:#243044;--border-strong:#2d3748;--border-focus:#66a3ff;--text-primary:#f8fafc;--text-secondary:#e2e8f0;--text-muted:#94a3b8;--text-inverse:#0a0e17;--text-link:#99c2ff;--text-link-hover:#cce0ff;--status-success:#6ee7b7;--status-success-subtle:#10b98126;--status-warning:#fcd34d;--status-warning-subtle:#f59e0b26;--status-danger:#fca5a5;--status-danger-subtle:#ef444426;--status-info:#93c5fd;--status-info-subtle:#3b82f626;--shadow-sm:0 1px 3px #0006;--shadow-md:0 8px 24px #00000073;--shadow-lg:0 16px 48px #00000080;--shadow-glow:0 0 28px #66a3ff66;--gradient-hero:linear-gradient(135deg, #0066ff26 0%, #8b5cf61f 50%, #0066ff0f 100%);--gradient-brand:linear-gradient(135deg, #3385ff 0%, #a978ff 100%);--scrollbar-thumb:color-mix(in srgb, var(--brand-accent) 45%, var(--border-default));--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}::-webkit-scrollbar{width:var(--scrollbar-size);height:var(--scrollbar-size)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:999px}::-webkit-scrollbar-track{background:var(--scrollbar-track)}select,.portal-select{--select-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6L8 10L12 6' stroke='%23475569' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");--select-focus-ring:rgb(from var(--brand-primary) r g b / .22);border:1px solid var(--border-default);background-color:var(--surface);background-image:var(--select-chevron);width:100%;min-width:0;min-height:2.75rem;color:var(--text-primary);font:inherit;cursor:pointer;transition:border-color var(--duration-fast) var(--ease-smooth), background-color var(--duration-fast) var(--ease-smooth), box-shadow var(--duration-fast) var(--ease-smooth), color var(--duration-fast) var(--ease-smooth);appearance:none;background-position:right .4375rem center;background-repeat:no-repeat;background-size:.875rem;border-radius:.75rem;padding:.625rem 2.125rem .625rem .875rem;font-size:clamp(.875rem,1.8vw,.9375rem);line-height:1.35;display:block}[data-theme=dark] select,[data-theme=dark] .portal-select{--select-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6L8 10L12 6' stroke='%2394a3b8' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}@media (prefers-color-scheme:dark){:root:not([data-theme]) select,:root:not([data-theme]) .portal-select{--select-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6L8 10L12 6' stroke='%2394a3b8' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}}select::-ms-expand{display:none}.portal-select::-ms-expand{display:none}select:hover:not(:disabled),.portal-select:hover:not(:disabled){border-color:var(--border-strong);background-color:var(--surface-muted)}select:active:not(:disabled),.portal-select:active:not(:disabled){border-color:var(--border-focus);background-color:color-mix(in srgb, var(--surface-muted) 70%, var(--surface))}select:focus,.portal-select:focus{outline:none}select:focus-visible,.portal-select:focus-visible{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--select-focus-ring)}select:disabled,.portal-select:disabled{opacity:.62;cursor:not-allowed;background-color:var(--surface-muted);color:var(--text-muted)}select:required:invalid,.portal-select:required:invalid{color:var(--text-muted)}select:required:valid,.portal-select:required:valid{color:var(--text-primary)}select option,.portal-select option{background-color:var(--surface);color:var(--text-primary);font:inherit;padding:.5rem}select option:checked,.portal-select option:checked{background-color:color-mix(in srgb, var(--brand-primary) 18%, var(--surface));color:var(--text-primary);font-weight:600}select option:disabled,.portal-select option:disabled{color:var(--text-muted)}select optgroup,.portal-select optgroup{color:var(--text-secondary);font-weight:600}@media (prefers-reduced-motion:reduce){select,.portal-select{transition:none}}@media (width<=359px){select,.portal-select:not(.portal-select__trigger){background-position:right .375rem center;min-height:2.625rem;padding-inline:.75rem 1.875rem}}.portal-checkbox{--checkbox-size:1.25rem;--checkbox-radius:.4375rem;--checkbox-focus-ring:rgb(from var(--brand-primary) r g b / .22);--checkbox-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.5 8.25L6.75 11.5L12.5 4.75' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");min-height:2.75rem;color:var(--text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:.75rem;padding-block:.375rem;font-size:clamp(.875rem,1.8vw,.9375rem);line-height:1.4;display:inline-flex}.portal-checkbox__text{flex:1;min-width:0;padding-top:.0625rem}.portal-checkbox input[type=checkbox],input[type=checkbox].portal-checkbox__input{appearance:none;width:var(--checkbox-size);height:var(--checkbox-size);border:1.5px solid var(--border-strong);border-radius:var(--checkbox-radius);background-color:var(--surface);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-smooth), background-color var(--duration-fast) var(--ease-smooth), box-shadow var(--duration-fast) var(--ease-smooth), transform var(--duration-fast) var(--ease-smooth);background-position:50%;background-repeat:no-repeat;background-size:.875rem;flex-shrink:0;place-content:center;margin:0;display:grid}.portal-checkbox:hover input[type=checkbox]:not(:disabled),.portal-checkbox input[type=checkbox]:not(:disabled):hover{border-color:var(--border-focus);background-color:var(--surface-muted)}.portal-checkbox input[type=checkbox]:active:not(:disabled){transform:scale(.94)}.portal-checkbox input[type=checkbox]:checked{border-color:var(--brand-primary);background-color:var(--brand-primary);background-image:var(--checkbox-check)}.portal-checkbox input[type=checkbox]:checked:hover:not(:disabled){border-color:var(--brand-primary-hover);background-color:var(--brand-primary-hover)}.portal-checkbox input[type=checkbox]:focus{outline:none}.portal-checkbox input[type=checkbox]:focus-visible{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--checkbox-focus-ring)}.portal-checkbox input[type=checkbox]:checked:focus-visible{border-color:var(--brand-primary);box-shadow:0 0 0 3px var(--checkbox-focus-ring), inset 0 0 0 1px color-mix(in srgb, var(--brand-on-primary) 20%, transparent)}.portal-checkbox input[type=checkbox]:disabled{opacity:.58;cursor:not-allowed}.portal-checkbox:has(input[type=checkbox]:disabled){color:var(--text-muted);cursor:not-allowed}[data-theme=dark] .portal-checkbox{--checkbox-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.5 8.25L6.75 11.5L12.5 4.75' stroke='%230a0e17' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}@media (prefers-color-scheme:dark){:root:not([data-theme]) .portal-checkbox{--checkbox-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.5 8.25L6.75 11.5L12.5 4.75' stroke='%230a0e17' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}}@media (prefers-reduced-motion:reduce){.portal-checkbox input[type=checkbox]{transition:none}}@media (width<=359px){.portal-checkbox{gap:.625rem}}:root{--font-display:"Bricolage Grotesque", system-ui, sans-serif;--font-body:"Plus Jakarta Sans", system-ui, sans-serif}body{font-family:var(--font-body)}h1,h2,h3,h4,.font-display{font-family:var(--font-display);letter-spacing:-.02em;font-weight:700;line-height:1.15}h1{font-weight:800}h2{font-weight:700}h3{font-weight:600}@media print{html,body{width:100%!important;height:auto!important;margin:0!important;padding:0!important;overflow:visible!important}body.printing{--print-page-bg:#fff;--print-text:#000;--print-text-muted:#334155;--print-border:#212121;--print-cell-bg:#f7f7f7;--print-header-bg:#fff;--print-grade-ok:#1d4ed8;--print-grade-low:#b91c1c;--print-danger:#b91c1c;--print-font:"Segoe UI", "Trebuchet MS", Arial, sans-serif;--brand-primary:#06f;--text-primary:#0f172a;--text-secondary:#334155;--text-muted:#475569;--surface:#fff;--surface-muted:#f1f5f9;--surface-elevated:#fff;--surface-background:#fff;--border-default:#cbd5e1;--lightningcss-light:initial!important;--lightningcss-dark: !important;color-scheme:light!important;background:var(--print-page-bg)!important;color:var(--print-text)!important}body.printing *{visibility:hidden}body.printing .modal-overlay,body.printing .modal,body.printing .modal__body,body.printing .report-card,body.printing .schedule-grid,body.printing [id$=-printable],body.printing [id$=-printable] *{visibility:visible}body.printing .env-banner,body.printing .student-home__header,body.printing .student-home__main{display:none!important}body.printing .student-home,body.printing .app-content{background:var(--print-page-bg)!important;min-height:0!important;margin:0!important;padding:0!important;overflow:visible!important}body.printing .modal-overlay{background:0 0!important;margin:0!important;padding:0!important;animation:none!important;display:block!important;position:static!important;inset:auto!important}body.printing .modal{width:100%!important;max-width:none!important;max-height:none!important;box-shadow:none!important;background:var(--print-page-bg)!important;border:none!important;border-radius:0!important;margin:0!important;display:block!important;position:static!important;overflow:visible!important}body.printing .modal__header{display:none!important}body.printing .modal__body{color:var(--print-text)!important;background:var(--print-page-bg)!important;margin:0!important;padding:0!important;overflow:visible!important}body.printing .report-card,body.printing .schedule-grid{display:block!important}body.printing .report-card__table-wrap,body.printing .schedule-grid__table-wrap{box-shadow:none!important;background:0 0!important;border:none!important;border-radius:0!important;overflow:visible!important}body.printing [id$=-printable]{box-sizing:border-box;-webkit-print-color-adjust:exact;print-color-adjust:exact;background:var(--print-page-bg)!important;width:100%!important;max-width:100%!important;color:var(--print-text)!important;font-family:var(--print-font)!important;margin:0!important;padding:0!important;display:block!important;position:relative!important;inset:auto!important}body.printing [id$=-printable] th,body.printing [id$=-printable] td{-webkit-print-color-adjust:exact;print-color-adjust:exact;border:1px solid var(--print-border)!important;background:var(--print-cell-bg)!important;color:var(--print-text)!important}body.printing [id$=-printable] thead th{background:var(--print-header-bg)!important}body.printing [id$=-printable] tbody tr{page-break-inside:avoid;break-inside:avoid}}@keyframes page-enter-rise{0%{opacity:0;transform:translateY(1.75rem)}to{opacity:1;transform:none}}.page-enter{--page-enter-duration:.76s;--page-enter-stagger:80ms;--page-enter-ease:cubic-bezier(.22, 1, .36, 1)}.page-enter__item{animation:page-enter-rise var(--page-enter-duration) var(--page-enter-ease) both;animation-delay:var(--page-enter-delay,0s)}@media (prefers-reduced-motion:reduce){.page-enter__item{animation:none}}.page-enter__item--scroll-driven{animation:none}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:clip}body{width:100%;font-family:var(--font-body);color:var(--text-primary);background:var(--surface-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--duration-normal) var(--ease-smooth), color var(--duration-normal) var(--ease-smooth);margin:0;font-size:16px;line-height:1.55;overflow-x:clip}body.loading-active{overflow:hidden}html.scroll-locked,body.scroll-locked{overscroll-behavior:none}#root{width:100%;min-height:100svh;overflow-x:clip}a{color:var(--text-link);transition:color var(--duration-fast) var(--ease-smooth)}a:hover{color:var(--text-link-hover)}.route-guard{min-height:100svh;color:var(--text-secondary);place-items:center;padding:2rem;display:grid}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}html{scroll-behavior:auto}}
