.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}}.login-return-overlay{--login-return-duration:1s;--login-return-ease:var(--ease-spring);z-index:9000;pointer-events:none;position:fixed;inset:0;overflow:visible}.login-return-overlay.login-page{overflow:visible}.login-return-overlay .login-page__content.login-return-overlay__content{opacity:1;filter:blur();animation:none;transform:translate(0,0)scale(1)}.login-return-overlay__shell{width:100%;min-width:0}.login-return-overlay .login-page__main{overflow:visible}.login-return-overlay.login-page--exit{animation:login-return-overlay-release var(--login-return-duration) var(--ease-smooth) forwards}.login-return-overlay.login-page--exit .login-page__bg{animation:login-return-bg-exit var(--login-return-duration) var(--login-return-ease) forwards}.login-return-overlay.login-page--exit .login-page__overlay{animation:login-return-veil-exit var(--login-return-duration) var(--login-return-ease) forwards}.login-return-overlay.login-page--exit .login-page__overlay:before,.login-return-overlay.login-page--exit .login-page__overlay:after{animation:none}.login-return-overlay.login-page--exit .login-return-overlay__card-track{will-change:transform, opacity, filter;animation:login-return-card-exit var(--login-return-duration) var(--login-return-ease) forwards}body.login-return-active{--login-return-duration:1s;--login-return-ease:var(--ease-spring)}body.login-return-active .app-content{animation:login-return-home-enter var(--login-return-duration) var(--login-return-ease) both;will-change:filter, opacity}body.login-return-active .page-enter__item{opacity:1;transform:none;animation:none!important}@keyframes login-return-card-exit{0%{opacity:1;filter:blur();transform:translate(0,0)scale(1)}22%{opacity:1;transform:translate(-.35rem)scale(1.008)}45%{opacity:1;filter:blur()}75%{opacity:1;filter:blur(2px);transform:translate(calc(72vw + .5rem))scale(.99)}to{opacity:0;filter:blur(6px);transform:translate(calc(100vw + 1.5rem))scale(.98)}}@keyframes login-return-veil-exit{0%,18%{opacity:1}to{opacity:0}}@keyframes login-return-bg-exit{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.02)}}@keyframes login-return-home-enter{0%{opacity:.12;filter:blur(16px)}45%{opacity:.72;filter:blur(6px)}55%{filter:blur()}to{opacity:1;filter:blur()}}@keyframes login-return-overlay-release{0%,94%{opacity:1;visibility:visible}to{opacity:0;visibility:hidden}}@media (prefers-reduced-motion:reduce){body.login-return-active .app-content{animation:none}.login-return-overlay.login-page--exit,.login-return-overlay.login-page--exit .login-page__bg,.login-return-overlay.login-page--exit .login-page__overlay,.login-return-overlay.login-page--exit .login-return-overlay__card-track{opacity:0;visibility:hidden;animation:none}}.login-page{background-color:var(--surface-background);flex-direction:column;min-height:100svh;display:flex;position:relative;overflow-x:clip}.login-page__bg{z-index:0;transform-origin:50%;will-change:transform;background-image:url(/images/login-background.png);background-position:50%;background-repeat:no-repeat;background-size:cover;animation:32s ease-in-out infinite alternate login-ken-burns;position:fixed;inset:-4%}.login-page__overlay{z-index:0;background:rgb(from var(--surface-background) r g b / .58);pointer-events:none;position:fixed;inset:0;overflow:hidden}.login-page__overlay:before,.login-page__overlay:after{content:"";filter:blur(72px);opacity:.28;pointer-events:none;border-radius:50%;animation:18s ease-in-out infinite login-orb-float;position:absolute}.login-page__overlay:before{background:color-mix(in srgb, var(--brand-primary) 55%, var(--surface-background));width:min(42vw,18rem);height:min(42vw,18rem);top:12%;left:-8%}.login-page__overlay:after{background:color-mix(in srgb, var(--brand-accent) 50%, var(--surface-background));width:min(36vw,14rem);height:min(36vw,14rem);animation-delay:-9s;bottom:8%;right:-6%}[data-theme=dark] .login-page__overlay{background:rgb(from var(--surface-background) r g b / .74)}.login-page__top{top:max(1rem, env(safe-area-inset-top,0px));right:max(1rem, env(safe-area-inset-right,0px));left:max(1rem, env(safe-area-inset-left,0px));z-index:3;pointer-events:none;justify-content:flex-end;display:flex;position:fixed}.login-page__top>*{pointer-events:auto}.login-page__content{z-index:1;opacity:0;will-change:transform, opacity;min-height:100svh;animation:login-launch 1s var(--ease-spring) forwards;flex-direction:column;flex:1;display:flex;position:relative}.login-page__main{z-index:1;padding:max(4.5rem, calc(env(safe-area-inset-top,0px) + 3.5rem)) max(1rem, env(safe-area-inset-right,0px)) max(1.5rem, env(safe-area-inset-bottom,0px)) max(1rem, env(safe-area-inset-left,0px));flex:1;justify-content:center;align-items:center;display:flex;position:relative}.login-page__stack{width:min(100%,26rem)}.login-page__stack>.page-enter__item{width:100%;min-width:0}.login-shell{border:1px solid color-mix(in srgb, var(--border-default) 72%, transparent);background:linear-gradient(168deg, var(--surface) 0%, color-mix(in srgb, var(--surface-muted) 88%, var(--surface)) 100%);width:100%;box-shadow:var(--shadow-lg), inset 0 1px 0 #ffffffa6;border-radius:1rem;flex-direction:column;display:flex;overflow:hidden}[data-theme=dark] .login-shell{background:linear-gradient(168deg, color-mix(in srgb, var(--surface) 92%, var(--brand-primary) 8%) 0%, var(--surface-muted) 100%);box-shadow:var(--shadow-lg), inset 0 1px 0 #ffffff0a}.login-shell__brand{border-bottom:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-muted) 88%, var(--surface));justify-content:center;align-items:center;padding:clamp(.875rem,2.5vw,1.125rem) clamp(1rem,4vw,1.5rem);display:flex}.login-shell__brand-logo{object-fit:contain;width:min(100%,16.5rem);height:auto;display:block}[data-theme=dark] .login-shell__brand-logo{filter:saturate(.72)brightness(.92)}.login-shell__body{flex-direction:column;gap:clamp(1.125rem,3dvh,1.5rem);padding:clamp(1.25rem,4vw,1.75rem);display:flex}.login-shell__identity{text-align:center;flex-direction:column;align-items:center;gap:clamp(.75rem,2dvh,1rem);display:flex}.login-shell__intro{flex-direction:column;gap:.375rem;max-width:22rem;display:flex}.login-shell__title{color:var(--text-primary);text-wrap:balance;margin:0;font-size:clamp(1.0625rem,2.5vw + .5rem,1.3125rem);font-weight:500;line-height:1.4}.login-shell__title strong{background:linear-gradient(90deg, var(--brand-primary) 0%, var(--brand-accent) 50%, var(--brand-primary) 100%);color:#0000;background-size:200%;-webkit-background-clip:text;background-clip:text;font-weight:700;animation:8s linear infinite login-gradient-shift}.login-shell__subtitle{color:var(--text-secondary);text-wrap:balance;margin:0;font-size:clamp(.8125rem,1.5vw + .5rem,.9375rem);line-height:1.5}.login-shell__form{flex-direction:column;gap:.875rem;display:flex}.login-shell__actions{flex-direction:column;gap:.375rem;margin-top:.25rem;display:flex}.login-shell__error{color:var(--status-danger-text,#991b1b);background:color-mix(in srgb, var(--status-danger,#ef4444) 12%, var(--surface));border:1px solid color-mix(in srgb, var(--status-danger,#ef4444) 24%, var(--border-default));border-radius:.5rem;margin:0;padding:.75rem .875rem;font-size:.875rem}.login-shell__switch-account{font:inherit;color:var(--brand-primary);cursor:pointer;text-align:center;min-height:2.75rem;transition:background-color var(--duration-fast) var(--ease-smooth);background:0 0;border:0;border-radius:.5rem;margin:0;padding:.5rem .75rem;font-size:.875rem;font-weight:600}.login-shell__switch-account:hover:not(:disabled){background:color-mix(in srgb, var(--brand-primary) 8%, transparent)}.login-shell__switch-account:disabled{opacity:.6;cursor:not-allowed}.login-shell__form .button--primary{isolation:isolate;box-shadow:var(--shadow-sm), 0 0 0 1px rgb(from var(--brand-primary) r g b / .08)}.login-shell__form .button--primary:hover:not(:disabled){box-shadow:var(--shadow-md), 0 0 0 1px rgb(from var(--brand-primary) r g b / .14), 0 8px 20px rgb(from var(--brand-primary) r g b / .22)}.login-shell__form .input-field{transition:transform var(--duration-normal) var(--ease-spring)}.login-shell__form .input-field:focus-within{transform:translateY(-2px)}.login-shell__form .input-field__input{transition:border-color var(--duration-fast) var(--ease-smooth), box-shadow var(--duration-fast) var(--ease-smooth)}.login-shell__form .input-field:focus-within .input-field__input{box-shadow:0 0 0 3px rgb(from var(--brand-primary) r g b / .2), 0 8px 20px rgb(from var(--brand-primary) r g b / .08)}.login-shell__footer{flex-direction:column;gap:.75rem;padding-top:.25rem;display:flex}.login-shell__divider{color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:.75rem;margin:0;font-size:.75rem;font-weight:600;display:flex}.login-shell__divider:before,.login-shell__divider:after{content:"";background:var(--border-default);flex:1;height:1px}.login-shell__home-link{border:1px solid var(--border-default);background:var(--surface-muted)}.login-shell__home-link:hover:not(:disabled){background:var(--surface);border-color:var(--border-strong)}.login-shell__home-link svg{transition:transform var(--duration-normal) var(--ease-spring)}.login-shell__home-link:hover svg{transform:translate(-3px)}.login-shell__privacy{text-align:center;color:var(--text-muted);margin:0;font-size:.75rem;line-height:1.45}@media (width<=359px){.login-shell__brand{padding-inline:.875rem}.login-shell__brand-logo{width:100%}.login-shell__body{padding-inline:1rem}}@media (height<=640px){.login-page__main{padding-top:max(4rem, env(safe-area-inset-top,0px));align-items:flex-start}.login-shell__body{gap:1rem;padding-block:1rem}.login-saved-account-avatar{--login-avatar-size:5.5rem;margin-bottom:0}}@keyframes login-launch{0%{opacity:0;filter:blur(6px);transform:translate(calc(-100vw - 1.5rem))scale(.98)}55%{filter:blur()}78%{transform:translate(.35rem)scale(1.008)}to{opacity:1;filter:blur();transform:translate(0,0)scale(1)}}@keyframes login-ken-burns{0%{transform:scale(1)translate(0,0)}to{transform:scale(1.05)translate(-1.2%,-.6%)}}@keyframes login-orb-float{0%,to{transform:translate(0,0)scale(1)}50%{transform:translate(2%,-3%)scale(1.06)}}@keyframes login-gradient-shift{to{background-position:200%}}@media (prefers-reduced-motion:reduce){.login-page__bg,.login-page__overlay:before,.login-page__overlay:after,.login-shell__title strong{animation:none}.login-page__content{opacity:1;filter:none;animation:none;transform:none}.login-shell__form .input-field:focus-within{transform:none}}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .login-shell{background:linear-gradient(168deg, color-mix(in srgb, var(--surface) 92%, var(--brand-primary) 8%) 0%, var(--surface-muted) 100%);box-shadow:var(--shadow-lg), inset 0 1px 0 #ffffff0a}:root:not([data-theme=light]) .login-shell__brand-logo{filter:saturate(.72)brightness(.92)}}@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}}
