body:before{content:"";z-index:-1;pointer-events:none;background:var(--canvas);position:fixed;inset:0}.login-page{background:0 0}.button{transition:background-color .18s var(--ease-out), border-color .18s var(--ease-out), transform .18s var(--ease-out), box-shadow .18s var(--ease-out);border-radius:999px}.button:active:not(:disabled){transform:scale(.97)}.secondary{border-color:color-mix(in srgb, var(--line) 80%, transparent);box-shadow:var(--glass-rim);background:#fffc}.icon-button{transition:background-color .15s var(--ease-out), transform .15s var(--ease-out);border-radius:14px}.icon-button:active:not(:disabled){transform:scale(.94)}input,textarea,select{border-radius:14px}.login-box,.stat-card,.role-card,.tile,.today-card,.security-intro,.access-row{border:1px solid var(--glass-border);background:var(--glass-sheen), var(--glass-card);box-shadow:var(--glass-rim), 0 0 0 1px var(--glass-edge), var(--elev-1)}.today-card{border-left-width:6px}.today-card.tone-action,.today-card.tone-warning{border-left-color:var(--warning)}.today-card.tone-success{border-left-color:var(--success)}.today-card.tone-neutral{border-left-color:var(--muted)}.access-row.granted{border-color:#86efac}.access-row.blocked{border-color:#fca5a5}.panel{background:var(--surface-strong);border:1px solid var(--glass-border);box-shadow:0 0 0 1px var(--glass-edge), var(--elev-1)}.data-panel{background:var(--paper)}.login-box{background:var(--glass-sheen), var(--glass-thick);box-shadow:var(--glass-rim), 0 0 0 1px var(--glass-edge), var(--elev-2);border-radius:28px;padding:28px}.tile,.role-card,.feed-card,.stat-card{transition:transform .22s var(--ease-out), box-shadow .22s var(--ease-out), border-color .22s var(--ease-out)}.tile{border-radius:22px}.tile:hover,.role-card:hover{box-shadow:var(--glass-rim), 0 0 0 1px var(--glass-edge), 0 14px 30px -14px var(--animation-glow);transform:translateY(-2px)}.tile:active,.role-card:active,.feed-card:active{transform:scale(.97)}.feed-card:hover{transform:translateY(-2px)}.tile-icon{background:linear-gradient(160deg, color-mix(in srgb, var(--tile,var(--primary)) 78%, #fff), var(--tile,var(--primary)));box-shadow:inset 0 1px 0 #ffffff73, 0 6px 14px -6px color-mix(in srgb, var(--tile,var(--primary)) 70%, transparent)}.stat-icon,.module-icon,.demo-icon{border-radius:12px}.quick-icon.tone-0{background:var(--primary-soft);color:var(--primary-ink)}.quick-icon.tone-1,.stat-card:nth-child(2n) .stat-icon{background:var(--secondary-soft);color:var(--secondary-ink)}.quick-icon.tone-2{background:var(--animation-soft);color:var(--ink)}.quick-icon.tone-3{background:var(--logo);color:var(--on-logo)}.topbar{border-radius:var(--radius-bar);background:var(--glass-bar);border:1px solid var(--glass-border);box-shadow:var(--glass-rim), 0 0 0 1px var(--glass-edge), var(--elev-1);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);margin:12px 16px 0;top:12px}body:has(.action-dialog[open]) .topbar{-webkit-backdrop-filter:none;backdrop-filter:none}.app-shell:has(.sidebar.open) .topbar{-webkit-backdrop-filter:none;backdrop-filter:none}@media (min-width:961px){.app-shell{grid-template-columns:284px minmax(0,1fr)}.sidebar{border:1px solid var(--glass-border);background:var(--glass-sheen), var(--glass-card);height:calc(100dvh - 24px);box-shadow:var(--glass-rim), 0 0 0 1px var(--glass-edge), var(--elev-2);border-radius:26px;margin:12px 0 12px 12px;top:12px}}.school-switch,.account-button{border:1px solid var(--glass-border);background:#fff9;border-radius:16px}.nav-item{transition:background-color .15s var(--ease-out), color .15s var(--ease-out);border-radius:14px}.nav-item:hover{background:#ffffffa6}@media (forced-colors:active){.nav-item.active{outline:2px solid highlight}}.action-dialog{border:1px solid var(--glass-border);background:var(--glass-thick);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:var(--glass-rim), 0 0 0 1px var(--glass-edge), var(--elev-3);border-radius:26px}.action-dialog::backdrop{background:#0b122073}@media (hover:hover) and (pointer:fine){.action-dialog::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}}.dialog-heading,.dialog-footer{background:#fffffff5}.dialog-body .table-scroll{background:var(--paper);border-radius:var(--radius-sm)}.toast{color:#fff;-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:inset 0 1px 0 #ffffff1f, var(--elev-2);bottom:calc(16px + env(safe-area-inset-bottom));background:#0b1220c7;border:1px solid #ffffff24;border-radius:999px}.demo-banner{border:1px solid color-mix(in srgb, var(--warning) 45%, transparent);background:color-mix(in srgb, var(--warning-soft) 88%, transparent);box-shadow:var(--glass-rim), var(--elev-1);border-radius:18px}.checkin-header{background:var(--surface-strong);border-bottom:1px solid var(--glass-edge)}.login-story:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(35% 35% at 80% 20%, var(--animation-glow), transparent 70%), radial-gradient(30% 30% at 60% 55%, color-mix(in srgb, var(--secondary) 35%, transparent), transparent 70%);animation:aurora 24s var(--ease-in-out) infinite alternate;position:absolute;inset:-20%}@keyframes aurora{to{transform:translate(-6%,4%)rotate(8deg)scale(1.08)}}.id-card:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(50% 60% at 100% 100%, color-mix(in srgb, var(--animation) 30%, transparent), transparent 70%);position:absolute;inset:0}.loader{background:conic-gradient(from 0deg, transparent 0 20%, var(--animation), var(--primary));border:0;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 4px),#000 calc(100% - 4px));mask:radial-gradient(farthest-side,#0000 calc(100% - 4px),#000 calc(100% - 4px))}.skeleton{background:linear-gradient(90deg, var(--line-soft), color-mix(in srgb, var(--animation-soft) 70%, #fff), var(--line-soft));background-size:200% 100%}@media (pointer:coarse){:root{--glass-filter:blur(16px) saturate(160%)}}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){:root{--glass-bar:#fffffff7;--glass-thick:#fff;--glass-drawer:var(--paper)}.toast{background:var(--ink)}}@supports not (color:color-mix(in srgb, red 50%, blue)){:root{--blob-1:#1e3a8a26;--blob-2:#0f766e24;--blob-3:#38bdf826;--primary-glow:#1d4ed873;--animation-glow:#38bdf866;--focus-glow:#38bdf866}}:root[data-glass=lite]{--glass-filter:none;--glass-bar:#fffffff2;--glass-thick:#fffffff7;--glass-drawer:#fffffff7}@media (prefers-reduced-transparency:reduce){:root{--glass-filter:none;--glass-bar:var(--paper);--glass-thick:var(--paper);--glass-card:var(--paper);--glass-drawer:var(--paper);--surface-strong:var(--paper);--glass-sheen:none;--glass-rim:0 0 #0000;--glass-border:var(--line);--glass-edge:transparent;--blob-1:transparent;--blob-2:transparent;--blob-3:transparent}.toast{background:var(--ink)}.action-dialog::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none}}:root[data-glass=off]{--glass-filter:none;--glass-bar:var(--paper);--glass-thick:var(--paper);--glass-card:var(--paper);--glass-drawer:var(--paper);--surface-strong:var(--paper);--glass-sheen:none;--glass-rim:0 0 #0000;--glass-border:var(--line);--glass-edge:transparent;--blob-1:transparent;--blob-2:transparent;--blob-3:transparent;--muted:var(--ink-2)}:root[data-glass=off] .toast{background:var(--ink)}:root[data-glass=off] .action-dialog::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none}:root[data-glass=off] :is(.login-story,.id-card):before{display:none}@media (prefers-contrast:more){:root{--glass-filter:none;--glass-bar:var(--paper);--glass-thick:var(--paper);--glass-card:var(--paper);--glass-drawer:var(--paper);--surface-strong:var(--paper);--glass-sheen:none;--glass-rim:0 0 #0000;--glass-border:var(--ink-2);--glass-edge:transparent;--line-soft:var(--line);--muted:var(--ink-2);--focus:var(--ink);--blob-1:transparent;--blob-2:transparent;--blob-3:transparent}:focus-visible{outline-width:4px}.login-story:before,.id-card:before{display:none}}.back-button,.topbar-mark{display:none}.topbar-mark .brand-mark{border-radius:10px;width:34px;height:34px}.tab-bar{display:none}@media (max-width:960px){.topbar{min-height:56px;box-shadow:var(--glass-rim), 0 0 0 1px var(--glass-edge), var(--elev-2);margin:8px 8px 0;padding:6px 10px;top:8px}.back-button,.topbar-mark{align-items:center;display:inline-flex}.sidebar{border:1px solid var(--glass-border);background:var(--glass-drawer);height:calc(100dvh - 16px);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);transition:transform .34s var(--ease-page), visibility .34s;box-shadow:var(--glass-rim), var(--elev-3);border-radius:26px;top:8px;left:8px;transform:translate(calc(-100% - 16px))}.sidebar-overlay{background:#0b122066}}@media (max-width:760px){.mobile-menu{display:none}.tab-bar{left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:40;background:var(--glass-bar);border:1px solid var(--glass-border);box-shadow:var(--glass-rim), 0 0 0 1px var(--glass-edge), var(--elev-2);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);border-radius:30px;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;padding:6px;display:grid;position:fixed}.tab-item{min-height:54px;color:var(--ink-2);transition:background-color .2s var(--ease-out), color .2s var(--ease-out), transform .15s var(--ease-out);border-radius:24px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:6px 2px;font-size:12px;font-weight:700;line-height:1.2;display:flex}.tab-item.active{background:color-mix(in srgb, var(--primary) 14%, #ffffffb8);color:var(--primary-ink);box-shadow:inset 0 1px #fffc}.tab-item:active{transform:scale(.94)}.page-content{padding-bottom:calc(100px + env(safe-area-inset-bottom))}.toast{bottom:calc(92px + env(safe-area-inset-bottom))}body:has(.action-dialog[open]) .tab-bar{-webkit-backdrop-filter:none;backdrop-filter:none}}.glass-toggle{color:var(--ink-2);cursor:pointer;border-radius:14px;align-items:center;gap:10px;padding:10px 12px;font-size:14px;font-weight:700;display:flex}.glass-toggle span{flex:1}.glass-toggle input{appearance:none;background:var(--line);cursor:pointer;width:46px;height:28px;min-height:28px;transition:background-color .2s var(--ease-out);border:0;border-radius:999px;flex:none;padding:0;position:relative}.glass-toggle input:after{content:"";width:22px;height:22px;transition:transform .2s var(--ease-out);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0000004d}.glass-toggle input:checked{background:var(--primary-line)}.glass-toggle input:checked:after{transform:translate(18px)}.glass-toggle input:focus{outline:3px solid var(--focus);outline-offset:2px}.gps-wait{opacity:.85;width:100%;font-weight:600;display:block}@media (max-width:960px){html{scroll-padding-top:84px}}@media (max-width:760px){html{scroll-padding-bottom:calc(100px + env(safe-area-inset-bottom))}}@media (forced-colors:active){.tab-item.active{outline-offset:-2px;outline:2px solid highlight}.glass-toggle input{border:1px solid canvastext}.glass-toggle input:after{background:canvastext}.glass-toggle input:checked{background:highlight}}
:root{--page-parallax:-28%;--title-shift:28px}.hub-view,.hub-page{gap:inherit;flex-direction:column;min-width:0;display:flex}.page-ghost{z-index:15;gap:inherit;pointer-events:none;flex-direction:column;min-width:0;margin:0;display:flex;position:fixed;overflow:hidden}.page-ghost,:root[data-page-slide]:not([data-page-slide=fade]) .hub-view{background:var(--canvas), var(--bg);background-attachment:fixed}:root[data-page-slide]:not([data-page-slide=fade]) .hub-view{z-index:16;min-height:100dvh;position:relative}:root[data-page-slide=back] .page-ghost{z-index:17}:root[data-page-slide] .main-shell{overflow-x:clip}:root[data-page-slide=tab-forward] .hub-view{animation:page-in-from-right var(--page-duration) var(--ease-page) both}:root[data-page-slide=tab-forward] .page-ghost{animation:page-out-to-left var(--page-duration) var(--ease-page) both}:root[data-page-slide=tab-back] .hub-view{animation:page-in-from-left var(--page-duration) var(--ease-page) both}:root[data-page-slide=tab-back] .page-ghost{animation:page-out-to-right var(--page-duration) var(--ease-page) both}:root[data-page-slide=forward] .hub-view{animation:page-in-from-right var(--page-duration) var(--ease-page) both;box-shadow:-14px 0 32px -14px #0b122040}:root[data-page-slide=forward] .page-ghost{animation:page-under-to-left var(--page-duration) var(--ease-page) both}:root[data-page-slide=back] .hub-view{animation:page-under-from-left var(--page-duration) var(--ease-page) both}:root[data-page-slide=back] .page-ghost{animation:page-out-to-right var(--page-duration) var(--ease-page) both;box-shadow:-14px 0 32px -14px #0b122040}:root[data-page-slide=fade] .hub-view{animation:page-fade-in .24s var(--ease-out) both}:root:is([data-page-slide=forward],[data-page-slide=tab-forward]) .topbar-title{animation:title-in-from-right var(--page-duration) var(--ease-page) both}:root:is([data-page-slide=back],[data-page-slide=tab-back]) .topbar-title{animation:title-in-from-left var(--page-duration) var(--ease-page) both}:root[data-page-slide=fade] .topbar-title{animation:title-fade-in .24s var(--ease-out) both}@keyframes page-in-from-right{0%{transform:translate(100vw)}to{transform:none}}@keyframes page-in-from-left{0%{transform:translate(-100vw)}to{transform:none}}@keyframes page-out-to-left{0%{transform:none}to{transform:translate(-100vw)}}@keyframes page-out-to-right{0%{transform:none}to{transform:translate(100vw)}}@keyframes page-under-to-left{0%{filter:none;transform:none}to{transform:translateX(var(--page-parallax));filter:brightness(.94)}}@keyframes page-under-from-left{0%{transform:translateX(var(--page-parallax));filter:brightness(.94)}to{filter:none;transform:none}}@keyframes page-fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes title-in-from-right{0%{opacity:0;transform:translateX(var(--title-shift))}to{opacity:1;transform:none}}@keyframes title-in-from-left{0%{opacity:0;transform:translateX(calc(-1 * var(--title-shift)))}to{opacity:1;transform:none}}@keyframes title-fade-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){:root[data-page-slide] .hub-view,:root[data-page-slide] .topbar-title,.page-ghost{animation:none!important}}
@media print{@page{size:A4;margin:14mm 12mm}html,body{color:#000;background:#fff!important}body:before,.sidebar,.sidebar-overlay,.topbar,.tab-bar,.demo-banner,.toast,.scope-select{display:none!important}.app-shell{min-height:0;display:block}.page-content{max-width:none;padding:0}*,:before,:after{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;box-shadow:none!important}body:has(.action-dialog[open]) .app-shell{visibility:hidden;height:0;min-height:0;overflow:hidden}.action-dialog[open]{visibility:visible;color:#000;background:#fff;border:0;border-radius:0;width:100%;max-width:none;height:auto;max-height:none;margin:0;position:absolute;inset:0 auto auto 0;overflow:visible}.action-dialog::backdrop{background:0 0}.action-dialog .dialog-footer,.action-dialog .dialog-heading .icon-button,.action-dialog .danger-confirm,.action-dialog .table-detail{display:none!important}.dialog-heading{background:0 0;border-bottom:1.5pt solid #000;padding:0 0 8pt;position:static}.dialog-body{padding:10pt 0 0}.action-dialog:has(.report-doc) .dialog-heading{display:none}.action-dialog:has(.report-doc) .dialog-body{padding:0}.table-scroll{overflow:visible}table{font-size:10pt}th{color:#000;border-bottom:1pt solid #000}.report-grades th,.report-grades td{border:.75pt solid #555;padding:4pt 6pt}.report-grades td:nth-child(6){min-width:0}.report-grades tfoot{display:table-row-group}tr,.detail-field,.success-message,.info-message,.report-bottom,.report-identity{break-inside:avoid}h2{break-after:avoid}.status,.report-kop,.brand-mark,.report-grades tfoot{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
