:root{--ink:#172d35;--muted:#71828a;--primary:#087e83;--primary-dark:#056166;--line:#e4ebed;--surface:#fff;--bg:#f5f8f9;--nav:#102c33;--radius:18px;--shadow:0 5px 22px #203f4905}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.65 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-dark)}button,.button,.file-button{display:inline-flex;justify-content:center;align-items:center;gap:8px;border:1px solid transparent;border-radius:10px;padding:11px 17px;background:var(--primary);color:#fff;font:inherit;font-weight:650;cursor:pointer;line-height:1.4;transition:background .16s,box-shadow .16s}button:hover,.button:hover{background:var(--primary-dark);color:#fff;box-shadow:0 4px 10px #087e8320}button:disabled{opacity:.55;cursor:wait}.secondary,.modal-trigger{background:#fff;color:var(--ink);border-color:#dce6e8}.secondary:hover,.modal-trigger:hover{background:#edf7f7;color:var(--primary);border-color:#b7d8d8}.icon{width:20px;height:20px;flex-shrink:0;vertical-align:middle}.icon-button{width:38px;height:38px;padding:9px;background:#f0f5f6;color:var(--muted)}.icon-button:hover{color:var(--ink);background:#e3eeee}.eyebrow{display:block;font-size:10px;font-weight:750;letter-spacing:1.7px;color:var(--muted);line-height:1.5}h1,h2,h3,p{overflow-wrap:anywhere}h1{font-size:27px;letter-spacing:-.9px;line-height:1.25;margin:6px 0 0;font-weight:750}h2{font-size:18px;letter-spacing:-.45px;line-height:1.4;margin:0 0 20px;font-weight:720}h3{font-size:15px;line-height:1.5;margin:12px 0}p{color:#637880;margin:0 0 17px}.muted,small{color:var(--muted)}aside{position:fixed;inset:0 auto 0 0;width:248px;padding:28px 17px 22px;background:var(--nav);color:#d4e3e6;z-index:30;overflow:auto}.brand{display:flex;gap:12px;align-items:center;color:#fff!important;padding:0 8px 30px;font-size:16px;font-weight:750;line-height:1.35}.brand img{height:45px;width:45px;border-radius:12px;object-fit:contain;background:#fff;padding:3px}.brand small{display:block;font-size:8px;letter-spacing:2.2px;margin-top:6px;color:#95b8bf}.brand span{min-width:0;overflow-wrap:anywhere}aside>.eyebrow{padding:3px 16px 12px;font-size:8px;color:#779da7}nav{display:grid;gap:4px}nav a{display:flex;gap:12px;align-items:center;color:#9ebcc3;font-size:12px;font-weight:570;line-height:1.4;padding:12px 14px;border-radius:9px}nav a .icon{width:18px;height:18px}nav a:hover{color:#fff;background:#1c3e47}nav a.selected{color:white;background:#087e83;box-shadow:0 4px 12px #00000010}nav a.selected::after{content:'';width:5px;height:5px;border-radius:50%;background:#acf1e9;margin-left:auto;flex-shrink:0}.aside-foot{margin:30px 14px 0;padding-top:20px;border-top:1px solid #23434b;font-size:10px;color:#779da7;overflow-wrap:anywhere}.app main{margin-left:248px;padding:28px 34px;max-width:1900px}header{display:flex;align-items:center;gap:16px;justify-content:space-between;margin-bottom:29px;padding-bottom:24px;border-bottom:1px solid var(--line)}header .eyebrow{font-size:9px}.account{display:flex;align-items:center;gap:18px}.profile-link{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;color:var(--ink)}.profile-link small{display:block;font-size:10px;font-weight:500;text-transform:capitalize}.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;width:38px;height:38px;background:#e0efea;color:#257560;font-weight:700}.account form .form-footer{margin:0}.account form button{background:transparent;color:var(--muted);font-size:13px;padding:7px;border:0}.account form button:hover{background:#e7eff0;color:var(--ink)}.hero{display:flex;justify-content:space-between;align-items:center;gap:25px;background:#143f49;padding:29px 32px;border-radius:var(--radius);color:white;overflow:hidden;margin-bottom:24px;position:relative}.hero .eyebrow{color:#84c8c5}.hero h2{font-size:25px;letter-spacing:-.7px;margin:10px 0 12px}.hero p{color:#abc8ce;max-width:540px;font-size:12px;line-height:1.8;margin-bottom:17px}.hero img{width:245px;height:150px;object-fit:cover;border-radius:12px;box-shadow:0 12px 25px #001c2435}.hero .button{background:#e0f2e8;color:#185c52;font-size:12px;padding:10px 17px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:18px;margin:24px 0}.metric{background:#fff;border:1px solid var(--line);border-radius:15px;padding:21px;box-shadow:var(--shadow);min-width:0}.metric-top{display:flex;gap:10px;align-items:center;justify-content:space-between;color:#667d86;font-size:13px;font-weight:600;min-height:37px}.metric-icon{display:flex;justify-content:center;align-items:center;border-radius:11px;width:37px;height:37px;background:#e9f4f1;color:#36957d;flex-shrink:0}.metric:nth-child(2) .metric-icon{background:#edf0fc;color:#7584ce}.metric:nth-child(3) .metric-icon{background:#fff4e5;color:#dba35c}.metric:nth-child(4) .metric-icon{background:#e8f3fc;color:#588ab3}.metric strong{display:block;font-size:27px;font-weight:750;letter-spacing:-1px;margin:12px 0 14px;line-height:1.25;overflow-wrap:anywhere}.metric-foot{font-size:9px;color:#8fa1a8;display:flex;gap:6px;align-items:center}.metric-foot .icon{width:12px;height:12px;color:#4d9f91}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px;margin-bottom:22px;box-shadow:var(--shadow)}.panel>h2{padding-bottom:17px;border-bottom:1px solid #eef2f3;margin-bottom:21px}.panel>p{font-size:12px;max-width:870px}.panel .cards{margin-bottom:16px}.panel .cards .metric{box-shadow:none;background:#fafcfc}.table-wrap{overflow:auto;border:1px solid #eaf0f1;border-radius:11px;margin-top:20px;max-width:100%}table{border-collapse:collapse;width:100%;white-space:nowrap}thead{background:#f7fafb}th{font-size:9px;letter-spacing:.75px;text-transform:uppercase;color:#84959c;text-align:left;font-weight:700;padding:13px 16px;border-bottom:1px solid var(--line)}td{font-size:12px;padding:15px 16px;border-bottom:1px solid #edf2f3;color:#5b727b}td:first-child{color:var(--ink);font-weight:600}td a{font-weight:650}tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfdfd}td button{font-size:10px;padding:7px 10px}td button .icon{height:14px;width:14px}td .form-grid{display:flex;gap:8px}td .form-footer{margin-top:5px}td label{font-size:10px}td input,td select{max-width:185px;padding:7px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:19px;align-items:start}.form-grid>.full,.form-grid>h3,.form-grid>p{grid-column:1/-1}.form-grid>p{font-size:13px;margin:0}.form-grid>h3{font-size:13px;text-transform:uppercase;letter-spacing:1px;margin:10px 0 0;padding-top:19px;border-top:1px solid var(--line)}label{display:grid;gap:8px;font-size:13px;font-weight:650;color:#576e78;min-width:0}input,select,textarea{display:block;width:100%;max-width:100%;border:1px solid #dce5e8;border-radius:9px;padding:11px 12px;color:#243e48;background:#fff;font:13px/1.5 inherit;line-height:1.5;font-family:inherit;font-size:13px;min-height:43px;outline:none;transition:border-color .15s,box-shadow .15s}input::placeholder{color:#a1afb5}input:focus,select:focus,textarea:focus{border-color:#60aaa8;box-shadow:0 0 0 3px #138c8413}input[type=checkbox]{display:inline-block;width:16px;height:16px;min-height:0;margin:0 7px 0 0;vertical-align:middle;accent-color:var(--primary)}label:has(input[type=checkbox]){padding:12px;border:1px solid var(--line);border-radius:9px;background:#fafcfc;min-height:45px}textarea{resize:vertical;min-height:100px}.form-footer{margin-top:23px;display:flex;gap:12px;align-items:center}.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:17px 0}.actions button,.actions .button{font-size:12px}.actions form{margin:0}.notice{border:1px solid #bfe0d5;background:#eef8f2;color:#3a7663;font-size:12px;padding:15px 18px;border-radius:11px;margin-bottom:22px}.badge{display:inline-flex;padding:5px 10px;border-radius:7px;background:#e7f5ed;color:#438b65;font-size:10px;font-weight:650;margin-bottom:14px}dialog:not([open]){display:none}dialog[open]{display:flex;flex-direction:column;width:min(780px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:0;margin:auto;border:1px solid #dee8eb;border-radius:19px;box-shadow:0 30px 100px #0b29383b;color:var(--ink);overflow:hidden}dialog::backdrop{background:#102e3d88;backdrop-filter:blur(4px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px 25px;border-bottom:1px solid var(--line);flex-shrink:0;background:#fff}.dialog-head h2{margin:5px 0 0;font-size:20px}.dialog-head .eyebrow{font-size:8px}.dialog-body{padding:25px;overflow:auto;overscroll-behavior:contain;min-height:0;max-width:100%;white-space:normal}.dialog-body .form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.dialog-body input,.dialog-body select,.dialog-body textarea{max-width:100%}.dialog-body .form-footer{position:sticky;bottom:-25px;background:#fff;border-top:1px solid var(--line);padding:17px 0;margin:24px 0 -25px;z-index:2;justify-content:flex-end}.dialog-body .form-footer button{min-width:130px}.payment-summary{background:#f0f8f6;border:1px solid #dbece7;border-radius:12px;padding:19px}.payment-summary span,.payment-summary strong,.payment-summary small{display:block}.payment-summary span{font-size:12px;font-weight:650;color:#508b7b}.payment-summary strong{font-size:27px;color:#176d65;letter-spacing:-.7px;margin:4px 0}.payment-summary small{font-size:13px}.scanner{background:#f8fbfb;border:1px dashed #c1d7db;border-radius:13px;padding:20px}.scanner-intro{display:flex;gap:13px;align-items:center}.scanner-intro h3{margin:0 0 5px}.scanner-intro p{margin:0;font-size:13px}.scanner-icon{padding:11px;background:#e0efec;border-radius:12px;color:var(--primary)}.scan-controls{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.scan-controls button,.file-button{font-size:13px}.file-button input{display:none}.scanner [data-scan-status]{font-size:13px}.camera-preview{max-width:520px;height:290px;background:#122e35;border-radius:15px;position:relative;overflow:hidden;margin-bottom:15px}.camera-preview video{height:100%;width:100%;object-fit:cover}.scan-guide{position:absolute;inset:15% 25%;border:2px solid #9cfff1;border-radius:14px;box-shadow:0 0 0 200px #082b3740;pointer-events:none}.selected-student{display:flex;align-items:center;gap:15px;background:#eaf4f1;border:1px solid #d6e7e1;padding:19px 23px;border-radius:13px;margin:20px 0}.selected-student small,.selected-student strong{display:block}.selected-student strong{font-size:17px}.selected-student .button{margin-left:auto;font-size:13px}.student-profile-layout{display:grid;grid-template-columns:1fr 310px;gap:30px;align-items:center}.student-card{background:white;border:1px solid #d9e6e5;border-radius:20px;text-align:center;padding:24px 22px 0;max-width:320px;box-shadow:0 12px 30px #214b4710;overflow:hidden;justify-self:end}.pass-brand{display:flex;align-items:center;gap:10px;text-align:left;justify-content:center;margin-bottom:20px;color:#20564f;font-size:12px;font-weight:700}.pass-brand img{width:39px;height:39px;object-fit:contain}.pass-brand small{display:block;font-size:7px;letter-spacing:1.6px;margin-top:3px;color:#7c9c95}.qr-frame{padding:15px;border:2px solid #15847b;border-radius:14px;background:white;margin:0 auto 19px;width:235px;max-width:100%}.qr-frame svg{display:block;width:100%;height:auto}.student-card h2{font-size:18px;margin:10px 0 7px;border:0;padding:0}.pass-id{display:inline-block;background:#eef6f4;padding:4px 12px;border-radius:30px;font-size:9px;letter-spacing:1px;color:#50877c}.student-card p{font-size:9px;margin:15px 0 20px;color:#95a9a3}.pass-stripe{height:9px;background:linear-gradient(90deg,#0c736f,#76c6a4);margin:0 -22px}.receipt{max-width:850px;margin:auto;padding:36px}.receipt>img{width:85px;height:85px;object-fit:contain}.amount{font-size:32px;font-weight:700;letter-spacing:-1px;background:#edf7f3;padding:22px;border-radius:13px;color:#246e5c;margin:20px 0}.code{white-space:pre-wrap;word-break:break-all;overflow:auto;background:#f4f8f9;border:1px solid var(--line);border-radius:9px;padding:16px;font-size:13px}.narrow{max-width:630px;margin:0 auto}.guest{background:#eef3f4}.guest main{max-width:1160px;margin:0 auto;padding:35px 28px}.guest header{border:0;margin-bottom:15px}.guest header>.mobile-menu,.guest header .eyebrow{display:none}.guest header h1{font-size:18px;color:#66818a}.login-grid{display:grid;grid-template-columns:1.05fr 1fr;border-radius:23px;overflow:hidden;min-height:580px;background:white;box-shadow:0 20px 70px #12333e0c;border:1px solid #e0e9eb}.login-art{padding:48px;background:#113c46;position:relative;color:#fff;display:flex;flex-direction:column;justify-content:center}.login-art .eyebrow{color:#84bbb5}.login-art h2{font-size:37px;line-height:1.17;letter-spacing:-1.3px;margin:15px 0 20px}.login-art p{font-size:13px;line-height:1.9;color:#a1c1c7}.login-art img{width:100%;height:190px;object-fit:cover;border-radius:13px;margin-top:16px}.login-form{padding:42px;align-self:center}.login-form h2{font-size:23px;margin:13px 0 10px}.login-form>p{font-size:12px;margin-bottom:28px}.login-form .form-grid{grid-template-columns:1fr}.login-form .form-footer button{width:100%}.login-form>p:last-child{font-size:13px;margin:20px 0 0}.login-logo{width:85px;height:62px;object-fit:contain;object-position:left}.auth-card{padding:35px;margin:50px auto}.auth-card .form-grid{grid-template-columns:1fr}.auth-symbol{display:inline-flex;padding:14px;background:#e8f5ef;color:var(--primary);border-radius:14px;margin-bottom:22px}.auth-symbol .icon{height:26px;width:26px}.auth-card>a{display:inline-block;margin-top:25px}.split{display:grid;grid-template-columns:1fr 1fr;gap:20px}details{padding:12px 0}summary{cursor:pointer;color:var(--primary);font-weight:650}footer{display:flex;justify-content:center;gap:5px;font-size:10px;color:#9aabb1;padding:25px 0 5px}.mobile-menu,.nav-backdrop{display:none}[hidden]{display:none!important}.month-picker{display:flex;gap:8px}
@media(min-width:1550px){.app main{padding:32px 45px}.panel{padding:28px}.metric{padding:26px}.hero{padding:34px 40px}}
@media(max-width:1150px){aside{width:222px}.app main{margin-left:222px;padding:24px}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.hero img{width:180px}.profile-link>span:last-child{display:none}.student-profile-layout{grid-template-columns:1fr 280px}.student-card{max-width:280px}.qr-frame{width:210px}}
@media(max-width:760px){aside{width:260px;transform:translateX(-100%);transition:transform .18s}.menu-open aside{transform:translateX(0)}.menu-open .nav-backdrop{display:block;position:fixed;inset:0;background:#16363a88;border:0;border-radius:0;z-index:29}.mobile-menu{display:inline-flex;padding:9px;background:white;border:1px solid var(--line);flex-shrink:0}.app main{margin-left:0;padding:18px 14px}header{gap:11px;margin-bottom:20px;padding-bottom:18px}header>div:nth-child(2){flex:1}header h1{font-size:21px;letter-spacing:-.6px}header .eyebrow{font-size:8px;letter-spacing:1px}.account{gap:5px}.account .avatar{height:31px;width:31px;font-size:12px}.account form button{font-size:9px;padding:5px}.hero{padding:23px;margin-bottom:18px}.hero h2{font-size:22px}.hero img{display:none}.cards{gap:10px;margin:18px 0}.metric{padding:15px 13px;border-radius:13px}.metric-top{font-size:10px;gap:6px}.metric-icon{height:30px;width:30px;border-radius:9px}.metric-icon .icon{height:16px;width:16px}.metric strong{font-size:23px;margin:12px 0}.metric-foot{font-size:8px}.panel{padding:18px 15px;border-radius:14px}.panel>h2{font-size:16px;margin-bottom:17px;padding-bottom:15px}.form-grid,.split{grid-template-columns:1fr;gap:15px}.student-profile-layout{grid-template-columns:1fr;gap:24px}.student-card{justify-self:center;max-width:310px}.qr-frame{width:230px}.actions{gap:8px}.actions button,.actions .button{font-size:10px;padding:10px 12px}.selected-student{padding:16px;flex-wrap:wrap}.selected-student .button{margin-left:0;font-size:10px}.scanner{padding:15px}.scanner-intro h3{font-size:13px}.scanner-intro p{font-size:10px}.scan-controls button,.scan-controls .file-button{padding:10px;font-size:10px}.camera-preview{height:245px}dialog[open]{width:calc(100vw - 20px);max-height:calc(100dvh - 22px);border-radius:16px}.dialog-head{padding:18px}.dialog-head h2{font-size:18px}.dialog-body{padding:18px}.dialog-body .form-grid{grid-template-columns:1fr;gap:16px}.dialog-body .form-footer{bottom:-18px;margin-bottom:-18px;padding:15px 0}.dialog-body .form-footer button{width:100%}input,select,textarea{font-size:16px;min-height:45px}td input,td select{font-size:14px}.guest main{padding:22px 14px}.guest header{margin:0 0 18px;padding:0}.login-grid{grid-template-columns:1fr;min-height:0}.login-art{padding:27px 29px}.login-art h2{font-size:29px;margin:12px 0}.login-art p{font-size:13px;margin:0;max-width:300px}.login-art img{display:none}.login-form{padding:28px}.login-form h2{font-size:21px}.auth-card{margin:20px auto;padding:25px}.receipt{padding:23px}.amount{font-size:28px}footer{font-size:9px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
@media print{aside,header,.actions,.form-footer,footer,button,.nav-backdrop,.scanner,dialog{display:none!important}.app main,.guest main{margin:0;padding:0;max-width:none}body{background:#fff}.panel{border:0;box-shadow:none;padding:15px}.table-wrap{overflow:visible}.receipt{max-width:none}.student-card{break-inside:avoid;box-shadow:none}.print-card-only main>*{display:none!important}.print-card-only main>.print-card-host{display:block!important}.print-card-only .student-card{display:block!important;margin:20mm auto;max-width:320px}.print-card-only .pass-stripe{print-color-adjust:exact}}

/* v1.2.0 — academic blue, grouped navigation, schedules and finance */
:root{--ink:#173969;--muted:#7890ae;--primary:#1875e8;--primary-dark:#105cc1;--line:#e0ebfa;--bg:#f0f6ff;--nav:#f5f9ff;--shadow:0 5px 24px #4479bb06}
p{color:#708aaa}aside{color:#42658f;border-right:1px solid #e0ebfa;width:248px;padding:24px 14px}.brand{color:#214874!important;display:block;padding:0 10px 20px}.brand img{width:98px;height:58px;border-radius:7px;object-fit:contain;padding:0;margin-bottom:13px}.brand.platform-brand img{width:205px;height:72px}.brand span{display:block;font-size:13px;font-weight:650}.brand small{font-size:8px;color:#8aa5c6;letter-spacing:1.4px}.nav-group{display:grid;gap:3px;margin:9px 0 17px}.nav-group-label{display:block;text-transform:uppercase;letter-spacing:1.4px;font-size:9px;font-weight:700;color:#93a9c4;padding:7px 13px}aside nav a{color:#4c6a94;padding:11px 13px;font-size:12px}aside nav a:hover{background:#eaf2ff;color:#1c6bd7}aside nav a.selected{background:#e6efff;color:#095ad1;box-shadow:none}aside nav a.selected::after{background:#247aea}.aside-foot{border-color:#dfebfa;color:#8fa5c2}.portal-heading{display:flex;align-items:center;gap:15px;min-width:0}.portal-heading>img{width:72px;height:45px;object-fit:contain;background:#fff;border-radius:6px}.portal-heading .eyebrow{letter-spacing:.6px;color:#7290b5}header{background:#ffffffbd;border:1px solid #e3ecf9;border-radius:16px;padding:17px 22px;box-shadow:var(--shadow)}header h1{font-size:23px;letter-spacing:-.7px}.avatar{background:#eaf3ff;color:#3182e3}.profile-link{color:#193c6d}.hero{background:linear-gradient(105deg,#fafdff,#e2f0ff);border:1px solid #daeafe;color:#164578}.hero h2{color:#173e70}.hero .eyebrow,.hero p{color:#7393b8}.hero img{border-radius:12px}.panel{border-color:#dfebfb}.panel>h2{color:#183f71}.metric{position:relative;border-color:#dfebfb}.metric:before{content:'';position:absolute;top:26px;bottom:26px;left:0;width:4px;background:#2888ef;border-radius:0 5px 5px 0}.metric strong{font-size:25px;color:#17437a;margin-bottom:0}.metric-top{color:#8198b7}.metric-icon{background:#eaf3ff;color:#2888ef}.metric:nth-child(2) .metric-icon{background:#e5f8ee;color:#29ae7f}.metric:nth-child(3) .metric-icon{background:#f1eaff;color:#8b5be6}.metric:nth-child(4) .metric-icon{background:#fff5e5;color:#e8a137}.payment-summary{background:#eff6ff;border-color:#dceaff}.payment-summary strong{color:#1c68c3}.payment-summary span{color:#5587ba}.scanner{background:#f8fbff;border-color:#c4d9f5}.scanner-icon{background:#e6f1ff;color:#2885e8}.secondary:hover,.modal-trigger:hover{background:#eff5ff;border-color:#bcd6fa;color:#156ce2}.selected-student{background:#eff6ff;border-color:#d7e7fb}.notice{background:#eff7ff;border-color:#cce3ff;color:#47749e}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:20px}.section-heading h2,.section-heading h3{margin:0 0 6px}.section-heading p{margin:0}.search-form{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin:0 0 20px}.search-form label{min-width:230px;flex:1}.section-heading .search-form{margin:0;flex:1;max-width:550px}.pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px solid var(--line);margin-top:17px;padding-top:16px;color:#7992b0}.pagination>div{display:flex;align-items:center;gap:13px;font-size:12px}.pagination a{display:inline-flex;padding:8px 12px;color:#2475d9;background:#eef5ff;font-size:12px}.pagination a:hover{background:#deecff;color:#195fc2}.page-disabled{color:#aebed1;cursor:default}.pagination small{font-size:13px}.cell-subtitle{display:block;font-size:10px;margin-top:4px}.page-banner{display:flex;justify-content:space-between;align-items:center;gap:25px;border:1px solid #d8e8ff;background:linear-gradient(110deg,#f9fcff,#e6f2ff);padding:23px 26px;border-radius:17px;margin-bottom:23px}.page-banner h2{font-size:22px;margin:5px 0}.page-banner p{margin:0;font-size:12px}.page-banner>.icon{width:46px;height:46px;color:#76aeed}.week-picker{display:flex;gap:9px;align-items:flex-end}.week-picker label{font-size:10px}.week-picker input{max-width:190px}.week-picker .button{height:44px}.timetable-day{border:1px solid #dfeafb;background:#fff;border-radius:17px;margin-bottom:16px;overflow:hidden;box-shadow:var(--shadow)}.day-heading{display:flex;align-items:center;justify-content:space-between;background:#f8fbff;border-bottom:1px solid #e1ecfb;padding:13px 18px;font-size:13px}.day-heading small{margin-left:7px;font-weight:400}.day-heading>span{font-size:10px;background:#eef5ff;padding:4px 9px;border-radius:20px}.timetable-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:16px}.timetable-card{border:1px solid #dceafd;border-radius:14px;padding:16px;min-width:0}.timetable-card .section-heading{gap:8px;align-items:flex-start;margin-bottom:3px}.timetable-card strong{font-size:13px;color:#1c4275}.timetable-card p{font-size:12px;margin:14px 0;color:#58789e;line-height:1.9}.timetable-card .icon{width:14px;height:14px;margin-right:4px}.timetable-card .button{font-size:13px;padding:6px 11px}.delivery-badge{display:inline-flex;border-radius:20px;font-size:9px;padding:4px 9px;background:#e4f8fc;color:#138ea6;font-weight:650;white-space:nowrap}.text-link{display:block;font-size:13px;margin-top:12px}.empty{font-size:12px;margin:2px 0;grid-column:1/-1;padding:5px 0}.schedule-editor{border-top:1px solid var(--line);padding-top:20px;margin-top:5px}.schedule-editor .section-heading{align-items:flex-start}.schedule-editor .section-heading p{font-size:13px}.schedule-editor .section-heading button{white-space:nowrap;font-size:13px}.schedule-row{background:#fbfdff;border:1px solid #dfebfb;border-radius:12px;padding:17px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-bottom:16px}.schedule-row label{font-size:13px}.schedule-row .danger{color:#d55269;align-self:end;min-height:42px}.schedule-note{font-size:13px;background:#f7faff;border:1px solid #e3ebf7;border-radius:9px;padding:13px;margin:0}.page-tabs{display:flex;gap:8px;margin:0 0 20px;border-bottom:1px solid var(--line);padding-bottom:10px}.page-tabs a{display:flex;gap:9px;align-items:center;padding:11px 16px;color:#6c88aa;font-size:13px;border-radius:9px}.page-tabs a.active{color:#146cd9;background:#e3efff;font-weight:700}.qr-selected h2{font-size:22px;margin:7px 0}.statistics-filters{display:grid;grid-template-columns:1fr 1fr 1.6fr 1.6fr auto;gap:14px;align-items:end}.statistics-filters button{min-height:45px}.statistics-grid{display:grid;grid-template-columns:1.65fr 1fr 1.15fr;gap:18px;align-items:start}.chart-panel{min-width:0;padding:21px}.chart-panel>h2{font-size:16px;margin-bottom:10px;padding-bottom:0;border:0}.chart-panel>p{font-size:13px;margin:0 0 12px}.chart-box{width:100%;height:285px;position:relative}.chart-box canvas{display:block;max-width:100%}.chart-tooltip{position:absolute;pointer-events:none;background:#173a68;color:#fff;box-shadow:0 4px 15px #12396325;border-radius:7px;padding:8px 10px;max-width:190px;font-size:13px;z-index:3}.chart-legend{display:flex;justify-content:center;flex-wrap:wrap;gap:7px 12px;margin-top:-18px;position:relative;font-size:9px;color:#7890af}.chart-legend span{display:inline-flex;align-items:center;gap:5px}.chart-legend i{width:9px;height:9px;border-radius:50%;display:inline-block}.chart-panel details{font-size:13px;margin-top:15px}.statistics-grid:has(>section:nth-child(2):last-child){grid-template-columns:1.7fr 1fr}.login-logo{width:225px;height:85px}.login-art{background:linear-gradient(145deg,#134785,#082d63)}.guest header .portal-heading>img{width:145px;height:48px}.guest header .portal-heading h1{font-size:17px}.dialog-body .schedule-row{grid-template-columns:repeat(2,minmax(0,1fr))}dialog:has(.schedule-editor)[open]{width:min(1040px,calc(100vw - 32px))}.form-grid h3.full{padding-bottom:10px;border-bottom:1px solid var(--line);margin:3px 0;color:#1e497e}
@media(min-width:1600px){.dialog-body .schedule-row{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1150px){.statistics-grid{grid-template-columns:1fr 1fr}.statistics-grid .chart-panel:first-child{grid-column:1/-1}.timetable-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.statistics-filters{grid-template-columns:1fr 1fr}.statistics-filters button{grid-column:1/-1}.page-banner{flex-wrap:wrap}.app main{margin-left:248px}.week-picker{flex-wrap:wrap}}
@media(max-width:760px){.app main{margin-left:0}.brand img{width:90px}.portal-heading>img{width:48px;height:35px}.portal-heading{gap:9px}.portal-heading .eyebrow{font-size:8px}.portal-heading h1{font-size:18px}.app header{padding:13px 10px;gap:8px}.metric strong{font-size:21px}.section-heading{flex-wrap:wrap;gap:13px}.section-heading .search-form{width:100%;max-width:none}.search-form label{min-width:160px}.pagination{gap:15px}.pagination>div{gap:9px;font-size:10px}.pagination a{font-size:10px;padding:7px 10px}.page-banner{padding:19px;gap:17px}.page-banner h2{font-size:21px}.page-banner p{font-size:13px}.week-picker{width:100%;gap:7px}.week-picker input{max-width:165px}.week-picker label{flex:1}.week-picker button,.week-picker .button{padding:10px}.timetable-grid{grid-template-columns:1fr;padding:12px}.day-heading{padding:13px;font-size:12px}.statistics-grid,.statistics-grid:has(>section:nth-child(2):last-child){grid-template-columns:1fr}.statistics-filters{grid-template-columns:1fr 1fr;gap:12px}.statistics-filters label{min-width:0}.chart-panel{padding:18px}.chart-panel .chart-box{max-width:100%}.schedule-row,.dialog-body .schedule-row{grid-template-columns:1fr;gap:13px;padding:14px}.schedule-editor .section-heading{gap:12px}.schedule-editor .section-heading button{font-size:13px}.page-tabs a{padding:10px;font-size:12px}.login-logo{width:210px}.guest header .portal-heading>img{width:110px;height:36px}dialog:has(.schedule-editor)[open]{width:calc(100vw - 20px)}}
@media print{.page-banner form,.page-tabs,.pagination,.search-form,.statistics-filters{display:none!important}.statistics-grid{display:block}.chart-panel{break-inside:avoid}.chart-box{max-width:650px}.timetable-day{break-inside:avoid}.timetable-card .text-link{display:none}}

/* v1.3 compact controls and account workflows */
.metric{padding-top:15px;padding-bottom:15px}.metric strong{font-size:20px;margin-top:6px;line-height:1.25}#sidebar nav a{font-size:13px;font-weight:520}input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea{padding-top:8px;padding-bottom:8px;min-height:38px}button,.button{padding:8px 14px;min-height:36px;border-radius:9px;font-size:13px;font-weight:600;line-height:1.35;transition:background .15s,box-shadow .15s}button:focus-visible,.button:focus-visible{outline:3px solid #9bc8ff;outline-offset:2px}.statistics-filters button{min-height:38px}.week-picker .button{height:38px}.schedule-row .danger{min-height:38px}.icon-button{padding:8px}.person-photo{width:62px;height:62px;object-fit:cover;border-radius:16px;border:2px solid #dceaff;margin-right:12px;vertical-align:middle}.access-editor,.billing-settings{border-top:1px solid var(--line);padding-top:16px}.access-editor>p,.billing-settings>p{font-size:12px}.access-editor fieldset{border:1px solid var(--line);border-radius:10px;margin:12px 0 0;padding:12px}.access-options{max-height:230px;overflow:auto;display:grid;grid-template-columns:1fr 1fr;gap:9px}.access-options label{display:flex;align-items:center;gap:8px;font-size:12px}.access-options input{flex:none}.access-editor[hidden],.access-editor fieldset[hidden]{display:none}.otp-boxes{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;max-width:355px;margin:13px 0}.otp-boxes input{width:100%;height:52px;text-align:center;font-size:22px;border:1.5px solid #cfdef3;border-radius:10px;font-weight:600;padding:6px}.otp-boxes input:focus{border-color:#297de5;box-shadow:0 0 0 3px #daeaff;outline:none}.text-button{background:transparent;color:#326bb1;border:0;padding-left:0;box-shadow:none}.signin-heading h3{font-size:21px;margin:10px 0}.signin-heading p{font-size:13px}.signin-heading .auth-symbol{width:42px;height:42px}.login-form [data-auth-error]{background:#fff0f0;border:1px solid #f3c8cd;color:#a33246;border-radius:9px;padding:12px;margin:12px 0;font-size:13px}.login-form [data-auth-error][hidden]{display:none}.camera-preview{scroll-margin:25px}.qr-selected{scroll-margin-top:20px;outline:none}.billing-settings .form-grid{margin-top:14px}.form-grid>section{min-width:0}
@media(max-width:760px){.metric strong{font-size:20px;margin-top:6px}.metric{padding-top:15px;padding-bottom:15px}.access-options{grid-template-columns:1fr}.otp-boxes{gap:6px}.otp-boxes input{height:46px;font-size:20px}.login-form{padding:22px 18px}.week-picker button,.week-picker .button{padding:8px 10px}}
.signin-heading .auth-symbol{margin:0 0 8px;padding:10px}.account .person-photo{width:36px;height:36px;border-radius:50%;margin-right:0}.text-button:hover{background:#edf5ff;color:#175aae}@media(max-width:760px){.login-grid:has([data-otp]) .login-art{display:none}}

/* 1.4: compact administration, full-page editors and printable documents. */
#sidebar{scrollbar-width:none;-ms-overflow-style:none}#sidebar::-webkit-scrollbar{display:none}
.panel{padding:16px 18px;margin-bottom:16px}.panel h2{margin-bottom:12px}.metric{padding:15px 18px}.metric strong{font-size:20px;margin-top:4px}.cards{gap:14px;margin-bottom:16px}.page-banner{padding:18px 22px;margin-bottom:16px}.schedule-row{padding:14px;gap:12px}.schedule-editor{padding:16px}.form-grid{gap:13px 16px}.form-footer{margin-top:15px}.panel p{margin-bottom:12px}
.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-8px 0 16px;font-size:12px;color:var(--muted)}.breadcrumbs a{padding:0;color:var(--primary);font-size:12px;background:none}.breadcrumbs [aria-current]{color:var(--ink)}
.filter-bar{display:flex;align-items:flex-end;flex-wrap:wrap;gap:12px;margin-bottom:14px}.filter-bar>label,.filter-bar>div{flex:1;min-width:170px}.filter-bar button,.filter-bar .button{flex-shrink:0;margin:0;min-height:38px}.filter-bar label{margin:0}.actions.billing-actions{align-items:center;gap:8px}.billing-actions form,.billing-actions .form-footer{margin:0}.billing-actions .form-grid:empty{display:none}.billing-actions button{min-height:38px}
.class-editor{max-width:1150px;margin:auto}.class-section{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px}.class-section h3{margin:0 0 8px}.class-editor>.form-grid{gap:16px}.class-editor .schedule-editor{background:#fff;border:1px solid var(--line);border-radius:14px}.class-editor form>.form-footer{padding:0 0 12px}.pay-entry{display:flex;align-items:center;gap:8px;min-width:160px}.pay-entry input{min-width:90px;max-width:150px}.print-controls{margin-bottom:16px}
.invoice-document{max-width:900px;margin:0 auto 22px;padding:32px;background:#fff;border:1px solid var(--line);border-top:4px solid var(--primary);border-radius:12px}.invoice-heading{display:flex;justify-content:space-between;gap:24px;padding-bottom:18px;border-bottom:1px solid var(--line)}.invoice-heading h2{font-size:18px;margin:12px 0 6px}.invoice-heading p{font-size:12px;margin:0}.invoice-logo{width:170px;height:64px;object-fit:contain;object-position:left center}.document-reference{text-align:right;flex-shrink:0}.document-reference h2{font-size:22px;margin:8px 0}.invoice-recipient{padding:20px 0}.invoice-recipient h3{margin:6px 0;font-size:16px}.invoice-document td{white-space:normal;overflow-wrap:anywhere;padding:12px}.invoice-document th{padding:10px 12px}.invoice-document td:first-child{width:35%;color:var(--muted)}.invoice-total{margin:18px 0 16px;padding:15px 18px;background:#eff6ff;border-radius:8px;display:flex;align-items:center;justify-content:space-between;gap:20px}.invoice-total strong,.receipt .amount{font-size:20px;font-weight:700}.invoice-note{font-size:12px}.invoice-footer{border-top:1px solid var(--line);padding-top:14px;font-size:13px;color:var(--muted)}
@media(max-width:650px){.panel{padding:14px}.invoice-document{padding:18px}.invoice-heading{flex-direction:column;gap:14px}.document-reference{text-align:left}.filter-bar>label,.filter-bar>div{min-width:130px}.class-section{padding:14px}.invoice-total{gap:10px}.invoice-total strong{font-size:20px}}
@media print{.breadcrumbs,.print-controls,.billing-actions,.form-footer,.class-editor>a,footer{display:none!important}.invoice-document{border:0;border-radius:0;padding:10mm;margin:0;max-width:none;box-shadow:none}.invoice-document,.panel{break-inside:avoid}.invoice-heading{flex-direction:row}.document-reference{text-align:right}.table-wrap{overflow:visible!important}table{min-width:0!important}td,th{white-space:normal!important}.pay-entry input{border:0}.page-banner{padding:0;background:none}.invoice-total{print-color-adjust:exact;-webkit-print-color-adjust:exact}.app main{padding:0;margin:0}.panel{box-shadow:none}}
.form-grid>.full{min-width:0}.form-grid .table-wrap{max-width:100%;width:100%}
.class-editor form>.form-footer{display:flex;justify-content:flex-end;align-items:center;gap:8px}

/* 1.5: uniform record tools, compact rows, mobile title and portal themes. */
body.theme-blue{--primary:#1767ca;--primary-dark:#1054a8;--accent-soft:#edf5ff}
body.theme-emerald{--primary:#087b60;--primary-dark:#075d49;--accent-soft:#eaf8f2}
body.theme-violet{--primary:#6d46c8;--primary-dark:#54339e;--accent-soft:#f2edfc}
body.theme-amber{--primary:#955600;--primary-dark:#744300;--accent-soft:#fff6e6}
body.theme-rose{--primary:#b42e63;--primary-dark:#8e244e;--accent-soft:#fceef3}
body.theme-slate{--primary:#41546a;--primary-dark:#2e3e51;--accent-soft:#eef2f6}
button,.button,.file-button{font-size:13px}button:not(.secondary):not(.modal-trigger):not(.icon-button):not([data-student-tab]),.button:not(.secondary){background:var(--primary);border-color:var(--primary)}button:not(.secondary):not(.modal-trigger):not(.icon-button):not([data-student-tab]):hover,.button:not(.secondary):hover{background:var(--primary-dark);border-color:var(--primary-dark)}.secondary:hover,.modal-trigger:hover{background:var(--accent-soft);color:var(--primary)}#sidebar nav a.selected{background:var(--accent-soft);color:var(--primary)}.metric:before,.pass-stripe{background:var(--primary)}.page-tabs a.active,.student-action-tabs button.active{color:var(--primary);background:var(--accent-soft);border-color:var(--primary)}
.data-table{min-width:0;width:100%}.data-table th,.data-table td{padding:8px 12px;font-size:13px;line-height:1.45}.data-table td small,.cell-subtitle,.data-table label,.data-table input,.data-table select{font-size:13px}.data-table td p{margin:0}.data-table td .form-footer{margin-top:4px}.data-table .table-wrap{max-width:100%;overflow:auto}.table-toolbar{display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px;margin:12px 0}.table-toolbar label{margin:0;font-size:13px}.table-toolbar label:first-of-type{flex:1;min-width:150px;max-width:440px}.table-toolbar label:nth-of-type(2){width:90px}.table-toolbar button{min-height:38px}.table-toolbar input,.table-toolbar select{width:100%;height:38px}.pagination small,.pagination span,.pagination a,.table-entry-note{font-size:13px}.table-pagination button:disabled{cursor:default;opacity:.45}.table-entry-note{margin-top:10px!important;color:var(--muted)}.data-table td .actions{gap:6px}.data-table td .button,.data-table td button{padding:6px 10px;min-height:32px}
.mobile-page-title{display:none}.scan-controls{display:flex;align-items:stretch;flex-wrap:nowrap;gap:10px}.scan-controls button,.scan-controls .file-button{display:inline-flex;align-items:center;justify-content:center;flex:0 1 auto;margin:0;min-height:38px;padding:8px 14px;line-height:1.35;font-size:13px;white-space:nowrap}.scanner input,.scanner select,.qr-selected input,.qr-selected select{box-sizing:border-box;width:100%;min-width:0;height:38px;min-height:38px;max-width:100%;padding:8px 10px;line-height:20px}.scanner .form-grid>*{min-width:0}.scanner input[type=date],.qr-selected input[type=date]{appearance:none;-webkit-appearance:none}.student-action-tabs{margin:12px 0 20px;gap:8px}.student-action-tabs button{background:white;color:var(--muted);border:1px solid var(--line);min-height:40px}.student-action-tabs button:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.rescan{margin-top:16px}.rescan>summary{cursor:pointer;color:var(--primary);padding:10px 0;font-size:13px}.qr-selected>.section-heading h2{margin:4px 0}.qr-selected .filter-bar{align-items:flex-end}
@media(max-width:760px){header{display:grid;grid-template-columns:auto minmax(32px,1fr) auto;gap:8px;align-items:center;padding:12px!important;margin-bottom:12px!important}header .portal-heading{min-width:0;gap:0}header .portal-heading>div{display:none}header .portal-heading img{height:32px;width:40px;object-fit:contain;margin:0}.account{gap:6px;min-width:0}.account .profile-link{gap:5px;min-width:0}.account .profile-link>span:not(.avatar){max-width:86px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account form button{font-size:13px;padding:6px;white-space:nowrap;min-height:32px;background:transparent!important;color:var(--muted);border:0!important}.mobile-page-title{display:block;margin:10px 0 18px}.mobile-page-title h1{font-size:23px;line-height:1.25;margin:0;overflow-wrap:anywhere}.breadcrumbs{margin:0 0 14px}.scan-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.scan-controls button,.scan-controls .file-button{width:100%;padding:8px 6px;min-width:0;font-size:13px}.table-toolbar{gap:8px}.table-toolbar label:first-of-type{min-width:145px;max-width:none}.table-toolbar label:nth-of-type(2){width:75px}.data-table th,.data-table td{padding:8px 10px}.pagination{align-items:flex-start;gap:10px;flex-wrap:wrap}.pagination>div{flex-wrap:wrap;gap:6px}.student-action-tabs button{flex:1}.account .avatar{width:30px;height:30px;flex-shrink:0}}
@media print{.table-toolbar,.table-pagination,.table-entry-note,.server-table-controls,.mobile-page-title,.rescan,.student-action-tabs{display:none!important}.data-table{display:block}.data-table .table-wrap{overflow:visible}.data-table th,.data-table td{font-size:11pt;padding:6px 8px}}
.account form button,.account form button:hover{background:transparent!important;border-color:transparent!important;color:var(--primary);box-shadow:none}
@media(max-width:760px){.qr-selected .data-table table{table-layout:fixed;white-space:normal}.qr-selected .data-table th,.qr-selected .data-table td{overflow-wrap:anywhere;padding:8px 6px}.qr-selected .data-table th:nth-child(1){width:30%}.qr-selected .data-table th:nth-child(2){width:25%}.qr-selected .data-table th:nth-child(3){width:25%}.qr-selected .data-table th:nth-child(4){width:20%}.qr-selected .data-table td button{width:100%;padding:6px}.qr-selected .data-table td button .icon{display:none}}
.class-editor-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:0 auto 14px;max-width:1150px}.class-editor-actions .button{min-height:38px}.filter-bar,.week-picker,.statistics-filters,.billing-settings .form-grid,.class-section .form-grid{align-items:end}.filter-bar input[type=date],.filter-bar input[type=month],.week-picker input[type=date],.statistics-filters input[type=date],.billing-settings input[type=date],.class-section input[type=date],.schedule-row input[type=date],input[type=date],input[type=month]{height:38px;min-height:38px;width:100%;padding:8px 10px;font-size:13px;line-height:20px;box-sizing:border-box}.filter-bar>label,.week-picker>label{min-width:0}.filter-bar>label input[type=date],.filter-bar>label input[type=month]{max-width:none}.week-picker{align-items:end}.week-picker>label{flex:1 1 190px;max-width:280px}.week-picker input[type=date]{max-width:none}.month-picker.date-control{height:38px;min-height:38px;display:flex;align-items:stretch;gap:8px;width:100%}.month-picker.date-control select{height:38px;min-height:38px;padding:8px 10px}.mfa-setup-qr{width:min(220px,100%);height:220px;padding:12px;display:grid;place-items:center;border:1px solid #dce8f8;border-radius:14px;background:#fff;margin:14px 0}.mfa-setup-qr svg{width:100%;height:100%;max-width:190px;max-height:190px;display:block}.text-button{display:inline-flex;align-items:center;min-height:34px;text-decoration:underline;text-underline-offset:3px}.text-button:hover{background:var(--accent-soft);color:var(--primary)}
.ajax-toast{position:fixed;right:22px;bottom:22px;z-index:100;padding:11px 16px;border-radius:10px;background:var(--primary);color:#fff;box-shadow:0 10px 30px #163b6a33;font-size:13px;font-weight:650}.ajax-toast.error{background:#b02f47}@media(max-width:760px){.ajax-toast{right:14px;left:14px;bottom:14px;text-align:center}}
@media(max-width:760px){input[type=date],input[type=month],.filter-bar input[type=date],.filter-bar input[type=month],.week-picker input[type=date],.statistics-filters input[type=date],.billing-settings input[type=date],.class-section input[type=date],.schedule-row input[type=date]{height:45px;min-height:45px;font-size:16px}.month-picker.date-control,.month-picker.date-control select{height:45px;min-height:45px}.month-picker.date-control select{font-size:16px}.week-picker>label{max-width:none;flex:1 1 100%}.week-picker>button,.week-picker>.button{align-self:end}.class-editor-actions{justify-content:flex-start;flex-wrap:wrap}.mfa-setup-qr{width:190px;height:190px}.mfa-setup-qr svg{max-width:160px;max-height:160px}}

/* Final interaction and typography refinements. */
.manage-client-button{color:#fff!important;background:var(--primary)!important;border-color:var(--primary)!important}
.metric strong{font-size:18px!important;margin-top:3px!important}
#sidebar nav a,aside nav a{font-size:14px!important}
.eyebrow,.metric-foot,.cell-subtitle,.badge,.nav-group-label,.profile-link small{font-size:12px!important}
.scan-controls{padding-left:8px;padding-right:8px}
.scan-controls button,.scan-controls .file-button{padding-left:16px;padding-right:16px}
.dialog-body input[type=date],.dialog-body input[type=month]{height:38px;min-height:38px;font-size:13px;line-height:20px;padding:8px 10px;box-sizing:border-box}
.attendance-loader-form{display:grid;grid-template-columns:1fr;gap:12px;align-items:stretch}
.attendance-loader-actions{display:grid;grid-template-columns:minmax(190px,280px) auto;gap:10px;align-items:end}
.attendance-loader-actions button{height:38px;min-height:38px}
@media(max-width:760px){.scan-controls{padding-left:4px;padding-right:4px}.scan-controls button,.scan-controls .file-button{padding-left:10px;padding-right:10px}.dialog-body input[type=date],.dialog-body input[type=month]{height:45px;min-height:45px;font-size:16px}.attendance-loader-actions{grid-template-columns:minmax(0,1fr) auto}.attendance-loader-actions button{height:45px;min-height:45px}}

/* v1.6: one control size, including the native iOS date editor. */
:root{--control-height:38px;--control-font:13px}
@media(max-width:760px){:root{--control-height:44px;--control-font:16px}}
html body input:is([type=date],[type=month],[type=time],[type=datetime-local],[type=week]),html body select:not([multiple]),html body input:is([type=text],[type=email],[type=number],[type=search],[type=password],[type=tel],[type=url]):not(.otp-boxes input){box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:var(--control-height)!important;min-height:var(--control-height)!important;max-height:var(--control-height)!important;padding:0 10px!important;line-height:normal;font-size:var(--control-font)!important}
html body input:is([type=date],[type=month],[type=time],[type=datetime-local],[type=week]){-webkit-appearance:none;appearance:none;display:block;min-inline-size:0;inline-size:100%;text-align:left;overflow:hidden}
input::-webkit-date-and-time-value{text-align:left;min-height:1em;margin:0;padding:0}
input::-webkit-datetime-edit{display:inline-flex;align-items:center;padding:0;min-width:0;height:100%}
input::-webkit-datetime-edit-fields-wrapper{padding:0}
.form-grid>*,.filter-bar>*,.filter-bar label,.form-grid label,.sheet-loader-actions>*,.attendance-loader-actions>*,.location-fields>*{min-width:0}
.sheet-loader-form.filter-bar{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
.sheet-class-field{grid-column:1/-1;width:100%}
.sheet-loader-actions{display:flex;flex-wrap:wrap;align-items:end;gap:10px;min-width:0}
.sheet-loader-actions>label,.sheet-loader-actions>[data-period-month],.sheet-loader-actions>[data-period-date]{flex:1 1 180px}
.sheet-loader-actions button,.attendance-loader-actions button{height:var(--control-height)!important;min-height:var(--control-height)!important;white-space:nowrap}
.attendance-loader-actions{grid-template-columns:minmax(0,1fr) auto}
.location-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
html body .month-picker.date-control,html body .month-picker.date-control select{height:var(--control-height)!important;min-height:var(--control-height)!important;max-height:var(--control-height)!important;font-size:var(--control-font)!important;min-width:0}
@media(max-width:760px){.location-fields{grid-template-columns:minmax(0,1fr)}.sheet-loader-actions{display:grid;grid-template-columns:minmax(0,1fr) auto}.sheet-loader-actions>label:has(select[name=kind]){grid-column:1/-1}.sheet-loader-actions button{grid-column:2;grid-row:auto;padding:0 12px}.sheet-loader-actions>[data-period-course]{margin:0;align-self:center}.filter-bar{min-width:0}.filter-bar>button{max-width:100%}}

/* v1.6.1: center native calendar text using a real 20px content box.
   iOS date-and-time-value does not inherit the desktop datetime-edit flex layout. */
html body input:is([type=date],[type=month],[type=time],[type=datetime-local],[type=week]){padding:calc((var(--control-height) - 22px)/2) 10px!important;line-height:20px!important}
input::-webkit-date-and-time-value{display:block;line-height:20px;height:20px;min-height:20px;margin:0;text-align:left;padding:0}
input::-webkit-datetime-edit{display:inline-flex;align-items:center;height:20px;min-height:0;line-height:20px;padding:0}
input::-webkit-datetime-edit-fields-wrapper{padding:0}
input::-webkit-calendar-picker-indicator{margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0}
/* Keep previous/next beside the selected week, aligned with the input baseline. */
.week-picker{display:grid;grid-template-columns:32px minmax(145px,1fr) auto 32px;gap:8px;align-items:end;min-width:0}
.week-picker>label{min-width:0;max-width:none;width:100%}
.week-picker>.button,.week-picker>button{height:var(--control-height)!important;min-height:var(--control-height)!important;margin:0;align-self:end;padding:0 10px;white-space:nowrap}
.week-picker>.button{width:32px;padding:0;font-size:21px}
@media(max-width:760px){.week-picker{width:100%;grid-template-columns:30px minmax(0,1fr) auto 30px;gap:6px}.week-picker>.button{width:30px}.week-picker>button{padding:0 8px}}
@media(max-width:380px){.week-picker{grid-template-columns:30px minmax(0,1fr) 30px}.week-picker>label{grid-column:2;grid-row:1}.week-picker>a:first-child{grid-column:1;grid-row:1}.week-picker>a:last-child{grid-column:3;grid-row:1}.week-picker>button{grid-column:1/-1;grid-row:2}}
/* QR banner: icon stays beside the title instead of creating an empty lower row. */
.page-banner.qr-desk-banner{display:grid;grid-template-columns:minmax(0,1fr) 32px;gap:10px;align-items:start;padding:14px 16px}
.qr-desk-banner h2{margin:3px 0 6px}
.qr-desk-banner p{margin:0}
.page-banner.qr-desk-banner>.icon{width:28px;height:28px;margin-top:23px}
.scanner .scan-controls{display:flex;gap:8px;padding:0;align-items:stretch}
.scanner .scan-controls>button,.scanner .scan-controls>.file-button{flex:1 1 0;min-width:0;max-width:100%;padding:8px 10px;gap:6px;font-size:13px;line-height:20px;white-space:nowrap;margin:0}
.scan-controls .icon{width:16px;height:16px;flex-shrink:0}
.scanner-intro{margin-bottom:12px}
.scanner-intro p{margin-bottom:0}
.qr-card-actions{display:flex;flex-wrap:nowrap;gap:6px;align-items:center;width:100%}
.qr-card-actions>button{flex:0 1 auto;min-width:0;padding:8px 10px;gap:5px;white-space:nowrap;font-size:13px;line-height:20px}
.qr-card-actions .icon{width:16px;height:16px;flex:none}
@media(max-width:380px){.scanner{padding:12px}.scanner .scan-controls>button,.scanner .scan-controls>.file-button{padding-left:6px;padding-right:6px;gap:4px;font-size:12px}.qr-card-actions>button{padding:8px 6px;gap:4px;font-size:12px}.qr-card-actions{gap:5px}}

/* v1.7 academic sheets */
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%);white-space:nowrap;border:0!important}
.attendance-choice{position:relative;border:0;padding:0;margin:0;min-width:270px}
.attendance-choice-meta{display:flex;align-items:center;gap:12px;margin:0 0 7px}
.attendance-state{font-size:12px;color:#617b9d;background:#f0f5fc;padding:2px 8px;border:1px solid #dae5f5;border-radius:20px;white-space:nowrap}
.attendance-state.pending{color:#966100;background:#fff6de;border-color:#efd797}
button.attendance-clear{background:transparent;color:#5d79a2;min-height:26px;font-size:12px;padding:2px 0;box-shadow:none}
button.attendance-clear[hidden]{display:none}
.attendance-buttons{display:flex;flex-wrap:wrap;gap:5px}
.attendance-buttons label{display:inline-flex;position:relative;margin:0;cursor:pointer;font-weight:550;font-size:12px;line-height:1.4}
.attendance-buttons input{position:absolute;width:1px!important;height:1px!important;min-height:0!important;min-width:0!important;padding:0!important;opacity:0;overflow:hidden;margin:0}
.attendance-buttons span{display:inline-flex;align-items:center;justify-content:center;padding:5px 8px;min-height:30px;border:1px solid #d5e2f6;border-radius:7px;background:#fff;color:#24436d;white-space:nowrap}
.attendance-buttons input:checked+span{color:var(--primary);border-color:var(--primary);background:var(--accent-soft,#edf5ff);box-shadow:inset 0 0 0 1px var(--primary)}
.attendance-buttons input:focus-visible+span{outline:3px solid #a6ceff;outline-offset:2px}
.attendance-toolbar,.exam-sheet-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.attendance-toolbar [data-attendance-counts]{font-size:13px;color:#52709a}
.exam-sheet-toolbar p{margin:0;flex:1 1 260px}
.exam-metrics .metric{padding:15px 18px}
.exam-metrics .metric>span{font-size:12px;font-weight:600;color:#52709a}
.exam-grade-guide{font-size:12px}
.exam-results-table th:nth-child(1){width:65px}.exam-results-table th:nth-child(2){min-width:180px}.exam-results-table th:nth-child(3){width:140px}
.exam-results-table [data-exam-mark]{min-width:100px!important;max-width:145px!important}
.exam-results-table [data-exam-remarks]{min-width:200px!important}
.exam-results-table .badge.result-pass{background:#e7f8ef;color:#158356}.exam-results-table .badge.result-fail{background:#fff0f1;color:#b22c40}
.exam-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.exam-actions .form-footer{margin:0}.exam-actions .form-grid{display:none}
@media(max-width:760px){.attendance-toolbar .actions{width:100%;gap:8px}.attendance-toolbar .actions>button{flex:1;white-space:normal}.attendance-choice{min-width:245px}.attendance-buttons span{padding:6px;min-height:34px}.qr-selected .attendance-choice{min-width:0;width:100%}.exam-sheet-toolbar>button{width:100%}.exam-actions>form,.exam-actions>.button{flex:1 1 auto}.exam-actions button{width:100%}}
@media print{.attendance-toolbar .actions,.attendance-clear,.exam-actions,.exam-sheet-toolbar>button{display:none!important}.attendance-buttons input:not(:checked)+span{display:none}.exam-results-table input{border:0;background:none}}

.exam-list-table table{min-width:940px}.exam-list-table td:first-child{min-width:220px}.exam-list-table .actions{flex-wrap:nowrap}.exam-list-table .badge,.exam-list-table .button{white-space:nowrap}
.exam-results-table [data-exam-pass]{background:#f0f4fa;color:#61738e;white-space:nowrap}
.exam-results-table .badge.result-pass{background:#e7f8ef;color:#158356}.exam-results-table .badge.result-fail{background:#fff0f1;color:#b22c40}
@media(max-width:760px){#student-attendance>.filter-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px}#student-attendance>.filter-bar>label:first-of-type{grid-column:1/-1}#student-attendance>.filter-bar>label{width:100%;min-width:0}#student-attendance>.filter-bar>button{height:var(--control-height)}}
