@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/barlow-condensed-10c69b92.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/barlow-condensed-28c6fc47.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/barlow-condensed-b3f56918.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/public-sans-cd00287f.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
:root{--canvas:#eff0f2;--panel:#fbfbfc;--inset:#f4f5f7;--control:#e6e8ec;--border:#ccd0d7;--border-strong:#7d8693;--rule:#e1e4e8;
--text:#20242d;--text2:#404955;--text3:#596270;--btn:#34323c;--shell:#292932;--shell-hi:#e9e6e8;--shell-ink:#24212a;
--teal:#0b6f6a;--teal-bg:#dcefec;--teal-dark:#6cc5bb;--gold:#79500c;--gold-bg:#f4e2bb;--err:#983d30;--err-bg:#faeae7;
--on-text:#fff;--on-teal:#fff;--btn-hover:#504951;--ok:#12665b;--ok-bg:#e7f3ef;--sel:#c9e4e0;
--cue-law:#3f6d92;--cue-fire:#b04a3e;--cue-ems:#84529a;--cue-traffic:#6b7380;--cue-other:#8a5a2b;color-scheme:light dark;
--head:'Barlow Condensed','Arial Narrow','Helvetica Neue',sans-serif;--ui:'Public Sans','Helvetica Neue',Arial,sans-serif}
*{box-sizing:border-box}
body{margin:0;background:var(--canvas);color:var(--text);font-family:var(--ui);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit}
a,.link{color:var(--teal);text-underline-offset:3px}
.link{background:none;border:0;padding:0;font-size:12px;font-weight:600;cursor:pointer}
::selection{background:var(--sel)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
h1,h2,h3{font-family:var(--head);font-weight:600;margin:0}
h1{font-size:40px;line-height:1.1}h2{font-size:25px;line-height:1.1}h3{font-size:21px;line-height:1.1}
.app{display:grid;grid-template-columns:200px minmax(0,1fr);grid-template-rows:60px 1fr;min-height:100vh}
.masthead{grid-column:1/-1;display:flex;align-items:center;gap:24px;padding:0 24px;background:var(--shell);color:#f1f0f3;border-bottom:1px solid #1d1d24}
.brand{display:flex;align-items:center;gap:10px;white-space:nowrap}.brand-name{font:600 23px var(--head)}
.mast-status{display:flex;align-items:center;gap:8px;font-size:12px;color:#c9c6cd}
.dot{width:7px;height:7px;border-radius:50%;background:var(--teal-dark)}.dot.warning{background:#e0b45a}.dot.error{background:#e58a7f}
.mast-date{margin-left:auto;font-size:13px;color:#f1f0f3;white-space:nowrap}
.brand-mark{display:block;width:36px;height:32px;object-fit:contain}
.nav{background:var(--shell);color:#ebe9ed;padding:20px 12px;display:flex;flex-direction:column;gap:4px}
.nav-item{text-align:left;border:0;padding:10px 12px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;background:transparent;color:#ebe9ed}
.nav-item:hover{background:#40404a;color:#fff}
.nav-item.active{background:var(--shell-hi);color:var(--shell-ink);font-weight:700}
.nav-small{font-size:12px;padding:7px 12px;color:#d0cbd3}
.nav-sep{margin-top:14px;border-top:1px solid #62606a}
.nav-watch{margin-top:20px;padding:16px 12px 0;border-top:1px solid #62606a;display:flex;flex-direction:column;gap:14px}
.nav-label{font-size:11px;color:#a9a5ad;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.nav-watch b{display:block;font-size:13px;color:#fff}.nav-watch small{font-size:12px;color:#c9c6cd}
.unit-strip[hidden]{display:none}
.watch-list{display:flex;flex-direction:column;gap:2px}
.watch-sub{font-size:11px;color:#a9a5ad;font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin-top:10px}
.watch-row{display:flex;align-items:center;gap:4px}
.watch-item{flex:1;min-width:0;text-align:left;background:none;border:0;color:#fff;font-size:13px;font-weight:600;padding:4px 0;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.watch-item:hover{text-decoration:underline}
.watch-x{background:none;border:0;color:#c9c6cd;cursor:pointer;font-size:16px;line-height:1;padding:0 4px}
.watch-x:hover{color:#fff}
.watch-empty{font-size:12px;color:#c9c6cd;line-height:1.5}
.rule-actions{display:flex;gap:14px;align-items:center}
.watch-control{display:flex;gap:8px;align-items:center;font-size:12px;color:#c9c6cd;cursor:pointer}
.main{min-width:0;display:flex;flex-direction:column}
.view{padding:28px clamp(18px,3vw,44px) 40px;max-width:1560px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:22px}
.view[hidden]{display:none}.view.narrow{max-width:920px;margin:0}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}
.page-head.ruled{border-bottom:1px solid var(--border);padding-bottom:18px}
.lede{margin:6px 0 0;font-size:14px;color:var(--text2);max-width:75ch;line-height:1.55}
.fine{margin:0;font-size:12px;line-height:1.5;color:var(--text3)}.fine.light{color:#a9a5ad}
.optional{font-weight:400;color:var(--text3)}
.btn{padding:9px 16px;border-radius:5px;font-weight:600;font-size:13px;cursor:pointer;border:1px solid var(--btn);white-space:nowrap}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-primary{background:var(--btn);color:#fff}.btn-primary:hover:not(:disabled){background:var(--btn-hover)}
.btn-soft{background:var(--control);color:var(--text);border-color:var(--border)}.btn-soft:hover:not(:disabled){border-color:#6c7480}
.btn-ghost{background:transparent;color:#f1f0f3;border-color:#62606a}.btn-ghost:hover:not(:disabled){background:#40404a}
.btn.is-kept{background:var(--teal-bg);color:var(--teal);border-color:var(--teal-dark)}
input,select,textarea{padding:10px 12px;font-size:14px;background:var(--panel);border:1px solid var(--border-strong);border-radius:5px;color:var(--text);outline-color:var(--teal);width:100%}
.search-form{display:flex;gap:8px;flex:1;max-width:480px;min-width:280px}.search-form.big{max-width:none}
.search-form.big input{padding:13px 14px;font-size:16px}
.form{display:flex;flex-direction:column;gap:10px;font-size:12px;font-weight:600}
.form.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:12px}
.form label{display:flex;flex-direction:column;gap:6px}.form .wide{grid-column:1/-1}
.form label.check,.check{flex-direction:row;gap:10px;align-items:flex-start;font-weight:400;font-size:13px;line-height:1.5;cursor:pointer}
.check input{width:16px;height:16px;margin-top:2px;accent-color:var(--teal);flex:none}
.form .btn{align-self:flex-start}.form .fine{font-weight:400}
.chips,.tags{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.chip{display:flex;gap:6px;align-items:center;padding:6px 11px;border-radius:4px;font-size:12px;font-weight:600;cursor:pointer;border:1px solid var(--border);background:var(--panel);color:var(--text)}
.chip small{font-weight:500;opacity:.75}.chip.on{background:var(--text);color:var(--on-text);border-color:var(--text)}
.tag{font-size:11px;font-weight:700;padding:2px 6px;border-radius:3px;background:var(--control);color:var(--text2)}
.tag.home{background:var(--teal-bg);color:var(--teal)}.tag.unit{background:var(--gold-bg);color:var(--gold)}
.tag.priority{background:var(--text);color:var(--on-text)}.tag.kept{background:var(--teal-bg);color:var(--teal)}
.unit-strip{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:20px;padding:16px 20px;background:var(--panel);border:1px solid var(--border);border-radius:8px}
.unit-id{display:flex;flex-direction:column;gap:2px;padding-right:20px;border-right:1px solid var(--border)}
.unit-id b{font:600 30px/1 var(--head)}.unit-id small,.unit-last small{font-size:12px;color:var(--text3)}
.unit-last p{margin:4px 0 0;font-size:15px;text-wrap:pretty}
.today-grid,.two-col{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr));gap:28px;align-items:start}
.stack{min-width:0;display:flex;flex-direction:column;gap:14px}
.feed{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--panel)}
.row{display:grid;grid-template-columns:76px minmax(0,1fr);gap:16px;padding:16px 18px;border:0;border-bottom:1px solid var(--rule);background:transparent;text-align:left;cursor:pointer;width:100%;color:inherit}
.row:hover{background:var(--inset)}.row.selected{background:var(--teal-bg)}
.row-time{display:flex;flex-direction:column;gap:3px;font-variant-numeric:tabular-nums}
.row-time b{font:600 22px/1 var(--head)}.row-time small{font-size:11px;color:var(--text3)}
.row-body{min-width:0;display:flex;flex-direction:column;gap:5px}
.row-title{font:600 21px/1.15 var(--head)}.row-text{font-size:13px;line-height:1.5;color:var(--text2);text-wrap:pretty}
.row-meta{font-size:12px;color:var(--text3)}
.empty{padding:28px 20px;font-size:13px;line-height:1.6;color:var(--text3)}.empty b{display:block;color:var(--text);margin-bottom:4px}
mark{background:var(--gold-bg);color:var(--text);padding:0 2px;border-radius:2px}
.rule-head{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--border);padding-bottom:10px}
.player{background:var(--shell);color:#f1f0f3;border-radius:8px;padding:16px 18px;display:flex;flex-direction:column;gap:10px}
.player audio{width:100%;height:40px}
.segments{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border);border-radius:8px;overflow:hidden}
.segments:empty{display:none}
.segment{display:grid;grid-template-columns:62px minmax(0,1fr);gap:14px;padding:13px 16px;border:0;border-bottom:1px solid var(--rule);background:var(--panel);text-align:left;cursor:pointer;color:inherit}
.segment:hover{background:var(--inset)}.segment.active{background:var(--teal-bg);box-shadow:inset 0 0 0 1px var(--teal)}.segment.active .segment-time{color:var(--teal);font-weight:700}
.segment-time{font-size:12px;font-weight:600;color:var(--text2);font-variant-numeric:tabular-nums;padding-top:2px}
.segment-body{font-size:14px;line-height:1.55;text-wrap:pretty;display:flex;flex-direction:column;gap:5px}
.segment-tags{display:flex;gap:5px;flex-wrap:wrap}
.hit{display:grid;grid-template-columns:70px minmax(0,1fr);gap:12px;padding:9px 18px 9px 22px;border:0;border-bottom:1px solid var(--rule);background:transparent;text-align:left;cursor:pointer;font-size:13px;line-height:1.5;width:100%;color:inherit}
.hit:hover{background:var(--inset)}.hit time{font-size:12px;color:var(--teal);font-weight:600;font-variant-numeric:tabular-nums}
.callout{padding:12px 14px;background:var(--inset);border:1px solid var(--border);border-radius:6px;font-size:13px;color:var(--text2)}
.passage-tools{display:grid;gap:12px;padding:16px;background:var(--inset);border:1px solid var(--border);border-radius:8px}
.block{display:flex;flex-direction:column;gap:8px}
.block.source{padding:14px 16px;background:var(--inset);border:1px solid var(--border);border-radius:6px;font-size:12px}
.block.source code{font-family:ui-monospace,monospace;color:var(--text2);overflow-wrap:anywhere}
#unitsList .unit-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid var(--border);font-size:13px}
.unit-row b{font-variant-numeric:tabular-nums}.unit-row b.watch{color:var(--gold)}.unit-row span{color:var(--text2);text-align:right}
#events .event{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid var(--border);font-size:13px}
#events .event button{background:none;border:0;padding:0;color:var(--teal);font-weight:600;cursor:pointer;text-align:left}
.side-map{position:sticky;top:20px;display:flex;flex-direction:column;gap:10px;min-width:0}
.side-map-head{display:flex;justify-content:space-between;align-items:baseline}
.map-box{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--inset)}
.map-box.mini{height:560px}.map-box.detail{height:300px}
.view-map{padding:0;max-width:none;display:grid;grid-template-columns:340px minmax(0,1fr);gap:0;height:calc(100vh - 60px)}
.map-list{border-right:1px solid var(--border);background:var(--panel);display:flex;flex-direction:column;min-height:0}
.map-list-head{padding:20px 18px 14px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:10px}
.map-list h1{font-size:32px}.map-empty{padding:18px;display:flex;flex-direction:column;gap:6px;font-size:13px}.map-empty p{margin:0}
.map-box.full{border:0;border-radius:0;height:100%}
.notice{margin:16px clamp(18px,3vw,44px) 0;padding:10px 14px;border-radius:5px;font-size:13px;background:var(--ok-bg);color:var(--ok)}
.notice.error{background:var(--err-bg);color:var(--err)}.notice[hidden]{display:none}
.footer{margin-top:auto;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px clamp(18px,3vw,44px);font-size:12px;color:var(--text3);border-top:1px solid var(--border)}
.home-pin{width:22px;height:22px;display:grid;place-items:center}
.home-pin i{display:block;width:14px;height:14px;background:var(--text);border:3px solid var(--panel);box-shadow:0 0 0 2px var(--teal);transform:rotate(45deg)}
#events .event p{margin:2px 0 0;color:var(--text2)}
.panel{display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--border);padding-top:18px}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
details{border:1px solid var(--border);border-radius:6px;background:var(--panel);padding:0 14px}
summary{cursor:pointer;padding:12px 0;font-size:13px;font-weight:600;color:var(--teal)}
details .form{padding-bottom:16px}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:11px;color:var(--text2)}
.legend span{display:flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:50%;display:block}
.legend .ring{width:12px;height:0;border-top:1.5px dashed var(--teal)}
.mapboxgl-ctrl-group button.map-reset{width:auto;padding:0 10px;font:600 12px var(--ui);color:var(--text)}
.event-tip .mapboxgl-popup-content{font:600 12px var(--ui);color:var(--text);padding:6px 9px;border-radius:4px;box-shadow:none;border:1px solid var(--border)}
.event-tip .mapboxgl-popup-tip{display:none}
.home-label{font:600 11px var(--ui);color:var(--teal);background:var(--panel);padding:2px 6px;border-radius:3px;border:1px solid var(--border);white-space:nowrap}
@media (max-width:820px){.app{grid-template-columns:1fr}.nav{flex-direction:row;overflow:auto;padding:8px 12px}.nav-watch,.nav-sep{display:none}.view-map{grid-template-columns:1fr;height:auto}.map-box.full{height:70vh}.unit-strip{grid-template-columns:1fr}.unit-id{border:0;padding:0}html[data-mode="hosted"] .mast-status{display:none}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* Incident feed, incident page and map list */
.block[hidden],.feed[hidden],.map-empty[hidden]{display:none}
.tag.cat-law{background:#dce7f0;color:#2f5677}.tag.cat-fire{background:#f4dedb;color:#963329}.tag.cat-ems{background:#ece2ef;color:#6b3f78}.tag.cat-traffic{background:#f5ead6;color:#7a4a00}.tag.cat-other{background:#ebe8e3;color:#57534b}
.row-place{font-size:12px;font-weight:600;color:var(--text3)}
.map-list .feed{flex:none;overflow:visible;border:0;border-radius:0}
.row.compact{grid-template-columns:56px minmax(0,1fr);gap:10px;padding:12px}
.row.compact .row-sum{display:none}.row.compact .row-title{font-size:18px}.row.compact .row-time b{font-size:19px}
.player-bar{display:flex;align-items:center;justify-content:space-between;gap:12px}
.player-pos{font-size:12px;color:#c9c6cd;font-variant-numeric:tabular-nums}
.timeline{position:relative;height:28px;cursor:pointer;outline-offset:2px;outline-color:var(--teal-dark)}
.tl-track{position:absolute;left:0;right:0;top:13px;height:2px;background:#55535d}
.tl-fill{position:absolute;left:0;top:13px;height:2px;width:0;background:var(--teal-dark)}
.tl-ticks{position:absolute;inset:0;pointer-events:none}
.tl-tick{position:absolute;top:6px;width:3px;height:16px;border-radius:1px;margin-left:-1px;background:#a9a5ad}.tl-tick.watch{background:#e0b45a}
.day-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:10px 18px 8px;border-bottom:1px solid var(--border);font-size:12px;color:var(--text3);background:var(--panel)}
.day-head b{font-weight:600;color:var(--text2)}.day-head small{font-size:11px;font-variant-numeric:tabular-nums}
.feed-item + .day-head{border-top:1px solid var(--border)}
.more-wrap{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px}
.search-section{display:flex;flex-direction:column;gap:14px}.search-section[hidden]{display:none}
.also{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--text2)}.also b{font-weight:600}
.kept-row{cursor:default}.kept-row:hover{background:transparent}.row-links{display:flex;gap:16px;flex-wrap:wrap;margin-top:2px}.row-links a{font-size:12px;font-weight:600}

/* Ask */
.ask-examples{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.ask-answer{display:flex;flex-direction:column;gap:12px;margin:12px 0 20px}
.ask-part{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:14px 16px;background:var(--panel);border:1px solid var(--border);border-radius:6px}
.ask-text{margin:0;font-size:15px;line-height:1.55;max-width:75ch;overflow-wrap:anywhere}
.ask-sourced{background:var(--teal-bg);color:var(--teal)}.ask-likely{background:var(--gold-bg);color:var(--gold)}.ask-unknown{background:var(--control);color:var(--text2)}
.ask-sources{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px;font-size:12px}
.ask-related{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin:12px 0 20px}
/* Radio code meanings */
.tag.code{background:var(--inset);color:var(--text2);border:1px solid var(--border);font-weight:600}.tag.code.urgent{background:var(--err-bg);color:var(--err);border-color:var(--err)}
.row-codes{font-size:12px;font-weight:600;color:var(--text2)}
.code-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));background:var(--panel);border:1px solid var(--border);border-radius:8px;overflow:hidden}
.code-row{display:grid;grid-template-columns:62px minmax(0,1fr);gap:10px;padding:10px 14px;border-bottom:1px solid var(--rule);font-size:13px;line-height:1.4}
.code-row b{font-variant-numeric:tabular-nums}.code-row.urgent b,.code-row.urgent span{color:var(--err);font-weight:600}

/* Map screen */
.view-map{grid-template-columns:372px minmax(0,1fr)}
.map-list{min-height:0;overflow-y:auto}.map-list-head{flex:none;gap:14px}
.map-stage{position:relative;min-width:0;min-height:0;height:100%}
.near-summary{display:flex;flex-direction:column;gap:8px}
.near-title{margin:0;font:600 19px/1.2 var(--head)}
.near-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--border);border-radius:6px;overflow:hidden}
.near-stat{display:flex;flex-direction:column;gap:2px;padding:9px 10px;background:var(--inset)}.near-stat+.near-stat{border-left:1px solid var(--border)}
.near-stat b{font:600 28px/1 var(--head);font-variant-numeric:tabular-nums}.near-stat span{font-size:12px;line-height:1.3;color:var(--text2)}
.map-controls{display:flex;gap:10px;flex-wrap:wrap;justify-content:space-between}
.segmented{display:inline-flex;border:1px solid var(--border);border-radius:5px;overflow:hidden;background:var(--panel)}
.segmented button{border:0;background:transparent;color:var(--text2);font-size:12px;font-weight:600;padding:6px 9px;cursor:pointer;white-space:nowrap}
.segmented button+button{border-left:1px solid var(--border)}.segmented button:hover{background:var(--inset)}.segmented button[aria-pressed="true"]{background:var(--text);color:var(--on-text)}
.map-list .feed{display:block}
.map-row{display:grid;grid-template-columns:50px minmax(0,1fr);gap:10px;width:100%;padding:11px 14px;border:0;border-bottom:1px solid var(--rule);background:transparent;text-align:left;cursor:pointer;color:inherit}
.map-row:hover{background:var(--inset)}.map-row.selected{background:var(--teal-bg)}
.map-row-time{display:flex;flex-direction:column;gap:2px;font-variant-numeric:tabular-nums}.map-row-time b{font:600 18px/1 var(--head)}.map-row-time small{font-size:10px;color:var(--text3)}
.map-row-body{display:flex;flex-direction:column;gap:3px;min-width:0}.map-row-title{font:600 17px/1.15 var(--head)}.map-row-where{font-size:12px;line-height:1.35;color:var(--text2)}
.map-row.cat-fire .map-row-title{color:#963329}
.map-legend{position:absolute;left:12px;bottom:76px;z-index:2;max-width:min(calc(100% - 24px),520px);gap:6px 12px;padding:7px 10px;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--border);border-radius:5px;box-shadow:0 2px 8px rgb(20 24 31 / 14%)}
.legend i.hollow{background:var(--panel);border:2px solid var(--text2)}.legend i.shade{border-radius:2px;background:linear-gradient(90deg,#f6e4d8,#b4531f)}
.map-modes{display:inline-flex;overflow:hidden;border-radius:5px;background:var(--panel);box-shadow:0 2px 8px rgb(20 24 31 / 20%)}
.map-modes button{border:0;background:transparent;color:var(--text2);font:600 12px var(--ui);padding:7px 11px;cursor:pointer}.map-modes button+button{border-left:1px solid var(--border)}
.map-modes button:hover{background:var(--inset)}.map-modes button[aria-pressed="true"]{background:var(--text);color:var(--on-text)}
.map-pop-shell{z-index:3}
.map-pop-shell .mapboxgl-popup-content{padding:4px;border-radius:7px;box-shadow:0 6px 22px rgb(20 24 31 / 24%);font-family:var(--ui)}
.map-pop{display:flex;flex-direction:column;gap:2px;color:var(--text)}.map-pop-count{margin:0;padding:7px 9px 3px;font-size:12px;font-weight:600;color:var(--text2)}
.map-pop-row{display:flex;flex-direction:column;gap:3px;width:100%;padding:9px 26px 9px 9px;border:0;border-radius:5px;background:transparent;text-align:left;cursor:pointer;color:inherit}.map-pop-row:hover{background:var(--inset)}
.map-pop-row b{font:600 18px/1.15 var(--head)}.map-pop-row small{font-size:12px;line-height:1.35;color:var(--text2)}.map-pop-row span{margin-top:3px;font-size:12px;font-weight:600;color:var(--teal)}
.mapboxgl-ctrl button:focus-visible,.map-modes button:focus-visible,.segmented button:focus-visible,.map-row:focus-visible{outline:2px solid var(--teal);outline-offset:-2px}
.home-pin i{box-shadow:0 0 0 2px var(--teal),0 2px 6px rgb(20 24 31 / 35%)}
@media (max-width:820px){
  .masthead{gap:12px;padding:0 12px}.mast-date,.mast-status{display:none}.masthead form,.masthead>.btn{margin-left:auto}.brand-name{font-size:20px}
  .nav{min-width:0}.nav-item{white-space:nowrap}.search-form{min-width:0;width:100%;max-width:none}.page-head{min-width:0}.view{min-width:0}.main{overflow-x:clip}.unit-strip{min-width:0}
  .today-grid,.two-col{grid-template-columns:minmax(0,1fr)}.side-map{position:static}.map-box.mini{height:320px}
  .view-map{display:flex;flex-direction:column;height:auto}.map-stage{order:-1;height:62vh;min-height:360px;flex:none}.map-box.full{height:100%}.map-list{border-right:0;overflow:visible}.map-list .feed{overflow:visible}
  .map-legend{left:8px;right:8px;bottom:64px;max-width:none;font-size:10px;gap:4px 9px}
}

/* Refinements: alignment, cues, focus, small text, mobile, dark */
.back{align-self:flex-start}
input[type="checkbox"],input[type="radio"]{width:auto;padding:0;accent-color:var(--teal)}
::placeholder{color:var(--text3);opacity:1}
.tag.cue{display:inline-flex;align-items:center;gap:5px}
.tag.cue::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--cue,var(--text3));flex:none}
.tag.cat-law{--cue:var(--cue-law)}.tag.cat-fire{--cue:var(--cue-fire)}.tag.cat-ems{--cue:var(--cue-ems)}.tag.cat-traffic{--cue:#a86400}.tag.cat-other{--cue:#6c675e}
.tag.s-ready{--cue:var(--cue-law)}.tag.s-processing{--cue:var(--gold)}.tag.s-queued{--cue:var(--cue-traffic)}.tag.s-error{--cue:var(--cue-fire)}
.tag.new{background:var(--teal);color:var(--on-teal)}
.notice.warn{background:var(--gold-bg);color:var(--gold)}
.player-opts{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:center;font-size:13px;color:#f1f0f3}
.player-opts label{display:flex;align-items:center;gap:8px;cursor:pointer}
.player-opts input[type="checkbox"]{width:16px;height:16px;accent-color:var(--teal-dark)}
.player-opts select{width:auto;padding:5px 8px;font-size:13px;background:#34323c;color:#f1f0f3;border-color:#62606a}
:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.row:focus-visible,.hit:focus-visible,.segment:focus-visible,.nav-item:focus-visible,.watch-item:focus-visible{outline-offset:-3px}
.masthead :focus-visible,.nav :focus-visible,.player :focus-visible{outline-color:var(--teal-dark)}
.row-body,.segment-body,.row-title,.lede,.fine{overflow-wrap:anywhere}
@media (max-width:820px){
  .nav-item{flex:none}
  .page-head>div,.stack,.player{min-width:0}
  h1{font-size:34px}
  .segmented{max-width:100%;overflow-x:auto}
  .map-legend{font-size:11px}
}
@media (prefers-color-scheme:dark){
  :root{--canvas:#121418;--panel:#1a1d22;--inset:#21252b;--control:#2a2f36;--border:#3a414a;--border-strong:#69727e;--rule:#2a2f36;
    --text:#e8eaee;--text2:#c5cad2;--text3:#9aa2ae;--btn:#4b4955;--btn-hover:#5e5b69;--on-text:#14161a;--on-teal:#0d2220;
    --teal:#6cc5bb;--teal-bg:#173b3a;--teal-dark:#6cc5bb;--gold:#e6bb68;--gold-bg:#3b2f14;--err:#f2a79d;--err-bg:#3d201c;--ok:#8fd9c9;--ok-bg:#16332d;--sel:#2b5551;
    --cue-law:#7fa6c6;--cue-fire:#df8d84;--cue-ems:#b894c3;--cue-traffic:#98a0ac;--cue-other:#d1a679}
  .tag.cat-law{background:#22344a;color:#a9c9e6}.tag.cat-fire{background:#44211e;color:#f2a79d}.tag.cat-ems{background:#36284a;color:#d4b8e2}.tag.cat-traffic{background:#3a2e18;color:#f0c05a;--cue:#f0c05a}.tag.cat-other{background:#2e2c28;color:#c8c1b3;--cue:#c8c1b3}
  .map-row.cat-fire .map-row-title{color:#f2a79d}
  .mapboxgl-ctrl-group button.map-reset{color:#20242d}
  .map-pop-shell .mapboxgl-popup-content,.event-tip .mapboxgl-popup-content{background:var(--panel)}
  .map-pop-shell .mapboxgl-popup-tip{border-top-color:var(--panel);border-bottom-color:var(--panel)}
  .map-pop-shell .mapboxgl-popup-close-button{color:var(--text2)}
}

/* Numbers on the map filter it */
button.near-stat{border:0;color:inherit;font:inherit;text-align:left;cursor:pointer}
button.near-stat:hover:not(:disabled){background:var(--control)}button.near-stat:disabled{cursor:default}
button.near-stat[aria-pressed="true"]{background:var(--teal-bg);box-shadow:inset 0 0 0 2px var(--teal)}
.map-scope{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;background:var(--teal-bg);border-bottom:1px solid var(--border);font-size:13px;font-weight:600}.map-scope[hidden]{display:none}

/* One page, two modes: config.js sets data-mode on <html> before first paint, so the other mode's controls never show. */
html[data-mode="local"] [data-only="hosted"],html[data-mode="hosted"] [data-only="local"]{display:none !important}

/* Collapsible navigation (desktop). config.js sets data-nav="collapsed" on <html> before first paint from the saved choice. */
.app{grid-template-columns:var(--nav-w,200px) minmax(0,1fr)}
html[data-nav="collapsed"]{--nav-w:56px}
.nav-item{display:flex;align-items:center;gap:10px}
.nav-ico{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.nav-small .nav-ico{width:18px;height:18px}
.nav-toggle{align-self:flex-end;display:flex;align-items:center;justify-content:center;width:32px;height:32px;margin-bottom:8px;border:0;border-radius:4px;background:transparent;color:#d0cbd3;cursor:pointer}
.nav-toggle:hover{background:#40404a;color:#fff}
.nav-toggle-ico{width:18px;height:18px}
.more-sentinel{height:1px}
@media (min-width:821px){
  html[data-nav="collapsed"] .nav{padding:20px 8px;align-items:center}
  html[data-nav="collapsed"] .nav-toggle{align-self:center}
  html[data-nav="collapsed"] .nav-toggle-ico{transform:rotate(180deg)}
  html[data-nav="collapsed"] .nav-text,html[data-nav="collapsed"] .nav-watch{display:none}
  html[data-nav="collapsed"] .nav-item{justify-content:center;width:40px;height:40px;padding:0}
  html[data-nav="collapsed"] .nav-sep{width:28px}
}
@media (min-width:821px) and (prefers-reduced-motion:no-preference){
  .app{transition:grid-template-columns .2s cubic-bezier(.16,1,.3,1)}
}
@media (max-width:820px){
  .app{grid-template-columns:1fr}
  .nav-toggle,.nav-ico{display:none}
  .nav-item{display:block}
}
.search-section .notice{margin:0 0 12px}

/* Incident explorer: calm geography, explicit layers, one shared selection. */
.view-map{grid-template-columns:350px minmax(0,1fr)}
.map-list-head{padding:18px 16px 12px;gap:12px}
.map-list-head h1{font-size:30px;letter-spacing:.01em}
.near-title{font:600 12px/1.4 var(--ui);color:var(--text3)}
.near-stat b{font-size:25px}.near-stat{padding:9px}
.map-controls{gap:8px}.map-controls .segmented button{min-height:34px}
.map-coverage{padding:0;border:0;background:transparent}
.map-coverage summary{font:500 11px/1.5 var(--ui);padding:4px 0;color:var(--text2)}
.map-coverage .fine{padding:8px 0 0;font-size:11px}
.location-filters{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding-top:6px}
.location-filter{display:flex;justify-content:space-between;gap:8px;align-items:center;text-align:left;min-height:38px;background:var(--inset);border:1px solid var(--border);border-radius:5px;color:var(--text2);padding:6px 8px;font-size:11px;cursor:pointer}
.location-filter b{font-variant-numeric:tabular-nums;color:var(--text)}
.location-filter:hover,.location-filter[aria-pressed="true"]{border-color:var(--teal);background:var(--teal-bg)}
.map-row{border-left:3px solid transparent}
.map-row.selected{border-left-color:var(--teal);background:var(--teal-bg)}
.map-row-title{font-size:19px;line-height:1.2}.map-row-where{font-size:11px;line-height:1.5}
.map-stage{isolation:isolate;background:#202b32}
.map-tools{display:flex;flex-direction:column;align-items:flex-start;gap:7px;max-width:calc(100vw - 90px)}
.map-tools .map-modes,.map-options,.map-reset-wrap{display:flex;border:1px solid rgb(123 145 155 / 24%);border-radius:8px;overflow:hidden;background:rgb(246 249 248 / 96%);box-shadow:0 3px 14px rgb(12 30 40 / 14%);color:#243d4b}
.map-tools button,.map-reset-wrap button{width:auto;height:auto;min-height:36px;border:0;background:transparent;color:inherit;padding:8px 12px;font:600 12px/1.3 var(--ui);cursor:pointer;white-space:nowrap}
.map-tools button:hover,.map-reset-wrap button:hover{background:rgb(100 140 150 / 12%)}
.map-tools button[aria-pressed="true"]{background:#243d4b;color:#f4f9fa}
.map-tools .map-modes button+button{border-left:1px solid rgb(123 145 155 / 24%)}
.map-options{gap:1px}.map-options button{font-size:11px;min-height:32px;padding:7px 10px}
.map-options button[aria-pressed="true"]{background:#d5ebe6;color:#13594f}
.activity-key{display:flex;align-items:center;gap:8px;flex-wrap:wrap;max-width:300px;padding:9px 11px;border-radius:8px;background:rgb(246 249 248 / 97%);box-shadow:0 3px 14px rgb(12 30 40 / 14%);color:#243d4b;font:500 10px/1.3 var(--ui)}
.activity-key[hidden]{display:none}.activity-key>span:first-child{width:100%;font-weight:600}
.activity-bin{display:flex;align-items:center;gap:4px;position:relative}
/* The swatch's colour and strength are set by map.js from the same values the map paints with. The outline stays solid so a faint bin is still findable. */
.activity-bin:before{content:'';width:13px;height:10px;border-radius:2px;background:var(--swatch);opacity:var(--level)}
.activity-bin:after{content:'';position:absolute;left:0;top:50%;width:13px;height:10px;margin-top:-5px;border:1px solid currentColor;opacity:.35;border-radius:2px;box-sizing:border-box}
.activity-note{width:100%;font-size:10px;font-weight:400;opacity:.8}
.activity-modes{display:flex;width:100%;gap:1px;border-radius:5px;overflow:hidden}
.mapboxgl-ctrl.map-tools .activity-modes button{flex:1;min-height:26px;padding:4px 6px;font:600 10px/1.2 var(--ui);background:rgb(100 140 150 / 12%)}
.mapboxgl-ctrl.map-tools .activity-modes button[aria-pressed="true"]{background:#243d4b;color:#f4f9fa}
.map-stage:has([data-look="night"]) .mapboxgl-ctrl.map-tools .activity-modes button[aria-pressed="true"],.map-stage:has([data-look="satellite"]) .mapboxgl-ctrl.map-tools .activity-modes button[aria-pressed="true"]{background:#a6dfd3;color:#14362f}
.map-legend{bottom:38px;left:12px;right:auto;max-width:calc(100% - 150px);padding:8px 11px;border:1px solid rgb(123 145 155 / 24%);border-radius:8px;background:rgb(246 249 248 / 94%);color:#344753;box-shadow:0 2px 10px rgb(12 30 40 / 10%);font-size:10px;gap:8px 12px;pointer-events:none}
.legend-law{background:#2360a5}.legend-fire{background:#b23a2c}.legend-ems{background:#6b3f78}.legend-traffic{background:#a86400}.legend-other{background:#6c675e}
.map-stage:has([data-look="night"]),.map-stage:has([data-look="satellite"]){--map-control:#1a2c36;--map-ink:#e0ebee}
.map-stage:has([data-look="night"]) .map-modes,.map-stage:has([data-look="night"]) .map-options,.map-stage:has([data-look="night"]) .map-reset-wrap,.map-stage:has([data-look="night"]) .activity-key,.map-stage:has([data-look="night"]) .map-legend,
.map-stage:has([data-look="satellite"]) .map-modes,.map-stage:has([data-look="satellite"]) .map-options,.map-stage:has([data-look="satellite"]) .map-reset-wrap,.map-stage:has([data-look="satellite"]) .activity-key,.map-stage:has([data-look="satellite"]) .map-legend{background:var(--map-control);color:var(--map-ink);border-color:#3a505d}
.map-stage:has([data-look="night"]) .map-tools button[aria-pressed="true"],.map-stage:has([data-look="satellite"]) .map-tools button[aria-pressed="true"]{background:#a6dfd3;color:#14362f}
.map-stage:has([data-look="night"]) .legend-law,.map-stage:has([data-look="satellite"]) .legend-law{background:#79b9e3}
.map-stage:has([data-look="night"]) .legend-fire,.map-stage:has([data-look="satellite"]) .legend-fire{background:#f58d72}
.map-stage:has([data-look="night"]) .legend-ems,.map-stage:has([data-look="satellite"]) .legend-ems{background:#c7a4e8}
.map-stage:has([data-look="night"]) .legend-traffic,.map-stage:has([data-look="satellite"]) .legend-traffic{background:#f0c05a}
.map-stage:has([data-look="night"]) .legend-other,.map-stage:has([data-look="satellite"]) .legend-other{background:#c8c1b3}
.map-inspector{position:absolute;z-index:3;top:180px;right:14px;width:310px;max-width:calc(100% - 28px);max-height:calc(100% - 265px);overflow:auto;display:flex;flex-direction:column;gap:11px;padding:18px;background:var(--panel);border:1px solid var(--border);border-top:3px solid var(--teal);border-radius:12px;box-shadow:0 10px 40px rgb(10 25 35 / 22%)}
.map-inspector[hidden]{display:none}.map-inspector-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.inspector-close{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--border);border-radius:50%;background:var(--inset);color:var(--text2);font-size:22px;cursor:pointer}
.map-inspector h2{font-size:27px;line-height:1.1;text-wrap:pretty}
.map-inspector-time{font-size:11px;color:var(--text3);margin:0;font-variant-numeric:tabular-nums}
.map-inspector-place{font-size:13px;line-height:1.5;font-weight:600;margin:0;overflow-wrap:anywhere}
.map-inspector-actions{display:flex;flex-wrap:wrap;gap:8px;padding-top:4px}.map-inspector-actions .btn{min-height:40px;padding:8px 12px;font-size:12px}
.location-badge{align-self:flex-start;padding:4px 7px;border:1px solid var(--border);border-radius:4px;font-size:10px;font-weight:600;color:var(--text2);background:var(--inset)}
.status-unresolved{color:var(--gold);background:var(--gold-bg);border-color:transparent}
.map-pop{max-height:280px;overflow:auto}.map-pop-row{min-height:52px}
.map-stage .mapboxgl-ctrl-attrib{font-size:10px}.mapboxgl-canvas:focus-visible{outline-offset:-3px}
@media (max-width:1100px) and (min-width:821px){.view-map{grid-template-columns:310px minmax(0,1fr)}.map-inspector{top:auto;bottom:80px;right:12px;max-height:175px;width:calc(100% - 24px);padding:12px;gap:6px}.map-inspector h2{font-size:22px}.map-inspector .fine{order:3}.map-inspector-actions{order:2}.map-inspector-head{float:right}.map-inspector-time{display:none}}
@media (max-width:820px){
  .view-map{display:flex;flex-direction:column}.map-stage{height:66vh;min-height:430px}.map-list-head{padding:16px}.map-list{overflow:visible}
  .map-inspector{top:auto;bottom:75px;right:10px;width:calc(100% - 20px);max-height:185px;padding:12px;gap:7px}.map-inspector h2{font-size:22px}.map-inspector .fine{order:3}.map-inspector-actions{order:2}.map-inspector-time{display:none}.map-inspector-head{position:absolute;right:10px;top:10px}.map-inspector-head .tag{display:none}.map-inspector h2{padding-right:38px}
  .map-inspector-actions{padding:0}.map-inspector-place{font-size:12px}.map-options button{min-height:36px}.map-tools button{min-height:40px;padding:8px 10px}.map-legend{font-size:10px;gap:6px 10px}.map-stage .mapboxgl-ctrl-top-right{top:92px}
}

@media (min-width:821px){.main:has(.view-map:not([hidden]))>.footer{display:none}.map-scope{position:sticky;top:0;z-index:2;flex:none}.app:has(.view-map:not([hidden])){height:100vh;grid-template-rows:60px minmax(0,1fr)}.app:has(.view-map:not([hidden])) .nav{min-height:0;overflow-y:auto}}

.mapboxgl-ctrl.map-tools button:not(:disabled):hover,.mapboxgl-ctrl.map-reset-wrap button:not(:disabled):hover{background:color-mix(in srgb,currentColor 12%,transparent)}
.map-stage:has([data-look="night"]) .mapboxgl-ctrl-group,.map-stage:has([data-look="satellite"]) .mapboxgl-ctrl-group{background:var(--map-control);border:1px solid #3a505d}
.map-stage:has([data-look="night"]) .mapboxgl-ctrl-group .mapboxgl-ctrl-icon,.map-stage:has([data-look="satellite"]) .mapboxgl-ctrl-group .mapboxgl-ctrl-icon{filter:invert(.85)}

html[data-access="public"] [data-access="manager"],html[data-access="manager"] [data-access="public"]{display:none !important}

/* A selected appearance button keeps its contrast while hovered. */
.mapboxgl-ctrl.map-tools button[aria-pressed="true"]:not(:disabled):hover{background:#243d4b;color:#f4f9fa}
.map-stage:has([data-look="night"]) .mapboxgl-ctrl.map-tools button[aria-pressed="true"]:not(:disabled):hover,.map-stage:has([data-look="satellite"]) .mapboxgl-ctrl.map-tools button[aria-pressed="true"]:not(:disabled):hover{background:#a6dfd3;color:#14362f}

/* Low-confidence transcript lines: a quiet dashed tag, not an alarm. */
.tag.unclear{background:transparent;color:var(--text2);border:1px dashed var(--border-strong);font-weight:600;cursor:help}

/* Visitor home: the sidebar control sits on the dark shell; the Map screen copy sits on the panel. */
.home-control{display:flex;flex-direction:column;gap:6px;min-width:0}
.home-control .home-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.home-links{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}
.home-control .link,.home-form.on-shell .link,.home-choose.on-shell .link{color:var(--teal-dark)}
.home-set{align-self:flex-start;padding:6px 10px;font-size:12px}
.home-form,.home-choose{display:flex;flex-direction:column;gap:10px;font-size:12px;min-width:0}
.home-form-title{margin:0;font-weight:700;font-size:13px}
.home-field{display:flex;flex-direction:column;gap:4px;min-width:0}
.home-field-label{font-weight:600}
.home-form input,.home-form select{padding:8px 10px;font-size:13px;min-height:38px}
.home-form [aria-invalid="true"]{border-color:var(--err);outline-color:var(--err)}
.home-field-msg{margin:0;font-size:12px;line-height:1.4}.home-field-msg:empty{display:none}
.home-field-msg[data-kind="error"]{color:var(--err);font-weight:600}.home-field-msg[data-kind="hint"]{color:var(--text2)}
/* State and ZIP share a row where there is room; in the narrow sidebar they stack. */
.home-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,128px),1fr));gap:10px}
.home-form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.home-form-actions .btn,.home-recover .btn{padding:7px 14px;font-size:12px;min-height:36px}
.btn.is-busy{cursor:progress;opacity:.75}
.home-status{margin:0;font-size:12px;line-height:1.45}.home-status:empty{display:none}
.home-recover{display:flex;flex-wrap:wrap;gap:8px}.home-recover[hidden]{display:none}
.home-alt{margin:0}
.home-form.on-shell,.home-choose.on-shell{color:#ebe9ed}
.home-form.on-shell .home-status,.home-form.on-shell .fine,.home-choose.on-shell .home-status,.home-choose.on-shell .fine,.home-form.on-shell .optional,.home-form.on-shell .home-field-msg[data-kind="hint"]{color:#c9c6cd}
.home-form.on-shell input,.home-form.on-shell select{background:#34323c;color:#f1f0f3;border-color:#7d7a86}
.home-form.on-shell .home-field-msg[data-kind="error"]{color:#f2a79d}
.home-form.on-shell [aria-invalid="true"]{border-color:#f2a79d}
/* "Which one is yours?": each match is one large button. */
.home-candidates{display:flex;flex-direction:column;gap:6px}
.home-candidate{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;min-height:44px;padding:8px 10px;text-align:left;background:var(--inset);color:var(--text);border:1px solid var(--border);border-radius:5px;cursor:pointer;font-size:13px}
.home-candidate:hover{border-color:var(--teal);background:var(--teal-bg)}
.home-candidate small{font-size:11px;color:var(--text3);overflow-wrap:anywhere}
.home-choose.on-shell .home-candidate{background:#34323c;color:#f1f0f3;border-color:#7d7a86}.home-choose.on-shell .home-candidate small{color:#c9c6cd}
.home-choose.on-shell .home-candidate:hover{border-color:var(--teal-dark);background:#40404a}
/* Street suggestions sit in the page flow under the field, so the sidebar, the list panel and the sticky phone map never clip them. */
.home-suggest{border:1px solid var(--border);border-radius:5px;background:var(--panel);overflow:hidden}.home-suggest[hidden]{display:none}
.home-suggest-list{list-style:none;margin:0;padding:0}
.home-suggest-option{display:flex;flex-direction:column;justify-content:center;gap:1px;min-height:40px;padding:6px 10px;cursor:pointer;color:var(--text);border-bottom:1px solid var(--rule);overflow-wrap:anywhere}
.home-suggest-option b{font-size:13px}.home-suggest-option small{font-size:11px;color:var(--text3)}
.home-suggest-option:hover,.home-suggest-option[aria-selected="true"]{background:var(--teal-bg)}
.home-suggest-option[aria-selected="true"]{box-shadow:inset 3px 0 0 var(--teal)}
.home-suggest-credit{margin:0;padding:4px 10px;font-size:10px;color:var(--text3);background:var(--inset)}
.home-form.on-shell .home-suggest{background:#34323c;border-color:#7d7a86}
.home-form.on-shell .home-suggest-option{color:#f1f0f3;border-color:#4a4852}.home-form.on-shell .home-suggest-option small,.home-form.on-shell .home-suggest-credit{color:#c9c6cd}
.home-form.on-shell .home-suggest-option:hover,.home-form.on-shell .home-suggest-option[aria-selected="true"]{background:#40404a}
.home-form.on-shell .home-suggest-option[aria-selected="true"]{box-shadow:inset 3px 0 0 var(--teal-dark)}
.home-form.on-shell .home-suggest-credit{background:#2c2a33}
/* Phones and other touch screens: 16px text stops iOS zooming into a field; 44px targets for fingers. */
@media (max-width:820px),(pointer:coarse){
  .home-form input,.home-form select{font-size:16px;min-height:44px}
  .home-form-actions .btn,.home-recover .btn,.home-set,.home-candidate,.home-suggest-option{min-height:44px}
  .home-links .link,.home-alt .link,.home-form-actions .link,.home-choose .link{min-height:44px;display:inline-flex;align-items:center}
}
.map-home{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;font-size:12px;color:var(--text2);min-width:0}
.map-home:empty{display:none}
.map-home .home-label{font-weight:600;min-width:0;overflow-wrap:anywhere}
.map-home .home-form,.map-home .home-choose{width:100%;color:var(--text)}
/* Pick mode: placing home with one click or tap. The banner hugs the bottom edge so most of the map stays clickable. */
.map-box[data-picking="true"] .mapboxgl-canvas-container,.map-box[data-picking="true"] canvas{cursor:crosshair!important}
.map-pick-banner{position:absolute;z-index:6;left:50%;bottom:44px;transform:translateX(-50%);display:flex;align-items:center;gap:12px;width:max-content;max-width:calc(100% - 24px);padding:8px 8px 8px 14px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-top:3px solid var(--teal);border-radius:10px;box-shadow:0 8px 30px rgb(10 25 35 / 25%)}
.map-pick-text{margin:0;font:600 14px/1.35 var(--ui)}
.map-pick-banner .btn{min-height:40px;flex:none}
.map-stage[data-picking="true"] .map-inspector,.map-stage[data-picking="true"] .map-legend{display:none}
@media (max-width:820px){
  .map-pick-banner{left:8px;right:8px;bottom:8px;transform:none;width:auto;max-width:none;padding:4px 4px 4px 10px;gap:8px}
  .map-pick-text{font-size:13px}.map-pick-banner .btn{min-height:44px;padding:8px 12px}
}
.near-invite{margin:0;font-size:13px;line-height:1.5;color:var(--text2)}
.segmented[hidden]{display:none}
/* Two or three tiles: the home-township tile is left out when the home's township is unknown. */
.near-stats{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}

/* Map tools: one Layers button folds the options away on phones; on wider screens it is hidden and the options are always shown. */
.map-layers-panel{display:flex;flex-direction:column;align-items:flex-start;gap:7px}
.map-layers-toggle{display:none}

/* Phones. The map stays in view while the list scrolls beneath it, but never takes more than about 45% of the screen
   (svh: the height with browser toolbars showing), so there is always list to swipe; the map canvas captures one-finger
   drags for panning. Nothing above it is sticky on phones (masthead and nav scroll away), so it sticks at the very top.
   The inspector hangs just below the map, so it never covers the selected pin. Desktop is untouched. */
@media (max-width:820px){
  .map-stage{position:sticky;top:0;z-index:4;height:40vh;height:40svh;min-height:min(220px,45vh);min-height:min(220px,45svh)}
  .map-tools{max-width:calc(100vw - 150px)}
  .map-tools .map-layers-toggle{display:inline-flex;align-items:center;border:1px solid rgb(123 145 155 / 24%);border-radius:8px;background:rgb(246 249 248 / 96%);box-shadow:0 3px 14px rgb(12 30 40 / 14%);color:#243d4b}
  .map-tools[data-open="false"] .map-layers-panel,.map-tools[data-open="false"] .activity-key{display:none} /* the key would cover too much of a short map */
  .tl-bars{height:40px}
  .map-stage .mapboxgl-ctrl-scale{display:none} /* the legend spans a phone's map; a tilted scale bar would be approximate anyway */
  .map-tools button,.map-reset-wrap button,.map-options button{min-height:40px;padding:8px 10px;font-size:12px}
  .map-stage .mapboxgl-ctrl-top-right{top:0}
  .map-stage .mapboxgl-ctrl-top-right .mapboxgl-ctrl-group{display:none} /* zoom and compass: pinch zooms, Whole county resets the view */
  .activity-key{max-width:230px;padding:6px 8px;gap:6px}
  .map-legend{bottom:30px;left:8px;right:auto;max-width:calc(100% - 16px);padding:5px 8px;gap:4px 8px}
  .map-inspector{top:100%;bottom:auto;left:0;right:0;width:100%;max-width:none;max-height:min(34vh,260px);max-height:min(34svh,260px);border-radius:0 0 12px 12px}
  .map-inspector-actions .btn{min-height:44px}
  .map-row{scroll-margin-top:calc(max(40svh, 220px) + min(34svh, 260px) + 8px);scroll-margin-bottom:8px}
  /* The Incidents mini map keeps cooperative gestures (one finger scrolls the page); it is also short enough to scroll past. */
  .map-box.mini{height:min(320px,45vh);height:min(320px,45svh)}
}
.map-stage:has([data-look="night"]) .map-tools .map-layers-toggle,.map-stage:has([data-look="satellite"]) .map-tools .map-layers-toggle{background:var(--map-control);color:var(--map-ink);border-color:#3a505d}
/* On phones the map is sticky over the top of the Map screen: a focused address field must scroll to below it, not under it. */
@media (max-width:820px){#mapHome .home-form,#mapHome .home-form input,#mapHome .home-form select,#mapHome .home-form button{scroll-margin-top:calc(45vh + 16px)}}

/* Mobile navigation and type scale: primary destinations never require sideways scrolling. */
.nav-secondary{display:contents}
.nav-more{display:none}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
@media (max-width:820px){
  :root{--mobile-body:16px;--mobile-support:14px;--mobile-label:12px}
  .nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;padding:8px;overflow:visible;align-items:start;align-self:start;position:sticky;top:0;z-index:30}
  html[data-mode="local"] .nav{grid-template-columns:repeat(4,minmax(0,1fr))}
  .nav>.nav-item,.nav-more{display:flex;align-items:center;justify-content:center;gap:3px;min-width:0;min-height:48px;padding:8px 2px;margin:0;border:0;border-radius:5px;font:600 var(--mobile-support)/1.25 var(--ui);white-space:normal;text-align:center;background:transparent;color:#ebe9ed;cursor:pointer}
  .nav>.nav-item.active,.nav-more.active,.nav-more[aria-expanded="true"]{background:var(--shell-hi);color:var(--shell-ink)}
  .nav-more svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex:none}
  .nav-more[aria-expanded="true"] svg{transform:rotate(180deg)}
  .nav-secondary{display:none;grid-column:1/-1}
  .nav[data-more="open"] .nav-secondary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:10px 4px 4px;border-top:1px solid #62606a;margin-top:4px}
  .nav-secondary .nav-item{display:flex;align-items:center;gap:8px;min-width:0;min-height:48px;padding:10px 12px;font-size:var(--mobile-support);line-height:1.3;white-space:normal;color:#ebe9ed}
  .nav-secondary .nav-item.active{color:var(--shell-ink)}
  .nav-secondary .nav-ico{display:block;width:18px;height:18px}
  h1{font-size:32px;line-height:1.12}h2{font-size:26px;line-height:1.2}h3{font-size:22px;line-height:1.25}
  .lede,.row-text,.segment-body,.inc-summary,.code-row,.empty{font-size:var(--mobile-body);line-height:1.55}
  .fine,.row-place,.row-meta,.day-head,.day-head small,.group-head,.segment-time,.map-inspector-place,.home-status,.home-field-msg{font-size:var(--mobile-support);line-height:1.5}
  .btn,.link,.chip,.form,.home-form,.home-form-title,.home-form-actions .btn,.home-recover .btn,.map-inspector-actions .btn{font-size:var(--mobile-support)}
  .btn,.chip{min-height:44px}
  input,select,textarea,.search-form.big input{font-size:var(--mobile-body);min-height:44px}
  .tag,.chip small,.row-time small,.map-row small,.location-badge{font-size:var(--mobile-label);line-height:1.4}
  .row-title,.row-time b,.map-row-title,.map-row-time b{font-size:22px;line-height:1.2}
  .map-row-where{font-size:var(--mobile-support);line-height:1.5}
  .map-stage{top:var(--mobile-nav-height,64px)}
  .map-row{scroll-margin-top:calc(var(--mobile-nav-height,64px) + max(40svh,220px) + min(34svh,260px) + 8px)}
  #mapHome .home-form,#mapHome .home-form input,#mapHome .home-form select,#mapHome .home-form button{scroll-margin-top:calc(var(--mobile-nav-height,64px) + 45vh + 16px)}
  .row{grid-template-columns:64px minmax(0,1fr);gap:12px;padding:16px 14px}
  .side-map{display:none}
  .row-body{gap:6px}
  .row-meta{margin-top:2px}
}
@media (max-width:360px){.nav>.nav-item,.nav-more{font-size:13px}.nav{gap:2px;padding:6px}.row{grid-template-columns:54px minmax(0,1fr);gap:10px}}

/* Quiet attribution, with reachable alternatives to the long-feed footer. */
.brand-copy{display:flex;flex-direction:column;align-items:flex-start}
.brand-credit{font:400 12px/1.4 var(--ui);color:#c9c6cd;min-height:24px;display:inline-flex;align-items:center;text-decoration:none}
.brand-credit:hover{text-decoration:underline;color:#fff}
.project-link{text-decoration:none}
.footer-project-links{display:flex;align-items:center;flex-wrap:wrap;gap:4px 20px}
.footer-project-links a{display:inline-flex;align-items:center;min-height:32px}
@media(max-width:820px){.brand-name{line-height:1.1}.brand-credit{min-height:22px}.footer-project-links{width:100%}.footer-project-links a{min-height:44px;font-size:14px}}

.map-scope-detail{margin-top:4px;font-size:12px;font-weight:400}

/* Map screen: timeline, ranked areas, hover card */
.map-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.map-title .link{font-size:11px;white-space:nowrap}
.map-row.hovered{background:var(--inset);box-shadow:inset 3px 0 0 var(--teal)}
.legend i.recent{background:currentColor;box-shadow:0 0 0 2px var(--map-legend-gap,#f6f9f8),0 0 0 3.5px currentColor;margin:0 2px;width:8px;height:8px}
.legend i.older{background:currentColor;opacity:.4}
.map-stage:has([data-look="night"]) .legend i.recent,.map-stage:has([data-look="satellite"]) .legend i.recent{--map-legend-gap:#1a2c36}
.map-timeline{display:flex;flex-direction:column;gap:4px}
.tl-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:11px;color:var(--text2);font-variant-numeric:tabular-nums}
.tl-actions{display:flex;gap:10px;flex:none}.tl-actions .link{font-size:11px}
.tl-bars{display:flex;align-items:stretch;gap:1px;height:48px;cursor:crosshair;touch-action:pan-y;user-select:none;-webkit-user-select:none;border-bottom:1px solid var(--border)}
.tl-bar{flex:1 1 0;min-width:0;padding:0;border:0;background:transparent;display:flex;align-items:flex-end;cursor:inherit;border-radius:1px 1px 0 0}
.tl-bar:hover{background:var(--inset)}.tl-bar:focus-visible{outline:2px solid var(--teal);outline-offset:0}
.tl-bar.on{background:var(--teal-bg)}.tl-bar.off .tl-stack{opacity:.3}
.tl-stack{width:100%;display:flex;flex-direction:column-reverse;overflow:hidden;border-radius:1px 1px 0 0}
.tl-seg{display:block;flex:1 1 0;min-height:0}
.tl-seg.cat-law{background:#2360a5}.tl-seg.cat-fire{background:#b23a2c}.tl-seg.cat-ems{background:#6b3f78}.tl-seg.cat-traffic{background:#a86400}.tl-seg.cat-other{background:#6c675e}
.tl-axis{display:flex;justify-content:space-between;font-size:10px;color:var(--text3)}
.map-areas summary{font:500 11px/1.5 var(--ui);padding:2px 0;color:var(--text2);cursor:pointer}
.map-areas .segmented{margin:6px 0;display:flex}.map-areas .segmented button{flex:1}
.area-ranks{display:flex;flex-direction:column;max-height:220px;overflow:auto}
.area-rank{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;width:100%;padding:5px 2px 7px;border:0;border-bottom:1px solid var(--rule);background:transparent;color:var(--text);font:500 12px/1.3 var(--ui);text-align:left;cursor:pointer}
.area-rank:hover{background:var(--inset)}.area-rank[aria-pressed="true"]{background:var(--teal-bg)}
.area-rank-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.area-rank-value{color:var(--text2);font-variant-numeric:tabular-nums;font-size:11px}
.area-meter{position:absolute;left:2px;bottom:2px;height:2px;border-radius:1px;background:var(--teal)}
.area-rank.tone-up .area-meter{background:#c2571a}.area-rank.tone-down .area-meter{background:#3b6ea5}.area-rank.tone-seq .area-meter{opacity:.8}
.map-tip .mapboxgl-popup-content{padding:7px 10px;border-radius:7px;background:rgb(24 36 44 / 95%);color:#eef4f5;box-shadow:0 3px 12px rgb(8 20 28 / 30%);pointer-events:none}
.map-tip.mapboxgl-popup{pointer-events:none}.map-tip .mapboxgl-popup-tip{display:none}
.map-tip-body{display:flex;flex-direction:column;gap:2px;font:400 11px/1.35 var(--ui)}.map-tip-body b{font:600 12px/1.3 var(--ui)}
@media (prefers-color-scheme:dark){.tl-seg.cat-law{background:#79b9e3}.tl-seg.cat-fire{background:#f58d72}.tl-seg.cat-ems{background:#c7a4e8}.tl-seg.cat-traffic{background:#f0c05a}.tl-seg.cat-other{background:#c8c1b3}}
/* A short laptop screen: the whole panel scrolls, so the list never shrinks to nothing under the controls. */

/* Event threads, the quieter default feed and the freshness line */
.fresh-line{margin:2px 0 0}.recap-line{margin:2px 0 0;color:var(--text2)}
.quiet-note{margin:6px 0 0}.quiet-note .link{font-size:inherit}
.thread-parts{margin:8px 0;padding-left:20px;display:grid;gap:6px;font-size:14px}.thread-parts li[aria-current] b{font-weight:600}
.head-actions{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap}
.nav-manage{text-decoration:none}
@media (min-width:821px){.nav-manage{display:none}}
@media (max-width:820px){
  /* Phones: the owner's sign-in moves into More, and the filter chips scroll sideways on one row so incidents start higher on the screen. Freshness is the line under the Incidents heading. */
  .masthead>a.btn[href="/login"]{display:none}
  /* The Incidents tab already names the screen, so the heading stays for screen readers only and the recap is left to wider screens: incidents start sooner. */
  #view-today .page-head h1{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .recap-line{display:none}
  #chips,#searchIncChips,#mapCats{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-right:-16px;padding-right:16px}
  #chips::-webkit-scrollbar,#searchIncChips::-webkit-scrollbar,#mapCats::-webkit-scrollbar{display:none}
  #chips .chip,#searchIncChips .chip,#mapCats .chip{flex:none}
  .head-actions{width:100%}
}
/* Near-home alert opt-in, drawn under the home address in the navigation and on the Map screen */
.home-alerts{display:flex;flex-direction:column;gap:4px;min-width:0}.home-alerts:empty{display:none}
.home-alert-note{font-size:12px;line-height:1.35;opacity:.85}.home-alert-on{font-size:12px;font-weight:600}

.feed-scope{margin:0 0 10px;padding:9px 14px;background:var(--teal-bg);border:1px solid var(--border);border-radius:8px;font-size:13px;font-weight:600}.feed-scope[hidden]{display:none}.feed-scope .fine{font-weight:400}
.map-scope-actions{display:flex;gap:14px;align-items:center}
