:root{--m-font:"Somar Rounded", "Segoe UI", system-ui, sans-serif;--m-chrome-bg:#116ee9;--m-chrome-fg:#fff;--m-lang-on-bg:#fff;--m-lang-on-fg:#0740aa;--m-page:#f6f8fc;--m-surface:#fff;--m-tint:#eaf2ff;--m-ink:#0a1b3d;--m-ink-2:#2a3a5c;--m-ink-3:#5f6c87;--m-heading:#0740aa;--m-line:#e4e8f0;--m-line-soft:#0740aa1f;--m-nav-active:#116ee9;--m-on-nav:#fff;--m-accent:#f06200;--m-accent-ink:#bb4b00;--m-cta-bg:#f06200;--m-cta-fg:#fff;--m-cta-sub:#401e00;--m-cta-shadow:0 14px 32px #f76b0047;--m-link:#116ee9;--m-ok:#1db36a;--m-ok-soft:#e6f6ee;--m-ok-bg:#e6f6ee;--m-ok-ink:#0b6b41;--m-warn:#f76b00;--m-warn-soft:#fff1e3;--m-warn-ink:#8a3d00;--m-warn-bg:#fff3e6;--m-risk:#d93840;--m-risk-bg:#fde8e9;--m-risk-ink:#96181f;--m-info:#116ee9;--m-info-bg:#eaf2ff;--m-info-ink:#0740aa;--m-sky:#0090d6;--m-radius-card:24px;--m-radius-ctrl:999px;--m-radius-btn:999px;--m-radius-pill:999px;--m-pad:18px;--m-gap:16px;--m-shadow:0 6px 18px #0740aa14, 0 2px 4px #0740aa0a;--m-t-xs:12px;--m-t-sm:14px;--m-t-base:16px;--m-t-md:18px;--m-t-lg:20px;--m-t-xl:24px;--m-t-2xl:30px;--m-t-huge:44px;--m-ls:normal;--m-ws:normal;--m-lh:1.5}:root[data-text=A\+]{--m-t-xs:13px;--m-t-sm:16px;--m-t-base:18px;--m-t-md:20px;--m-t-lg:23px;--m-t-xl:27px;--m-t-2xl:34px;--m-t-huge:50px}:root[data-text="A++"]{--m-t-xs:15px;--m-t-sm:18px;--m-t-base:20px;--m-t-md:23px;--m-t-lg:26px;--m-t-xl:30px;--m-t-2xl:38px;--m-t-huge:56px}:root[data-mode=dark]{--m-page:#0b1220;--m-surface:#151e30;--m-ink:#eaf0fa;--m-ink-2:#b9c4d8;--m-ink-3:#8895ae;--m-line:#2b3651;--m-tint:#1a2438;--m-heading:#bfd4ff;--m-chrome-bg:#080f1d;--m-nav-active:#8fb6ff;--m-on-nav:#0b1220;--m-shadow:none;--m-ok:#3ed18a;--m-ok-ink:#7fe9b4;--m-ok-soft:#12301f;--m-ok-bg:#12301f;--m-warn:#ff9440;--m-warn-ink:#ffc08a;--m-warn-soft:#3a2410;--m-warn-bg:#3a2410;--m-risk:#ff6b73;--m-risk-ink:#ffa8ad;--m-risk-bg:#3a1518;--m-info-ink:#bfd4ff;--m-info-bg:#16233b;--m-accent-ink:#ff9440;--m-sky:#05acff}:root[data-mode=hc]{--m-page:#fff;--m-surface:#fff;--m-ink:#000;--m-ink-2:#000;--m-ink-3:#000;--m-line:#000;--m-tint:#fff;--m-heading:#000;--m-nav-active:#000;--m-on-nav:#fff;--m-chrome-bg:#000;--m-shadow:none;--m-cta-shadow:none;--m-ok-ink:#000;--m-warn-ink:#000;--m-risk-ink:#000;--m-info-ink:#000;--m-sky:#000;--m-accent-ink:#000;--m-cta-sub:#000;--m-ok-soft:#fff;--m-ok-bg:#fff;--m-warn-soft:#fff;--m-warn-bg:#fff;--m-risk-bg:#fff;--m-info-bg:#fff}:root[data-dyslexia=true]{--m-ls:.06em;--m-ws:.14em;--m-lh:1.8}@font-face{font-family:Somar Rounded;src:url(/fonts/SomarRounded-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Somar Rounded;src:url(/fonts/SomarRounded-SemiBold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}*,:before,:after{box-sizing:border-box}html,body,#root{min-block-size:100%;margin:0;padding:0}body{background:var(--m-page);color:var(--m-ink);font-family:var(--m-font);font-size:var(--m-t-base);line-height:var(--m-lh);letter-spacing:var(--m-ls);word-spacing:var(--m-ws);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;letter-spacing:inherit;word-spacing:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none;padding:0}a{color:var(--m-link)}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4,strong,b{font-weight:600}:focus-visible{outline:3px solid var(--m-nav-active);outline-offset:2px}.m-card{background:var(--m-surface);border:1px solid var(--m-line);border-radius:var(--m-radius-card);box-shadow:var(--m-shadow);padding:var(--m-pad)}.m-hit{min-block-size:44px}.appbar{background:var(--m-chrome-bg);min-block-size:52px;color:var(--m-chrome-fg);flex-wrap:wrap;align-items:center;gap:10px;padding-block:6px;padding-inline:16px;display:flex}.appbar__title{font-size:var(--m-t-lg);font-weight:600}.appbar__partner{border-radius:var(--m-radius-pill);background:#fff;align-items:center;padding-block:3px;padding-inline:10px;display:inline-flex}.appbar__partner img{block-size:16px;inline-size:auto;display:block}.appbar__role{border-radius:var(--m-radius-pill);font-size:var(--m-t-xs);background:#0740aa4d;padding-block:4px;padding-inline:12px}.appbar__spacer{flex:1}.appbar__conn{font-size:var(--m-t-xs);align-items:center;gap:6px;display:inline-flex}.appbar__conn-dot{background:var(--m-ok);border-radius:999px;block-size:8px;inline-size:8px}.appbar__conn-dot--off{background:var(--m-warn)}.appbar__lang{border-radius:var(--m-radius-pill);background:var(--m-lang-on-bg);min-block-size:32px;color:var(--m-lang-on-fg);font-size:var(--m-t-sm);padding-inline:14px;font-weight:600}.appbar__iconbtn{block-size:32px;inline-size:32px;color:var(--m-chrome-fg);border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.appbar__iconbtn:hover{background:#ffffff26}.sheet-backdrop{z-index:50;background:#040e2680;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.sheet{background:var(--m-surface);color:var(--m-ink);border:1px solid var(--m-line);border-radius:var(--m-radius-card);box-shadow:var(--m-shadow);max-block-size:85vh;inline-size:100%;max-inline-size:440px;padding:var(--m-pad);overflow-y:auto}.sheet__head{justify-content:space-between;align-items:center;gap:12px;margin-block-end:12px;display:flex}.sheet__title{color:var(--m-heading);font-size:var(--m-t-lg);font-weight:600}.sheet__close{border:1px solid var(--m-line);border-radius:999px;justify-content:center;align-items:center;block-size:40px;inline-size:40px;display:inline-flex}.sheet__group{margin-block-end:14px}.sheet__label{font-size:var(--m-t-sm);margin-block-end:6px;font-weight:600}.sheet__note{font-size:var(--m-t-xs);color:var(--m-ink-3);margin-block-start:6px}.sheet__qa{background:var(--m-tint);border-radius:16px;margin-block-end:10px;padding:12px}.sheet__q{font-weight:600;font-size:var(--m-t-sm);margin-block-end:4px}.sheet__a{font-size:var(--m-t-sm);color:var(--m-ink-2)}.pill-row{flex-wrap:wrap;gap:8px;display:flex}.pill{border-radius:var(--m-radius-pill);border:1px solid var(--m-line);background:var(--m-surface);min-block-size:40px;color:var(--m-ink);font-size:var(--m-t-sm);align-items:center;gap:6px;padding-inline:14px;display:inline-flex}.pill[aria-pressed=true]{background:var(--m-nav-active);border-color:var(--m-nav-active);color:var(--m-on-nav);font-weight:600}.btn-primary{border-radius:var(--m-radius-btn);background:var(--m-accent-ink);min-block-size:44px;color:var(--m-cta-fg);box-shadow:var(--m-cta-shadow);justify-content:center;align-items:center;gap:8px;padding-inline:20px;font-weight:600;display:inline-flex}.btn-secondary{border-radius:var(--m-radius-btn);border:1px solid var(--m-line);background:var(--m-surface);min-block-size:44px;color:var(--m-ink);justify-content:center;align-items:center;gap:8px;padding-inline:20px;font-weight:600;display:inline-flex}.tabstrip{background:var(--m-surface);border-block-end:1px solid var(--m-line);gap:4px;padding-inline:16px;display:flex;overflow-x:auto}.tabstrip__item{min-block-size:44px;font-size:var(--m-t-sm);color:var(--m-ink-2);white-space:nowrap;border-block-end:3px solid #0000;align-items:center;gap:8px;padding-inline:14px;display:inline-flex}.tabstrip__item[aria-current=page]{color:var(--m-heading);border-block-end-color:var(--m-nav-active);font-weight:600}@media (width<=520px){:root{--m-bottomnav-h:62px}body:has(.tabstrip){padding-block-end:calc(var(--m-bottomnav-h) + env(safe-area-inset-bottom))}.tabstrip{z-index:30;padding-inline:6px;padding-block:4px calc(4px + env(safe-area-inset-bottom));border-block-end:none;border-block-start:1px solid var(--m-line);gap:2px;position:fixed;inset-block-end:0;inset-inline:0;overflow-x:hidden;box-shadow:0 -6px 18px #0740aa1a}.tabstrip__item{min-inline-size:0;min-block-size:calc(var(--m-bottomnav-h) - 8px);font-size:var(--m-t-xs);border-block-end:none;border-radius:16px;flex-direction:column;flex:1 1 0;justify-content:center;gap:3px;padding-inline:4px;position:relative}.tabstrip__item svg{flex:none;block-size:22px;inline-size:22px}.tabstrip__item[aria-current=page]{background:var(--m-tint);border-block-end:none}.tabstrip__item .chip{position:absolute;inset-block-start:2px;inset-inline-start:calc(50% + 8px)}}.listbox{inline-size:100%;max-inline-size:340px;position:relative}.listbox__button{text-align:start;background:var(--m-surface);min-block-size:48px;inline-size:100%;color:var(--m-heading);border:2px solid var(--m-line);border-radius:var(--m-radius-card);cursor:pointer;align-items:center;gap:10px;padding-block:8px;padding-inline:16px 14px;display:flex}.listbox__button:hover{border-color:var(--m-nav-active)}.listbox__button>svg,.listbox__button>span:last-child:not(.listbox__value){color:var(--m-ink-2);flex:none;margin-inline-start:auto}.listbox__value{flex-direction:column;gap:1px;min-inline-size:0;display:flex}.listbox__label{font-size:var(--m-t-sm);color:var(--m-heading);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.listbox__meta{font-size:var(--m-t-xs);color:var(--m-ink-3);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.listbox__panel{z-index:40;background:var(--m-surface);border:2px solid var(--m-line);border-radius:var(--m-radius-card);max-block-size:320px;box-shadow:var(--m-shadow);flex-direction:column;gap:2px;margin:0;padding:6px;list-style:none;display:flex;position:absolute;inset-block-start:calc(100% + 6px);inset-inline:0;overflow-y:auto}.listbox__option{cursor:pointer;border-radius:14px;flex-direction:column;flex:none;justify-content:center;gap:2px;min-block-size:44px;padding-block:8px;padding-inline:12px;display:flex}.listbox__row{justify-content:space-between;align-items:center;gap:8px;display:flex}.listbox__row>svg,.listbox__row>span:last-child:not(.listbox__label){color:var(--m-nav-active);flex:none}.listbox__option--active{background:var(--m-tint)}.listbox__option[aria-selected=true] .listbox__label{color:var(--m-nav-active)}.teacher-page{padding:var(--m-pad);gap:var(--m-gap);flex-wrap:wrap;align-items:flex-start;display:flex}.teacher-main{gap:var(--m-gap);flex-direction:column;flex:320px;min-inline-size:0;display:flex}.teacher-side{gap:var(--m-gap);min-inline-size:280px;max-block-size:calc(100vh - var(--m-pad) * 2);flex-direction:column;flex:0 300px;display:flex;position:sticky;inset-block-start:var(--m-pad);overflow-y:auto}.classbar{background:var(--m-tint);padding-block:10px;padding-inline:var(--m-pad);font-size:var(--m-t-sm);border-block-end:1px solid var(--m-line);flex-wrap:wrap;align-items:center;gap:10px;display:flex}.classbar__lead{color:var(--m-ink-2)}.classbar__school{color:var(--m-ink-2);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;min-inline-size:0;font-weight:600;display:inline-flex;overflow:hidden}.classbar__name{white-space:nowrap;align-items:center;gap:6px;font-weight:600;display:inline-flex}.classbar__meta{color:var(--m-ink-3)}.classbar__switch{border-radius:var(--m-radius-ctrl);background:var(--m-surface);border:1px solid var(--m-line);min-block-size:36px;font-weight:600;font-size:var(--m-t-xs);white-space:nowrap;color:inherit;align-items:center;gap:6px;padding-block:6px;padding-inline:12px;display:inline-flex}.students-inline-details{display:none}@media (width<=520px){.students-inline-details{display:block}}.classbar__picker{border-block-start:1px solid var(--m-line);flex-wrap:wrap;flex-basis:100%;gap:14px;margin-block-start:4px;padding-block-start:10px;display:flex}.picker-field{flex-direction:column;flex:240px;gap:6px;min-inline-size:0;max-inline-size:420px;display:flex}.picker-field__label{font-size:var(--m-t-xs);color:var(--m-ink-3);font-weight:600}.picker-pills{flex-wrap:wrap;gap:8px;display:flex}.classcard{border-radius:var(--m-radius-card);text-align:start;background:var(--m-surface);min-block-size:44px;color:var(--m-ink-2);border:2px solid var(--m-line);flex-direction:column;align-items:flex-start;gap:2px;padding-block:8px;padding-inline:16px;display:inline-flex}.classcard[aria-pressed=true]{background:var(--m-nav-active);color:var(--m-on-nav);border-color:var(--m-nav-active)}.classcard__name{font-size:var(--m-t-sm);white-space:nowrap;align-items:center;gap:6px;font-weight:600;display:inline-flex}.classcard__meta{font-size:var(--m-t-xs);opacity:.8;white-space:nowrap}.eyebrow{font-size:var(--m-t-sm);letter-spacing:.08em;color:var(--m-accent-ink);font-weight:600;display:inline-block}.eyebrow--muted{color:var(--m-ink-3)}.page-h1{font-size:var(--m-t-2xl);color:var(--m-heading);margin:0;font-weight:600;line-height:1.15}.read-chip{border-radius:var(--m-radius-ctrl);background:var(--m-surface);border:1px solid var(--m-line);min-block-size:36px;font-size:var(--m-t-xs);white-space:nowrap;align-items:center;gap:6px;padding-block:6px;padding-inline:12px;font-weight:600;display:inline-flex}.tile{text-align:start;border-radius:var(--m-radius-card);inline-size:100%;padding-block:22px;padding-inline:var(--m-pad);cursor:pointer;align-items:center;gap:14px;min-block-size:88px;display:flex}.tile--cta{background:var(--m-accent-ink);color:var(--m-cta-fg);box-shadow:var(--m-cta-shadow);border:0}.tile--outline{background:var(--m-surface);color:var(--m-ink);border:2px solid var(--m-nav-active);box-shadow:var(--m-shadow)}.tile__icon{border-radius:var(--m-radius-ctrl);flex:none;justify-content:center;align-items:center;block-size:52px;inline-size:52px;display:flex}.tile--cta .tile__icon{background:#fff3}.tile--outline .tile__icon{background:var(--m-tint);color:var(--m-nav-active)}.tile__title{font-size:var(--m-t-xl);font-weight:600;display:block}.tile__sub{font-size:var(--m-t-sm);margin-block-start:4px;display:block}.statcard{background:var(--m-surface);border:1px solid var(--m-line);border-radius:var(--m-radius-card);padding:var(--m-pad);box-shadow:var(--m-shadow)}.statcard__block{border-left:4px solid var(--m-heading);flex-direction:column;gap:6px;padding-left:18px;display:flex}.statcard__value{font-size:var(--m-t-huge);letter-spacing:-.01em;font-weight:600;line-height:1}.statcard__label{font-size:var(--m-t-sm);color:var(--m-ink-3);max-inline-size:200px}.statcard__sub{font-size:var(--m-t-xs);color:var(--m-ink-3);margin-block-start:8px}.roster{flex-direction:column;gap:10px;display:flex}.roster-row{background:var(--m-surface);border:1px solid var(--m-line);border-radius:var(--m-radius-card);padding-block:12px;padding-inline:var(--m-pad);box-shadow:var(--m-shadow);flex-wrap:wrap;align-items:center;gap:12px;display:flex}.roster-row--open{border:2px solid var(--m-nav-active);background:var(--m-tint)}.seat-circle{border-radius:var(--m-radius-ctrl);background:var(--m-tint);block-size:34px;min-inline-size:34px;color:var(--m-ink-2);font-size:var(--m-t-sm);flex:none;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.roster-row__namecol{flex:140px;min-inline-size:0}.roster-row__name{font-size:var(--m-t-base);flex-wrap:wrap;align-items:center;gap:7px;font-weight:600;display:flex}.roster-row__state{font-size:var(--m-t-sm);margin-block-start:2px;font-weight:600}.status-btn{border-radius:var(--m-radius-btn);min-block-size:44px;min-inline-size:44px;font-size:var(--m-t-sm);background:var(--m-surface);color:var(--m-ink-2);border:2px solid var(--m-line);align-items:center;gap:6px;padding-block:10px;padding-inline:14px;font-weight:600;display:inline-flex}.status-btn[aria-pressed=true][data-status=present]{background:var(--m-ok);border-color:var(--m-ok);color:var(--m-on-nav)}.status-btn[aria-pressed=true][data-status=late]{background:var(--m-warn);border-color:var(--m-warn);color:var(--m-on-nav)}.status-btn[aria-pressed=true][data-status=absent]{background:var(--m-risk);border-color:var(--m-risk);color:var(--m-on-nav)}:root[data-mode=hc] .status-btn[aria-pressed=true]{background:var(--m-nav-active);border-color:var(--m-nav-active);color:var(--m-on-nav)}.soft-chip{border-radius:var(--m-radius-pill);min-block-size:36px;font-weight:600;font-size:var(--m-t-sm);align-items:center;gap:6px;padding-block:6px;padding-inline:13px;display:inline-flex}.soft-chip--present{background:var(--m-ok-bg);color:var(--m-ok-ink)}.soft-chip--late{background:var(--m-warn-bg);color:var(--m-warn-ink)}.soft-chip--absent{background:var(--m-risk-bg);color:var(--m-risk-ink)}.soft-chip--excused{background:var(--m-info-bg);color:var(--m-info-ink)}.live-bar{z-index:5;background:var(--m-surface);border:1px solid var(--m-line);border-radius:var(--m-radius-card);padding-block:12px;padding-inline:var(--m-pad);box-shadow:var(--m-shadow);flex-wrap:wrap;align-items:center;gap:10px;display:flex;position:sticky;inset-block-start:0}.search-box{background:var(--m-surface);border:2px solid var(--m-line);border-radius:var(--m-radius-ctrl);align-items:center;gap:10px;min-block-size:48px;padding-inline:16px;display:flex}.search-box input{font-size:var(--m-t-base);background:0 0;border:0;outline:none;flex:1;min-block-size:44px}.summary-card{background:var(--m-tint);color:var(--m-ink);border:1px solid var(--m-line);border-radius:var(--m-radius-card);padding:var(--m-pad);box-shadow:var(--m-shadow)}.summary-card__title{font-size:var(--m-t-sm);opacity:.75;margin-block-end:12px;font-weight:600}.summary-card__grid{text-align:center;grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.summary-card__big{font-size:var(--m-t-huge);font-weight:600;line-height:1}.summary-card__label{font-size:var(--m-t-sm);justify-content:center;align-items:center;gap:6px;margin-block-start:6px;font-weight:600;display:flex}.summary-card__rate{border-block-start:1px solid var(--m-line-soft);flex-wrap:wrap;align-items:baseline;gap:10px;margin-block-start:14px;padding-block-start:12px;display:flex}.submit-btn{border-radius:var(--m-radius-btn);background:var(--m-accent-ink);min-block-size:56px;inline-size:100%;color:var(--m-cta-fg);box-shadow:var(--m-cta-shadow);font-size:var(--m-t-md);justify-content:center;align-items:center;gap:8px;font-weight:600;display:inline-flex}.submit-state{border-radius:var(--m-radius-btn);min-block-size:56px;font-size:var(--m-t-md);text-align:center;justify-content:center;align-items:center;gap:8px;padding-block:14px;padding-inline:20px;font-weight:600;display:flex}.submit-state--sending{background:var(--m-warn-bg);color:var(--m-warn-ink);border:2px solid var(--m-warn)}.submit-state--done{background:var(--m-ok-bg,var(--m-ok-soft));color:var(--m-ok-ink);border:2px solid var(--m-ok)}.offline-banner{background:var(--m-warn-bg);color:var(--m-ink);border-block-end:2px solid var(--m-warn);padding-block:10px;padding-inline:var(--m-pad);font-size:var(--m-t-sm);flex-wrap:wrap;align-items:center;gap:10px;display:flex}.offline-banner__tag{border-radius:var(--m-radius-pill);background:var(--m-accent-ink);color:var(--m-cta-fg);font-weight:600;font-size:var(--m-t-xs);align-items:center;gap:5px;padding-block:3px;padding-inline:9px;display:inline-flex}.offline-banner__link{color:var(--m-link);font-weight:600;font-size:var(--m-t-sm);cursor:pointer;background:0 0;border:0;padding:0;font-family:inherit}.offline-banner__more{font-size:var(--m-t-xs);color:var(--m-ink-2);flex-basis:100%;margin:0}.submit-state--queued{background:var(--m-warn-bg);color:var(--m-warn-ink);border:2px dashed var(--m-warn)}.submit-state--published{background:var(--m-info-bg);color:var(--m-info-ink);border:2px solid var(--m-info)}@keyframes m-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.chain-line{font-size:var(--m-t-sm);color:var(--m-ok-ink);align-items:center;gap:8px;font-weight:600;animation:.2s cubic-bezier(.34,1.56,.64,1) m-pop;display:inline-flex}.tint-card{background:var(--m-tint);border-radius:var(--m-radius-card);padding:var(--m-pad);font-size:var(--m-t-sm);color:var(--m-ink-2)}.tint-card__title{color:var(--m-ink);align-items:center;gap:6px;margin-block-end:6px;font-weight:600;display:flex}.btn-outline-blue{border-radius:var(--m-radius-btn);border:2px solid var(--m-nav-active);background:var(--m-surface);min-block-size:44px;color:var(--m-nav-active);font-size:var(--m-t-sm);white-space:nowrap;align-items:center;gap:6px;padding-block:10px;padding-inline:14px;font-weight:600;display:inline-flex}.btn-ghost{border-radius:var(--m-radius-btn);border:1px solid var(--m-line);min-block-size:44px;color:var(--m-ink-2);font-size:var(--m-t-sm);white-space:nowrap;background:0 0;padding-block:10px;padding-inline:14px;font-weight:600}.btn-ghost:disabled{opacity:.4;cursor:default}.pill-pick{border-radius:var(--m-radius-btn);min-block-size:44px;font-size:var(--m-t-sm);white-space:nowrap;background:var(--m-surface);color:var(--m-ink-2);border:2px solid var(--m-line);padding-block:9px;padding-inline:14px;font-weight:600}.pill-pick[aria-pressed=true]{background:var(--m-nav-active);color:var(--m-on-nav);border-color:var(--m-nav-active)}.chip{border-radius:var(--m-radius-pill);font-size:var(--m-t-xs);align-items:center;gap:6px;padding-block:4px;padding-inline:10px;font-weight:600;display:inline-flex}.chip--warn{background:var(--m-warn-soft);color:var(--m-warn-ink);border:1px solid var(--m-warn)}.chip--ok{background:var(--m-ok-soft);color:var(--m-ok-ink);border:1px solid var(--m-ok)}.chip--info{background:var(--m-info-bg);color:var(--m-info-ink);border:1px solid var(--m-line-soft)}.chip--nav{background:var(--m-nav-active);color:var(--m-on-nav)}.mark-input{text-align:center;min-block-size:44px;inline-size:96px;font-size:var(--m-t-md);background:var(--m-page);border:2px solid var(--m-line);border-radius:var(--m-radius-ctrl);padding-block:8px;padding-inline:6px;font-weight:600}.mark-input::placeholder{font-size:var(--m-t-xs);color:var(--m-ink-3);font-weight:400}.mark-input[aria-invalid=true]{border-color:var(--m-warn)}.note-input{min-block-size:44px;min-inline-size:0;font-size:var(--m-t-sm);background:var(--m-page);border:2px solid var(--m-line);border-radius:var(--m-radius-ctrl);flex:160px;padding-block:8px;padding-inline:14px}.col-headers{padding-inline:var(--m-pad);font-size:var(--m-t-xs);color:var(--m-ink-3);gap:10px;display:flex}.reason-box{inline-size:100%;font-size:var(--m-t-base);color:inherit;background:var(--m-page);border:2px solid var(--m-line);resize:vertical;border-radius:20px;padding-block:12px;padding-inline:14px;font-family:inherit}.reason-box--error{border-color:var(--m-risk)}.derivation-line{font-size:var(--m-t-sm);color:var(--m-ink-2);align-items:baseline;gap:10px;display:flex}.derivation-line span:first-child{flex:1}.derivation-line strong{color:var(--m-ink);font-weight:600}.formula-line{border-block-start:1px solid var(--m-line);font-size:var(--m-t-base);color:var(--m-heading);margin-block-start:10px;padding-block-start:10px;font-weight:600}.status-pill{border-radius:var(--m-radius-pill);min-block-size:36px;font-size:var(--m-t-sm);align-items:center;gap:6px;padding-block:6px;padding-inline:13px;font-weight:600;display:inline-flex}.dashed-block{border-radius:var(--m-radius-ctrl);border:2px dashed var(--m-nav-active);block-size:42px;color:var(--m-heading);font-size:var(--m-t-sm);background:0 0;justify-content:center;align-items:center;padding-inline:12px;font-weight:600;display:inline-flex}.note{font-size:var(--m-t-xs);color:var(--m-ink-3)}.reading-line{font-size:var(--m-t-sm);color:var(--m-ink-2)}.note-toggle{border-radius:var(--m-radius-pill);border:1px solid var(--m-line);background:var(--m-surface);min-block-size:36px;color:var(--m-ink-2);font-family:inherit;font-size:var(--m-t-xs);cursor:pointer;align-items:center;gap:5px;padding-inline:10px;font-weight:600;display:none}@media (width<=520px){.page-h1{font-size:var(--m-t-xl)}.classbar__meta,.classbar__lead{display:none}.classbar__school{font-size:var(--m-t-xs);flex:0 auto}.classbar{padding-block:6px}.teacher-page{gap:10px;padding-block:10px 150px}.teacher-main{gap:10px}.attendance-guide{display:none}.live-bar{padding-block:6px}.search-box{min-block-size:44px}.send-block{z-index:20;padding:10px var(--m-pad);background:var(--m-surface);border-block-start:1px solid var(--m-line);gap:6px;position:fixed;inset-block-end:calc(var(--m-bottomnav-h,62px) + env(safe-area-inset-bottom));inset-inline:0;box-shadow:0 -6px 18px #0740aa1a}.send-block .submit-btn,.send-block .submit-state{min-block-size:48px;padding-block:10px}.send-block .m-card{display:none}.roster-row{gap:8px;padding-block:6px}.roster .roster-row{flex-wrap:nowrap;align-items:center}.roster .roster-row__namecol{flex:1 1 0}.roster .roster-row__name>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.roster-row__name{font-size:var(--m-t-sm)}.seat-circle{block-size:28px;inline-size:28px;min-inline-size:28px;font-size:var(--m-t-xs)}.status-btn{min-block-size:44px;min-inline-size:44px;font-size:var(--m-t-xs);padding-block:6px;padding-inline:12px}.status-btn .status-btn__label{display:none}.status-btn svg{block-size:18px;inline-size:18px}.roster-row .note-input{display:none}.roster-row .note-input.note-input--open{flex-basis:100%;display:block}.note-toggle{display:inline-flex}.students-aside,.col-headers{display:none}.pct-cell{flex-direction:column;gap:2px;display:inline-flex;inline-size:auto!important}.pct-cell__label{font-size:var(--m-t-xs);color:var(--m-ink-3);font-weight:600}}@media (width>=521px){.pct-cell__label{display:none}}.ministry-layout{align-items:stretch;min-block-size:calc(100vh - 52px);display:flex}.rail{background:var(--m-surface);border-inline-end:1px solid var(--m-line);flex-direction:column;flex:none;gap:4px;inline-size:212px;padding:10px;display:flex}.rail--collapsed{inline-size:62px}.rail__item{min-block-size:46px;font-size:var(--m-t-sm);color:var(--m-ink-2);white-space:nowrap;border-radius:16px;align-items:center;gap:10px;padding-inline:12px;font-weight:600;display:flex;position:relative;overflow:hidden}.rail__item svg{flex:none}.rail__label{text-overflow:ellipsis;overflow:hidden}.rail__item[aria-current=page]{background:var(--m-tint);color:var(--m-heading)}.rail__step{block-size:26px;inline-size:26px;font-size:var(--m-t-xs);background:var(--m-tint);color:var(--m-heading);border-radius:9px;flex:none;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.rail__item[aria-current=page] .rail__step{background:var(--m-nav-active);color:var(--m-on-nav)}.rail__heading{font-size:var(--m-t-xs);color:var(--m-ink-3);margin-block-start:10px;padding-inline:12px;font-weight:600}.rail--collapsed .rail__heading{border-block-start:1px solid var(--m-line);block-size:0;margin-block:10px 4px;padding:0;overflow:hidden}.rail__badge{background:var(--m-risk);color:var(--m-on-nav);border-radius:var(--m-radius-pill);font-size:var(--m-t-xs);margin-inline-start:auto;padding-block:1px;padding-inline:8px}.rail--collapsed .rail__label,.rail--collapsed .rail__badge{display:none}@media (width<=520px){.ministry-layout{min-block-size:auto;padding-block-end:calc(70px + env(safe-area-inset-bottom));display:block}.rail,.rail--collapsed{z-index:30;scrollbar-width:none;border-inline-end:none;border-block-start:1px solid var(--m-line);inline-size:auto;padding:4px 6px calc(4px + env(safe-area-inset-bottom));flex-direction:row;align-items:stretch;gap:2px;position:fixed;inset-block-end:0;inset-inline:0;overflow-x:auto;box-shadow:0 -6px 18px #0740aa1a}.rail::-webkit-scrollbar{display:none}.rail>.rail__item,.rail__heading,.rail--collapsed .rail__heading{display:none}.rail__item{min-block-size:56px;min-inline-size:68px;font-size:var(--m-t-xs);flex-direction:column;flex:1 0 68px;justify-content:center;gap:3px;padding-inline:4px}.rail--collapsed .rail__label{display:block}.rail__label{max-inline-size:100%}.rail__badge,.rail--collapsed .rail__badge{margin-inline-start:0;display:inline-flex;position:absolute;inset-block-start:2px;inset-inline-end:6px}}.rail__dot{background:var(--m-risk);border-radius:999px;block-size:8px;inline-size:8px;position:absolute;inset-block-start:6px;inset-inline-end:6px}.ministry-main{min-inline-size:0;padding:var(--m-pad);flex-direction:column;flex:1;gap:14px;max-inline-size:1500px;display:flex}.mfilter{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.mpill{border-radius:var(--m-radius-ctrl);border:2px solid var(--m-line);background:var(--m-surface);min-block-size:44px;font-size:var(--m-t-sm);color:var(--m-ink);white-space:nowrap;align-items:center;gap:8px;padding-inline:14px;font-weight:600;display:inline-flex;position:relative}.mpill[aria-expanded=true]{border-color:var(--m-nav-active)}.mpill__panel{z-index:30;box-sizing:border-box;background:var(--m-surface);border:1px solid var(--m-line);inline-size:296px;box-shadow:var(--m-shadow), 0 18px 44px #0611262e;text-align:start;white-space:normal;border-radius:20px;padding:10px;position:absolute;inset-block-start:calc(100% + 6px);inset-inline-start:0}.mpill__row{min-block-size:44px;inline-size:100%;font-size:var(--m-t-sm);color:var(--m-ink-2);border-radius:14px;justify-content:space-between;align-items:center;gap:8px;padding-inline:12px;font-weight:600;display:flex}.mpill__row:hover{background:var(--m-tint)}.mpill__row[aria-current=true]{background:var(--m-tint);color:var(--m-heading)}.cal{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.cal__head{font-size:var(--m-t-xs);text-align:center;color:var(--m-ink-2);padding-block:4px;font-weight:600}.cal__cell{min-block-size:34px;font-size:var(--m-t-xs);background:var(--m-tint);color:var(--m-heading);border:2px solid #0000;border-radius:10px;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.cal__cell:disabled{color:var(--m-ink-3);cursor:default;background:0 0;font-weight:400}.cal__cell--today{background:var(--m-warn-soft);border-color:var(--m-warn)}.cal__cell[aria-current=date]{background:var(--m-nav-active);color:var(--m-on-nav)}.kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}@media (width<=900px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.kpi{background:var(--m-surface);border:1px solid var(--m-line);border-radius:var(--m-radius-card);box-shadow:var(--m-shadow);padding:var(--m-pad);text-align:start;cursor:pointer;flex-direction:column;gap:4px;display:flex}.kpi:hover{border-color:var(--m-nav-active)}.kpi__value{font-size:var(--m-t-2xl);color:var(--m-heading);font-weight:600;line-height:1}.kpi__label{font-size:var(--m-t-sm);align-items:center;gap:6px;font-weight:600;display:flex}.kpi__meaning{font-size:var(--m-t-xs);color:var(--m-ink-3)}.chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:12px;display:grid}@media (width<=760px){.chart-grid{grid-template-columns:minmax(0,1fr)}}.chart-grid>.m-card:last-child:nth-child(odd){grid-column:1/-1}.ranked-row{align-items:center;gap:10px;min-block-size:40px;inline-size:100%;max-inline-size:620px;display:flex}.ranked-row__bar{background:var(--m-tint);border-radius:999px;flex:1;block-size:14px;overflow:hidden}.mtable{border-collapse:collapse;inline-size:100%;font-size:var(--m-t-sm)}.mtable th{text-align:start;border-block-end:1px solid var(--m-line);color:var(--m-ink-2);font-size:var(--m-t-xs);cursor:pointer;padding-block:8px;padding-inline:10px}.mtable td{border-block-end:1px solid var(--m-line);padding-block:8px;padding-inline:10px}.sev-dot{border-radius:999px;flex:none;block-size:10px;inline-size:10px}
