:root{--evergreen:#0f4835;--mint:#45b68a;--eucalyptus:#199269;--butterscotch:#ffac3c;--ink:#18302a;--muted:#6b7e78;--line:#dce8e3;--surface:#fff;--bg:#f3f8f6}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink);background:var(--bg)}a{color:inherit;text-decoration:none}button,input{font:inherit}.app-shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{background:var(--evergreen);color:#fff;padding:24px 18px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 24px;border-bottom:1px solid #ffffff24}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--butterscotch);color:var(--evergreen);font-weight:900}.brand-mark.large{width:64px;height:64px;border-radius:18px;font-size:28px;margin:auto}.brand strong,.brand small{display:block}.brand small{font-size:12px;color:#cce7dc;margin-top:2px}.sidebar nav{display:grid;gap:6px;padding-top:24px}.sidebar nav a,.sidebar nav>span{padding:11px 12px;border-radius:9px}.sidebar nav a:hover{background:#ffffff15}.sidebar .nav-section{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#9bcbb9;margin-top:14px;padding-bottom:2px}.sidebar nav>span:not(.nav-section){color:#bad8cd;font-size:14px}.topbar{height:86px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px}.topbar h1{font-size:23px;margin:0}.topbar p{font-size:12px;color:var(--muted);margin:5px 0 0}.user-box{display:flex;gap:16px;align-items:center}.link-button{border:0;background:none;color:#b74141;cursor:pointer}.content{padding:30px 34px;max-width:1500px}.welcome{padding:30px;border-radius:18px;background:linear-gradient(125deg,var(--evergreen),var(--eucalyptus));color:#fff;box-shadow:0 12px 35px #0f483525}.welcome h2{margin:8px 0;font-size:28px}.welcome p{margin:0;color:#d9f1e8;max-width:750px}.eyebrow{font-size:11px;letter-spacing:.16em;color:#ffd08a;font-weight:700}.metric-grid{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:16px;margin:22px 0}.metric-grid article{background:#fff;border:1px solid var(--line);padding:20px;border-radius:14px}.metric-grid strong{display:block;font-size:30px;color:var(--evergreen)}.metric-grid span{font-size:13px;color:var(--muted)}.metric-grid article.warning{border-color:#ffd08a;background:#fffaf1}.metric-grid article.warning strong{color:#b76a00}.panel{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px;margin-top:20px}.panel h2,.panel h3{margin-top:0}.panel-heading p{color:var(--muted)}.stage-list{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.stage-list>div{border:1px solid var(--line);border-radius:12px;padding:15px;display:flex;gap:12px}.stage-list b{display:grid;place-items:center;flex:0 0 30px;height:30px;border-radius:50%;background:#edf4f1}.stage-list .done b{background:var(--mint);color:#fff}.stage-list strong,.stage-list small{display:block}.stage-list small{color:var(--muted);margin-top:4px;line-height:1.4}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th{text-align:left;background:#eef6f2;color:var(--evergreen);font-size:12px;text-transform:uppercase;letter-spacing:.04em}th,td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}td{font-size:14px}.auth-shell{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at top right,#45b68a55,transparent 35%),linear-gradient(145deg,#edf8f4,#fefaf2)}.login-card{width:min(420px,calc(100% - 30px));background:#fff;padding:34px;border-radius:22px;box-shadow:0 25px 70px #0f483526}.login-brand{text-align:center;margin-bottom:28px}.login-brand h1{margin:14px 0 5px;color:var(--evergreen)}.login-brand p{margin:0;color:var(--muted)}.login-card form{display:grid;gap:16px}.login-card label{font-size:13px;font-weight:600}.login-card input{display:block;width:100%;margin-top:7px;border:1px solid #bdd2ca;border-radius:10px;padding:12px;outline:none}.login-card input:focus{border-color:var(--mint);box-shadow:0 0 0 3px #45b68a26}.primary{border:0;background:var(--evergreen);color:#fff;padding:13px;border-radius:10px;font-weight:700;cursor:pointer}.primary:hover{background:#176249}.login-card>small{display:block;text-align:center;color:var(--muted);margin-top:24px}.alert{padding:12px 16px;border-radius:10px}.alert.error{background:#fff0f0;color:#9b3030;border:1px solid #f1c9c9}.alert.floating{position:fixed;top:20px;left:50%;transform:translateX(-50%);z-index:5}.alert.success{background:#eaf8f1;color:#146646;border:1px solid #b9e4cf}.actions{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.button{display:inline-flex;align-items:center;justify-content:center;padding:12px 16px;border-radius:10px;font-weight:700}.secondary{background:#fff;border:1px solid var(--line);color:var(--evergreen)}.metric-grid.compact{grid-template-columns:repeat(4,1fr)}.data-form{display:grid;grid-template-columns:1fr 1fr;gap:16px}.data-form label{font-size:13px;font-weight:700}.data-form input,.data-form select,.data-form textarea{display:block;width:100%;margin-top:7px;border:1px solid #bdd2ca;border-radius:10px;padding:11px;background:#fff}.data-form .full{grid-column:1/-1}.form-panel{max-width:1000px}.table-wrap td small{display:block;color:var(--muted);margin-top:4px}.badge{display:inline-block;background:#e9f5f0;color:var(--evergreen);border-radius:999px;padding:4px 9px;font-size:11px;font-weight:800}.empty{text-align:center;color:var(--muted);padding:30px}.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.card-grid article{border:1px solid var(--line);border-radius:12px;padding:18px}.card-grid h3{margin:12px 0 6px}.card-grid p,.note{color:var(--muted)}.mental-list{display:grid;grid-template-columns:1fr 1fr;gap:10px;list-style:none;padding:0}.mental-list li{display:flex;align-items:center;gap:10px;border:1px solid var(--line);padding:11px;border-radius:10px}.mental-list span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--evergreen);color:#fff;font-size:12px}.student-picker{grid-column:1/-1;position:relative}.student-results{position:absolute;z-index:8;background:#fff;box-shadow:0 10px 30px #0002;max-height:260px;overflow:auto}.student-results button,.student-results span{display:block;width:100%;padding:10px;text-align:left;border:0;border-bottom:1px solid var(--line);background:#fff}.student-display{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.student-display div{padding:12px;background:#eef6f2;border-radius:10px}.student-display small,.student-display strong{display:block}.row-actions{display:flex;gap:5px;flex-wrap:wrap}.mini{border:1px solid var(--line);background:#fff;padding:6px 8px;border-radius:7px;font-size:11px;cursor:pointer}.score-grid{display:grid;gap:8px}.score-row{display:grid;grid-template-columns:1.4fr 120px 1fr;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:9px}.permit-paper{max-width:760px;margin:20px auto;background:#fff;padding:45px;color:#111}.permit-paper header{text-align:center;border-bottom:3px double #111;padding-bottom:14px}.permit-paper dl{display:grid;grid-template-columns:150px 1fr;gap:10px}.permit-paper dt{font-weight:700}.permit-paper footer{display:flex;justify-content:space-between;text-align:center;margin-top:45px}.permit-paper footer div{width:220px}@media print{.sidebar,.topbar,.no-print,.alert{display:none!important}.app-shell{display:block}.content{padding:0}.permit-paper{margin:0;max-width:none;box-shadow:none}}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.quick-grid a{padding:22px;border:1px solid var(--line);border-radius:14px;background:#f7fbf9}.quick-grid strong,.quick-grid small{display:block}.quick-grid small{margin-top:7px;color:var(--muted)}.scan-panel form{display:flex;gap:12px}.scan-input{flex:1;font-size:24px;padding:18px;border:2px solid var(--mint);border-radius:12px}.master-row{display:grid;grid-template-columns:120px 130px 2fr 100px 2fr 70px 70px;gap:7px;margin-bottom:8px}.master-row input,.master-row select{min-width:0;padding:7px;border:1px solid var(--line);border-radius:7px}@media(max-width:950px){.app-shell{grid-template-columns:1fr}.sidebar{height:auto;position:static}.sidebar nav{grid-template-columns:repeat(2,1fr)}.topbar{padding:0 18px}.content{padding:20px 18px}.metric-grid{grid-template-columns:repeat(2,1fr)}.stage-list{grid-template-columns:1fr 1fr}}@media(max-width:600px){.metric-grid,.stage-list{grid-template-columns:1fr}.user-box span{display:none}}
/* KSM v0.16.0 — Kontrol Fasilitas dan Piket Umum */
.facility-hero,.dashboard-facility>header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}
.facility-hero h2,.dashboard-facility h3{margin:.2rem 0}.facility-links{display:flex;gap:.5rem;flex-wrap:wrap}
.facility-links a,.dashboard-facility>header a{padding:.65rem .85rem;background:#0f4835;color:#fff;border-radius:.6rem;text-decoration:none}
.filter-row,.picket-time,.picket-notes{display:flex;gap:1rem;align-items:end;flex-wrap:wrap;margin-bottom:1rem}
.filter-row label,.picket-time label,.picket-notes label{display:grid;gap:.3rem}.facility-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.8rem}
.facility-card{border:1px solid #d7ddd9;border-left:8px solid #eef1ef;border-radius:.7rem;padding:.85rem;background:#fff}
.facility-card header{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:.7rem}.facility-card header span{font-size:.72rem;font-weight:800}
.facility-card select,.facility-card input{width:100%;margin:.25rem 0}.facility-card.status-baik{border-left-color:#16a34a;background:#f0fdf4}
.facility-card.status-perbaikan{border-left-color:#eab308;background:#fefce8}.facility-card.status-rusak{border-left-color:#dc2626;background:#fef2f2}
.facility-save{margin-top:1rem}.picket-form>.panel{margin-bottom:1rem}.picket-table th{min-width:140px}.picket-table input,.picket-table select{min-width:80px}
.picket-notes label{flex:1;min-width:240px}.picket-notes textarea{min-height:90px}.status-pill,.facility-mini{border:1px solid #d7ddd9;border-radius:999px;padding:.25rem .55rem}
.status-baik{background:#dcfce7!important;color:#166534}.status-perbaikan{background:#fef9c3!important;color:#854d0e}.status-rusak{background:#fee2e2!important;color:#991b1b}.status-not_report{background:#fff!important;color:#64748b}
.dashboard-facility{background:#fff;border:1px solid #dce3df;border-radius:.8rem;padding:1rem;margin:1rem 0}
.dashboard-facility-grid{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:.6rem}
.dashboard-facility-grid>div{display:grid;grid-template-columns:1fr 1fr;gap:.35rem;border:1px solid #e5e7eb;border-radius:.6rem;padding:.55rem}
.dashboard-facility-grid strong{grid-column:1/-1;font-size:.82rem}.facility-mini{display:grid;text-align:center;font-size:.65rem}.facility-mini b{font-size:.62rem}
.facility-legend{display:flex;gap:.5rem;flex-wrap:wrap;margin:.7rem 0 0}.facility-legend span{border-radius:999px;padding:.25rem .55rem;font-size:.7rem}
@media(max-width:1000px){.dashboard-facility-grid{grid-template-columns:repeat(2,minmax(140px,1fr))}}
@media(max-width:640px){.facility-hero{display:block}.facility-links{margin-top:.7rem}.dashboard-facility-grid{grid-template-columns:1fr}.picket-table{min-width:900px}}
.checkpoint-panel>header{display:flex;justify-content:space-between;gap:1rem;align-items:start}.checkpoint-panel h3{margin:0}.gps-policy{padding:.4rem .6rem;border-radius:999px;background:#e2e8f0;font-size:.75rem}
.checkpoint-grid{display:grid;grid-template-columns:repeat(4,minmax(190px,1fr));gap:.7rem;margin-top:1rem}.checkpoint-card{border:1px solid #d8dfdc;border-radius:.7rem;padding:.75rem;display:grid;gap:.45rem}
.checkpoint-card>small,.checkpoint-card em{font-size:.72rem}.checkpoint-card textarea{width:100%;min-height:65px}.checkpoint-card form{display:grid;gap:.4rem}
.checkpoint-valid{border-color:#16a34a;background:#f0fdf4}.checkpoint-perlu_verifikasi{border-color:#eab308;background:#fefce8}.checkpoint-ditolak{border-color:#dc2626;background:#fef2f2}
.gps-settings{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:.8rem}.gps-settings label{display:grid;gap:.3rem}.gps-settings>div{grid-column:1/-1}
.gps-superadmin-toggle{padding:.7rem;border:1px solid #0f4835;border-radius:.6rem;background:#f0fdf4}.gps-readonly-status{padding:.7rem;border:1px solid #cbd5e1;border-radius:.6rem;background:#f8fafc;display:grid;gap:.2rem}.gps-readonly-status strong{color:#0f4835}
@media(max-width:900px){.checkpoint-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}}@media(max-width:560px){.checkpoint-grid,.gps-settings{grid-template-columns:1fr}.checkpoint-panel>header{display:block}}
.bulk-heading,.bulk-students>header,.bulk-submit{display:flex;justify-content:space-between;align-items:center;gap:1rem}.bulk-heading h2,.bulk-students h3{margin:.2rem 0}
.bulk-students{margin-top:1rem;border-top:1px solid #dfe5e2;padding-top:1rem}.bulk-student-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.55rem;margin-top:.8rem;max-height:55vh;overflow:auto;padding:.2rem}
.bulk-student-grid>label{display:flex;align-items:center;gap:.6rem;border:1px solid #d7dfdb;border-radius:.65rem;padding:.55rem;background:#fff;cursor:pointer}.bulk-student-grid>label:has(input:checked){border-color:#199269;background:#effcf6;box-shadow:0 0 0 1px #199269}
.bulk-student-grid input{width:1.15rem;height:1.15rem}.bulk-student-grid img{width:42px;height:42px;object-fit:cover;border-radius:50%;background:#e5e7eb}.bulk-student-grid span{display:grid}.bulk-student-grid small{color:#64748b}.bulk-submit{margin-top:1rem;padding-top:1rem;border-top:1px solid #dfe5e2}.bulk-submit p{max-width:700px}
@media(max-width:640px){.bulk-heading,.bulk-students>header,.bulk-submit{align-items:stretch;flex-direction:column}.bulk-student-grid{grid-template-columns:1fr;max-height:none}}
.bulk-violation-fields{padding-bottom:1rem}.bulk-class-picker{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:.8rem}.bulk-class-picker label{display:grid;gap:.3rem}
.bulk-class-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin:.8rem 0}.bulk-class-actions span{color:#64748b;font-size:.82rem}
.bulk-student-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.45rem;max-height:420px;overflow:auto;border:1px solid #dbe2de;border-radius:.7rem;padding:.6rem;background:#f8faf9}
.bulk-student-list label{display:flex;align-items:center;gap:.55rem;padding:.5rem;border:1px solid #d8dfdc;border-radius:.55rem;background:#fff;cursor:pointer}.bulk-student-list label:has(input:checked){border-color:#199269;background:#effcf6}.bulk-student-list input{width:1.1rem;height:1.1rem}.bulk-student-list span{display:grid}.bulk-student-list small{color:#64748b}
.bulk-selected-summary{margin-top:1rem}.bulk-selected-summary>div{display:flex;flex-wrap:wrap;gap:.45rem}.bulk-selected-summary span{display:grid;grid-template-columns:1fr auto;gap:0 .5rem;padding:.4rem .5rem;border-radius:.5rem;background:#e9f8f1;border:1px solid #9ed8bf}.bulk-selected-summary span small{grid-column:1;color:#52645b}.bulk-selected-summary button{grid-column:2;grid-row:1/3;border:0;background:transparent;color:#991b1b;font-size:1.2rem}
@media(max-width:640px){.bulk-class-picker,.bulk-student-list{grid-template-columns:1fr}.bulk-student-list{max-height:55vh}}

/* KSM v0.18.1 — Piket KBM per Jam Pelajaran & Barcode Kelas */
.kbm-workspace-nav{display:flex;flex-wrap:wrap;gap:.45rem;margin:0 0 1rem;padding:.65rem;background:#fff;border:1px solid #cfe0d8;border-radius:.8rem}
.kbm-workspace-nav a{padding:.55rem .7rem;border:1px solid #c8ddd4;border-radius:.55rem;background:#f8fcfa;color:#0f4835;font-size:.78rem;font-weight:750}.kbm-workspace-nav a:hover{background:#e9f7f0;border-color:#199269}
.compact-panel{padding:1rem}.kbm-pilot{margin:1rem 0;background:#fff7df;border:1px solid #f4c86b;color:#714500}.kbm-metrics{grid-template-columns:repeat(6,minmax(130px,1fr))}.kbm-metrics article{padding:1rem}.kbm-metrics article.kbm-green{border-color:#16a34a;background:#f0fdf4}.kbm-metrics article.kbm-green strong{color:#166534}.kbm-metrics article.kbm-red{border-color:#dc2626;background:#fef2f2}.kbm-metrics article.kbm-red strong{color:#991b1b}.kbm-metrics article.kbm-blue{border-color:#2563eb;background:#eff6ff}.kbm-metrics article.kbm-blue strong{color:#1d4ed8}
.kbm-period-filter label{display:grid;gap:.3rem;font-size:.78rem;font-weight:750}.kbm-period-filter input,.kbm-period-filter select{min-width:185px;padding:.65rem;border:1px solid #bdd2ca;border-radius:.55rem;background:#fff;color:#18302a}.kbm-period-tabs{display:flex;gap:.4rem;overflow-x:auto;padding:.15rem 0 .55rem;scrollbar-width:thin}.kbm-period-tabs a{flex:0 0 auto;display:grid;gap:.08rem;min-width:82px;padding:.48rem .65rem;text-align:center;border:1px solid #c8ddd4;border-radius:.58rem;background:#fff;color:#0f4835;font-size:.76rem;font-weight:800}.kbm-period-tabs a small{font-size:.64rem;color:#64748b}.kbm-period-tabs a.shown{border-color:#199269;background:#effcf6}.kbm-period-tabs a.active{background:#0f4835;color:#fff;border-color:#0f4835}.kbm-period-tabs a.active small{color:#d9f1e8}.kbm-current-period{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:.45rem 0 1rem;padding:.8rem 1rem;border:1px solid #9ed8bf;border-left:7px solid #199269;border-radius:.75rem;background:#f0fdf7}.kbm-current-period.manual{border-color:#93c5fd;border-left-color:#2563eb;background:#eff6ff}.kbm-current-period>div{display:grid;gap:.12rem}.kbm-current-period span{font-size:.64rem;letter-spacing:.09em;font-weight:850;color:#527266}.kbm-current-period strong{font-size:1.08rem;color:#0f4835}.kbm-current-period.manual strong{color:#1d4ed8}.kbm-current-period p{margin:0;text-align:right;color:#52645b;font-size:.78rem}.kbm-current-period p small{display:block;margin-top:.2rem;color:#64748b}
.kbm-duty{display:flex;justify-content:space-between;gap:1rem;align-items:center}.kbm-duty h3,.kbm-duty p{margin:.2rem 0}.kbm-duty>div:last-child{display:grid;text-align:right}.kbm-duty small{color:#64748b}.duty-chips{display:flex;flex-wrap:wrap;gap:.4rem}.duty-chips .substitute{background:#eff6ff;color:#1d4ed8}
.kbm-monitor>header,.kbm-master-head,.kbm-attendance-heading,.kbm-submit{display:flex;justify-content:space-between;gap:1rem;align-items:center}.kbm-monitor>header h2,.kbm-monitor>header p,.kbm-master-head h2,.kbm-master-head p,.kbm-attendance-heading h2,.kbm-attendance-heading p{margin:.2rem 0}.kbm-legend{display:flex;flex-wrap:wrap;gap:.35rem}.kbm-legend span,.kbm-status{display:inline-flex;padding:.3rem .6rem;border-radius:999px;font-size:.72rem;font-weight:800;border:1px solid}.kbm-status.upcoming,.kbm-status.waiting,.kbm-legend .upcoming{background:#f1f5f9;color:#475569;border-color:#cbd5e1}.kbm-status.ontime,.kbm-legend .ontime{background:#dcfce7;color:#166534;border-color:#86efac}.kbm-status.late,.kbm-legend .late{background:#fef9c3;color:#854d0e;border-color:#fde047}.kbm-status.very-late,.kbm-legend .very-late{background:#ffedd5;color:#9a3412;border-color:#fdba74}.kbm-status.unverified,.kbm-legend .unverified{background:#fee2e2;color:#991b1b;border-color:#fca5a5}.kbm-status.verified,.kbm-legend .verified{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}.kbm-status.excused{background:#f1f5f9;color:#475569;border-color:#cbd5e1}.kbm-status.absent{background:#7f1d1d;color:#fff;border-color:#7f1d1d}
.kbm-table{min-width:930px}.kbm-row{border-left:6px solid transparent}.kbm-row.status-unverified,.kbm-row.status-absent{border-left-color:#dc2626;background:#fff8f8}.kbm-row.status-very-late{border-left-color:#f97316;background:#fffaf5}.kbm-row.status-late{border-left-color:#eab308}.kbm-row.status-ontime{border-left-color:#16a34a}.kbm-row.status-verified{border-left-color:#2563eb}.kbm-table td small{display:block;margin-top:.3rem;color:#64748b}.substitute-note{color:#1d4ed8!important}.journal-complete{background:#dcfce7;color:#166534}.journal-missing{background:#fef3c7;color:#92400e}.danger-text{color:#b91c1c!important;font-weight:700}.kbm-actions{min-width:155px}.kbm-actions details{position:relative;margin-top:.35rem}.kbm-actions summary{display:inline-block;list-style:none}.kbm-verify-form{position:absolute;right:0;z-index:20;width:min(380px,80vw);display:grid;gap:.6rem;padding:.8rem;background:#fff;border:1px solid #cbd5e1;border-radius:.7rem;box-shadow:0 15px 35px #0002}.kbm-verify-form label{display:grid;gap:.25rem;font-size:.75rem;font-weight:700}.kbm-verify-form input,.kbm-verify-form select,.kbm-verify-form textarea{width:100%;padding:.55rem;border:1px solid #cbd5e1;border-radius:.45rem}.kbm-verify-form textarea{min-height:60px}
.kbm-scan-panel{max-width:900px}.kbm-scan-panel video{width:100%;max-height:360px;margin:.7rem 0}.kbm-scan-panel form{margin-top:.8rem}.kbm-scan-state{display:inline-flex;margin:.5rem 0;padding:.35rem .6rem;border-radius:999px;background:#f1f5f9;color:#475569;font-size:.75rem}.kbm-scan-state.ready{background:#dcfce7;color:#166534}.kbm-scan-state.failed{background:#fee2e2;color:#991b1b}.kbm-scan-panel button:disabled{opacity:.5;cursor:not-allowed}
.kbm-journal-form textarea{min-height:80px}.kbm-attendance-heading{border-top:1px solid #dce8e3;padding-top:1rem}.kbm-attendance-heading input{max-width:320px!important}.kbm-student-table{min-width:760px}.kbm-student-table select,.kbm-student-table input{width:100%;padding:.5rem;border:1px solid #cbd5e1;border-radius:.45rem}.source-klinik{background:#fee2e2;color:#991b1b}.source-perizinan{background:#fef3c7;color:#92400e}.kbm-submit{padding-top:1rem;border-top:1px solid #dce8e3}.kbm-master-head .actions{margin:0}.kbm-policy-checks{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem}.kbm-policy-checks label{display:flex;gap:.45rem;align-items:center;padding:.6rem;border:1px solid #dce8e3;border-radius:.55rem}.kbm-policy-checks input{width:auto;margin:0}
.sidebar .kbm-feature{background:#ffffff10;border-left:3px solid #ffac3c}
.sidebar .business-pos-feature{background:#ffffff10;border-left:3px solid #45b68a}
.ksm-photo-scan{margin-left:8px}.ksm-scanner-status{margin:10px 0;padding:9px 11px;border:1px solid #c9ddd4;border-radius:9px;background:#f4f8f6;color:#527266;font-size:.78rem}.ksm-mobile-reader{width:min(560px,100%);margin:10px auto;overflow:hidden;border:2px solid #0f4835;border-radius:12px;background:#111}.ksm-mobile-reader video,.ksm-mobile-reader img{max-width:100%!important}
@media(max-width:1100px){.kbm-metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.kbm-workspace-nav{display:grid;grid-template-columns:repeat(2,1fr)}.kbm-workspace-nav a{text-align:center}.kbm-metrics{grid-template-columns:repeat(2,1fr)}.kbm-current-period{align-items:flex-start;flex-direction:column}.kbm-current-period p{text-align:left}.kbm-period-filter label{width:100%}.kbm-period-filter input,.kbm-period-filter select{width:100%}.kbm-duty,.kbm-monitor>header,.kbm-master-head,.kbm-attendance-heading,.kbm-submit{align-items:stretch;flex-direction:column}.kbm-duty>div:last-child{text-align:left}.kbm-policy-checks{grid-template-columns:1fr}.kbm-verify-form{position:fixed;left:5vw;right:5vw;top:10vh;width:90vw;max-height:80vh;overflow:auto}}
/* KSM v0.17.0 — Reform Piket Umum */
.facility-workspace-nav{display:flex;flex-wrap:wrap;gap:.45rem;margin:0 0 1rem;padding:.65rem;background:#fff;border:1px solid #cfe0d8;border-radius:.8rem}
.facility-workspace-nav a{padding:.55rem .7rem;border:1px solid #c8ddd4;border-radius:.55rem;background:#f8fcfa;color:#0f4835;font-size:.78rem;font-weight:750}
.facility-workspace-nav a:hover{background:#e9f7f0;border-color:#199269}
.duty-officer{display:flex;align-items:center;justify-content:space-between;gap:1rem;border-left-width:7px}.duty-officer>div{display:grid;gap:.25rem}.duty-officer strong{font-size:1.05rem}.duty-officer p{max-width:460px;margin:0;color:#52645b}
.duty-active{border-left-color:#16a34a;background:#f4fff8}.duty-readonly{border-left-color:#94a3b8;background:#f8fafc}
.picket-scoreboard{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:.75rem;margin:1rem 0}
.picket-scoreboard article{display:grid;gap:.18rem;padding:1rem;border:1px solid #cfe0d8;border-radius:.8rem;background:#fff}.picket-scoreboard small,.picket-scoreboard span{color:#64748b}.picket-scoreboard strong{font-size:1.8rem;color:#0f4835}
.picket-category-guide{margin-bottom:.7rem}.picket-category-guide p{color:#64748b}.picket-progress-legend{display:flex;gap:.5rem;flex-wrap:wrap}.picket-progress-legend span{padding:.3rem .6rem;border:1px solid;border-radius:999px;font-size:.72rem;font-weight:750}
.picket-category{margin:.7rem 0;border:1px solid #d5dfda;border-left:8px solid #dc2626;border-radius:.8rem;background:#fff;overflow:hidden}
.picket-category>summary{display:grid;grid-template-columns:1fr auto;gap:.15rem 1rem;padding:1rem;cursor:pointer;list-style:none}.picket-category>summary::-webkit-details-marker{display:none}.picket-category>summary span{font-weight:800;color:#173f31}.picket-category>summary b{font-size:1.15rem}.picket-category>summary small{grid-column:1/-1;color:#64748b}
.picket-category.progress-complete,.progress-complete{border-color:#16a34a!important;background:#f0fdf4!important;color:#166534}.picket-category.progress-partial,.progress-partial{border-color:#eab308!important;background:#fefce8!important;color:#854d0e}.picket-category.progress-empty,.progress-empty{border-color:#dc2626!important;background:#fef2f2!important;color:#991b1b}
.picket-category-form{margin:0;border:0;border-top:1px solid #dce8e3;border-radius:0;background:#fff}.picket-category-form>.primary{margin-top:1rem}
.picket-assessment-table{min-width:850px}.picket-assessment-table th:first-child{min-width:220px}.picket-assessment-table select{min-width:175px}.picket-assessment-table input{min-width:130px}.picket-assessment-table td:nth-last-child(2){min-width:220px}
.no-event-check{display:flex;align-items:center;gap:.5rem;padding:.7rem;border:1px solid #cfe0d8;border-radius:.6rem;background:#f8fcfa;font-weight:700}
.event-rows{display:grid;gap:.7rem;margin:1rem 0}.event-row{display:grid;grid-template-columns:130px minmax(220px,1fr) minmax(220px,1fr) auto;gap:.65rem;align-items:end;padding:.7rem;border:1px solid #dce8e3;border-radius:.65rem}.event-row label{display:grid;gap:.3rem;font-size:.78rem;font-weight:700}.event-row textarea{min-height:70px}
.schedule-edit-form{min-width:min(620px,80vw);padding:.8rem;background:#f8fcfa;border:1px solid #dce8e3;border-radius:.65rem}.schedule-edit-form>.primary{margin-top:.7rem}.inline-remove{display:flex;gap:.35rem;margin-top:.4rem}.inline-remove input{max-width:190px}.master-item-scroll{max-height:65vh}.master-inline{display:flex;gap:.35rem;flex-wrap:wrap;padding:.5rem;background:#f8fcfa}.master-inline input,.master-inline select{max-width:210px}.master-remove-unused{margin-top:.35rem}.master-remove-unused summary{display:inline-block;cursor:pointer}.master-item-scroll th>small{display:block;margin-top:.2rem;color:#64748b;font-size:.58rem;font-weight:500}
@media(max-width:800px){.picket-scoreboard{grid-template-columns:1fr}.duty-officer{display:block}.duty-officer p{margin-top:.7rem}.event-row{grid-template-columns:1fr}.schedule-edit-form{min-width:0}.facility-workspace-nav{display:grid;grid-template-columns:repeat(2,1fr)}.facility-workspace-nav a{text-align:center}}
/* Identitas visual resmi Kulni v0.22.4. Gambar logo selalu ditampilkan utuh tanpa crop/distorsi. */
.kulni-logo{display:block;object-fit:contain;object-position:center;height:auto;max-width:100%}
.kulni-logo-sidebar{width:46px;height:58px;flex:0 0 46px;padding:4px;background:#fff;border-radius:6px;box-shadow:0 1px 4px #00000026}
.kulni-logo-login{width:128px;height:166px;margin:0 auto 12px}
.kulni-logo-auth-corner{position:fixed;top:18px;left:22px;width:62px;height:80px;z-index:1;opacity:.92}
.kulni-logo-payment{width:52px;height:66px;flex:0 0 52px}
.kulni-logo-pos{width:48px;height:62px;flex:0 0 48px}
.pos-global-brand{display:flex;align-items:center;gap:10px;margin-bottom:12px;color:#0f4835}
.pos-global-brand strong{font-size:.86rem;letter-spacing:.04em}
@media(max-width:640px){.kulni-logo-auth-corner{display:none}.kulni-logo-sidebar{width:40px;height:52px}.kulni-logo-payment{width:44px;height:57px}}

/* Logo Payment Hub proporsional */
.payment-parent-header .kulni-logo-payment {
    width: 88px;
    height: auto;
    flex: 0 0 88px;
}

@media (max-width: 640px) {
    .payment-parent-header .kulni-logo-payment {
        width: 72px;
        height: auto;
        flex-basis: 72px;
    }
}
