/* ═══════════════════════════════════════════════════════
   Baltimore Crime Intelligence — styles.css v3
   Mapbox GL · Firebase Auth · Grok AI
═══════════════════════════════════════════════════════ */
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Space+Mono:wght@400;700&display=swap');

:root{
  --bg:#0a090c;--s1:#111013;--s2:#1a181e;--s3:#222028;--s4:#2c2932;
  --brd:rgba(255,140,0,0.10);--brd2:rgba(255,140,0,0.22);
  --gold:#ff8c00;--gold2:#ffaa33;--gold3:#ffc266;--gdim:rgba(255,140,0,0.07);--ghov:rgba(255,140,0,0.13);
  --tx:#f5f0e8;--tx2:#9a9080;--tx3:#504840;
  --red:#f03a2e;--red2:#ff6b5b;
  --orange:#f07820;--amber:#f0b020;
  --lime:#6dbf47;--teal:#3dbfb0;--sky:#3ba0f0;--violet:#8a6af0;--rose:#f07080;
  --panel-w:310px;--r:8px;--rsm:5px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;font-family:'Space Grotesk',sans-serif;background:var(--bg);color:var(--tx);font-size:14px}
button{font-family:'Space Grotesk',sans-serif;cursor:pointer}
input,select,textarea{font-family:'Space Grotesk',sans-serif}

/* ── LAYOUT ── */
#app{display:flex;height:100vh;position:relative;overflow:hidden}
#map{flex:1;height:100%;z-index:1}
.mapboxgl-canvas{outline:none}
.mapboxgl-ctrl-bottom-right{bottom:10px;right:10px}
.mapboxgl-ctrl-bottom-left{bottom:10px;left:calc(var(--panel-w) + 10px)}

/* ══ LEFT PANEL ══ */
#panel{
  width:var(--panel-w);background:var(--s1);
  border-right:1px solid var(--brd);
  display:flex;flex-direction:column;z-index:400;flex-shrink:0;
}

/* ── Panel header ── */
.panel-head{padding:14px 16px 12px;border-bottom:1px solid var(--brd);flex-shrink:0}
.brand{display:flex;align-items:center;gap:9px;margin-bottom:12px}
.brand-icon{
  width:34px;height:34px;
  background:linear-gradient(135deg,var(--gold),#c06000);
  border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;
  box-shadow:0 0 16px rgba(255,140,0,0.3);
}
.brand-icon svg{width:17px;height:17px}
.brand-name{font-size:12px;font-weight:700;letter-spacing:0.1em;color:var(--tx);line-height:1.1;text-transform:uppercase}
.brand-sub{font-size:9px;color:var(--tx3);letter-spacing:0.12em;font-family:'Space Mono',monospace;text-transform:uppercase}

/* ── KPI grid ── */
.kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px}
.kpi{
  background:var(--s2);border:1px solid var(--brd);border-radius:var(--rsm);
  padding:9px 10px;position:relative;overflow:hidden;
}
.kpi::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--kpi-c,var(--gold));opacity:.8}
.kpi-val{font-size:22px;font-weight:700;color:var(--tx);font-family:'Space Mono',monospace;line-height:1;letter-spacing:-0.02em}
.kpi-label{font-size:9px;color:var(--tx3);letter-spacing:0.08em;margin-top:3px;text-transform:uppercase}
.kpi-delta{font-size:10px;font-family:'Space Mono',monospace;margin-top:2px}
.kpi-delta.bad{color:var(--red2)}
.kpi-delta.good{color:var(--lime)}
.kpi-delta.neu{color:var(--tx3)}

/* ── Status ── */
.status-row{display:flex;align-items:center;gap:7px;padding:6px 9px;background:var(--s2);border-radius:var(--rsm);border:1px solid var(--brd)}
.sdot{width:6px;height:6px;border-radius:50%;background:var(--tx3);flex-shrink:0}
.sdot.live{background:var(--lime);box-shadow:0 0 7px var(--lime);animation:blink 2s infinite}
.sdot.load{background:var(--amber);animation:blink .6s infinite}
.sdot.demo{background:var(--orange);box-shadow:0 0 5px var(--orange)}
.sdot.err{background:var(--red)}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.2}}
#stxt{font-size:10px;color:var(--tx2);font-family:'Space Mono',monospace;flex:1;letter-spacing:.02em}
.auth-signin{font-size:10px;color:var(--gold);background:none;border:1px solid var(--brd2);padding:3px 8px;border-radius:20px;font-family:'Space Mono',monospace;transition:all .15s;letter-spacing:.04em}
.auth-signin:hover{background:var(--gdim);border-color:var(--gold)}

