/* TravelGuard Sentinel — main.css */
/* TravelGuard Sentinel — main.css v11.77 */

:root{
  --bg:#0c0e12;--surface:#13161c;--surface2:#1a1e27;
  --border:rgba(255,255,255,0.07);--border2:rgba(255,255,255,0.13);
  --text:#ffffff;--muted:#ffffff;--muted2:#e6ecf4;
  --accent:#4f9cf9;--accent-dim:rgba(79,156,249,0.12);
  --green:#34d399;--green-dim:rgba(52,211,153,0.1);
  --amber:#fb923c;--amber-dim:rgba(251,146,60,0.1);
  --red:#f87171;--red-dim:rgba(248,113,113,0.1);
  --orange:#fb923c;--orange-dim:rgba(251,146,60,0.1);
  --purple:#c084fc;--purple-dim:rgba(192,132,252,0.09);
  --teal:#2dd4bf;--teal-dim:rgba(45,212,191,0.09);
  --crimson:#ff4d6d;--crimson-dim:rgba(255,77,109,0.12);
  --mono:'JetBrains Mono',monospace;--sans:'Inter',sans-serif;
  --r:8px;--r-sm:5px;
}
*{margin:0;padding:0;box-sizing:border-box;}
html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:16px;overflow:hidden;}

/* PROGRESS */
#gprog{position:fixed;top:0;left:0;height:3px;width:0%;background:var(--accent);z-index:9999;transition:width 0.25s ease;pointer-events:none;}
#gprog.flash{background:var(--green);}
#gprog.done{opacity:0;transition:opacity 0.4s ease;}

/* APP */
.app{display:grid;grid-template-rows:50px 1fr !important;height:100vh;height:100dvh;min-height:0;}

/* TOPBAR */
.topbar{display:flex !important;min-height:50px;align-items:center;padding:0 14px;background:#0e1319;border-bottom:1px solid rgba(255,255,255,0.08);gap:10px;flex-shrink:0;overflow:hidden;position:relative;visibility:visible;}
.brand{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.brand-badge{width:26px;height:26px;border-radius:5px;background:linear-gradient(135deg,#1e3a5f,#2a4f80);border:1px solid rgba(79,156,249,0.3);display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:600;color:var(--accent);font-family:var(--mono);}
.brand-name{font-size:15px;font-weight:600;}
.brand-sub{font-size:15px;color:var(--muted);font-family:var(--mono);}
.query-bar{display:flex;align-items:center;gap:6px;flex:1;}
.qi{background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);color:var(--text);font-family:var(--sans);font-size:15px;padding:5px 8px;outline:none;transition:border-color 0.15s;}
.qi:focus{border-color:var(--accent);}
.qi.w2{flex:2;}
.qi.w15{flex:1.5;}
.qi.w1{flex:1;}
.qi-sel-wrap{position:relative;flex:0.65;}
.qi-sel-wrap::after{content:'↓';position:absolute;right:7px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:15px;pointer-events:none;}
.qi-sel{background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);color:var(--text);font-family:var(--sans);font-size:15px;padding:5px 22px 5px 8px;outline:none;appearance:none;cursor:pointer;width:100%;}
.run-btn{padding:6px 14px;border-radius:var(--r-sm);border:none;cursor:pointer;background:linear-gradient(135deg,#1e3a5f,#2563a8);color:white;font-family:var(--sans);font-size:15px;font-weight:600;transition:all 0.2s;white-space:nowrap;flex-shrink:0;}
.run-btn:hover:not(:disabled){background:linear-gradient(135deg,#254a75,#2d72c4);}
.run-btn:disabled{opacity:0.45;cursor:not-allowed;}
.emergency-btn{padding:6px 14px;border-radius:var(--r-sm);border:2px solid var(--crimson);cursor:pointer;background:var(--crimson-dim);color:var(--crimson);font-family:var(--mono);font-size:14px;font-weight:600;transition:all 0.2s;white-space:nowrap;flex-shrink:0;letter-spacing:0.5px;}
.emergency-btn:hover{background:rgba(255,77,109,0.25);box-shadow:0 0 12px rgba(255,77,109,0.3);}
.topbar-meta{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.live-pill{display:flex;align-items:center;gap:4px;background:var(--green-dim);border:1px solid rgba(52,211,153,0.2);border-radius:20px;padding:2px 8px;font-size:15px;font-weight:500;color:var(--green);font-family:var(--mono);}
.live-dot{width:5px;height:5px;border-radius:50%;background:var(--green);animation:blink 2s infinite;}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0.3}}
.sid{font-family:var(--mono);font-size:15px;color:var(--muted);}

/* WORKSPACE */
.workspace{display:flex;min-height:0;height:100%;height:calc(100dvh - 50px);}

/* MAP PANEL */
.map-panel{position:relative;display:flex;flex-direction:column;background:#080b10;min-height:0;flex:1;min-width:200px;}
#map{flex:1;width:100%;min-height:0;}

/* MAP OVERLAYS */
.map-overlay{position:absolute;z-index:900;pointer-events:none;}
.map-overlay.interactive{pointer-events:all;}
#map-legend{position:absolute;top:52px;right:10px;left:auto;background:rgba(8,11,16,0.95);border:1px solid var(--border2);border-radius:var(--r);padding:10px 12px;min-width:190px;max-height:calc(100% - 90px);overflow-y:auto;display:block;pointer-events:auto;z-index:950;}
.leg-title{font-size:15px;font-weight:600;color:var(--muted);letter-spacing:1px;text-transform:uppercase;margin-bottom:5px;}
.leg-item{display:flex;align-items:center;gap:7px;margin-bottom:5px;padding:1px 0;}
.leg-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
/* M1: icon-style legend markers (match actual Leaflet divIcon visuals) */
.leg-ic{width:18px;height:18px;flex-shrink:0;line-height:1;}
.leg-lbl{font-size:15px;color:var(--text);white-space:nowrap;}

#route-ctrl{top:10px;right:10px;display:none;flex-direction:column;gap:4px;}
.rcbtn{background:rgba(8,11,16,0.93);border:1px solid var(--border2);border-radius:var(--r-sm);padding:5px 10px;font-family:var(--mono);font-size:15px;color:var(--text);cursor:pointer;transition:all 0.15s;display:flex;align-items:center;gap:5px;white-space:nowrap;}
.rcbtn:hover{border-color:var(--accent);color:var(--accent);}
.rcbtn.on{border-color:var(--green);color:var(--green);background:rgba(52,211,153,0.08);}
.rcbtn.warn{border-color:var(--orange);color:var(--orange);}
.rcbtn-dot{width:7px;height:7px;border-radius:50%;}

.ltog{background:rgba(8,11,16,0.9);border:1px solid var(--border2);border-radius:3px;padding:2px 7px;font-family:var(--mono);font-size:15px;color:var(--muted);cursor:pointer;display:flex;align-items:center;gap:3px;transition:all 0.15s;}
.ltog.on{border-color:rgba(255,255,255,0.06);color:var(--text);}
.ltog-dot{width:6px;height:6px;border-radius:50%;}

/* MAP STATUS STRIP */
#map-strip{position:absolute;bottom:0;left:0;right:0;z-index:900;background:rgba(8,11,16,0.95);border-top:1px solid var(--border2);padding:6px 12px;display:flex;align-items:center;gap:14px;font-family:var(--mono);font-size:15px;color:var(--text);flex-wrap:nowrap;overflow:hidden;white-space:nowrap;height:36px;box-sizing:border-box;}
.ms{display:flex;align-items:center;gap:3px;white-space:nowrap;flex-shrink:1;min-width:0;overflow:hidden;}
#ms-correct,#ms-dev,#map-strip .ms:last-child,#map-strip .ms[style*="margin-left:auto"]{flex-shrink:0;min-width:auto;overflow:visible;}
.ms-dot{width:8px;height:8px;border-radius:50%;}

/* RIGHT PANEL */
.right-panel{background:#0b0e13;border-left:1px solid rgba(255,255,255,0.08);display:flex;flex-direction:column;min-height:0;overflow:hidden;width:470px;min-width:260px;max-width:700px;flex-shrink:0;transition:width 0.2s ease;}
/* Direction A: right panel uses mono-forward typography */
.right-panel .tp,.right-panel .view-shell{font-family:var(--mono);}


/* THREAT BANNER */
#threat-banner{padding:7px 12px;border-bottom:1px solid rgba(255,255,255,0.06);display:none;flex-shrink:0;}
.tb-inner{display:flex;flex-direction:column;gap:6px;align-items:stretch;}
.tb-top{display:flex;align-items:center;gap:8px;}
.tb-top .tscore{margin-left:auto;flex-shrink:0;}
.tb-summary-wrap{width:100%;}
.tpill{display:flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-weight:600;font-size:15px;font-family:var(--mono);flex-shrink:0;}
.tpill.CRITICAL{background:var(--red-dim);color:var(--red);border:1px solid rgba(248,113,113,0.25);}
.tpill.HIGH{background:var(--orange-dim);color:var(--orange);border:1px solid rgba(251,146,60,0.25);}
.tpill.MODERATE{background:var(--teal-dim);color:var(--teal);border:1px solid rgba(45,212,191,0.25);}
.tpill.LOW{background:var(--green-dim);color:var(--green);border:1px solid rgba(52,211,153,0.25);}
.tpill-dot{width:5px;height:5px;border-radius:50%;background:currentColor;animation:blink 1.5s infinite;}
.tsummary{font-size:16px;color:var(--muted);line-height:1.55;width:100%;}
.tscore{font-family:var(--mono);font-size:22px;font-weight:600;flex-shrink:0;}

/* TABS */
.tabs{display:flex;border-bottom:1px solid rgba(255,255,255,0.07);flex-shrink:0;overflow-x:auto;background:transparent;}
.tabs::-webkit-scrollbar{display:none;}
.tab{padding:6px 9px;font-size:15px;font-weight:500;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:all 0.15s;position:relative;}
.tab.active{color:var(--accent);border-bottom-color:var(--accent);}
.tab .adot{width:4px;height:4px;border-radius:50%;background:var(--red);position:absolute;top:5px;right:4px;display:none;}
.tab.alert .adot{display:block;}
.tab-body{flex:1;overflow-y:auto;padding:10px 13px;min-height:0;font-size:16px;}
.tab-body::-webkit-scrollbar{width:3px;}
.tab-body::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px;}
.tp{display:none;}
.tp.active{display:block;}
.idle{display:flex;flex-direction:column;align-items:center;justify-content:center;height:160px;gap:6px;opacity:0.18;}
.idle-icon{font-size:32px;}
.idle-txt{font-size:15px;color:var(--muted);font-family:var(--mono);letter-spacing:1.5px;}

/* CARDS */
.card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:9px;margin-bottom:5px;}
.card:last-child{margin-bottom:0;}
.chd{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;}
.ctitle{font-size:15px;font-weight:600;font-family:var(--mono);color:var(--accent);}
.cbody{font-size:14px;color:var(--muted);line-height:1.4;}
.slbl{font-size:16px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--text);margin:9px 0 5px;padding-bottom:3px;border-bottom:1px solid var(--border);}
.slbl:first-child{margin-top:0;}

/* BADGES */
.b{font-size:15px;font-family:var(--mono);padding:1px 5px;border-radius:3px;font-weight:600;}
.b.ALERT,.b.HOT,.b.CRITICAL{background:var(--red-dim);color:var(--red);}
.b.ACTIVE,.b.ELEVATED{background:var(--amber-dim);color:var(--amber);}
.b.CLEAR,.b.LOW{background:var(--green-dim);color:var(--green);}
.b.NUISANCE{background:var(--purple-dim);color:var(--purple);}
.b.MODERATE,.b.WARNING{background:var(--teal-dim);color:var(--teal);}
.b.HIGH{background:var(--orange-dim);color:var(--orange);}
.b.TRAUMA{background:var(--crimson-dim);color:var(--crimson);}

/* SOURCE TAGS */
.st{display:inline-block;font-size:15px;font-family:var(--mono);padding:1px 5px;border-radius:3px;border:1px solid rgba(79,156,249,0.2);color:var(--accent);background:var(--accent-dim);margin:1px;}
.st.kela{border-color:rgba(248,113,113,0.2);color:var(--red);background:var(--red-dim);}
.st.socmed{border-color:rgba(251,191,36,0.2);color:var(--amber);background:var(--amber-dim);}
.st.news{border-color:rgba(251,146,60,0.2);color:var(--orange);background:var(--orange-dim);}
.st.osint{border-color:rgba(52,211,153,0.2);color:var(--green);background:var(--green-dim);}
.st.dhs{border-color:rgba(192,132,252,0.2);color:var(--purple);background:var(--purple-dim);}

/* BARS */
.barrow{display:flex;align-items:center;gap:6px;margin-bottom:4px;}
.barlbl{font-size:14px;color:var(--text);min-width:100px;}
.bartrack{flex:1;height:4px;background:var(--border2);border-radius:2px;}
.barfill{height:100%;border-radius:2px;transition:width 0.7s ease;}
.barval{font-size:15px;font-family:var(--mono);color:var(--muted);min-width:18px;text-align:right;}

/* STATS */
.statgrid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;margin-bottom:7px;}
.statbox{background:var(--surface2);border-radius:var(--r-sm);padding:6px;text-align:center;}
.statnum{font-size:18px;font-weight:600;font-family:var(--mono);}
.statlbl{font-size:15px;color:var(--muted);margin-top:1px;}

/* RESPONSE TIME CARDS */
.respcard{border-radius:var(--r-sm);padding:9px;margin-bottom:5px;border:1px solid;}
.respcard.police{background:rgba(79,156,249,0.05);border-color:rgba(79,156,249,0.2);}
.respcard.fire{background:rgba(251,146,60,0.05);border-color:rgba(251,146,60,0.2);}
.respcard.ems{background:rgba(248,113,113,0.05);border-color:rgba(248,113,113,0.2);}
.resp-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px;}
.resp-agency{font-size:14px;font-weight:600;}
.respcard.police .resp-agency{color:var(--accent);}
.respcard.fire .resp-agency{color:var(--orange);}
.respcard.ems .resp-agency{color:var(--red);}
.resp-time{font-size:22px;font-weight:600;font-family:var(--mono);}
.respcard.police .resp-time{color:var(--accent);}
.respcard.fire .resp-time{color:var(--orange);}
.respcard.ems .resp-time{color:var(--red);}
.resp-detail{font-size:14px;color:var(--muted);line-height:1.4;}
.resp-district{font-size:16px;font-family:var(--mono);color:var(--text);margin-top:4px;padding-top:4px;border-top:1px solid var(--border);}

/* TRAUMA CARDS */
.traumacard{border-radius:var(--r-sm);padding:9px;margin-bottom:5px;border:1px solid var(--crimson-dim);background:rgba(255,77,109,0.04);}
.trauma-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;}
.trauma-name{font-size:14px;font-weight:600;color:var(--crimson);}
.trauma-level{font-size:15px;font-family:var(--mono);padding:1px 6px;border-radius:3px;background:var(--crimson-dim);color:var(--crimson);}
.trauma-body{font-size:14px;color:var(--muted);line-height:1.4;margin-bottom:5px;}
.trauma-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;}
.tstat{background:var(--surface2);border-radius:3px;padding:5px;text-align:center;}
.tstat-num{font-size:16px;font-weight:600;font-family:var(--mono);color:var(--crimson);}
.tstat-lbl{font-size:15px;color:var(--muted);margin-top:1px;}

/* SIT CARDS */
.sitcard{border-radius:var(--r-sm);padding:8px;margin-bottom:5px;border:1px solid;}
.sitcard.danger{background:rgba(248,113,113,0.05);border-color:rgba(248,113,113,0.18);}
.sitcard.protest{background:rgba(251,191,36,0.05);border-color:rgba(251,191,36,0.18);}
.sitcard.homeless{background:rgba(45,212,191,0.05);border-color:rgba(45,212,191,0.18);}
.sitcard.nuisance{background:rgba(192,132,252,0.05);border-color:rgba(192,132,252,0.18);}
.sittitle{font-size:14px;font-weight:600;}
.sitcard.danger .sittitle{color:var(--red);}
.sitcard.protest .sittitle{color:var(--teal);}
.sitcard.homeless .sittitle{color:var(--teal);}
.sitcard.nuisance .sittitle{color:var(--purple);}
.sitbody{font-size:15px;color:var(--muted);line-height:1.5;margin-top:3px;}
.sitmeta{font-size:16px;font-family:var(--mono);color:var(--text);margin-top:3px;}

/* ROUTE CARDS */
.routecard{border-radius:var(--r-sm);padding:9px;margin-bottom:6px;border:1px solid;}
.routecard.primary{background:rgba(52,211,153,0.05);border-color:rgba(52,211,153,0.22);}
.routecard.secondary{background:rgba(79,156,249,0.05);border-color:rgba(79,156,249,0.18);}
.routecard.emergency{background:rgba(248,113,113,0.05);border-color:rgba(248,113,113,0.18);}
.routecard.avoid{background:rgba(251,146,60,0.05);border-color:rgba(251,146,60,0.18);}
.rtlbl{font-size:15px;font-weight:600;letter-spacing:1px;text-transform:uppercase;margin-bottom:3px;}
.routecard.primary .rtlbl{color:var(--green);}
.routecard.secondary .rtlbl{color:var(--accent);}
.routecard.emergency .rtlbl{color:var(--red);}
.routecard.avoid .rtlbl{color:var(--orange);}
.rtname{font-size:15px;font-weight:600;color:var(--text);margin-bottom:3px;}
.rtdesc{font-size:14px;color:var(--muted);line-height:1.4;margin-bottom:5px;}
.rtsteps{list-style:none;margin-bottom:5px;}
.rtstep{font-size:15px;color:var(--text);padding:2px 0;display:flex;gap:5px;line-height:1.4;}
.rtstep::before{content:'→';color:var(--muted2);flex-shrink:0;}
.rtwhy{font-size:15px;font-family:var(--mono);color:var(--muted);padding-top:4px;border-top:1px solid var(--border);}
.timingrow{display:flex;gap:3px;flex-wrap:wrap;margin-top:4px;}
.tchip{font-size:15px;font-family:var(--mono);padding:1px 5px;border-radius:3px;background:var(--surface2);color:var(--muted);border:1px solid var(--border);}
.rtbtns{display:flex;gap:4px;margin-top:6px;flex-wrap:wrap;}
.rtbtn{font-size:15px;font-family:var(--mono);padding:2px 8px;border-radius:3px;border:1px solid;background:transparent;cursor:pointer;transition:all 0.15s;}
.rtbtn.show{border-color:var(--accent);color:var(--accent);}
.rtbtn.show:hover{background:var(--accent-dim);}
.rtbtn.refresh{border-color:var(--amber);color:var(--amber);}
.rtbtn.refresh:hover{background:var(--amber-dim);}
.rtbtn.recover{border-color:var(--green);color:var(--green);}
.rtbtn.recover:hover{background:var(--green-dim);}
.rtbtn:disabled{opacity:0.35;cursor:not-allowed;}

/* FEED CARDS */
.feedcard{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:8px;margin-bottom:5px;}
.feedhd{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px;}
.feedname{font-size:15px;font-weight:600;font-family:var(--mono);color:var(--accent);}
.feedbody{font-size:15px;color:var(--muted);line-height:1.4;margin-bottom:5px;}
.feedbar{display:flex;align-items:center;gap:5px;}
.feedtrack{flex:1;height:3px;background:var(--border2);border-radius:2px;}
.feedfill{height:100%;border-radius:2px;}
.feedval{font-size:15px;font-family:var(--mono);color:var(--muted);min-width:18px;text-align:right;}
/* Feed tier badges (v11.2) — LIVE=green, ~AI=amber, ⏳KEY_PENDING=accent.
   These are permanent properties of the feed, distinct from the alert status badge. */
