:root{color-scheme:light;--page:#f9f9f7;--surface:#fcfcfb;--ink:#0b0b0b;--ink-2:#52514e;--muted:#898781;--grid:#e1e0d9;--border:rgba(11,11,11,.10);--accent:#2a78d6;--good:#0ca30c;--shadow:0 1px 2px rgba(11,11,11,.04),0 4px 16px rgba(11,11,11,.05)}
@media (prefers-color-scheme:dark){:root:where(:not([data-theme="light"])){color-scheme:dark;--page:#0d0d0d;--surface:#1a1a19;--ink:#fff;--ink-2:#c3c2b7;--muted:#898781;--grid:#2c2c2a;--border:rgba(255,255,255,.10);--accent:#3987e5}}
:root[data-theme="dark"]{color-scheme:dark;--page:#0d0d0d;--surface:#1a1a19;--ink:#fff;--ink-2:#c3c2b7;--muted:#898781;--grid:#2c2c2a;--border:rgba(255,255,255,.10);--accent:#3987e5}
*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--page);color:var(--ink);font:15px/1.5 "Inter",system-ui,sans-serif;-webkit-font-smoothing:antialiased;display:flex;flex-direction:column}
.topbar{background:var(--surface);border-bottom:1px solid var(--border);flex:0 0 auto}
.topbar-inner{max-width:100%;padding:10px 18px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink)}
.brand-mark{width:34px;height:34px;border-radius:9px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center}.brand-mark svg{width:20px;height:20px}
.brand-name{font-weight:700;font-size:1.05rem;line-height:1.15}.brand-sub{font-size:.72rem;color:var(--muted)}
.topbar-status{display:flex;align-items:center;gap:12px}.upd{font-size:.78rem;color:var(--muted)}
.theme-toggle{background:none;border:1px solid var(--border);border-radius:8px;color:var(--ink);padding:6px 9px;cursor:pointer;line-height:0}.theme-toggle svg{width:17px;height:17px}
:root:not([data-theme="dark"]) .icon-moon{display:none}:root[data-theme="dark"] .icon-sun{display:none}
@media(prefers-color-scheme:dark){:root:where(:not([data-theme="light"])) .icon-sun{display:none}:root:where(:not([data-theme="light"])) .icon-moon{display:inline}}
.rw-app{flex:1 1 auto;display:grid;grid-template-columns:400px 1fr;min-height:0;max-width:100%;overflow-x:hidden}
.rw-side{border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0;min-width:0;overflow-x:hidden;padding:14px 14px 0}
.rw-stats{display:flex;gap:6px;margin-bottom:12px;width:100%}
.stat{flex:1 1 0;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:8px 4px;text-align:center;overflow:hidden}
.stat b{display:block;font-size:1.3rem;font-weight:700}.stat span{font-size:.62rem;color:var(--muted);text-transform:uppercase;letter-spacing:.02em;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#q{width:100%;font:inherit;font-size:.9rem;padding:9px 13px;border:1px solid var(--border);border-radius:9px;background:var(--page);color:var(--ink);margin-bottom:8px}
#q:focus{outline:none;border-color:var(--accent)}
.rw-filterbar{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px;width:100%}
.rw-filterbar select{font:inherit;font-size:.82rem;padding:6px 8px;border:1px solid var(--border);border-radius:8px;background:var(--page);color:var(--ink);min-width:0;max-width:100%}
.chk{grid-column:1/-1;display:flex;align-items:center;gap:7px;font-size:.85rem;font-weight:600;color:var(--ink-2)}
.rw-legend{display:flex;flex-wrap:wrap;gap:10px;font-size:.72rem;color:var(--muted);margin-bottom:10px}
.lg{display:inline-flex;align-items:center;gap:4px}.lg i{width:16px;height:3px;border-radius:2px;display:inline-block}
.rw-list{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;margin:0;padding:0 0 14px}
.item{display:flex;gap:10px;padding:10px 8px;border-radius:9px;cursor:pointer;border-bottom:1px solid var(--grid)}
.item:hover{background:color-mix(in srgb,var(--accent) 7%,transparent)}
.item.sel{background:color-mix(in srgb,var(--accent) 13%,transparent)}
.dot{flex:0 0 auto;width:9px;height:9px;border-radius:50%;margin-top:5px}
.it-body{min-width:0;flex:1}
.it-top{display:flex;align-items:center;gap:8px}
.it-loc{font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.badge-live{flex:0 0 auto;font-size:.6rem;font-weight:700;letter-spacing:.04em;background:color-mix(in srgb,var(--good) 16%,transparent);color:var(--good);padding:1px 6px;border-radius:99px}
.it-meta{font-size:.78rem;color:var(--ink-2);margin-top:1px}.it-meta2{font-size:.72rem;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.more{padding:12px;text-align:center;color:var(--muted);font-size:.8rem}
.rw-map{position:relative;min-height:0}#map{position:absolute;inset:0}
.rw-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--page);color:var(--muted);z-index:500}
.rw-foot{flex:0 0 auto;background:var(--surface);border-top:1px solid var(--border);padding:8px 18px;font-size:.78rem;color:var(--muted);text-align:center}.rw-foot a{color:var(--accent)}
.pop b{font-size:.95rem}.pop .pt{font-size:.8rem;color:#666;margin:2px 0}.pop p{margin:6px 0;font-size:.85rem}.pop .pm{font-size:.76rem;color:#888}
.leaflet-popup-content{margin:12px 14px;font-family:"Inter",sans-serif}
@media(max-width:820px){
  .rw-app{display:flex;flex-direction:column;width:100%}
  .rw-map{order:1;flex:0 0 auto;height:46vh;width:100vw;max-width:100vw}
  .rw-side{order:2;flex:1 1 auto;border-right:none;border-top:1px solid var(--border);width:100vw;max-width:100vw}
  .rw-list{max-height:none}
  .brand-sub{display:none}
  .stat b{font-size:1.15rem}
}


/* dark map: filter only the basemap tiles, not our coloured vector lines */
:root[data-theme="dark"] .leaflet-tile-pane { filter: invert(1) hue-rotate(180deg) brightness(.9) contrast(.9); }
@media (prefers-color-scheme: dark) { :root:where(:not([data-theme="light"])) .leaflet-tile-pane { filter: invert(1) hue-rotate(180deg) brightness(.9) contrast(.9); } }
html, body { overflow-x: hidden; }
.rw-side, .rw-stats, .rw-filterbar { max-width: 100%; }

/* centre all button text */
button, .btn, .btn-primary, .btn-danger, .btn-sm, .copy-btn, .speed-btn, .theme-toggle, .nav-burger, input[type=submit], .tool-tag { text-align: center; }