/* ── Accordion ── */
.panel-body{flex:1;overflow-y:auto;min-height:0}
.acc-section{border-bottom:1px solid var(--brd)}
.acc-head{display:flex;align-items:center;gap:8px;padding:10px 16px;cursor:pointer;transition:background .12s;user-select:none}
.acc-head:hover{background:var(--s2)}
.acc-icon{font-size:13px;flex-shrink:0}
.acc-title{font-size:11px;font-weight:600;color:var(--tx2);flex:1;letter-spacing:.04em;text-transform:uppercase}
.acc-count{font-size:9px;font-family:'Space Mono',monospace;color:var(--tx3);background:var(--s3);padding:1px 6px;border-radius:10px}
.acc-arrow{font-size:10px;color:var(--tx3);transition:transform .2s}
.acc-section.open .acc-arrow{transform:rotate(90deg)}
.acc-body{display:none;padding:0 16px 12px}
.acc-section.open .acc-body{display:block}

/* ── Inputs ── */
.f-label{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--tx3);font-family:'Space Mono',monospace;margin-bottom:4px;display:block}
.finput,select{
  width:100%;background:var(--s2);border:1px solid var(--brd2);color:var(--tx);
  padding:7px 9px;border-radius:var(--rsm);font-size:12px;outline:none;
  color-scheme:dark;transition:border-color .15s;
}
.finput:focus,select:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(255,140,0,.08)}
.finput::placeholder{color:var(--tx3)}
.f-row{margin-bottom:9px}
.f-2col{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:9px}
.sw{position:relative}
.sw .finput{padding-left:28px}
.sico{position:absolute;left:8px;top:50%;transform:translateY(-50%);color:var(--tx3);pointer-events:none}

/* ── Sliders ── */
.slider-wrap{margin-bottom:9px}
.slider-val{font-size:14px;font-weight:700;color:var(--gold);font-family:'Space Mono',monospace;text-align:center;margin-bottom:5px;letter-spacing:.04em}
.yslider{width:100%;-webkit-appearance:none;height:3px;background:var(--s3);border-radius:2px;outline:none;cursor:pointer;margin-bottom:4px}
.yslider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--gold);cursor:pointer;border:2px solid var(--bg);box-shadow:0 0 7px rgba(255,140,0,.5)}
.yslider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--gold);cursor:pointer;border:2px solid var(--bg)}
.slider-bounds{display:flex;justify-content:space-between;font-size:9px;color:var(--tx3);font-family:'Space Mono',monospace}

/* ── Type toggles ── */
.type-list{display:flex;flex-direction:column;gap:1px;margin-bottom:6px}
.type-row{display:flex;align-items:center;gap:7px;padding:4px 5px;cursor:pointer;border-radius:4px;transition:all .12s}
.type-row:hover{background:var(--s2)}
.type-row.off{opacity:.28}
.type-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.type-name{flex:1;font-size:11px;color:var(--tx2)}
.type-ct{font-family:'Space Mono',monospace;font-size:9px;color:var(--tx3);background:var(--s3);padding:1px 5px;border-radius:8px;min-width:26px;text-align:right}
.type-toggle-all{font-size:9px;background:none;border:none;color:var(--tx3);cursor:pointer;font-family:'Space Mono',monospace;padding:0;margin-bottom:5px;letter-spacing:.04em}
.type-toggle-all:hover{color:var(--gold)}

