:root{--g:#1b7a3e;--g2:#14602f;--gl:#e8f4ec;--bd:#d9e0dc;--tx:#1d2a22;--mu:#6b7a71;--bg:#f4f7f5;--red:#c0392b;--card:#fff}
@media (prefers-color-scheme:dark){:root{--g:#3fae6a;--g2:#34945a;--gl:#1c2b22;--bd:#2c3a32;--tx:#e6efe9;--mu:#93a499;--bg:#111815;--red:#e5604f;--card:#18211c}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--tx)}
a{color:var(--g)}
.top{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 20px;background:var(--g);color:#fff;position:sticky;top:0;z-index:20}
.brand{font-weight:700;display:flex;align-items:center;gap:8px;white-space:nowrap}
.dot{width:10px;height:10px;border-radius:50%;background:#ffd24a;display:inline-block}
.top nav{display:flex;gap:2px;flex-wrap:wrap;flex:1}
.top nav a{color:#e9f6ee;text-decoration:none;padding:6px 11px;border-radius:7px;font-size:14px}
.top nav a:hover{background:rgba(255,255,255,.14)}
.top nav a.on{background:#fff;color:var(--g2);font-weight:600}
.out{display:flex;align-items:center;gap:10px;margin:0}
.who{font-size:13px}.who small{opacity:.8}
.wrap{max-width:1280px;margin:0 auto;padding:20px}
h1{font-size:22px;margin:0 0 4px}h2{margin:0 0 8px}h3{margin:0 0 10px;font-size:16px}
.muted{color:var(--mu)}
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.card{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:18px;margin-bottom:16px}
.card.narrow{max-width:460px}
details.card summary{cursor:pointer}
.alert{padding:10px 14px;border-radius:9px;margin-bottom:14px;font-size:14px}
.alert.ok{background:#e3f5e9;color:#14602f;border:1px solid #b5e0c4}
.alert.err{background:#fdecea;color:#8e2418;border:1px solid #f3c1bb}
@media (prefers-color-scheme:dark){.alert.ok{background:#173324;color:#9ee0b6;border-color:#245c3b}.alert.err{background:#391c18;color:#f2aaa1;border-color:#6b2d26}}
label{display:block;font-size:13px;font-weight:600;margin-bottom:12px;color:var(--tx)}
input,select,textarea{display:block;width:100%;margin-top:4px;padding:8px 10px;border:1px solid var(--bd);border-radius:8px;font:inherit;background:var(--card);color:var(--tx)}
input:focus,select:focus,textarea:focus{outline:2px solid var(--g);outline-offset:-1px;border-color:var(--g)}
input[type=file]{padding:6px}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 16px}
.cols .full{grid-column:1/-1}
.btn{display:inline-block;background:var(--g);color:#fff;border:1px solid var(--g);padding:8px 16px;border-radius:8px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;line-height:1.3}
.btn:hover{background:var(--g2)}
.btn.ghost{background:transparent;color:var(--g)}.btn.ghost:hover{background:var(--gl)}
.top .btn.ghost{color:#fff;border-color:rgba(255,255,255,.55)}.top .btn.ghost:hover{background:rgba(255,255,255,.15)}
.btn.danger{background:transparent;color:var(--red);border-color:var(--red)}.btn.danger:hover{background:var(--red);color:#fff}
.btn.sm{padding:4px 10px;font-size:13px}.btn.block{display:block;width:100%;text-align:center;padding:10px}
.inl{display:inline;margin:0}
.filter{display:flex;gap:12px;flex-wrap:wrap}.filter label{margin:0;min-width:200px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.chips span{background:var(--gl);border:1px solid var(--bd);border-radius:999px;padding:3px 12px;font-size:13px}.chips b{color:var(--g);margin-right:4px}
.gridwrap{overflow:auto;max-width:100%;border:1px solid var(--bd);border-radius:10px;background:var(--card)}
.card .gridwrap{border:0}
.tbl,.grid{border-collapse:collapse;width:100%;font-size:14px}
.tbl th,.tbl td,.grid th,.grid td{padding:7px 9px;border-bottom:1px solid var(--bd);text-align:left;vertical-align:middle}
.tbl th,.grid th{background:var(--gl);font-size:12px;text-transform:uppercase;letter-spacing:.03em;position:sticky;top:0;z-index:2}
.c{text-align:center!important}.act{white-space:nowrap}
.grid th.grp{border-bottom:1px solid var(--bd)}
.grid td.sticky,.grid th.sticky{position:sticky;left:0;background:var(--card);z-index:3;min-width:190px;box-shadow:1px 0 0 var(--bd)}
.grid th.sticky{background:var(--gl);z-index:4}
.grid td.nm{font-weight:600;white-space:nowrap}
.grid input.num{width:62px;text-align:center;padding:6px 4px;margin:0}
.grid input.num.sm{width:48px}
.grid input.bad{border-color:var(--red);background:#fdecea;color:#8e2418}
.grid textarea.cat{width:300px;margin:0;min-height:56px;font-size:13px}
.grid tr:hover td{background:var(--gl)}.grid tr:hover td.sticky{background:var(--gl)}
.grid td.rr,.grid td.rk{font-weight:700;color:var(--g)}
.bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;position:sticky;bottom:0;background:var(--bg);padding:12px 0;z-index:10}
.prog{height:8px;background:var(--bd);border-radius:6px;overflow:hidden;min-width:130px}.prog i{display:block;height:100%;background:var(--g)}
.tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--bd);color:var(--mu)}
.tag.ok{background:var(--gl);color:var(--g);border-color:var(--g);font-weight:700}
.lemhead{display:flex;align-items:center;gap:14px;margin-bottom:10px}
img.lg{height:64px;width:auto}img.lg.sm{height:40px}
.prev{margin:0;padding-left:22px;font-size:14px}.prev li.kelompok{font-weight:700;list-style:none;margin-left:-22px;margin-top:6px;color:var(--g)}
.login{max-width:400px;margin:8vh auto}
.cek{list-style:none;padding:0;margin:0 0 12px;font-size:14px}.cek .ok{color:var(--g)}.cek .no{color:var(--red);font-weight:600}
code{background:var(--gl);padding:1px 6px;border-radius:5px;font-size:13px}
@media (max-width:700px){.wrap{padding:12px}.top{padding:8px 12px}.who{display:none}}
