:root{font:14px Arial,sans-serif;color:#28313b;background:#f3f4f8;--primary:#535cf5;--line:#e8e9ef;--muted:#667080;--nav:#263755}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:3px}button{cursor:pointer}a{color:#4854c7}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;background:white;border:1px solid #dfe2e9;color:#344052;padding:8px 13px;border-radius:4px;text-decoration:none}button:hover,.button:hover{background:#f2f4ff}button.primary{background:var(--primary);border-color:var(--primary);color:white}button.primary:hover{background:#414ade}button.add{background:var(--primary);border:0;color:white;border-radius:50%;width:34px;height:34px;font-size:24px;padding:0}button.green{border-color:#619260;color:#345e34;border-radius:24px}button.red{border-color:#dcb9bf;color:#a64452;border-radius:24px}button.quiet{border:0;background:none;padding:4px}input,select,textarea{min-width:0;width:100%;border:1px solid #e2e5ed;background:white;border-radius:3px;padding:9px 10px;color:#28313b}input[type=checkbox]{width:auto}input[type=file]{max-width:100%}label{display:grid;gap:6px;font-size:12px;font-weight:bold}h1,h2,h3,p{margin:0 0 12px}h1{font-size:18px}h2{font-size:15px}h3{font-size:12px;letter-spacing:1px;text-transform:uppercase}.muted,small{color:var(--muted)}small{display:block;margin-top:4px}.loading{text-align:center;padding:50px}.login{min-height:100dvh;display:grid;place-items:center;padding:28px 14px}.loginbox{width:min(100%,370px);background:white;border:1px solid var(--line);box-shadow:0 2px 5px #0000000e;padding:36px 34px}.loginbox p{text-align:center;font-size:12px;margin-bottom:30px}.loginbox label{margin-bottom:15px}.loginbox button.primary{width:100%;border-radius:22px;margin:4px 0 10px}.linklike{padding:0;border:0;color:#556170;font-size:12px;background:none}.top,.crumb{background:#fff;border-bottom:1px solid var(--line)}.wrap{max-width:1240px;margin:auto;padding:0 22px}.top .wrap,.crumb .wrap{display:flex;align-items:center;justify-content:space-between;gap:15px;min-height:68px}.crumb .wrap{min-height:43px;font-size:10px;letter-spacing:1.3px;color:var(--muted);font-weight:bold}.brand,.profile,.tools,.actions,.filters{display:flex;gap:12px;align-items:center}.brand strong{display:block}.avatar{display:grid;place-items:center;border-radius:50%;background:#233669;color:#fff;flex:none;font-size:16px;width:38px;height:38px}.profile{text-align:right}.profile small{color:#4c8647}.profile details{position:relative}.profile details summary{cursor:pointer;list-style:none}.profile details div{position:absolute;z-index:3;background:white;padding:10px;box-shadow:0 4px 12px #0002;right:0;min-width:165px;display:grid;gap:5px}.workspace{padding:26px 22px 50px}.dashboard{display:grid;grid-template-columns:245px minmax(0,1fr);gap:20px}.panel,.tile{background:white;border:1px solid var(--line);border-radius:4px;box-shadow:0 2px 3px #00000008}.school{text-align:center;padding:20px;align-self:start}.school .primary{width:100%;margin-top:17px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px}.tile{display:flex;align-items:center;justify-content:flex-start;padding:12px;text-align:left;min-height:58px;gap:13px;width:100%}.tile i{font-size:25px;font-style:normal}.tile em{margin-left:auto;font-style:normal;font-size:11px;color:#916b12;background:#fff0c3;padding:3px 6px;border-radius:3px}.tabbar{display:flex;overflow:auto;background:#f4f5f9;border-bottom:1px solid var(--line)}.tabbar button{min-width:max-content;flex:1;text-align:left;justify-content:flex-start;display:block;border:0;border-top:3px solid transparent;border-radius:0;background:none;padding:10px 16px;color:var(--muted)}.tabbar button.on{border-top-color:var(--primary);background:#fff;color:#222}.box{padding:16px}.tools{justify-content:space-between;margin-bottom:15px;flex-wrap:wrap}.filters{flex-wrap:wrap}.filters input,.filters select{width:auto;max-width:100%}.scroll{overflow:auto}.grid{width:100%;border-collapse:collapse;text-align:left;font-size:12px}.grid th,.grid td{padding:12px 10px;border-bottom:1px solid #edf0f4;vertical-align:middle}.grid th{font-size:10px;letter-spacing:1.1px;text-transform:uppercase;white-space:nowrap}.grid tbody tr:hover{background:#f8f9fc}.grid .empty{text-align:center;color:var(--muted);padding:28px}.pagebar{display:flex;align-items:center;justify-content:space-between;padding:12px 0 0;font-size:12px;color:var(--muted)}.grid button{padding:4px 6px}.actions{gap:5px;white-space:nowrap}.tag{display:inline-block;border-radius:3px;padding:3px 6px;background:#eeeefe;color:#464eb0}.tag.ok{background:#eaf4e5;color:#3c7044}.tag.bad{background:#fbe8ec;color:#a82f58}.cashlayout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:18px}.sidebox{align-self:start;padding:14px;display:grid;gap:5px}.sidebox button{justify-content:flex-start;border:0}.sidebox .on{background:#f0f2ff;font-weight:bold}.shade{position:fixed;inset:0;background:#0008;z-index:4}.drawer{position:fixed;inset:0 auto 0 0;width:min(285px,85vw);background:var(--nav);padding:15px;color:white;overflow:auto;z-index:5}.drawer h3{margin:18px 8px 7px;color:#bdc9df}.drawer button{display:block;width:100%;border:0;background:none;color:white;text-align:left}.drawer button:hover,.drawer .on{background:#ffffff18}.drawer input{background:#ffffff16;color:#fff;border-color:#ffffff26}.drawer input::placeholder{color:#dce4f2}.split{display:grid;grid-template-columns:235px minmax(0,1fr);gap:20px}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.formactions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.info{border:1px solid #efe5c6;background:#fffaf0;padding:11px;margin:14px 0;color:#665534}.error{color:#b32146;font-size:12px;margin:8px 0}.error:empty{display:none}.checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:15px 0}.checks label{display:flex;align-items:center;border:1px solid var(--line);padding:10px}.reporttypes{display:flex;gap:12px;margin:12px 0;flex-wrap:wrap}.reporttypes button.on{background:#a7d7ff}.reporttypes button{min-width:140px}dialog{border:1px solid var(--line);padding:0;border-radius:6px;box-shadow:0 12px 45px #0003;width:min(780px,calc(100% - 24px));color:inherit}dialog::backdrop{background:#1c253b80}.dialoghead{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);font-weight:bold}.dialogbody{padding:18px}.receipt{border:1px solid var(--line);padding:18px;margin-bottom:10px}#toast{position:fixed;bottom:18px;right:18px;background:#25385b;color:white;border-radius:5px;z-index:8;padding:12px 18px;max-width:85vw}#toast:empty,#paper{display:none}.portal{max-width:670px;margin:auto}.portal .panel{margin-bottom:15px}.portal .box h2{margin-top:15px}
@media(max-width:750px){.wrap{padding-left:12px;padding-right:12px}.dashboard,.cashlayout,.split{grid-template-columns:1fr}.school{display:none}.cards{gap:6px}.tile{gap:5px;padding:8px}.tile i{font-size:18px}.profile .who{display:none}.grid th,.grid td{padding:9px 8px}.brand small{display:none}.tabbar button{padding:10px}.filters input,.filters select{max-width:165px}.cashlayout .sidebox{display:flex;overflow:auto}.cashlayout .sidebox button{white-space:nowrap}.workspace{padding-top:14px}}
@media(max-width:450px){.formgrid{grid-template-columns:1fr}.brand strong{font-size:12px}.tile em{display:none}.loginbox{padding:28px 22px}}
@media print{#app,#dialog,#toast{display:none!important}#paper{display:block;background:white;color:#111;padding:12px}body{background:white}#paper.thermal{width:72mm;font-size:10px}#paper.dot{width:185mm}#paper th,#paper td{border:1px solid #ccc}}

.school-logo{object-fit:contain;display:inline-block;flex:none;vertical-align:middle}.login-brand{text-align:center;color:#094884}.login-brand h1{margin:12px 0 8px}.school .school-logo{margin-bottom:14px}

/* School workspace */
:root{--primary:#2457b6;--nav:#17345a;--line:#dfe7f1;--muted:#4f6278;background:#f1f5fa;color:#142c47}
.wrap{max-width:1440px}.top .wrap{min-height:72px}.top{box-shadow:0 2px 8px #1833570a}.brand strong{font-size:16px}.crumb .wrap{min-height:46px}.workspace{padding-top:22px}
.panel,.tile{border-radius:10px}.box{padding:20px}.school{padding:22px 14px}.dashboard{grid-template-columns:minmax(170px,210px) minmax(0,1fr);gap:16px}
.cards{grid-template-columns:repeat(3,minmax(0,1fr))}.cards .tile{min-height:64px}.tile b{overflow-wrap:anywhere}.tile i{flex:none}.tile{border-radius:8px}
.tabbar{border-radius:10px 10px 0 0}.tabbar button{min-height:43px}.tools,.filters{gap:8px}.tools input,.tools select{min-height:40px}.grid th{background:#f1f5fa;color:#304c69;letter-spacing:.55px}.grid td{overflow-wrap:anywhere}.grid td:has(.actions){min-width:max-content}
.quick-records{margin:18px 0}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(146px,1fr));gap:10px}.quick-records h2{margin:0}.quick-records .tools{margin-bottom:12px}
.report-preview{margin-top:20px;display:grid;gap:9px}.preview{border:1px solid var(--line);border-radius:8px;padding:12px}.preview summary{font-weight:bold;cursor:pointer}.preview .scroll{margin-top:12px}.reportactions{flex-wrap:wrap}
.letterhead{display:flex;align-items:center;gap:12px;border-bottom:1px solid #37587c;padding-bottom:10px;margin-bottom:13px}.letterhead h2{margin:0}
dialog{max-height:calc(100dvh - 28px);overflow:auto}.dialoghead{position:sticky;top:0;z-index:1;background:white}.drawer button[hidden]{display:none}.drawer button{min-height:42px}
@media(max-width:1000px){.dashboard{grid-template-columns:1fr}.school{display:none}.cashlayout{grid-template-columns:1fr}.cashlayout .sidebox{display:flex;overflow:auto}.cashlayout .sidebox button{white-space:nowrap}}
@media(max-width:640px){.top .wrap{min-height:58px}.brand strong{font-size:13px}.wrap{padding-inline:12px}.box{padding:12px}.workspace{padding-top:12px}.cards{gap:7px}.cards .tile{padding:8px;min-height:62px}.tile i{display:none}.tile b{font-size:12px}.quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.filters{flex-wrap:wrap}.filters input,.filters select{max-width:100%}.actions{flex-wrap:wrap}.grid .actions{min-width:115px}.grid .actions button{min-height:36px}.formgrid{grid-template-columns:1fr}button,.button{min-height:42px}.formgrid input,.formgrid select,.formgrid textarea,.loginbox input{font-size:16px}.tabbar{overscroll-behavior-inline:contain}.scroll{overscroll-behavior-inline:contain}.dialogbody{padding:12px}}
.report-choice-title{margin-top:22px}.development-preview{margin-top:14px}.development-preview h3{margin:15px 0 4px}
.student-profile{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.student-profile div{padding:8px 0;border-bottom:1px solid var(--line)}.student-profile dt{font-size:12px;color:var(--muted)}.student-profile dd{margin:5px 0 0;font-weight:bold}

.brand-home{color:inherit;text-decoration:none}.brand-home:hover strong{text-decoration:underline}.inline-check{display:flex;align-items:center;gap:8px}.inline-check input{width:auto}

.card-avatar{width:95px;height:120px;object-fit:contain;background:#eef3fa;border:1px solid var(--line);border-radius:6px}.student-card-actions{display:flex;align-items:center;gap:14px;margin:12px 0}.first-login{margin-bottom:10px}.first-login summary{cursor:pointer;color:#2457b6}.loginbox .first-login p{text-align:left;margin:10px 0}.loginbox .first-login label{margin-bottom:8px}
