:root{
  --asphalt:#141920; --deck:#1b2129; --deck-2:#222a34; --deck-3:#2a3440; --rule:#2f3a47;
  --ink:#e3e8ee; --ink-2:#97a3b2; --ink-3:#66727f;
  --signal:#f2b33d; --rx:#3cc480; --p1:#ef4b4b; --p2:#f2b33d; --p3:#5aa9e6;
  --center:#e11d48;
  --display:"Bahnschrift","DIN Alternate","Roboto Condensed","Arial Narrow",system-ui,sans-serif;
  --body:"Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  --r-s:4px; --r-m:8px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--asphalt);color:var(--ink);font:14px/1.45 var(--body)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
[hidden]{display:none!important}
b{font-weight:600}

/* Botões */
.btn{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:var(--r-s);border:1px solid var(--rule);background:var(--deck-2);cursor:pointer;text-decoration:none;color:var(--ink)}
.btn:hover{background:var(--deck-3)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn-primary{background:var(--signal);border-color:var(--signal);color:#1b1407;font-weight:600}
.btn-primary:hover{background:#ffc457}
.btn-danger{border-color:#7a2a2a;background:#3a1b1d;color:#ffd5d5}
.btn-ghost{background:transparent}
.btn-small{padding:5px 10px;font-size:13px}
.btn-discord{background:#5865f2;border-color:#5865f2;color:#fff;justify-content:center;font-weight:600;padding:12px}
.btn-discord svg{width:20px;height:20px;fill:currentColor}
.link-btn{background:none;border:0;color:var(--ink-2);cursor:pointer;text-decoration:underline;padding:0 2px}
.icon-btn{width:34px;height:34px;border-radius:var(--r-s);border:1px solid var(--rule);background:var(--deck-2);display:grid;place-items:center;cursor:pointer}
.icon-btn svg{width:18px;height:18px;fill:var(--ink-2)}
.row-gap{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}

/* Entrada */
.screen{min-height:100%;display:grid;place-items:center;padding:24px;
  background:radial-gradient(1200px 600px at 70% -10%,#22303d 0,transparent 60%),var(--asphalt)}
.login-card{width:min(420px,100%);display:flex;flex-direction:column;gap:14px}
.login-card h1{font:600 34px/1.1 var(--display);letter-spacing:.01em;margin:0}
.login-sub{color:var(--ink-2);margin:0 0 6px}
.login-mark svg{width:58px;height:58px;fill:none;stroke:var(--signal);stroke-width:2}
.login-mark .dot{fill:var(--signal);stroke:none;animation:blip 2.4s infinite}
@keyframes blip{0%,70%{opacity:.15}80%{opacity:1}100%{opacity:.15}}
.code-form label{display:block;color:var(--ink-2);margin:6px 0 8px}
.code-form small{display:block;color:var(--ink-3)}
.code-row{display:flex;gap:8px}
.code-row input{flex:1;min-width:0;background:#0f1318;border:1px solid var(--rule);border-radius:var(--r-s);padding:10px 12px;
  font:600 26px/1 var(--display);letter-spacing:.35em;text-transform:uppercase;color:var(--signal)}
.login-error{color:#ff9a9a;min-height:1.4em;margin:0}
.id-list{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;background:var(--deck);border:1px solid var(--rule);padding:12px;border-radius:var(--r-m);margin:0}
.id-list dt{color:var(--ink-2)} .id-list dd{margin:0;font-family:Consolas,monospace;user-select:all;word-break:break-all}

/* Estrutura */
#app{height:100%;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto}
.topbar{grid-row:1}.observer{grid-row:2}.layout{grid-row:3}.radio{grid-row:4}
.topbar{display:flex;align-items:center;gap:16px;padding:8px 14px;background:var(--deck);border-bottom:1px solid var(--rule)}
.brand{display:flex;align-items:center;gap:10px}
.brand-badge{font:700 20px/1 var(--display);letter-spacing:.06em;padding:6px 10px;border-radius:var(--r-s);background:var(--center);color:#fff}
#centerSelect{background:var(--deck-2);border:1px solid var(--rule);border-radius:var(--r-s);padding:5px 8px}
.top-stats{display:flex;gap:18px;flex:1;min-width:0;overflow:hidden}
.stat{display:flex;align-items:baseline;gap:6px;white-space:nowrap;color:var(--ink-2)}
.stat b{font:600 20px/1 var(--display);color:var(--ink)}
.stat.hot b{color:var(--p1)}
.top-right{display:flex;align-items:center;gap:12px}
.clock{font:500 20px/1 var(--display);font-variant-numeric:tabular-nums;color:var(--ink)}
.operators{color:var(--ink-2)} .operators span{color:var(--ink);font-weight:600}
.duty{display:flex;align-items:center;gap:10px;padding:8px 14px;border-radius:999px;border:1px solid var(--rule);background:var(--deck-2);cursor:pointer;font-weight:600}
.duty-led{width:10px;height:10px;border-radius:50%;background:var(--ink-3)}
.duty.on{border-color:#2f7a52;background:#173226;color:#c9f5dc}
.duty.on .duty-led{background:var(--rx);box-shadow:0 0 0 4px rgba(60,196,128,.18)}
.duty.off:hover{border-color:var(--signal)}
.user{display:flex;align-items:center;gap:8px;color:var(--ink-2)}
.user img{width:26px;height:26px;border-radius:50%}
.observer{padding:7px 14px;background:#2b2412;color:#f5dca6;border-bottom:1px solid #4a3b16;font-size:13px}

.layout{display:grid;grid-template-columns:340px 1fr 340px;min-height:0}
.queue,.side{display:flex;flex-direction:column;min-height:0;background:var(--deck)}
.queue{border-right:1px solid var(--rule)} .side{border-left:1px solid var(--rule)}
.tabs{display:flex;border-bottom:1px solid var(--rule);overflow-x:auto;scrollbar-width:none}
.queue .tabs button{font-size:12.5px}
.tabs button{flex:1 1 auto;background:none;border:0;border-bottom:2px solid transparent;padding:10px 4px;color:var(--ink-2);cursor:pointer;font-size:13px;white-space:nowrap}
.tabs button.active{color:var(--ink);border-bottom-color:var(--center)}
.tabs button b{display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;background:var(--deck-3);color:var(--ink);font-size:12px;margin-left:4px}
.tabs button[data-tab=copom_pending] b.nonzero{background:var(--p1)}
.queue-tools{display:flex;gap:6px;padding:8px}
input[type=search],.field{width:100%;background:#11161c;border:1px solid var(--rule);border-radius:var(--r-s);padding:7px 10px}
.side-pane{display:flex;flex-direction:column;min-height:0;flex:1;padding:8px;gap:8px;overflow:auto}

/* Fila de ocorrências */
.call-list{list-style:none;margin:0;padding:0 8px 8px;overflow:auto;flex:1;display:flex;flex-direction:column;gap:6px}
.call{display:grid;grid-template-columns:6px 1fr auto;gap:0 10px;padding:9px 10px 9px 0;background:var(--deck-2);border-radius:var(--r-s);cursor:pointer;border:1px solid transparent}
.call:hover{border-color:var(--rule)}
.call.sel{border-color:var(--signal);background:#2a2618}
.call .pbar{grid-row:1/4;border-radius:var(--r-s) 0 0 var(--r-s);background:var(--p3)}
.call.p1 .pbar{background:var(--p1)} .call.p2 .pbar{background:var(--p2)}
.call h3{margin:0;font:600 15px/1.25 var(--body)}
.call .meta{color:var(--ink-2);font-size:12.5px;grid-column:2}
.call .time{grid-column:3;grid-row:1;text-align:right;font:500 15px/1.2 var(--display);font-variant-numeric:tabular-nums;color:var(--ink-2)}
.call .hold{grid-column:2/4;height:3px;margin-top:6px;background:var(--deck-3);border-radius:2px;overflow:hidden}
.call .hold i{display:block;height:100%;background:var(--signal)}
.call.p1.status-copom_pending{animation:p1 1.6s infinite}
@keyframes p1{50%{background:#3a1d1f}}
.empty{color:var(--ink-3);text-align:center;padding:24px 8px}

/* Mapa */
.map-wrap{position:relative;min-width:0;min-height:0;background:#0d2232}
.map{position:absolute;inset:0;overflow:hidden;cursor:grab;touch-action:none}
.map.drag{cursor:grabbing}
.scene{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
#tiles{display:grid;line-height:0}
#tiles img{display:block;user-select:none;-webkit-user-drag:none}
#tiles img.failed{background:repeating-linear-gradient(45deg,#11293a 0 14px,#0f2535 14px 28px)}
.areas,.markers{position:absolute;inset:0;pointer-events:none;overflow:visible}
.areas{width:100%;height:100%}
.areas circle.support{fill:rgba(90,169,230,.12);stroke:#5aa9e6;stroke-dasharray:6 5}
.areas circle.panic{fill:rgba(239,75,75,.14);stroke:#ef4b4b;stroke-width:2}
.mk{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;cursor:pointer}
.mk .tag{position:absolute;left:50%;top:100%;transform:translate(-50%,3px);white-space:nowrap;font:600 11.5px/1 var(--display);letter-spacing:.02em;
  background:rgba(13,17,22,.86);padding:3px 5px;border-radius:3px;color:var(--ink)}
.hide-labels .mk .tag{display:none}
.hide-labels .mk.sel .tag,.mk:hover .tag{display:block}
.mk-officer{width:14px;height:14px}
.mk-officer .dot{position:absolute;inset:2px;border-radius:50%;background:var(--center);border:2px solid #fff;box-shadow:0 0 0 2px rgba(0,0,0,.35)}
.mk-officer .dir{position:absolute;left:50%;top:50%;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:9px solid #fff;transform-origin:50% 100%}
.mk-officer.st-a_caminho .dot{background:var(--signal)} .mk-officer.st-no_local .dot{background:var(--p1)}
.mk-officer.dead .dot{background:#555;border-color:var(--p1)}
.mk-veh{width:26px;height:26px}
.mk-veh svg{width:26px;height:26px;filter:drop-shadow(0 1px 1px rgba(0,0,0,.6))}
.mk-veh .body{fill:#f4f6f8} .mk-veh .bar{fill:var(--center)} .mk-veh .glass{fill:#2a3846}
.mk-veh.parked .body{fill:#b8c1cb}
.mk-veh.abandoned .body{fill:var(--signal)}
.mk-veh.abandoned::after{content:"";position:absolute;inset:-6px;border:2px dashed var(--signal);border-radius:50%;animation:spin 6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.mk-veh .tag{background:var(--center);color:#fff}
.mk-veh.abandoned .tag{background:var(--signal);color:#1b1407}
.mk-sup{width:24px;height:24px;border-radius:6px;display:grid;place-items:center;font:700 13px/1 var(--display);color:#fff;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.6)}
.mk-sup.ambulance{background:#d83a3a} .mk-sup.tow{background:#d97a12} .mk-sup.mechanic{background:#3972d6} .mk-sup.iml{background:#55606e}
.mk-call{width:22px;height:30px;transform:translate(-50%,-100%)}
.mk-call svg{width:22px;height:30px}
.mk-call path{fill:var(--p3);stroke:#0d1116;stroke-width:1.5}
.mk-call.p1 path{fill:var(--p1)} .mk-call.p2 path{fill:var(--p2)}
.mk-call.pulse::before{content:"";position:absolute;left:50%;bottom:-6px;width:28px;height:28px;margin-left:-14px;border-radius:50%;border:2px solid var(--p1);animation:ring 1.4s infinite}
@keyframes ring{from{transform:scale(.3);opacity:1}to{transform:scale(1.6);opacity:0}}
.mk-req{width:18px;height:18px;border-radius:50%;background:#5aa9e6;border:3px solid #fff}
.mk.sel{z-index:5}
.mk.sel.mk-officer .dot,.mk.sel .body{stroke:var(--signal)}
.mk.sel::before{content:"";position:absolute;inset:-7px;border:2px solid var(--signal);border-radius:50%}
.mk.talk.mk-officer .dot{box-shadow:0 0 0 5px rgba(60,196,128,.55)}
.map-layers{position:absolute;left:10px;top:10px;display:flex;flex-direction:column;gap:2px;padding:8px 10px;background:rgba(20,25,32,.9);border:1px solid var(--rule);border-radius:var(--r-m);font-size:12.5px}
.map-layers label{display:flex;gap:6px;align-items:center;cursor:pointer}
.map-zoom{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:4px}
.map-zoom button{width:32px;height:32px;border-radius:var(--r-s);border:1px solid var(--rule);background:rgba(27,33,41,.95);cursor:pointer;font-size:18px}
.map-hint{position:absolute;left:10px;bottom:8px;font-size:12px;color:var(--ink-2);background:rgba(20,25,32,.8);padding:3px 8px;border-radius:var(--r-s)}
.ctx{position:absolute;z-index:20;min-width:220px;background:var(--deck-2);border:1px solid var(--rule);border-radius:var(--r-m);padding:4px;box-shadow:0 10px 30px rgba(0,0,0,.45)}
.ctx button{display:block;width:100%;text-align:left;background:none;border:0;padding:8px 10px;border-radius:var(--r-s);cursor:pointer}
.ctx button:hover{background:var(--deck-3)}
.ctx small{display:block;color:var(--ink-3);padding:6px 10px 2px}

/* Unidades */
.unit-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.unit{display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;padding:8px 10px;background:var(--deck-2);border-radius:var(--r-s);cursor:pointer;border:1px solid transparent}
.unit:hover{border-color:var(--rule)} .unit.sel{border-color:var(--signal)}
.unit .pfx{grid-row:1/3;align-self:center;font:700 16px/1 var(--display);letter-spacing:.03em;min-width:62px;color:var(--ink)}
.unit .nm{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.unit .sub{grid-column:2;color:var(--ink-2);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.unit .chips{grid-column:3;grid-row:1/3;display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.chip{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;padding:1px 6px;border-radius:3px;background:var(--deck-3);color:var(--ink-2);white-space:nowrap}
.chip.ok{background:#173226;color:#9fe6c2} .chip.warn{background:#3a2e12;color:#f6d38a} .chip.bad{background:#3a1b1d;color:#ffb3b3}
.chip.cop{background:#3a1b1d;color:#ffb3b3} .chip.cop::before{content:"";width:6px;height:6px;border-radius:50%;background:#ff5252}
.chip.talk{background:#173226;color:#9fe6c2}

/* Detalhe */
.detail h2{font:600 22px/1.15 var(--display);margin:2px 0 4px}
.detail .kv{display:grid;grid-template-columns:118px 1fr;gap:4px 10px;font-size:13px;margin:6px 0}
.detail .kv dt{color:var(--ink-2)} .detail .kv dd{margin:0}
.detail h4{margin:12px 0 6px;font-size:12.5px;color:var(--ink-2);font-weight:600}
.actions{display:flex;flex-wrap:wrap;gap:6px}
.timeline{list-style:none;margin:0;padding:0;font-size:12.5px;border-left:2px solid var(--rule)}
.timeline li{padding:3px 0 6px 10px;position:relative}
.timeline li::before{content:"";position:absolute;left:-5px;top:8px;width:8px;height:8px;border-radius:50%;background:var(--ink-3)}
.timeline time{color:var(--ink-3);margin-right:6px;font-variant-numeric:tabular-nums}
.pick{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px;max-height:260px;overflow:auto}
.pick li{display:flex;justify-content:space-between;gap:8px;padding:6px 8px;background:var(--deck-2);border-radius:var(--r-s);cursor:pointer}
.pick li:hover{background:var(--deck-3)}
.pick li span{color:var(--ink-2);font-size:12.5px}
textarea.field{min-height:64px;resize:vertical}

/* Rádio */
.radio{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:stretch;padding:10px 12px;background:linear-gradient(#20262e,#171c22);border-top:1px solid #3a4552;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.radio-strips{display:flex;gap:8px;overflow-x:auto;min-height:118px}
.strip{flex:0 0 172px;display:flex;flex-direction:column;gap:6px;padding:8px;background:#11151a;border:1px solid #2b333d;border-radius:var(--r-m);box-shadow:inset 0 2px 6px rgba(0,0,0,.5)}
.strip.tx{border-color:var(--signal);box-shadow:inset 0 2px 6px rgba(0,0,0,.5),0 0 0 1px rgba(242,179,61,.25)}
.strip.rx{border-color:#2d7a55}
.strip.locked{opacity:.5}
.strip.locked .lcd .freq{color:var(--ink-3)}
.lcd{display:flex;justify-content:space-between;align-items:baseline;padding:5px 8px;background:#0a0d10;border-radius:var(--r-s);border:1px solid #20262d}
.lcd .freq{font:600 28px/1 var(--display);font-variant-numeric:tabular-nums;color:#c9d2db;letter-spacing:.02em}
.strip.tx .lcd .freq{color:var(--signal)}
.strip.rx .lcd .freq{color:var(--rx)}
.lcd .name{font:500 13px/1 var(--display);color:var(--ink-2);text-align:right}
.who{min-height:18px;font-size:12.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.strip.rx .who{color:#a6f0cb}
.strip-ctl{display:flex;align-items:center;gap:6px}
.strip-ctl input[type=range]{flex:1;min-width:0;accent-color:var(--rx)}
.strip-ctl button{background:var(--deck-2);border:1px solid var(--rule);border-radius:3px;padding:2px 6px;font-size:12px;cursor:pointer;color:var(--ink-2)}
.strip-ctl button.on{background:var(--signal);border-color:var(--signal);color:#1b1407;font-weight:700}
.strip-ctl button.muted{background:#3a1b1d;color:#ffb3b3;border-color:#5c2a2d}
.led{width:9px;height:9px;border-radius:50%;background:#222a31;flex:0 0 auto}
.strip.rx .led{background:var(--rx);box-shadow:0 0 8px var(--rx)}
.strip.tx.live .led{background:var(--signal);box-shadow:0 0 8px var(--signal)}
.radio-add{display:flex;flex-direction:column;justify-content:flex-start;gap:10px;width:120px}
.radio-add form{display:flex;flex-direction:column;gap:6px}
.radio-add input{background:#0a0d10;border:1px solid #2b333d;border-radius:var(--r-s);padding:6px 8px;font:600 20px/1 var(--display);text-align:center;color:var(--ink)}
.mic-meter{height:8px;background:#0a0d10;border-radius:4px;overflow:hidden;border:1px solid #2b333d}
.mic-meter span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--rx),var(--signal) 75%,var(--p1));transition:width .08s}
.ptt-zone{display:flex;flex-direction:column;align-items:center;gap:6px;justify-content:center}
.ptt{position:relative;width:118px;height:94px;border-radius:14px;border:1px solid #4a3a19;background:linear-gradient(#3b2f17,#251d0e);color:#f7d692;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;user-select:none}
.ptt:disabled{filter:grayscale(1);opacity:.5;cursor:not-allowed}
.ptt-label{font:700 26px/1 var(--display);letter-spacing:.08em}
.ptt-sub{font-size:11.5px;color:#cbb07a}
.ptt-ring{position:absolute;inset:-4px;border-radius:17px;border:2px solid transparent}
.ptt.wait .ptt-ring{border-color:#cbb07a;border-style:dashed}
.ptt.live{background:linear-gradient(#f2b33d,#c88a16);color:#1b1407;border-color:#ffd27a}
.ptt.live .ptt-sub{color:#3b2a08}
.ptt.live .ptt-ring{border-color:#ffd27a;animation:ring2 1s infinite}
@keyframes ring2{50%{border-color:transparent}}
.ptt.busy{background:linear-gradient(#5a1f22,#381315);color:#ffd5d5}
.priority{font-size:12.5px;color:var(--ink-2);display:flex;gap:6px;align-items:center}

/* COP */
.cop-dock{position:fixed;inset:0;pointer-events:none;z-index:40}
.cop{position:absolute;width:480px;pointer-events:auto;background:#000;border:1px solid #3a4552;border-radius:var(--r-m);overflow:hidden;box-shadow:0 18px 50px rgba(0,0,0,.6)}
.cop.big{width:min(1100px,92vw)}
.cop header{display:flex;align-items:center;gap:8px;padding:6px 8px;background:#151a20;cursor:move;user-select:none}
.cop header b{font:700 15px/1 var(--display);letter-spacing:.03em}
.cop header span{color:var(--ink-2);font-size:12.5px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cop header button{background:none;border:0;color:var(--ink-2);cursor:pointer;font-size:16px;padding:0 4px}
.cop .screen-wrap{position:relative;aspect-ratio:16/9;background:#06080a}
.cop img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.cop .osd{position:absolute;left:0;right:0;top:0;display:flex;justify-content:space-between;padding:8px 10px;font:600 12.5px/1.3 var(--display);color:#fff;text-shadow:0 1px 2px #000;letter-spacing:.03em}
.cop .osd .rec{color:#ff5252}
.cop .osd-b{position:absolute;left:0;right:0;bottom:0;padding:8px 10px;font:500 12.5px/1.35 var(--display);color:#e8edf2;text-shadow:0 1px 2px #000;background:linear-gradient(transparent,rgba(0,0,0,.65))}
.cop .wait{position:absolute;inset:0;display:grid;place-items:center;color:var(--ink-2);font-size:13px;text-align:center;padding:20px}

/* Modal e avisos */
.modal{position:fixed;inset:0;z-index:60;background:rgba(5,8,11,.66);display:grid;place-items:center;padding:20px}
.modal-box{position:relative;width:min(760px,100%);max-height:88vh;overflow:auto;background:var(--deck);border:1px solid var(--rule);border-radius:var(--r-m);padding:18px 20px}
.modal-box h2{font:600 24px/1.15 var(--display);margin:0 0 12px}
.modal-close{position:absolute;right:10px;top:8px;background:none;border:0;font-size:26px;color:var(--ink-2);cursor:pointer}
.form-grid{display:grid;grid-template-columns:150px 1fr;gap:8px 12px;align-items:center}
.form-grid label{color:var(--ink-2)}
table.list{width:100%;border-collapse:collapse;font-size:13px}
table.list th{text-align:left;color:var(--ink-2);font-weight:600;padding:6px;border-bottom:1px solid var(--rule)}
table.list td{padding:6px;border-bottom:1px solid #252e38;vertical-align:top}
table.list code{font-family:Consolas,monospace;font-size:12px;word-break:break-all}
.toasts{position:fixed;right:14px;bottom:150px;z-index:70;display:flex;flex-direction:column;gap:6px;align-items:flex-end}
.toast{max-width:380px;padding:9px 12px;border-radius:var(--r-s);background:var(--deck-2);border:1px solid var(--rule);border-left:4px solid var(--p3);box-shadow:0 8px 24px rgba(0,0,0,.4)}
.toast.error{border-left-color:var(--p1)} .toast.ok{border-left-color:var(--rx)} .toast.warn{border-left-color:var(--signal)}

@media (max-width:1250px){.layout{grid-template-columns:290px 1fr 300px}}
@media (max-width:980px){
  .layout{grid-template-columns:1fr;grid-template-rows:42vh auto auto}
  .queue{order:2;max-height:40vh} .side{order:3;max-height:50vh} .map-wrap{order:1}
  .top-stats{display:none}
  .radio{grid-template-columns:1fr auto}
  .radio-add{display:none}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
