/* Smart Parking Denpasar - lapisan kompatibilitas di atas /theme.css (desain FireWatch, palet Denpasar) */
:root{--ok:var(--good);--mute:var(--muted);--navy:var(--ink)}
.stack>*+*{margin-top:12px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.grow{flex:1;min-width:0}
.mute{color:var(--muted)}.small{font-size:13px}.xs{font-size:12px}.center{text-align:center}.nowrap{white-space:nowrap}.mono{font-variant-numeric:tabular-nums}.block{width:100%}
code{background:var(--accent-soft);padding:1px 6px;border-radius:4px;font-size:.92em}
.brand .bword small{font-weight:600;font-size:11.5px;color:var(--muted)}
.btn.primary{background:linear-gradient(135deg,#1593d4,#0d7db8)}
.btn.primary:hover{background:linear-gradient(135deg,#1aa0e4,#1593d4)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.block{justify-content:center}
:focus-visible{outline:3px solid var(--p-peach2);outline-offset:2px}
/* form */
label{display:block;font-weight:700;font-size:12px;margin-bottom:4px;color:var(--ink2)}
.filters>div>label{font-size:10.5px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.09em}
input:not([type=checkbox]),select,textarea{width:100%;border:1px solid var(--line2);border-radius:6px;padding:8px 12px;background:var(--card);color:var(--ink);font-size:13px;min-height:40px;font-weight:600;outline:none;box-shadow:var(--shadow-sm)}
input:focus,select:focus,textarea:focus{border-color:var(--accent)}
td input{min-width:90px}
main .filters{display:flex;padding:0;margin-bottom:16px;gap:12px;align-items:flex-end}
main .filters>div{min-width:150px}
main .filters .btn{min-height:40px}
main .filters select{width:auto;min-width:150px}
main .filters input{width:auto}
/* banner sandbox */
.simbar{background:var(--warn-soft);color:var(--ink2);border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);border-radius:8px;font-size:12.5px;padding:9px 14px;margin-bottom:16px}
.side-foot .badge{margin:3px 0}
/* chip/badge */
.badge{display:inline-block;padding:2px 10px;border-radius:6px;font-size:11.5px;font-weight:750;white-space:nowrap;background:var(--info-soft);color:var(--accent2);border:1px solid color-mix(in srgb,var(--accent) 26%,transparent)}
.badge.sim,.badge.warn{background:var(--warn-soft);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 32%,transparent)}
html[data-theme=dark] .badge.sim,html[data-theme=dark] .badge.warn{color:#f5d34f}
.badge.ok,.badge.res{background:var(--good-soft);color:var(--good);border-color:color-mix(in srgb,var(--good) 28%,transparent)}
.badge.bad{background:rgba(163,23,63,.12);color:var(--bad);border-color:color-mix(in srgb,var(--bad) 28%,transparent)}
.up{color:var(--good);font-weight:750}.dn{color:var(--bad);font-weight:750}
.kpi .d .mute{color:inherit}
/* tabel */
.tablewrap{overflow:auto;max-height:560px;border:1px solid var(--line);border-radius:var(--r);background:var(--card);backdrop-filter:blur(var(--glass-blur));box-shadow:var(--shadow-sm)}
table.t .n{text-align:right}
table.t td{white-space:normal}
table.t td.nowrap{white-space:nowrap}
table.t td input{white-space:normal}
.card .tablewrap{box-shadow:none}
/* tabs sebagai tautan */
.tabs a{border:0;background:none;border-radius:6px;padding:8px 14px;font-size:13px;font-weight:750;color:var(--muted);cursor:pointer;text-decoration:none}
.tabs a:hover{color:var(--ink)}.tabs a.on{background:linear-gradient(135deg,var(--p-peach1),var(--p-rose1));color:var(--ink)}
/* live */
.live{display:flex;gap:8px;align-items:center;font-size:12.5px;color:var(--good);font-weight:750}.live i{width:9px;height:9px;border-radius:50%;background:var(--good);animation:pulse 1.6s infinite}@keyframes pulse{50%{opacity:.25}}
.chart{width:100%;height:auto;display:block}.chart text{fill:var(--muted);font-size:11px}
.hb{display:grid;grid-template-columns:minmax(90px,200px) 1fr auto;gap:8px;align-items:center;font-size:13px;margin:7px 0}.hb .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar{height:10px;border-radius:99px;background:var(--line);overflow:hidden}.bar>i{display:block;height:100%;border-radius:99px;opacity:.92}
.hb .bar{height:12px}
@media(max-width:560px){.hb{grid-template-columns:minmax(70px,120px) 1fr auto}}
#map{height:560px;border-radius:var(--r);border:1px solid var(--line);box-shadow:var(--shadow-sm);margin-bottom:16px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px}
.flash{animation:fl 1.6s}@keyframes fl{from{background:var(--warn-soft)}}
.sev-tinggi{border-left:4px solid var(--bad)}.sev-sedang{border-left:4px solid var(--warn)}.sev-rendah{border-left:4px solid var(--accent)}
.stg{display:flex;gap:4px;align-items:center;flex-wrap:wrap}.stg span{width:22px;height:8px;border-radius:4px;background:var(--line2)}.stg span.d{background:var(--good)}
.grid>.card{margin:0}
.tx{display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid var(--line);padding:7px 0;font-size:13px}
/* modal & toast */
.pwmodal,.modal{position:fixed;inset:0;background:rgba(7,19,31,.5);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:16px;z-index:2500}
.pwmodal .card,.modal .card{width:min(480px,100%);max-height:92vh;overflow:auto;background:var(--card-solid)}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:12px 18px;border-radius:8px;z-index:3000;box-shadow:var(--shadow);max-width:90vw;font-weight:650}.toast.bad{background:var(--bad);color:#fff}
/* login */
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.login .card{width:min(400px,100%);background:var(--card-solid)}
.login h2{font-size:1.25rem;font-weight:800;letter-spacing:-.01em}
.top h1{overflow-wrap:anywhere}
@media(max-width:700px){main .filters>div{min-width:130px;flex:1 1 130px}#map{height:420px}.side-foot{margin-top:16px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
