:root{--bg:#f5f7fb;--card:#fff;--ink:#172033;--muted:#667085;--line:#e5e9f2;--brand:#0f5d57;--brand2:#e9f5f2;--ok:#137447;--okbg:#e8f7ef;--warn:#9a5b00;--warnbg:#fff4dc;--bad:#8f302f;--badbg:#fff0ef;--blue:#2f65ae;--bluebg:#edf4ff;--shadow:0 12px 38px rgba(31,45,72,.09)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.hidden{display:none!important}button,input,select{font:inherit}.app{min-height:100vh;display:grid;grid-template-columns:232px 1fr}.sidebar{position:sticky;top:0;height:100vh;background:#103f3c;color:#fff;padding:20px 14px}.brand{font-size:20px;font-weight:850;padding:8px 10px 24px}.brand small{display:block;font-size:12px;font-weight:600;opacity:.7;margin-top:4px}.nav-button{display:flex;width:100%;align-items:center;gap:10px;border:0;background:transparent;color:#dcf0ee;padding:13px 14px;border-radius:14px;margin:3px 0;text-align:left;cursor:pointer}.nav-button.active,.nav-button:hover{background:rgba(255,255,255,.12);color:#fff}.account{position:absolute;left:14px;right:14px;bottom:16px;background:rgba(255,255,255,.09);padding:12px;border-radius:14px}.account strong,.account span{display:block}.account span{font-size:12px;opacity:.75;margin:2px 0 8px}.account label{font-size:11px}.account select{width:100%;margin-top:5px;padding:8px;border:0;border-radius:9px}.ghost{width:100%;margin-top:8px;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.08);color:#fff;padding:9px;border-radius:10px;cursor:pointer}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 22px;position:sticky;top:0;z-index:20}.topbar select{border:1px solid var(--line);border-radius:12px;padding:11px;background:#fff;max-width:170px}.search-wrap{position:relative;flex:1;max-width:760px}.search-wrap input{width:100%;border:1px solid var(--line);background:#f9fafc;border-radius:13px;padding:13px 15px;font-size:15px}.search-results{position:absolute;top:53px;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden;z-index:50}.search-item{padding:12px 15px;border-bottom:1px solid var(--line);cursor:pointer}.search-item:last-child{border-bottom:0}.search-item:hover{background:#f7f9fc}.search-item strong,.search-item span{display:block}.search-item span{font-size:12px;color:var(--muted);margin-top:2px}.pill{border:0;border-radius:999px;padding:9px 12px;font-size:12px;font-weight:800}.online{background:var(--okbg);color:var(--ok)}.offline{background:var(--warnbg);color:var(--warn)}.danger{border:0;background:var(--bad);color:#fff;border-radius:12px;padding:11px 14px;font-weight:800}.content{padding:26px;max-width:1540px;margin:auto}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:18px}.page-heading h1{margin:0;font-size:30px}.page-heading p{margin:5px 0 0;color:var(--muted)}.summary-grid{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:14px;margin:18px 0}.card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 1px 0 rgba(0,0,0,.01)}.summary{padding:18px}.summary label{display:block;font-size:12px;font-weight:800;color:#53617a;text-transform:uppercase}.summary strong{display:block;font-size:27px;margin-top:7px}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.segmented{display:flex;background:#e9edf4;border-radius:12px;padding:4px}.segmented button{border:0;background:transparent;padding:9px 12px;border-radius:9px;font-weight:750;cursor:pointer}.segmented button.active{background:#fff;box-shadow:0 1px 5px rgba(0,0,0,.08)}.layout{display:grid;grid-template-columns:300px 1fr;gap:14px}.class-list{padding:10px}.class-item{padding:14px;border-radius:12px;display:flex;justify-content:space-between;gap:10px;cursor:pointer}.class-item.active{background:var(--brand2);color:var(--brand)}.class-item span{display:block;color:var(--muted);font-size:12px;margin-top:3px}.register{overflow:hidden}.register-head{padding:18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}.student-row{padding:15px 18px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.student-row:last-child{border-bottom:0}.student-name{font-weight:800;cursor:pointer}.student-meta{font-size:12px;color:var(--muted);margin-top:3px}.attendance-buttons{display:flex;gap:6px}.attendance-buttons button{border:1px solid var(--line);background:#fff;border-radius:11px;padding:10px 12px;font-weight:750;cursor:pointer;min-width:86px}.attendance-buttons button.present.active{background:var(--okbg);border-color:#bfe6cf;color:var(--ok)}.attendance-buttons button.absent.active{background:var(--badbg);border-color:#efc7c4;color:var(--bad)}.fee{font-weight:850;border-radius:999px;padding:8px 10px;font-size:12px}.fee.paid{background:var(--okbg);color:var(--ok)}.fee.due{background:var(--warnbg);color:var(--warn)}.primary{border:0;background:var(--brand);color:#fff;border-radius:12px;padding:12px 15px;font-weight:800;cursor:pointer}.secondary{border:0;background:#edf0f5;color:var(--ink);border-radius:12px;padding:11px 14px;font-weight:750;cursor:pointer}.login-shell{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at top left,#e7f2f0,transparent 35%),var(--bg)}.login-card{width:min(440px,100%);background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);padding:30px}.login-card h1{margin:5px 0 8px;font-size:32px}.login-card p{color:var(--muted);margin:0 0 22px}.login-card label{display:block;font-weight:750;margin:13px 0}.login-card input{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:12px;padding:13px}.login-card .primary{width:100%;margin-top:8px}.eyebrow{color:var(--brand);font-weight:850}.error{color:var(--bad);font-size:13px;margin-top:10px}.modal{position:fixed;inset:0;background:rgba(20,28,40,.48);display:grid;place-items:center;padding:18px;z-index:100}.modal-card{position:relative;background:#fff;border-radius:22px;box-shadow:0 30px 80px rgba(0,0,0,.25);width:min(820px,100%);max-height:88vh;overflow:auto;padding:26px}.modal-close{position:absolute;right:16px;top:14px;border:0;background:#eef1f5;border-radius:11px;width:42px;height:42px;font-size:24px;cursor:pointer}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}.detail-card{border:1px solid var(--line);border-radius:16px;padding:18px}.detail-card h3{margin:0 0 10px}.detail-line{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid var(--line)}.detail-line:last-child{border-bottom:0}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);opacity:0;background:#19212f;color:#fff;padding:12px 16px;border-radius:12px;transition:.2s;z-index:200;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}.empty{padding:40px;text-align:center;color:var(--muted)}
@media(max-width:900px){.app{grid-template-columns:1fr}.sidebar{position:fixed;z-index:70;width:230px;transform:translateX(-100%);display:none}.topbar{padding:0 10px;gap:7px}.topbar select{max-width:125px}.danger{font-size:0;padding:11px}.danger:after{content:'Fire';font-size:13px}.content{padding:16px}.summary-grid{grid-template-columns:repeat(2,1fr)}.layout{grid-template-columns:1fr}.class-list{display:flex;overflow:auto;gap:5px}.class-item{min-width:170px}.student-row{grid-template-columns:1fr}.attendance-buttons{justify-content:flex-start}.detail-grid{grid-template-columns:1fr}.pill{display:none}}
.directory-shell{display:grid;grid-template-columns:minmax(300px,38%) 1fr;gap:16px}.directory-list{overflow:hidden}.directory-tabs{display:flex;padding:10px;border-bottom:1px solid var(--line);gap:6px}.directory-tabs button{border:0;background:#f1f3f7;padding:9px 12px;border-radius:10px;font-weight:750;cursor:pointer}.directory-tabs button.active{background:var(--brand);color:#fff}.section-search{margin:12px;width:calc(100% - 24px);padding:12px 13px;border:1px solid var(--line);border-radius:12px}.directory-rows{max-height:620px;overflow:auto}.directory-row{display:block;width:100%;border:0;border-top:1px solid var(--line);background:#fff;text-align:left;padding:14px 16px;cursor:pointer}.directory-row:hover{background:#f8fafc}.directory-row strong,.directory-row span{display:block}.directory-row span,.muted{font-size:12px;color:var(--muted);margin-top:3px}.directory-detail{padding:22px;min-height:420px}.profile-head h2{font-size:27px;margin:4px 0}.profile-head p{color:var(--muted);margin:0}.profile-section{border-top:1px solid var(--line);padding-top:18px;margin-top:18px}.profile-section h3{margin:0 0 10px}.profile-row,.child-link{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.profile-row small,.child-link small{display:block;color:var(--muted);margin-top:3px}.child-link{width:100%;background:none;border-left:0;border-right:0;border-top:0;text-align:left;cursor:pointer}.link-button{border:0;background:none;padding:0;font-weight:800;color:var(--brand);cursor:pointer}.contact-actions{display:flex;gap:6px;flex-wrap:wrap}.contact-actions a{text-decoration:none;font-size:12px}.status-chip{background:var(--okbg);color:var(--ok);padding:6px 9px;border-radius:999px;font-size:11px;font-weight:800}.alert-card{border-radius:15px;padding:14px 16px;margin:12px 0;display:flex;gap:8px;flex-direction:column}.alert-card.warn{background:var(--warnbg);color:var(--warn)}.alert-card.good{background:var(--okbg);color:var(--ok)}.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;align-items:start}.kanban-col{background:#edf0f5;border-radius:16px;padding:12px;min-height:240px}.kanban-col h3{margin:2px 2px 12px;display:flex;justify-content:space-between}.application-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:13px;margin-bottom:9px}.application-card strong,.application-card small{display:block}.application-card small{color:var(--muted);margin-top:4px}.application-actions{display:flex;gap:5px;margin-top:11px;flex-wrap:wrap}.application-actions button{border:0;background:#eef1f5;border-radius:8px;padding:7px 9px;font-size:11px;font-weight:750;cursor:pointer}.compact{padding:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form-grid label{font-weight:700}.form-grid input,.form-grid select{display:block;width:100%;border:1px solid var(--line);border-radius:11px;padding:11px;margin-top:5px}.form-grid .primary{align-self:end}
@media(max-width:900px){.directory-shell{grid-template-columns:1fr}.directory-detail{min-height:300px}.kanban{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}}
/* Preview checkpoint 4: UX feedback pass */
.student-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;border-top:0}.student-card{padding:15px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:84px}.student-card:nth-child(odd){border-right:1px solid var(--line)}.student-card-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.student-card .attendance-buttons button{min-width:auto;padding:9px 10px}.family-link{display:flex;width:100%;align-items:center;justify-content:space-between;border:0;background:var(--brand2);color:var(--brand);font-weight:850;border-radius:11px;padding:11px 12px;margin:6px 0 10px;cursor:pointer;text-align:left}.guardian-contact{border-top:1px solid var(--line);padding:10px 0}.guardian-contact strong{display:block;margin-bottom:7px}.modal-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.modal-actions.stacked{align-items:stretch}.modal-actions.stacked button{flex:1 1 180px}.profile-head-actions,.section-title-row,.profile-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}.icon-button{border:1px solid var(--line);background:#f3f5f8;border-radius:10px;width:40px;height:40px;font-size:20px;cursor:pointer}.small-button{padding:8px 10px;font-size:12px}.form-grid textarea{display:block;width:100%;min-height:92px;border:1px solid var(--line);border-radius:11px;padding:11px;margin-top:5px;resize:vertical}.checkbox-label{display:flex!important;align-items:center;gap:8px}.checkbox-label input{width:auto!important;margin:0!important}.clickable{cursor:pointer}.application-card.clickable:hover{box-shadow:0 3px 14px rgba(20,40,60,.08);border-color:#cad4df}.application-actions .undo{background:var(--badbg);color:var(--bad)}
.class-card-grid{display:grid;grid-template-columns:repeat(4,minmax(200px,1fr));gap:16px}.class-card{position:relative;min-height:160px;border:1px solid var(--line);border-radius:18px;background:#fff;padding:20px;text-align:left;cursor:pointer;box-shadow:0 1px 0 rgba(0,0,0,.01)}.class-card:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(20,40,60,.08)}.class-card.womens{background:#fff5f8;border-color:#f2d6df}.class-card.mens{background:#f2f7ff;border-color:#d5e2f3}.class-card>strong{display:block;font-size:18px;padding-right:55px}.class-capacity{display:block;font-size:30px;font-weight:850;margin-top:22px}.class-room{display:block;color:var(--muted);font-size:12px;margin-top:3px}.side-badge{position:absolute;right:14px;bottom:14px;border-radius:999px;padding:6px 9px;font-size:11px;font-weight:850;background:#eef1f5}.class-card.womens .side-badge{background:#f8dce6;color:#8c3655}.class-card.mens .side-badge{background:#dce9fb;color:#315f92}.class-pupil-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px}.class-pupil{border:1px solid var(--line);background:#fff;border-radius:12px;padding:13px;text-align:left;cursor:pointer}.class-pupil strong,.class-pupil span{display:block}.class-pupil span{font-size:12px;color:var(--muted);margin-top:4px}
@media(max-width:1180px){.student-grid{grid-template-columns:1fr}.student-card:nth-child(odd){border-right:0}.class-card-grid{grid-template-columns:repeat(2,minmax(200px,1fr))}}
@media(max-width:700px){.class-card-grid,.class-pupil-grid{grid-template-columns:1fr}.student-card{align-items:flex-start;flex-direction:column}.student-card-actions{width:100%;justify-content:space-between}}

/* Checkpoint 5: visual stabilisation + maintenance workflow */
.checkin-controls{display:grid;grid-template-columns:auto minmax(280px,520px);align-items:center;gap:14px;margin:0 0 14px}.checkin-filter-wrap{position:relative}.checkin-filter-wrap span{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:18px;pointer-events:none}.checkin-filter-wrap input{width:100%;border:1px solid var(--line);background:#fff;border-radius:12px;padding:11px 14px 11px 40px;outline:none}.checkin-filter-wrap input:focus{border-color:#a7c8c3;box-shadow:0 0 0 3px rgba(15,93,87,.08)}
.student-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}.student-card-actions{justify-content:flex-end;flex-wrap:wrap}.student-card .fee{white-space:nowrap}.profile-head-buttons{display:flex;align-items:center;gap:8px}.icon-button{display:inline-grid;place-items:center;border:1px solid var(--line);background:#f7f8fb;color:#334155;border-radius:10px;width:38px;height:38px;font-size:18px;line-height:1;cursor:pointer;transition:.15s}.icon-button:hover{background:#e9f5f2;color:var(--brand);border-color:#c8e1dc}.form-subheading{grid-column:1/-1;font-weight:850;color:var(--brand);padding-top:4px;border-top:1px solid var(--line);margin-top:4px;padding-bottom:2px}.history-list{margin-top:14px;border:1px solid var(--line);border-radius:14px;overflow:hidden}.history-row{display:flex;justify-content:space-between;gap:18px;padding:13px 15px;border-bottom:1px solid var(--line)}.history-row:last-child{border-bottom:0}.history-row span{font-size:12px;color:var(--muted);white-space:nowrap}
.class-card-grid{grid-template-columns:repeat(3,minmax(230px,1fr));gap:14px}.class-card{min-height:148px;padding:18px;border-width:1px}.class-card>strong{font-size:17px;line-height:1.25}.class-capacity{font-size:28px;margin-top:18px}.class-card.womens{background:linear-gradient(180deg,#fff 0%,#fff5f8 100%)}.class-card.mens{background:linear-gradient(180deg,#fff 0%,#f2f7ff 100%)}
@media(max-width:1180px){.class-card-grid{grid-template-columns:repeat(2,minmax(220px,1fr))}.student-grid{grid-template-columns:1fr 1fr}}
@media(max-width:1050px){.student-grid{grid-template-columns:1fr}.student-card:nth-child(odd){border-right:0}.checkin-controls{grid-template-columns:1fr}.checkin-filter-wrap{max-width:none}}
@media(max-width:700px){.class-card-grid{grid-template-columns:1fr}.history-row{flex-direction:column;gap:4px}.student-card{grid-template-columns:1fr}.student-card-actions{justify-content:flex-start}}
.admin-summary{grid-template-columns:repeat(4,minmax(150px,1fr))}.admin-section{padding:20px;margin:16px 0}.admin-section h2{margin:0}.fee-schedule-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}.fee-schedule-row,.outstanding-row,.bursary-row,.payment-row{display:flex;align-items:center;gap:14px;border:1px solid var(--line);border-radius:13px;padding:13px 14px;background:#fff}.fee-schedule-row>div,.outstanding-row>div:first-child,.bursary-row>div,.payment-row>div{flex:1;min-width:0}.fee-schedule-row span,.outstanding-row span,.bursary-row span,.bursary-row small,.payment-row span{display:block;color:var(--muted);font-size:12px;margin-top:3px}.outstanding-list,.bursary-list,.payment-list{display:grid;gap:9px;margin-top:16px}.outstanding-row{display:grid;grid-template-columns:minmax(180px,1fr) auto minmax(260px,1.2fr)}.contact-stack{display:grid;gap:7px}.contact-stack>div{display:flex;align-items:center;justify-content:flex-end;gap:8px}.contact-stack small{min-width:90px;text-align:right;color:var(--muted)}.bursary-row.inactive{opacity:.6}.payment-row b,.outstanding-row>b,.fee-schedule-row>b{white-space:nowrap}
@media(max-width:1050px){.admin-summary{grid-template-columns:repeat(2,1fr)}.fee-schedule-grid{grid-template-columns:1fr}.outstanding-row{grid-template-columns:1fr auto}.contact-stack{grid-column:1/-1}.contact-stack>div{justify-content:flex-start}.contact-stack small{text-align:left}}
@media(max-width:650px){.admin-summary{grid-template-columns:1fr}.outstanding-row,.bursary-row,.payment-row{display:flex;align-items:flex-start;flex-direction:column}.contact-stack>div{align-items:flex-start;flex-direction:column}.contact-stack small{min-width:0}}

/* Check-in readability: details occupy a full row, actions sit below. */
.app>main{min-width:0}
.student-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr))}
.student-card{grid-template-columns:minmax(0,1fr);gap:12px;align-items:start;padding:18px;min-width:0}
.student-card>div:first-child{min-width:0}
.student-card .student-name{font-size:16px;line-height:1.4;overflow-wrap:break-word}
.student-card .student-meta{line-height:1.5;overflow-wrap:break-word}
.student-card-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;width:100%;min-width:0}
.student-card .attendance-buttons{flex-wrap:wrap}
.student-card .attendance-buttons button{white-space:nowrap;min-height:44px}
.student-card .fee{margin-left:auto}
@media(min-width:901px){.layout{grid-template-columns:280px minmax(0,1fr)}}

.class-location{display:flex;align-items:center;flex-wrap:wrap;gap:12px;color:var(--muted);margin:12px 0 20px}.room-badge{display:inline-flex;align-items:center;gap:8px;padding:10px 15px;border-radius:12px;background:#edf5ff;color:#245a92;font-weight:750;border:1px solid #dce9fa}

[hidden]{display:none!important}.calendar-months{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin:16px 0}.calendar-month{border:1px solid #e4e9f1;border-radius:12px;padding:12px}.calendar-month h3{font-size:15px;margin:0 0 12px}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center;font-size:12px}.calendar-day{padding:6px 0;border-radius:6px}.calendar-day.teaching,.calendar-key.teaching{background:#dcf5e9;color:#145b44}.calendar-day.holiday,.calendar-key.holiday{background:#fff0d4;color:#795100}.calendar-day.outside{opacity:.25}.calendar-key{display:inline-block;padding:4px 8px;border-radius:6px;margin:2px}.class-register-rows .attendance-buttons{flex-wrap:wrap;gap:8px;margin-top:10px}.class-register-rows .attendance-buttons .active{background:#dff3ec;border-color:#83c6b0}

.dob-warning{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#f59e0b;color:#fff;font-weight:800;margin-right:4px}

.family-profile-link{text-align:left;font-weight:650}.student-dob{display:block;margin-top:6px}.student-family-edit{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px;background:#f5f8fb;border-radius:14px;margin:16px 0}.profile-head-buttons{flex-wrap:wrap}.class-register-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding-right:40px}.class-register-heading h2{margin-top:0}.register-heading-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.register-state{white-space:nowrap;font-size:14px;font-weight:650;padding:8px 12px;border-radius:999px;background:#e7f5ee;color:#17684d}.register-state.closed{background:#edf0f5;color:#596478}.register-counts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:20px 0}.register-count{background:#f3f6fb;border-radius:12px;padding:12px 16px}.register-count dt{font-size:13px;color:#53627a}.register-count dd{margin:4px 0 0;font-size:24px;font-weight:750}.register-count.present{background:#e8f6ef}.register-count.absent{background:#fff0ed}.register-count.late{background:#eaf2ff}.register-count.unmarked{background:#fff6df}.register-tools{margin:8px 0 20px}.register-tools>summary{cursor:pointer;color:#526782;font-size:14px;font-weight:600}.register-tools .modal-actions{margin-top:10px}@media(max-width:640px){.class-register-heading{flex-direction:column;padding-right:30px;gap:6px}.register-heading-actions{justify-content:flex-start}.register-counts{gap:6px}.register-count{padding:10px 6px;text-align:center}.register-count dd{font-size:20px}.register-count dt{font-size:11px}.student-family-edit{flex-wrap:wrap}}

/* Compact subjects and staff workspace */
.workspace-subject-head,.workspace-subject-row{grid-template-columns:minmax(100px,150px) 105px minmax(0,1fr);gap:14px}
.workspace-subject-row{padding:14px 10px;min-height:0;align-items:center}
.workspace-subject-row .subject-books{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}
.selected-book{display:flex;align-items:center;gap:12px;padding:4px 0;margin:0;flex:1 1 250px;min-width:0}
.selected-book>span{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;min-width:0}
.selected-book small{margin:0}.subject-books>.small-button{margin-left:auto}
.room-toolbar{justify-content:flex-end;gap:12px;align-items:flex-end}
.staff-management-toolbar{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;margin:20px 0}
.staff-management-toolbar label{flex:1;min-width:170px;max-width:360px}
.staff-management-toolbar>.primary{margin-left:auto}
.staff-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.staff-card{border:1px solid #dfe7f5;background:#f8faff;border-radius:18px;padding:18px;cursor:pointer;min-width:0;display:flex;flex-direction:column;gap:10px}
.staff-card:focus-visible{outline:3px solid #8fb1ff}.staff-card:hover{border-color:#b4c9ef}
.staff-card-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.staff-card-heading h3{margin:0;font-size:20px}.staff-role-badge{font-size:12px;font-weight:700;background:#e8edfa;color:#365785;border-radius:9px;padding:6px 10px;white-space:nowrap}
.staff-contact-line{display:flex;align-items:center;gap:7px 12px;flex-wrap:wrap;font-size:12px;min-width:0}
.staff-contact-value{font-weight:700;overflow-wrap:anywhere}.staff-contact-icons{display:flex;gap:4px;align-items:center}
.staff-contact-icons .icon-button{width:30px;height:30px;padding:6px;border-radius:8px}.staff-contact-icons svg{width:17px;height:17px}
.staff-weekly-hours{margin:0;font-size:13px}.staff-teaching-subjects{display:flex;flex-wrap:wrap;gap:5px;font-size:12px}
.staff-teaching-subjects>span:not(.muted){background:#edf0f7;border-radius:7px;padding:4px 8px}
.staff-warning{background:#fff4dd;color:#8c5a0c;border-radius:10px;padding:9px 12px;font-size:13px;margin:0}
.staff-login-status{align-self:flex-start;text-align:left;font-size:12px;font-weight:700;padding:6px 10px;border-radius:8px}
.staff-login-status.needed{color:#93570a;background:#ffedcf;border-color:#f6d296}.staff-login-status.ready{color:#267768;background:#e6f5ef}
.staff-card-actions{display:flex;align-items:center;gap:8px;margin-top:auto}.staff-card-actions .icon-button{width:40px;height:40px}.staff-card-actions>.secondary{margin-left:auto}
.danger-outline{border:1px solid #d87b7b;color:#a63535;background:#fff8f8;border-radius:12px;padding:12px 16px;font-weight:700}
.register-close-footer{display:flex;justify-content:flex-start;margin-top:28px;padding-top:18px;border-top:1px solid #e3e9f4}
.missing-teacher{outline:2px dashed #c98732;outline-offset:-2px}.missing-teacher .timetable-lesson-line small{color:#97550d;font-weight:700}
.teacher-hours{font-size:13px;margin:12px 0 0}.pause-editor-row label:has([data-slot-field=subject_id]),.pause-editor-row label:has([data-slot-field=teacher_id]),.pause-editor-row label:has([data-slot-field=room]){display:none}
.mobile-register-summary{display:none}
.admissions-status-tabs{display:none}.application-warning{color:#985b14;background:#fff3db;border-radius:8px;padding:7px;font-size:12px;margin:6px 0}
.application-move-menu{padding:6px 10px;font-size:12px;width:auto;max-width:130px}.application-applied-date{font-size:11px}
@media(max-width:900px) and (orientation:portrait){.staff-card-grid{grid-template-columns:1fr}}
@media(max-width:700px){.staff-card-grid{grid-template-columns:1fr}.staff-management-toolbar>.primary{margin-left:0}.staff-card{padding:14px}.workspace-subject-head{display:none}.workspace-subject-row{grid-template-columns:minmax(90px,1fr) 90px;gap:8px;padding:12px 0}.workspace-subject-row .subject-books{grid-column:1/-1}.subject-books>.small-button{margin-left:0}.room-toolbar{flex-wrap:wrap}.room-toolbar label{flex:1}.mobile-register-summary{display:block;font-weight:700;background:#fff;padding:12px;border-radius:12px}#content:has(#closeDoorRegister)>.summary-grid{display:none}#content:has(#closeDoorRegister)>.page-heading #closeDoorRegister{order:2}.register-counts{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.register-counts .register-count{display:flex;gap:5px;padding:6px 9px;align-items:center}.register-count dd{font-size:16px;margin:0}.admissions-status-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.admissions-board .kanban-col{display:none}.admissions-board .kanban-col.mobile-active{display:block}}

.admissions-status-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}
@media(min-width:701px){.admissions-board .stage-declined,.admissions-board .stage-withdrawn{display:none}.admissions-board:has(.stage-declined.mobile-active),.admissions-board:has(.stage-withdrawn.mobile-active){grid-template-columns:1fr}.admissions-board:has(.stage-declined.mobile-active) .kanban-col,.admissions-board:has(.stage-withdrawn.mobile-active) .kanban-col{display:none}.admissions-board .stage-declined.mobile-active,.admissions-board .stage-withdrawn.mobile-active{display:block!important}}

.mobile-class-picker{display:none}.staff-role-badge{white-space:normal;max-width:45%;text-align:right}
@media(max-width:700px){.mobile-class-picker{display:block;width:100%}.mobile-class-picker select{width:100%;padding:10px;border:1px solid #dfe7f5;border-radius:10px;background:#fff}.checkin-controls{flex-wrap:wrap}#content:has(#closeDoorRegister) .layout>.class-list{display:none}}

.staff-card-grid.single-staff-profile{grid-template-columns:minmax(0,1fr)}

.staff-management-toolbar{align-items:flex-end;gap:16px}
.staff-management-toolbar .staff-search-label{flex:0 0 260px;display:flex;flex-direction:column;gap:6px;margin-left:auto;font-size:12px;color:var(--muted)}
.staff-search-label input{width:260px;max-width:100%;margin:0}
.staff-management-toolbar>.primary{margin-left:0}
@media(max-width:700px){.staff-management-toolbar .staff-search-label{margin-left:0;flex:1 1 220px}.staff-search-label input{width:100%}}

.staff-panel-intro{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.staff-panel-intro p{margin:0}.staff-panel-intro button{flex-shrink:0;margin-left:auto}@media(max-width:600px){.staff-panel-intro{align-items:flex-start;flex-wrap:wrap}}

.admissions-mobile-filter{display:none}.warning-link{display:block;width:100%;text-align:left;border:0;cursor:pointer;font:inherit;font-size:12px}.warning-link:hover{text-decoration:underline}.warning-link:focus-visible{outline:2px solid #245fec}.admissions-board .stage-declined,.admissions-board .stage-withdrawn{display:block!important}@media(min-width:701px){.admissions-board{grid-template-columns:repeat(4,minmax(0,1fr))}.admissions-board:has(.stage-declined.mobile-active),.admissions-board:has(.stage-withdrawn.mobile-active){grid-template-columns:repeat(4,minmax(0,1fr))}.admissions-board:has(.stage-declined.mobile-active) .kanban-col,.admissions-board:has(.stage-withdrawn.mobile-active) .kanban-col{display:block}}@media(max-width:700px){.admissions-mobile-filter{display:block;margin:12px 0}.admissions-board .stage-declined,.admissions-board .stage-withdrawn{display:none!important}.admissions-board .kanban-col.mobile-active{display:block!important}}

.staff-contact-line{display:flex;justify-content:space-between;align-items:center;gap:12px}.staff-contact-details{display:flex;flex-direction:column;gap:5px;min-width:0}.staff-contact-icons{margin-left:auto;flex-shrink:0}.staff-card-actions .staff-login-status{margin-left:auto;align-self:center}.staff-role-badge{border:0;display:flex;align-items:center;gap:6px;cursor:pointer;text-align:left;max-width:50%}.staff-access-label{font-size:10px;font-weight:400}.staff-role-badge:hover{background:#dce5fa}.staff-role-badge:focus-visible{outline:2px solid #245fec}@media(max-width:420px){.staff-card-heading{align-items:flex-start}.staff-role-badge{flex-wrap:wrap;justify-content:flex-end}.staff-contact-line{gap:8px}.staff-contact-icons .icon-button{width:28px;height:28px}.staff-access-label{width:100%;text-align:right}}

.admissions-heading-actions{display:flex;align-items:center;gap:12px}.admissions-heading-actions .icon-button{display:flex;align-items:center;justify-content:center;padding:14px}.admissions-trash-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid #e1e8f3}.admissions-trash-row>div{flex:1}.admissions-trash-row small{display:block;margin-top:6px;color:#6f809d}@media(max-width:700px){.admissions-board .kanban-col{display:block!important}.admissions-board{grid-template-columns:1fr}.admissions-trash-row{flex-wrap:wrap}.admissions-trash-row>div{flex-basis:100%}}

.room-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px}.room-heading h2{margin:0}.room-heading .room-toolbar{display:flex;margin:0}.room-heading select{min-width:220px}#teacherCellForm>label{display:flex;flex-direction:column;gap:8px}#teacherCellForm input[type=color]{width:100%;height:46px;padding:5px}#teacherCellForm .toolbar{gap:14px;flex-wrap:wrap}@media(max-width:700px){.room-heading{flex-wrap:wrap}.room-heading .room-toolbar{width:100%}.room-heading select{min-width:0;width:100%}}

#admissionsTrash svg{width:20px;height:20px;min-width:20px;flex:none}#admissionsTrash{width:48px;height:48px;padding:12px}
/* Check-in: phones keep the pupil list near the top (fallback where :has is unsupported) */
@media(max-width:700px){#content .summary-grid.checkin-summary{display:none}}
.sync-chip{display:inline-block;margin-left:6px;padding:2px 7px;border-radius:7px;font-size:11px;font-weight:700;background:#fff4dc;color:#8a5300}.sync-chip.error{background:#fff0ef;color:#8f302f}
.sync-queue{display:flex;flex-direction:column;gap:8px;margin:12px 0}.sync-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid #e3e9f4;border-radius:12px;min-width:0}.sync-row>span{display:flex;flex-direction:column;gap:3px;min-width:0;overflow-wrap:anywhere}.sync-row.error{border-color:#e7b3b0;background:#fff8f8}.sync-row-state{color:#667085}.sync-row.error .sync-row-state{color:#8f302f;font-weight:650}

/* Fire roll-call: large targets, high contrast, no horizontal overflow */
.fire-launch{border:1px solid #d87b7b;background:#fff0f0;color:#a12f2f;border-radius:12px;padding:11px 14px;font-weight:750;min-height:44px}
.fire-rollcall{min-width:0;overflow-wrap:anywhere}.fire-head{display:flex;align-items:center;gap:12px;padding-right:48px}.fire-head h2{margin:0}.fire-back{min-height:44px}
.fire-scope{margin:10px 0 6px;font-weight:650;color:#344054}
.fire-banner{border-radius:10px;padding:10px 12px;margin:8px 0;font-size:14px}.fire-banner.live{background:#e8f7ef;color:#0f5132}.fire-banner.offline{background:#fff0ef;color:#8f302f;border:1px solid #e7b3b0}.fire-banner.warn{background:#fff4dc;color:#7a4a00}
.fire-incident{margin:10px 0}.fire-start{border:1px solid #e3e9f4;border-radius:14px;padding:14px;margin:12px 0;background:#fafbfe}
.fire-primary{width:100%;min-height:56px;border:0;border-radius:12px;background:#b42318;color:#fff;font-size:18px;font-weight:800}.fire-primary:disabled{opacity:.5}
.fire-counts{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin:12px 0}.fire-count{background:#f3f6fb;border-radius:12px;padding:12px;margin:0}.fire-count dt{font-size:13px;color:#53627a}.fire-count dd{margin:4px 0 0;font-size:30px;font-weight:800}.fire-count.todo{background:#fff0ef}.fire-count.todo dd{color:#8f302f}.fire-count.done{background:#e8f7ef}.fire-count.done dd{color:#0f5132}
.fire-empty{border:2px dashed #e7b3b0;border-radius:14px;padding:16px;margin:12px 0;background:#fff8f8}.fire-empty p{margin:6px 0 0}
.fire-filter{margin:8px 0 4px;flex-wrap:wrap}.fire-filter button{min-height:44px}
.fire-class{margin-top:18px}.fire-class h3{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 12px;margin:0 0 8px}.fire-class h3 span{font-size:14px;font-weight:600;color:#53627a}.fire-class-done{color:#0f5132;font-weight:700}
.fire-pupils{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:8px}
.fire-pupil{display:flex;align-items:center;gap:12px;width:100%;min-height:60px;padding:10px 12px;text-align:left;border:2px solid #d0d8e6;border-radius:14px;background:#fff;color:inherit;font:inherit;cursor:pointer;min-width:0}
.fire-pupil:focus-visible{outline:3px solid #245fec;outline-offset:2px}.fire-pupil:disabled{cursor:default;opacity:.75}
.fire-pupil.accounted{border-color:#3d9a6b;background:#e8f7ef}.fire-pupil.flagged:not(.accounted){border-color:#d9a13b}
.fire-tick{flex:none;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:2px solid #98a2b3;border-radius:8px;font-size:20px;font-weight:800;color:#fff;background:#fff}.fire-pupil.accounted .fire-tick{background:#137447;border-color:#137447}
.fire-pupil-text{display:flex;flex-direction:column;gap:2px;min-width:0}.fire-pupil-text small{color:#53627a;font-size:12px}
.fire-footer{margin-top:24px;padding-top:16px;border-top:1px solid #e3e9f4}.fire-end-confirm{margin-top:24px;padding:14px;border:2px solid #d87b7b;border-radius:14px;background:#fff8f8}.fire-end-confirm .modal-actions{flex-wrap:wrap}
@media(max-width:700px){.fire-count dd{font-size:24px}.fire-head{padding-right:40px}}

.shared-lesson-classes{grid-column:1/-1;border:1px solid #dce5f3;border-radius:12px;padding:12px;display:flex;flex-wrap:wrap;gap:10px}.shared-lesson-classes legend{padding:0 6px;font-weight:600}.shared-lesson-classes label{display:flex;align-items:center;gap:8px}.shared-lesson-note{display:block;font-size:.85em;color:#647d99}

.import-review-row {display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid #e0e7f3}.import-review-row p {margin:5px 0}.import-review-row > button {flex-shrink:0}@media(max-width:600px){.import-review-row{align-items:flex-start;flex-direction:column}}
.admin-tabs{flex-wrap:wrap;gap:4px;margin-left:auto;max-width:100%}
.account-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.account-search{display:flex;align-items:center;gap:12px;margin:0;white-space:nowrap}
.account-search input{width:260px;max-width:100%;margin:0}
.account-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:18px 0 12px}
.account-scroll{max-height:470px;overflow:auto;overscroll-behavior:contain;scrollbar-width:auto;border:1px solid var(--line);border-radius:14px}
.account-scroll.expanded{max-height:75vh}
.account-scroll thead{position:sticky;top:0;background:#f3f6fc;z-index:1}
.account-scroll td{height:66px}.account-scroll::-webkit-scrollbar{width:14px;height:14px}.account-scroll::-webkit-scrollbar-thumb{background:#aebdd3;border:3px solid #f3f6fc;border-radius:10px}
.balance-credit{color:#087d61;background:#e7f6ef;padding:7px 10px;border-radius:9px;font-weight:700;white-space:nowrap}
.balance-due{font-weight:700;white-space:nowrap}
@media(max-width:650px){.admin-tabs{margin-left:0;width:100%}.admin-tabs button{flex:1 1 auto}.account-heading{gap:16px}.account-search{width:100%;white-space:normal}.account-search input{flex:1;min-width:0}.account-scroll{max-height:420px}.account-scroll td{padding:8px!important}.account-scroll .secondary{padding:9px;font-size:12px}.account-controls .segmented{flex-wrap:wrap}}
.family-account-name{font-weight:700;text-align:left;color:var(--ink)}
.account-action{width:44px;height:44px;border:1px solid var(--line);border-radius:12px;background:#f4f7fd;display:inline-flex;align-items:center;justify-content:center;color:#56759e;padding:10px}.account-action svg{width:23px;height:23px}.account-action:hover{background:#e7efff;color:#2159da}.account-scroll th:nth-child(n+3),.account-scroll td:nth-child(n+3){text-align:center!important}
.family-account-profile{padding-top:8px}.family-account-profile>h2{margin:8px 0}.family-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:24px 0 18px}.family-summary-card{border:1px solid var(--line);background:#f5f8fd;border-radius:18px;padding:22px}.family-summary-card>span{color:#57718e}.family-summary-card strong{display:block;font-size:clamp(22px,2.8vw,32px);line-height:1.3;margin:14px 0;overflow-wrap:anywhere}.family-summary-card small{display:block;line-height:1.65;color:#617590}.family-summary-card.paid{background:#eaf7ef}.family-summary-card.due{background:#fff5df}
.statement-equation{background:#f0f4fb;padding:18px;border-radius:13px;line-height:1.7;color:#49627e}.statement-controls{display:flex;flex-wrap:wrap;gap:14px;align-items:end;margin:22px 0}.statement-controls label{display:grid;gap:8px;flex:1;min-width:150px}.statement-controls input,.statement-controls select{margin:0}.family-account-panel{border:1px solid var(--line);border-radius:16px;padding:20px;margin:18px 0}.family-account-panel>summary{font-size:18px;font-weight:700;cursor:pointer;min-height:30px}.family-account-panel>summary svg{width:21px;height:21px;vertical-align:middle;margin-right:8px}.statement-history-scroll{max-height:420px;overflow:auto;overscroll-behavior:contain}.statement-history-scroll thead{position:sticky;top:0;background:#f3f6fc}.statement-history-scroll table{min-width:620px}
@media(max-width:650px){.family-summary-grid{grid-template-columns:1fr;gap:10px}.family-summary-card{padding:16px}.family-summary-card strong{margin:8px 0}.family-account-panel{padding:14px}.account-action{width:38px;height:38px;padding:8px}.account-scroll th{font-size:11px!important;padding:8px 4px!important}.account-scroll td{padding:8px 4px!important}.account-scroll th:nth-child(n+3){max-width:70px;overflow-wrap:anywhere}}
.staff-dbs{border:1px solid var(--line);border-radius:16px;padding:20px;background:#f8faff}.staff-dbs legend{padding:0 8px;font-weight:700}.staff-dbs-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.staff-dbs-fields label{margin:0}.staff-save-actions{display:flex;justify-content:flex-end}.staff-field-help{color:var(--muted);font-size:14px;line-height:1.6;margin:6px 0 14px}@media(max-width:600px){.staff-dbs-fields{grid-template-columns:1fr}}