.feed-tier{font-size:12px;font-family:var(--mono);font-weight:700;letter-spacing:.4px;padding:2px 5px;border-radius:3px;margin-left:5px;text-transform:uppercase;vertical-align:middle;}
.ftlive{background:rgba(52,211,153,0.12);color:#34d399;}
.ftai{background:rgba(96,180,212,0.12);color:#60b4d4;}
.ftpend{background:rgba(79,156,249,0.12);color:var(--accent);}
/* 2.1 Blended confidence bar */

/* 2.2 Evidence tier labels */
.ev-badge{font-size:12px;font-family:var(--mono);font-weight:700;letter-spacing:.4px;padding:1px 4px;border-radius:3px;margin:0 2px;text-transform:uppercase;vertical-align:middle;}
.ev-confirmed{background:rgba(52,211,153,0.15);color:#34d399;}
.ev-inferred{background:rgba(96,180,212,0.12);color:#60b4d4;}
.ev-ai{background:rgba(79,156,249,0.12);color:var(--accent);}
/* 2.5 Weather banner */
.wx-banner{background:rgba(79,156,249,0.06);border:1px solid rgba(79,156,249,0.2);border-radius:5px;padding:8px 10px;margin-bottom:10px;}
.wx-head{font-size:12px;font-family:var(--mono);font-weight:700;letter-spacing:.6px;color:var(--accent);margin-bottom:5px;}
.wx-item{font-size:15px;color:var(--text);margin:3px 0;line-height:1.4;}
.wx-sev{font-family:var(--mono);font-size:12px;font-weight:700;margin-right:4px;}
.wx-src{margin-top:5px;}

/* EVIDENCE */
.evcard{border-radius:var(--r-sm);padding:8px;margin-bottom:5px;border:1px solid var(--border);background:var(--bg);border-left:3px solid;}
.evcard.hot{border-left-color:var(--red);}
.evcard.elevated{border-left-color:var(--orange);}
.evcard.moderate{border-left-color:var(--amber);}
.evin{background:var(--surface2);border-radius:3px;padding:6px;margin-bottom:3px;}
.evhd{display:flex;justify-content:space-between;margin-bottom:2px;}
.evtype{font-size:14px;font-weight:600;color:var(--text);}
.evdate{font-size:15px;font-family:var(--mono);color:var(--muted);}
.evdesc{font-size:15px;color:var(--muted);line-height:1.3;}

/* RECOS */
.recorow{display:flex;gap:6px;margin-bottom:6px;align-items:flex-start;}
.recobadge{font-size:15px;font-family:var(--mono);font-weight:600;padding:1px 5px;border-radius:3px;flex-shrink:0;margin-top:1px;}
.recobadge.CRITICAL{background:var(--red-dim);color:var(--red);}
.recobadge.HIGH{background:var(--orange-dim);color:var(--orange);}
.recobadge.MODERATE{background:var(--amber-dim);color:var(--amber);}
.recobadge.LOW{background:var(--green-dim);color:var(--green);}
.recotext{font-size:16px;color:var(--text);line-height:1.4;}

/* LOG */
.cprow{display:flex;gap:6px;align-items:flex-start;padding:5px 0;border-bottom:1px solid var(--border);}
.cprow:last-child{border-bottom:none;}
.cpnum{width:18px;height:18px;border-radius:50%;background:var(--accent-dim);border:1px solid rgba(79,156,249,0.2);display:flex;align-items:center;justify-content:center;font-size:15px;font-family:var(--mono);color:var(--accent);flex-shrink:0;}
.cptext{font-size:14px;color:var(--text);line-height:1.3;}
.cptime{font-size:15px;color:var(--muted);font-family:var(--mono);}
.rbrow{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:7px 0 2px;}
.rbbtn{font-size:15px;font-family:var(--mono);padding:2px 6px;border-radius:3px;border:1px solid var(--border2);background:var(--bg);color:var(--muted);cursor:pointer;transition:all 0.15s;}
.rbbtn:hover{border-color:var(--accent);color:var(--accent);}
.rbbtn.cur{border-color:var(--accent);color:var(--accent);background:var(--accent-dim);}

/* EMERGENCY MODAL */
#emg-modal{display:none;position:fixed;inset:0;z-index:9000;background:rgba(0,0,0,0.85);align-items:center;justify-content:center;}
#emg-modal.open{display:flex;}
.emg-box{background:var(--surface);border:2px solid var(--crimson);border-radius:var(--r);padding:20px;max-width:560px;width:90%;max-height:80vh;overflow-y:auto;}
.emg-box::-webkit-scrollbar{width:3px;}
.emg-box::-webkit-scrollbar-thumb{background:var(--crimson);border-radius:3px;}
.emg-title{font-family:var(--mono);font-size:18px;font-weight:600;color:var(--crimson);margin-bottom:4px;display:flex;align-items:center;gap:8px;}
.emg-sub{font-size:14px;color:var(--muted);margin-bottom:14px;}
.emg-plan{border:1px solid;border-radius:var(--r-sm);padding:10px;margin-bottom:8px;}
.emg-plan.p1{border-color:rgba(248,113,113,0.3);background:rgba(248,113,113,0.04);}
.emg-plan.p2{border-color:rgba(251,146,60,0.3);background:rgba(251,146,60,0.04);}
.emg-plan.p3{border-color:rgba(251,191,36,0.3);background:rgba(251,191,36,0.04);}
.emg-plan-title{font-size:14px;font-weight:600;margin-bottom:5px;}
.emg-plan.p1 .emg-plan-title{color:var(--red);}
.emg-plan.p2 .emg-plan-title{color:var(--orange);}
.emg-plan.p3 .emg-plan-title{color:var(--amber);}
.emg-steps{list-style:none;}
.emg-step{font-size:14px;color:var(--text);padding:3px 0;display:flex;gap:6px;line-height:1.4;border-bottom:1px solid var(--border);}
.emg-step:last-child{border-bottom:none;}
.emg-step-num{font-family:var(--mono);color:var(--crimson);flex-shrink:0;min-width:16px;}
.emg-close{margin-top:12px;width:100%;padding:8px;border-radius:var(--r-sm);border:1px solid var(--border2);background:transparent;color:var(--muted);font-family:var(--sans);font-size:15px;cursor:pointer;transition:all 0.15s;}
.emg-close:hover{border-color:var(--crimson);color:var(--crimson);}
.emg-note{font-size:15px;font-family:var(--mono);color:var(--muted2);padding:8px;border:1px solid var(--border);border-radius:var(--r-sm);margin-bottom:10px;}

/* LEAFLET POPUP */
.leaflet-container{background:#080b10 !important;font-family:var(--sans) !important;}
.leaflet-tile{filter:brightness(0.75) saturate(0.48) hue-rotate(180deg) invert(1);}
/* Satellite/hybrid imagery must NOT be inverted — the dark-street filter above made it look inverted/ugly.
   liSetTileMode toggles .pcs-sat on the map container to switch the filter off for real imagery. */
.leaflet-container.pcs-sat .leaflet-tile{filter:none;}
.leaflet-control-zoom a{background:var(--surface) !important;color:var(--text) !important;border-color:var(--border2) !important;}
.leaflet-popup-content-wrapper{background:var(--surface) !important;color:var(--text) !important;border:1px solid var(--border2) !important;border-radius:var(--r) !important;box-shadow:0 8px 28px rgba(0,0,0,0.7) !important;min-width:230px !important;max-width:290px !important;}
.leaflet-popup-tip{background:var(--surface) !important;}
.leaflet-popup-content{font-family:var(--sans) !important;font-size:15px !important;margin:10px 12px !important;}
.pb{display:inline-block;font-size:15px;font-family:var(--mono);font-weight:600;padding:2px 6px;border-radius:3px;margin-bottom:5px;}
.pb.hot{background:var(--red-dim);color:var(--red);}
.pb.elevated{background:var(--orange-dim);color:var(--orange);}
.pb.moderate{background:var(--amber-dim);color:var(--amber);}
.pb.safe,.pb.primary,.pb.ingress{background:var(--green-dim);color:var(--green);}
.pb.secondary,.pb.egress{background:var(--accent-dim);color:var(--accent);}
.pb.emergency{background:var(--red-dim);color:var(--red);}
.pb.avoid{background:var(--orange-dim);color:var(--orange);}
.pb.nuisance{background:var(--purple-dim);color:var(--purple);}
.pb.homeless{background:var(--teal-dim);color:var(--teal);}
.pb.protest{background:var(--amber-dim);color:var(--amber);}
.pb.trauma{background:var(--crimson-dim);color:var(--crimson);}
.pb.police{background:var(--accent-dim);color:var(--accent);}
.pb.fire{background:var(--orange-dim);color:var(--orange);}
.ptitle{font-size:15px;font-weight:600;color:var(--text);margin-bottom:3px;}
.pdesc{font-size:14px;color:var(--text);line-height:1.4;margin-bottom:5px;}
.pev{background:var(--bg);border-radius:4px;padding:5px;margin-bottom:3px;}
.pevhd{display:flex;justify-content:space-between;margin-bottom:2px;}
.pevtype{font-size:14px;font-weight:600;color:var(--text);}
.pevdate{font-size:15px;font-family:var(--mono);color:var(--muted);}
.pevdesc{font-size:14px;color:var(--muted);line-height:1.3;}
.pfooter{font-size:15px;font-family:var(--mono);color:var(--text);border-top:1px solid var(--border);padding-top:4px;margin-top:5px;}
.paction{display:inline-block;font-size:15px;font-family:var(--mono);padding:2px 7px;border-radius:3px;border:1px solid var(--accent);color:var(--accent);background:var(--accent-dim);cursor:pointer;margin-top:5px;}

.fade-in{animation:fi 0.25s ease forwards;}
@keyframes fi{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}
.refresh-flash{font-size:15px;font-family:var(--mono);color:var(--green);margin-left:6px;}

/* ── MODE TOGGLE ── */
.mode-btn{padding:5px 12px;border-radius:var(--r-sm);border:1px solid;cursor:pointer;font-family:var(--mono);font-size:15px;font-weight:600;transition:all 0.2s;white-space:nowrap;flex-shrink:0;letter-spacing:0.5px;}
.mode-btn.security{border-color:rgba(79,156,249,0.4);background:rgba(79,156,249,0.08);color:var(--accent);}
.mode-btn.entertainment{border-color:rgba(251,191,36,0.4);background:rgba(251,191,36,0.08);color:var(--amber);}
.mode-btn:hover{filter:brightness(1.2);}

/* ── MOTTO STRIP ── */
.motto-strip{font-size:15px;font-family:var(--mono);color:var(--muted2);padding:3px 12px;background:var(--surface2);border-bottom:1px solid var(--border);text-align:center;letter-spacing:0.5px;flex-shrink:0;}

/* ── ENTERTAINMENT CARDS ── */
.ecard{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:9px;margin-bottom:5px;}
.ecard-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;}
.ecard-title{font-size:14px;font-weight:600;color:var(--amber);}
.ecard-body{font-size:14px;color:var(--muted);line-height:1.4;}
.entry-point{border-radius:3px;padding:7px;margin-bottom:4px;border:1px solid;}
.entry-point.primary{background:rgba(52,211,153,0.05);border-color:rgba(52,211,153,0.2);}
.entry-point.secondary{background:rgba(79,156,249,0.05);border-color:rgba(79,156,249,0.15);}
.entry-point.service{background:rgba(106,117,133,0.05);border-color:rgba(106,117,133,0.15);}
.entry-point.emergency{background:rgba(248,113,113,0.05);border-color:rgba(248,113,113,0.2);}
.entry-point.vulnerability{background:rgba(251,146,60,0.05);border-color:rgba(251,146,60,0.2);}
.ep-type{font-size:15px;font-weight:600;letter-spacing:1px;text-transform:uppercase;margin-bottom:2px;}
.entry-point.primary .ep-type{color:var(--green);}
.entry-point.secondary .ep-type{color:var(--accent);}
.entry-point.service .ep-type{color:var(--muted);}
.entry-point.emergency .ep-type{color:var(--red);}
.entry-point.vulnerability .ep-type{color:var(--orange);}
.ep-desc{font-size:14px;color:var(--text);line-height:1.4;}
.ep-meta{font-size:15px;font-family:var(--mono);color:var(--muted2);margin-top:2px;}
.rating-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:3px;font-size:15px;font-weight:600;font-family:var(--mono);}
.rating-badge.A{background:rgba(52,211,153,0.1);color:var(--green);border:1px solid rgba(52,211,153,0.2);}
.rating-badge.B{background:rgba(251,191,36,0.1);color:var(--amber);border:1px solid rgba(251,191,36,0.2);}
.rating-badge.C{background:rgba(251,146,60,0.1);color:var(--orange);border:1px solid rgba(251,146,60,0.2);}
.rating-badge.D,.rating-badge.F{background:rgba(248,113,113,0.1);color:var(--red);border:1px solid rgba(248,113,113,0.2);}
.poi-card{background:var(--surface2);border-radius:3px;padding:6px;margin-bottom:3px;display:flex;align-items:flex-start;gap:7px;}
.poi-icon{font-size:18px;flex-shrink:0;margin-top:1px;}
.poi-body{flex:1;}
.poi-name{font-size:14px;font-weight:600;color:var(--text);}
.poi-detail{font-size:15px;color:var(--muted);margin-top:1px;}
.fire-sys-row{display:flex;align-items:center;gap:8px;padding:4px 0;border-bottom:1px solid var(--border);}
.fire-sys-row:last-child{border-bottom:none;}
.fire-sys-label{font-size:14px;color:var(--text);flex:1;}
.fire-sys-status{font-size:15px;font-family:var(--mono);padding:1px 6px;border-radius:3px;}
.fire-sys-status.yes{background:var(--green-dim);color:var(--green);}
.fire-sys-status.no{background:var(--red-dim);color:var(--red);}
.fire-sys-status.unknown{background:var(--amber-dim);color:var(--amber);}

/* ── FEEDBACK MODAL ── */
#feedback-modal{display:none;position:fixed;inset:0;z-index:9001;background:rgba(0,0,0,0.8);align-items:center;justify-content:center;}
#feedback-modal.open{display:flex;}
.fb-box{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);padding:18px;max-width:500px;width:90%;max-height:80vh;overflow-y:auto;}
.fb-title{font-family:var(--mono);font-size:16px;font-weight:600;color:var(--accent);margin-bottom:4px;}
.fb-sub{font-size:14px;color:var(--muted);margin-bottom:12px;line-height:1.5;}
.fb-textarea{width:100%;background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);color:var(--text);font-family:var(--sans);font-size:15px;padding:9px;outline:none;resize:vertical;min-height:90px;transition:border-color 0.15s;margin-bottom:8px;}
.fb-textarea:focus{border-color:var(--accent);}
.fb-submit{padding:7px 16px;border-radius:var(--r-sm);border:none;cursor:pointer;background:linear-gradient(135deg,#1e3a5f,#2563a8);color:white;font-family:var(--sans);font-size:15px;font-weight:600;transition:all 0.2s;}
.fb-submit:disabled{opacity:0.4;cursor:not-allowed;}
.fb-close{float:right;background:transparent;border:1px solid var(--border2);color:var(--muted);font-size:14px;padding:4px 10px;border-radius:3px;cursor:pointer;font-family:var(--mono);}
.fb-result{margin-top:10px;padding:10px;border-radius:var(--r-sm);border:1px solid;font-size:15px;line-height:1.5;}
.fb-result.exists{border-color:rgba(52,211,153,0.3);background:rgba(52,211,153,0.05);color:var(--green);}
.fb-result.new{border-color:rgba(79,156,249,0.3);background:rgba(79,156,249,0.05);color:var(--accent);}
.fb-result.error{border-color:rgba(248,113,113,0.3);background:rgba(248,113,113,0.05);color:var(--red);}
.fb-log{margin-top:10px;}
.fb-log-item{font-size:15px;font-family:var(--mono);color:var(--muted2);padding:4px 0;border-bottom:1px solid var(--border);}

/* ── CLICKABLE SOURCE TAGS ── */
.st a{color:inherit;text-decoration:none;}
.st a:hover{text-decoration:underline;}
.st.has-link{cursor:pointer;}
.st.has-link:hover{filter:brightness(1.25);}


/* ── SUBJECT PROFILE PANEL ── */
.subject-profile{background:var(--surface2);border-bottom:1px solid var(--border);padding:5px 14px;display:flex;align-items:center;gap:10px;flex-shrink:0;flex-wrap:wrap;}
.sp-label{font-size:15px;font-weight:600;color:var(--muted2);letter-spacing:1px;text-transform:uppercase;white-space:nowrap;}
.sp-chip{display:flex;align-items:center;gap:5px;background:var(--bg);border:1px solid var(--border2);border-radius:20px;padding:3px 10px;font-size:15px;cursor:pointer;transition:all 0.15s;white-space:nowrap;}
.sp-chip.primary{border-color:rgba(79,156,249,0.35);background:var(--accent-dim);color:var(--accent);}
.sp-chip.family{border-color:rgba(52,211,153,0.3);background:var(--green-dim);color:var(--green);}
.sp-chip.child{border-color:rgba(251,191,36,0.3);background:var(--amber-dim);color:var(--amber);}
.sp-chip:hover{filter:brightness(1.15);}
.sp-add{font-size:15px;font-family:var(--mono);padding:3px 8px;border-radius:3px;border:1px dashed var(--border2);background:transparent;color:var(--muted);cursor:pointer;transition:all 0.15s;}
.sp-add:hover{border-color:var(--accent);color:var(--accent);}
.sp-threat-badge{font-size:15px;font-family:var(--mono);padding:2px 6px;border-radius:3px;flex-shrink:0;}
.sp-threat-badge.HIGH{background:var(--orange-dim);color:var(--orange);}
.sp-threat-badge.MODERATE{background:var(--amber-dim);color:var(--amber);}
.sp-threat-badge.LOW{background:var(--green-dim);color:var(--green);}
.sp-threat-badge.CRITICAL{background:var(--red-dim);color:var(--red);}

/* ── PROFILE MODAL ── */
/* v12.83+ (operator): the Manage/Principal-Profiles modal opened BEHIND the assessment (assist-panel is
   z-index 99996). Raise it above every panel so it surfaces on top; enlarge ~30% and allow scroll (field-heavy). */
#profile-modal{display:none;position:fixed;inset:0;z-index:100002;background:rgba(0,0,0,0.8);align-items:center;justify-content:center;}
#profile-modal.open{display:flex;}
.pm-box{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);padding:23px;max-width:600px;width:92%;max-height:88vh;overflow-y:auto;font-size:1.1em;}
.pm-title{font-family:var(--mono);font-size:15px;font-weight:600;color:var(--accent);margin-bottom:10px;}
.pm-field{margin-bottom:8px;}
.pm-label{font-size:15px;color:var(--muted);margin-bottom:3px;}
.pm-input{width:100%;background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);color:var(--text);font-family:var(--sans);font-size:15px;padding:6px 8px;outline:none;}
.pm-input:focus{border-color:var(--accent);}
.pm-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.pm-sel{appearance:none;cursor:pointer;}
.pm-btns{display:flex;gap:8px;margin-top:12px;}
.pm-save{flex:1;padding:7px;border-radius:var(--r-sm);border:none;cursor:pointer;background:linear-gradient(135deg,#1e3a5f,#2563a8);color:white;font-family:var(--sans);font-size:15px;font-weight:600;}
.pm-cancel{padding:7px 14px;border-radius:var(--r-sm);border:1px solid var(--red,#e0554a);background:rgba(224,85,77,0.12);color:var(--red,#e0554a);font-weight:600;font-family:var(--sans);font-size:15px;cursor:pointer;}


/* ── VEHICLE SECURITY + FAMILY THREAT ── */
.family-threat-card{border-radius:var(--r-sm);padding:10px;margin-bottom:6px;border:1px solid rgba(251,191,36,0.2);background:rgba(251,191,36,0.04);}
.ft-title{font-size:15px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--amber);margin-bottom:7px;}
.ft-row{display:flex;align-items:flex-start;justify-content:space-between;padding:4px 0;border-bottom:1px solid var(--border);gap:8px;}
.ft-row:last-child{border-bottom:none;}
.ft-label{font-size:14px;color:var(--muted);flex:1;}
.ft-val{font-size:14px;color:var(--text);font-weight:500;text-align:right;max-width:55%;}
.vehicle-sec-card{border-radius:var(--r-sm);padding:10px;margin-bottom:6px;border:1px solid rgba(248,113,113,0.2);background:rgba(248,113,113,0.04);}
.vs-title{font-size:15px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--red);margin-bottom:7px;}
.vs-risk{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;margin-bottom:8px;}
.vs-risk-item{background:var(--surface2);border-radius:3px;padding:6px;text-align:center;}
.vs-risk-num{font-size:16px;font-weight:600;font-family:var(--mono);}
.vs-risk-lbl{font-size:15px;color:var(--muted);margin-top:1px;}


/* ── RESIZABLE SPLIT ── */
.resize-handle{width:10px;background:rgba(79,156,249,0.10);border-left:1px solid rgba(79,156,249,0.25);border-right:1px solid rgba(79,156,249,0.25);cursor:col-resize;flex-shrink:0;transition:background 0.15s;z-index:500;position:relative;}
.resize-handle:hover,.resize-handle.dragging{background:var(--accent);}
.resize-handle::after{content:'⋮';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#e6ecf4;font-size:16px;line-height:1;font-weight:700;}

/* ── PANEL COLLAPSE ── */
.right-panel.collapsed{width:0 !important;min-width:0 !important;overflow:hidden;border-left:none;}
.right-panel.collapsed + .resize-handle{display:none;}
.collapse-btn{width:22px;height:44px;background:var(--surface2);border:1px solid var(--border2);border-right:none;border-radius:4px 0 0 4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--muted);transition:all 0.15s;position:absolute;left:-23px;top:50%;transform:translateY(-50%);z-index:50;}
.collapse-btn:hover{color:var(--accent);background:var(--surface);}
.right-panel{position:relative;}

/* ── QUERY BAR COLLAPSE ── */
.query-bar-wrap{overflow:hidden;transition:max-height 0.25s ease,opacity 0.2s ease;}
.query-bar-wrap.collapsed{max-height:0 !important;opacity:0;pointer-events:none;}
.qbar-toggle{padding:3px 8px;border-radius:3px;border:1px solid var(--border2);background:transparent;color:var(--muted);font-size:15px;font-family:var(--mono);cursor:pointer;transition:all 0.15s;flex-shrink:0;}
.qbar-toggle:hover{color:var(--accent);border-color:var(--accent);}

/* ── MAP FULLSCREEN ── */
.map-panel.fullscreen{position:fixed !important;inset:0 !important;z-index:8000 !important;width:100vw !important;height:100vh !important;}
.map-panel.fullscreen #map{height:100vh !important;}
.fullscreen-btn{position:absolute;bottom:14px;right:14px;z-index:1000;background:rgba(8,11,16,0.93);border:1px solid var(--border2);border-radius:var(--r-sm);padding:5px 9px;font-family:var(--mono);font-size:15px;color:var(--text);cursor:pointer;transition:all 0.15s;}
.fullscreen-btn:hover{border-color:var(--accent);color:var(--accent);}

/* ── WEATHER STRIP ── */
.weather-strip{display:flex;align-items:center;gap:12px;padding:3px 14px;background:var(--surface2);border-bottom:1px solid var(--border);font-size:15px;font-family:var(--mono);color:var(--muted);flex-shrink:0;overflow:hidden;}
.weather-item{display:flex;align-items:center;gap:4px;white-space:nowrap;}
.weather-val{color:var(--text);}

/* ── DASHBOARD TAB ── */
.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px;}
.dash-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:8px;cursor:pointer;transition:border-color 0.15s;}
.dash-card:hover{border-color:var(--accent);}
.dash-card-label{font-size:16px;color:var(--text);text-transform:uppercase;letter-spacing:.8px;margin-bottom:3px;}
.dash-card-val{font-size:16px;font-weight:600;font-family:var(--mono);}
.dash-card-sub{font-size:16px;color:var(--text);margin-top:2px;line-height:1.3;}
.dash-section{margin-bottom:8px;}
.dash-section-title{font-size:15px;font-weight:600;color:var(--muted2);letter-spacing:1px;text-transform:uppercase;margin-bottom:5px;padding-bottom:3px;border-bottom:1px solid var(--border);}
.dash-alert-row{display:flex;align-items:flex-start;gap:7px;padding:5px 0;border-bottom:1px solid var(--border);}
.dash-alert-row:last-child{border-bottom:none;}
.dash-alert-icon{flex-shrink:0;font-size:16px;margin-top:1px;}
.dash-alert-body{flex:1;}
.dash-alert-title{font-size:14px;font-weight:600;color:var(--text);}
.dash-alert-sub{font-size:15px;color:var(--muted);line-height:1.3;}
.checklist-item{display:flex;align-items:flex-start;gap:7px;padding:4px 0;border-bottom:1px solid var(--border);}
.checklist-item:last-child{border-bottom:none;}
.check-box{width:15px;height:15px;border-radius:3px;border:1px solid var(--border2);background:var(--bg);cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:15px;transition:all 0.15s;margin-top:1px;}
.check-box.done{background:var(--green-dim);border-color:rgba(52,211,153,0.4);color:var(--green);}
.checklist-text{font-size:14px;color:var(--text);line-height:1.4;}
.checklist-text.done{text-decoration:line-through;color:var(--muted2);}

/* ── PRINT STYLES ── */
@media print{
  body{background:white !important;color:#111 !important;}
  .topbar,.resize-handle,.route-ctrl,.map-strip,.collapse-btn,.fullscreen-btn,.weather-strip,.subject-profile,.motto-strip,.emergency-btn,.mode-btn,.qbar-toggle{display:none !important;}
  .workspace{grid-template-columns:1fr !important;}
  .right-panel{width:100% !important;border:none !important;}
  .map-panel{height:280px !important;}
  #map{height:280px !important;}
  .tab-body{overflow:visible !important;max-height:none !important;}
  .tp{display:block !important;}
  .card,.feedcard,.evcard,.routecard,.traumacard,.sitcard,.respcard{break-inside:avoid;border:1px solid #ccc !important;background:white !important;}
  :root{--bg:white;--surface:white;--surface2:#f5f5f5;--text:#111;--muted:#555;--border:rgba(0,0,0,0.15);--border2:rgba(0,0,0,0.2);}
}

/* ── KEYBOARD SHORTCUT HINT ── */
.kb-hint{font-size:15px;font-family:var(--mono);color:var(--muted2);padding:2px 5px;border-radius:3px;border:1px solid var(--border);background:var(--bg);white-space:nowrap;}

/* ── SESSION EXPORT ── */
.export-btn{padding:4px 10px;border-radius:3px;border:1px solid var(--border2);background:transparent;color:var(--muted);font-size:15px;font-family:var(--mono);cursor:pointer;transition:all 0.15s;}
.export-btn:hover{border-color:var(--green);color:var(--green);}

/* ── TAB DATA INDICATORS ── */
/* ── QUERY MODAL INPUTS ── */
.qm-input{width:100%;background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);color:var(--text);font-family:var(--sans);font-size:15px;padding:7px 9px;outline:none;transition:border-color 0.15s;}
.qm-input:focus{border-color:var(--accent);}
.qm-mode-chip{transition:all 0.2s;}
#query-modal{overflow-y:auto;}


/* ── PHASE 1+5: ACCURACY & INTEGRITY LAYER ── */

@keyframes pulse-border{0%,100%{box-shadow:none}50%{box-shadow:0 0 6px rgba(248,113,113,0.4)}}
.high-risk-field{border:1px solid rgba(248,113,113,0.4) !important;background:rgba(248,113,113,0.03) !important;}
.high-risk-label{font-size:14px;font-family:var(--mono);color:var(--red);margin-top:3px;display:flex;align-items:center;gap:4px;}
/* v12.27: advisory collapses to a pill; full text lives in a hover bubble (interactive —
   the flagged-items link is clickable; leaving pill+bubble closes it) */
.accuracy-banner{position:relative;display:block;flex-shrink:0;}
.ab-trigger{display:inline-flex;align-items:center;background:rgba(251,191,36,0.08);border:1px solid rgba(251,191,36,0.25);border-radius:var(--r-sm);padding:4px 12px;font-size:14px;color:var(--amber);cursor:default;}
.accuracy-banner-icon{font-size:16px;margin-right:6px;}
/* v12.30: card spans the banner row (panel width minus margins) so it can never clip on the
   panel's overflow:hidden at any drag width. Hover scoped to the pill + the card itself. */
.ab-pop{display:none;position:absolute;top:100%;left:0;right:0;z-index:9500;padding-top:6px;}
.ab-trigger:hover + .ab-pop,.ab-pop:hover{display:block;}
.ab-card{background:#0f1218;border:1px solid rgba(251,191,36,0.45);border-radius:var(--r-sm);box-shadow:0 10px 30px rgba(0,0,0,.55);overflow:hidden;}
.ab-card-head{display:flex;align-items:center;gap:7px;background:rgba(251,191,36,0.10);border-bottom:1px solid rgba(251,191,36,0.30);padding:8px 14px;font-family:var(--mono);font-size:14px;font-weight:700;letter-spacing:.6px;color:var(--amber);}
.ab-pop .accuracy-banner-text{display:block;padding:12px 14px;font-size:15px;color:#ffffff;line-height:1.55;}
.self-audit-panel{background:rgba(79,156,249,0.05);border:1px solid rgba(79,156,249,0.2);border-radius:var(--r-sm);padding:8px 10px;margin-bottom:7px;}
.self-audit-title{font-size:14px;font-weight:600;color:var(--accent);font-family:var(--mono);margin-bottom:5px;display:flex;align-items:center;gap:6px;}
.self-audit-item{font-size:15px;color:var(--text);line-height:1.4;padding:3px 0;border-bottom:1px solid var(--border);display:flex;gap:7px;}
.self-audit-item:last-child{border-bottom:none;}
.sa-ok{color:var(--green);}
.sa-warn{color:var(--amber);}
.sa-flag{color:var(--red);}

/* ── PHASE 2: INACCURACY + ESCALATION ── */
.flag-btn{font-size:12px;font-family:var(--mono);padding:2px 7px;border-radius:3px;border:1px solid var(--border2);background:transparent;color:var(--muted);cursor:pointer;transition:all 0.15s;margin-left:auto;}
.flag-btn:hover{border-color:var(--orange);color:var(--orange);background:var(--orange-dim);}
.escalation-modal{display:none;position:fixed;inset:0;z-index:9010;background:rgba(0,0,0,0.88);align-items:center;justify-content:center;}
.escalation-modal.open{display:flex;}
.esc-box{background:var(--surface);border:2px solid var(--orange);border-radius:var(--r);padding:20px;max-width:540px;width:90%;max-height:85vh;overflow-y:auto;}
.esc-title{font-family:var(--mono);font-size:16px;font-weight:600;color:var(--orange);margin-bottom:4px;}
.esc-sub{font-size:15px;color:var(--muted);margin-bottom:12px;line-height:1.5;}
.esc-disputed{background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);padding:8px;margin-bottom:10px;font-size:15px;color:var(--text);font-family:var(--mono);}
.esc-research{background:var(--accent-dim);border:1px solid rgba(79,156,249,0.2);border-radius:var(--r-sm);padding:8px;margin-bottom:10px;font-size:15px;color:var(--text);line-height:1.5;}
.esc-research-title{font-size:14px;font-weight:600;color:var(--accent);font-family:var(--mono);margin-bottom:4px;display:flex;align-items:center;gap:5px;}
.queue-status{background:rgba(52,211,153,0.08);border:1px solid rgba(52,211,153,0.25);border-radius:var(--r-sm);padding:10px;margin-top:8px;}
.queue-ref{font-size:18px;font-weight:600;font-family:var(--mono);color:var(--green);}
.queue-detail{font-size:15px;color:var(--muted);margin-top:3px;line-height:1.4;}
.esc-textarea{width:100%;background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);color:var(--text);font-family:var(--sans);font-size:15px;padding:8px;outline:none;resize:vertical;min-height:70px;margin-bottom:8px;transition:border-color 0.15s;}
.esc-textarea:focus{border-color:var(--orange);}
.esc-submit{padding:8px 16px;border-radius:var(--r-sm);border:none;cursor:pointer;background:linear-gradient(135deg,#7c2a10,#c04a20);color:white;font-family:var(--sans);font-size:15px;font-weight:600;}
.esc-close{float:right;background:transparent;border:1px solid var(--border2);color:var(--muted);font-size:14px;padding:3px 9px;border-radius:3px;cursor:pointer;font-family:var(--mono);}

/* ── PHASE 4: EVIDENCE CONFIRMATION ── */
.thumb-row{display:flex;align-items:center;gap:6px;margin-top:7px;padding-top:6px;border-top:1px solid var(--border);}
.thumb-btn{font-size:16px;padding:3px 8px;border-radius:3px;border:1px solid var(--border2);background:transparent;cursor:pointer;transition:all 0.15s;line-height:1;}
.thumb-btn:hover{border-color:var(--accent);}
.thumb-btn.up.active{background:var(--green-dim);border-color:var(--green);}
.thumb-btn.down.active{background:var(--red-dim);border-color:var(--red);}
.thumb-label{font-size:14px;color:var(--muted);font-family:var(--mono);flex:1;}
.usefulness-toast{position:fixed;bottom:20px;right:20px;z-index:8500;background:var(--surface);border:1px solid var(--accent);border-radius:var(--r);padding:14px 16px;max-width:300px;box-shadow:0 8px 28px rgba(0,0,0,0.5);animation:slideUp 0.3s ease;}
@keyframes slideUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.usefulness-title{font-size:16px;font-weight:600;color:var(--text);margin-bottom:8px;}
.usefulness-btn{display:block;width:100%;padding:7px;border-radius:var(--r-sm);border:1px solid var(--border2);background:var(--bg);color:var(--text);font-size:15px;cursor:pointer;margin-bottom:5px;text-align:left;transition:all 0.15s;}
.usefulness-btn:hover{border-color:var(--accent);background:var(--accent-dim);}
.usefulness-dismiss{font-size:12px;font-family:var(--mono);color:var(--muted2);cursor:pointer;text-align:center;margin-top:4px;display:block;}


/* ══════════════════════════════════════════════════
   PHASE 3 — CONSUMER SAFETY MODE
   Warm, approachable, plain-English interface
   ══════════════════════════════════════════════════ */



/* Consumer header */






.cs-exit-btn:hover{border-color:var(--accent);color:var(--accent);}

/* Consumer query form */





.cs-field.full{grid-column:1/-1;}


.cs-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-dim);}


.cs-chip.active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent);font-weight:600;}


.cs-run-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(37,99,200,0.4);}
.cs-run-btn:disabled{opacity:0.5;cursor:not-allowed;transform:none;}

