:root{--navy:#152c46;--teal:#087e83;--bg:#f3f6fa;--muted:#65768b}*{box-sizing:border-box}body{margin:0;font:15px/1.5 system-ui;color:var(--navy);background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0;border-radius:9px;padding:11px 17px;background:var(--teal);color:white}button.secondary{background:#e9f1f4;color:var(--navy)}button.danger{background:#b53e50}input,select,textarea{width:100%;padding:11px;border:1px solid #d4dee8;border-radius:8px;background:white}label{display:block;margin:14px 0 5px;color:var(--muted)}aside{position:fixed;width:238px;inset:0 auto 0 0;background:var(--navy);color:white;padding:28px 20px;overflow:auto}aside h2{margin:0;font-size:25px}aside small{color:#a6c7cd}nav{margin-top:32px}nav button{display:block;width:100%;text-align:left;background:transparent;margin:5px 0;color:#c3d3e3}nav button.active{background:#087e83;color:white}main{margin-left:238px;padding:30px 40px;max-width:1600px}header{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:25px}h1{font-size:28px;margin:0}h2{font-size:20px}p{color:var(--muted)}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.card,.panel{background:white;border:1px solid #e2e8ef;border-radius:16px;padding:23px;margin-bottom:20px}.card strong{display:block;font-size:31px}.card small{color:var(--muted)}.hero{background:linear-gradient(110deg,#087e83,#155472);color:white;border:0}.hero p{color:#d5eff0}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.row input,.row select{width:auto}.split{display:grid;grid-template-columns:1.4fr 1fr;gap:20px}.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;border-bottom:1px solid #edf0f5;padding:14px;white-space:nowrap}th{color:var(--muted);font-weight:500}.tag{display:inline-block;background:#def3ed;color:#087359;padding:4px 10px;border-radius:20px;font-size:12px}.empty{text-align:center;padding:50px;color:var(--muted)}.login{max-width:440px;margin:6vh auto;background:white;padding:32px;border-radius:20px}.login button{margin-top:18px;width:100%}.banner{background:#fff3d8;padding:12px 18px;border-radius:10px;margin-bottom:20px}dialog{border:0;border-radius:18px;max-width:580px;width:95%;max-height:88vh;padding:28px;box-shadow:0 20px 80px #152c4650}dialog::backdrop{background:#152c4670}dialog .row{margin-top:24px}#toast{position:fixed;bottom:25px;right:25px;background:var(--navy);color:white;padding:13px 22px;border-radius:12px;display:none;max-width:90vw}.progress{height:7px;background:#e6eef1;border-radius:5px;overflow:hidden}.progress i{display:block;height:100%;background:var(--teal)}@media(max-width:900px){aside{position:static;width:100%;padding:16px}nav{margin-top:12px;display:flex;overflow:auto}nav button{width:auto;white-space:nowrap}main{margin:0;padding:20px}.cards{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}header{align-items:flex-start}}@media print{aside,button,.banner,.row input,.row select{display:none!important}main{margin:0;padding:0}.panel,.card{break-inside:avoid}body{background:white}}
button:disabled{opacity:.5;cursor:not-allowed}aside>button{margin-top:6px}.cards{grid-template-columns:repeat(4,minmax(0,1fr))}.card strong{overflow-wrap:anywhere}@media(max-width:900px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.card strong{font-size:25px}}@media(max-width:430px){.card{padding:17px}.card strong{font-size:23px}}
@media(max-width:430px){.card strong{font-size:18px;white-space:nowrap}}
.clock-button{display:block;margin-top:8px;font-size:13px;white-space:nowrap}#attList input[type=time]{min-width:135px}
.report-tabs{margin-bottom:18px}.report-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px}.report-filters label{margin:0}.chart-bar{display:grid;grid-template-columns:140px minmax(0,1fr) 110px;align-items:center;gap:14px;width:100%;padding:10px 0;background:transparent;color:var(--navy);border-radius:0;text-align:left}.chart-bar:disabled{opacity:1;cursor:default}.chart-bar[data-chart-class]:hover{background:#eef8f6}.bar-track{height:20px;background:#edf1f5;border-radius:5px;overflow:hidden}.bar-track i{height:100%;display:block;background:#087e83;border-radius:5px}.chart-bar b{text-align:right;font-size:13px}.chart-legend{display:flex;gap:18px;flex-wrap:wrap;font-size:13px}.chart-legend i{display:inline-block;width:10px;height:10px;margin-right:6px}.amount-color{background:#4167a1!important}.received-color{background:#087e83!important}.balance-color{background:#dc9950!important}.month-bars{margin:18px 0;padding-bottom:12px;border-bottom:1px solid #edf1f5}#followupForm button{margin-top:15px}@media(max-width:600px){.chart-bar{grid-template-columns:90px minmax(0,1fr) 90px;gap:8px;font-size:12px}.chart-bar b{font-size:12px}}@media print{.chart-bar{display:grid!important}.report-tabs,.report-filters{display:none!important}.chart-bar i{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.mobile-topbar,.mobile-menu-close,.mobile-menu-shade{display:none}.mobile-menu-shade[hidden]{display:none!important}
@media(max-width:900px){
 .mobile-topbar{display:flex;position:sticky;top:0;z-index:35;background:var(--navy);color:white;align-items:center;justify-content:space-between;padding:12px 16px;min-height:64px;box-shadow:0 2px 12px #152c4620}
 .mobile-topbar b{font-size:21px}.mobile-topbar b span{color:#64d2bc}.mobile-topbar button{min-height:44px;padding:8px 14px}
 aside{position:fixed;inset:0 auto 0 0;width:min(320px,88vw);height:100vh;height:100dvh;z-index:60;padding:20px;overflow-y:auto;overscroll-behavior:contain;transform:translateX(-100%);visibility:hidden;pointer-events:none}
 .nav-open aside{transform:translateX(0);visibility:visible;pointer-events:auto}
 .mobile-menu-close{display:block;margin:0 0 24px auto!important;min-height:44px}
 aside nav{display:block;margin-top:24px;overflow:visible}aside nav button{width:100%;white-space:normal;min-height:46px;margin:5px 0;text-align:left}
 .mobile-menu-shade{display:block;position:fixed;inset:0;z-index:50;border-radius:0;background:#10233799;padding:0}
 main{margin:0;padding:18px 16px;min-width:0}main header{gap:10px;flex-wrap:wrap}main header h1{font-size:25px}main header .row{gap:8px}main header .tag{max-width:180px;overflow-wrap:anywhere}
 input,select,textarea{font-size:16px;min-height:44px}button{min-height:44px}.clock-button{min-height:46px;font-size:14px;width:100%}
 .banner{font-size:13px}.banner select{margin-top:8px}.cards{gap:12px}.card{padding:17px}.card strong{font-size:clamp(16px,4.2vw,23px);white-space:normal;overflow-wrap:normal}
 .tablewrap:has(.mobile-card-table){overflow:visible}
 .mobile-card-table,.mobile-card-table tbody{display:block;width:100%}.mobile-card-table thead,.mobile-card-table .mobile-table-heading{display:none}
 .mobile-card-table .mobile-table-card{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;background:#fff;border:1px solid #dce6ee;border-radius:14px;padding:17px;margin:16px 0;box-shadow:0 2px 6px #152c4605;break-inside:avoid}
 .mobile-card-table td{display:block;white-space:normal;overflow-wrap:anywhere;padding:0;border:0;min-width:0}
 .mobile-card-table td::before{content:attr(data-label);display:block;color:var(--muted);font-size:12px;font-weight:500;margin-bottom:6px}
 .mobile-card-table .mobile-card-title{font-size:18px;font-weight:650;color:var(--navy);padding-bottom:12px;border-bottom:1px solid #e8eef3}
 .mobile-card-table .mobile-card-title::before{display:none}.mobile-card-table .mobile-card-title small{font-weight:400;font-size:13px;display:block}
 .mobile-card-table td input,.mobile-card-table td select{width:100%;max-width:100%}.mobile-card-table td button{margin:6px 6px 0 0}.mobile-card-table td button[data-save],.mobile-card-table td button[data-remind]{width:100%;margin-right:0}
 .report-tabs{gap:8px}.report-tabs button{flex:1 1 auto}.report-filters{grid-template-columns:minmax(0,1fr);gap:12px}.panel{padding:18px}.chart-bar{grid-template-columns:85px minmax(0,1fr) 84px;gap:7px;font-size:12px}.chart-bar b{font-size:12px}
 dialog{max-height:calc(100dvh - 24px);width:calc(100% - 24px);padding:20px}dialog .row button{flex:1 1 auto}#toast{left:12px;right:12px;bottom:16px;max-width:none;font-size:14px}
}
@media(min-width:901px){aside[inert]{pointer-events:auto}.mobile-topbar,.mobile-menu-close,.mobile-menu-shade{display:none!important}}
@media print{.mobile-topbar,.mobile-menu-close,.mobile-menu-shade{display:none!important}}
@media(max-width:900px){#attList .mobile-table-card{grid-template-columns:repeat(2,minmax(0,1fr))}#attList .mobile-table-card td:nth-child(1),#attList .mobile-table-card td:nth-child(2),#attList .mobile-table-card td:nth-child(5),#attList .mobile-table-card td:nth-child(6){grid-column:1/-1}#attList input[type=time]{min-width:0}#attList .clock-button{white-space:normal;padding:10px 6px;font-size:13px;margin-right:0}}
.attendance-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.attendance-controls label{margin:0}.attendance-controls input,.attendance-controls select{min-width:0;width:100%;max-width:100%}.attendance-controls input[type=date]{-webkit-appearance:none;appearance:none}.attendance-summary{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 8px}.attendance-summary span{background:#edf5f5;border-radius:20px;padding:5px 11px;font-size:13px}.attendance-help{font-size:13px;margin:10px 0 18px}.attendance-class-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:22px 0 8px}.attendance-class-heading h2{font-size:17px;margin:0}.attendance-class-heading span{font-size:12px;color:var(--muted)}.attendance-roster{list-style:none;padding:0;margin:0;border:1px solid #e1e9ef;border-radius:12px;overflow:hidden}.attendance-item{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:13px;align-items:center;padding:13px 15px;background:white;border-bottom:1px solid #e8eef3}.attendance-item:last-child{border-bottom:0}.attendance-number{display:flex;align-items:center;justify-content:center;background:#edf3f7;border-radius:50%;width:28px;height:28px;font-size:12px;font-weight:700}.attendance-name{min-width:0}.attendance-name b{font-size:15px;overflow-wrap:anywhere}.attendance-name small{display:block;color:var(--muted);font-size:12px;margin-top:5px}.attendance-state{display:inline-block;font-size:11px;padding:2px 7px;margin-left:8px;border-radius:20px;background:#f3f0e7;color:#806425}.attendance-state.present{background:#dff3eb;color:#087359}.attendance-state.out{background:#e6edf8;color:#4167a1}.attendance-actions{display:flex;gap:7px}.attendance-actions button{padding:8px 12px;font-size:13px;min-height:40px}.attendance-time-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.attendance-time-fields input{width:100%;min-width:0;max-width:100%;-webkit-appearance:none;appearance:none}
@media(max-width:900px){.attendance-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.attendance-controls label{font-size:12px}.attendance-panel{padding:14px}.attendance-item{padding:11px 9px;gap:8px;grid-template-columns:26px minmax(0,1fr) auto}.attendance-number{width:25px;height:25px}.attendance-name b{font-size:14px}.attendance-state{display:table;margin:4px 0 0;font-size:10px}.attendance-actions{gap:5px}.attendance-actions button{font-size:12px;padding:8px 9px;min-height:44px}.attendance-name small{font-size:11px;line-height:1.5}.attendance-summary span{font-size:11px;padding:5px 8px}.attendance-class-heading h2{font-size:16px}.attendance-class-heading span{font-size:11px}.attendance-time-fields{grid-template-columns:minmax(0,1fr)} }
@media print{.attendance-controls{display:none}.attendance-item{break-inside:avoid}}

.student-filters{display:grid;grid-template-columns:2fr repeat(4,minmax(0,1fr));gap:12px}.student-filters label{margin:0;font-size:13px;min-width:0}.student-filters input,.student-filters select{width:100%;min-width:0}.student-toolbar{margin-top:16px}.student-class-counts{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.student-class-counts span{background:#edf5f5;padding:6px 10px;border-radius:8px;font-size:13px}.student-table td{white-space:normal;overflow-wrap:anywhere}.student-table td:last-child{min-width:230px}.student-table td button{margin:3px}.student-table td:first-child{font-weight:700;color:var(--teal)}
@media(max-width:900px){.student-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.student-filters label:first-child{grid-column:1/-1}.student-toolbar{gap:8px}.student-toolbar button{font-size:13px;padding:9px 11px}.student-table .mobile-table-card{grid-template-columns:35px minmax(0,1fr);gap:10px}.student-table .mobile-table-card td:nth-child(1){grid-column:1;grid-row:1;font-size:18px}.student-table .mobile-table-card td:nth-child(1)::before{display:none}.student-table .mobile-table-card td:nth-child(2){grid-column:2;grid-row:1;font-size:17px}.student-table .mobile-table-card td:nth-child(2)::before{display:none}.student-table .mobile-table-card td:nth-child(n+3){grid-column:2}.student-table .mobile-table-card td:last-child{min-width:0;grid-column:1/-1}.student-table .mobile-card-title{border:0;padding:0}.student-table .mobile-table-card{padding:14px}}

.admin-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.admin-controls label{margin:0;min-width:0}.admin-controls input,.admin-controls select{min-width:0;max-width:100%;width:100%;appearance:none}.admin-toolbar{margin:18px 0}.admin-balances{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.admin-balances>div{padding:14px;background:#edf5f5;border-radius:10px}.admin-balances small{display:block;margin-top:8px}.admin-list article{border-top:1px solid #e2e8ef;padding:18px 0;display:flex;justify-content:space-between;gap:14px}.admin-list article>div{min-width:0;overflow-wrap:anywhere}.admin-list article .row{align-content:center;flex-shrink:0}.lesson-day{margin:22px 0;border-top:1px solid #e2e8ef}.lesson-day h2 small{color:var(--muted);font-size:13px;margin-left:10px}.lesson-item{display:flex;justify-content:space-between;gap:16px;border:1px solid #dce6ee;padding:16px;border-radius:12px;margin:12px 0;break-inside:avoid}.lesson-item>div{min-width:0;overflow-wrap:anywhere}.lesson-item h3{margin:8px 0;font-size:17px}.lesson-item .tag{margin-left:10px}.lesson-item .row{max-width:330px;align-content:center}.lesson-warning{background:#fff3d8;padding:8px;border-radius:8px}.lesson-item p{margin:8px 0}.lesson-day small{overflow-wrap:anywhere}
@media(max-width:900px){.admin-controls{grid-template-columns:minmax(0,1fr)}.admin-list article,.lesson-item{display:block}.admin-list article .row,.lesson-item .row{margin-top:12px;max-width:none;gap:8px}.admin-list article button,.lesson-item button{font-size:13px;padding:9px 12px}.lesson-item{padding:14px}.admin-toolbar button{font-size:13px}.admin-balances{grid-template-columns:minmax(0,1fr)}}
@media print{.admin-controls,.admin-toolbar{display:none!important}.lesson-day{break-inside:auto}.lesson-item{break-inside:avoid}.lesson-item .tag{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

.leave-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin:14px 0}.calendar-heading{font-size:12px;color:var(--muted)}.calendar-day{min-height:75px;padding:8px;border:1px solid #e2e8ef;border-radius:8px;overflow-wrap:anywhere}.calendar-day small{display:block;font-size:11px;color:var(--muted)}.calendar-day.has-leave{background:#fff3d8}.calendar-day b{font-size:13px}@media(max-width:900px){.leave-calendar{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-heading,.calendar-blank{display:none}.calendar-day{min-height:60px}}

.admin-controls select{appearance:auto}

#profileForm fieldset{border:0;padding:0;margin:0;min-width:0}#profileForm .row{margin-top:20px}#profileForm input[type=file]{max-width:100%;min-width:0}.profile-logo-preview{display:block;width:140px;height:140px;object-fit:contain;margin:18px 0;background:#f3f6fa;border:1px solid #e2e8ef;border-radius:12px;padding:10px}.school-logo{width:64px;height:64px;object-fit:contain;flex-shrink:0}.app-school-logo{float:left;margin:0 12px 8px 0}.school-profile-heading{display:flex;gap:16px;align-items:center}.school-profile-heading>div{min-width:0;overflow-wrap:anywhere}.school-profile-heading h2{margin:0}.school-profile-heading p{margin:4px 0;font-size:13px}.report-school-profile{background:white;padding:18px;border:1px solid #e2e8ef;border-radius:12px;margin-bottom:16px}@media(max-width:600px){.school-profile-heading{align-items:flex-start}.school-logo{width:50px;height:50px}.school-profile-heading h2{font-size:18px}.report-school-profile{padding:14px}.app-school-logo{float:none;display:block;margin-bottom:8px}}
/* v0.9: app navigation, no sidebar */
body{background:#f4f7f8}main{margin:0 auto;max-width:1280px;padding:28px 32px 40px}main header{margin-bottom:22px}main header h1{font-size:26px}.hero{border-radius:24px;background:linear-gradient(120deg,#087e83,#09565e)}.hero h2{font-size:25px}.panel,.card{box-shadow:0 4px 20px #152c4604}.app-topbar{position:sticky;top:0;z-index:35;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px max(24px,calc((100vw - 1216px)/2));background:#fff;border-bottom:1px solid #e2eaec;min-height:80px}.app-brand{min-width:0;max-width:300px}.app-brand b{display:block;font-size:24px;letter-spacing:-.7px}.app-brand b span{color:var(--teal)}.app-brand small{display:block;color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-topbar>button{display:flex;align-items:center;gap:8px;background:#e8f4f3;color:#087e83;border-radius:14px;font-size:13px;order:3;flex-shrink:0}.app-topbar svg,.app-desktop-nav svg{width:20px;height:20px}.app-desktop-nav{display:flex;gap:4px;margin:0;order:2}.app-desktop-nav button{display:flex;align-items:center;gap:7px;width:auto;color:var(--muted);font-size:13px;padding:10px 14px;border-radius:12px;margin:0}.app-desktop-nav button.active{background:#e8f4f3;color:var(--teal)}.app-bottom-nav{display:none}.app-menu{width:calc(100% - 40px);max-width:850px;padding:26px;border-radius:26px;margin:auto;max-height:85dvh;overflow-y:auto}.app-menu-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:12px}.app-menu-heading small,.shortcut-heading small{font-size:10px;letter-spacing:1.2px;font-weight:700;color:var(--teal)}.app-menu-heading h2,.shortcut-heading h2{margin:4px 0 0;font-size:22px}.app-menu-heading button{padding:10px 16px;min-height:44px}.app-menu-grid,.app-shortcut-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:0;overflow:visible}.app-menu-grid button,.app-shortcut-grid button{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:10px;min-height:106px;width:100%;margin:0;padding:12px 5px;background:transparent;color:var(--navy);text-align:center;white-space:normal;font-size:12px;line-height:1.4;border-radius:16px;overflow-wrap:anywhere}.menu-icon{display:flex;align-items:center;justify-content:center;width:50px;height:50px;border-radius:16px;background:#e9f4f3;color:var(--teal);flex-shrink:0}.menu-icon svg{width:25px;height:25px}.app-menu-grid button.active{background:#e9f4f3;color:var(--teal);font-weight:700}.app-menu-grid button.active .menu-icon{background:var(--teal);color:white}.app-menu-grid button:hover,.app-shortcut-grid button:hover{background:#f0f6f6}.app-logout{margin-top:22px;width:100%;border-top:1px solid #e2e8ef}.shortcut-heading{margin-bottom:20px}.app-shortcuts{border-radius:22px}.app-shortcut-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.app-shortcut-grid button{min-height:100px}.app-shortcut-grid button:nth-child(3n+2) .menu-icon{background:#edf0fa;color:#596caa}.app-shortcut-grid button:nth-child(3n) .menu-icon{background:#faf2e6;color:#ac7b36}button:focus-visible{outline:3px solid #49a5ac;outline-offset:3px}
@media(max-width:900px){main{padding:20px 16px calc(105px + env(safe-area-inset-bottom));margin:0}.app-topbar{padding:12px 16px;min-height:72px;gap:12px}.app-brand b{font-size:21px}.app-brand{max-width:calc(100% - 115px)}.app-topbar>button{padding:9px 11px;min-height:44px;font-size:11px;gap:5px}.app-topbar>button span{max-width:46px;line-height:1.3}.app-desktop-nav{display:none}.app-bottom-nav{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);position:fixed;bottom:0;left:0;right:0;z-index:35;background:#fff;border-top:1px solid #e3eceb;padding:9px 8px calc(9px + env(safe-area-inset-bottom));margin:0;box-shadow:0 -4px 20px #152c4607}.app-bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:6px 2px;width:100%;margin:0;min-height:54px;color:#7c8b98;border-radius:12px;background:transparent;font-size:10px;line-height:1.3;white-space:normal}.app-bottom-nav button svg{width:22px;height:22px}.app-bottom-nav button.active{color:var(--teal);background:#edf8f6;font-weight:700}.app-menu{width:100%;max-width:100%;margin:auto auto 0;max-height:88dvh;border-radius:26px 26px 0 0;padding:22px 18px calc(24px + env(safe-area-inset-bottom))}.app-menu-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.app-menu-grid button{min-height:103px;font-size:11px}.app-shortcut-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.app-shortcut-grid button{min-height:97px;font-size:11px;padding:8px 4px}.menu-icon{width:46px;height:46px;border-radius:15px}.menu-icon svg{width:23px;height:23px}.app-shortcuts{padding:18px 12px}.shortcut-heading{padding:0 6px;margin-bottom:14px}.shortcut-heading h2{font-size:20px}main header h1{font-size:25px}.hero{padding:22px 20px}.hero h2{font-size:22px}#toast{bottom:calc(88px + env(safe-area-inset-bottom))}.app-menu .app-logout{background:#eef3f5}.app-menu-heading{position:sticky;top:-22px;background:white;padding:10px 0;z-index:1}.app-menu .app-menu-grid{display:grid}}
@media print{.app-topbar,.app-bottom-nav,.app-desktop-nav,.app-shortcuts,.app-menu{display:none!important}main{margin:0;padding:0;max-width:none}}
.theme-control{display:flex;align-items:center;gap:6px;margin:0;color:var(--teal);order:4;flex-shrink:0}.theme-control>span{font-size:24px}.theme-control select{width:auto;min-height:40px;font-size:12px;padding:8px;border-radius:10px;border-color:#dce8e7;background:#f3f8f7;color:#28565d}.login .theme-control{justify-content:flex-end;margin-bottom:15px}.app-topbar{gap:14px}.app-desktop-nav button{padding:10px}
html[data-theme=dark]{--navy:#e6edf6;--teal:#55c9c2;--bg:#101923;--muted:#a9b9ca;background:#101923;color-scheme:dark}html[data-theme=dark] body{background:#101923;color:#e6edf6}html[data-theme=dark] .panel,html[data-theme=dark] .card,html[data-theme=dark] .login,html[data-theme=dark] dialog,html[data-theme=dark] .report-school-profile{background:#192633;border-color:#304353;color:#e6edf6;box-shadow:0 4px 20px #00000015}html[data-theme=dark] h1,html[data-theme=dark] h2,html[data-theme=dark] h3{color:#edf3fa}html[data-theme=dark] input,html[data-theme=dark] select,html[data-theme=dark] textarea{background:#111d28;color:#e6edf6;border-color:#3a5062}html[data-theme=dark] input::placeholder,html[data-theme=dark] textarea::placeholder{color:#93a5b7}html[data-theme=dark] button{background:#247f80;color:#fff}html[data-theme=dark] button.secondary{background:#2b3b4a;color:#e2ebf6}html[data-theme=dark] .app-topbar,html[data-theme=dark] .app-bottom-nav,html[data-theme=dark] .app-menu-heading{background:#14212c;border-color:#304353}html[data-theme=dark] .app-brand b{color:#eef4fa}html[data-theme=dark] .app-brand b span{color:#55c9c2}html[data-theme=dark] .app-topbar>button{background:#213e43;color:#81dfd6}html[data-theme=dark] .app-desktop-nav button,html[data-theme=dark] .app-bottom-nav button{background:transparent;color:#a9b9ca}html[data-theme=dark] .app-desktop-nav button.active,html[data-theme=dark] .app-bottom-nav button.active,html[data-theme=dark] .app-menu-grid button.active{background:#234449;color:#89e4db}html[data-theme=dark] .app-menu-grid button,html[data-theme=dark] .app-shortcut-grid button{background:transparent;color:#e3edf6}html[data-theme=dark] .menu-icon{background:#224247;color:#81dfd6}html[data-theme=dark] .app-shortcut-grid button:nth-child(3n+2) .menu-icon{background:#303a59;color:#b2c3ff}html[data-theme=dark] .app-shortcut-grid button:nth-child(3n) .menu-icon{background:#493c29;color:#edca8b}html[data-theme=dark] .app-menu-grid button:hover,html[data-theme=dark] .app-shortcut-grid button:hover{background:#263847}html[data-theme=dark] .app-menu-grid button.active .menu-icon{background:#357f81;color:white}html[data-theme=dark] .tag,html[data-theme=dark] .attendance-summary span,html[data-theme=dark] .student-class-counts span,html[data-theme=dark] .admin-balances>div{background:#23443f;color:#a0e8cd}html[data-theme=dark] .banner,html[data-theme=dark] .lesson-warning,html[data-theme=dark] .calendar-day.has-leave{background:#493d24;color:#f2dca5}html[data-theme=dark] .banner select{background:#182632;color:#e6edf6}html[data-theme=dark] .hero{background:linear-gradient(120deg,#146f74,#163c50);color:white}html[data-theme=dark] .hero p{color:#d8eef0}html[data-theme=dark] td,html[data-theme=dark] th,html[data-theme=dark] .lesson-day,html[data-theme=dark] .admin-list article,html[data-theme=dark] .month-bars{border-color:#304353}html[data-theme=dark] .mobile-card-table .mobile-table-card,html[data-theme=dark] .attendance-item{background:#192633;border-color:#304353}html[data-theme=dark] .attendance-roster,html[data-theme=dark] .lesson-item,html[data-theme=dark] .calendar-day,html[data-theme=dark] .mobile-card-table .mobile-card-title{border-color:#304353}html[data-theme=dark] .attendance-number{background:#2b3e4e;color:#e6edf6}html[data-theme=dark] .attendance-state{background:#493d24;color:#f2dca5}html[data-theme=dark] .attendance-state.present{background:#23443f;color:#a0e8cd}html[data-theme=dark] .attendance-state.out{background:#293e5c;color:#bdd2f5}html[data-theme=dark] .bar-track,html[data-theme=dark] .progress{background:#2a3d4d}html[data-theme=dark] .chart-bar{background:transparent;color:#e6edf6}html[data-theme=dark] .chart-bar:hover{background:#263847}html[data-theme=dark] .profile-logo-preview{background:#e9eef2;border-color:#3a5062}html[data-theme=dark] #toast{background:#e1edf6;color:#152c46}html[data-theme=dark] dialog::backdrop{background:#050a11b5}html[data-theme=dark] .app-menu .app-logout{background:#2b3b4a;color:#e2ebf6}html[data-theme=dark] button.danger{background:#a8364d;color:white}
@media(max-width:900px){.app-topbar{flex-wrap:wrap;gap:8px}.app-brand{max-width:calc(100% - 115px);flex:1}.theme-control{margin-left:auto;flex-basis:100%;justify-content:flex-end}.theme-control>span{font-size:19px}.theme-control select{min-height:36px;font-size:11px;padding:5px 9px}.app-topbar{padding-bottom:8px}}
@media print{.theme-control{display:none!important}html[data-theme=dark],html[data-theme=dark] body{background:white!important;color:#152c46!important;color-scheme:light}html[data-theme=dark] main,html[data-theme=dark] .panel,html[data-theme=dark] .card,html[data-theme=dark] .report-school-profile,html[data-theme=dark] .lesson-item,html[data-theme=dark] .attendance-item{background:white!important;color:#152c46!important;border-color:#dce3ea!important}html[data-theme=dark] h1,html[data-theme=dark] h2,html[data-theme=dark] h3,html[data-theme=dark] p,html[data-theme=dark] small,html[data-theme=dark] td,html[data-theme=dark] th{color:#152c46!important}}
/* Cheerful preschool palettes; appearance and palette are independent. */
html[data-palette=blue]{--teal:#2868b2;--accent:#2868b2;--accent-soft:#eaf3ff;--accent-ink:#245c98;--hero-from:#377dca;--hero-to:#686bc2;--surface-page:#f4f8ff;--pink-soft:#ffedf4;--pink-ink:#ad4775}
html[data-palette=pink]{--teal:#af3c72;--accent:#af3c72;--accent-soft:#fff0f6;--accent-ink:#963362;--hero-from:#b84179;--hero-to:#805abb;--surface-page:#fff7fa;--pink-soft:#eaf3ff;--pink-ink:#2868b2}
html[data-theme=dark][data-palette=blue]{--teal:#9ccaff;--accent:#9ccaff;--accent-soft:#233b56;--accent-ink:#b8d9ff;--hero-from:#264f80;--hero-to:#3b3a69;--surface-page:#101923;--pink-soft:#4c2b40;--pink-ink:#f5b3d1}
html[data-theme=dark][data-palette=pink]{--teal:#f3abd0;--accent:#f3abd0;--accent-soft:#4c2b40;--accent-ink:#ffd1e8;--hero-from:#6b2f51;--hero-to:#443661;--surface-page:#101923;--pink-soft:#233b56;--pink-ink:#b8d9ff}
html[data-palette] body{background:var(--surface-page)}html[data-palette] .hero{background:linear-gradient(120deg,var(--hero-from),var(--hero-to));color:white}html[data-palette] .hero h2{color:white}html[data-palette] .hero p{color:#f4f1ff}html[data-palette] .app-brand b span{color:var(--accent)}html[data-palette] .app-topbar>button,html[data-palette] .app-desktop-nav button.active,html[data-palette] .app-bottom-nav button.active,html[data-palette] .app-menu-grid button.active{background:var(--accent-soft);color:var(--accent-ink)}html[data-palette] .menu-icon{background:var(--accent-soft);color:var(--accent-ink)}html[data-palette] .app-shortcut-grid button:nth-child(3n+2) .menu-icon{background:var(--pink-soft);color:var(--pink-ink)}html[data-palette] .app-shortcut-grid button:nth-child(3n) .menu-icon{background:#fff3db;color:#916319}html[data-theme=dark][data-palette] .app-shortcut-grid button:nth-child(3n) .menu-icon{background:#493c29;color:#edca8b}html[data-palette] .app-menu-grid button.active .menu-icon{background:var(--accent-ink);color:white}html[data-palette] .app-shortcut-grid button:hover,html[data-palette] .app-menu-grid button:hover{background:var(--accent-soft)}html[data-palette] button:not(.secondary):not(.danger){background:var(--accent-ink);color:white}html[data-palette] .app-menu-grid button:not(.active),html[data-palette] .app-shortcut-grid button,html[data-palette] .app-bottom-nav button:not(.active),html[data-palette] .app-desktop-nav button:not(.active){background:transparent;color:var(--navy)}html[data-palette] .app-desktop-nav button.active,html[data-palette] .app-bottom-nav button.active{background:var(--accent-soft);color:var(--accent-ink)}html[data-palette] .shortcut-heading small,html[data-palette] .app-menu-heading small{color:var(--accent-ink)}html[data-palette] .tag,html[data-palette] .student-class-counts span,html[data-palette] .attendance-summary span{background:var(--accent-soft);color:var(--accent-ink)}html[data-palette] .bar-track i{background:var(--accent-ink)}html[data-palette] .theme-control{color:var(--accent)}html[data-palette] .theme-control select{background:var(--accent-soft);color:var(--accent-ink)}.app-topbar{flex-wrap:wrap}.theme-control{flex-wrap:wrap;justify-content:flex-end}.theme-control select{max-width:160px}.app-brand{flex:1;min-width:160px}
@media(max-width:900px){.app-brand{min-width:0}.theme-control{gap:6px}.theme-control select{font-size:11px;max-width:155px}.theme-control>span{display:none}}
@media print{html[data-palette] body{background:white!important;color:#152c46!important}}
html[data-palette] button.chart-bar{background:transparent;color:var(--navy)}html[data-palette] button.chart-bar:hover{background:var(--accent-soft)}
html[data-palette] .app-shortcut-grid button{background:transparent!important;color:var(--navy)!important}html[data-palette] .app-shortcut-grid button:hover{background:var(--accent-soft)!important}html[data-palette] .app-menu-grid button:not(.active){background:transparent!important;color:var(--navy)!important}html[data-palette] .app-bottom-nav button:not(.active),html[data-palette] .app-desktop-nav button:not(.active){background:transparent!important;color:var(--navy)!important}html[data-palette] button.chart-bar{background:transparent!important;color:var(--navy)!important}

.pwa-status{font-size:13px}.pwa-status button{margin-left:8px;padding:8px 12px;font-size:12px}.app-menu-heading{flex-wrap:wrap}.app-menu-heading>div{flex:1;min-width:120px}.app-menu-heading .pwa-install{font-size:12px}.pwa-install{min-height:44px}@media(max-width:900px){.app-menu-heading .pwa-install{flex-basis:100%;width:100%;margin-top:4px}.app-menu-heading{top:-22px}.pwa-status button{margin:8px 0 0}}@media print{.pwa-status,.pwa-install{display:none!important}}
/* Reference style: violet, ice blue and cyan, with rounded app cards. */
html[data-palette=purple]{--navy:#132b55;--teal:#5845cb;--accent:#5845cb;--accent-soft:#e9e5ff;--accent-ink:#4833b2;--hero-from:#8063ed;--hero-to:#4329a6;--surface-page:#e8f1f8;--pink-soft:#d9f6fc;--pink-ink:#087e9d;--muted:#637794}
html[data-theme=dark][data-palette=purple]{--navy:#e8edff;--teal:#b5a7ff;--accent:#b5a7ff;--accent-soft:#352b59;--accent-ink:#cfbfff;--hero-from:#6140c4;--hero-to:#30215f;--surface-page:#141b2c;--pink-soft:#173e4c;--pink-ink:#73e0f5;--muted:#abb9d7}
html[data-palette=purple] body{font-family:'Avenir Next','Segoe UI',Arial,sans-serif}html[data-palette=purple] .app-topbar,html[data-palette=purple] .app-bottom-nav{background:#f1f7fc;border-color:#d7e5f0;box-shadow:0 8px 30px #17315c08}html[data-palette=purple] .app-brand b{color:#132b55}html[data-palette=purple] main{max-width:1220px}html[data-palette=purple] .panel,html[data-palette=purple] .card,html[data-palette=purple] .report-school-profile,html[data-palette=purple] dialog{border-radius:26px;border-color:#dbe7f2;box-shadow:0 12px 32px #263d6607}html[data-palette=purple] .panel,html[data-palette=purple] .report-school-profile{background:#f7fbfe}html[data-palette=purple] input,html[data-palette=purple] select,html[data-palette=purple] textarea{border-radius:14px;border-color:#d6e4ef;background:#fafdff;color:#132b55}html[data-palette=purple] .hero{position:relative;overflow:hidden;background:radial-gradient(circle at 90% -10%,#a58bff55,transparent 45%),linear-gradient(130deg,#8063ed,#4329a6);border:0;box-shadow:0 16px 35px #563dc52b;padding:30px;border-radius:30px}html[data-palette=purple] .hero:before{content:'';position:absolute;inset:0;pointer-events:none;background:repeating-radial-gradient(circle at 95% 0%,transparent 0,transparent 37px,#8be3ff18 38px,#8be3ff18 39px,transparent 40px);opacity:.7}html[data-palette=purple] .hero>*{position:relative}html[data-palette=purple] .hero h2{font-weight:750;letter-spacing:-.4px}html[data-palette=purple] .cards .card{background:linear-gradient(140deg,#6957da,#5546c5);border:0;color:white;box-shadow:0 12px 25px #5b43bf15;border-radius:23px}html[data-palette=purple] .cards .card:nth-child(2){background:linear-gradient(140deg,#7865e1,#6552d0)}html[data-palette=purple] .cards .card:nth-child(3){background:linear-gradient(140deg,#5e50c8,#4c3bb1)}html[data-palette=purple] .cards .card:nth-child(4){background:linear-gradient(140deg,#8466e4,#7055d2)}html[data-palette=purple] .cards .card small{color:#e1dcff}html[data-palette=purple] .cards .card strong{color:white;font-size:31px}html[data-palette=purple] button{border-radius:14px}html[data-palette=purple] button.secondary{background:#eaf3fa;color:#20385f;box-shadow:0 5px 14px #273e5f08}html[data-palette=purple] .app-topbar>button,html[data-palette=purple] .app-desktop-nav button,html[data-palette=purple] .app-bottom-nav button{border-radius:18px}html[data-palette=purple] .app-shortcuts{border-radius:30px}html[data-palette=purple] .menu-icon{border-radius:18px;background:#e9e5ff;color:#5845cb;width:52px;height:52px}html[data-palette=purple] .app-shortcut-grid button:nth-child(3n+2) .menu-icon{background:#d9f6fc;color:#087e9d}html[data-palette=purple] .app-shortcut-grid button:nth-child(3n) .menu-icon{background:#e0eaf9;color:#254d83}html[data-palette=purple] .app-menu-grid button.active{border-radius:22px}html[data-palette=purple] .lesson-item{background:#6552d5;border:0;border-radius:22px;color:white;box-shadow:0 9px 20px #6044b21a}html[data-palette=purple] .lesson-item h3,html[data-palette=purple] .lesson-item p,html[data-palette=purple] .lesson-item small,html[data-palette=purple] .lesson-item b{color:white}html[data-palette=purple] .lesson-item .tag{background:#ffffff25;color:white;border:1px solid #ffffff25}html[data-palette=purple] .lesson-item button.secondary{background:#ffffff22;color:white;box-shadow:none}html[data-palette=purple] .lesson-warning{background:#fff3d8!important;color:#725a20!important}html[data-palette=purple] .lesson-day h2{font-size:17px}html[data-palette=purple] .lesson-day h2 small{background:#e8e2ff;color:#4c36b4;padding:6px 12px;border-radius:18px}html[data-palette=purple] .attendance-roster,html[data-palette=purple] .mobile-card-table .mobile-table-card{border-radius:20px}html[data-palette=purple] .attendance-number{background:#ece7ff;color:#5845cb}html[data-palette=purple] .theme-control select{border-radius:16px;background:#ece8ff;color:#4833b2}
html[data-theme=dark][data-palette=purple] .app-topbar,html[data-theme=dark][data-palette=purple] .app-bottom-nav,html[data-theme=dark][data-palette=purple] .app-menu-heading{background:#1d2438;border-color:#35415a}html[data-theme=dark][data-palette=purple] .app-brand b{color:#e8edff}html[data-theme=dark][data-palette=purple] .panel,html[data-theme=dark][data-palette=purple] dialog,html[data-theme=dark][data-palette=purple] .report-school-profile,html[data-theme=dark][data-palette=purple] .attendance-item,html[data-theme=dark][data-palette=purple] .mobile-card-table .mobile-table-card{background:#202a40;border-color:#384760}html[data-theme=dark][data-palette=purple] input,html[data-theme=dark][data-palette=purple] select,html[data-theme=dark][data-palette=purple] textarea{background:#172034;color:#e8edff;border-color:#43516c}html[data-theme=dark][data-palette=purple] button.secondary{background:#313d57;color:#e8edff;box-shadow:none}html[data-theme=dark][data-palette=purple] .hero{background:radial-gradient(circle at 90% -10%,#a58bff33,transparent 45%),linear-gradient(130deg,#6346c4,#30215f)}html[data-theme=dark][data-palette=purple] .menu-icon{background:#392f64;color:#c5b8ff}html[data-theme=dark][data-palette=purple] .app-shortcut-grid button:nth-child(3n+2) .menu-icon{background:#183d4c;color:#73e0f5}html[data-theme=dark][data-palette=purple] .app-shortcut-grid button:nth-child(3n) .menu-icon{background:#293d60;color:#9fbcf1}html[data-theme=dark][data-palette=purple] .lesson-item{background:#4f3cac}html[data-theme=dark][data-palette=purple] .lesson-day h2 small{background:#392f64;color:#c5b8ff}html[data-theme=dark][data-palette=purple] .theme-control select{background:#392f64;color:#ddd3ff}
@media(max-width:900px){html[data-palette=purple] .hero{padding:24px 20px}html[data-palette=purple] .panel{padding:18px}html[data-palette=purple] .app-shortcuts{padding:18px 12px}html[data-palette=purple] .cards .card{padding:18px;border-radius:21px}html[data-palette=purple] .cards .card strong{font-size:24px}html[data-palette=purple] .app-bottom-nav{border-radius:24px 24px 0 0}html[data-palette=purple] .lesson-item{padding:15px}html[data-palette=purple] .menu-icon{width:46px;height:46px}}
@media print{html[data-palette=purple] .panel,html[data-palette=purple] .report-school-profile,html[data-palette=purple] .card,html[data-palette=purple] .lesson-item{background:white!important;color:#132b55!important;box-shadow:none!important;border:1px solid #dbe7f2!important}html[data-palette=purple] .lesson-item h3,html[data-palette=purple] .lesson-item p,html[data-palette=purple] .lesson-item small,html[data-palette=purple] .lesson-item b,html[data-palette=purple] .card small,html[data-palette=purple] .card strong{color:#132b55!important}}
@media(max-width:900px){html[data-palette=purple] .cards .card strong{font-size:clamp(16px,4.4vw,24px);overflow-wrap:anywhere;white-space:normal}}
html[data-theme=dark][data-palette=purple] button:not(.secondary):not(.danger){background:#6a52d4;color:white}

/* Accessible logout actions, separated from primary navigation. */
.app-topbar{flex-wrap:wrap}.app-topbar .desktop-logout{order:5;min-height:44px;margin:0;white-space:nowrap}
button.logout-action,html[data-palette] button.logout-action{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:46px;padding:11px 16px;background:#fff0f2!important;color:#a32543!important;border:1px solid #f2c6d0;border-radius:14px;font-weight:600}
button.logout-action svg{width:21px;height:21px;flex-shrink:0}.app-menu #logout{display:flex;width:100%;margin-top:24px}.logout-confirm{width:calc(100% - 32px);max-width:420px;padding:26px}.logout-confirm h2{margin-top:0}.logout-confirm-actions{justify-content:flex-end;margin-top:22px}.logout-confirm-actions button{min-height:46px}
html[data-theme=dark] button.logout-action{background:#49283a!important;color:#ffcad6!important;border-color:#79465b}
@media(max-width:900px){.app-topbar .desktop-logout{display:none!important}.app-menu #logout{min-height:50px}.logout-confirm-actions{flex-wrap:nowrap}.logout-confirm-actions button{flex:1}}
@media print{.logout-confirm{display:none!important}}

/* Brief motion feedback for mouse, touch and keyboard. */
button{transition:transform 160ms ease,box-shadow 160ms ease,background-color 160ms ease,color 160ms ease;touch-action:manipulation}
button:not(:disabled):active{transform:scale(.965)}
@media(hover:hover) and (pointer:fine){button:not(:disabled):hover{transform:translateY(-2px)}button:not(:disabled):active{transform:scale(.965)}}
.button-motion-ring{position:fixed;width:64px;height:64px;border-radius:50%;border:2px solid currentColor;background:currentColor;pointer-events:none;z-index:100;opacity:0;contain:strict}
@keyframes dialog-enter{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
dialog[open]{animation:dialog-enter 180ms ease-out}
@media(prefers-reduced-motion:reduce){button{transition:none!important}button:not(:disabled):hover,button:not(:disabled):active{transform:none!important}dialog[open]{animation:none!important}.button-motion-ring{display:none!important}}
@media print{.button-motion-ring{display:none!important}button,dialog{animation:none!important;transition:none!important;transform:none!important}}
