:root{--bg:#f4f6f8;--surface:#fff;--text:#17202a;--muted:#6b7280;--line:#e5e7eb;--brand:#173b57;--brand2:#245b84;--accent:#e8f0f6;--danger:#b42318;--ok:#19704d;--warn:#9a6700;--sidebar:250px}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}a{text-decoration:none;color:inherit}.app{display:flex;min-height:100vh}.sidebar{width:var(--sidebar);background:#102c40;color:#dfe9ef;position:fixed;inset:0 auto 0 0;overflow-y:auto;transition:.2s;z-index:20}.sidebar.collapsed{width:72px}.sidebar .brand{padding:22px 20px;border-bottom:1px solid #24475f;display:flex;gap:12px;align-items:center}.logo{width:34px;height:34px;border:1px solid #54758b;border-radius:9px;display:grid;place-items:center;font-weight:700}.brand-text strong{display:block;color:#fff;font-size:15px}.brand-text span{font-size:11px;color:#9cb0bd}.sidebar.collapsed .brand-text,.sidebar.collapsed .nav-label,.sidebar.collapsed .section-title{display:none}.nav{padding:12px}.section-title{font-size:10px;letter-spacing:.12em;color:#809cac;margin:18px 10px 7px}.nav a{display:flex;align-items:center;gap:12px;padding:10px 11px;border-radius:8px;margin:2px 0;color:#d4e0e7}.nav a:hover,.nav a.active{background:#204b67;color:#fff}.nav-ico{width:24px;text-align:center;font-size:16px}.main{margin-left:var(--sidebar);width:calc(100% - var(--sidebar));transition:.2s}.main.expanded{margin-left:72px;width:calc(100% - 72px)}.topbar{height:66px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:10}.toggle{border:0;background:#eef2f5;padding:8px 10px;border-radius:8px;cursor:pointer}.user{display:flex;gap:10px;align-items:center}.avatar{width:34px;height:34px;border-radius:50%;background:#e8eef2;display:grid;place-items:center;font-weight:700}.content{padding:24px}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}.page-head h1{font-size:24px;margin:0 0 5px}.muted{color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.col-3{grid-column:span 3}.col-4{grid-column:span 4}.col-6{grid-column:span 6}.col-8{grid-column:span 8}.col-12{grid-column:span 12}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px;box-shadow:0 1px 2px rgba(0,0,0,.03)}.stat{font-size:27px;font-weight:700;margin-top:8px}.card h3{margin:0 0 14px;font-size:16px}.btn{display:inline-flex;align-items:center;justify-content:center;padding:9px 13px;border:1px solid transparent;border-radius:8px;cursor:pointer;font-weight:600;font-size:13px}.btn-primary{background:var(--brand);color:white}.btn-light{background:#fff;border-color:var(--line)}.btn-danger{background:#fff2f0;color:var(--danger);border-color:#ffd4cf}.btn-sm{padding:6px 9px;font-size:12px}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#667085;text-align:left;padding:10px;border-bottom:1px solid var(--line);background:#fafafa}.table td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:top}.badge{display:inline-block;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:700;background:#eef2f5}.badge.ok{background:#e9f7ef;color:var(--ok)}.badge.warn{background:#fff6dd;color:var(--warn)}.badge.danger{background:#fff0ef;color:var(--danger)}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group.full{grid-column:1/-1}label{font-weight:600;font-size:12px}input,select,textarea{width:100%;padding:9px 10px;border:1px solid #d5dbe0;border-radius:8px;background:#fff;font:inherit}textarea{min-height:90px;resize:vertical}.alert{padding:12px 14px;border-radius:9px;margin-bottom:16px}.alert-success{background:#e9f7ef;color:#165d40}.alert-error{background:#fff0ef;color:#8a1c14}.schedule-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}.schedule-row:last-child{border:0}.time{font-weight:700;color:var(--brand)}.empty{text-align:center;color:var(--muted);padding:28px}.login-page{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;background:white}.login-hero{background:#102c40;color:white;padding:70px;display:flex;flex-direction:column;justify-content:center}.login-hero h1{font-size:42px;line-height:1.08;margin:0 0 16px}.login-form{display:flex;align-items:center;justify-content:center;padding:40px}.login-box{width:min(410px,100%)}.login-box h2{font-size:28px;margin-bottom:6px}.login-box .form-group{margin-bottom:14px}.small{font-size:12px}.actions{display:flex;gap:7px;flex-wrap:wrap}.pagination{display:flex;gap:5px;margin-top:15px}.pagination a,.pagination span{padding:6px 9px;border:1px solid var(--line);border-radius:6px;background:#fff}.score-input{width:78px}.tabs{display:flex;gap:8px;border-bottom:1px solid var(--line);margin-bottom:16px}.tab{padding:9px 12px;border-bottom:2px solid transparent}.tab.active{border-color:var(--brand);font-weight:700}.footer-note{font-size:11px;color:#718096;margin-top:22px}.mobile-only{display:none}@media(max-width:900px){.sidebar{transform:translateX(-100%);width:250px}.sidebar.open{transform:translateX(0)}.main,.main.expanded{margin-left:0;width:100%}.col-3,.col-4,.col-6,.col-8{grid-column:span 12}.form-grid{grid-template-columns:1fr}.mobile-only{display:inline-flex}.desktop-toggle{display:none}.content{padding:16px}.topbar{padding:0 16px}.login-page{grid-template-columns:1fr}.login-hero{display:none}}

/* v0.1.2 UI refinements */
.col-5{grid-column:span 5}.col-7{grid-column:span 7}.card-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:16px}.card-title-row h2,.card-title-row h3{margin:0 0 5px}.card-icon{width:38px;height:38px;border-radius:10px;background:var(--accent);color:var(--brand);display:grid;place-items:center;font-size:18px;font-weight:700}.stack-form{display:flex;flex-direction:column;gap:13px}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.field-help{font-size:11px;color:var(--muted);margin-top:2px}.compact-head{margin-bottom:14px}.compact-head h3{margin:0 0 4px}.table-search input{min-width:220px}.empty-state{min-height:130px;border:1px dashed #cfd8df;border-radius:10px;background:#fafcfd;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:5px;color:var(--muted);padding:20px}.empty-state strong{color:var(--text)}.empty-state.large{min-height:260px}.empty-icon{width:46px;height:46px;border-radius:50%;background:var(--accent);color:var(--brand);display:grid;place-items:center;font-size:20px;margin-bottom:5px}

.journal-form-card{align-self:start}.journal-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.mini-stat{border:1px solid var(--line);background:#fafbfc;border-radius:10px;padding:14px}.mini-stat span{display:block;font-size:11px;color:var(--muted);margin-bottom:5px}.mini-stat strong{font-size:22px;color:var(--brand)}.journal-note{display:flex;flex-direction:column;gap:5px;margin-top:14px;padding:13px;border-radius:10px;background:#f5f8fa;border:1px solid #e2e8ed}.journal-note span{font-size:12px;color:var(--muted);line-height:1.5}.journal-table td{line-height:1.45}.journal-notes{max-width:340px;white-space:normal}

.grade-selector-card{margin-bottom:16px}.grade-selector{display:flex;gap:10px;align-items:flex-end}.grade-selector-field{flex:1}.grade-empty-card{margin-top:16px}.grade-summary-grid{margin-bottom:16px}.grade-class-title{margin:0}.grade-class-title h2{font-size:20px}.eyebrow{font-size:10px;letter-spacing:.12em;font-weight:800;color:var(--brand2);margin-bottom:5px}.grade-progress-wrap{margin-top:18px}.grade-progress-label{display:flex;justify-content:space-between;gap:10px;font-size:12px;margin-bottom:7px}.progress{height:8px;border-radius:999px;background:#edf1f4;overflow:hidden}.progress span{display:block;height:100%;background:var(--brand2);border-radius:999px}.component-chips{display:flex;flex-wrap:wrap;gap:8px}.component-chip{display:inline-flex;align-items:center;gap:6px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:#fafbfc}.component-chip strong{color:var(--brand)}.component-chip span{font-size:11px;color:var(--muted)}.grade-entry-card{padding-bottom:0}.grade-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--muted)}.grade-legend span{display:flex;align-items:center;gap:5px}.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.legend-dot.draft{background:#b8c1c8}.legend-dot.submitted{background:#e0a11b}.legend-dot.locked{background:#2f8b64}.grade-table-wrap{max-height:560px;border:1px solid var(--line);border-radius:9px}.grade-table{min-width:860px}.grade-table thead th{position:sticky;top:0;z-index:3}.grade-table .sticky-student{position:sticky;left:0;z-index:2;background:#fff;min-width:210px}.grade-table thead .sticky-student{z-index:5;background:#fafafa}.grade-component-head{min-width:105px;text-align:center!important}.grade-component-head span{display:block}.grade-component-head small{display:block;font-size:9px;text-transform:none;letter-spacing:0;color:#8a949d;font-weight:500;margin-top:3px}.student-cell{display:flex;align-items:center;gap:9px}.student-avatar{width:30px;height:30px;border-radius:50%;background:var(--accent);color:var(--brand);display:grid;place-items:center;font-size:11px;font-weight:800;flex:0 0 auto}.grade-table td:not(.sticky-student){text-align:center}.score-input{width:74px;text-align:center;padding:8px 6px}.score-input:read-only{background:#f1f3f5;color:#69737c}.final-score{font-size:15px;color:var(--brand)}.grade-actions{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 0}.submit-panel{margin:0 -18px;padding:14px 18px;border-top:1px solid var(--line);background:#fafbfc;border-radius:0 0 12px 12px;display:flex;align-items:center;justify-content:space-between;gap:16px}.btn:disabled{opacity:.55;cursor:not-allowed}

.profile-top-grid{align-items:start}.profile-card{text-align:center}.profile-photo-wrap{display:flex;justify-content:center;margin:4px 0 13px}.profile-photo{width:112px;height:112px;border-radius:50%;object-fit:cover;border:4px solid #eef3f6}.profile-photo-placeholder{display:grid;place-items:center;background:var(--accent);color:var(--brand);font-size:36px;font-weight:800}.profile-name h2{font-size:20px;margin:0 0 3px}.profile-name span{font-size:12px;color:var(--muted)}.profile-meta-list{margin-top:18px;text-align:left;border-top:1px solid var(--line)}.profile-meta-list>div{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid var(--line)}.profile-meta-list span{font-size:12px;color:var(--muted)}.profile-meta-list strong{font-size:12px;text-align:right}.profile-readonly-note{font-size:11px;color:var(--muted);line-height:1.5;text-align:left;background:#f7f9fa;border-radius:8px;padding:10px;margin-top:14px}.document-list{display:flex;flex-direction:column}.document-item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.document-item:last-child{border-bottom:0}.document-icon{width:38px;height:38px;border-radius:9px;background:var(--accent);color:var(--brand);display:grid;place-items:center;font-weight:800;flex:0 0 auto}.document-info{flex:1;min-width:0}.document-info strong{display:block;margin-bottom:3px}.document-info .small{overflow:hidden;text-overflow:ellipsis}.document-actions{margin-left:auto;flex:0 0 auto}.document-actions form{margin:0}

.password-field{position:relative}.password-field input{padding-right:92px}.password-toggle{position:absolute;right:7px;top:50%;transform:translateY(-50%);border:0;background:#eef2f5;color:var(--brand);font:inherit;font-size:11px;font-weight:700;border-radius:6px;padding:6px 8px;cursor:pointer}.password-toggle:hover{background:#e2e8ed}

@media(max-width:900px){.col-5,.col-7{grid-column:span 12}.journal-stats{grid-template-columns:repeat(3,1fr)}.grade-selector{align-items:stretch;flex-direction:column}.grade-summary-grid .col-8,.grade-summary-grid .col-4{grid-column:span 12}.submit-panel,.grade-actions{align-items:stretch;flex-direction:column}.grade-actions .btn,.submit-panel .btn{width:100%}.profile-form-grid{grid-template-columns:1fr}.document-item{align-items:flex-start;flex-wrap:wrap}.document-actions{width:100%;margin-left:50px}.table-search{width:100%}.table-search input{min-width:0}.compact-head{flex-wrap:wrap}}
@media(max-width:520px){.journal-stats{grid-template-columns:1fr}.page-head{flex-wrap:wrap}.grade-progress-label{flex-direction:column;gap:3px}.profile-meta-list>div{flex-direction:column;gap:3px}.profile-meta-list strong{text-align:left}}

/* v0.1.3 attendance workflow */
.attendance-list-card{padding-bottom:8px}.attendance-list-table td{vertical-align:middle}.attendance-lock-banner{display:flex;flex-direction:column;gap:4px;padding:13px 15px;margin-bottom:16px;border:1px solid #f1cf9b;background:#fff9ef;border-radius:10px;color:#744d08}.attendance-lock-banner.ok{border-color:#b8dfcb;background:#edf9f2;color:#165d40}.attendance-lock-banner span{font-size:12px;line-height:1.5}.attendance-summary-grid{margin-bottom:16px}.stat-small{font-size:21px}.attendance-student-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:22px 0 12px}.attendance-student-head h3{margin:0 0 4px}.attendance-submit-row{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:15px;padding-top:15px;border-top:1px solid var(--line)}
.attendance-security-panel{margin-bottom:18px}.security-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.security-box{border:1px solid var(--line);border-radius:11px;padding:14px;background:#fafcfd}.security-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:11px}.security-step{width:24px;height:24px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:800;flex:0 0 auto}.camera-stage{height:250px;background:#17242d;border-radius:10px;overflow:hidden;position:relative;display:grid;place-items:center}.camera-stage video,.camera-preview{width:100%;height:100%;object-fit:cover}.camera-preview{display:block}.camera-empty{color:#d1d9de;font-size:12px}.location-visual{height:250px;border-radius:10px;border:1px dashed #c9d4dc;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;padding:16px}.location-visual span{font-size:11px;color:var(--muted);word-break:break-word}.location-visual.ok{border-style:solid;border-color:#b8dfcb;background:#f1faf5}.location-pin{width:44px;height:44px;border-radius:50%;background:var(--accent);color:var(--brand);display:grid;place-items:center;font-size:21px;font-weight:800}.location-visual.ok .location-pin{background:#dff3e8;color:var(--ok)}.security-ready{margin-top:10px;border-radius:8px;padding:9px 11px;font-size:11px;background:#fff6dd;color:var(--warn);border:1px solid #f4dfad}.security-ready.ok{background:#e9f7ef;color:var(--ok);border-color:#c9e7d6}.attendance-main-submit{width:100%;margin-top:13px;padding:11px 14px}.teacher-attendance-grid{align-items:start}.attendance-today-card{align-self:start}.checkin-success{text-align:center;padding:18px 0 8px}.checkin-success h2{font-size:36px;margin:8px 0 4px;color:var(--brand)}.checkin-mark{width:58px;height:58px;border-radius:50%;margin:auto;background:#e9f7ef;color:var(--ok);display:grid;place-items:center;font-size:27px;font-weight:800}
@media(max-width:900px){.security-grid{grid-template-columns:1fr}.camera-stage,.location-visual{height:230px}.attendance-submit-row{align-items:stretch;flex-direction:column}.attendance-submit-row .btn{width:100%}.teacher-attendance-grid .col-5,.teacher-attendance-grid .col-7{grid-column:span 12}}
@media(max-width:520px){.camera-stage,.location-visual{height:210px}.attendance-student-head{align-items:flex-start;flex-direction:column}}
.camera-stage [hidden],.camera-preview[hidden]{display:none!important}

/* v0.1.4 profile, grade list, and AI face-assist */
.profile-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.profile-detail-grid>div{padding:13px 0;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:5px}.profile-detail-grid>div.full{grid-column:1/-1}.profile-detail-grid span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.profile-detail-grid strong{font-size:13px;line-height:1.55;word-break:break-word}.payslip-card{display:flex;flex-direction:column}.payslip-visual{flex:1;min-height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:7px;padding:18px}.payslip-visual span{font-size:12px;color:var(--muted);line-height:1.55}.payslip-icon{width:52px;height:52px;border-radius:14px;background:var(--accent);color:var(--brand);display:grid;place-items:center;font-weight:800}.payslip-icon.large{width:72px;height:72px;border-radius:20px;font-size:20px;margin:auto}.payslip-coming-soon{text-align:center;max-width:700px;margin:30px auto;padding:42px}.payslip-coming-soon h2{margin:18px 0 8px}.payslip-coming-soon p{line-height:1.7;max-width:580px;margin:0 auto 18px}.field-help{font-size:11px;color:var(--muted);line-height:1.45}.form-actions{display:flex;justify-content:flex-end;margin-top:16px}.stack-form{display:flex;flex-direction:column;gap:13px}
.grade-list-card{padding-bottom:14px}.grade-list-toolbar{align-items:flex-end}.per-page-form{display:flex;align-items:center;gap:7px}.per-page-form label{margin:0}.per-page-form select{width:auto;min-width:70px;padding:7px 28px 7px 9px}.grade-list-table td{vertical-align:middle}.list-progress{min-width:150px;display:flex;align-items:center;gap:8px}.list-progress .progress{width:95px;flex:0 0 auto}.list-progress>span{font-size:11px;color:var(--muted);white-space:nowrap}.pagination-meta{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:14px}.pagination-meta .pagination{margin-top:0}
.ai-face-box{margin-top:14px;border:1px solid var(--line);border-radius:11px;padding:14px;background:#fafcfd}.ai-face-result{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;border:1px solid #e1e7eb;border-radius:9px;background:#fff}.ai-face-result>div{display:flex;flex-direction:column;gap:3px}.ai-face-result span:not(.ai-dot){font-size:11px;color:var(--muted);line-height:1.45}.ai-dot{width:11px;height:11px;border-radius:50%;background:#a7b0b7;flex:0 0 auto;margin-top:3px}.ai-dot.ok{background:var(--ok)}.ai-dot.warn{background:#d49a21}.ai-dot.pending{background:var(--brand2);animation:aiPulse 1s infinite alternate}.ai-disclaimer{margin-top:9px;line-height:1.5}@keyframes aiPulse{from{opacity:.35}to{opacity:1}}
@media(max-width:900px){.profile-detail-grid{grid-template-columns:1fr}.profile-detail-grid>div.full{grid-column:auto}.grade-list-toolbar{align-items:stretch;flex-direction:column}.per-page-form{align-self:flex-start}.payslip-coming-soon{margin:0;padding:26px 18px}}

/* v0.1.5 approval workflow and view-first UX */
.approval-data{background:#0f1720;color:#dbe8ef;border-radius:9px;padding:12px;overflow:auto}.approval-data pre{margin:0;white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.55}.soft-line{border:0;border-top:1px solid var(--line);margin:20px 0}.pagination-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.col-5{grid-column:span 5}.col-7{grid-column:span 7}@media(max-width:900px){.col-5,.col-7{grid-column:span 12}.pagination-meta{align-items:flex-start;flex-direction:column}}

/* v0.1.7 school profile proportional layout + attendance location relocation */
.school-profile-page-head{align-items:center}.school-pending-card{margin-bottom:16px;border-left:4px solid #d69b26}.school-profile-hero{display:flex;align-items:center;gap:18px;margin-bottom:16px;padding:20px 22px}.school-profile-emblem{width:64px;height:64px;flex:0 0 64px;border-radius:16px;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:17px;font-weight:800;letter-spacing:.05em}.school-profile-heading{min-width:0;flex:1}.school-profile-heading h2{margin:2px 0 9px;font-size:22px;line-height:1.25}.school-profile-tags{display:flex;gap:7px;flex-wrap:wrap}.school-profile-status{min-width:150px;padding-left:18px;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:5px;text-align:right}.status-ok-text{color:var(--ok)}.status-warn-text{color:var(--warn)}.school-profile-grid{align-items:start}.school-detail-grid>div{min-height:64px;justify-content:center}.school-location-card{align-self:start}.school-location-visual{min-height:155px;border:1px dashed #cad5dc;border-radius:11px;background:#fafcfd;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;padding:18px}.school-location-visual.ready{border-style:solid;border-color:#b8dfcb;background:#f3faf6}.school-location-pin{width:44px;height:44px;border-radius:50%;background:var(--accent);color:var(--brand);display:grid;place-items:center;font-size:22px;font-weight:800}.school-location-visual.ready .school-location-pin{background:#dff3e8;color:var(--ok)}.school-location-visual span{font-size:11px;color:var(--muted)}.school-location-meta{margin-top:14px}.school-location-action{width:100%;margin-top:14px}.school-numbering-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.9fr);gap:28px;align-items:center}.school-numbering-copy h3{margin:3px 0 7px}.school-numbering-copy p{margin:0;line-height:1.6}.school-number-example{border:1px solid var(--line);background:#fafcfd;border-radius:11px;padding:14px 16px;display:flex;flex-direction:column;gap:7px}.school-number-example span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.school-number-example strong{font-size:12px;line-height:1.5}.school-number-example code{display:block;background:#102c40;color:#eaf2f6;border-radius:7px;padding:10px 11px;font:600 12px Consolas,monospace;overflow-wrap:anywhere}.school-edit-grid,.school-location-edit-grid{align-items:start}.school-edit-submit{display:flex;align-items:center;justify-content:space-between;gap:18px}.school-location-capture{display:flex;align-items:center;gap:12px;margin-top:16px;padding:12px;border:1px solid var(--line);border-radius:9px;background:#fafcfd}.school-location-capture .field-help{margin:0;flex:1}
@media(max-width:900px){.school-profile-hero{align-items:flex-start;flex-wrap:wrap}.school-profile-status{width:100%;padding:12px 0 0;border-left:0;border-top:1px solid var(--line);text-align:left}.school-numbering-card{grid-template-columns:1fr}.school-edit-submit{align-items:stretch;flex-direction:column}.school-edit-submit .btn{width:100%}.school-location-capture{align-items:stretch;flex-direction:column}.school-location-capture .btn{width:100%}}
@media(max-width:520px){.school-profile-emblem{width:52px;height:52px;flex-basis:52px;border-radius:13px;font-size:14px}.school-profile-heading h2{font-size:19px}.school-profile-page-head .actions,.school-profile-page-head .btn{width:100%}.school-profile-page-head .actions{display:grid;grid-template-columns:1fr}.school-profile-page-head .actions .btn{width:100%}}

/* v0.2.0 foundation finance, approvals, and fund accounting */
.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}.card-head h3{margin-bottom:4px}.approval-action-stack{display:flex;flex-direction:column;gap:7px;min-width:220px}.approval-action-stack form{display:flex;gap:6px;align-items:center}.approval-action-stack input{min-width:150px;padding:6px 8px;font-size:12px}.finance-status-positive{color:var(--ok);font-weight:700}.finance-status-negative{color:var(--danger);font-weight:700}@media(max-width:900px){.card-head{flex-direction:column}.approval-action-stack{min-width:0;width:100%}.approval-action-stack form{align-items:stretch;flex-direction:column}.approval-action-stack .btn{width:100%}}

/* v0.3.0 - Sneat integration for Titian Hidayah */
:root{--brand:#696cff;--brand2:#5f61e6;--accent:#eef0ff;--bg:#f5f5f9;--surface:#fff;--text:#566a7f;--line:#d9dee3;--muted:#8592a3;--danger:#ff3e1d;--ok:#71dd37;--warn:#ffab00}
body{font-family:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:#f5f5f9;color:#566a7f}
.sms-brand{min-height:72px}.sms-brand .app-brand-link{min-width:0}.sms-brand-mark{width:34px;height:34px;border-radius:8px;background:#696cff;color:#fff!important;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;letter-spacing:.03em;box-shadow:0 .125rem .25rem rgba(105,108,255,.25)}
.sms-brand-copy{font-size:1.05rem!important;line-height:1.05!important;white-space:normal!important;color:#566a7f!important}.sms-brand-copy small{display:block;font-size:.58rem;font-weight:500;letter-spacing:.04em;margin-top:4px;color:#a1acb8;text-transform:uppercase}.sms-navbar-title{font-weight:500;color:#697a8d}.sms-login-card{border:0!important;box-shadow:0 2px 10px 0 rgba(67,89,113,.12)!important}.authentication-inner{max-width:420px!important}
.layout-menu{box-shadow:0 .125rem .375rem 0 rgba(67,89,113,.08)}.menu-vertical .menu-inner>.menu-item .menu-link{margin-left:.7rem;margin-right:.7rem;border-radius:.375rem}.menu-vertical .menu-inner>.menu-item.active>.menu-link{background:linear-gradient(270deg,rgba(105,108,255,.16) 0%,rgba(105,108,255,.05) 100%);color:#696cff}.menu-header-text{letter-spacing:.06em}.layout-navbar{box-shadow:0 0 10px rgba(67,89,113,.12)!important}.content-wrapper{background:#f5f5f9}
/* Legacy view compatibility rendered in Sneat visual language */
.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem}.page-head h1{font-size:1.5rem;font-weight:600;color:#566a7f;margin:0 0 .35rem}.muted,.small.muted{color:#8592a3!important}.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:1.5rem}.col-3{grid-column:span 3}.col-4{grid-column:span 4}.col-5{grid-column:span 5}.col-6{grid-column:span 6}.col-7{grid-column:span 7}.col-8{grid-column:span 8}.col-12{grid-column:span 12}
.card{border:0!important;border-radius:.5rem!important;box-shadow:0 2px 6px 0 rgba(67,89,113,.10)!important;padding:1.5rem;background:#fff}.card h3{color:#566a7f}.stat{color:#566a7f;font-weight:600}.card-title-row,.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.card-icon{background:#e7e7ff!important;color:#696cff!important}.table-wrap{overflow-x:auto;border-radius:.375rem}.table{margin-bottom:0;color:#697a8d}.table th{background:#f5f5f9!important;color:#566a7f!important;font-weight:600;padding:.8rem 1rem!important;border-bottom:1px solid #d9dee3!important}.table td{padding:.85rem 1rem!important;border-bottom:1px solid #eceef1!important}.table tbody tr:hover{background:#fafafa}
.btn{border-radius:.375rem!important;font-weight:500!important;box-shadow:none!important}.btn-primary{background:#696cff!important;border-color:#696cff!important;color:#fff!important}.btn-primary:hover{background:#5f61e6!important;border-color:#5f61e6!important}.btn-light{background:#f5f5f9!important;border-color:#d9dee3!important;color:#697a8d!important}.btn-danger{background:#ffebe8!important;border-color:#ffd8d1!important;color:#ff3e1d!important}.badge{padding:.35em .65em!important;border-radius:.25rem!important}.badge.ok{background:#e8fadf!important;color:#56ca00!important}.badge.warn{background:#fff2d6!important;color:#ffab00!important}.badge.danger{background:#ffe0db!important;color:#ff3e1d!important}
.form-grid{gap:1rem}.form-group label{color:#566a7f;font-size:.75rem;text-transform:none;font-weight:500}.form-group input,.form-group select,.form-group textarea,input:not([type=checkbox]):not([type=radio]),select,textarea{border:1px solid #d9dee3!important;border-radius:.375rem!important;color:#697a8d;background:#fff;padding:.4375rem .875rem}.form-group input:focus,.form-group select:focus,.form-group textarea:focus,input:focus,select:focus,textarea:focus{border-color:#696cff!important;outline:0;box-shadow:0 0 0 .15rem rgba(105,108,255,.12)}
.alert-success{background:#e8fadf!important;color:#3f8f0c!important}.alert-error{background:#ffe0db!important;color:#d62f12!important}.empty-state{background:#fafafa!important;border-color:#d9dee3!important}.pagination a,.pagination span{border:1px solid #d9dee3!important;border-radius:.375rem!important;color:#697a8d!important}.tabs{border-color:#d9dee3!important}.tab.active{border-color:#696cff!important;color:#696cff!important}.time{color:#696cff!important}.school-profile-emblem{background:#696cff!important}.school-number-example code,.approval-data{background:#233446!important}.finance-status-positive{color:#56ca00!important}.finance-status-negative{color:#ff3e1d!important}
.footer-note{display:none}.actions{gap:.5rem}.content-footer{font-size:.8125rem}.avatar-initial{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-weight:600}.bg-label-primary{background:#e7e7ff!important;color:#696cff!important}
@media(max-width:1199.98px){.sms-navbar-title span{display:none!important}}@media(max-width:900px){.grid{grid-template-columns:1fr}.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-12{grid-column:1}.page-head{flex-direction:column}.page-head .actions{width:100%}.page-head .actions .btn{flex:1}.card{padding:1.15rem}.container-p-y{padding-top:1rem!important;padding-bottom:1rem!important}}
.sms-native-card{padding:0!important;overflow:hidden}.sms-native-card .card-header{padding:1.25rem 1.5rem;background:transparent;border-bottom:0}.sms-native-card .card-body{padding:1.5rem}.sms-native-card .table{box-shadow:none}.sms-schedule-item{display:flex;align-items:center;gap:1rem;padding:1rem 0;border-bottom:1px solid #eceef1}.sms-schedule-item:last-child{border-bottom:0}.sms-time-badge{min-width:58px;padding:.45rem .55rem;border-radius:.375rem;background:#e7e7ff;color:#696cff;font-weight:600;text-align:center}.bg-label-success{background:#e8fadf!important;color:#56ca00!important}.bg-label-warning{background:#fff2d6!important;color:#ffab00!important}.bg-label-info{background:#d7f5fc!important;color:#03c3ec!important}.bg-label-danger{background:#ffe0db!important;color:#ff3e1d!important}

/* v0.3.4 - production UI refinement and Bootstrap/Sneat compatibility */
.sms-page{min-width:0}.sms-page>*{min-width:0}.sms-page .grid{width:100%;align-items:start}.sms-page .grid>[class*="col-"]{width:auto!important;max-width:none!important;flex:none!important;padding-left:0!important;padding-right:0!important;margin:0!important;min-width:0}.sms-page .grid>.col-3{grid-column:span 3}.sms-page .grid>.col-4{grid-column:span 4}.sms-page .grid>.col-5{grid-column:span 5}.sms-page .grid>.col-6{grid-column:span 6}.sms-page .grid>.col-7{grid-column:span 7}.sms-page .grid>.col-8{grid-column:span 8}.sms-page .grid>.col-12{grid-column:span 12}
.sms-page .page-head{padding:0 .1rem;margin-bottom:1.4rem;align-items:center}.sms-page .page-head>div:first-child{min-width:0}.sms-page .page-head h1{line-height:1.25}.sms-page .page-head .muted{max-width:820px;line-height:1.55}.sms-page .page-head>.badge{flex:0 0 auto}.sms-page .actions{align-items:center}.sms-page .actions form{margin:0}.sms-page .actions .btn{white-space:nowrap}
.sms-page .card{min-width:0;overflow:visible}.sms-page .card-title-row{margin-bottom:1.15rem;align-items:center}.sms-page .card-title-row>div{min-width:0}.sms-page .card-title-row h2,.sms-page .card-title-row h3{line-height:1.3}.sms-page .card>.card-title-row:first-child{margin-top:-.1rem}.sms-page .card>.table-wrap:last-child{margin-bottom:-.15rem}
.sms-page .table-wrap{width:100%;max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch}.sms-page .table{min-width:720px;vertical-align:middle}.sms-page .table th{white-space:nowrap}.sms-page .table td{line-height:1.45}.sms-page .table td .small{margin-top:.15rem}.sms-page .table .actions{min-width:max-content}.sms-page .table form{margin:0}.sms-page .table .btn-sm{min-height:30px}.sms-page .table tbody tr:last-child td{border-bottom:0!important}
.sms-page .pagination-meta{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding-top:1rem}.sms-page .pagination{margin-top:0!important;display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.sms-page .pagination a,.sms-page .pagination span{display:inline-flex;min-width:34px;height:34px;align-items:center;justify-content:center;padding:.3rem .6rem!important}
.sms-page .form-grid{grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.sms-page .form-group{min-width:0}.sms-page .form-group label{margin-bottom:.15rem}.sms-page .form-group input,.sms-page .form-group select,.sms-page .form-group textarea{min-height:38px}.sms-page .form-group textarea{min-height:105px}.sms-page .form-actions{padding-top:.35rem;border-top:1px solid #eceef1;margin-top:.75rem;padding-top:1rem}.sms-page .stack-form{gap:1rem}.sms-page .field-help{line-height:1.5}
.sms-page .per-page-form{display:flex;align-items:center;gap:.5rem;flex-wrap:nowrap}.sms-page .per-page-form label{margin:0;white-space:nowrap}.sms-page .per-page-form select{width:auto!important;min-width:78px}.sms-page .grade-list-toolbar form.actions select{width:auto!important;min-width:130px}.sms-page form.card{overflow:hidden}.sms-page form.card .form-actions{margin-bottom:0}
.sms-page .schedule-row{gap:1rem}.sms-page .schedule-row>div:first-child{min-width:0}.sms-page .schedule-row>strong:last-child,.sms-page .schedule-row>.badge:last-child{flex:0 0 auto}.sms-page .notice{border:1px solid #d9dee3;border-left:4px solid #696cff;background:#f8f8ff;border-radius:.5rem;padding:1rem 1.1rem;line-height:1.6;color:#697a8d}.sms-page .soft-line{border-color:#eceef1!important}
.sms-page .profile-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1rem}.sms-page .profile-detail-grid>div{display:flex;flex-direction:column;gap:.3rem;padding:.85rem 1rem;background:#fafafa;border:1px solid #eceef1;border-radius:.45rem;min-width:0}.sms-page .profile-detail-grid>div.full{grid-column:1/-1}.sms-page .profile-detail-grid span,.sms-page .profile-meta-list span{font-size:.72rem;color:#8592a3}.sms-page .profile-detail-grid strong,.sms-page .profile-meta-list strong{overflow-wrap:anywhere;color:#566a7f}.sms-page .profile-meta-list{display:flex;flex-direction:column;gap:.6rem}.sms-page .profile-meta-list>div{display:flex;justify-content:space-between;gap:1rem;padding-bottom:.55rem;border-bottom:1px solid #eceef1}.sms-page .profile-meta-list>div:last-child{border-bottom:0;padding-bottom:0}
.sms-page .approval-data{border-radius:.5rem;padding:1rem;overflow:auto}.sms-page .approval-action-stack{width:min(100%,320px)}.sms-page .approval-action-stack input{width:100%!important}.sms-page .log-path{overflow-wrap:anywhere;line-height:1.55;margin-top:.75rem}.sms-page .log-card{overflow:hidden}.system-log-preview{margin:0;max-height:520px;overflow:auto;background:#1f2937;color:#e5e7eb;border-radius:.5rem;padding:1rem;font-size:.72rem;line-height:1.55;white-space:pre-wrap;word-break:break-word}
.sms-page .empty,.sms-page .empty-state{border-radius:.5rem}.sms-page .stat{font-size:1.75rem;line-height:1.2}.sms-page .eyebrow{color:#696cff!important}.sms-page .badge{white-space:nowrap}.sms-page code{word-break:break-word}
/* Avoid legacy global control rules distorting Sneat-native forms */
.sms-page .row .form-control,.sms-page .row .form-select{width:100%}.sms-page .btn{min-height:36px}.sms-page .btn-sm{min-height:30px}.sms-page .btn i{font-size:1rem}.sms-page .card-header+.card-body{padding-top:.5rem}
@media(max-width:1199.98px){.sms-page .grid>.col-3,.sms-page .grid>.col-4{grid-column:span 6}.sms-page .grid>.col-5,.sms-page .grid>.col-7,.sms-page .grid>.col-8{grid-column:span 12}}
@media(max-width:767.98px){.sms-page .page-head{align-items:stretch}.sms-page .page-head>.actions,.sms-page .page-head>a.btn{width:100%}.sms-page .page-head>.actions{display:grid;grid-template-columns:1fr}.sms-page .page-head>.actions .btn,.sms-page .page-head>a.btn{width:100%}.sms-page .grid{gap:1rem}.sms-page .grid>[class*="col-"]{grid-column:1/-1!important}.sms-page .form-grid,.sms-page .profile-detail-grid{grid-template-columns:1fr}.sms-page .profile-detail-grid>div.full{grid-column:1}.sms-page .card{padding:1rem!important}.sms-page .card-title-row{align-items:flex-start;flex-direction:column}.sms-page .card-title-row .per-page-form{width:100%;justify-content:space-between}.sms-page .schedule-row{align-items:flex-start;flex-direction:column}.sms-page .schedule-row>.badge:last-child,.sms-page .schedule-row>strong:last-child{align-self:flex-start}.sms-page .form-actions{flex-direction:column}.sms-page .form-actions .btn{width:100%}.sms-page .pagination-meta{align-items:flex-start;flex-direction:column}.sms-page .table{min-width:650px}.sms-page .actions{width:100%}.sms-page .actions .btn{flex:1}.sms-page .profile-meta-list>div{align-items:flex-start;flex-direction:column;gap:.2rem}}
@media(max-width:480px){.sms-page .table{min-width:600px}.sms-page .stat{font-size:1.5rem}.sms-page .notice{padding:.85rem}.sms-page .system-log-preview{font-size:.68rem}}