/* Consumer results */


.cs-traffic-light.GREEN{background:rgba(52,211,153,0.08);border-color:rgba(52,211,153,0.3);}
.cs-traffic-light.YELLOW{background:rgba(251,191,36,0.08);border-color:rgba(251,191,36,0.3);}
.cs-traffic-light.RED{background:rgba(248,113,113,0.08);border-color:rgba(248,113,113,0.3);}

.cs-traffic-light.GREEN 
.cs-traffic-light.YELLOW 
.cs-traffic-light.RED 

.cs-traffic-light.GREEN 
.cs-traffic-light.YELLOW 
.cs-traffic-light.RED 


/* Consumer cards */



.cs-bullet:last-child{border-bottom:none;}







.cs-something-wrong:hover{border-color:var(--orange);}




/* ══════════════════════════════════════════════════════
   ADA / WCAG 2.1 AA COMPLIANCE LAYER
   ══════════════════════════════════════════════════════ */

/* Skip navigation */
.skip-nav{position:absolute;top:-100px;left:0;background:var(--accent);color:white;
  padding:10px 16px;border-radius:0 0 6px 0;font-size:18px;font-weight:600;
  text-decoration:none;z-index:99999;transition:top 0.15s;}
.skip-nav:focus{top:0;}

/* Visible focus rings — WCAG 2.4.7 */
*:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px;}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:2px solid var(--accent);outline-offset:2px;}

/* Fix --muted contrast: #6a7585 → #8b96a8 (4.6:1 on dark bg) */
:root{--muted:#ffffff;--muted2:#e6ecf4;--amber:#fb923c;--amber-dim:rgba(251,146,60,0.1);}

/* Minimum touch targets 44x44px — WCAG 2.5.5 */
button,a,[role="button"]{min-height:36px;min-width:36px;}
.topbar button{min-height:34px;}

/* High-contrast mode */
.high-contrast{--bg:#000;--surface:#111;--surface2:#1a1a1a;--text:#fff;
  --muted:#ddd;--border:rgba(255,255,255,0.4);--border2:rgba(255,255,255,0.5);}
.high-contrast *{letter-spacing:0.01em;}

/* Font size preferences */
.font-sm{font-size:16px !important;}
.font-md{font-size:19px !important;}
.font-lg{font-size:21px !important;}
.font-xl{font-size:24px !important;}
.font-lg .tab-select,.font-xl .font-lg .cs-input,.font-xl 

/* Voice button */
.voice-btn{background:transparent;border:1px solid var(--border2);border-radius:50%;
  width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:19px;transition:all 0.15s;flex-shrink:0;
  color:var(--muted);margin-left:4px;}
.voice-btn:hover{border-color:var(--accent);color:var(--accent);}
.voice-btn.listening{border-color:var(--red);color:var(--red);
  animation:pulse-ring 1.2s ease infinite;background:var(--red-dim);}
@keyframes pulse-ring{0%,100%{box-shadow:0 0 0 0 rgba(248,113,113,0)}
  50%{box-shadow:0 0 0 6px rgba(248,113,113,0.15)}}

/* Accessibility settings panel */
.a11y-panel{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);
  padding:16px;max-width:420px;width:90%;}
.a11y-section{margin-bottom:14px;}
.a11y-section-title{font-size:15px;font-weight:700;color:var(--muted);text-transform:uppercase;
  letter-spacing:1px;margin-bottom:8px;padding-bottom:5px;border-bottom:1px solid var(--border);}
.a11y-row{display:flex;align-items:center;justify-content:space-between;padding:6px 0;
  border-bottom:1px solid var(--border);font-size:16px;}
.a11y-row:last-child{border-bottom:none;}
.a11y-toggle{width:40px;height:22px;border-radius:11px;border:2px solid var(--border2);
  background:var(--bg);cursor:pointer;position:relative;transition:all 0.2s;flex-shrink:0;}
.a11y-toggle.on{background:var(--accent);border-color:var(--accent);}
.a11y-toggle::after{content:'';position:absolute;width:14px;height:14px;border-radius:50%;
  background:white;top:2px;left:2px;transition:transform 0.2s;}
.a11y-toggle.on::after{transform:translateX(18px);}
.font-size-row{display:flex;gap:6px;flex-wrap:wrap;}
.font-size-btn{padding:5px 11px;border-radius:3px;border:1px solid var(--border2);
  background:var(--bg);color:var(--text);font-size:15px;cursor:pointer;transition:all 0.15s;}
.font-size-btn.active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent);}
.disability-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px;}
.disability-chip{padding:5px 10px;border-radius:20px;border:1px solid var(--border2);
  background:var(--bg);color:var(--muted);font-size:15px;cursor:pointer;transition:all 0.15s;}
.disability-chip.active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent);}

/* ══════════════════════════════════════════════════════
   CONSUMER MODE WARMTH — Phase 3 redesign
   Soft gradients, friendly language, emotional colors
   ══════════════════════════════════════════════════════ */





.cs-chip:hover{border-color:var(--accent);background:rgba(79,156,249,0.08);}
.cs-chip.active{border-color:#818cf8;background:rgba(129,140,248,0.12);color:#a5b4fc;font-weight:700;}

.cs-run-btn:hover{background:linear-gradient(135deg,#2563eb,#7c3aed);
  box-shadow:0 6px 24px rgba(99,102,241,0.5);}
.cs-traffic-light.GREEN{background:linear-gradient(135deg,rgba(16,185,129,0.08),rgba(52,211,153,0.05));
  border-color:rgba(52,211,153,0.35);}
.cs-traffic-light.YELLOW{background:linear-gradient(135deg,rgba(245,158,11,0.08),rgba(251,191,36,0.05));
  border-color:rgba(251,191,36,0.35);}
.cs-traffic-light.RED{background:linear-gradient(135deg,rgba(239,68,68,0.08),rgba(248,113,113,0.05));
  border-color:rgba(248,113,113,0.35);}








/* Legal modal */
#legal-modal{display:none;position:fixed;inset:0;z-index:9050;
  background:rgba(0,0,0,0.9);align-items:flex-start;justify-content:center;
  padding:30px 16px;overflow-y:auto;}
#legal-modal.open{display:flex;}
.legal-box{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);
  padding:28px;max-width:720px;width:100%;margin-bottom:30px;}
.legal-title{font-size:25px;font-weight:800;color:var(--text);margin-bottom:4px;}
.legal-subtitle{font-size:16px;color:var(--muted);margin-bottom:20px;}
.legal-section{margin-bottom:20px;}
.legal-section-title{font-size:18px;font-weight:700;color:var(--accent);margin-bottom:8px;
  padding-bottom:5px;border-bottom:1px solid var(--border);}