/* ── Incident list ── */
.inc-item{display:flex;align-items:flex-start;gap:7px;padding:8px 0;border-bottom:1px solid var(--brd);cursor:pointer;transition:all .12s}
.inc-item:last-child{border-bottom:none}
.inc-item:hover{padding-left:3px}
.inc-item.sel{border-left:2px solid var(--gold);padding-left:5px;background:rgba(255,140,0,.04)}
.inc-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;margin-top:4px}
.inc-type{font-size:11px;font-weight:600;color:var(--tx)}
.inc-meta{font-size:9px;color:var(--tx3);font-family:'Space Mono',monospace;margin-top:1px}
.load-more{width:100%;padding:9px;background:none;border:none;border-top:1px solid var(--brd);color:var(--tx3);font-size:10px;cursor:pointer;font-family:'Space Mono',monospace;transition:color .15s;letter-spacing:.06em;text-transform:uppercase}
.load-more:hover{color:var(--gold)}

/* ── Charts ── */
.chart-wrap{background:var(--s2);border:1px solid var(--brd);border-radius:var(--r);padding:11px;margin-bottom:8px}
.chart-title{font-size:10px;font-weight:700;color:var(--tx2);margin-bottom:9px;letter-spacing:.06em;text-transform:uppercase}
.mini-bar{display:flex;flex-direction:column;gap:4px}
.mb-row{display:flex;align-items:center;gap:7px}
.mb-lbl{font-size:9px;color:var(--tx2);width:75px;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0}
.mb-track{flex:1;height:4px;background:var(--s3);border-radius:2px;overflow:hidden}
.mb-fill{height:100%;border-radius:2px;transition:width .6s ease}
.mb-num{font-size:9px;color:var(--tx3);font-family:'Space Mono',monospace;width:32px;text-align:right}
canvas.ch{width:100%!important}

/* ── Insight cards (new) ── */
.insight-card{background:var(--s2);border:1px solid var(--brd);border-radius:var(--r);padding:10px 11px;margin-bottom:7px}
.insight-head{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.insight-icon{font-size:14px}
.insight-title{font-size:10px;font-weight:700;color:var(--tx2);letter-spacing:.05em;text-transform:uppercase}
.insight-val{font-size:18px;font-weight:700;color:var(--gold);font-family:'Space Mono',monospace;margin-bottom:2px}
.insight-sub{font-size:10px;color:var(--tx3)}
.risk-bar{display:flex;gap:2px;margin-top:6px}
.risk-seg{flex:1;height:5px;border-radius:2px;background:var(--s3)}
.risk-seg.active-low{background:var(--lime)}
.risk-seg.active-med{background:var(--amber)}
.risk-seg.active-high{background:var(--orange)}
.risk-seg.active-crit{background:var(--red)}

/* ══ MAP OVERLAYS ════════════════════════════════════ */
.map-toolbar{
  position:absolute;top:12px;left:calc(var(--panel-w) + 12px);z-index:300;
  display:flex;gap:5px;align-items:center;
  background:rgba(10,9,12,0.88);border:1px solid var(--brd2);border-radius:22px;
  padding:5px 10px;backdrop-filter:blur(12px);
}
.tb-btn{
  display:flex;align-items:center;gap:5px;padding:5px 9px;border-radius:16px;
  border:none;background:transparent;color:var(--tx2);font-size:11px;
  font-family:'Space Mono',monospace;transition:all .15s;white-space:nowrap;letter-spacing:.03em;
}
.tb-btn:hover{background:var(--s3);color:var(--tx)}
.tb-btn.on{background:rgba(255,140,0,.15);color:var(--gold)}
.tb-btn svg{width:12px;height:12px}
.tb-sep{width:1px;height:14px;background:var(--brd2);margin:0 2px}

.bm-switcher{
  position:absolute;bottom:36px;left:calc(var(--panel-w) + 12px);z-index:300;
  display:flex;gap:4px;background:rgba(10,9,12,0.88);border:1px solid var(--brd2);
  border-radius:22px;padding:4px 8px;backdrop-filter:blur(12px);
}
.bm-btn{padding:3px 9px;border-radius:14px;border:none;background:transparent;color:var(--tx3);font-size:10px;font-family:'Space Mono',monospace;transition:all .15s;cursor:pointer;letter-spacing:.04em}
.bm-btn:hover{color:var(--tx2);background:var(--s3)}
.bm-btn.active{background:rgba(255,140,0,.15);color:var(--gold)}

/* ── Tool result ── */
#tool-result{
  position:absolute;top:56px;left:calc(var(--panel-w) + 12px);z-index:300;
  background:rgba(10,9,12,0.92);border:1px solid var(--brd2);border-radius:var(--r);
  padding:12px 14px;max-width:270px;display:none;backdrop-filter:blur(12px);
  animation:slin .2s ease;
}
#tool-result.show{display:block}
@keyframes slin{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
.tr-title{font-size:11px;font-weight:700;color:var(--gold);margin-bottom:7px;display:flex;align-items:center;justify-content:space-between;font-family:'Space Mono',monospace;letter-spacing:.04em;text-transform:uppercase}
.tr-close{background:none;border:none;color:var(--tx3);font-size:14px;cursor:pointer}
.tr-body{font-size:11px;color:var(--tx2);line-height:1.8;font-family:'Space Mono',monospace}
.tr-body strong{color:var(--tx)}

/* ── Street View ── */
#sv-panel{
  position:absolute;top:56px;right:12px;z-index:300;
  width:290px;height:210px;background:var(--s1);border:1px solid var(--brd2);
  border-radius:var(--r);overflow:hidden;display:none;flex-direction:column;
  box-shadow:0 8px 32px rgba(0,0,0,.5);
}
#sv-panel.show{display:flex}
.sv-head{display:flex;align-items:center;justify-content:space-between;padding:7px 11px;border-bottom:1px solid var(--brd);font-size:10px;color:var(--tx2);flex-shrink:0;font-family:'Space Mono',monospace;letter-spacing:.04em}
.sv-close{background:none;border:none;color:var(--tx3);font-size:14px;cursor:pointer}
.sv-placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--tx3);font-size:11px;gap:5px}

