/* Puremine Admin Control Panel (replika simulasi) — © Vulcanoz */
:root{--p:#0f4c81;--pd:#0a3560;--pl:#e3f0fb;--ac:#00b4d8;--bg:#f0f4f8;--side:#0d1b2a;--lg:#0f4c81;--line:#e2e8f0;--ink:#1a2332;--muted:#64748b;--purple:#8b5cf6;--purplebg:#ede9fe}
body{font-family:'Plus Jakarta Sans',Inter,system-ui,-apple-system,Segoe UI,sans-serif}
.side{width:auto}.side a.nv.on{background:rgba(0,180,216,.18);box-shadow:inset 3px 0 0 var(--ac);color:#fff}.side a.nv .ic{color:var(--ac)}
.brand span{display:block;line-height:1.1}.brand small{margin-top:2px}
.badge.purple{background:var(--purplebg);color:#5b21b6}
.hello{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}.hello h2{font-size:21px}.hello p{color:var(--muted);margin-top:2px}.hello .sp{flex:1}.hello .btns{display:flex;gap:8px;flex-wrap:wrap}
.today{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.today .box{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}.today .box span.l{display:block;font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.today .box b{display:block;font-size:24px;font-weight:800;margin:4px 0 2px}.today .d{font-size:12px;font-weight:600}.today .d.up{color:var(--ok)}.today .d.dn{color:var(--bad)}.today .d.eq{color:var(--muted);font-weight:500}
.todo{display:grid;gap:8px}.todo button{display:flex;align-items:center;gap:12px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;cursor:pointer}.todo button:hover{border-color:var(--ac);background:#f6fcff}.todo .tx{flex:1}.todo .tx strong{display:block}.todo .tx small{color:var(--muted)}.todo .ar{color:var(--muted);font-size:20px}.todo .ok{padding:18px;text-align:center;color:var(--ok);background:var(--okbg);border-radius:10px}
.ops{display:grid;grid-template-columns:1fr 1fr;gap:14px}.ops .l{display:block;font-size:11.5px;color:var(--muted);font-weight:600}.ops strong{font-size:18px}.ops .wide{grid-column:1/-1}
.stat{display:flex;gap:14px;align-items:center}.stat .si{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;flex:none}.stat .si .ic{width:22px;height:22px}.si.blue{background:#dbeafe;color:#1d4ed8}.si.green{background:#d1fae5;color:#047857}.si.orange{background:#ffedd5;color:#c2410c}.si.purple{background:var(--purplebg);color:#6d28d9}.stat b{font-size:22px;display:block;line-height:1.1}.stat small{color:var(--muted);font-size:12px}
.banner-inv{background:linear-gradient(120deg,#0f4c81,#0077b6);color:#fff;border-radius:14px;padding:16px 20px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}.banner-inv h3{font-size:17px}.banner-inv p{flex:1;min-width:200px;font-size:13px;opacity:.9}.banner-inv .btn{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.4);color:#fff}
.stlist{display:grid;gap:10px}.stlist .it{display:grid;grid-template-columns:90px 1fr 46px;gap:10px;align-items:center;font-size:13px}.stlist .dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}
.toolb{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:10px}.toolb select,.toolb input{border:1px solid var(--line);border-radius:9px;padding:7px 10px;background:#fff}
.detail{display:grid;grid-template-columns:150px 1fr;gap:8px 14px;font-size:13.5px}.detail .dl{color:var(--muted);font-weight:600}
.steps{display:flex;gap:6px;margin:10px 0 4px;flex-wrap:wrap}.steps span{font-size:12px;border-radius:99px;padding:3px 12px;background:#eef1f6;color:var(--muted)}.steps span.on{background:var(--p);color:#fff}.steps span.done{background:var(--okbg);color:var(--ok)}
.mc{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.mach{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;display:grid;gap:10px}.mach.off{opacity:.7;background:#f7f9fb}.mach .hd{display:flex;gap:8px;align-items:center}.mach .hd b{flex:1}.mach code{font-size:11.5px;background:#f1f5f9;border-radius:6px;padding:1px 6px}
.relays{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.rl{border:1px solid var(--line);border-radius:9px;padding:6px 2px;text-align:center;font-size:10.5px;color:var(--muted);background:#fafbfd}.rl i{display:block;width:12px;height:12px;border-radius:50%;background:#cbd5e1;margin:0 auto 4px}.rl.on{border-color:#a7f3d0;background:#f0fdf9;color:#047857;font-weight:700}.rl.on i{background:#10b981;box-shadow:0 0 0 4px rgba(16,185,129,.2)}
.mstat{display:flex;gap:8px;flex-wrap:wrap}.mstat .badge{text-transform:uppercase;letter-spacing:.04em}
.flowm{display:flex;align-items:center;gap:12px}.flowm canvas{width:120px;height:66px;flex:none}.flowm .fv b{font:800 20px var(--mono)}.flowm .fv small{display:block;color:var(--muted);font-size:11.5px}
.pbar{display:grid;gap:5px}.pbar .row{font-size:12px;color:var(--muted)}.countdown{font:600 12.5px var(--mono);color:var(--muted)}
.logv li{display:flex;gap:10px;padding:6px 0;border-top:1px solid var(--line);font-size:12.5px}.logv li:first-child{border:0}.logv time{font:12px var(--mono);color:var(--muted);flex:none}
.tg{background:#e8eef5;border-radius:14px;padding:12px;display:grid;gap:8px;max-height:320px;overflow:auto}.tg .m{background:#fff;border-radius:12px 12px 12px 3px;padding:8px 12px;font-size:12.5px;max-width:92%;box-shadow:0 1px 2px rgba(0,0,0,.08);white-space:pre-wrap}.tg .m time{display:block;font-size:10.5px;color:var(--muted);margin-top:3px}
.chk{display:flex;gap:10px;align-items:center;padding:7px 0;font-size:14px}.chk input{width:18px;height:18px;accent-color:var(--p)}
.hint{background:var(--infobg);color:#075985;border-radius:10px;padding:10px 14px;font-size:13px}
.fc-legend{display:flex;gap:14px;font-size:12px;color:var(--muted);flex-wrap:wrap}.fc-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px}
canvas.ch{width:100%;height:220px}canvas.chs{width:100%;height:150px}
.warnl li{display:flex;gap:10px;padding:9px 0;border-top:1px solid var(--line);font-size:13px;align-items:flex-start}.warnl li:first-child{border:0}.qr{width:150px;height:150px;border:1px solid var(--line);border-radius:10px;padding:8px;background:#fff}
@media (max-width:1100px){.today{grid-template-columns:1fr 1fr}.ops{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.today{grid-template-columns:1fr 1fr}.detail{grid-template-columns:1fr}.mc{grid-template-columns:1fr}}