.legal-body{font-size:16px;color:var(--muted);line-height:1.7;}
.legal-body strong{color:var(--text);}
.legal-close{float:right;background:transparent;border:1px solid var(--border2);
  color:var(--muted);font-size:15px;padding:5px 12px;border-radius:3px;cursor:pointer;}


/* ══════════════════════════════════════════════════
   ADA / WCAG 2.1 Level AA Compliance
   ══════════════════════════════════════════════════ */

/* Skip to main content (screen readers) */
.skip-link{position:absolute;top:-50px;left:0;background:var(--accent);color:white;
  padding:8px 14px;border-radius:0 0 6px 0;font-size:18px;font-weight:600;z-index:99999;
  text-decoration:none;transition:top 0.2s;}
.skip-link:focus{top:0;}

/* Focus visible — strong outline for keyboard nav */
*:focus-visible{outline:2px solid var(--accent) !important;outline-offset:2px !important;}
button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{
  outline:2px solid var(--accent) !important;outline-offset:2px !important;}

/* Minimum touch target 44×44px (WCAG 2.5.5) */
button,a,[role="button"],[role="link"]{min-height:44px;min-width:44px;
  display:inline-flex;align-items:center;justify-content:center;}
/* Exemptions for very small inline elements — use padding instead */
.flag-btn,.thumb-btn,.stag{min-height:32px;min-width:32px;}

/* High contrast mode (prefers-contrast: more) */
@media (prefers-contrast: more){
  :root{--text:#ffffff;--muted:#cccccc;--border:rgba(255,255,255,0.5);
    --border2:rgba(255,255,255,0.7);--bg:#000000;--surface:#111111;--surface2:#1a1a1a;}

}

/* Reduced motion (prefers-reduced-motion) */
@media (prefers-reduced-motion: reduce){
  *{animation-duration:0.01ms !important;animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;}
  .fade-in{animation:none;}
  .usefulness-toast{animation:none;}
}

/* Consumer warm theme */


/* Warm consumer overrides */
































/* Voice input button */
.voice-btn{width:44px;height:44px;border-radius:50%;border:1px solid var(--border2);
  background:transparent;cursor:pointer;font-size:22px;transition:all 0.2s;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;}
.voice-btn:hover{border-color:var(--accent);background:var(--accent-dim);}
.voice-btn.listening{border-color:var(--red);background:var(--red-dim);
  animation:pulse-border 1s infinite;}



/* ADA profile panel */
.ada-panel{display:none;position:fixed;inset:0;z-index:9025;background:rgba(0,0,0,0.85);
  align-items:center;justify-content:center;}
.ada-panel.open{display:flex;}
.ada-box{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);
  padding:22px;max-width:520px;width:90%;max-height:85vh;overflow-y:auto;}
.ada-title{font-size:20px;font-weight:700;color:var(--accent);margin-bottom:4px;}
.ada-sub{font-size:16px;color:var(--muted);margin-bottom:16px;line-height:1.5;}
.ada-section{margin-bottom:14px;}
.ada-section-title{font-size:15px;font-weight:600;color:var(--muted2);text-transform:uppercase;
  letter-spacing:1px;margin-bottom:7px;padding-bottom:4px;border-bottom:1px solid var(--border);}
.ada-chip-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;}
.ada-chip{padding:9px 12px;border-radius:var(--r-sm);border:1px solid var(--border2);
  background:var(--bg);cursor:pointer;transition:all 0.15s;text-align:left;min-height:44px;}
.ada-chip:hover{border-color:var(--accent);}
.ada-chip.active{border-color:var(--accent);background:var(--accent-dim);}
.ada-chip-icon{font-size:22px;display:block;margin-bottom:3px;}
.ada-chip-label{font-size:16px;color:var(--text);font-weight:600;}
.ada-chip-sub{font-size:14px;color:var(--muted);margin-top:1px;}
.ada-save{width:100%;padding:10px;border-radius:var(--r-sm);border:none;cursor:pointer;
  background:linear-gradient(135deg,#1e3a5f,#2563a8);color:white;font-size:18px;font-weight:600;
  margin-top:4px;min-height:44px;}

/* Legal/about modal */
.legal-modal{display:none;position:fixed;inset:0;z-index:9030;background:rgba(0,0,0,0.9);
  align-items:flex-start;justify-content:center;padding:30px 16px;overflow-y:auto;}
.legal-modal.open{display:flex;}
.legal-box{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);
  padding:24px;max-width:680px;width:100%;margin-bottom:30px;}
.legal-h1{font-size:22px;font-weight:700;color:var(--text);margin-bottom:4px;}
.legal-h2{font-size:19px;font-weight:700;color:var(--accent);margin-top:18px;margin-bottom:6px;
  padding-bottom:4px;border-bottom:1px solid var(--border);}
.legal-h3{font-size:16px;font-weight:600;color:var(--text);margin-top:10px;margin-bottom:4px;}
.legal-body{font-size:16px;color:var(--muted);line-height:1.7;}
.legal-body p{margin-bottom:8px;}
.legal-body ul{padding-left:18px;margin-bottom:8px;}
.legal-body li{margin-bottom:4px;}
.legal-important{background:rgba(248,113,113,0.06);border:1px solid rgba(248,113,113,0.2);
  border-radius:var(--r-sm);padding:10px 12px;margin:8px 0;font-size:16px;color:var(--text);}
.legal-note{background:var(--accent-dim);border:1px solid rgba(79,156,249,0.2);
  border-radius:var(--r-sm);padding:10px 12px;margin:8px 0;font-size:16px;color:var(--text);}


/* ══ ADA / WCAG 2.1 Level AA ══ */
.skip-link{position:absolute;top:-50px;left:0;background:var(--accent);color:white;padding:8px 14px;border-radius:0 0 6px 0;font-size:18px;font-weight:600;z-index:99999;text-decoration:none;transition:top 0.2s;}
.skip-link:focus{top:0;}
*:focus-visible{outline:2px solid var(--accent) !important;outline-offset:2px !important;}
button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent) !important;outline-offset:2px !important;}
button,a,[role="button"],[role="link"]{min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;}
.flag-btn,.thumb-btn{min-height:32px;min-width:32px;}
@media (prefers-contrast: more){:root{--text:#ffffff;--muted:#cccccc;--border:rgba(255,255,255,0.5);--border2:rgba(255,255,255,0.7);--bg:#000000;--surface:#111111;--surface2:#1a1a1a;}}
@media (prefers-reduced-motion: reduce){*{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;}.fade-in{animation:none;}.usefulness-toast{animation:none;}}

/* ── WARM CONSUMER THEME ── */

































/* ── DYSLEXIA FONT ── */
body.ada-dyslexia{font-family:'OpenDyslexic','Comic Sans MS',sans-serif !important;letter-spacing:0.05em;word-spacing:0.12em;line-height:1.8 !important;}
body.ada-dyslexia *{font-family:inherit !important;}

/* ── VOICE BUTTON ── */
.voice-btn{width:44px;height:44px;border-radius:50%;border:1px solid var(--border2);background:transparent;cursor:pointer;font-size:22px;transition:all 0.2s;flex-shrink:0;display:flex;align-items:center;justify-content:center;}
.voice-btn:hover{border-color:var(--accent);background:var(--accent-dim);}
.voice-btn.listening{border-color:var(--red);background:var(--red-dim);animation:pulse-border 1s infinite;}



/* ── ADA PANEL ── */
.ada-panel{display:none;position:fixed;inset:0;z-index:9025;background:rgba(0,0,0,0.85);align-items:center;justify-content:center;}
.ada-panel.open{display:flex;}
.ada-box{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);padding:22px;max-width:600px;width:90%;max-height:88vh;overflow-y:auto;}
.ada-title{font-size:20px;font-weight:700;color:var(--accent);margin-bottom:4px;}
.ada-sub{font-size:16px;color:var(--muted);margin-bottom:14px;line-height:1.6;}
.ada-section{margin-bottom:14px;}
.ada-section-title{font-size:15px;font-weight:600;color:var(--muted2);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--border);}
.ada-chip-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;}
.ada-chip{padding:9px 12px;border-radius:var(--r-sm);border:1px solid var(--border2);background:var(--bg);cursor:pointer;transition:all 0.15s;text-align:left;min-height:56px;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;}
.ada-chip:hover{border-color:var(--accent);}
.ada-chip.active{border-color:var(--accent);background:var(--accent-dim);}
.ada-chip-icon{font-size:22px;margin-bottom:2px;}
.ada-chip-label{font-size:15px;color:var(--text);font-weight:600;line-height:1.2;}
.ada-chip-sub{font-size:14px;color:var(--muted);margin-top:1px;line-height:1.3;}
.ada-save{width:100%;padding:11px;border-radius:var(--r-sm);border:none;cursor:pointer;background:linear-gradient(135deg,#1e3a5f,#2563a8);color:white;font-size:18px;font-weight:600;margin-top:4px;min-height:44px;}
.ada-preview{background:var(--accent-dim);border:1px solid rgba(79,156,249,0.25);border-radius:var(--r-sm);padding:9px 12px;margin-bottom:12px;font-size:15px;color:var(--text);line-height:1.6;display:none;}

/* ── LEGAL MODAL ── */
.legal-modal{display:none;position:fixed;inset:0;z-index:9030;background:rgba(0,0,0,0.9);align-items:flex-start;justify-content:center;padding:30px 16px;overflow-y:auto;}
.legal-modal.open{display:flex;}
.legal-box{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);padding:24px;max-width:680px;width:100%;margin-bottom:30px;}
.legal-h1{font-size:22px;font-weight:700;color:var(--text);margin-bottom:4px;}
.legal-h2{font-size:19px;font-weight:700;color:var(--accent);margin-top:18px;margin-bottom:6px;padding-bottom:4px;border-bottom:1px solid var(--border);}
.legal-h3{font-size:16px;font-weight:600;color:var(--text);margin-top:10px;margin-bottom:4px;}
.legal-body{font-size:16px;color:var(--muted);line-height:1.7;}
.legal-body p{margin-bottom:8px;}.legal-body ul{padding-left:18px;margin-bottom:8px;}.legal-body li{margin-bottom:4px;}
.legal-important{background:rgba(248,113,113,0.06);border:1px solid rgba(248,113,113,0.2);border-radius:var(--r-sm);padding:10px 12px;margin:8px 0;font-size:16px;color:var(--text);}
.legal-note{background:var(--accent-dim);border:1px solid rgba(79,156,249,0.2);border-radius:var(--r-sm);padding:10px 12px;margin:8px 0;font-size:16px;color:var(--text);}


/* ══ CUSTOM TAB DROPDOWN ══ */
.tabs{display:flex;align-items:center;gap:0;border-bottom:1px solid var(--border2);
  flex-shrink:0;background:var(--surface);padding:0;}
.tab-select-wrap{flex:1;position:relative;min-width:0;}
.tab-select{background:var(--surface2);border:1px solid rgba(79,156,249,0.4);border-radius:5px;color:var(--text);font-family:var(--mono);font-size:14px;font-weight:600;padding:5px 28px 5px 10px;cursor:pointer;width:100%;appearance:none;-webkit-appearance:none;transition:border-color 0.15s;}
.tab-select:hover{border-color:var(--accent);}
.tab-select:focus{border-color:var(--accent);outline:none;}
.tab-select:hover{background:var(--bg);}
.tab-select:focus{background:var(--bg);box-shadow:inset 0 -2px 0 var(--accent);}
.tab-select option{background:var(--surface2);color:var(--text);font-size:16px;padding:8px;}
.tab-select-arrow{
  position:absolute;right:12px;top:50%;transform:translateY(-50%);
  pointer-events:none;color:var(--accent);font-size:15px;font-weight:700;
  font-family:var(--mono);}
.tab-alert-dot{
  width:9px;height:9px;border-radius:50%;background:var(--red);
  flex-shrink:0;display:none;margin:0 10px;animation:blink 1.5s infinite;
}
.tab-alert-dot.show{display:block;}


/* ══ LIVE INCIDENT ALERT SYSTEM ══ */
.incident-banner{
  display:none;flex-shrink:0;
  background:rgba(248,113,113,0.08);
  border-bottom:2px solid rgba(248,113,113,0.4);
  padding:8px 14px;
  animation:pulse-border 2s infinite;
}
.incident-banner.show{display:flex;align-items:flex-start;gap:10px;}
.incident-banner.YELLOW{
  background:rgba(251,191,36,0.08);
  border-bottom-color:rgba(251,191,36,0.4);
}
.incident-banner.GREEN{
  background:rgba(52,211,153,0.06);
  border-bottom-color:rgba(52,211,153,0.3);
  animation:none;
}
.incident-icon{font-size:22px;flex-shrink:0;margin-top:1px;}
.incident-body{flex:1;min-width:0;}
.incident-headline{font-size:16px;font-weight:700;color:var(--text);margin-bottom:2px;}
.incident-sub{font-size:15px;color:var(--muted);line-height:1.4;}
.incident-time{font-size:14px;font-family:var(--mono);color:var(--muted2);margin-top:3px;}
.incident-source{font-size:14px;font-family:var(--mono);}
.incident-source a{color:var(--accent);text-decoration:none;}
.incident-source a:hover{text-decoration:underline;}
.incident-refresh{
  padding:4px 10px;border-radius:3px;border:1px solid var(--border2);
  background:transparent;color:var(--muted);font-size:14px;
  font-family:var(--mono);cursor:pointer;flex-shrink:0;min-height:32px;
  transition:all 0.15s;
}
.incident-refresh:hover{border-color:var(--red);color:var(--red);}
.incident-refresh.spinning{animation:spin 1s linear infinite;}
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}

/* Consumer caution card */

.cs-caution-card.YELLOW{
  border-color:rgba(251,191,36,0.35);
  background:rgba(251,191,36,0.06);
}
.cs-caution-card.GREEN{
  border-color:rgba(52,211,153,0.3);
  background:rgba(52,211,153,0.05);
}


.cs-caution-card.show{display:flex;}




/* ══════════════════════════════════════════════════
   ADVANCED TRAVEL FEED — ATF
   Executive / Sentinel only
   ══════════════════════════════════════════════════ */

/* ── ATF MODAL ── */
#atf-modal{display:none;position:fixed;inset:0;z-index:9040;background:rgba(0,0,0,0.88);
  align-items:flex-start;justify-content:center;padding:24px 16px;overflow-y:auto;}
#atf-modal.open{display:flex;}
.atf-box{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);
  padding:22px;max-width:740px;width:100%;margin-bottom:24px;}
.atf-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;}
.atf-title{font-family:var(--mono);font-size:19px;font-weight:700;color:var(--accent);}
.atf-sub{font-size:15px;color:var(--muted);margin-top:3px;line-height:1.5;}

/* ── STOP CARDS ── */
.atf-stops{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;}
.atf-stop-card{background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);
  padding:12px 14px;position:relative;transition:border-color 0.15s;}
.atf-stop-card:hover{border-color:var(--border2);}
.atf-stop-card.active-stop{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-dim);}
.atf-stop-card.threat-HIGH{border-left:3px solid var(--orange);}
.atf-stop-card.threat-CRITICAL{border-left:3px solid var(--red);}
.atf-stop-card.threat-LOW{border-left:3px solid var(--green);}
.atf-stop-card.threat-MODERATE{border-left:3px solid var(--amber);}
.atf-stop-num{position:absolute;top:10px;left:-12px;width:22px;height:22px;border-radius:50%;
  background:var(--accent);color:white;font-family:var(--mono);font-size:14px;font-weight:700;
  display:flex;align-items:center;justify-content:center;border:2px solid var(--bg);}
.atf-stop-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.atf-stop-row.full{grid-template-columns:1fr;}
.atf-input{width:100%;background:var(--surface2);border:1px solid var(--border2);
  border-radius:var(--r-sm);color:var(--text);font-family:var(--sans);font-size:15px;
  padding:7px 9px;outline:none;transition:border-color 0.15s;}
.atf-input:focus{border-color:var(--accent);}
.atf-label{font-size:14px;color:var(--muted2);margin-bottom:3px;display:block;
  font-family:var(--mono);letter-spacing:.3px;}
.atf-stop-del{position:absolute;top:10px;right:10px;background:transparent;border:1px solid var(--border2);
  color:var(--muted);font-size:14px;padding:2px 8px;border-radius:3px;cursor:pointer;
  transition:all 0.15s;min-height:28px;}
.atf-stop-del:hover{border-color:var(--red);color:var(--red);}
.atf-stop-threat{display:flex;align-items:center;gap:6px;margin-top:8px;padding-top:7px;
  border-top:1px solid var(--border);}
.atf-threat-badge{font-size:12px;font-family:var(--mono);padding:2px 8px;border-radius:3px;font-weight:600;}

/* ── TRIP CONTROLS ── */
.atf-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px;}
.atf-add-btn{padding:8px 14px;border-radius:var(--r-sm);border:1px dashed var(--accent);
  background:var(--accent-dim);color:var(--accent);font-family:var(--mono);font-size:15px;
  cursor:pointer;transition:all 0.15s;min-height:36px;}
.atf-add-btn:hover{background:rgba(79,156,249,0.15);}
.atf-run-btn{padding:8px 18px;border-radius:var(--r-sm);border:none;cursor:pointer;
  background:linear-gradient(135deg,#1e3a5f,#2563a8);color:white;font-family:var(--sans);
  font-size:16px;font-weight:700;min-height:40px;transition:all 0.2s;letter-spacing:.3px;}
.atf-run-btn:hover{box-shadow:0 4px 14px rgba(37,99,200,0.4);}
.atf-run-btn:disabled{opacity:.4;cursor:not-allowed;}

/* ── ALERT SETTINGS ── */
.atf-settings{background:var(--surface2);border-radius:var(--r-sm);padding:12px 14px;
  margin-bottom:14px;border:1px solid var(--border);}
.atf-settings-title{font-size:14px;font-weight:600;color:var(--muted2);text-transform:uppercase;
  letter-spacing:1px;margin-bottom:10px;}
.atf-settings-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;}
.atf-setting-item{display:flex;flex-direction:column;gap:3px;}
.atf-toggle-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px;}
.atf-toggle{padding:4px 10px;border-radius:3px;border:1px solid var(--border2);
  background:var(--bg);color:var(--muted);font-size:14px;font-family:var(--mono);
  cursor:pointer;transition:all 0.15s;min-height:28px;}
.atf-toggle.on{border-color:var(--accent);background:var(--accent-dim);color:var(--accent);font-weight:600;}

/* ── ACTIVE TRIP PANEL (inside right panel tab) ── */
.atf-live-header{display:flex;flex-direction:column;gap:5px;
  padding:6px 0 6px;margin-bottom:6px;border-bottom:1px solid var(--border2);}
.atf-live-status{display:flex;align-items:center;gap:7px;}
.atf-pulse{width:9px;height:9px;border-radius:50%;background:var(--green);
  animation:blink 1.5s infinite;flex-shrink:0;}
.atf-pulse.paused{background:var(--amber);animation:none;}
.atf-pulse.stopped{background:var(--muted2);animation:none;}
.atf-status-text{font-size:15px;font-family:var(--mono);color:var(--text);}
.atf-stop-text{font-size:15px;font-family:var(--mono);color:var(--muted);}

/* ── TIMELINE ── */
.atf-timeline{display:flex;flex-direction:column;gap:0;margin-bottom:10px;}
.atf-tl-stop{display:flex;gap:10px;cursor:pointer;padding:7px 0;
  border-bottom:1px solid var(--border);transition:background 0.1s;}
.atf-tl-stop:last-child{border-bottom:none;}
.atf-tl-stop:hover{background:var(--surface2);}
.atf-tl-stop.current{background:var(--accent-dim);}
.atf-tl-num{width:22px;height:22px;border-radius:50%;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;font-size:14px;
  font-weight:700;font-family:var(--mono);margin-top:1px;}