/* ── Location badge ── */
.loc-badge{
  position:absolute;bottom:36px;right:12px;z-index:300;
  background:rgba(10,9,12,0.9);border:1px solid var(--brd2);border-radius:var(--r);
  padding:8px 11px;backdrop-filter:blur(12px);font-size:10px;color:var(--tx2);display:none;max-width:210px;
  font-family:'Space Mono',monospace;
}
.loc-badge.show{display:block}
.loc-badge-title{color:var(--gold);font-weight:700;margin-bottom:3px;letter-spacing:.04em;text-transform:uppercase}

/* ══ AI FAB ══ */
#ai-fab{
  position:absolute;bottom:22px;right:22px;z-index:500;
  width:52px;height:52px;border-radius:50%;
  background:linear-gradient(135deg,var(--gold),#c06000);
  border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;
  font-size:20px;animation:fabpulse 2.5s infinite;transition:transform .2s;
  box-shadow:0 4px 20px rgba(255,140,0,0.4);
}
#ai-fab:hover{transform:scale(1.1)}
#ai-fab.open{animation:none;box-shadow:0 0 24px rgba(255,140,0,.6)}
@keyframes fabpulse{0%{box-shadow:0 0 0 0 rgba(255,140,0,.6)}60%{box-shadow:0 0 0 14px rgba(255,140,0,0)}100%{box-shadow:0 0 0 0 rgba(255,140,0,0)}}
.fab-unread{position:absolute;top:4px;right:4px;width:9px;height:9px;background:var(--red);border-radius:50%;border:2px solid var(--bg);display:none}
.fab-unread.show{display:block}

