:root{color-scheme:light;--brand: #4b371d;--brand-hover: #3a2c1a;--on-brand: #f7f1e6;--brand-soft: #efe4cf;--brand-ink: #664823;--brand-line: #cfaa74;--accent: #c9a063;--accent-soft: #f3e8d2;--on-accent: #3a2c1a;--bg: #f7f1e6;--chrome: #fffdf8;--surface: #ffffff;--surface-2: #fbf7ee;--field-bg: #ffffff;--ink: #3a2c1a;--ink-2: #6b5a44;--line: #e6dcc7;--line-strong: #9c8a68;--good: #17703f;--good-soft: #e0f3e8;--good-ink: #0f5a31;--good-line: #a9dbbd;--warn: #8a5200;--warn-soft: #fcefd3;--warn-ink: #6b3f00;--warn-line: #e2b95d;--bad: #b3261e;--bad-soft: #fbe5e2;--bad-ink: #7d1a14;--bad-line: #efb7b1;--bad-solid: #b3261e;--bad-solid-hover: #8f1d17;--on-bad: #ffffff;--info: #1a5aa0;--info-soft: #e3edfa;--info-ink: #154a82;--info-line: #b4cdee;--tile-gold-bg: #efe2c6;--tile-gold-ink: #664823;--tile-green-bg: #dcefe6;--tile-green-ink: #1f7a5a;--tile-blue-bg: #e1e8fa;--tile-blue-ink: #3d56b2;--tile-neutral-bg: #ece4d4;--tile-neutral-ink: #6b5a44;--tile-rose-bg: #f6dfe7;--tile-rose-ink: #a8305f;--radius: 16px;--radius-sm: 10px;--hero-from: #4b371d;--hero-via: #936c39;--hero-to: #f7f1e6;--hero-ink: #f7f1e6;--shadow-sm: 0 1px 2px rgba(60, 40, 10, .06);--shadow: 0 1px 2px rgba(60, 40, 10, .05), 0 8px 24px rgba(60, 40, 10, .08);--shadow-pop: 0 20px 60px rgba(40, 25, 5, .3);--backdrop: rgba(30, 20, 8, .5);--focus: #1a5aa0;--font-body: "Tajawal", system-ui, -apple-system, "Segoe UI", Tahoma, Arial, sans-serif;--font-head: "Cairo", "Tajawal", system-ui, "Segoe UI", Tahoma, Arial, sans-serif}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--brand: #c9a063;--brand-hover: #d8b077;--on-brand: #1f160a;--brand-soft: #3a2f20;--brand-ink: #d9b57e;--brand-line: #5c4a30;--accent: #c9a063;--accent-soft: #33291b;--on-accent: #1f160a;--bg: #17120b;--chrome: #211a11;--surface: #251d13;--surface-2: #2e251a;--field-bg: #2e251a;--ink: #f7f1e6;--ink-2: #bdb09a;--line: #3a3023;--line-strong: #7a6748;--good: #7fd0aa;--good-soft: #1f2f28;--good-ink: #a5e0c4;--good-line: #2f4e3f;--warn: #e6b04f;--warn-soft: #382c1a;--warn-ink: #f1ca85;--warn-line: #5f4824;--bad: #f19a95;--bad-soft: #3a2220;--bad-ink: #f4b3ae;--bad-line: #603431;--bad-solid: #c04438;--bad-solid-hover: #d4554a;--on-bad: #ffffff;--info: #9db3ea;--info-soft: #232a40;--info-ink: #bccaf2;--info-line: #37426b;--tile-gold-bg: #3a2f20;--tile-gold-ink: #dcb97e;--tile-green-bg: #28302c;--tile-green-ink: #8fcdba;--tile-blue-bg: #282c38;--tile-blue-ink: #a5b7eb;--tile-neutral-bg: #2e251a;--tile-neutral-ink: #bdb09a;--tile-rose-bg: #38262f;--tile-rose-ink: #eaa3bf;--hero-from: #4b371d;--hero-via: #2b2116;--hero-to: #17120b;--hero-ink: #f7f1e6;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px rgba(0, 0, 0, .35);--shadow-pop: 0 20px 60px rgba(0, 0, 0, .6);--backdrop: rgba(0, 0, 0, .62);--focus: #f0c674}}:root[data-theme=dark]{color-scheme:dark;--brand: #c9a063;--brand-hover: #d8b077;--on-brand: #1f160a;--brand-soft: #3a2f20;--brand-ink: #d9b57e;--brand-line: #5c4a30;--accent: #c9a063;--accent-soft: #33291b;--on-accent: #1f160a;--bg: #17120b;--chrome: #211a11;--surface: #251d13;--surface-2: #2e251a;--field-bg: #2e251a;--ink: #f7f1e6;--ink-2: #bdb09a;--line: #3a3023;--line-strong: #7a6748;--good: #7fd0aa;--good-soft: #1f2f28;--good-ink: #a5e0c4;--good-line: #2f4e3f;--warn: #e6b04f;--warn-soft: #382c1a;--warn-ink: #f1ca85;--warn-line: #5f4824;--bad: #f19a95;--bad-soft: #3a2220;--bad-ink: #f4b3ae;--bad-line: #603431;--bad-solid: #c04438;--bad-solid-hover: #d4554a;--on-bad: #ffffff;--info: #9db3ea;--info-soft: #232a40;--info-ink: #bccaf2;--info-line: #37426b;--tile-gold-bg: #3a2f20;--tile-gold-ink: #dcb97e;--tile-green-bg: #28302c;--tile-green-ink: #8fcdba;--tile-blue-bg: #282c38;--tile-blue-ink: #a5b7eb;--tile-neutral-bg: #2e251a;--tile-neutral-ink: #bdb09a;--tile-rose-bg: #38262f;--tile-rose-ink: #eaa3bf;--hero-from: #4b371d;--hero-via: #2b2116;--hero-to: #17120b;--hero-ink: #f7f1e6;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px rgba(0, 0, 0, .35);--shadow-pop: 0 20px 60px rgba(0, 0, 0, .6);--backdrop: rgba(0, 0, 0, .62);--focus: #f0c674}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:1.0625rem;line-height:1.75;text-align:start;min-height:100vh;min-height:100dvh}h1,h2,h3,h4{font-family:var(--font-head);line-height:1.35;margin:0 0 .5rem;color:var(--ink)}h1{font-size:clamp(1.55rem,1.2rem + 1.6vw,2.15rem);font-weight:800}h2{font-size:1.25rem;font-weight:700}h3{font-size:1.05rem;font-weight:700}p{margin:0 0 .75rem}a{color:var(--brand-ink);text-underline-offset:3px}a:hover{color:var(--ink)}ul{margin:0;padding:0;list-style:none}img,svg{display:block;max-width:100%}hr{border:0;border-top:1px solid var(--line)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:6px}main:focus{outline:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.muted{color:var(--ink-2)}.lead{color:var(--ink-2);font-size:1.1rem;max-width:62ch}.skip-link{position:absolute;inset-inline-start:12px;top:-80px;z-index:100;background:var(--ink);color:var(--bg);padding:.6rem 1rem;border-radius:0 0 10px 10px;text-decoration:none}.skip-link:focus{top:0}.container{width:min(100% - 32px,1080px);margin-inline:auto}@media(min-width:720px){.container{width:min(100% - 48px,1080px)}}.app-shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.main{flex:1;padding-block:1.5rem 3rem}.narrow{max-width:560px;margin-inline:auto}.narrow-wide{max-width:760px;margin-inline:auto}.prose ul{list-style:disc;padding-inline-start:1.4rem}.prose li{margin-bottom:.5rem}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}@media print{:root,:root:not([data-theme=light]),:root[data-theme=dark]{color-scheme:light;--brand: #4d4d4d;--brand-hover: #333333;--on-brand: #ffffff;--brand-soft: #eeeeee;--brand-ink: #000000;--brand-line: #9a9a9a;--accent: #4d4d4d;--accent-soft: #eeeeee;--bg: #ffffff;--chrome: #ffffff;--surface: #ffffff;--surface-2: #f3f3f3;--field-bg: #ffffff;--ink: #000000;--ink-2: #2b2b2b;--line: #bdbdbd;--line-strong: #7a7a7a;--good: #000000;--good-soft: #eeeeee;--good-ink: #000000;--warn: #000000;--warn-soft: #eeeeee;--warn-ink: #000000;--bad: #000000;--bad-soft: #eeeeee;--bad-ink: #000000;--info: #000000;--info-soft: #eeeeee;--info-ink: #000000;--shadow-sm: none;--shadow: none}}.site-header{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.header-inner{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding-block:.6rem}.brand{display:flex;align-items:center;gap:.85rem;text-decoration:none;color:var(--ink)}.wordmark{display:block;flex:none}.brand-tag{font-size:.78rem;color:var(--ink-2)}.header-actions{margin-inline-start:auto;display:flex;align-items:center;gap:.4rem}.user-name{display:none;max-width:14ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2);font-size:.95rem}.logout-label{display:none}@media(min-width:560px){.logout-label{display:inline}}@media(min-width:720px){.user-name{display:inline}.header-inner{column-gap:.75rem}}@media(min-width:720px)and (max-width:1100px){.brand-tag{display:none}}@media(min-width:720px)and (max-width:940px){.user-name{display:none}}@media(max-width:480px){.brand-tag{display:none}.header-inner{gap:.4rem .5rem}.header-actions .btn-sm{padding-inline:.7rem;font-size:.92rem}}.icon-btn{position:relative;display:inline-grid;place-items:center;width:44px;height:44px;border-radius:12px;color:var(--ink);background:transparent;border:0;cursor:pointer;text-decoration:none}.icon-btn:hover{background:var(--surface-2)}.bell-badge{position:absolute;top:-3px;inset-inline-end:-7px;min-width:18px;height:18px;padding-inline:4px;border-radius:999px;background:var(--bad-solid);color:var(--on-bad);font-size:.72rem;font-weight:700;line-height:18px;text-align:center;font-family:var(--font-head);border:2px solid var(--surface);box-sizing:content-box}.site-footer{border-top:1px solid var(--line);color:var(--ink-2);font-size:.9rem}.footer-inner{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;justify-content:space-between;padding-block:1rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:46px;padding:.55rem 1.2rem;border-radius:12px;border:1.5px solid transparent;font:inherit;font-weight:700;line-height:1.3;text-decoration:none;cursor:pointer;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-sm{min-height:40px;padding:.3rem .85rem;font-size:.97rem;border-radius:10px}.btn-block{width:100%}.btn-primary{background:var(--brand);color:var(--on-brand)}.btn-primary:hover:not(:disabled){background:var(--brand-hover);color:var(--on-brand)}.btn-secondary{background:var(--surface);color:var(--brand-ink);border-color:var(--line-strong)}.btn-secondary:hover:not(:disabled){background:var(--brand-soft);border-color:var(--brand)}.btn-ghost{background:transparent;color:var(--ink-2)}.btn-ghost:hover:not(:disabled){background:var(--surface-2);color:var(--ink)}.btn-danger{background:var(--bad-solid);color:var(--on-bad)}.btn-danger:hover:not(:disabled){background:var(--bad-solid-hover);color:var(--on-bad)}.btn-danger-text{color:var(--bad)}.btn-danger-text:hover:not(:disabled){background:var(--bad-soft);color:var(--bad-ink)}.form{display:flex;flex-direction:column;gap:1rem}.form>h2,.card>h2{margin-bottom:0}.field{display:flex;flex-direction:column;gap:.3rem;min-width:0}.field label,.segmented legend{font-weight:700;font-size:.97rem}.field .optional{font-weight:400;color:var(--ink-2)}input,select,textarea{width:100%;min-height:46px;padding:.55rem .85rem;border:1.5px solid var(--line-strong);border-radius:12px;background:var(--field-bg);color:var(--ink);font:inherit;font-size:max(16px,1em);line-height:1.5}textarea{resize:vertical;min-height:92px}input[type=email],input[type=password],input[type=date],input[type=number]{text-align:start}input:hover,select:hover,textarea:hover{border-color:var(--ink-2)}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);outline-offset:1px;border-color:var(--focus)}.has-error input,.has-error select,.has-error textarea{border-color:var(--bad)}.hint{margin:0;color:var(--ink-2);font-size:.88rem;line-height:1.5}.field-error{margin:0;color:var(--bad);font-size:.9rem;font-weight:700}.input-group{display:flex;gap:.4rem;align-items:stretch}.input-addon{flex:none}.input-icon{position:relative}.input-icon .icon{position:absolute;inset-inline-start:12px;top:50%;transform:translateY(-50%);color:var(--ink-2);pointer-events:none}.input-icon input{padding-inline-start:2.5rem}.form-row{display:grid;gap:1rem}@media(min-width:640px){.form-row{grid-template-columns:repeat(2,minmax(0,1fr))}.form-row-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.form-actions{display:flex;gap:.5rem;flex-wrap:wrap}.form-aside{margin:-.25rem 0 0;font-size:.95rem}.code-input{font-family:var(--font-head);font-size:1.6rem;font-weight:700;letter-spacing:.4em;text-align:center!important;min-height:56px}.resend-row{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .75rem;margin-top:1rem;font-size:.92rem}.segmented{border:0;margin:0;padding:0;min-width:0}.segmented legend{padding:0;margin-bottom:.4rem}.segmented-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.segment{position:relative;display:grid;place-items:center;min-height:50px;padding:.4rem .5rem;border:1.5px solid var(--line-strong);border-radius:12px;background:var(--surface);font-weight:700;font-size:.97rem;text-align:center;cursor:pointer;line-height:1.3}.segment input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}.segment:hover{border-color:var(--ink-2)}.segment:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}.segment-on.segment-attendance{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.segment-on.segment-behavior_positive{background:var(--good-soft);border-color:var(--good);color:var(--good)}.segment-on.segment-behavior_negative{background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}.alert{display:flex;gap:.65rem;align-items:flex-start;padding:.75rem 1rem;border-radius:12px;border:1px solid;font-size:.97rem;line-height:1.55}.alert .icon{flex:none;margin-top:.2rem}.alert-body{flex:1;min-width:0}.alert-body p{margin:0 0 .4rem}.alert-body p:last-child{margin-bottom:0}.alert-error{background:var(--bad-soft);border-color:var(--bad-line);color:var(--bad-ink)}.alert-success{background:var(--good-soft);border-color:var(--good-line);color:var(--good-ink)}.alert-info{background:var(--info-soft);border-color:var(--info-line);color:var(--info-ink)}.alert-warning{background:var(--warn-soft);border-color:var(--warn-line);color:var(--warn-ink)}.loading{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:3rem 1rem;color:var(--ink-2)}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--brand);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.state-box{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem;padding-block:1rem}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.5rem;padding:2.5rem 1.25rem;background:var(--surface);border:1.5px dashed var(--line-strong);border-radius:var(--radius)}.empty-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--brand-soft);color:var(--brand-ink)}.empty-title{font-family:var(--font-head);font-weight:700;font-size:1.15rem;margin:.25rem 0 0}h1.empty-title{font-size:1.5rem}.empty p.muted{max-width:46ch;margin:0}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.1rem 1.15rem;margin-bottom:1.25rem}.card.form{gap:1rem}.badge{display:inline-flex;align-items:center;padding:.1rem .65rem;border-radius:999px;font-size:.85rem;font-weight:700;line-height:1.6;white-space:nowrap}.badge-neutral{background:var(--surface-2);color:var(--ink-2);border:1px solid var(--line)}.badge-brand{background:var(--brand-soft);color:var(--brand-ink)}.badge-good{background:var(--good-soft);color:var(--good)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-bad{background:var(--bad-soft);color:var(--bad)}.badge-info{background:var(--info-soft);color:var(--info)}.avatar{flex:none;display:grid;place-items:center;border-radius:50%;background:var(--brand-soft);color:var(--brand-ink);font-family:var(--font-head);font-weight:800}.avatar-person{background:var(--brand-soft);color:var(--accent)}.avatar-person svg{width:58%;height:58%}.avatar-md{width:44px;height:44px;font-size:1rem}.avatar-lg{width:56px;height:56px;font-size:1.2rem}.avatar-xl{width:68px;height:68px;font-size:1.5rem}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.75rem 1rem;margin-bottom:1.25rem}.page-head h1{margin-bottom:.25rem}.head-name-link{color:inherit;text-decoration:none}.head-name-link:hover,.head-name-link:focus-visible{color:var(--brand-ink);text-decoration:underline}.page-head .lead{margin:0}.page-head-actions{display:flex;gap:.5rem;flex-wrap:wrap}.section-title{margin:1.75rem 0 .75rem}.back-link{display:inline-flex;align-items:center;gap:.25rem;margin-bottom:.75rem;font-weight:700;font-size:.95rem;text-decoration:none}.back-link:hover{text-decoration:underline}.flip{transform:scaleX(-1)}.tabs{border-bottom:1px solid var(--line);margin:1.25rem 0;overflow-x:auto;scrollbar-width:none}.tabs ul{display:flex;gap:.25rem}.tabs a{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1rem;margin-bottom:-1px;border-bottom:3px solid transparent;color:var(--ink-2);font-weight:700;text-decoration:none;white-space:nowrap}.tabs a:hover{color:var(--ink)}.tabs a.active{color:var(--brand-ink);border-bottom-color:var(--brand)}.tab-panel{min-height:8rem}@media(max-width:719px){.tabs{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 14px,#000 calc(100% - 14px),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 14px,#000 calc(100% - 14px),transparent 100%)}.tabs ul{width:max-content;padding-inline:8px}.tabs a{padding-inline:.8rem}}.chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.chip{min-height:40px;padding:.25rem 1rem;border-radius:999px;border:1.5px solid var(--line-strong);background:var(--surface);color:var(--ink-2);font:inherit;font-weight:700;font-size:.95rem;cursor:pointer}@media(hover:hover){.chip:hover{border-color:var(--brand);color:var(--brand-ink)}}.chip-on{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.chip-on:hover{color:var(--on-brand);background:var(--brand-hover)}.toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem 1rem}.more{display:flex;justify-content:center;margin-top:1rem}.dialog{width:min(92vw,460px);max-height:92vh;max-height:calc(100dvh - 2rem);overflow-y:auto;padding:0;border:0;border-radius:var(--radius);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-pop)}.dialog::backdrop{background:var(--backdrop)}.dialog-body{display:flex;flex-direction:column;gap:.75rem;padding:1.35rem}.dialog-body h2{margin:0}.dialog-text p{margin:0;color:var(--ink-2)}.dialog-actions{display:flex;gap:.6rem;justify-content:flex-start;flex-wrap:wrap;margin-top:.5rem}.success-popup{width:min(340px,calc(100vw - 32px));padding:0;border:0;border-radius:24px;background:var(--surface);color:var(--ink);box-shadow:var(--shadow-pop);overflow:hidden}.success-popup[open]{animation:success-popup-in .22s ease-out}.success-popup::backdrop{background:var(--backdrop)}.success-popup-card{display:flex;flex-direction:column;align-items:center;gap:.6rem;padding:2rem 1.5rem 1.75rem;text-align:center;outline:none;cursor:default}.success-popup-check{width:88px;height:88px;margin-bottom:.4rem;border-radius:50%;background:var(--good-soft)}.success-popup-ring,.success-popup-tick{fill:none;stroke:var(--good);stroke-linecap:round;stroke-linejoin:round}.success-popup-ring{stroke-width:4;stroke-dasharray:252;stroke-dashoffset:252;animation:success-popup-draw .45s ease-out forwards}.success-popup-tick{stroke-width:6;stroke-dasharray:50;stroke-dashoffset:50;animation:success-popup-draw .3s .35s ease-out forwards}.success-popup-card h2{margin:0;font-family:var(--font-head);font-size:1.35rem;font-weight:800}.success-popup-detail{margin:0;color:var(--ink-2);font-size:.95rem;line-height:1.6}@keyframes success-popup-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes success-popup-draw{to{stroke-dashoffset:0}}@media(prefers-reduced-motion:reduce){.success-popup[open],.success-popup-ring,.success-popup-tick{animation:none;stroke-dashoffset:0}}.update-bar{position:fixed;inset-inline:1rem;bottom:calc(1rem + env(safe-area-inset-bottom));z-index:60;display:flex;align-items:center;justify-content:space-between;gap:.75rem;max-width:560px;margin-inline:auto;padding:.7rem .9rem .7rem 1.1rem;background:var(--surface);border:1px solid var(--brand-line);border-radius:16px;box-shadow:var(--shadow-pop);color:var(--ink);font-weight:700}.disclosure>summary{cursor:pointer;font-family:var(--font-head);font-weight:700;font-size:1.1rem;list-style-position:inside}.disclosure>summary:focus-visible{outline:3px solid var(--focus);outline-offset:4px}.disclosure[open]>summary{margin-bottom:1rem}.auth-wrap{display:grid;place-items:start center;padding-block:1rem 2rem}.auth-card{width:min(100%,460px);background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:1.75rem 1.4rem}@media(min-width:560px){.auth-card{padding:2.25rem 2.25rem 2rem}}.auth-hero{box-sizing:border-box;width:min(100%,460px);padding:1.5rem 1rem 3.75rem;border-radius:24px 24px 0 0;background:linear-gradient(180deg,var(--hero-from) 0%,var(--hero-from) 58%,var(--hero-via) 84%,var(--hero-to) 100%);color:var(--hero-ink);text-align:center}.auth-hero .wordmark{margin-inline:auto}.auth-tagline{margin:.7rem 0 0;font-size:1rem}.auth-hero+.auth-card{position:relative;margin-top:-2.4rem}.auth-card h1{font-size:1.6rem}.auth-card .lead{margin-bottom:1.25rem;font-size:1rem}.auth-footer{margin:1.5rem 0 0;padding-top:1.1rem;border-top:1px solid var(--line);color:var(--ink-2);font-size:.97rem;text-align:center}.auth-card .alert{margin-bottom:0}.card-grid{display:grid;gap:1rem;grid-template-columns:1fr}@media(min-width:720px){.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1000px){.card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.card-grid>.card{margin-bottom:0}.child-card{display:flex;flex-direction:column;gap:1rem}.child-card-head{display:flex;align-items:center;gap:.85rem;position:relative}.child-card-id{min-width:0;flex:1}.child-card-id h2{margin:0;font-size:1.2rem}.child-card-id p{margin:0;font-size:.93rem}.child-unread{align-self:flex-start}.mini-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem;margin:0;padding:.7rem .4rem;background:var(--surface-2);border-radius:12px;text-align:center}.mini-stats-loading{min-height:72px;background:linear-gradient(90deg,var(--surface-2),var(--line),var(--surface-2))}.mini-stats>div{display:flex;flex-direction:column;justify-content:space-between}.mini-stats dt{display:flex;align-items:flex-end;justify-content:center;min-height:2.6em;font-size:.74rem;color:var(--ink-2);line-height:1.3}.mini-stats dd{margin:.15rem 0 0;font-family:var(--font-head);font-weight:800;font-size:1.35rem;line-height:1.2}.tone-warn-text{color:var(--warn)}.tone-good-text{color:var(--good)}.tone-bad-text{color:var(--bad)}.child-head{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:.25rem}.child-head h1,.child-head p{margin:0}.child-head-text{flex:1;min-width:12rem}.stat-grid{display:grid;gap:.75rem;grid-template-columns:repeat(2,minmax(0,1fr))}@media(min-width:800px){.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.stat{display:flex;flex-direction:column;gap:.15rem;padding:1rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.stat-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;margin-bottom:.35rem}.stat-value{align-self:flex-start;font-family:var(--font-head);font-weight:800;font-size:2rem;line-height:1.1;text-align:start}.stat-label{font-weight:700;color:var(--ink)}.stat-sub{font-size:.82rem;color:var(--ink-2);line-height:1.4}.tone-warn{background:var(--warn-soft);color:var(--warn)}.tone-good{background:var(--good-soft);color:var(--good)}.tone-bad{background:var(--bad-soft);color:var(--bad)}.tone-info{background:var(--info-soft);color:var(--info)}.tone-brand{background:var(--brand-soft);color:var(--brand-ink)}.timeline{display:flex;flex-direction:column;gap:.75rem}.event{display:flex;gap:.85rem;align-items:flex-start;padding:.95rem 1rem;background:var(--surface);border:1px solid var(--line);border-inline-start-width:5px;border-radius:var(--radius);box-shadow:var(--shadow-sm)}.event-warn{border-inline-start-color:var(--accent)}.event-good{border-inline-start-color:var(--good)}.event-bad{border-inline-start-color:var(--bad)}.event-info{border-inline-start-color:var(--info)}.event-icon{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:12px}.event-main{flex:1;min-width:0}.event-top{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .65rem}.event-type{font-family:var(--font-head);font-size:1.05rem}.points{font-family:var(--font-head);font-weight:800;padding:0 .6rem;border-radius:999px}.points-pos{background:var(--good-soft);color:var(--good)}.points-neg{background:var(--bad-soft);color:var(--bad)}.event-date{margin:0;color:var(--ink-2);font-size:.93rem}.event-detail{margin:.15rem 0 0;color:var(--ink-2);font-weight:600}.event-note{margin:.4rem 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.event-meta{margin:.35rem 0 0;color:var(--ink-2);font-size:.85rem}.event-actions{display:flex;flex-direction:column;gap:.15rem;flex:none}@media(max-width:520px){.event{flex-wrap:wrap}.event-actions{flex-direction:row;width:100%;padding-inline-start:calc(40px + .85rem)}}.notif-list{display:flex;flex-direction:column;gap:.6rem}.notif{position:relative;display:flex;gap:.75rem;align-items:flex-start;flex-wrap:wrap;padding:.9rem 1rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.notif-unread{border-color:var(--brand-line);border-inline-start:5px solid var(--brand)}.notif-read{background:var(--surface-2)}.notif-dot{flex:none;width:10px;height:10px;margin-top:.65rem;border-radius:50%;background:var(--brand)}.notif-main{flex:1;min-width:12rem}.notif-title{margin:0 0 .1rem;font-size:1.02rem}.notif-body{margin:0 0 .25rem;overflow-wrap:anywhere}.notif-meta time{white-space:nowrap}.notif-meta{margin:0;font-size:.85rem;color:var(--ink-2)}.notif-actions{display:flex;flex-wrap:wrap;gap:.15rem}.filters{display:grid;gap:.75rem 1rem;grid-template-columns:1fr;padding:1rem}@media(min-width:720px){.filters{grid-template-columns:2fr 1fr 1fr}.filters:has(.filter-search):not(:has(select+*)){grid-template-columns:2fr 1fr}}.count{margin:0 0 .5rem;color:var(--ink-2);font-weight:700;font-size:.95rem}.student-list{display:flex;flex-direction:column;gap:.5rem}@media(min-width:900px){.student-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}.student-row{display:flex;align-items:center;gap:.85rem;padding:.7rem .95rem;background:var(--surface);border:1px solid var(--line);border-radius:14px;color:var(--ink);text-decoration:none;transition:border-color .15s,box-shadow .15s}.student-row:hover{border-color:var(--brand);box-shadow:var(--shadow);color:var(--ink)}.student-row-main{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.4}.student-row-name{font-weight:700;font-size:1.05rem}.student-row-meta{font-size:.88rem;color:var(--ink-2)}.row-chevron{color:var(--ink-2);flex:none}.student-layout{display:grid;gap:1.5rem;margin-top:1rem}@media(min-width:960px){.student-layout{grid-template-columns:minmax(320px,380px) minmax(0,1fr);align-items:start}.student-layout .record-form{position:sticky;top:5.5rem}}.student-layout .section-title:first-child{margin-top:0}.record-form h2{font-size:1.2rem}.shared-warning{display:flex;gap:.65rem;align-items:flex-start;padding:.75rem .95rem;border-radius:12px;background:var(--warn-soft);border:1.5px solid var(--warn-line);color:var(--warn-ink);line-height:1.55}.shared-warning .icon{flex:none;margin-top:.15rem}.shared-warning strong{display:block;font-family:var(--font-head)}.shared-warning p{margin:0;font-size:.93rem}.edit-form{margin-top:.6rem;padding:.85rem;background:var(--surface-2);border-radius:12px;border:1px dashed var(--line-strong)}.school-card{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap}.school-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:var(--tile-gold-bg);color:var(--tile-gold-ink)}.school-card-main{flex:1;min-width:8rem}.school-card h3,.school-card p{margin:0}.row-list,.student-items{display:flex;flex-direction:column;gap:.6rem;margin-bottom:1rem}.row-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding:.75rem 1rem;background:var(--surface);border:1px solid var(--line);border-radius:14px}.row-card>form{width:100%}.row-card-main{display:flex;flex-direction:column;min-width:0;flex:1 1 14rem;line-height:1.45}.row-card-main .muted{font-size:.9rem;overflow-wrap:anywhere}.row-card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .4rem}.student-item{scroll-margin-top:5.5rem;background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden}.student-item-open{border-color:var(--brand);box-shadow:var(--shadow)}.student-item-head{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem .85rem;padding:.75rem 1rem}.student-item-body{display:grid;gap:1rem;padding:1rem;border-top:1px solid var(--line);background:var(--surface-2)}.subpanel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:.9rem 1rem}.subpanel h3{margin-bottom:.6rem}.chip-list{display:flex;flex-direction:column;gap:.4rem;margin-bottom:.9rem}.person{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem .75rem;padding:.45rem .7rem;border-radius:10px;background:var(--surface-2);border:1px solid var(--line)}.person-main{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem .65rem;min-width:0}.inline-form{margin-top:.5rem}.student-rows{margin-top:1.25rem}@media(min-width:900px){.student-rows{grid-template-columns:repeat(2,minmax(0,1fr))}}.item-list{display:flex;flex-direction:column;gap:.75rem}.item{display:flex;flex-direction:column;gap:.55rem;padding:.95rem 1.05rem;background:var(--surface);border:1px solid var(--line);border-inline-start:5px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow-sm);min-width:0}.item-warn{border-inline-start-color:var(--accent)}.item-good{border-inline-start-color:var(--good)}.item-bad{border-inline-start-color:var(--bad)}.item-info{border-inline-start-color:var(--info)}.item-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.35rem .75rem}.item-title,.item-title-static{font-family:var(--font-head);font-weight:700;font-size:1.1rem;min-width:0;overflow-wrap:anywhere}.item-title{color:var(--ink);text-decoration:none}.item-title:hover{color:var(--brand-ink);text-decoration:underline}.item-badges{display:inline-flex;flex-wrap:wrap;gap:.35rem}.item-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem 1rem;color:var(--ink-2);font-size:.92rem}.item-body{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.item-clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.item-label{display:block;font-size:.9rem;color:var(--ink-2)}.item-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.item-actions:empty{display:none}.filters-2{grid-template-columns:1fr}@media(min-width:720px){.filters-2{grid-template-columns:1fr 1fr}}.field-label{font-weight:700;font-size:.97rem}.chips-flush{margin-bottom:0}.internal-note{display:flex;align-items:center;gap:.4rem;margin:0 0 1rem;font-size:.92rem}.related{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin-top:.75rem}.case-type{font-weight:700;color:var(--ink)}.case-summary-text{margin:0 0 .75rem;font-size:1.15rem;line-height:1.7}.case-dates{margin-bottom:.75rem}.log{display:flex;flex-direction:column;gap:.6rem;margin:0 0 1rem;padding:0;list-style:none}.log-entry{padding:.65rem .9rem;background:var(--surface-2);border:1px solid var(--line);border-radius:12px}.log-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.2rem .75rem;margin-bottom:.2rem;font-size:.93rem}.respond-form{padding:.85rem;background:var(--surface-2);border-radius:12px;border:1px dashed var(--line-strong)}.card>.subpanel{margin-top:1rem}.quote{margin:.75rem 0 1rem;padding:.7rem 1rem;background:var(--surface-2);border:0;border-inline-start:4px solid var(--brand);border-radius:8px;white-space:pre-wrap;overflow-wrap:anywhere}.reply-list{display:flex;flex-direction:column;gap:.6rem;margin:0 0 1rem;padding:0;list-style:none}.reply{padding:.65rem .9rem;background:var(--brand-soft);border-radius:12px}.reply-label{display:block;font-size:.9rem;color:var(--brand-ink)}.reply-time{display:block;margin:.2rem 0 0;font-size:.85rem}.composer{display:flex;flex-direction:column;gap:1rem}.suggestions{padding:.85rem 1rem;background:var(--accent-soft);border:1px solid var(--warn-line);border-radius:12px}.suggestions h3{display:flex;align-items:center;gap:.4rem;margin:0 0 .4rem;color:var(--warn-ink)}.suggestions p{margin:0 0 .6rem;font-size:.93rem}.suggestions p:last-child{margin-bottom:0}.suggestion-list{display:flex;flex-direction:column;gap:.5rem}.suggestion{display:block;width:100%;padding:.6rem .85rem;background:var(--surface);border:1.5px solid var(--warn-line);border-radius:10px;color:var(--ink);font:inherit;line-height:1.6;text-align:start;cursor:pointer;overflow-wrap:anywhere}.suggestion:hover{background:var(--accent-soft);border-color:var(--warn)}.excuses{display:flex;flex-direction:column;align-items:flex-start;gap:.6rem;margin-top:.7rem;width:100%}.excuse{width:100%;padding:.7rem .85rem;background:var(--surface-2);border:1px solid var(--line);border-radius:12px}.excuse-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.25rem .75rem;margin-bottom:.3rem}.excuse-time{font-size:.88rem}.excuse-reason{margin:0 0 .3rem;white-space:pre-wrap;overflow-wrap:anywhere}.excuse-note{margin:0 0 .3rem;font-size:.9rem}.excuse-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin-top:.3rem}.excuse-inline-alert,.excuse-history{width:100%}.excuse-history>summary{cursor:pointer;font-weight:700;color:var(--ink-2);margin-bottom:.5rem}.excuse-history .excuse{margin-bottom:.5rem}.excuse-form{width:100%;padding:.9rem;background:var(--surface);border:1.5px dashed var(--line-strong);border-radius:12px}.excuse-form h3{margin:0}.excuse-form-for{margin:-.5rem 0 0;font-size:.93rem}.excuse-file{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .6rem;margin:0;padding:.4rem .6rem;background:var(--brand-soft);border-radius:10px}.excuse-file-name{min-width:0;overflow-wrap:anywhere;font-weight:700}.file-pick{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.file-pick-input{position:absolute;inset-inline-start:0;top:0;width:1px;height:1px;min-height:0;padding:0;border:0;opacity:0;overflow:hidden}.file-pick:has(.file-pick-input:focus-visible) .btn{outline:3px solid var(--focus);outline-offset:2px}.file-pick .btn{cursor:pointer}.assistant-note{margin-bottom:1rem}.chat{display:flex;flex-direction:column;gap:1rem;padding:.9rem}.chat-log{max-height:min(60vh,560px);min-height:12rem;overflow-y:auto;padding:.25rem}.chat-empty{margin:2rem .5rem;text-align:center}.chat-list{display:flex;flex-direction:column;gap:.75rem}.msg{display:flex;flex-direction:column;gap:.15rem;max-width:min(100%,38rem);padding:.6rem .9rem;border-radius:16px}.msg-user{align-self:flex-start;background:var(--brand);color:var(--on-brand);border-start-start-radius:4px}.msg-assistant{align-self:flex-end;background:var(--surface-2);border:1px solid var(--line);border-start-end-radius:4px}.msg-pending{opacity:.75}.msg-who{font-size:.8rem;font-weight:700;opacity:.85}.msg-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.msg-time{font-size:.78rem;opacity:.8}.msg-thinking{display:flex;align-items:center;gap:.6rem}.chat-form{display:flex;flex-direction:column;gap:.5rem}.chat-label{font-weight:700;font-size:.97rem}.chat-form-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chat-notice{margin:0}.chat-welcome{display:flex;flex-direction:column;gap:.75rem;padding:.5rem .25rem .25rem}.chat-welcome .chat-empty{margin:.25rem 0 0;text-align:start}.chat-subtitle{margin:0 0 .4rem;font-family:var(--font-body);font-size:.92rem;font-weight:700}.chat-welcome>.chat-subtitle{margin:0}.chat-notes ul{display:flex;flex-direction:column;gap:.5rem}.chat-note{display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem .6rem;padding:.45rem .85rem;border:1px solid var(--info-line);border-inline-start:4px solid var(--info);border-radius:14px;background:var(--info-soft);color:var(--info-ink);line-height:1.6}.chat-note-warn{border-color:var(--warn-line);border-inline-start-color:var(--warn);background:var(--warn-soft);color:var(--warn-ink)}.chat-note-bad{border-color:var(--bad-line);border-inline-start-color:var(--bad-solid);background:var(--bad-soft);color:var(--bad-ink)}.chat-note-good{border-color:var(--good-line);border-inline-start-color:var(--good);background:var(--good-soft);color:var(--good-ink)}.chat-note-kind{font-size:.8rem;font-weight:800;opacity:.9}.chat-note-text{flex:1 1 12rem;font-size:.95rem;overflow-wrap:anywhere}.chat-starters .chips{margin:0}.chat-starters .chip{text-align:start;height:auto}.chat-starters .chip:disabled{opacity:.55;cursor:not-allowed}.msg-sections{display:flex;flex-direction:column;gap:.5rem}.msg-section{padding:.5rem .75rem;border:1px solid var(--line);border-inline-start:4px solid var(--info);border-radius:12px;background:var(--surface)}.msg-section-analysis{border-inline-start-color:var(--brand)}.msg-section-title{display:flex;align-items:center;gap:.4rem;margin:0 0 .15rem;font-family:var(--font-body);font-size:.88rem;font-weight:800;color:var(--ink-2)}.chat-form-row{flex-wrap:wrap}.chat-count.is-near{color:var(--warn);font-weight:700}.chat-remaining{flex:1;min-width:10rem;color:var(--ink-2);font-size:.9rem;font-weight:700}.chat-remaining.is-out{color:var(--bad)}:root{--sidebar-w: 17rem;--topbar-h: 4.75rem}html.no-scroll{overflow:hidden}.shell{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:100vh;min-height:100dvh;background:var(--bg)}.shell-body{min-width:0;display:flex;flex-direction:column}.shell-content{flex:1;width:100%;max-width:1360px;margin-inline:auto;padding:1.75rem 2.25rem 3.5rem}.shell-sidebar{--drawer-w: min(20rem, 86vw);position:sticky;top:0;align-self:start;height:100vh;height:100dvh;display:flex;flex-direction:column;overflow-y:auto;background:var(--chrome);border-inline-end:1px solid var(--line);z-index:40}.shell-brand{padding:1.75rem 1.5rem 1.25rem}.shell-brand-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.shell-brand-link{display:inline-flex;align-items:center;color:var(--ink);text-decoration:none}.shell-brand-link:hover{color:var(--ink)}.shell-brand-sub{margin:.4rem 0 0;font-size:.92rem;color:var(--ink-2)}.shell-nav{flex:1;padding:.5rem 1rem 1rem}.shell-nav ul{display:flex;flex-direction:column;gap:.3rem}.shell-nav ul[hidden]{display:none}.side-link{display:flex;align-items:center;gap:.85rem;width:100%;min-height:44px;padding:.4rem .95rem;border:0;border-radius:16px;background:transparent;color:var(--ink-2);font:inherit;font-weight:400;text-align:start;text-decoration:none;cursor:pointer;transition:background-color .15s,color .15s}.side-link .icon{flex:none}.side-link:hover{background:var(--surface-2);color:var(--ink)}.side-link.active,.side-link.active:hover{background:var(--brand);color:var(--on-brand);font-weight:700}.side-link:focus-visible{outline-offset:-3px}.side-more-chevron{transition:transform .2s}.side-more-chevron.is-open{transform:rotate(180deg)}.side-sub{margin:.2rem 0;padding-inline-start:1.1rem}.side-link-sub{min-height:44px;font-size:.97rem}.shell-foot{display:flex;flex-direction:column;gap:.55rem;padding:1rem 1.25rem 1.25rem;border-top:1px solid var(--line)}.shell-email{margin:0;font-size:.88rem;color:var(--ink-2);overflow-wrap:anywhere;line-height:1.5}.shell-foot-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem}.shell-logout{padding-inline:.6rem}.shell-privacy{font-size:.82rem;color:var(--ink-2)}.theme-toggle{display:inline-flex;gap:2px;padding:3px;background:var(--surface-2);border:1px solid var(--line);border-radius:999px}.theme-toggle-btn{display:grid;place-items:center;width:34px;height:34px;border:0;border-radius:50%;background:transparent;color:var(--ink-2);cursor:pointer}.theme-toggle-btn:hover{color:var(--ink)}.theme-toggle-btn[aria-pressed=true]{background:var(--brand);color:var(--on-brand)}.shell-topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:.75rem;min-height:var(--topbar-h);padding:.75rem 2.25rem;background:var(--chrome);border-bottom:1px solid var(--line)}.student-search{position:relative;flex:1 1 auto;min-width:0;max-width:640px;margin-inline-end:auto}.student-search-input{width:100%;min-height:48px;padding-inline:3rem 2.6rem;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);color:var(--ink);text-overflow:ellipsis}.student-search-input::placeholder{color:var(--ink-2);opacity:.85}.student-search-icon{position:absolute;inset-inline-start:1.05rem;top:50%;translate:0 -50%;color:var(--ink-2);pointer-events:none}.student-search-clear{position:absolute;inset-inline-end:.55rem;top:50%;translate:0 -50%;display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:50%;background:transparent;color:var(--ink-2);cursor:pointer}.student-search-clear:hover{background:var(--line);color:var(--ink)}.student-search-popup{position:absolute;inset-inline:0;top:calc(100% + .4rem);z-index:60;overflow:hidden;background:var(--surface);border:1px solid var(--line-strong);border-radius:18px;box-shadow:var(--shadow-pop)}.student-search-list{display:flex;flex-direction:column;padding:.35rem}.student-search-option{display:flex;flex-direction:column;padding:.55rem .85rem;border-radius:12px;cursor:pointer;line-height:1.45}.student-search-option.is-active{background:var(--brand-soft)}.student-search-name{font-weight:700}.student-search-meta{font-size:.88rem;color:var(--ink-2)}.student-search-roll{margin-inline-start:.6rem;font-family:var(--font-head);font-weight:600}.student-search-status{margin:0;padding:.85rem 1.1rem;color:var(--ink-2);font-size:.95rem}.assistant-btn{flex:none;display:inline-flex;align-items:center;gap:.55rem;min-height:46px;padding:0 1.1rem;border:0;border-radius:999px;background:var(--brand);color:var(--on-brand);font:inherit;font-size:.95rem;font-weight:700;white-space:nowrap;cursor:pointer;transition:background-color .15s}.assistant-btn:hover{background:var(--brand-hover)}.assistant-btn:focus-visible{outline-offset:3px}.assistant-btn-spark{opacity:.75}.assistant-panel{margin:0;padding:0;border:0;background:var(--surface);color:var(--ink);box-shadow:var(--shadow-pop);inset:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh}.assistant-panel::backdrop{background:var(--backdrop)}.assistant-panel[open]{display:flex}@media(min-width:720px){.assistant-panel{inset-block:0;inset-inline:auto 0;width:440px}}.assistant-panel-inner{display:flex;flex-direction:column;width:100%;height:100%;min-height:0}.assistant-panel-head{display:flex;align-items:center;gap:.65rem;padding:.75rem 1rem;border-bottom:1px solid var(--line)}.assistant-panel-head h2{flex:1;margin:0;font-size:1.15rem}.assistant-panel-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--brand-soft);color:var(--brand-ink)}.assistant-panel-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:.6rem;padding:.85rem 1rem 1rem;overflow-y:auto}.assistant-panel-body .assistant-note{margin:0;font-size:.9rem;line-height:1.55}.chat-panel{flex:1;min-height:0;padding:0}.chat-panel .chat-log{flex:1;max-height:none;min-height:10rem}.dash-greeting{margin:0 0 1.6rem;font-size:clamp(1.45rem,1rem + 1vw,1.7rem);font-weight:800;overflow-wrap:anywhere}.dash-grid{display:grid;gap:1.25rem;grid-template-columns:minmax(0,1fr)}@media(min-width:720px){.dash-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1100px){.dash-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.tile{position:relative;display:flex;flex-direction:column;gap:.3rem;min-height:13rem;padding:1.65rem 1.65rem 1.4rem;background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-sm);transition:border-color .15s,transform .15s}.tile:hover{border-color:var(--brand-line);transform:translateY(-2px)}.tile:has(.tile-link:focus-visible){outline:3px solid var(--focus);outline-offset:2px}.tile-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:1rem}.tile-icon{display:grid;place-items:center;flex:none;width:64px;height:64px;border-radius:16px}.tile-icon-gold{background:var(--tile-gold-bg);color:var(--tile-gold-ink)}.tile-icon-green{background:var(--tile-green-bg);color:var(--tile-green-ink)}.tile-icon-blue{background:var(--tile-blue-bg);color:var(--tile-blue-ink)}.tile-icon-neutral{background:var(--tile-neutral-bg);color:var(--tile-neutral-ink)}.tile-badge{min-width:30px;height:30px;padding-inline:.45rem;border-radius:999px;background:var(--bad-solid);color:var(--on-bad);font-family:var(--font-head);font-size:.9rem;font-weight:800;line-height:30px;text-align:center}.tile-title{margin:0;font-size:1.25rem;line-height:1.45;font-weight:800}.tile-line{margin:0;color:var(--ink-2);font-size:1rem;line-height:1.6}.tile-line-good{color:var(--good)}.tile-line-bad{color:var(--bad)}.tile-line-warn{color:var(--warn)}.tile-segment{display:inline-flex;align-items:center;gap:.3rem}.tile-sep{margin-inline:.55rem;color:var(--ink-2)}.tile-segment-icon{flex:none;color:var(--ink-2)}.tile-segment-link{position:relative;z-index:1;display:inline-flex;align-items:center;gap:.3rem;color:inherit;text-decoration:none}.tile-segment-link:hover{text-decoration:underline}.tile-suffix{white-space:nowrap}.tile-link{display:inline-flex;align-items:center;align-self:flex-start;gap:.4rem;margin-top:.45rem;color:var(--brand-ink);font-weight:700;font-size:.97rem;text-decoration:none}.tile-link:hover{color:var(--brand-ink);text-decoration:underline}.tile-link:after{content:"";position:absolute;inset:0;border-radius:inherit}.tile-link:focus-visible{outline:0}.class-card{display:flex;align-items:center;gap:1rem}.class-card .tile-icon{width:52px;height:52px;border-radius:15px}.class-card-main h3{margin:0}.class-card-main p{margin:0;font-size:.95rem}.classes-note{margin-bottom:1.25rem}.classes-group+.classes-group{margin-top:1.5rem}.shell-scrim{display:none}@media(min-width:720px){.shell-menu-btn,.shell-close{display:none}}@media(max-width:719px){.shell{display:block}.shell-sidebar{position:fixed;inset-block:0;inset-inline-start:calc(-1 * var(--drawer-w));width:var(--drawer-w);visibility:hidden;box-shadow:none;z-index:70;transition:inset-inline-start .22s ease,visibility 0s linear .22s}.shell-sidebar.is-open{inset-inline-start:0;visibility:visible;box-shadow:var(--shadow-pop);transition:inset-inline-start .22s ease}.shell-scrim{display:block;position:fixed;inset:0;z-index:60;background:var(--backdrop)}.shell-topbar{gap:.5rem;padding:.6rem .75rem}.shell-content{padding:1.25rem 1rem 2.5rem}.assistant-btn{width:46px;min-height:46px;padding:0;justify-content:center}.assistant-btn-label,.assistant-btn-spark{display:none}.tile{min-height:0}}:root{--portal-scale: 87.5%}html:has(.app-shell.portal){font-size:var(--portal-scale)}.portal .avatar-md{width:38px;height:38px}.portal .avatar-lg{width:46px;height:46px}.portal .avatar-xl{width:56px;height:56px}.portal .btn,.portal .assistant-btn{min-height:40px}.portal .btn-lg{min-height:46px}.portal .tile-icon{width:54px;height:54px;border-radius:14px}.portal .tile-badge{min-width:26px;height:26px;line-height:26px}.portal input,.portal select,.portal textarea{min-height:42px}.portal textarea{min-height:0}.portal-main{max-width:1320px}.portal-header{background:var(--bg);border-bottom:0;padding-block:.6rem .1rem}.portal-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:56px;padding-block:.25rem;padding-inline:1.1rem .5rem;background:var(--chrome);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow-sm)}.portal-brand{display:inline-flex;align-items:center;gap:.85rem;color:var(--ink);text-decoration:none;white-space:nowrap}.portal-brand-divider{width:1px;height:26px;background:var(--line-strong)}.portal-brand-title{font-size:1rem;font-weight:600}.portal-header .header-actions{flex-wrap:nowrap}@media(min-width:941px){.portal-header .user-name{max-width:32ch;direction:ltr;text-align:end;font-size:.85rem}}.portal-header .assistant-btn{background:var(--accent);color:var(--on-accent)}.portal-header .assistant-btn:hover{background:var(--accent);filter:brightness(1.07)}@media(max-width:719px){.portal-bar{min-height:52px;padding-inline:.9rem .4rem}.portal-brand-divider,.portal-brand-title{display:none}.portal-header .assistant-btn{width:42px;min-height:42px;padding:0;justify-content:center}.portal-header .assistant-btn-label,.portal-header .assistant-btn-spark,.portal-header .user-name{display:none}}.btn-lg{min-height:52px;padding-inline:1.6rem;font-size:1.05rem}.count-badge{display:inline-grid;place-items:center;min-width:26px;height:26px;padding-inline:.4rem;border-radius:999px;background:var(--bad-solid);color:var(--on-bad);font-family:var(--font-head);font-size:.85rem;font-weight:800;line-height:1}.portal-title{margin:.5rem 0 1.5rem}.portal-title h1{margin:0;font-size:clamp(1.7rem,1.3rem + 1.2vw,2.2rem);font-weight:800}.portal-title p{margin:.2rem 0 0}.pchild-list{display:grid;gap:1rem;grid-template-columns:minmax(0,1fr);margin:0;padding:0;list-style:none}@media(min-width:900px){.pchild-list{grid-template-columns:repeat(2,minmax(0,1fr))}}.pchild{position:relative;display:flex;align-items:center;gap:1.1rem;padding:1.4rem 1.5rem;background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-sm);transition:border-color .15s,transform .15s}.pchild:hover{border-color:var(--brand-line);transform:translateY(-2px)}.pchild:has(.pchild-open:focus-visible){outline:3px solid var(--focus);outline-offset:2px}.pchild-id{min-width:0}.pchild-id h2{margin:0;font-size:1.3rem}.pchild-id p{margin:.15rem 0 0}.pchild-open{color:inherit;text-decoration:none}.pchild-open:after{content:"";position:absolute;inset:0;border-radius:inherit}.pchild-open:focus-visible{outline:0}.pchild .child-unread{position:absolute;top:-9px;inset-inline-start:-9px;min-width:30px;height:30px;z-index:1}.sub-head{display:flex;align-items:center;gap:1rem;margin:.25rem 0 1.5rem}.sub-head h1{margin:0;font-size:clamp(1.5rem,1.2rem + 1vw,2rem);font-weight:800;overflow-wrap:anywhere}.sub-head-avatar{display:inline-flex;border-radius:50%}.sub-head-text{display:grid;gap:.15rem;min-width:0}.sub-head-child{justify-self:start;color:var(--brand-ink);font-size:.95rem;font-weight:700;text-decoration:none;overflow-wrap:anywhere}.sub-head-child:hover,.sub-head-child:focus-visible{text-decoration:underline}.sub-links{display:flex;flex-wrap:wrap;gap:.6rem;margin:0 0 1.25rem}.sub-links .btn{gap:.45rem}.portal-tiles+.sub-links{margin-top:1.25rem}.hub-head{display:flex;align-items:center;gap:1.1rem;margin:.25rem 0 1.5rem}.hub-head-id{flex:1;min-width:0}.hub-head-id h1{margin:0;font-size:clamp(1.6rem,1.2rem + 1.2vw,2.1rem);font-weight:800;overflow-wrap:anywhere}.hub-head-id p{margin:.15rem 0 0}.hub-head-id .hub-eyebrow{margin:0 0 .1rem;color:var(--brand-ink);font-size:.95rem;font-weight:700}.hub-bell{position:relative;flex:none;width:46px;height:46px;border:1px solid var(--line);border-radius:50%;background:var(--surface)}.hub-bell .bell-badge{top:-8px;inset-inline-start:-8px;inset-inline-end:auto;min-width:24px;height:24px;line-height:24px}.today-card{margin-bottom:1.5rem;padding:1.4rem 1.6rem;border-radius:20px}.today-title{display:flex;align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:1.15rem;font-weight:800}.today-title svg{color:var(--good)}.today-card>p{margin:0}.today-list{display:grid;gap:.2rem;margin:0 0 .6rem;padding:0;list-style:none}.today-list li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;padding:.55rem 0;border-top:1px solid var(--line)}.today-list li:first-child{border-top:0}.today-list a{color:var(--ink);text-decoration:none}.today-list a:hover{text-decoration:underline}.today-unread a strong{color:var(--brand-ink)}.tile-link-inline{color:var(--brand-ink);font-weight:700}.hub-grid .tile{min-height:0}.tile-icon-rose{background:var(--tile-rose-bg);color:var(--tile-rose-ink)}.tile-soon{opacity:.72}.tile-soon:hover{transform:none;border-color:var(--line)}.tile-soon-badge{align-self:flex-start;padding:.2rem .75rem;border-radius:999px;background:var(--tile-neutral-bg);color:var(--tile-neutral-ink);font-size:.85rem;font-weight:700}.record-cards{display:grid;gap:1.25rem}@media(min-width:900px){.record-cards{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}.record-card{padding:1.3rem 1.5rem 1.2rem;border-radius:20px}.record-card h2{margin:0 0 .4rem;font-size:1.15rem;font-weight:800}.record-list{margin:0;padding:0;list-style:none}.record-list li+li{border-top:1px solid var(--line)}.record-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;min-height:52px;padding:.7rem .4rem;border:0;border-radius:10px;background:none;color:var(--ink-2);font:inherit;text-align:start;cursor:pointer}.record-row:hover{background:var(--surface-2)}.record-text{flex:1;min-width:0;overflow-wrap:anywhere;color:var(--ink);font-weight:600}.health-intro{margin:0 0 1rem}.record-pill{display:inline-flex;align-items:center;gap:.35rem;white-space:nowrap}.record-detail{display:grid;gap:.75rem;padding:1.1rem 1.2rem;background:var(--surface-2);border:1px solid var(--line);border-radius:16px}.record-when,.record-note{margin:0}.record-note{font-size:1.05rem}.record-facts{display:flex;flex-wrap:wrap;gap:.4rem 1.6rem;margin:0;color:var(--ink-2)}.record-facts div{display:flex;gap:.4rem}.record-facts dt:after{content:":"}.record-facts dd{margin:0;color:var(--ink);font-weight:700}.mithaq-intro{display:flex;align-items:center;gap:.9rem;margin:.25rem 0 1.5rem;color:var(--ink-2);font-size:1.05rem}.mithaq-intro-icon{display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:50%;background:var(--brand-soft);color:var(--brand-ink)}.portal-tiles{display:grid;gap:1.1rem;grid-template-columns:minmax(0,1fr);margin:0;padding:0;list-style:none}@media(min-width:720px){.portal-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}.portal-tile{display:flex;flex-direction:column;gap:1rem;min-height:10rem;padding:1.5rem;background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-sm);color:var(--ink);text-decoration:none;transition:border-color .15s,transform .15s}.portal-tile:hover{border-color:var(--brand-line);transform:translateY(-2px)}.portal-tile-title{margin-top:auto;font-family:var(--font-head);font-size:1.2rem;font-weight:800}.mithaq-list{display:grid;gap:.85rem;margin:0;padding:0;list-style:none}.mithaq-item{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.1rem 1.4rem;background:var(--surface);border:1px solid var(--line);border-inline-start-width:4px;border-radius:18px;color:var(--ink);text-decoration:none;transition:border-color .15s,transform .15s}.mithaq-item:hover{transform:translateY(-1px)}.mithaq-item.item-good{border-inline-start-color:var(--good)}.mithaq-item.item-warn{border-inline-start-color:var(--warn)}.mithaq-item.item-bad{border-inline-start-color:var(--bad)}.mithaq-item.item-info{border-inline-start-color:var(--info)}.mithaq-item-body{display:grid;gap:.15rem;min-width:0}.mithaq-item-side{display:inline-flex;align-items:center;gap:.8rem;flex:none;color:var(--ink-2)}.mithaq-week{margin:0;color:var(--tile-blue-ink);font-size:.92rem;font-weight:700}.mithaq-title{font-size:1.15rem;overflow-wrap:anywhere}.mithaq-detail{padding:1.5rem 1.6rem;border-radius:20px}.mithaq-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.mithaq-detail-head h2{margin:.1rem 0 0;font-size:1.5rem;overflow-wrap:anywhere}.mithaq-detail-head .item-label,.mithaq-detail-head .mithaq-week,.mithaq-rows{margin:0}.mithaq-row{padding:.9rem 0;border-top:1px solid var(--line)}.mithaq-row dt{color:var(--ink-2);font-size:.9rem;font-weight:700}.mithaq-row dd{margin:.15rem 0 0;font-size:1.05rem;overflow-wrap:anywhere}.mithaq-detail+.charter-doc{margin-top:1.1rem}.contact-intro h2{margin:0;font-size:1.4rem;font-weight:800}.contact-intro p{margin:.2rem 0 1.25rem}.contact-form{padding:1.5rem 1.6rem;border-radius:20px}.contact-about{display:inline-block;align-self:flex-start;margin:0;padding:.4rem 1.1rem;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-weight:700}.category-options.contact-types{display:flex;flex-wrap:wrap;gap:.6rem}.contact-types .segment{display:inline-grid;min-height:44px;padding:.3rem 1.2rem;border-radius:999px}.contact-form textarea{min-height:9rem}.schedule-intro{margin:0 0 1rem}.teacher-search{max-width:30rem;margin:0 0 1.25rem}.class-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:.25rem 0 1.25rem}.class-head h1{margin:0;font-size:clamp(1.5rem,1.2rem + 1vw,2rem);font-weight:800;overflow-wrap:anywhere}.class-head p{margin:.15rem 0 0}.tablist-pill{gap:.35rem;margin:0 0 1.25rem;padding:.35rem;background:var(--surface);border:1px solid var(--line);border-radius:18px}.tablist-pill .tab{flex:1;justify-content:center;gap:.5rem;min-height:44px;margin:0;border:0;border-radius:13px}.tablist-pill .tab-on,.tablist-pill .tab-on:hover{background:var(--brand);color:var(--on-brand)}.class-panel{display:grid;gap:1.25rem}.general-group,.special-card{padding:1.3rem 1.4rem 1.4rem;border-radius:20px}.group-head{display:flex;align-items:center;gap:1rem;margin-bottom:1.1rem}.group-head h3,.group-head p{margin:0}.group-icon{display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:14px;background:var(--tile-green-bg);color:var(--tile-green-ink)}.group-icon-brand{background:var(--brand-soft);color:var(--brand-ink)}.general-body{display:grid;gap:1rem}.general-group .att-card,.general-group .hw-card{border:1px solid var(--line);border-radius:16px;box-shadow:none}.hw-card{padding:1.1rem 1.2rem}.hw-head{display:flex;align-items:center;gap:.75rem;margin-bottom:.9rem}.hw-head h4,.hw-head p{margin:0}.hw-today{margin:0 0 .9rem;padding:.55rem .9rem;border-radius:12px;background:var(--good-soft);color:var(--good-ink);font-size:.93rem}.hw-form{display:grid;gap:.9rem}.hw-card .field{margin-bottom:.9rem}.hw-form .field{margin-bottom:0}.hw-card .alert{margin-top:.9rem}.hw-actions{display:flex;flex-wrap:wrap;gap:.6rem}.hw-actions .btn{flex:1 1 10rem}.hw-submit{display:flex}.att-confirm-summary{margin:.75rem 0 0;padding:.65rem .9rem;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);font-weight:600}.att-card{padding:1.3rem 1.4rem 1.4rem;border-radius:20px}.att-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.att-head h3,.att-head p{margin:0}.att-counts{margin:0;color:var(--ink-2);font-size:.95rem;white-space:nowrap}.att-box{margin-bottom:1rem;background:var(--surface-2);border:1px solid var(--line);border-radius:16px;overflow:hidden}.att-box-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.7rem 1rem;border-bottom:1px solid var(--line)}.att-markall{display:inline-flex;align-items:center;gap:.4rem;min-height:34px;padding:0 .9rem;border:1px solid var(--good-line);border-radius:999px;background:var(--good-soft);color:var(--good-ink);font:inherit;font-size:.9rem;font-weight:700;cursor:pointer}.att-markall:hover{filter:brightness(1.1)}.att-rows{margin:0;padding:0;list-style:none}.att-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.65rem 1rem}.att-row+.att-row{border-top:1px solid var(--line)}.att-student{display:grid;min-width:0}.att-name{overflow-wrap:anywhere}.att-roll{font-size:.85rem;line-height:1.3}.status-pill{flex:none;min-width:6.5rem;min-height:40px;padding:0 1rem;border:1px solid transparent;border-radius:999px;font:inherit;font-weight:700;cursor:pointer;transition:filter .15s}@media(hover:hover){.status-pill:hover{filter:brightness(1.12)}}.status-pill-good{background:var(--good-soft);border-color:var(--good-line);color:var(--good-ink)}.status-pill-warn{background:var(--warn-soft);border-color:var(--warn-line);color:var(--warn-ink)}.status-pill-bad{background:var(--bad-soft);border-color:var(--bad-line);color:var(--bad-ink)}.att-hint{margin:0 0 .75rem;font-size:.92rem}.att-other{display:block;margin-top:.85rem;text-align:center;color:var(--ink-2);font-size:.93rem}.special-form{display:grid;gap:1.15rem}.kind-block{display:grid;gap:.5rem}.preset-label{font-weight:700;font-size:.95rem}.kind-chips,.preset-options{display:flex;flex-wrap:wrap;gap:.5rem}.kind-chip,.preset-chip{display:inline-flex;align-items:center;gap:.45rem;min-height:42px;padding:0 1rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font:inherit;font-size:.95rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}.kind-chip:hover,.preset-chip:hover{border-color:var(--brand-line);background:var(--surface-2)}.kind-chip.is-on,.preset-chip.is-on{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.preset{display:grid;gap:.5rem}.preset-text{width:100%}.special-time{max-width:10rem}.special-referral{display:flex;align-items:center;gap:.5rem;margin:0;padding:.65rem .9rem;border:1px solid var(--warn-line);border-radius:12px;background:var(--warn-soft);color:var(--warn-ink);font-weight:600;font-size:.93rem}.special-auto{margin:0;font-size:.9rem}.picker{display:grid;gap:.6rem}.picker-head{display:flex;align-items:center;gap:.75rem}.picker-count{color:var(--ink-2);font-size:.9rem}.picker-all{display:inline-flex;align-items:center;gap:.35rem;margin-inline-start:auto;min-height:34px;padding:0 .85rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font:inherit;font-size:.88rem;font-weight:700;cursor:pointer}.picker-all:disabled{opacity:.5;cursor:default}.picker-chips{display:flex;flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none}.picker-chip{display:inline-flex;align-items:center;gap:.3rem;min-height:32px;padding:0 .4rem 0 .8rem;border:1px solid var(--good-line);border-radius:999px;background:var(--good-soft);color:var(--good-ink);font-size:.9rem;font-weight:700}.picker-chip-x{position:relative;display:grid;place-items:center;width:22px;height:22px;border:0;border-radius:999px;background:transparent;color:inherit;cursor:pointer}.picker-chip-x:before{content:"";position:absolute;inset:-11px}@media(hover:hover){.picker-chip-x:hover{background:var(--good-line)}}.picker-search{display:flex;align-items:center;gap:.5rem;padding-inline:.8rem;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink-2)}.picker-search input{flex:1;min-height:42px;border:0;background:transparent;color:var(--ink);font:inherit;outline:none}.picker-search:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.picker-list{margin:0;padding:0;max-height:16rem;overflow-y:auto;list-style:none;border:1px solid var(--line);border-radius:14px;background:var(--surface-2)}.picker-list li+li{border-top:1px solid var(--line)}.picker-option{display:flex;align-items:center;gap:.75rem;min-height:46px;padding:.35rem 1rem;cursor:pointer}.picker-option.is-on{background:var(--brand-soft)}.picker-option input{width:1.1rem;height:1.1rem;accent-color:var(--brand-ink)}.picker-name{flex:1;min-width:0;overflow-wrap:anywhere;font-weight:600}.picker-roll{font-size:.85rem}.picker-empty{margin:0;padding:1rem;text-align:center}.picker.has-error .picker-list{border-color:var(--bad-line)}.preview{padding:.9rem 1.1rem;border:1px dashed var(--brand-line);border-radius:14px;background:var(--surface-2)}.preview-title{display:flex;align-items:center;gap:.4rem;margin:0 0 .4rem;color:var(--brand-ink);font-size:.9rem;font-weight:700}.preview-body,.preview-empty{margin:0;line-height:1.8}.log-card{padding:0;border-radius:20px;overflow:hidden}.log-head{display:flex;align-items:center;gap:.85rem;padding:1rem 1.4rem;border-bottom:1px solid var(--line)}.log-head h3{flex:1;margin:0;font-size:1.1rem}.log-icon{display:grid;place-items:center;flex:none;width:42px;height:42px;border-radius:12px;background:var(--tile-green-bg);color:var(--tile-green-ink)}.log-count{font-size:.92rem;white-space:nowrap}.log-empty{margin:0;padding:2.4rem 1.4rem;text-align:center}.log-capped{margin:0;padding:.6rem 1.4rem 1rem;font-size:.9rem}.log-card>.btn{margin:.6rem 1.4rem 1rem}.log-table{width:100%;border-collapse:collapse}.log-table th,.log-table td{padding:.85rem 1.4rem;text-align:start;vertical-align:top}.log-table th{color:var(--ink-2);font-size:.88rem;font-weight:700;border-bottom:1px solid var(--line)}.log-table td{border-top:1px solid var(--line)}.log-table tbody tr:first-child td{border-top:0}.log-type,.log-students{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem}.log-detail{font-size:.88rem;line-height:1.4}.log-student{color:var(--ink);font-weight:700;text-decoration:none}.log-student:hover{text-decoration:underline}.log-date,.log-time{display:block}.log-time{font-size:.88rem;line-height:1.4}.log-delete{color:var(--bad)}.log-notice{display:inline-flex;flex-wrap:wrap;gap:.4rem}@media(max-width:719px){.log-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.log-table,.log-table tbody,.log-table tr,.log-table td{display:block}.log-table tr{padding:.75rem 1.1rem;border-top:1px solid var(--line)}.log-table tbody tr:first-child{border-top:0}.log-table td{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:.3rem 0;border:0}.log-table td:before{content:attr(data-label);color:var(--ink-2);font-size:.88rem;font-weight:700}.att-head{flex-direction:column;gap:.4rem}}.action-rows{display:grid;gap:.75rem;margin:0;padding:0;list-style:none}@media(min-width:900px){.action-rows{grid-template-columns:repeat(3,minmax(0,1fr))}}.action-row{display:flex;align-items:center;gap:.85rem;height:100%;min-height:76px;padding:.9rem 1rem;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-sm);color:var(--ink);text-decoration:none;transition:border-color .15s,transform .15s}.action-row:hover{border-color:var(--brand-line);color:var(--ink);transform:translateY(-2px)}.action-row:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.action-row-icon{width:48px;height:48px;border-radius:14px}.action-row-text{display:grid;flex:1;gap:.15rem;min-width:0}.action-row-title{font-family:var(--font-head);font-size:1.1rem;font-weight:800}.action-row-state{color:var(--ink-2);font-size:.92rem;line-height:1.5}.action-row-state.is-warn{color:var(--warn);font-weight:700}.action-row-state.is-good{color:var(--good);font-weight:700}.att-state{display:flex;align-items:center;gap:.35rem;margin:.25rem 0 .75rem;font-weight:700}.att-state.is-saved{color:var(--good)}.att-state.is-unsaved{color:var(--warn)}.week{display:grid;gap:1rem}.day-card{padding:1rem 1.25rem 0;border-radius:18px;overflow:hidden}.day-card.is-today{border-color:var(--brand-line);box-shadow:0 0 0 2px var(--brand-soft)}.day-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.6rem}.day-head h3{margin:0;font-size:1.1rem}.day-empty{margin:0;padding:0 0 1rem}.periods{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}.period{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem .9rem;margin:0 -1.25rem;padding:.65rem 1.25rem}.period+.period{border-top:1px solid var(--line)}.period:nth-child(odd){background:var(--surface-2)}.period-time{flex:none;padding:.15rem .7rem;border-radius:999px;background:var(--surface);border:1px solid var(--line);color:var(--ink-2);font-size:.88rem;font-weight:700;font-variant-numeric:tabular-nums}.period .badge{margin-inline-start:auto}.period-subject{flex:1;min-width:6rem;overflow-wrap:anywhere}.period-teacher{font-size:.9rem}.week{max-width:48rem;margin-inline:auto}@media(max-width:480px){.period{margin:0 -1rem;padding-inline:1rem}.day-card{padding-inline:1rem}}.timetable-card{margin-top:1.5rem;padding:1.25rem 1.4rem 1.4rem;border-radius:20px}.timetable-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.timetable-head h2,.timetable-head p{margin:0}.tt-rows{display:grid;gap:.75rem;margin:0 0 1rem;padding:0;list-style:none}.tt-row{display:grid;grid-template-columns:8rem 7rem 7rem minmax(8rem,1fr) minmax(8rem,1fr) auto;align-items:end;gap:.6rem;padding:.75rem;border:1px solid var(--line);border-radius:14px;background:var(--surface-2)}.tt-row.has-problem{border-color:var(--bad-line)}.tt-row .field{margin:0}.tt-problem{grid-column:1 / -1;margin:0;color:var(--bad);font-size:.9rem;font-weight:600}.tt-actions{display:flex;flex-wrap:wrap;gap:.6rem}@media(max-width:899px){.tt-row{grid-template-columns:1fr 1fr}.tt-row .tt-wide{grid-column:1 / -1}}.charter-page{max-width:62rem}.charter-notice{scroll-margin-block:5rem}.charter-notice:not(:empty){margin-bottom:1rem}.charter-filters{grid-template-columns:1fr;margin-bottom:0}@media(min-width:720px){.charter-filters{grid-template-columns:1fr 1fr}.charter-filters:has(.field:only-child){grid-template-columns:minmax(0,18rem)}}.tablist{display:flex;gap:.25rem;margin:1.25rem 0;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}.tab{display:inline-flex;align-items:center;gap:.5rem;min-height:46px;padding:.55rem 1rem;margin-bottom:-1px;border:0;border-bottom:3px solid transparent;background:none;color:var(--ink-2);font:inherit;font-weight:700;white-space:nowrap;cursor:pointer}.tab:hover{color:var(--ink)}.tab-on,.tab-on:hover{color:var(--brand-ink);border-bottom-color:var(--brand)}.tab:focus-visible{outline-offset:-3px}.nowrap{white-space:nowrap}@media(max-width:719px){.tablist{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 14px,#000 calc(100% - 14px),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 14px,#000 calc(100% - 14px),transparent 100%)}.tab{padding-inline:.75rem;gap:.4rem}}@media(max-width:479px){.tablist{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:0;overflow-x:visible;-webkit-mask-image:none;mask-image:none}.tab{flex-direction:column;justify-content:center;gap:.1rem;padding:.4rem .25rem;font-size:.95rem;line-height:1.35;text-align:center;white-space:normal}}[role=tabpanel]:focus{outline:none}.charter-weeks{display:flex;flex-direction:column;gap:1.75rem}.charter-week-title{display:flex;align-items:center;flex-wrap:wrap;gap:.2rem .6rem;margin:0 0 .75rem;padding-bottom:.4rem;border-bottom:1px solid var(--line);font-size:1.1rem}.charter-week-now{font-family:var(--font-body)}.charter-card{scroll-margin-block:6rem}.charter-card .item-title-static{margin:0}.charter-card-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem .5rem}.charter-date{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.35rem;min-width:0;color:var(--ink-2);font-size:.95rem}.btn-sm.charter-toggle{flex:none;gap:.2rem;padding-inline:.6rem;font-size:.92rem;margin-inline-start:auto}.charter-toggle-icon{transition:transform .15s ease}.charter-toggle-icon-open{transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.charter-toggle-icon{transition:none}}@media(max-width:479px){.charter-card-foot .charter-date{font-size:.9rem}.charter-card-foot .charter-date .icon{display:none}}.charter-details{display:flex;flex-direction:column;gap:.75rem;padding-top:.75rem;border-top:1px solid var(--line)}.charter-details[hidden]{display:none}.charter-facts{display:flex;flex-direction:column;gap:.6rem;margin:0}.charter-fact dt{color:var(--ink-2);font-size:.88rem;font-weight:700}.charter-fact dd{margin:.1rem 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.charter-fact[data-fact=value] dd{color:var(--brand-ink);font-weight:700}.charter-note{margin:0;font-size:.92rem;color:var(--ink-2)}.charter-note-bad{color:var(--bad);font-weight:700}.charter-card-highlight{outline:2px solid var(--brand);outline-offset:2px}.charter-doc{display:flex;flex-direction:column;gap:.25rem;padding:.8rem .95rem;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm)}.charter-doc h4{margin:0 0 .15rem;font-size:1rem;color:var(--brand-ink)}.charter-doc p{margin:0}.charter-doc-organizer{font-weight:700}.charter-doc .charter-facts{gap:.5rem}.charter-doc-form{padding-top:.75rem;border-top:1px dashed var(--line-strong)}.charter-tiles{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:1rem}.charter-tiles .stat{padding:.85rem}.charter-tiles .stat-label{font-size:.95rem;line-height:1.35}@media(max-width:479px){.charter-tiles{gap:.5rem}.charter-tiles .stat{padding:.7rem .6rem}.charter-tiles .stat-value{font-size:1.6rem}.charter-tiles .stat-label{font-size:.85rem}}.charter-next{display:flex;align-items:center;gap:.6rem;margin:0 0 1.5rem;padding:.85rem 1.1rem;background:var(--brand-soft);border:1px solid var(--brand-line);border-radius:var(--radius);color:var(--brand-ink);font-weight:700}.charter-next .icon{flex:none}.charter-next-none{background:var(--surface);border-color:var(--line);color:var(--ink-2);font-weight:400}.dialog-form{width:min(94vw,34rem);max-height:92vh;max-height:calc(100dvh - 2rem);overflow-y:auto}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.dialog-head h2,.dialog-intro{margin:0}.dialog-form .dialog-actions{margin-top:.25rem;position:sticky;bottom:0;background:var(--surface);padding-block:.5rem}.recognition-page{max-width:62rem}.recognition-rule{margin:0 0 1rem;color:var(--ink-2)}.recognition-filters{grid-template-columns:1fr}@media(min-width:720px){.recognition-filters{grid-template-columns:minmax(0,20rem)}}.period-note{margin:-.5rem 0 1rem;color:var(--ink-2);font-size:.92rem}.rank-list{display:flex;flex-direction:column;gap:.75rem}.rank-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.35rem 1rem;padding:.9rem 1.05rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.rank-badge{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--line-strong);background:var(--surface-2);color:var(--ink-2);font-family:var(--font-head);font-weight:800;font-size:1.1rem}.rank-row-1{border-color:var(--brand-line)}.rank-row-1 .rank-badge{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.rank-row-2 .rank-badge,.rank-row-3 .rank-badge{background:var(--brand-soft);border-color:var(--brand-line);color:var(--brand-ink)}.rank-main{min-width:0}.rank-name{margin:0;font-family:var(--font-head);font-weight:700;font-size:1.1rem;overflow-wrap:anywhere}.rank-last time{display:inline-block}.rank-children,.rank-last{margin:0;color:var(--ink-2);font-size:.92rem;overflow-wrap:anywhere}.rank-score{display:flex;flex-direction:column;align-items:flex-end;text-align:end}.rank-points{font-family:var(--font-head);font-weight:800;font-size:1.35rem;line-height:1.2;white-space:nowrap}.rank-split{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:0 .75rem;color:var(--ink-2);font-size:.85rem}@media(max-width:559px){.rank-row{grid-template-columns:auto minmax(0,1fr)}.rank-score{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.1rem .75rem;padding-top:.5rem;border-top:1px dashed var(--line);text-align:start}.rank-split{justify-content:flex-start}}.honor{margin-top:2.25rem}.honor-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.75rem 1rem;margin-bottom:.9rem}.honor-head h2{margin:0}.honor-head p{margin:0;color:var(--ink-2)}.honor-actions{display:flex;flex-wrap:wrap;gap:.5rem}.honor-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.honor-table th,.honor-table td{padding:.7rem .95rem;text-align:start;vertical-align:top;border-bottom:1px solid var(--line)}.honor-table tbody tr:last-child td,.honor-table tbody tr:last-child th{border-bottom:0}.honor-table thead th{background:var(--surface-2);color:var(--ink-2);font-size:.9rem}.honor-table tbody th{font-weight:700}.honor-table .num{font-family:var(--font-head);font-weight:800}@media(max-width:639px){.honor-table,.honor-table tbody,.honor-table tr,.honor-table td,.honor-table tbody th{display:block}.honor-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.honor-table tr{padding:.6rem .95rem;border-bottom:1px solid var(--line)}.honor-table tbody tr:last-child{border-bottom:0}.honor-table td,.honor-table tbody th{display:flex;gap:.5rem;padding:.2rem 0;border:0}.honor-table td:before,.honor-table tbody th:before{content:attr(data-label);flex:none;min-width:6.5rem;color:var(--ink-2);font-weight:700}}@media print{.honor-table{display:table}.honor-table tbody{display:table-row-group}.honor-table tr{display:table-row}.honor-table td,.honor-table tbody th{display:table-cell}.honor-table thead{position:static;width:auto;height:auto;clip:auto;overflow:visible}.honor-table td:before,.honor-table tbody th:before{content:none}.honor-table{border:0;border-radius:0}.honor-table tbody tr:last-child td,.honor-table tbody tr:last-child th{border-bottom:1px solid var(--line-strong)}.honor-table thead th{color:var(--ink)}}.print-header,.print-footer{display:none}@media print{@page{size:A4;margin:16mm 14mm 18mm}html,body{background:var(--bg);color:var(--ink)}body{min-height:0;font-size:11.5pt;line-height:1.6}*{box-shadow:none!important;text-shadow:none!important;animation:none!important;transition:none!important}.skip-link,.site-header,.site-footer,.shell-sidebar,.shell-topbar,.shell-scrim,.assistant-panel,dialog,.no-print{display:none!important}.shell,.shell-body,.app-shell{display:block;min-height:0;background:none}.shell-content,.main,.container{width:auto;max-width:none;margin:0;padding:0}.shell-content>*,.main>*,.container>*{max-width:none}body:has(.print-area) main *:not(:has(.print-area)):not(.print-area):not(.print-area *){display:none!important}.print-area{margin:0;padding:0;border:0;background:none;color:var(--ink)}.print-area .print-header{display:block;margin-bottom:8mm;padding-bottom:4mm;border-bottom:2px solid var(--ink)}.print-brand{margin:0 0 2mm;font-family:var(--font-head);font-size:20pt;font-weight:800;letter-spacing:-.01em;text-align:start}.print-title{margin:0 0 2mm;font-size:17pt}.print-meta{display:flex;flex-wrap:wrap;gap:0 8mm;margin:0;color:var(--ink-2);font-size:10.5pt}.print-area .print-footer{display:block;margin-top:10mm;padding-top:3mm;border-top:1px solid var(--line-strong);color:var(--ink-2);font-size:10pt;text-align:center}.print-area .card{margin:0;padding:0;border:0;background:none}.print-area table{width:100%;border-collapse:collapse}.print-area th,.print-area td{padding:2.5mm 3mm;border:1px solid var(--line-strong);text-align:start;vertical-align:top}.print-area thead th{background:var(--surface-2)}.print-area tbody th{background:none}.print-area thead{display:table-header-group}.print-area tr,.print-area li,.print-area .avoid-break{break-inside:avoid;page-break-inside:avoid}.print-area h2,.print-area h3{break-after:avoid}.print-area a{color:inherit;text-decoration:none}}.case-types-wrap{margin-bottom:1rem}.case-types{display:grid;gap:.75rem;grid-template-columns:repeat(2,minmax(0,1fr))}@media(min-width:900px){.case-types{grid-template-columns:repeat(4,minmax(0,1fr))}}.case-type-card{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;width:100%;min-height:44px;padding:.85rem .9rem;border:1.5px solid var(--line);border-radius:16px;background:var(--surface);color:var(--ink);font:inherit;text-align:start;cursor:pointer;box-shadow:var(--shadow-sm);transition:border-color .15s,background-color .15s}.case-type-card:hover{border-color:var(--brand-line)}a.case-type-card{height:100%;text-decoration:none;transition:border-color .15s,transform .15s}a.case-type-card:hover{color:var(--ink);transform:translateY(-2px)}a.case-type-card:focus-visible,.case-all-link:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.case-all-link{display:flex;align-items:center;gap:.6rem;margin-top:.75rem;padding:.85rem 1rem;border:1.5px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-sm);color:var(--ink);text-decoration:none}.case-all-link:hover{border-color:var(--brand-line);color:var(--ink)}.case-all-name{flex:1;font-family:var(--font-head);font-weight:800}.case-type-card.is-on{border-color:var(--brand);background:var(--brand-soft);box-shadow:inset 0 0 0 1px var(--brand)}.case-type-icon{display:grid;place-items:center;flex:none;width:42px;height:42px;border-radius:12px}.case-type-name{font-family:var(--font-head);font-size:1.05rem;font-weight:800;line-height:1.35}.case-type-count{color:var(--ink-2);font-size:.9rem;line-height:1.5}.case-type-card.is-on .case-type-count{color:var(--brand-ink)}.case-filters{display:grid;gap:.75rem;margin-bottom:1.1rem}@media(min-width:900px){.case-filters{grid-template-columns:minmax(0,1fr) minmax(220px,280px);align-items:end}}.case-last-action{gap:.15rem .4rem}.case-last-action strong{color:var(--ink)}.case-late{display:flex;align-items:center;gap:.5rem;margin:0;padding:.45rem .8rem;border:1px solid var(--bad-line);border-radius:10px;background:var(--bad-soft);color:var(--bad-ink);font-size:.95rem;font-weight:700}.case-late .icon{flex:none}.case-open{margin-inline-start:auto}.dialog-text .dialog-sub{margin-bottom:.6rem;color:var(--ink)}.case-controls{margin-bottom:.75rem}.case-followup{margin-top:1rem}.case-followup input[type=date]{max-width:14rem}.log-who{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem}.case-quick{margin-bottom:.5rem}.tl{display:flex;flex-direction:column;gap:.65rem;margin:0;padding:0;list-style:none}.tl-item{display:flex;align-items:flex-start;gap:.75rem;min-width:0;padding:.8rem .9rem;border:1px solid var(--line);border-inline-start:4px solid var(--line-strong);border-radius:14px;background:var(--surface-2)}.tl-item[data-tone=good]{border-inline-start-color:var(--good)}.tl-item[data-tone=warn]{border-inline-start-color:var(--accent)}.tl-item[data-tone=bad]{border-inline-start-color:var(--bad)}.tl-item[data-tone=brand]{border-inline-start-color:var(--brand)}.tl-icon{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:10px;background:var(--surface);color:var(--ink-2)}.tl-item[data-tone=good] .tl-icon{color:var(--good)}.tl-item[data-tone=warn] .tl-icon{color:var(--warn)}.tl-item[data-tone=bad] .tl-icon{color:var(--bad)}.tl-item[data-tone=brand] .tl-icon{color:var(--brand-ink)}.tl-main{flex:1;min-width:0}.tl-top{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .6rem}.tl-title{font-family:var(--font-head);overflow-wrap:anywhere}.tl-time{margin-inline-start:auto;color:var(--ink-2);font-size:.88rem}.tl-text{margin:.35rem 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.tl-meta{display:flex;flex-wrap:wrap;gap:.1rem 1rem;margin:.3rem 0 0;color:var(--ink-2);font-size:.88rem}.tl-engagement{margin-top:.5rem}.tl-engagement-top{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .6rem;margin:0 0 .35rem;font-size:.9rem}.tl-parents{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none}.tl-parents li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem .6rem;padding:.4rem .7rem;border-radius:10px;background:var(--surface);font-size:.92rem}.tl-state{min-width:0;overflow-wrap:anywhere}.tl-state-good{color:var(--good);font-weight:700}.tl-state-warn{color:var(--warn);font-weight:700}.tl-state-muted{color:var(--ink-2)}.settings-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem 1rem}.settings-head h2{margin:0}.settings-group{min-width:0;margin:0;padding:.9rem 1rem 1.1rem;border:1px solid var(--line);border-radius:14px}.settings-group legend{padding-inline:.5rem;font-family:var(--font-head);font-weight:700;color:var(--brand-ink)}.field-paused input{background:var(--surface-2);color:var(--ink-2);cursor:not-allowed}.inquiry-types{margin-top:.75rem}.case-type-count.is-warn{color:var(--warn);font-weight:700}.tile-compact{min-height:0;padding:1.15rem 1.2rem 1.05rem;border-radius:18px}.tile-compact .tile-top{margin-bottom:.6rem}.tile-compact .tile-icon{width:52px;height:52px;border-radius:14px}.tile-compact .tile-title{font-size:1.12rem}.tile-compact .tile-line{font-size:.95rem}.type-grid,.class-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}@media(min-width:720px){.type-grid,.class-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}}@media(min-width:1100px){.type-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:440px){.tile-compact{padding:.95rem .9rem .85rem}.tile-compact .tile-icon{width:44px;height:44px}.tile-compact .tile-title{font-size:1.02rem}.tile-compact .tile-line{font-size:.88rem;line-height:1.5}.tile-compact .tile-link{font-size:.9rem}}.inbox-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem 1rem;margin-bottom:.75rem}.inbox-head .back-link{margin-bottom:0}.inbox-title{margin:0;font-size:1.4rem}.filters-inbox{grid-template-columns:1fr}@media(min-width:720px){.filters-inbox{grid-template-columns:2fr 1fr}}.filters-inbox .filter-wide{grid-column:1 / -1}.student-filter{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.25rem .75rem;font-weight:700}.chat-head .contact-links{margin-top:.7rem}.contact-links{display:flex;flex-wrap:wrap;gap:.5rem}.chat-layout{display:grid;gap:0 1.25rem;grid-template-columns:minmax(0,1fr);align-items:start}@media(min-width:960px){.chat-layout{grid-template-columns:minmax(0,1fr) 19rem}.chat-side{position:sticky;top:1rem}}.chat-main,.chat-side{min-width:0}.chat-card-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem .75rem;margin-bottom:.9rem}.chat-card-head h2{margin:0}.chat-side h3{margin:1rem 0 .2rem}.chat-side>.card>p.muted{margin:0 0 .6rem;font-size:.93rem}.close-chat{margin-top:.75rem}.thread{display:flex;flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none}.bubble{max-width:min(100%,38rem);padding:.65rem .95rem .7rem;background:var(--surface-2);border:1px solid var(--line);border-radius:16px;min-width:0}.bubble-other{align-self:flex-start;border-end-start-radius:4px}.bubble-own{align-self:flex-end;background:var(--brand-soft);border-color:var(--brand-line);border-end-end-radius:4px}.bubble-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem .75rem;margin-bottom:.2rem;color:var(--ink-2);font-size:.86rem}.bubble-meta strong{color:var(--ink)}.bubble-body{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.suggestion-block+.suggestion-block{margin-top:.9rem;padding-top:.9rem;border-top:1px solid var(--warn-line)}.suggestion-block h4{margin:0 0 .3rem;font-size:.98rem;color:var(--warn-ink)}.suggestions .chips{margin-bottom:0}.suggestions .chip{background:var(--surface);border-color:var(--warn-line)}.suggestions .chip:hover{background:var(--surface-2);border-color:var(--warn);color:var(--ink)}.meeting-pick{margin:.75rem 0 0;padding:.75rem .9rem .9rem;min-width:0;background:var(--surface);border:1.5px dashed var(--warn-line);border-radius:var(--radius-sm)}.meeting-pick legend{padding-inline:.4rem;font-weight:700;color:var(--warn-ink)}.meeting-pick .muted{margin:0 0 .6rem;font-size:.93rem}.composer-closed,.composer-placeholder{margin:0;font-size:.93rem}.composer-placeholder{color:var(--warn-ink)}.follow-up{margin-top:.4rem;padding-top:.75rem;border-top:1px dashed var(--line-strong)}.follow-up .field label{font-size:.93rem}.excuse-group{margin-bottom:.5rem}.group-title{display:flex;align-items:center;gap:.6rem}.group-count{min-width:1.9rem;padding:0 .55rem;border-radius:999px;background:var(--surface-2);border:1px solid var(--line-strong);color:var(--ink-2);font-size:.9rem;font-weight:800;line-height:1.7;text-align:center}.group-empty{margin:0 0 .5rem}.excuse-line{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .6rem;margin:0}.excuse-line .item-label,.excuse-note-block .item-label{display:inline;font-weight:700;color:var(--ink)}.excuse-note-block{display:flex;flex-direction:column;gap:.1rem}.excuse-category{margin:0 0 .3rem}.dialog-wide{width:min(94vw,720px)}.dialog-form{max-height:92vh;max-height:calc(100dvh - 2rem);overflow-y:auto}.doc-frame{display:grid;place-items:center;min-height:8rem;padding:.75rem;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm)}.doc-frame img{max-width:100%;max-height:65vh;object-fit:contain;border-radius:6px}.doc-pdf{gap:.4rem;text-align:center;color:var(--ink-2)}.doc-pdf p{margin:0;max-width:34ch}.category-pick{min-width:0;margin:0;padding:0;border:0}.category-pick legend{padding:0;margin-bottom:.4rem;font-weight:700;font-size:.97rem}.category-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}@media(min-width:560px){.category-options{grid-template-columns:repeat(4,minmax(0,1fr))}}.segment-on.segment-category{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-ink)}.category-pick.has-error .segment{border-color:var(--bad)}.excuse-window-closed{margin:0;font-size:.93rem}.filters-search-only{grid-template-columns:1fr}@media(min-width:720px){.filters-search-only{grid-template-columns:minmax(0,28rem)}}.roster{display:flex;flex-direction:column;gap:.5rem;margin:0 0 1rem}.roster-row{display:flex;align-items:center;gap:.75rem;padding:.65rem .85rem;background:var(--surface);border:1px solid var(--line);border-radius:14px}.roster-main{display:flex;flex-direction:column;flex:1;min-width:0;line-height:1.45}.roster-name{overflow-wrap:anywhere}.roster-meta{font-size:.9rem}.roster-actions{display:flex;align-items:center;flex:none;gap:.35rem}@media(max-width:480px){.roster-row{flex-wrap:wrap}.roster-actions{width:100%;justify-content:flex-end;padding-inline-start:calc(44px + .75rem)}}.form-group{display:flex;flex-direction:column;gap:1rem;min-width:0;margin:0;padding:.9rem 1rem 1rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2)}.form-group legend{padding-inline:.4rem;font-family:var(--font-head);font-weight:700}.form-group .form-aside{margin:0}.dialog-form .dialog-body{padding:1.1rem}.child-head-actions{display:flex;flex-wrap:wrap;gap:.5rem}.private-grid{display:grid;gap:0 1.25rem;grid-template-columns:minmax(0,1fr);align-items:start;margin-top:1rem}@media(min-width:900px){.private-grid:has(.private-card+.private-card){grid-template-columns:repeat(2,minmax(0,1fr))}}.private-card h2{display:flex;align-items:center;gap:.4rem;color:var(--brand-ink)}.private-card{border-color:var(--brand-line)}.facts{display:grid;gap:.5rem 1rem;margin:0 0 .9rem}.fact{display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem .6rem}.fact dt{min-width:7.5rem;color:var(--ink-2);font-weight:700;font-size:.93rem}.fact dd{margin:0;overflow-wrap:anywhere}.private-card .contact-links{margin-top:.25rem}@media(min-width:800px){.stat-grid:has(>.stat:nth-child(5)){grid-template-columns:repeat(5,minmax(0,1fr))}}.segment-on.segment-present{background:var(--good-soft);border-color:var(--good);color:var(--good)}.segment-on.segment-late{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.segment-on.segment-absent{background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}.attendance-hint{align-self:end;margin:0;padding-block:.5rem}.sheet{padding:.9rem 1rem 1rem}.sheet-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;margin-bottom:.9rem}.sheet-totals{margin:0;font-size:.93rem}.sheet-hint{margin:.6rem 0 0;font-size:.9rem}.sheet-rows{display:flex;flex-direction:column;margin:.5rem 0 0}.sheet-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding:.7rem 0;border-top:1px solid var(--line)}.sheet-row:first-child{border-top:0}.sheet-student{display:flex;flex-direction:column;min-width:0;flex:1 1 11rem;line-height:1.4}.sheet-name{overflow-wrap:anywhere}.sheet-roll{align-self:flex-start;font-size:.85rem}.status-radios{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;flex:1 1 15rem;max-width:21rem}.status-radio{position:relative;display:grid;place-items:center;min-height:46px;padding:.25rem .4rem;border:1.5px solid var(--line-strong);border-radius:12px;background:var(--surface);color:var(--ink-2);font-weight:700;font-size:.95rem;line-height:1.3;text-align:center;cursor:pointer}.status-radio input{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;opacity:0;cursor:pointer}.status-radio:hover{border-color:var(--ink-2)}.status-radio:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}.status-radio-good.is-on{background:var(--good-soft);border-color:var(--good);color:var(--good)}.status-radio-warn.is-on{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.status-radio-bad.is-on{background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}.sheet-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-top:1rem}@media(max-width:719px){.sheet-actions{position:sticky;bottom:0;z-index:5;margin-inline:-1rem;padding:.75rem 1rem;background:var(--surface);border-top:1px solid var(--line);border-end-start-radius:var(--radius);border-end-end-radius:var(--radius)}}.task-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin-bottom:1rem}.task-summary>li{display:contents}.task-card{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"icon count" "label label" "hint hint";align-items:center;column-gap:.6rem;height:100%;padding:1rem 1.1rem;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-sm);color:var(--ink);text-decoration:none;transition:border-color .15s,transform .15s}a.task-card:hover{border-color:var(--brand-line);transform:translateY(-2px);color:var(--ink)}a.task-card:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.task-card.is-empty{box-shadow:none;opacity:.7}.task-card-icon{grid-area:icon;width:48px;height:48px;border-radius:14px}.task-card-count{grid-area:count;font-family:var(--font-head);font-size:2rem;font-weight:800;line-height:1.1;text-align:start}.task-card-label{grid-area:label;margin-top:.4rem;font-family:var(--font-head);font-size:1.1rem;font-weight:800}.task-card-hint{grid-area:hint;color:var(--ink-2);font-size:.88rem;line-height:1.5}.task-urgent-card{display:flex;align-items:center;gap:.6rem;margin:0 0 1.25rem;padding:.85rem 1rem;background:var(--surface);border:1px solid var(--bad-line);border-inline-start:4px solid var(--bad-solid);border-radius:16px;box-shadow:var(--shadow-sm);color:var(--bad);font-family:var(--font-head);font-weight:800;text-decoration:none;transition:transform .15s}.task-urgent-card:hover{color:var(--bad);transform:translateY(-2px)}.task-urgent-card:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.task-urgent-text{flex:1}.task-urgent-card .task-go{color:var(--bad)}.task-view-head{display:flex;align-items:center;gap:.75rem;margin:0 0 1rem}.task-view-head h2{flex:1;margin:0;font-size:1.25rem}.task-view-icon{width:44px;height:44px;border-radius:12px}.task-view-empty{margin:0 .25rem 1.5rem}.task-list{display:flex;flex-direction:column;gap:.6rem;margin-bottom:1.5rem}.task-item{background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-sm);transition:border-color .15s}.task-item:hover{border-color:var(--brand-line)}.task-item.is-urgent{border-color:var(--bad-line);border-inline-start:4px solid var(--bad-solid)}.task-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"top go" "label go" "meta go";align-items:center;column-gap:.75rem;row-gap:.15rem;padding:.8rem 1rem;color:var(--ink);text-decoration:none;border-radius:inherit}a.task-row:hover{color:var(--ink)}a.task-row:focus-visible{outline-offset:-3px}.task-top{grid-area:top;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.task-kind{display:inline-flex;align-items:center;gap:.3rem;padding:0 .6rem;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);font-size:.82rem;font-weight:700;line-height:1.7}.task-label{grid-area:label;font-weight:700;line-height:1.5;overflow-wrap:anywhere}.task-meta{grid-area:meta;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .9rem;color:var(--ink-2);font-size:.9rem}.task-student{display:inline-flex;align-items:center;gap:.3rem;overflow-wrap:anywhere}.task-go{grid-area:go;color:var(--ink-2)}a.task-row:hover .task-go{color:var(--brand-ink)}.task-item.is-done{box-shadow:none;background:var(--surface-2)}.task-item.is-done .task-label{font-weight:600;color:var(--ink-2)}.task-done-icon{color:var(--good)}.task-done{margin-top:.5rem}.task-done-title{margin:0 0 .6rem;font-size:1.1rem}.task-done-toggle{display:inline-flex;align-items:center;gap:.6rem;min-height:44px;padding:.25rem .5rem;border:0;border-radius:12px;background:transparent;color:var(--ink);font:inherit;font-family:var(--font-head);font-weight:800;cursor:pointer}.task-done-toggle:hover{background:var(--surface-2)}.task-done-empty{margin:0 .5rem 1rem}@media(max-width:719px){.task-summary{gap:.5rem}.task-card{grid-template-columns:1fr;grid-template-areas:"icon" "count" "label";justify-items:start;padding:.8rem}.task-card-icon{width:40px;height:40px}.task-card-count{font-size:1.7rem;text-align:start}.task-card-label{margin-top:0;font-size:1rem}.task-card-hint{display:none}}.task-preview{grid-area:preview;color:var(--ink-2);font-size:.92rem;line-height:1.5}.task-row:has(.task-preview){grid-template-areas:"top go" "label go" "meta go" "preview go"}.report-cards{display:grid;gap:1rem;grid-template-columns:minmax(0,1fr);margin-bottom:1.5rem}@media(min-width:720px){.report-cards{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}}.report-card{position:relative;display:flex;align-items:flex-start;gap:1rem;padding:1.1rem 1.15rem;background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-sm);transition:border-color .15s}.report-card:hover{border-color:var(--brand-line)}.report-card.is-active{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}.report-card-icon{width:52px;height:52px;border-radius:15px}.report-card-main{min-width:0}.report-card-main p{margin:0 0 .5rem;font-size:.95rem;line-height:1.6}.report-card-title{margin:0 0 .2rem;font-size:1.1rem}.report-card-link{color:var(--ink);text-decoration:none}.report-card-link:hover{color:var(--ink)}.report-card-link:after{content:"";position:absolute;inset:0;border-radius:inherit}.report-card-link:focus-visible{outline:0}.report-card:has(.report-card-link:focus-visible){outline:3px solid var(--focus);outline-offset:2px}.report-form{max-width:46rem;margin-bottom:1rem}.report-label{margin:0 0 .35rem;font-weight:700}.report-picker .student-search{max-width:none;margin-inline-end:0}.report-picker .hint{margin:.4rem 0 0}.report-picked{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;background:var(--surface-2);border:1px solid var(--line);border-radius:14px}.report-picked-text{display:flex;flex:1;flex-direction:column;min-width:0;line-height:1.4;overflow-wrap:anywhere}.report-printbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;max-width:56rem;margin:1.25rem auto .75rem}.report-printbar p{margin:0;font-size:.92rem}.report-sheet{max-width:56rem;margin:0 auto 2rem;padding:1.5rem 1.75rem 1.25rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.report-head-inner{display:flex;align-items:flex-start;gap:1rem;padding-bottom:.9rem;border-bottom:2px solid var(--brand)}.report-brand{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-head);font-size:1.5rem;font-weight:800;line-height:1.3}.report-brand-dot{width:.6rem;height:.6rem;border-radius:50%;background:var(--brand)}.report-head-main{flex:1;min-width:0}.report-title{margin:0;font-size:1.35rem}.report-subtitle,.report-generated{margin:0;color:var(--ink-2);font-size:.92rem}.report-confidential{align-self:flex-start;padding:0 .8rem;border:2px solid var(--bad);border-radius:8px;color:var(--bad);font-family:var(--font-head);font-weight:800;line-height:1.8;white-space:nowrap}.report-foot-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:1.5rem;padding-top:.75rem;border-top:1px solid var(--line);color:var(--ink-2);font-size:.92rem}.report-section{margin-top:1.25rem}.report-section-title{margin:0 0 .5rem;padding-bottom:.25rem;border-bottom:1px solid var(--line);font-size:1.05rem}.report-note{margin:0 0 .6rem;color:var(--ink-2);font-size:.93rem}.report-confidential-note{margin-top:.9rem;color:var(--bad-ink);font-weight:600}.report-empty{margin:0;color:var(--ink-2)}.report-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.35rem 1.25rem;margin:0 0 .75rem}.report-fact{display:flex;gap:.4rem;min-width:0}.report-fact dt{flex:none;color:var(--ink-2);font-weight:600}.report-fact dt:after{content:":"}.report-fact dd{margin:0;font-weight:700;overflow-wrap:anywhere}.report-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr));gap:.6rem;margin:0 0 .9rem}.report-stat{display:flex;flex-direction:column-reverse;gap:.1rem;padding:.6rem .8rem;background:var(--surface-2);border:1px solid var(--line);border-radius:14px}.report-stat-value{margin:0;font-family:var(--font-head);font-size:1.6rem;font-weight:800;line-height:1.2}.report-stat-label{color:var(--ink-2);font-size:.88rem;font-weight:600}.report-stat-good .report-stat-value{color:var(--good)}.report-stat-warn .report-stat-value{color:var(--warn)}.report-stat-bad .report-stat-value{color:var(--bad)}.report-table-wrap{overflow-x:auto}.report-table{width:100%;border-collapse:collapse;font-size:.95rem}.report-table th,.report-table td{padding:.45rem .6rem;border-bottom:1px solid var(--line);text-align:start;vertical-align:top}.report-table th{background:var(--surface-2);font-weight:700;white-space:nowrap}.report-cell-name{font-weight:700;overflow-wrap:anywhere}.report-cell-note{min-width:8rem;overflow-wrap:anywhere}.report-chip{display:inline-block;padding:0 .65rem;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);color:var(--ink-2);font-size:.85rem;font-weight:700;line-height:1.7;white-space:nowrap}.report-chip-present{background:var(--good-soft);border-color:var(--good-line);color:var(--good-ink)}.report-chip-late{background:var(--warn-soft);border-color:var(--warn-line);color:var(--warn-ink)}.report-chip-absent{background:var(--bad-soft);border-color:var(--bad-line);color:var(--bad-ink)}.report-chip-sub{color:var(--ink-2);font-size:.85rem;white-space:nowrap}@media(max-width:719px){.report-table,.report-table tbody,.report-table tr,.report-table td{display:block}.report-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.report-table tr{margin-bottom:.5rem;padding:.4rem .75rem;background:var(--surface-2);border:1px solid var(--line);border-radius:12px}.report-table td{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;padding:.2rem 0;border:0;text-align:end}.report-table td:before{content:attr(data-label);flex:none;color:var(--ink-2);font-weight:600;text-align:start}.report-cell-note{min-width:0}.report-sheet{padding:1rem .9rem}.report-head-inner{flex-wrap:wrap}.report-brand{font-size:1.25rem}.report-table{font-size:.95rem}}@media print{@page{size:A4;margin:14mm 12mm}:root{color-scheme:light!important}html,body{background:Canvas!important;color:CanvasText!important;font-size:11pt}.no-print,.site-header,.site-footer,.skip-link,.shell-sidebar,.shell-topbar,.shell-scrim,.assistant-panel,.page-head,dialog{display:none!important}.shell,.shell-body,.shell-content,.app-shell,.main,.container,.reports-page{display:block!important;width:auto!important;max-width:none!important;min-height:0!important;margin:0!important;padding:0!important;background:none!important}.report-sheet{max-width:none;margin:0;padding:0;border:0;border-radius:0}.report-sheet,.report-sheet *{background:transparent!important;box-shadow:none!important;color:CanvasText!important;border-color:GrayText!important}.report-frame{display:table;width:100%}.report-head{display:table-header-group}.report-body{display:table-row-group}.report-foot{display:table-footer-group}.report-head-inner{border-bottom-color:CanvasText!important}.report-confidential{border-color:CanvasText!important;letter-spacing:.05em}.report-section,.report-stats,.report-table tr{break-inside:avoid}.report-section-title{break-after:avoid}.report-table th{border-bottom:2px solid CanvasText!important}.report-chip{border-color:CanvasText!important}.report-table-wrap{overflow:visible}}.platform-totals{margin-bottom:1.25rem}.platform-badges{display:flex;flex-wrap:wrap;gap:.3rem;margin-block:.3rem}.platform-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.acting-as-bar{position:sticky;top:0;z-index:70;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;padding:.55rem 1rem;background:var(--warn-soft);border-bottom:2px solid var(--warn);color:var(--warn-ink);font-weight:700}.acting-as-text{flex:1 1 12rem;min-width:0;overflow-wrap:anywhere}.acting-as-error{flex-basis:100%;font-weight:400}.acting-as-stop{background:var(--warn);color:var(--warn-soft);border-color:var(--warn)}.acting-as-stop:hover{filter:brightness(1.1)}