.atf-tl-body{flex:1;min-width:0;}
.atf-tl-name{font-size:18px;font-weight:600;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.atf-tl-meta{font-size:16px;color:var(--text);font-family:var(--mono);margin-top:1px;}
.atf-tl-threat{font-size:12px;font-family:var(--mono);padding:1px 6px;
  border-radius:3px;font-weight:600;flex-shrink:0;align-self:center;}

/* ── UPDATE FEED ── */
.atf-feed-item{padding:8px 0;border-bottom:1px solid var(--border);display:flex;gap:8px;}
.atf-feed-item.is-new{border-left:2px solid var(--accent);background:var(--accent-dim);padding-left:8px;animation:atf-new-flash 1.3s ease-out 1;}
@keyframes atf-new-flash{0%{background:rgba(79,156,249,0.30);}100%{background:var(--accent-dim);}}
.atf-new-banner{font-size:14px;font-family:var(--mono);color:var(--accent);background:var(--accent-dim);border:1px solid rgba(79,156,249,0.35);border-radius:3px;padding:5px 8px;margin-bottom:8px;display:flex;align-items:center;gap:6px;}
.atf-detail-head{user-select:none;}
.atf-detail-head:hover .ctitle{text-decoration:underline;text-underline-offset:2px;}
.atf-detail-head:hover .atf-detail-chev{color:var(--accent);}
.tsummary.clamped{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.atf-feed-item:last-child{border-bottom:none;}
.atf-feed-icon{font-size:18px;flex-shrink:0;margin-top:1px;}
.atf-feed-body{flex:1;min-width:0;}
.atf-feed-title{font-size:15px;font-weight:600;color:var(--text);}
.atf-feed-detail{font-size:14px;color:var(--muted);line-height:1.4;margin-top:2px;}
.atf-feed-meta{font-size:12px;font-family:var(--mono);color:var(--muted2);margin-top:3px;}
.atf-feed-new{display:inline-block;font-size:12px;font-family:var(--mono);
  background:var(--red-dim);color:var(--red);border-radius:3px;padding:1px 5px;
  margin-left:5px;font-weight:600;}

/* ── NEXT POLL COUNTDOWN ── */
.atf-countdown{font-size:14px;font-family:var(--mono);color:var(--muted2);}
.atf-poll-bar{height:2px;background:var(--border);border-radius:1px;margin-top:4px;overflow:hidden;}
.atf-poll-fill{height:100%;background:var(--accent);transition:width 1s linear;}


/* ── INTENT BUTTONS ── */
.qm-intent-btn{transition:all 0.15s;display:flex !important;flex-direction:column;
  align-items:flex-start;justify-content:flex-start;}
.qm-intent-btn:hover{border-color:var(--accent) !important;background:var(--accent-dim) !important;}
.qm-intent-btn.active{border:2px solid var(--accent) !important;background:var(--accent-dim) !important;}
.qm-intent-btn.active span:nth-child(2){color:var(--accent) !important;}
/* Answer-first card */
.answer-first-card{border-radius:var(--r-sm);padding:12px 14px;margin-bottom:10px;
  border:2px solid var(--accent);background:rgba(79,156,249,0.05);}
.afc-label{font-size:12px;font-family:var(--mono);font-weight:600;color:var(--accent);
  letter-spacing:1px;text-transform:uppercase;margin-bottom:5px;
  display:flex;align-items:center;gap:6px;}
.afc-body{font-size:16px;color:var(--text);line-height:1.6;}
.afc-actions{display:flex;gap:7px;margin-top:8px;flex-wrap:wrap;}
.afc-action-btn{padding:5px 12px;border-radius:3px;border:1px solid var(--accent);
  background:var(--accent-dim);color:var(--accent);font-size:15px;font-family:var(--mono);
  cursor:pointer;transition:all 0.15s;min-height:32px;}
.afc-action-btn:hover{background:rgba(79,156,249,0.15);}


/* ══════════════════════════════════════════════════
   EMERGENCY RESPONSE SYSTEM — PRIORITY RENDERING
   First output in < 2 seconds. No menus. No navigation.
   ══════════════════════════════════════════════════ */

/* ── TRIAGE SELECTOR ── */
#emg-triage{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:14px;}
.triage-btn{padding:14px 8px;border-radius:var(--r-sm);cursor:pointer;border:2px solid;
  text-align:center;transition:all 0.1s;min-height:80px;flex-direction:column;
  align-items:center;justify-content:center;gap:4px;}
.triage-btn:hover,.triage-btn.active{transform:scale(1.02);}
.triage-btn.trauma{border-color:var(--red);background:rgba(248,113,113,0.08);}
.triage-btn.trauma.active{background:rgba(248,113,113,0.2);box-shadow:0 0 0 2px var(--red);}
.triage-btn.threat{border-color:var(--orange);background:rgba(251,146,60,0.08);}
.triage-btn.threat.active{background:rgba(251,146,60,0.2);box-shadow:0 0 0 2px var(--orange);}
.triage-btn.medical{border-color:rgba(79,156,249,0.8);background:rgba(79,156,249,0.08);}
.triage-btn.medical.active{background:rgba(79,156,249,0.2);box-shadow:0 0 0 2px var(--accent);}
.triage-icon{font-size:35px;display:block;}
.triage-label{font-size:16px;font-weight:700;color:var(--text);}
.triage-sub{font-size:14px;color:var(--muted);}

/* ── CRITICAL DATA PANEL — shown in < 0.1s ── */
#emg-critical{background:rgba(248,113,113,0.06);border:2px solid rgba(248,113,113,0.4);
  border-radius:var(--r-sm);padding:12px 14px;margin-bottom:12px;}
.emg-critical-row{display:flex;align-items:center;justify-content:space-between;
  padding:7px 0;border-bottom:1px solid rgba(248,113,113,0.15);gap:10px;}
.emg-critical-row:last-child{border-bottom:none;}
.emg-critical-label{font-size:15px;font-family:var(--mono);color:var(--muted2);
  text-transform:uppercase;letter-spacing:.5px;flex-shrink:0;width:120px;}
.emg-critical-val{font-size:18px;font-weight:700;color:var(--text);flex:1;}
.emg-critical-val.red{color:var(--red);}
.emg-critical-val.green{color:var(--green);}

/* ── ACTION BUTTONS — one tap, full width ── */
.emg-action{display:flex;width:100%;padding:12px 16px;border-radius:var(--r-sm);
  border:none;cursor:pointer;font-size:18px;font-weight:700;letter-spacing:.3px;
  text-decoration:none;align-items:center;gap:10px;margin-bottom:8px;min-height:52px;
  transition:all 0.1s;}
.emg-action:hover{transform:translateY(-1px);}
.emg-action.call{background:var(--green);color:#111;}
.emg-action.call:hover{background:#22c55e;}
.emg-action.navigate{background:var(--accent);color:white;}
.emg-action.navigate:hover{background:#3b82f6;}
.emg-action.threat-action{background:var(--orange);color:#111;}
.emg-action-icon{font-size:25px;flex-shrink:0;}
.emg-action-body{flex:1;text-align:left;}
.emg-action-title{display:block;font-size:18px;font-weight:700;}
.emg-action-detail{display:block;font-size:14px;font-weight:400;opacity:.8;margin-top:1px;}

/* ── SUBJECT MEDICAL BAR ── */
#emg-subject-bar{background:rgba(79,156,249,0.08);border:1px solid rgba(79,156,249,0.2);
  border-radius:var(--r-sm);padding:8px 12px;margin-bottom:12px;
  display:flex;gap:12px;flex-wrap:wrap;align-items:center;}
.emg-subj-chip{font-size:15px;font-family:var(--mono);display:flex;align-items:center;gap:5px;}
.emg-subj-chip.blood{color:var(--red);font-weight:700;font-size:18px;}
.emg-subj-chip.medical{color:var(--amber);}
.emg-subj-chip.name{color:var(--text);font-weight:600;}

/* ── COUNTDOWN / EMS TIMER ── */
#emg-countdown{font-family:var(--mono);font-size:15px;color:var(--muted);
  display:flex;align-items:center;gap:8px;padding:6px 0;margin-bottom:8px;}
.emg-timer{font-size:22px;font-weight:700;color:var(--amber);font-family:var(--mono);}
.emg-timer.urgent{color:var(--red);animation:blink 1s infinite;}

/* ── CALL LOG ── */
.emg-call-log{background:var(--surface2);border-radius:var(--r-sm);
  padding:8px 12px;margin-top:8px;}
.emg-call-entry{font-size:15px;font-family:var(--mono);padding:3px 0;
  border-bottom:1px solid var(--border);display:flex;gap:8px;align-items:center;}
.emg-call-entry:last-child{border-bottom:none;}
.emg-call-status{font-size:12px;padding:1px 6px;border-radius:3px;font-weight:600;}
.emg-call-status.called{background:var(--amber-dim);color:var(--amber);}
.emg-call-status.answered{background:var(--green-dim);color:var(--green);}
.emg-call-status.enroute{background:rgba(79,156,249,0.1);color:var(--accent);}

/* ── ROUTE FLASH — highlights primary route on map ── */
@keyframes route-flash{0%,100%{opacity:1}50%{opacity:0.3}}
.route-emergency-flash{animation:route-flash 0.8s infinite;}

/* ── ADAPTIVE UPDATE BANNER ── */
#emg-update-bar{display:none;background:rgba(248,113,113,0.12);border-top:2px solid var(--red);
  padding:6px 14px;flex-shrink:0;align-items:center;gap:8px;}
#emg-update-bar.show{display:flex;}
.emg-update-text{font-size:16px;font-weight:600;color:var(--text);}


/* ══════════════════════════════════════════════════════
   RESPONSIVE LAYOUT — v10.2
   Mobile-first, fits all screen sizes
   Breakpoints: 480px | 768px | 1024px | 1280px
   ══════════════════════════════════════════════════════ */

/* ── TOPBAR RESPONSIVE ── */
.topbar-left { display:flex; align-items:center; gap:8px; flex-shrink:0; }
.topbar-right { display:flex; align-items:center; gap:6px; margin-left:auto; flex-wrap:nowrap; }
.topbar-overflow { display:none; position:absolute; top:50px; right:8px; z-index:500;
  background:var(--surface); border:1px solid var(--border2); border-radius:var(--r-sm);
  padding:6px; min-width:180px; flex-direction:column; gap:4px; box-shadow:0 8px 24px rgba(0,0,0,0.5); }
.topbar-overflow.open { display:flex; }
.topbar-overflow button { width:100%; justify-content:flex-start; text-align:left; min-height:40px;
  padding:6px 10px; border-radius:3px; font-size:15px; }
.topbar-menu-btn { display:none; padding:5px 9px; border-radius:var(--r-sm);
  border:1px solid var(--border2); background:transparent; color:var(--muted);
  font-size:20px; cursor:pointer; min-height:36px; min-width:36px; }

/* ── MOBILE NAV BAR — bottom tab strip ── */
.mobile-nav { display:none; position:fixed; bottom:0; left:0; right:0; z-index:800;
  background:var(--surface); border-top:1px solid var(--border2);
  padding:0; height:56px; justify-content:space-around; align-items:stretch;
  safe-area-inset-bottom: env(safe-area-inset-bottom); }
.mobile-nav-btn { flex:1; display:flex; flex-direction:column; align-items:center;
  justify-content:center; gap:2px; border:none; background:transparent;
  color:var(--muted); cursor:pointer; font-size:12px; min-height:56px; padding:4px 0; }
.mobile-nav-btn.active { color:var(--accent); }
.mobile-nav-btn .mnb-icon { font-size:25px; line-height:1; }
.mobile-nav-btn .mnb-label { font-size:12px; line-height:1; }

/* ── SWIPE PANEL STATE ── */
.right-panel.mobile-visible { transform:translateX(0) !important; }
.map-panel.map-fullscreen-mobile { position:fixed !important; inset:50px 0 56px 0 !important; z-index:100; }

/* ── TABLET (769px–1024px) ── */
@media (max-width:1024px) {
  .right-panel { width:340px; min-width:240px; }
  .topbar { gap:6px; padding:0 10px; }
  .topbar button { font-size:12px; padding:4px 7px; }
}

/* ── MOBILE LANDSCAPE + SMALL TABLET (481px–768px) ── */
@media (max-width:768px) {
  /* Layout: map takes full width, panel slides over */
  .workspace { flex-direction:column; position:relative; }
  .map-panel { flex:none; height:calc(50vh - 25px); width:100% !important; min-height:200px; }
  .right-panel {
    width:100% !important; max-width:100% !important; min-width:0 !important;
    height:calc(50vh - 25px); border-left:none;
    border-top:1px solid var(--border2); flex-shrink:0;
  }
  /* Topbar: hide secondary buttons, show hamburger */
  .topbar-btn-secondary { display:none !important; }
  .topbar-menu-btn { display:flex; }
  /* Tab dropdown larger touch target */
  .tab-select { height:48px; font-size:18px !important; padding:12px 36px 12px 14px; }
  /* Modals: full screen */
  .qm-box, .atf-box, .ada-box, .legal-box, .esc-box {
    max-width:100% !important; width:100% !important;
    min-height:100vh; border-radius:0; margin:0; padding:16px;
    border-left:none; border-right:none;
  }
  #query-modal, #atf-modal, .ada-panel, .legal-modal {
    padding:0 !important; align-items:flex-start !important;
  }
  /* Consumer SafeGo */
  
  .cs-who-chips, 
  
  
  /* ADA panel */
  .ada-chip-grid { grid-template-columns:1fr !important; }
  .ada-chip { min-height:60px; }
  /* ATF grid */
  .atf-stop-row { grid-template-columns:1fr !important; }
  .atf-settings-grid { grid-template-columns:1fr !important; }
  /* Emergency triage */
  #emg-triage { grid-template-columns:1fr 1fr 1fr; gap:6px; }
  .triage-btn { min-height:70px; padding:10px 4px; }
  .triage-label { font-size:14px; }
  .emg-action { min-height:56px; font-size:19px; }
  /* Intent grid */
  #qm-intent-grid { grid-template-columns:1fr 1fr; }
}

/* ── MOBILE PORTRAIT (≤480px) ── */
@media (max-width:480px) {
  /* Show mobile nav bar, hide desktop topbar buttons */
  .mobile-nav { display:flex; }
  /* body padding-bottom managed by mobile-fix CSS block */
  /* App uses full height minus topbar and mobile nav */
  .app { grid-template-rows:50px 1fr; }
  .workspace { flex-direction:column; height:calc(100vh - 50px - 56px); }
  .map-panel {
    flex:none; height:45vh; width:100% !important;
    transition:height 0.25s ease;
  }
  .map-panel.map-expanded { height:calc(100vh - 106px); }
  .right-panel {
    flex:1; width:100% !important; max-width:100% !important;
    min-width:0 !important; min-height:0;
    border-left:none; border-top:1px solid var(--border2);
    transition:height 0.25s ease;
  }
  /* Topbar: very compact */
  .topbar { padding:0 8px; gap:4px; }
  .brand-block { display:none; } /* hide name on small screens */
  .topbar-brand-icon { display:flex !important; } /* show icon only */
  .topbar-btn-secondary { display:none !important; }
  .topbar-menu-btn { display:flex; }
  /* Emergency button always visible — full height topbar */
  #emg-btn-mobile { display:flex !important; }
  /* Tab select */
  .tab-select { font-size:18px !important; height:48px; }
  /* Intent grid: 2 per row on 480px, 1 per row on tiny */
  #qm-intent-grid { grid-template-columns:1fr 1fr; gap:6px; }
  .qm-intent-btn { min-height:72px; padding:8px 6px; }
  /* Consumer */
  
  
  /* Emergency: stack triage vertically on very small */
  #emg-triage { grid-template-columns:1fr; }
  .triage-btn { min-height:64px; flex-direction:row; gap:10px; padding:10px 14px;
    align-items:center; justify-content:flex-start; }
  .triage-icon { font-size:28px; }
  /* All modals full screen */
  .qm-box, .atf-box, .ada-box, .legal-box, .esc-box,
  #emg-modal > div {
    max-width:100% !important; width:100vw !important;
    min-height:calc(100vh - 56px); border-radius:0; margin:0; padding:14px;
    border:none; border-top:2px solid var(--accent);
  }
  #emg-modal > div { border-top-color:var(--red); }
  /* ATF settings */
  .atf-settings-grid { grid-template-columns:1fr !important; }
  .atf-stop-row { grid-template-columns:1fr !important; }
  /* Larger touch targets everywhere */
  button, a, [role="button"] { min-height:44px !important; }
  .emg-action { min-height:60px !important; font-size:20px !important; }
}

/* ── VERY SMALL (≤360px, old Android) ── */
@media (max-width:360px) {
  #qm-intent-grid { grid-template-columns:1fr; }
  .qm-intent-btn { min-height:60px; }
  .triage-label { font-size:12px; }
}

/* ── LANDSCAPE MOBILE ── */
@media (max-width:768px) and (orientation:landscape) {
  .map-panel { height:calc(100vh - 50px); width:50% !important; }
  .right-panel { width:50% !important; height:calc(100vh - 50px) !important;
    border-left:1px solid var(--border2); border-top:none; }
  .workspace { flex-direction:row; }
  .mobile-nav { display:none; } /* landscape: use topbar */
}

/* ── SAFE AREAS (iPhone notch/home indicator) ── */
@supports (padding-bottom: env(safe-area-inset-bottom)) {
  .mobile-nav { padding-bottom:env(safe-area-inset-bottom); height:calc(56px + env(safe-area-inset-bottom)); }
  body { padding-bottom:calc(56px + env(safe-area-inset-bottom)); }
}
@supports (padding-top: env(safe-area-inset-top)) {
  .topbar { padding-top:env(safe-area-inset-top); }
}

/* ── PWA DISPLAY MODE ── */
@media (display-mode: standalone) {
  .topbar { padding-top:env(safe-area-inset-top, 8px); }
}

/* ── DARK MODE (system preference) ── */
@media (prefers-color-scheme: dark) {
  /* Platform is already dark — this is a no-op confirmation */
  :root { color-scheme: dark; }
}

/* ── PRINT ── */
@media print {
  .topbar, .map-panel, .mobile-nav, #emg-modal,
  #atf-modal, .ada-panel, .legal-modal { display:none !important; }
  .right-panel { width:100% !important; border:none; }
  .workspace { display:block; }
  body { background:white; color:black; }
  .card { border:1px solid #ccc; break-inside:avoid; }
}


/* ── TOUCH INTERACTION — eliminates 300ms iOS tap delay ── */
button, a, input, select, textarea,
[role="button"], [role="link"], [tabindex],
.cs-chip, .ada-chip, .triage-btn, .atf-toggle,
.qm-intent-btn, .mobile-nav-btn, .emg-action,
.tab-select, .atf-add-btn, .atf-run-btn,
.cs-run-btn, .voice-btn, .flag-btn, .thumb-btn {
  touch-action: manipulation;
  -webkit-tap-highlight-color: rgba(79,156,249,0.15);
}
/* Scrollable containers need pan-y */
.right-panel, .tab-body, .cs-results, .atf-box,
.ada-box, .legal-box, .esc-box, #query-modal,
#atf-modal, #emg-modal, 
/* Map needs pinch-zoom */
#map { touch-action: pan-x pan-y pinch-zoom; }


/* ══ MOBILE INTERACTION FIXES v10.3 ══ */

/* Query modal box — responsive */
.qm-box {
  width: 100%;
  max-width: 600px;
  margin: 0 auto;
  box-sizing: border-box;
}

/* Modal containers — ensure they scroll on mobile */
#query-modal, #atf-modal, .ada-panel, .legal-modal,
.escalation-modal, #emg-modal, 

/* ── ≤768px: modals near-full-screen ── */
@media (max-width: 768px) {
  .qm-box, .atf-box, .ada-box, .legal-box, .esc-box {
    max-width: 100% !important;
    width: 100% !important;
    border-radius: 0 !important;
    margin: 0 !important;
    min-height: 100%;
    box-sizing: border-box;
  }
  #query-modal {
    padding: 0 !important;
    align-items: flex-start !important;
  }
  .ada-panel, .legal-modal, .escalation-modal {
    padding: 0 !important;
    align-items: flex-start !important;
  }
  .atf-modal-open-state {
    padding: 0 !important;
    align-items: flex-start !important;
  }
  #atf-modal.open {
    padding: 0 !important;
    align-items: flex-start !important;
  }
}