/* ── AI Drawer ── */
#ai-drawer{
  position:absolute;bottom:84px;right:22px;z-index:499;width:350px;
  background:var(--s1);border:1px solid var(--brd2);border-radius:14px;
  display:flex;flex-direction:column;
  box-shadow:0 16px 48px rgba(0,0,0,.6);
  max-height:calc(100vh - 130px);
  transform:translateY(16px) scale(.96);opacity:0;pointer-events:none;
  transition:all .25s cubic-bezier(.34,1.56,.64,1);overflow:hidden;
}
#ai-drawer.open{transform:translateY(0) scale(1);opacity:1;pointer-events:all}
.drawer-head{padding:12px 14px 9px;border-bottom:1px solid var(--brd);flex-shrink:0;display:flex;align-items:center;gap:9px}
.drawer-glow{width:30px;height:30px;border-radius:7px;background:linear-gradient(135deg,var(--gold),#c06000);display:flex;align-items:center;justify-content:center;font-size:14px;box-shadow:0 0 10px rgba(255,140,0,.4)}
.drawer-title{font-size:13px;font-weight:700;color:var(--tx);flex:1;letter-spacing:.02em}
.drawer-sub{font-size:9px;color:var(--tx3);font-family:'Space Mono',monospace;letter-spacing:.04em}
.drawer-close{background:none;border:none;color:var(--tx3);font-size:17px;cursor:pointer;padding:2px 4px}
.drawer-close:hover{color:var(--tx)}
.quick-chips{display:flex;flex-wrap:wrap;gap:4px;padding:8px 12px;border-bottom:1px solid var(--brd);flex-shrink:0}
.chip{padding:3px 8px;background:var(--s2);border:1px solid var(--brd2);border-radius:20px;font-size:10px;color:var(--tx2);cursor:pointer;transition:all .15s;font-family:'Space Mono',monospace;letter-spacing:.03em}
.chip:hover{border-color:var(--gold);color:var(--gold)}
.ai-msgs{flex:1;overflow-y:auto;padding:10px 12px;display:flex;flex-direction:column;gap:8px;min-height:160px;max-height:320px}
.msg{max-width:92%;animation:msgin .2s ease}
@keyframes msgin{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
.msg.u{align-self:flex-end}
.msg.a{align-self:flex-start}
.mb{padding:8px 10px;border-radius:8px;font-size:12px;line-height:1.6}
.msg.u .mb{background:var(--gdim);border:1px solid var(--brd2);color:var(--tx);border-radius:8px 8px 2px 8px}
.msg.a .mb{background:var(--s2);border:1px solid var(--brd);color:var(--tx2);border-radius:8px 8px 8px 2px}
.mt{font-size:9px;color:var(--tx3);font-family:'Space Mono',monospace;margin-top:2px}
.msg.u .mt{text-align:right}
.td{display:inline-block;width:5px;height:5px;background:var(--tx3);border-radius:50%;margin:0 2px;animation:tdot 1.2s infinite}
.td:nth-child(2){animation-delay:.2s}.td:nth-child(3){animation-delay:.4s}
@keyframes tdot{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
.ai-input-row{padding:9px 12px;border-top:1px solid var(--brd);flex-shrink:0;display:flex;gap:7px}
.ai-in{flex:1;background:var(--s2);border:1px solid var(--brd2);color:var(--tx);padding:7px 10px;border-radius:7px;font-size:12px;font-family:'Space Grotesk',sans-serif;outline:none;resize:none}
.ai-in:focus{border-color:var(--gold)}
.ai-send{background:var(--gold);border:none;padding:7px 12px;border-radius:7px;font-size:13px;font-weight:700;color:var(--bg);transition:background .15s;flex-shrink:0}
.ai-send:hover{background:var(--gold2)}
.ai-send:disabled{opacity:.4;cursor:not-allowed}
.loc-context{font-size:9px;color:var(--tx3);font-family:'Space Mono',monospace;padding:4px 12px;border-bottom:1px solid var(--brd);background:var(--s2);display:none;letter-spacing:.03em}
.loc-context.show{display:block}

/* ── Popup ── */
.mapboxgl-popup-content{background:var(--s2)!important;border:1px solid var(--brd2)!important;border-radius:var(--r)!important;padding:0!important;box-shadow:0 8px 32px rgba(0,0,0,.5)!important;color:var(--tx)!important}
.mapboxgl-popup-content{margin:0!important}
.mapboxgl-popup-tip{border-top-color:var(--s2)!important;border-bottom-color:var(--s2)!important}
.popup-inner{padding:11px 13px;min-width:195px}
.popup-type{font-size:13px;font-weight:700;color:var(--tx);display:flex;align-items:center;gap:6px;margin-bottom:7px}
.popup-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.popup-row{display:flex;gap:7px;font-size:11px;margin-bottom:3px}
.popup-key{color:var(--tx3);font-family:'Space Mono',monospace;width:58px;flex-shrink:0;font-size:9px;letter-spacing:.04em;text-transform:uppercase}
.popup-val{color:var(--tx2)}
.popup-sv-btn{margin-top:7px;width:100%;padding:5px;background:var(--gdim);border:1px solid var(--brd2);border-radius:4px;color:var(--gold);font-size:10px;font-family:'Space Mono',monospace;cursor:pointer;transition:all .15s;letter-spacing:.04em}
.popup-sv-btn:hover{background:var(--ghov)}

/* ── Cluster ── */
.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large{background:rgba(255,140,0,.1)!important}
.marker-cluster-small div,.marker-cluster-medium div,.marker-cluster-large div{background:rgba(255,140,0,.22)!important;color:var(--gold)!important;font-family:'Space Mono',monospace!important;font-size:10px!important;font-weight:700}

/* ── Auth modal ── */
#auth-modal{position:absolute;inset:0;z-index:1000;background:rgba(0,0,0,.72);backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center}
#auth-modal.show{display:flex}
.auth-card{background:var(--s1);border:1px solid var(--brd2);border-radius:14px;padding:28px 24px;width:320px;box-shadow:0 24px 64px rgba(0,0,0,.6);animation:msgin .25s ease}
.auth-logo{display:flex;align-items:center;gap:9px;margin-bottom:22px}
.auth-title{font-size:18px;font-weight:700;color:var(--tx);letter-spacing:.02em}
.auth-sub{font-size:10px;color:var(--tx3);font-family:'Space Mono',monospace;margin-top:2px;letter-spacing:.05em;text-transform:uppercase}
.google-btn{width:100%;padding:11px;background:white;border:none;border-radius:var(--rsm);font-size:13px;font-weight:600;color:#333;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:9px;transition:all .15s;margin-bottom:8px}
.google-btn:hover{background:#f5f5f5;box-shadow:0 4px 12px rgba(0,0,0,.2)}
.google-btn svg{width:19px;height:19px;flex-shrink:0}
.auth-guest{width:100%;padding:9px;background:none;border:1px solid var(--brd2);border-radius:var(--rsm);color:var(--tx2);font-size:13px;cursor:pointer;transition:all .15s}
.auth-guest:hover{border-color:var(--gold);color:var(--tx)}
.auth-note{font-size:10px;color:var(--tx3);text-align:center;margin-top:10px;font-family:'Space Mono',monospace;line-height:1.5}

/* ── Loader ── */
#loader{position:absolute;inset:0;z-index:2000;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:13px;transition:opacity .5s}
#loader.out{opacity:0;pointer-events:none}
.lring{width:44px;height:44px;border:3px solid var(--s3);border-top-color:var(--gold);border-radius:50%;animation:spin .9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.ltxt{font-family:'Space Mono',monospace;font-size:12px;color:var(--tx2);letter-spacing:.05em}
.lsub{font-size:10px;color:var(--tx3);font-family:'Space Mono',monospace;letter-spacing:.04em}
.lprog{width:190px;height:3px;background:var(--s3);border-radius:2px;overflow:hidden}
.lpfill{height:100%;background:linear-gradient(90deg,var(--gold),var(--gold2));border-radius:2px;transition:width .4s}

/* ── Toast ── */
#toast{position:absolute;bottom:84px;left:50%;transform:translateX(-50%);z-index:3000;background:var(--s2);border:1px solid var(--brd2);border-radius:22px;padding:8px 16px;font-size:12px;color:var(--tx);opacity:0;transition:all .25s;pointer-events:none;white-space:nowrap;box-shadow:0 4px 20px rgba(0,0,0,.4);font-family:'Space Mono',monospace;letter-spacing:.03em}
#toast.show{opacity:1;transform:translateX(-50%) translateY(-3px)}
#toast.ok{border-color:var(--lime)}
#toast.err{border-color:var(--red)}
#toast.info{border-color:var(--sky)}

/* ── Scrollbar ── */
::-webkit-scrollbar{width:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--s4);border-radius:2px}

/* ── Utils ── */
.btn-row{display:flex;gap:5px}
.bsm{flex:1;padding:6px 5px;background:var(--s2);border:1px solid var(--brd);border-radius:var(--rsm);font-size:10px;color:var(--tx2);cursor:pointer;font-family:'Space Mono',monospace;transition:all .15s;text-align:center;letter-spacing:.04em;text-transform:uppercase}
.bsm:hover{border-color:var(--gold);color:var(--gold)}
.divider{height:1px;background:var(--brd);margin:8px 0}
