:root{
  --bg:#f4f7f7;--panel:#fff;--text:#173131;--muted:#6c7d7d;--line:#dfe8e7;
  --primary:#0f766e;--primary-dark:#0b5f59;--primary-soft:#e7f5f3;
  --warning:#b7791f;--warning-soft:#fff7df;--danger:#b42318;--danger-soft:#fff0ee;
  --shadow:0 10px 30px rgba(28,62,60,.08);--radius:18px
}
*{box-sizing:border-box}
html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:var(--text);background:var(--bg)}
body{margin:0;min-height:100vh}
a{color:var(--primary);text-decoration:none}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
small{color:var(--muted)}
.app-shell{display:grid;grid-template-columns:265px minmax(0,1fr);min-height:100vh}
.sidebar{position:sticky;top:0;height:100vh;background:#0f2f2d;color:#fff;padding:22px 16px;display:flex;flex-direction:column;z-index:30}
.brand{display:flex;gap:12px;align-items:center;padding:4px 8px 22px}.brand.large{padding:0}.brand-mark{width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,#18a596,#68d3c7);display:grid;place-items:center;font-weight:800;color:#fff}.brand strong,.brand small{display:block}.brand small{color:#a9c7c4;margin-top:2px}
.sidebar nav{display:grid;gap:6px}.nav-link{display:flex;align-items:center;gap:12px;color:#cfe1df;padding:11px 13px;border-radius:12px}.nav-link:hover,.nav-link.active{background:rgba(255,255,255,.09);color:#fff}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.13);padding-top:18px}.user-mini{display:flex;gap:10px;align-items:center;margin-bottom:12px}.user-mini strong,.user-mini small{display:block}.user-mini small{color:#a9c7c4}
.avatar{width:36px;height:36px;border-radius:50%;background:#d9efec;color:var(--primary-dark);display:inline-grid;place-items:center;font-weight:800;flex:0 0 auto}.avatar.big{width:48px;height:48px}.avatar.xlarge{width:74px;height:74px;font-size:1.45rem}
.main-wrap{min-width:0}.topbar{height:76px;background:rgba(255,255,255,.88);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);padding:0 28px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20}.topbar strong,.topbar small{display:block}.topbar small{margin-top:3px}.content{padding:28px;max-width:1600px;margin:auto}
.pill,.status{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:999px;padding:5px 10px;font-size:.78rem;font-weight:700;background:#edf2f2;color:#516565;text-transform:capitalize}
.welcome,.profile-head,.report-head,.child-hero{background:linear-gradient(135deg,#113b38,#17665f);color:#fff;border-radius:24px;padding:26px 28px;margin-bottom:22px;display:flex;justify-content:space-between;gap:20px;align-items:center;box-shadow:var(--shadow)}.welcome h1,.profile-head h1,.report-head h1,.child-hero h2{margin:4px 0 7px}.welcome p,.profile-head p,.report-head p,.child-hero p{margin:0;color:#d6e9e7}.parent-welcome{background:linear-gradient(135deg,#275d56,#0f766e)}
.eyebrow{font-size:.72rem;letter-spacing:.12em;font-weight:800;color:#76d7cb;text-transform:uppercase}
.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:22px}.metric-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.metric{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:0 4px 15px rgba(28,62,60,.04)}.metric span,.metric strong,.metric small{display:block}.metric strong{font-size:2rem;margin:8px 0 3px}.metric.accent{border-left:4px solid var(--primary)}.metric.warning{border-left:4px solid #d59a2d}.metric.danger{border-left:4px solid var(--danger)}.text-size-md{font-size:1.15rem!important;line-height:1.3}
.two-col,.detail-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:20px;margin-bottom:22px}.detail-grid{grid-template-columns:1fr 1fr}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:0 4px 18px rgba(28,62,60,.045);margin-bottom:22px}.panel h2{font-size:1.05rem;margin:0 0 14px}.panel h3{margin:16px 0 8px}.panel-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}.panel-head h2{margin-bottom:4px}.panel-head p{margin:0;color:var(--muted);font-size:.9rem}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:720px}th,td{text-align:left;border-bottom:1px solid var(--line);padding:13px 10px;vertical-align:middle}th{font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}tbody tr:hover{background:#fbfdfd}.person{display:flex;align-items:center;gap:10px;color:var(--text)}.person strong,.person small{display:block}.block{display:block;margin-top:3px}
.status.risk-hijau,.risk-hijau{background:#e7f8ef;color:#177245}.status.risk-kuning,.risk-kuning{background:#fff5d9;color:#94610b}.status.risk-merah,.risk-merah{background:#ffe9e6;color:#a12a20}.status.risk-darurat,.risk-darurat{background:#8f1d18;color:#fff}.status-draft{background:#eef2f2}.status-diajukan,.status-diperiksa{background:#e8f1ff;color:#245aa8}.status-revisi{background:#fff3df;color:#9b620b}.status-disetujui{background:#eaf7f2;color:#176b4e}.status-dipublikasikan{background:#dff6ef;color:#0d6a4c}.status-ditutup{background:#ebeeee;color:#566}
.list-stack{display:grid}.list-item{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:13px 2px;border-bottom:1px solid var(--line);color:var(--text)}.list-item:last-child{border-bottom:0}.list-item strong,.list-item small{display:block}.right{text-align:right}.score-badge{width:48px;height:48px;border-radius:14px;background:var(--primary-soft);display:grid;place-items:center;color:var(--primary-dark);font-weight:800}
.announcement-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.announcement{border:1px solid var(--line);border-radius:15px;padding:16px;background:#fbfdfd}.announcement.penting{background:var(--warning-soft)}.announcement.darurat{background:var(--danger-soft)}.announcement h3{margin:7px 0}.announcement p{color:#4f6161;line-height:1.55}.notice{border-bottom:1px solid var(--line);padding:4px 0 15px}.notice:last-child{border-bottom:0}.notice h3{margin:8px 0}.priority-penting{background:var(--warning-soft);color:#895a0d}.priority-darurat{background:var(--danger-soft);color:var(--danger)}
.student-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.student-card{border:1px solid var(--line);border-radius:15px;padding:15px;color:var(--text);transition:.18s}.student-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.student-card-top{display:flex;align-items:center;justify-content:space-between}.student-card h3{margin:12px 0 4px}.student-card p{margin:0 0 8px;color:var(--muted)}
.child-profile{display:flex;align-items:center;gap:18px}.child-hero{background:linear-gradient(135deg,#f9fffe,#e9f7f4);color:var(--text);border:1px solid #cce8e3}.child-hero p{color:var(--muted)}
.filter-bar{display:flex;gap:12px;align-items:center}.filter-bar select,.filter-bar input{min-height:42px}.search-field{display:flex;align-items:center;gap:8px;flex:1;border:1px solid var(--line);background:#fff;border-radius:12px;padding:0 12px}.search-field input{border:0;outline:0;width:100%}
.btn{border:1px solid transparent;border-radius:11px;padding:10px 15px;font-weight:750;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{background:#edf6f4;color:var(--primary-dark);border-color:#cce4e0}.btn-ghost{background:transparent;color:inherit;border-color:var(--line)}.sidebar .btn-ghost{border-color:rgba(255,255,255,.17);color:#fff}.btn-danger-outline{background:#fff;color:var(--danger);border-color:#efc4bf}.btn-block{width:100%}.btn-lg{padding:13px 16px}.button-row,.page-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.page-actions{margin-bottom:16px}.icon-btn{border:0;background:transparent;font-size:1.3rem}.mobile-only{display:none}
label{display:grid;gap:7px;font-weight:700;font-size:.88rem}input,select,textarea{width:100%;border:1px solid #cfdcda;border-radius:11px;padding:10px 12px;background:#fff;color:var(--text);outline:none}input:focus,select:focus,textarea:focus{border-color:#54a99f;box-shadow:0 0 0 3px #dff3f0}textarea{resize:vertical;line-height:1.5}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.form-section{padding:23px}.report-form{padding-bottom:84px}.score-form{display:grid}.score-row{display:grid;grid-template-columns:1.1fr 210px 1fr;gap:13px;align-items:center;border-bottom:1px solid var(--line);padding:11px 0}.score-row strong,.score-row small{display:block}.sticky-actions{position:fixed;bottom:0;right:0;left:265px;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:13px 28px;display:flex;justify-content:flex-end;gap:10px;z-index:25}
.data-list{display:grid;gap:0;margin:0}.data-list>div{display:grid;grid-template-columns:140px 1fr;gap:14px;padding:10px 0;border-bottom:1px solid var(--line)}.data-list>div:last-child{border-bottom:0}.data-list dt{color:var(--muted)}.data-list dd{margin:0;font-weight:650}.house-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.house-card-head{display:flex;justify-content:space-between}.house-icon{width:48px;height:48px;border-radius:14px;background:var(--primary-soft);display:grid;place-items:center;font-size:1.4rem}.house-card h2{margin:16px 0 7px}.house-card p{color:var(--muted);line-height:1.5}
.report-layout{grid-template-columns:1.25fr 1fr}.prose{font-size:1.02rem;line-height:1.75}.note-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.positive-note,.attention-note,.internal-note{padding:14px;border-radius:13px}.positive-note{background:#eef9f5}.attention-note{background:#fff7e6}.internal-note{background:#f1f3f5;margin-top:15px}.score-list>div{display:grid;grid-template-columns:1fr auto 42px;gap:10px;align-items:center;border-bottom:1px solid var(--line);padding:10px 0}.score-list small{grid-column:1/-1}.score-dots{display:flex;gap:4px}.score-dots i{width:9px;height:9px;border-radius:50%;background:#dae3e2}.score-dots i.filled{background:var(--primary)}.timeline>div{display:flex;gap:12px}.timeline>div>span{width:10px;height:10px;background:var(--primary);border-radius:50%;margin-top:7px;flex:0 0 auto}.timeline p{margin:0 0 16px}.timeline small,.timeline em{display:block;margin-top:3px}.comments article{padding:12px 0;border-bottom:1px solid var(--line)}.comments small{display:block}.comment-form{display:grid;gap:10px;margin-top:15px}.review-box form{display:grid;gap:14px}
.empty{text-align:center;color:var(--muted);padding:24px}.muted{color:var(--muted)}.center{text-align:center}.error-panel{text-align:center;padding:60px}.error-panel>strong{font-size:4rem;color:var(--primary)}code{background:#eef3f3;border-radius:6px;padding:3px 6px}
.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr}.login-hero{background:linear-gradient(135deg,rgba(5,45,42,.94),rgba(15,118,110,.86)),url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="160" height="160" viewBox="0 0 160 160"%3E%3Cg fill="none" stroke="%23ffffff" stroke-opacity=".08"%3E%3Cpath d="M0 80h160M80 0v160M0 0l160 160M160 0L0 160"/%3E%3C/g%3E%3C/svg%3E');color:#fff;display:flex;align-items:center;padding:8vw}.hero-overlay{max-width:650px}.hero-overlay h1{font-size:clamp(2.2rem,5vw,4.5rem);line-height:1.05;margin:40px 0 20px}.hero-overlay>p{font-size:1.2rem;line-height:1.65;color:#d4e8e6}.hero-points{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.hero-points span{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);padding:10px 13px;border-radius:999px}.login-panel{display:grid;place-items:center;padding:30px}.login-card{width:min(430px,100%);display:grid;gap:18px}.login-card h2{font-size:2rem;margin:6px 0}.login-card p{color:var(--muted)}.alert{padding:12px 14px;border-radius:11px}.alert-danger{background:var(--danger-soft);color:var(--danger)}.demo-box{border:1px solid var(--line);padding:12px;border-radius:12px}.demo-box summary{cursor:pointer;font-weight:750}.demo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px}.demo-grid button{border:1px solid var(--line);background:#f8fbfb;border-radius:9px;padding:8px}
.announcement-list{display:grid;gap:0}.announcement-row{padding:18px 4px;border-bottom:1px solid var(--line)}.announcement-row:last-child{border-bottom:0}.announcement-row h2{margin:9px 0}.announcement-row p{max-width:900px;line-height:1.65;color:#4f6262}
@media(max-width:1180px){.metric-grid{grid-template-columns:repeat(2,1fr)}.house-grid{grid-template-columns:repeat(2,1fr)}.announcement-grid{grid-template-columns:repeat(2,1fr)}.score-row{grid-template-columns:1fr 190px}.score-row input{grid-column:1/-1}}
@media(max-width:860px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-280px;width:265px;transition:.2s}.sidebar.open{left:0}.mobile-only{display:inline-flex}.topbar{padding:0 16px}.content{padding:18px}.sticky-actions{left:0;padding:12px 16px}.two-col,.detail-grid,.report-layout{grid-template-columns:1fr}.announcement-grid,.house-grid{grid-template-columns:1fr}.login-page{grid-template-columns:1fr}.login-hero{display:none}.login-panel{min-height:100vh}.student-card-grid{grid-template-columns:1fr}}
@media(max-width:600px){.metric-grid,.metric-grid.compact{grid-template-columns:1fr 1fr;gap:10px}.metric{padding:14px}.metric strong{font-size:1.55rem}.welcome,.profile-head,.report-head,.child-hero{align-items:flex-start;flex-direction:column;padding:20px}.child-profile{align-items:flex-start}.form-grid{grid-template-columns:1fr}.score-row{grid-template-columns:1fr}.score-row select,.score-row input{grid-column:1}.note-grid{grid-template-columns:1fr}.filter-bar{align-items:stretch;flex-direction:column}.button-row{justify-content:stretch}.button-row .btn{flex:1}.top-actions{display:none}.data-list>div{grid-template-columns:110px 1fr}.content{padding:14px}.panel{padding:15px;border-radius:15px}.sticky-actions{overflow-x:auto;justify-content:flex-start}.sticky-actions .btn{white-space:nowrap}}
.check-row{grid-template-columns:auto 1fr;align-items:flex-start;gap:12px;padding:4px 0}.check-row input{width:auto;margin-top:4px}.check-row strong,.check-row small{display:block}.check-row small{font-weight:500;color:var(--muted);margin-top:4px}.conditional-box{margin-top:18px;padding:16px;border:1px dashed #b9cfcc;border-radius:13px;background:#fbfefe}.role-panel[hidden],.conditional-box[hidden]{display:none}.role-panel>p{margin-top:-4px}.text-size-md{font-size:1.05rem!important;line-height:1.3}
.alert-warning{background:var(--warning-soft);color:#7a5413;margin:14px 0}.span-2{grid-column:1/-1}.compact-form{align-items:end}.house-card{display:block;color:var(--text);margin-bottom:0}.house-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.condition-baik{background:#e7f8ef;color:#177245}.condition-rusak_ringan{background:#fff5d9;color:#94610b}.condition-rusak_berat,.condition-hilang{background:#ffe9e6;color:#a12a20}.condition-perbaikan{background:#e8f1ff;color:#245aa8}.condition-dihapuskan{background:#ebeeee;color:#566}
.maintenance-list{display:grid;gap:14px}.maintenance-card{border:1px solid var(--line);border-radius:14px;padding:16px;background:#fbfdfd}.maintenance-head{display:flex;justify-content:space-between;gap:12px}.maintenance-head strong,.maintenance-head small{display:block}.maintenance-card>p{line-height:1.6}.data-list.mini>div{grid-template-columns:100px 1fr;padding:7px 0}.inline-update{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}.inline-update summary{cursor:pointer;font-weight:750;margin-bottom:12px}
@media(max-width:600px){.span-2{grid-column:1}.maintenance-head{align-items:flex-start;flex-direction:column}}
.form-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}
.narrow-card{max-width:620px;margin:20px auto}
.stack-form{display:grid;gap:16px}
.form-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:4px}
@media(max-width:600px){.form-actions{flex-direction:column-reverse}.form-actions .btn{width:100%}}