/* ── ≤480px: full mobile experience ── */
@media (max-width: 480px) {
  /* App height — dvh for iOS, vh fallback */
  .app { height: 100vh; height: 100dvh; }

  /* Body — prevent overflow, account for nav bar */
  html, body {
    overflow: hidden;
    position: fixed;
    width: 100%;
    height: 100%;
  }
  /* Allow scrolling inside panels (was broken: trailing comma merged these into .topbar,
     dropping overflow:auto so mobile panel content below the fold couldn't scroll. HHM fix 2026-08-02) */
  .right-panel, .tab-body {
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }

  /* Topbar: show only critical buttons */
  .topbar { padding: 0 8px !important; gap: 6px !important; overflow: visible !important; }

  /* All modals full-screen */
  .qm-box, .atf-box, .ada-box, .legal-box, .esc-box,
  #emg-modal > div, .esc-box {
    position: fixed !important;
    inset: 0 !important;
    max-width: 100vw !important;
    width: 100vw !important;
    height: 100% !important;
    min-height: 100% !important;
    border-radius: 0 !important;
    margin: 0 !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch !important;
    box-sizing: border-box !important;
  }

  /* Tab select — larger touch target */
  .tab-select {
    height: 48px !important;
    font-size: 14px !important;
    padding: 12px 36px 12px 14px !important;
  }

  /* All buttons — minimum tap target */
  button, [role="button"], a {
    min-height: 44px !important;
    min-width: 44px !important;
  }

  /* Consumer SafeGo */
  
  .cs-chip, 

  /* Emergency triage — stack vertically, easier to tap */
  #emg-triage {
    grid-template-columns: 1fr !important;
    gap: 8px !important;
  }
  .triage-btn {
    min-height: 60px !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 12px !important;
    padding: 12px 16px !important;
  }
  .triage-icon { font-size: 24px !important; }
  .triage-label { font-size: 15px !important; }
  .triage-sub { display: none !important; } /* hide subtext on small screens */

  /* Emergency action buttons */
  .emg-action { min-height: 60px !important; font-size: 15px !important; }

  /* ADA chips — single column */
  .ada-chip-grid { grid-template-columns: 1fr !important; }

  /* Intent grid — 2 per row on mobile */
  #qm-intent-grid { grid-template-columns: 1fr 1fr !important; gap: 6px !important; }
  .qm-intent-btn { min-height: 80px !important; }

  /* ATF grids */
  .atf-stop-row { grid-template-columns: 1fr !important; }
  .atf-settings-grid { grid-template-columns: 1fr !important; }

  /* Map expand button — always visible on mobile */
  #map-expand-btn { display: block !important; }

  /* Mobile nav */
  .mobile-nav { display: flex !important; }
  .mobile-nav-btn { min-height: 56px; }
}

/* ── Landscape mobile ── */
@media (max-width: 768px) and (orientation: landscape) {
  html, body { overflow: auto; position: static; }
  .mobile-nav { display: none !important; }
  .workspace { flex-direction: row !important; }
  .map-panel { height: 100% !important; width: 50% !important; }
  .right-panel { width: 50% !important; height: 100% !important; border-top: none !important; border-left: 1px solid var(--border2) !important; }
}


/* ── DATA FRESHNESS BADGES ── */
.freshness-badge {
  display:inline-flex; align-items:center; gap:4px;
  font-size:12px; font-family:var(--mono);
  padding:1px 7px; border-radius:3px;
  background:var(--surface2); color:var(--muted2);
  border:1px solid var(--border);
}
.freshness-badge.live { color:var(--green); background:rgba(52,211,153,0.08); border-color:rgba(52,211,153,0.3); }
.freshness-badge.recent { color:var(--accent); background:rgba(79,156,249,0.08); border-color:rgba(79,156,249,0.2); }
.freshness-badge.stale { color:var(--amber); background:rgba(251,191,36,0.08); border-color:rgba(251,191,36,0.3); }
.data-freshness-bar {
  background:var(--surface2); border-radius:var(--r-sm);
  padding:7px 12px; margin-bottom:8px;
  display:flex; gap:8px; flex-wrap:wrap; align-items:center;
  border:1px solid var(--border); font-size:14px;
}


/* Push Leaflet zoom controls down to avoid topbar overlap */
.leaflet-top.leaflet-left { top: 60px !important; left: 10px !important; }
.leaflet-top.leaflet-right { top: 10px !important; right: 10px !important; }
.leaflet-control-zoom { margin-top: 0 !important; }


/* ── SOURCE PILLS — interactive source citations ── */
.src-pill {
  display:inline-flex; align-items:center; gap:3px;
  font-size:12px; font-family:var(--mono); font-weight:600;
  padding:2px 7px; border-radius:3px; margin:2px 2px 0 0;
  text-decoration:none; cursor:pointer; transition:all 0.15s;
  border:1px solid; vertical-align:middle;
}
.src-pill.verified {
  color:var(--green); border-color:rgba(52,211,153,0.35);
  background:rgba(52,211,153,0.08);
}
.src-pill.verified:hover {
  background:rgba(52,211,153,0.15); border-color:var(--green);
}
.src-pill.secondary {
  color:var(--accent); border-color:rgba(79,156,249,0.35);
  background:rgba(79,156,249,0.08);
}
.src-pill.secondary:hover {
  background:rgba(79,156,249,0.15); border-color:var(--accent);
}
.src-pill.ai-signal {
  color:var(--amber); border-color:rgba(251,191,36,0.35);
  background:rgba(251,191,36,0.08);
}
.src-pill.ai-signal:hover {
  background:rgba(251,191,36,0.15); border-color:var(--amber);
}

.src-pill.osint {
  color:var(--accent); border-color:rgba(79,156,249,0.4);
  background:rgba(79,156,249,0.07);
}
.src-pill.osint:hover { background:rgba(79,156,249,0.15); border-color:var(--accent); }

.src-pill.unknown {
  color:var(--muted2); border-color:var(--border);
  background:transparent; cursor:default;
}
.src-pill.federal {
  color:var(--accent); border-color:rgba(79,156,249,0.5);
  background:rgba(79,156,249,0.1);
}
.src-pill.federal:hover { background:rgba(79,156,249,0.18); }
.src-row {
  display:flex; flex-wrap:wrap; gap:2px;
  margin-top:4px; align-items:center;
}
.src-row-label {
  font-size:12px; font-family:var(--mono);
  color:var(--muted2); margin-right:4px; flex-shrink:0;
}


/* ── EVIDENCE DRAWER ── */
.ev-drawer { border-top:1px solid var(--border); margin-top:6px; }
.ev-trigger {
  font-size:14px; font-family:var(--mono); color:var(--muted);
  cursor:pointer; padding:5px 0; list-style:none;
  display:flex; align-items:center; gap:5px;
  user-select:none; transition:color 0.15s;
}
.ev-trigger:hover { color:var(--accent); }
.ev-trigger::marker, .ev-trigger::-webkit-details-marker { display:none; }
.ev-drawer[open] .ev-trigger { color:var(--accent); }
.ev-body { padding:6px 0 2px; }
.ev-item {
  padding:5px 0; border-bottom:1px solid var(--border);
  font-size:14px;
}
.ev-item:last-child { border-bottom:none; }
.ev-item-header {
  display:flex; gap:8px; align-items:flex-start;
  margin-bottom:3px;
}
.ev-type {
  font-family:var(--mono); font-size:12px; font-weight:600;
  color:var(--orange); flex-shrink:0; padding-top:1px;
  text-transform:uppercase; letter-spacing:.3px;
}
.ev-date { font-family:var(--mono); font-size:12px; color:var(--muted2); flex-shrink:0; }
.ev-desc { color:var(--text); line-height:1.5; margin-bottom:3px; }

/* Analyst note */
.analyst-note-wrap { margin-top:6px; }
.analyst-note {
  width:100%; box-sizing:border-box; min-height:40px;
  background:rgba(79,156,249,0.05); border:1px solid rgba(79,156,249,0.2);
  border-radius:3px; color:var(--text); font-size:14px;
  font-family:var(--sans); padding:5px 8px; resize:vertical;
  transition:border-color 0.15s;
}
.analyst-note:focus { outline:none; border-color:var(--accent); }
.analyst-note::placeholder { color:var(--muted2); }

/* Analyst note — its own labeled toggle, separate from the evidence/trace links */
.note-drawer { border-top:1px solid var(--border); margin-top:4px; }
.note-trigger {
  font-size:14px; font-family:var(--mono); color:var(--muted);
  cursor:pointer; padding:5px 0; list-style:none;
  display:flex; align-items:center; gap:6px;
  user-select:none; transition:color 0.15s;
}
.note-trigger:hover { color:var(--accent); }
.note-trigger::marker, .note-trigger::-webkit-details-marker { display:none; }
.note-drawer[open] .note-trigger { color:var(--accent); }
.note-dot { color:var(--green); font-size:11px; line-height:1; }


/* ── TRAUMA DIAGRAM MODAL ── */
#trauma-diag-modal {
  display:none; position:fixed; inset:0; z-index:9960;
  background:rgba(0,0,0,0.92);
  align-items:center; justify-content:center; padding:16px;
}
#trauma-diag-modal.open { display:flex; }
.tdm-box {
  background:var(--surface); border:1px solid rgba(255,77,109,0.4);
  border-radius:var(--r); width:100%; max-width:900px;
  max-height:90vh; display:flex; flex-direction:column; overflow:hidden;
}
.tdm-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:8px 14px; border-bottom:1px solid var(--border2);
  flex-shrink:0; gap:12px; min-height:0;
}
.tdm-header-left { display:flex; align-items:baseline; gap:10px; min-width:0; }
.tdm-title {
  font-family:var(--mono); font-size:15px; font-weight:700;
  color:var(--crimson); white-space:nowrap; flex-shrink:0;
}
.tdm-subtitle {
  font-size:14px; color:var(--muted); overflow:hidden;
  text-overflow:ellipsis; white-space:nowrap;
}
.tdm-close {
  background:transparent; border:1px solid var(--border2); color:var(--muted);
  font-size:14px; padding:3px 9px; border-radius:3px; cursor:pointer;
  min-height:26px; font-family:var(--mono); flex-shrink:0;
  transition:all 0.15s;
}
.tdm-close:hover { border-color:var(--crimson); color:var(--crimson); }
.tdm-body {
  display:flex; flex-direction:row; flex:1; min-height:0; overflow:hidden;
}
.tdm-diagram-panel {
  flex:1; padding:12px; overflow:hidden; display:flex;
  flex-direction:column; min-width:0; border-right:1px solid var(--border2);
}
.tdm-diagram-panel svg {
  width:100% !important; height:auto !important;
  flex:1; min-height:260px; max-height:420px;
}
.tdm-side-panel {
  width:240px; flex-shrink:0; display:flex; flex-direction:column;
  overflow-y:auto; padding:10px;
}
.tdm-actions { display:flex; flex-direction:column; gap:5px; margin-bottom:10px; }
.tdm-action-btn {
  display:flex; align-items:center; justify-content:center; gap:6px;
  padding:7px 10px; border-radius:5px; font-size:15px; font-weight:600;
  text-decoration:none; cursor:pointer; border:none; width:100%;
  min-height:34px; transition:opacity 0.15s;
}
.tdm-action-btn:hover { opacity:0.85; }
.tdm-action-nav  { background:var(--accent);  color:#fff; }
.tdm-action-call { background:var(--green);   color:#111; }
.tdm-zone-key { border-top:1px solid var(--border2); padding-top:8px; margin-top:4px; }
.tdm-zone-key-title {
  font-size:12px; font-weight:700; color:var(--muted2); text-transform:uppercase;
  letter-spacing:.5px; margin-bottom:6px;
}
.tdm-zone-grid { display:flex; flex-direction:column; gap:3px; }
.tdm-zk-row {
  display:flex; align-items:center; gap:5px; font-size:12px;
  font-family:var(--mono); color:var(--muted);
}
.tdm-zk-dot {
  width:10px; height:10px; border-radius:2px; flex-shrink:0; border:1px solid;
}
.tdm-vuln-section {
  border-top:1px solid var(--border2); margin-top:8px; padding-top:8px;
  font-size:14px;
}
.tdm-expand-btn {
  position:absolute; bottom:6px; right:6px; z-index:10;
  background:rgba(8,11,16,0.9); border:1px solid rgba(79,156,249,0.4);
  color:var(--accent); font-size:12px; font-family:var(--mono);
  padding:3px 8px; border-radius:3px; cursor:pointer; min-height:24px;
  transition:all 0.15s;
}
.tdm-expand-btn:hover { border-color:var(--accent); background:var(--accent-dim); }
@media (max-width:640px) {
  .tdm-body { flex-direction:column; }
  .tdm-side-panel { width:100%; border-right:none; border-top:1px solid var(--border2); }
}
  .tdm-info-panel { border-right:none; border-top:1px solid var(--border2); }
}
/* ── SAFEGO CALM COLOR SCHEME ── */












/* ── PHASE 3: CARD INTERACTIONS ── */
.sitcard[style*="cursor: pointer"]:hover,
.sitcard[style*="cursor:pointer"]:hover {
  border-color: rgba(79,156,249,0.4) !important;
  box-shadow: 0 0 0 2px rgba(79,156,249,0.1);
  transition: all 0.15s;
}
.card-map-popup .leaflet-popup-content-wrapper {
  background: var(--surface);
  border: 1px solid var(--accent);
  border-radius: 5px;
  padding: 6px 10px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.5);
}
.card-map-popup .leaflet-popup-tip {
  background: var(--accent);
}
.sg-alt-card:hover {
  border-color: var(--sg-primary, #4a90a4) !important;
  background: rgba(74,144,164,0.1) !important;
}

/* ── RIGHT PANEL VISIBILITY GUARANTEE ── */
#right-panel {
  display: flex !important;
  overflow: hidden !important;
}

/* ══ WORKSPACE LAYOUT OVERRIDE — DESKTOP ONLY (v12.88) ══
   Forces the map + View panel side-by-side on DESKTOP. Gated to >=769px so it no longer
   overrides the mobile column layout (max-width:480/768) — that global !important override
   was forcing the desktop two-column layout onto phones, causing a zoomed-in desktop. */
@media (min-width: 769px) {
  .workspace {
    flex-direction: row !important;
    height: calc(100dvh - 50px) !important;
    min-height: 0 !important;
  }
  .right-panel {
    display: flex !important;
    flex-direction: column !important;
    height: calc(100dvh - 50px) !important;
    min-height: 0 !important;
    overflow: hidden !important;
    flex-shrink: 0 !important;
    /* v12.28: width released — was 410px !important, which silently pinned the panel and made the
       resize drag inert (inline styles lose to !important). Width is owned by the base rule +
       the drag handle (which now writes with priority). */
  }
}

/* ══ FORCE MOBILE LAYOUT BY DEVICE (v12.88) ══
   Applies the phone layout based on the DEVICE (UA/touch), not the viewport width, so it renders
   correctly even when Safari/Chrome is in "Request Desktop Website" mode (which reports a wide
   viewport and defeats the width media queries). Higher specificity + !important than the desktop
   >=769px override, so it wins. Desktop browsers never get the .pcs-mobile-device class. */
html.pcs-mobile-device .workspace { flex-direction: column !important; height: calc(100dvh - 50px - 56px) !important; min-height: 0 !important; }
html.pcs-mobile-device .map-panel { width: 100% !important; height: 45vh !important; min-height: 200px !important; flex: none !important; }
html.pcs-mobile-device .right-panel { width: 100% !important; max-width: 100% !important; min-width: 0 !important; flex: 1 1 auto !important; height: auto !important; border-left: none !important; border-top: 1px solid var(--border2) !important; }
html.pcs-mobile-device .mobile-nav { display: flex !important; }
html.pcs-mobile-device .topbar-btn-secondary { display: none !important; }
html.pcs-mobile-device .brand-block { display: none !important; }
html.pcs-mobile-device body { padding-bottom: calc(56px + env(safe-area-inset-bottom, 0px)) !important; }
/* The ARGUS assist panel is a fixed desktop side-panel that (a) pushes the map aside via
   body.assist-open .map-panel{margin-left} and (b) sits as a narrow left column. On mobile it must
   be a full-width sheet and must NOT shove the map off-screen. */
html.pcs-mobile-device body.assist-open .map-panel,
html.pcs-mobile-device .map-panel { margin-left: 0 !important; }
html.pcs-mobile-device #assist-panel {
  left: 0 !important; right: 0 !important; top: 50px !important; bottom: 56px !important;
  width: 100% !important; max-width: 100% !important; border-left: none !important; border-right: none !important;
}
html.pcs-mobile-device #assist-launch { left: auto !important; right: 12px !important; top: auto !important; bottom: 64px !important; }
/* Hide desktop-only chrome that steals horizontal space / adds slivers on phones. */
html.pcs-mobile-device .view-rail,
html.pcs-mobile-device .resize-handle { display: none !important; }
/* Landscape phones: restore the locked-in side-by-side layout (map + View), nav via topbar —
   the portrait column force above must NOT apply when the device is held sideways. */
@media (orientation: landscape) {
  html.pcs-mobile-device .workspace { flex-direction: row !important; height: calc(100dvh - 50px) !important; }
  html.pcs-mobile-device .map-panel { width: 50% !important; height: calc(100dvh - 50px) !important; }
  html.pcs-mobile-device .right-panel { width: 50% !important; height: calc(100dvh - 50px) !important; border-top: none !important; border-left: 1px solid var(--border2) !important; }
  html.pcs-mobile-device .mobile-nav { display: none !important; }
  html.pcs-mobile-device body { padding-bottom: 0 !important; }
}

/* ── SAFEGO RESULT CARDS ── */
.sg-card {
  background: rgba(74,144,164,0.05);
  border: 1px solid var(--sg-border, rgba(74,144,164,0.2));
  border-radius: 8px;
  padding: 10px 12px;
  margin-bottom: 7px;
  transition: all 0.15s;
}
.sg-card-header-main {
  border-radius: 10px;
  padding: 14px;
  margin-bottom: 10px;
}
.sg-card-clickable {
  cursor: pointer;
}
.sg-card-clickable:hover {
  border-color: var(--sg-primary, #4a90a4) !important;
  background: rgba(74,144,164,0.12) !important;
}
.sg-card-caution {
  border-color: rgba(196,149,106,0.4) !important;
  background: rgba(196,149,106,0.06) !important;
}
.sg-card-kids {
  border-color: rgba(91,168,158,0.4) !important;
  background: rgba(91,168,158,0.06) !important;
}
.sg-card-context {
  border-color: rgba(74,144,164,0.15) !important;
}
.sg-card-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--sg-muted, #8baab8);
  text-transform: uppercase;
  letter-spacing: .6px;
  margin-bottom: 5px;
  font-family: var(--mono);
}
.sg-card-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.sg-card-icon {
  font-size: 16px;
  flex-shrink: 0;
  line-height: 1.3;
}
.sg-card-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--sg-primary, #4a90a4);
  margin-bottom: 2px;
}
.sg-card-detail {
  font-size: 13px;
  color: var(--sg-muted, #8baab8);
  line-height: 1.5;
}
.sg-map-btn {
  margin-left: auto;
  font-size: 16px;
  flex-shrink: 0;
  opacity: 0.6;
  transition: opacity 0.15s;
}
.sg-card-clickable:hover .sg-map-btn {
  opacity: 1;
}
.sg-bullet {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 5px 0;
  border-bottom: 1px solid rgba(74,144,164,0.1);
  font-size: 12px;
  color: var(--sg-text, #dde8f0);
}
.sg-bullet:last-child { border-bottom: none; }
.sg-bullet-icon { font-size: 14px; flex-shrink: 0; }

/* ── PHASE 3: ACTIVE LAYER ITEMS ── */
.leg-item[data-layer] {
  transition: all 0.15s;
  cursor: pointer;
  border-radius: 4px;
  padding: 2px 4px;
  margin: 1px -4px;
}
.leg-item[data-layer]:hover {
  background: rgba(79,156,249,0.08);
  color: var(--accent);
}
.leg-item[data-layer]:hover .leg-lbl {
  color: var(--accent);
}

/* ── INTERACTIVE CARD STYLES ── */
.feedcard[style*="cursor"] { transition: all 0.15s; }
.feedcard:hover { border-color: var(--accent) !important; box-shadow: 0 0 0 2px rgba(79,156,249,0.08); }
.barrow[style*="cursor"] { transition: background 0.15s; }
.barrow:hover { background: rgba(79,156,249,0.06) !important; border-radius: 4px; }
.evcard[style*="cursor"] { transition: all 0.15s; }
.evcard[data-zone-idx]:hover { border-color: rgba(251,146,60,0.5); box-shadow: 0 2px 8px rgba(251,146,60,0.1); cursor:pointer; }
.response-card[style*="cursor"] { transition: all 0.15s; }
.response-card:hover { border-color: var(--accent) !important; box-shadow: 0 0 0 2px rgba(79,156,249,0.08); }

/* ── TRAUMA CENTER CARDS ── */
.tc-card {
  background: var(--surface2);
  border: 1px solid var(--border2);
  border-radius: 8px;
  padding: 12px 14px;
  margin-bottom: 8px;
  cursor: pointer;
  transition: all 0.15s;
}
.tc-card:hover { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(79,156,249,0.08); }
.tc-primary { border-color: rgba(248,113,113,0.4); }
.tc-primary:hover { border-color: var(--crimson); }
.tc-card-top { display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:8px; }
.tc-name { font-size:16px; font-weight:700; color:var(--text); font-family:var(--mono); }
.tc-meta { font-size:14px; color:var(--muted); margin-top:2px; }
.tc-level-badge { font-size:12px; font-weight:700; font-family:var(--mono); letter-spacing:.5px;
  color:var(--crimson); border:1px solid rgba(255,77,109,0.4); border-radius:3px;
  padding:2px 6px; white-space:nowrap; flex-shrink:0; margin-left:8px; }
.tc-stats-row { display:flex; gap:4px; margin-bottom:6px; }
.tc-stat { flex:1; background:rgba(255,255,255,0.03); border-radius:5px; padding:6px 4px; text-align:center; }
.tc-stat-val { font-size:18px; font-weight:700; color:var(--text); font-family:var(--mono); }
.tc-stat-lbl { font-size:12px; color:var(--muted2); margin-top:2px; text-transform:uppercase; letter-spacing:.4px; }
.tc-caps { font-size:12px; color:var(--muted); margin-bottom:6px; font-family:var(--mono); }
.tc-card-footer { display:flex; align-items:center; justify-content:space-between; margin-top:4px;
  border-top:1px solid var(--border2); padding-top:6px; }
.tc-fullview-btn { font-size:12px; font-family:var(--mono); background:transparent;
  border:1px solid var(--border2); color:var(--muted); padding:2px 8px; border-radius:3px;
  cursor:pointer; transition:all 0.15s; }
.tc-fullview-btn:hover { border-color:var(--accent); color:var(--accent); }
.tc-expand-hint { font-size:12px; color:var(--muted2); font-family:var(--mono); }

/* ── TRAUMA OVERLAY ── */
.tc-ov-box {
  background: var(--surface);
  border: 1px solid rgba(248,113,113,0.35);
  border-radius: 12px;
  padding: 20px;
  width: 100%;
  max-width: 580px;
  margin: auto;
}
.tc-ov-header { display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:16px; gap:12px; }
.tc-ov-title { font-size:20px; font-weight:700; color:var(--text); font-family:var(--mono); }
.tc-ov-subtitle { font-size:15px; color:var(--muted); margin-top:3px; }
.tc-ov-close { background:transparent; border:1px solid var(--border2); color:var(--muted);
  font-size:15px; padding:4px 10px; border-radius:4px; cursor:pointer; flex-shrink:0;
  font-family:var(--mono); transition:all 0.15s; }
.tc-ov-close:hover { border-color:var(--crimson); color:var(--crimson); }
.tc-ov-stats { display:flex; gap:6px; margin-bottom:16px; }
.tc-ov-stat { flex:1; background:rgba(255,255,255,0.03); border-radius:6px; padding:10px 8px; text-align:center; }
.tc-ov-stat-val { font-size:22px; font-weight:700; color:var(--text); font-family:var(--mono); }
.tc-ov-stat-lbl { font-size:12px; color:var(--muted2); margin-top:3px; text-transform:uppercase; letter-spacing:.4px; }
.tc-ov-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:10px; }
.tc-ov-section { margin-bottom:10px; }
.tc-ov-label { font-size:12px; font-weight:700; color:var(--muted2); text-transform:uppercase;
  letter-spacing:.6px; margin-bottom:4px; font-family:var(--mono); }
.tc-ov-body { font-size:15px; color:var(--text); line-height:1.5; }
.tc-ov-row { display:flex; justify-content:space-between; font-size:15px; padding:3px 0; }
.tc-ov-val { color:var(--accent); font-family:var(--mono); }
.tc-ov-caps { display:flex; flex-wrap:wrap; gap:4px; }
.tc-ov-cap { font-size:14px; background:rgba(52,211,153,0.08); border:1px solid rgba(52,211,153,0.25);
  color:var(--green); padding:2px 8px; border-radius:4px; }
.tc-ov-vuln { font-size:14px; color:var(--orange); padding:2px 0; }
.tc-ov-actions { display:flex; gap:8px; margin-top:14px; flex-wrap:wrap; }
.tc-ov-btn { flex:1; padding:9px 12px; border-radius:6px; font-size:15px; font-weight:600;
  cursor:pointer; border:1px solid var(--border2); background:var(--surface2);
  color:var(--text); font-family:var(--mono); transition:all 0.15s; text-align:center;
  text-decoration:none; display:inline-block; min-height:36px; }
.tc-ov-btn:hover { border-color:var(--accent); background:rgba(79,156,249,0.08); }
.tc-ov-nav { background:#2a7ab5; color:#fff; border-color:#1e6aa0; }
.tc-ov-nav:hover { opacity:0.85; }

/* ── RECOMMENDATION CARDS ── */
.reco-group { margin-bottom: 12px; }
.reco-group-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 4px 8px;
  border-left: 3px solid;
  margin-bottom: 5px;
  background: rgba(255,255,255,0.02);
  border-radius: 0 4px 4px 0;
}
.reco-sev { font-size:12px; font-weight:800; font-family:var(--mono); letter-spacing:.5px; }
.reco-count { font-size:12px; color:var(--muted2); font-family:var(--mono); }
.reco-card {
  background: var(--surface2);
  border: 1px solid var(--border2);
  border-radius: 6px;
  padding: 8px 10px;
  margin-bottom: 5px;
  cursor: pointer;
  transition: all 0.15s;
}
.reco-card:hover { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(79,156,249,0.07); }
.reco-card-top { display: flex; align-items: flex-start; gap: 6px; }
.reco-action { flex: 1; font-size: 12px; color: var(--text); line-height: 1.45; }
.reco-chevron { color: var(--muted2); font-size: 11px; flex-shrink: 0; margin-top: 2px; transition: all 0.15s; }
.reco-card-detail { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border2); }
.reco-detail-row { display:flex; gap:8px; margin-bottom:5px; font-size:14px; }
.reco-detail-lbl { font-family:var(--mono); color:var(--muted2); font-size:12px; font-weight:700;
  text-transform:uppercase; letter-spacing:.4px; flex-shrink:0; padding-top:1px; width:58px; }
.reco-detail-val { color:var(--text); line-height:1.5; }
.reco-source-link { color:var(--accent); text-decoration:none; font-size:14px; }
.reco-source-link:hover { text-decoration:underline; }
.reco-detail-actions { margin-top:6px; }
.reco-update-btn { font-size:12px; font-family:var(--mono); background:transparent;
  border:1px solid var(--border2); color:var(--muted); padding:2px 8px; border-radius:3px;
  cursor:pointer; transition:all 0.15s; }
.reco-update-btn:hover { border-color:var(--accent); color:var(--accent); }

/* Scroll-target flash for popup "Full ... data →" jumps (e.g. Response sections) */
@keyframes flashHighlight {
  0%   { background: var(--accent); color: #07090d; border-radius: 4px; }
  100% { background: transparent; }
}
.flash-highlight { animation: flashHighlight 1.6s ease-out; }

/* EP Advance Report — one-time attention pulse on first assessment completion (v10.57).
   Expanding amber ring draws the eye without being obnoxious; bounded iteration count auto-stops. */
@keyframes ep-attn-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(232,168,56,0.72); }
  70%  { box-shadow: 0 0 0 12px rgba(232,168,56,0); }
  100% { box-shadow: 0 0 0 0 rgba(232,168,56,0); }
}
#advance-report-btn.ep-pulse {
  animation: ep-attn-pulse 1.5s ease-out 10;
  border-color: rgba(232,168,56,1) !important;
}

/* ── View Rail (Option C) — Stage 1 primary section navigation ── */
.view-shell{display:flex;flex:1;min-height:0;overflow:hidden;}
.view-shell .tab-body{flex:1;min-width:0;background:#0b0e13;padding:0;overflow-y:auto;}
.view-rail{width:118px;flex-shrink:0;display:flex;flex-direction:column;gap:3px;padding:10px 6px 90px;overflow-y:auto;border-right:1px solid rgba(255,255,255,0.08);background:#0e1319;font-family:var(--mono);height:100%;}
.view-rail::-webkit-scrollbar{width:3px;}
.view-rail::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px;}
.view-rail .rail-group{font-size:12px;font-weight:700;letter-spacing:1px;color:var(--text);text-transform:uppercase;text-align:center;padding:8px 2px 3px;}
.view-rail .rail-div{height:1px;background:rgba(255,255,255,0.2);margin:7px 7px;}
.view-rail .rail-tile{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border-radius:5px;cursor:pointer;color:#ffffff;font-size:16px;line-height:1.15;text-align:center;border:1px solid transparent;transition:background .12s,color .12s;letter-spacing:.3px;}
.view-rail .rail-tile:hover{background:rgba(255,255,255,0.06);color:#ffffff;}
.view-rail .rail-tile.active{background:rgba(79,156,249,0.1);color:var(--accent);border-color:rgba(79,156,249,0.3);font-weight:700;}
.view-rail .rail-icon{font-size:24px;line-height:1;}
.view-rail .rail-alert{position:absolute;top:3px;right:7px;width:7px;height:7px;border-radius:50%;background:#e0554a;display:none;}
.view-rail .rail-alert.show{display:block;}

/* Active Layers — clear on/off state (leg-off = layer hidden) */
.leg-item{transition:opacity .12s;}
.leg-item.leg-off{opacity:0.4;}
.leg-item.leg-off .leg-lbl{text-decoration:line-through;color:var(--muted2);}

/* Current-assessment venue title in the header (S1: name at a glance) */
.tvenue-title{font-weight:700;font-size:19px;color:var(--text);line-height:1.25;flex:1;min-width:0;white-space:normal;}
.tvenue-title:empty{display:none;}

/* ── TravelGuard Assist (bottom-left action assistant) ── */
#assist-launch{position:fixed;left:132px;top:56px;z-index:99996;background:linear-gradient(135deg,#1e3a5f,#2563a8);color:#fff;border:none;border-radius:6px;padding:8px 14px;font-family:var(--mono);font-size:15px;font-weight:700;letter-spacing:.5px;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.4);}
#assist-launch:hover{filter:brightness(1.08);}
#assist-panel{position:fixed;left:118px;top:50px;bottom:36px;z-index:99996;width:360px;max-width:calc(100vw - 118px);display:none;flex-direction:column;background:#0e1319;border:none;border-left:1px solid rgba(255,255,255,0.08);border-right:1px solid rgba(255,255,255,0.08);border-radius:0;box-shadow:4px 0 24px rgba(0,0,0,.5);overflow:hidden;}
.assist-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border2);background:var(--surface2);flex-shrink:0;}
.assist-title{font-family:var(--mono);font-size:16px;font-weight:700;color:var(--accent);letter-spacing:1.5px;}
.assist-head button{background:transparent;border:1px solid var(--border2);color:var(--muted);width:28px;height:24px;border-radius:5px;cursor:pointer;font-size:20px;line-height:1;padding:0;}
.assist-log{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px;}
.assist-msg{display:flex;}
.assist-user{justify-content:flex-end;}
.assist-bubble{max-width:82%;padding:10px 14px;border-radius:16px;font-size:17px;line-height:1.55;white-space:pre-wrap;word-wrap:break-word;font-family:'Inter','Segoe UI',system-ui,-apple-system,sans-serif;letter-spacing:.1px;box-shadow:0 1px 2px rgba(0,0,0,.25);}
/* User = white bubble, black text (right). AI = dark-blue bubble, light text (left) — attribution at a glance. */
.assist-user .assist-bubble{background:#ffffff;color:#161b22;border-bottom-right-radius:5px;}
.assist-assistant .assist-bubble{background:#15294d;color:#eaf1fb;border:1px solid rgba(79,156,249,0.22);border-bottom-left-radius:5px;}
.assist-inrow{display:flex;gap:6px;padding:10px;border-top:1px solid var(--border2);flex-shrink:0;}
/* v12.30: light-blue prompt bar, BLACK font (operator directive). Blue is a light tint of the
   assist-assistant bubble navy (#15294d) so the bar and bubbles read as one family. */
.assist-inrow input{flex:1;background:#bcd2ee;border:1px solid #15294d;border-radius:7px;padding:9px 11px;color:#000000;font-size:16px;font-weight:700;font-family:var(--sans);outline:none;}
.assist-inrow input::placeholder{color:#1a2b45;opacity:1;}
.assist-inrow input:focus{border-color:var(--accent);}
/* v12.36: Send matches the input exactly (operator directive — supersedes the v12.32 shade split) */
.assist-inrow button{background:#bcd2ee;color:#000000;border:1px solid #15294d;border-radius:7px;padding:9px 15px;font-weight:700;font-size:16px;cursor:pointer;}
#atf-amend-input::placeholder{color:#0a1526;opacity:1;} /* v12.37: darker per operator */
.assist-inrow button:hover{filter:brightness(1.05);}

/* Assist — "What am I?" expandable + reasoning feedback */
.assist-whatami{border-bottom:1px solid var(--border2);background:var(--surface);flex-shrink:0;}
.assist-whatami summary{cursor:pointer;padding:8px 14px;font-family:var(--mono);font-size:15px;color:var(--accent);font-weight:600;list-style:none;user-select:none;}
.assist-whatami summary::-webkit-details-marker{display:none;}
.assist-whatami summary:before{content:'\25b8  ';color:var(--muted);}
.assist-whatami[open] summary:before{content:'\25be  ';}
.assist-whatami-body{padding:0 14px 12px;font-size:16px;line-height:1.5;color:var(--muted);}
.assist-fb{display:flex;align-items:center;gap:6px;margin-top:5px;}
.assist-fb-q{font-size:14px;color:var(--muted2);}
.assist-fb button{width:24px;height:20px;border-radius:4px;border:1px solid var(--border2);background:transparent;cursor:pointer;font-size:14px;line-height:1;padding:0;}
.assist-fb-y{color:#34d399;}
.assist-fb-n{color:#e0554a;}
.assist-fb-thanks{font-size:14px;color:var(--muted2);}

/* ══════════════════════════════════════════════════════════════
   SAFEGO REDESIGN — v11.14 — Sentinel-esque civilian skin
   Same dark chrome, same color tokens, simplified language
   ══════════════════════════════════════════════════════════════ */

/* Mode tabs */
.sg-mode-tabs{display:flex;gap:4px;background:rgba(0,0,0,0.3);border-radius:6px;padding:3px;}
.sg-tab{padding:6px 14px;border-radius:4px;border:none;background:transparent;
  color:var(--muted);font-family:var(--mono);font-size:14px;font-weight:600;
  cursor:pointer;letter-spacing:.4px;transition:all .15s;}
.sg-tab.active{background:var(--surface);color:var(--accent);
  box-shadow:0 1px 4px rgba(0,0,0,.4);}
.sg-tab:hover:not(.active){color:var(--text);}

/* Mode content panels */
.sg-mode-content{flex:1;display:flex;flex-direction:column;overflow:hidden;}

/* cs-header update — tighter, more Sentinel */


/* Find Safest search bar */
.sg-search-bar{display:flex;gap:8px;align-items:center;
  padding:12px 16px;background:var(--surface2);
  border-bottom:1px solid var(--border2);flex-shrink:0;flex-wrap:wrap;}
.sg-select{background:var(--bg);color:var(--text);border:1px solid var(--border2);
  border-radius:4px;padding:6px 10px;font-family:var(--mono);font-size:15px;
  cursor:pointer;min-height:34px;}
.sg-select:focus{border-color:var(--accent);outline:none;}
.sg-input{flex:1;min-width:180px;background:var(--bg);color:var(--text);
  border:1px solid var(--border2);border-radius:4px;padding:6px 10px;
  font-family:var(--mono);font-size:15px;min-height:34px;}
.sg-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px var(--accent-dim);}

.sg-rank-btn:hover{background:linear-gradient(135deg,#2550a0,#2f79e8);transform:translateY(-1px);}
.sg-rank-btn:disabled{opacity:.5;cursor:not-allowed;transform:none;}
.sg-status{padding:10px 16px;font-family:var(--mono);font-size:15px;color:var(--accent);
  background:var(--surface2);border-bottom:1px solid var(--border2);}

/* Split layout */
#sg-split{flex:1;display:grid;grid-template-columns:340px 1fr;overflow:hidden;}
.sg-cards-panel{overflow-y:auto;border-right:1px solid var(--border2);
  background:var(--bg);}
.sg-map-panel{position:relative;background:#0d1117;}
#sg-map{width:100%;height:100%;min-height:400px;}
.sg-map-legend{position:absolute;top:8px;left:50%;transform:translateX(-50%);
  z-index:1000;background:rgba(13,16,23,.85);border:1px solid var(--border2);
  color:var(--muted);font-family:var(--mono);font-size:12px;letter-spacing:.5px;
  padding:4px 10px;border-radius:12px;white-space:nowrap;pointer-events:none;}

/* Results header */
.sg-results-header{padding:10px 14px;border-bottom:1px solid var(--border2);
  background:var(--surface);display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;}
.sg-results-title{font-family:var(--mono);font-size:15px;font-weight:700;
  color:var(--accent);letter-spacing:.5px;}
.sg-results-loc{font-family:var(--mono);font-size:14px;color:var(--text);}
.sg-results-note{font-family:var(--mono);font-size:12px;color:var(--muted2);
  margin-left:auto;}

/* Rank cards — Sentinel aesthetic */
.sg-card{padding:12px 14px;border-bottom:1px solid var(--border2);
  cursor:pointer;transition:background .12s;border-left:3px solid transparent;}
.sg-card:hover{background:rgba(255,255,255,.03);}
.sg-card.sg-card-active{background:rgba(79,156,249,.06);
  border-left-color:var(--accent);}
.sg-card-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:7px;}
.sg-rank-badge{width:28px;height:28px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:15px;font-weight:700;color:#fff;
  flex-shrink:0;margin-top:1px;}
.sg-card-name{flex:1;min-width:0;}
.sg-venue-name{font-size:18px;font-weight:600;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sg-venue-addr{font-size:15px;color:var(--text,#eaeaea);margin-top:1px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sg-threat-pill{font-family:var(--mono);font-size:12px;font-weight:700;
  padding:2px 7px;border-radius:10px;border:1px solid;letter-spacing:.5px;
  white-space:nowrap;flex-shrink:0;}

/* Score bar */
.sg-score-bar{height:3px;background:rgba(255,255,255,.08);border-radius:2px;
  margin-bottom:5px;overflow:hidden;}
.sg-score-fill{height:100%;border-radius:2px;transition:width .4s;}
.sg-score-label{font-family:var(--mono);font-size:15px;color:var(--text,#eaeaea);margin-bottom:5px;}
.sg-family-badge{background:rgba(34,197,94,.15);color:#4ade80;
  border:1px solid rgba(34,197,94,.3);border-radius:8px;
  padding:1px 7px;font-size:12px;margin-left:6px;}

/* Text sections */
.sg-neighborhood{font-size:16px;color:var(--text);line-height:1.5;margin-bottom:4px;}
.sg-summary{font-size:15px;color:var(--text,#eaeaea);line-height:1.5;margin-top:4px;}
.sg-risks{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px;}
.sg-risk-tag{font-family:var(--mono);font-size:12px;padding:2px 7px;
  border-radius:8px;background:rgba(239,68,68,.12);
  border:1px solid rgba(239,68,68,.25);color:#f87171;}

/* SafeGo popup (Leaflet) */
.sg-popup .leaflet-popup-content-wrapper{
  background:var(--surface,#1a1f2e);border:1px solid var(--border2,#2a2e36);
  border-radius:6px;box-shadow:0 8px 24px rgba(0,0,0,.5);color:var(--text,#eaeaea);}
.sg-popup .leaflet-popup-tip{background:var(--surface,#1a1f2e);}

/* cs-header update for Sentinel look */



.cs-exit-btn:hover{border-color:var(--accent);color:var(--accent);}

/* Check venue mode — tighten existing styles */
#sg-check-panel 
#sg-check-panel 
#sg-check-panel 

/* ── ASSIST LEFT PANEL — workspace adjustment ── */
/* Rail stays put; Assist takes dedicated space and pushes the MAP right (not the rail) */
body.assist-open .map-panel{margin-left:360px;transition:margin-left .18s ease;}
body.assist-open #assist-launch{display:none;}

/* Direction A — modal surface override: match render dark tone */
.emg-box,.pm-box,.fb-box,.legal-box,.ada-box,.esc-box,.qm-box,
#atf-modal .atf-box,.legal-h1~*,.a11y-panel,.a11y-box{background:#0f1218 !important;}

/* Direction A: non-dashboard tabs restore their content padding */
#tp-situation,#tp-response,#tp-trauma,#tp-routes,#tp-crime,
#tp-evidence,#tp-feeds,#tp-log,#tp-sessions,#tp-locationintel{padding:10px 13px;}
#tp-atf{padding:6px 0;}


/* ══════════════════════════════════════════════════════════════
   DIRECTION A — PLATFORM DESIGN CONVERGENCE (v11.90)
   Unifies every tab's section labels, card families, dividers and
   idle states onto the Direction A tactical-brief language.
   Appended last → equal-specificity overrides win by source order.
   ══════════════════════════════════════════════════════════════ */

/* Section labels → DA mono strip (0.18 divider) */
.slbl{
  font-size:12px;font-weight:700;font-family:var(--mono);letter-spacing:1px;
  text-transform:uppercase;color:var(--muted2);
  margin:13px 0 6px;padding-bottom:5px;
  border-bottom:1px solid rgba(255,255,255,0.06);
}
.slbl:first-child{margin-top:0;}

/* Neutral card → DA left-bar */
.card{
  background:rgba(255,255,255,0.02);
  border:none;border-left:2px solid rgba(255,255,255,0.06);
  border-radius:0 6px 6px 0;padding:7px 10px;
}

/* Situation cards → DA left-bar (per-type hue on the bar) */
.sitcard{border:none;border-left:2px solid;border-radius:0 6px 6px 0;padding:7px 10px;}
.sitcard.danger{border-left-color:var(--red);background:rgba(248,113,113,0.05);}
.sitcard.protest{border-left-color:var(--amber);background:rgba(251,191,36,0.05);}
.sitcard.homeless{border-left-color:var(--teal);background:rgba(45,212,191,0.05);}
.sitcard.nuisance{border-left-color:var(--purple);background:rgba(192,132,252,0.05);}

/* Response cards → DA left-bar */
.respcard{border:none;border-left:2px solid;border-radius:0 6px 6px 0;padding:7px 10px;}
.respcard.police{border-left-color:var(--accent);background:rgba(79,156,249,0.05);}
.respcard.fire{border-left-color:var(--orange);background:rgba(251,146,60,0.05);}
.respcard.ems{border-left-color:var(--red);background:rgba(248,113,113,0.05);}
.resp-district{border-top-color:rgba(255,255,255,0.06);}

/* Route cards → DA left-bar */
.routecard{border:none;border-left:2px solid;border-radius:0 6px 6px 0;padding:7px 10px;}
.routecard.primary{border-left-color:var(--green);background:rgba(52,211,153,0.05);}
.routecard.secondary{border-left-color:var(--accent);background:rgba(79,156,249,0.05);}
.routecard.emergency{border-left-color:var(--red);background:rgba(248,113,113,0.05);}
.routecard.avoid{border-left-color:var(--orange);background:rgba(251,146,60,0.05);}
.rtwhy{border-top-color:rgba(255,255,255,0.06);}

/* Trauma cards → DA left-bar */
.tc-card{border:none;border-left:2px solid rgba(248,113,113,0.55);border-radius:0 6px 6px 0;background:rgba(255,77,109,0.05);}
.tc-card:hover{border-left-color:var(--crimson);box-shadow:none;}
.tc-primary{border-left-color:var(--crimson);}

/* Feed cards → DA left-bar */
.feedcard{background:rgba(255,255,255,0.02);border:none;border-left:2px solid rgba(255,255,255,0.06);border-radius:0 6px 6px 0;}

/* Evidence cards → DA left-bar (already left-barred; drop full border) */
.evcard{border:none;border-left:2px solid;border-radius:0 6px 6px 0;background:rgba(255,255,255,0.02);}

/* ── DA IDLE SKELETON (all tabs) ── */
.da-idle{padding:0;}
.da-idle .da-hd{background:#070b11;border-bottom:3px solid rgba(255,255,255,0.1);padding:11px 13px 9px;margin:-10px -13px 10px;}
.da-idle .da-hd-title{font-size:16px;font-weight:900;font-family:var(--mono);color:#ffffff;letter-spacing:.5px;}
.da-idle .da-hd-sub{font-size:14px;color:#ffffff;margin-top:3px;font-family:var(--mono);line-height:1.4;}
.da-idle-zone{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,0.06);padding:10px 3px;}
.da-idle-lbl{font-size:12px;font-family:var(--mono);color:#ffffff;letter-spacing:1px;text-transform:uppercase;}
.da-idle-val{font-size:12px;color:#ffffff;font-family:var(--mono);}
.da-idle-cta{border:1px dashed rgba(255,255,255,0.12);border-radius:6px;padding:18px 12px;text-align:center;margin-top:14px;}
.da-idle-cta-txt{font-size:14px;color:#ffffff;margin-bottom:10px;font-family:var(--mono);}
.da-idle-btn{background:linear-gradient(135deg,#1e3a5f,#2563a8);border:none;color:#fff;font-size:15px;font-weight:700;padding:7px 20px;border-radius:4px;cursor:pointer;font-family:var(--mono);letter-spacing:.3px;}


/* ── DIRECTION A — WAVE 2 convergence polish (v11.92) ── */
/* Modal boxes → locked #0f1218; internal dividers → DA 0.18 */
.tc-ov-box{background:#0f1218;}
.pm-box{background:#0f1218;}
.atf-box{background:#0f1218;}
.tc-ov-section{border-top:none;}
.tc-ov-row{border-bottom:1px solid rgba(255,255,255,0.06);}
/* Modal section labels already muted2/uppercase — align size/spacing to DA */
.tc-ov-label,.pm-label,.atf-label{letter-spacing:.6px;}

/* ── DEV PANEL normalization (v12.06) — one uniform size, less busy ── */
#pcs-dev-panel,#pcs-dev-panel *{font-size:13px!important;line-height:1.5!important;}
#pcs-dev-drag span{font-size:14px!important;letter-spacing:.5px!important;}
#pcs-dev-panel button{line-height:1.2!important;}
#pcs-dev-panel label{margin-top:6px;}

/* ============================================================
   DESKTOP LAYOUT SWAPPER (v12.85) — "UI light customization"
   One knob: body[data-layout=B|C|D|E]. Each layout is a CSS-grid
   REARRANGEMENT of the same live panels (view-rail, map-panel,
   right-panel/report). Grid named-areas ignore DOM source order,
   so map-on-top (D) works without re-nesting the DOM. The floating
   ARGUS assist panel keeps its own dock behavior in every layout.
   Desktop only: gated to >=900px and NOT .pcs-mobile-device, so
   phones (which serve the mobile v4 build) are never touched.
   No data-layout attribute = legacy Split Command (untouched).
   ============================================================ */
@media (min-width:900px){
  /* common grid framing for every switchable layout */
  html:not(.pcs-mobile-device) body[data-layout="B"] .workspace,
  html:not(.pcs-mobile-device) body[data-layout="C"] .workspace,
  html:not(.pcs-mobile-device) body[data-layout="D"] .workspace,
  html:not(.pcs-mobile-device) body[data-layout="E"] .workspace{
    display:grid!important;
    gap:0!important;
    min-height:0!important;
    height:calc(100dvh - 50px)!important;
  }
  /* map/report become grid items — drop the fixed flex widths so the grid tracks win */
  html:not(.pcs-mobile-device) body[data-layout] .map-panel{grid-area:map;min-width:0!important;flex:none!important;}
  html:not(.pcs-mobile-device) body[data-layout] .right-panel{grid-area:report;width:auto!important;min-width:0!important;max-width:none!important;flex:none!important;}
  html:not(.pcs-mobile-device) body[data-layout] .view-rail{grid-area:rail;height:auto!important;}
  /* the map-strip is position:absolute — anchoring it to the map grid area makes that cell its
     containing block, so its bottom:0 pins it to the bottom of the MAP in every layout (incl. D
     where the map sits on top), instead of the whole workspace. Also keeps it out of auto-flow. */
  html:not(.pcs-mobile-device) body[data-layout] #map-strip{grid-area:map;}
  /* grid controls geometry, so the drag-resizer is inert here */
  html:not(.pcs-mobile-device) body[data-layout="B"] .resize-handle,
  html:not(.pcs-mobile-device) body[data-layout="C"] .resize-handle,
  html:not(.pcs-mobile-device) body[data-layout="D"] .resize-handle,
  html:not(.pcs-mobile-device) body[data-layout="E"] .resize-handle{display:none!important;}

  /* B — IMMERSIVE MAP: map dominant, but NOTHING is hidden — full nav rail stays on the left and
     the report stays reachable as a slim right column. Capability-first (operator directive v12.85):
     eyes on the map without losing a single control. */
  html:not(.pcs-mobile-device) body[data-layout="B"] .workspace{
    grid-template-columns:118px minmax(0,1fr) 320px!important;
    grid-template-rows:1fr!important;
    grid-template-areas:"rail map report"!important;
  }

  /* C — OPS CONSOLE: everything visible and dense — rail + big map + fat data column. */
  html:not(.pcs-mobile-device) body[data-layout="C"] .workspace{
    grid-template-columns:118px minmax(0,1.35fr) minmax(0,1fr)!important;
    grid-template-rows:1fr!important;
    grid-template-areas:"rail map report"!important;
  }
  html:not(.pcs-mobile-device) body[data-layout="C"] .tp,
  html:not(.pcs-mobile-device) body[data-layout="C"] .right-panel .view-shell{padding-top:4px!important;}

  /* D — BRIEFING / REVIEW (default): map on TOP, report BELOW, rail on the left.
     Reading orientation — brief the principal / review the assessment. */
  html:not(.pcs-mobile-device) body[data-layout="D"] .workspace{
    grid-template-columns:118px 1fr!important;
    grid-template-rows:46% 1fr!important;
    grid-template-areas:"rail map" "rail report"!important;
  }

  /* E — DUAL-PANE: balanced 50/50 map | report — compare & verify side by side. */
  html:not(.pcs-mobile-device) body[data-layout="E"] .workspace{
    grid-template-columns:118px 1fr 1fr!important;
    grid-template-rows:1fr!important;
    grid-template-areas:"rail map report"!important;
  }

  /* BRIEFING — ARGUS gets its OWN column (v12.85, operator: "Briefing is the best, work with this").
     When ARGUS is open, reserve a dedicated column between the rail and the map/report so ARGUS keeps
     Ricky's big font and reads cleanly with ZERO overlap. When ARGUS is closed, Briefing falls back to
     the plain 2-column (rail | map-top/report-below) via the [data-layout="D"] rule above. */
  html:not(.pcs-mobile-device) body.assist-open[data-layout="D"] .workspace{
    grid-template-columns:118px 430px 1fr!important;
    grid-template-rows:46% 1fr!important;
    grid-template-areas:"rail argus map" "rail argus report"!important;
  }
  html:not(.pcs-mobile-device) body.assist-open[data-layout="D"] #assist-panel{
    left:120px!important; top:64px!important; bottom:0!important; width:560px!important; z-index:900!important;
  }

  /* Layout button lit-state — the topbar control glows when a non-default view is picked */
  #pcs-layout-btn{transition:all .15s;}
  #pcs-layout-btn .pcs-layout-caret{opacity:.7;font-size:11px;margin-left:2px;}
}
/* the desktop layout swapper is desktop-only — hide the control in mobile-device mode */
html.pcs-mobile-device #pcs-layout-btn{display:none!important;}
@media (max-width:899px){ #pcs-layout-btn{display:none!important;} }

/* ── LAYOUT MENU — fleshed-out picker (v12.85) ───────────────────────────────
   Each row is a mini live-diagram of the arrangement + name + one-line description,
   with the current pick marked. The thumbnails are tiny CSS grids that mirror the
   real layout (rail · argus · map · report), so you SEE the shape before you pick. */
#menu-layout{min-width:340px!important;padding:8px!important;}
#menu-layout .lay-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:9px 10px;border:1px solid transparent;background:transparent;color:#fff;font-family:var(--mono);font-size:15px;cursor:pointer;border-radius:8px;margin-bottom:3px;}
#menu-layout .lay-row:hover{background:rgba(79,156,249,0.10);border-color:rgba(79,156,249,0.35);}
#menu-layout .lay-row.is-active{background:rgba(79,156,249,0.16);border-color:rgba(79,156,249,0.6);}
#menu-layout .lay-txt{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1;}
#menu-layout .lay-name{font-weight:700;letter-spacing:.2px;display:flex;align-items:center;gap:7px;}
#menu-layout .lay-name .lay-badge{font-size:10px;font-weight:700;color:#0b0e13;background:#7fd6a8;border-radius:4px;padding:1px 5px;letter-spacing:.4px;}
#menu-layout .lay-desc{font-size:12px;color:#c7d3e2;}
#menu-layout .lay-check{margin-left:auto;color:#7fd6a8;font-weight:800;opacity:0;flex:0 0 auto;}
#menu-layout .lay-row.is-active .lay-check{opacity:1;}
#menu-layout .lay-sep{height:1px;background:var(--border2);margin:5px 6px;}
#menu-layout .lay-hd{font-family:var(--mono);font-size:12px;letter-spacing:.6px;color:#fff;padding:4px 10px 6px;text-transform:uppercase;}
/* the mini diagram */
.lay-thumb{width:50px;height:36px;flex:0 0 auto;border:1px solid var(--border2);border-radius:5px;background:#0b0e13;display:grid;gap:2px;padding:3px;box-sizing:border-box;}
.lay-thumb i{border-radius:2px;display:block;}
.lay-thumb .r{background:#5570a0;grid-area:r;}
.lay-thumb .a{background:#3f8a5c;grid-area:a;}
.lay-thumb .m{background:#2f7fbf;grid-area:m;}
.lay-thumb .p{background:#3a537f;grid-area:p;}
.lt-D{grid-template-columns:4px 12px 1fr;grid-template-rows:1fr 1fr;grid-template-areas:"r a m" "r a p";}
.lt-B{grid-template-columns:4px 1fr 10px;grid-template-rows:1fr;grid-template-areas:"r m p";}
.lt-C{grid-template-columns:4px 1.3fr 1fr;grid-template-rows:1fr;grid-template-areas:"r m p";}
.lt-E{grid-template-columns:4px 1fr 1fr;grid-template-rows:1fr;grid-template-areas:"r m p";}
.lt-T{grid-template-columns:1fr 1fr;grid-template-rows:1fr;grid-template-areas:"a m";}

/* ============================================================
   BRIEFING v2 (v12.86) — persistent styles paired with the module
   public/pcs_briefing_v2.js: omni hidden, topbar View menu, and the
   trip-stop cards (clickable · accordion · scrollable). Desktop-scoped.
   ============================================================ */
html:not(.pcs-mobile-device) #pcs-omnibox{display:none!important}

/* View ▾ dropdown in the topbar — relays the real (hidden) map controls */
#pcs-view-wrap{position:relative;display:inline-flex;margin-left:10px}
#pcs-view-btn{padding:6px 12px;border-radius:7px;border:1px solid var(--border2,#2a3240);background:transparent;color:#eaf1f8;font-family:var(--mono);font-size:14px;font-weight:600;cursor:pointer;min-height:36px}
#pcs-view-btn:hover{background:rgba(255,255,255,.05)}
#pcs-view-dd{display:none;position:fixed;top:52px;left:12px;min-width:224px;background:var(--surface,#12161c);border:1px solid var(--border2,#2a3240);border-radius:9px;box-shadow:0 12px 40px rgba(0,0,0,.6);padding:6px;z-index:99998}
#pcs-view-dd.open{display:block}
#pcs-view-dd .vd-hd{font-size:12px;letter-spacing:.6px;color:#fff;padding:5px 10px 6px;text-transform:uppercase}
#pcs-view-dd .vd-item{display:flex;align-items:center;gap:9px;width:100%;text-align:left;padding:9px 11px;border:none;background:transparent;color:#fff;font-family:var(--mono);font-size:14px;font-weight:600;cursor:pointer;border-radius:6px}
#pcs-view-dd .vd-item:hover{background:rgba(79,156,249,.16)}
html.pcs-mobile-device #pcs-view-wrap{display:none!important}

/* Trip-stop cards — white text (Ricky's rule), clickable, single-open accordion, scrollable */
#pcs-carddemo{padding:12px 14px;overflow-y:auto;overflow-x:hidden}
#pcs-carddemo::-webkit-scrollbar{width:10px}
#pcs-carddemo::-webkit-scrollbar-thumb{background:#2f3c4e;border-radius:6px}
#pcs-carddemo::-webkit-scrollbar-track{background:rgba(255,255,255,.03)}
#pcs-carddemo .pc-h{position:sticky;top:0;background:#0b0e13;z-index:3;display:flex;align-items:baseline;gap:10px;padding:6px 2px 10px;margin:0 0 10px;flex-wrap:wrap}
#pcs-carddemo .pc-h b{font-size:16px;color:#fff;font-weight:800}
#pcs-carddemo .pc-h span{font-size:13px;color:#eef3f9}
#pcs-cardgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;align-items:start}
.pcs-card{background:#141a22;border:1px solid #2a3442;border-left:4px solid #4f9cf9;border-radius:12px;padding:14px 16px;box-shadow:0 2px 10px rgba(0,0,0,.35);cursor:pointer;transition:border-color .15s,box-shadow .15s}
.pcs-card:hover{border-color:#3f6ea8}
.pcs-card.venue{border-left-color:#f0b64a}.pcs-card.hotel{border-left-color:#7fd6a8}.pcs-card.transit{border-left-color:#6aa9e0}.pcs-card.restaurant{border-left-color:#c58cf0}
.pcs-card .pc-top{display:flex;align-items:center;gap:8px}
.pcs-card .pc-ico{font-size:20px}
.pcs-card .pc-name{font-weight:800;font-size:15px;color:#fff;line-height:1.25;flex:1}
.pcs-card .pc-chev{color:#eaf1f8;font-size:13px;transition:transform .15s}
.pcs-card .pc-addr{font-size:15px;color:#fff;font-weight:600;line-height:1.4;margin:7px 0 10px}
.pcs-card .pc-row{display:flex;justify-content:space-between;align-items:center;gap:8px}
.pcs-card .pc-tag{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;padding:2px 9px;border-radius:20px;background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.26)}
.pcs-card .pc-time{font-size:13px;color:#fff;font-weight:700}
.pcs-card .pc-detail{display:none}
.pcs-card .pc-opts{display:none}
.pcs-card.expanded{grid-column:1 / -1;border-left-width:6px;padding:22px 26px;box-shadow:0 12px 36px rgba(0,0,0,.6);cursor:default;background:#161d27}
.pcs-card.expanded .pc-ico{font-size:28px}
.pcs-card.expanded .pc-name{font-size:23px}
.pcs-card.expanded .pc-chev{font-size:16px;cursor:pointer;padding:5px 11px;border:1px solid #34435a;border-radius:7px;color:#fff;transform:rotate(180deg)}
.pcs-card.expanded .pc-chev:hover{background:rgba(255,255,255,.08)}
.pcs-card.expanded .pc-addr{font-size:20px;color:#fff;margin:12px 0 8px}
.pcs-card.expanded .pc-tag{font-size:13px}
.pcs-card.expanded .pc-time{font-size:15px}
.pcs-card.expanded .pc-detail{display:block;font-size:15px;color:#fff;line-height:1.55;margin:13px 0 4px;padding:13px 15px;background:rgba(255,255,255,.06);border:1px solid #2b3646;border-radius:10px}
.pcs-card.expanded .pc-opts{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:15px;border-top:1px solid #24303f;padding-top:17px}
.pcs-card.expanded .pc-opt{display:flex;flex-direction:column;align-items:center;gap:7px;font-size:14.5px;font-weight:700;color:#fff;background:rgba(79,156,249,.18);border:1px solid rgba(79,156,249,.42);border-radius:10px;padding:17px 10px;cursor:pointer;transition:background .12s}
.pcs-card.expanded .pc-opt:hover{background:rgba(79,156,249,.32)}
.pcs-card.expanded .pc-opt .oi{font-size:25px}
