
:root{color-scheme:dark;--bg:#08121a;--panel:#0e1a24;--surface:#13232e;--line:#314754;--text:#f0f5f2;--muted:#91a5b0;--gold:#ffd064;--orange:#ed8630;--high:#f4ae39;--moderate:#eccb78;--low:#ddbd77}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{background:var(--bg);font-family:Inter,"Helvetica Neue",Arial,sans-serif;color:var(--text);-webkit-font-smoothing:antialiased}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,.site:focus-visible{outline:2px solid #ffcc7b;outline-offset:3px}a{color:inherit}.app{height:100dvh;min-height:420px;display:flex;flex-direction:column}.topbar{height:74px;flex:none;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:0 29px;background:linear-gradient(95deg,#09131b,#12212a);border-bottom:1px solid #2c3e47;z-index:30}.brandline{display:flex;gap:19px;align-items:center;min-width:0}.brand{font-weight:800;font-size:20px;letter-spacing:-.055em;white-space:nowrap}.brand span{color:#d2e3d7}.sep{background:#344a55;width:1px;height:30px;flex:none}.titles{min-width:0;display:flex;flex-direction:column;gap:4px}.titles strong{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:680}.titles small{font-size:11px;color:#a7b8bc;letter-spacing:.045em}.top-actions{display:flex;align-items:center;gap:10px}.topbadge{border:1px solid #495564;background:#1c2b34;color:#cbdcd5;padding:9px 13px;border-radius:100px;font-size:11px;white-space:nowrap}.topbadge i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#e8b34d;margin-right:8px}.top-reset,.panel-toggle{border:1px solid #394e59;background:#182833;color:#dbe9e7;padding:10px 13px;border-radius:6px;font-size:12px;white-space:nowrap}.top-reset:hover,.panel-toggle:hover{background:#29404c}.panel-toggle{display:none}
.workspace{position:relative;flex:1;overflow:hidden;background:#101b23;isolation:isolate}.map-viewport{position:absolute;inset:0;overflow:hidden;cursor:grab;touch-action:none;background:linear-gradient(125deg,#14212a,#0d1822 45%,#111d27)}.map-viewport.dragging{cursor:grabbing}.tile-layer,.vector-layer,.markers-layer{position:absolute;inset:0;pointer-events:none}.tile-layer{z-index:1}.tile{position:absolute;display:block;max-width:none;user-select:none;-webkit-user-drag:none;pointer-events:none;image-rendering:auto;opacity:0;transition:opacity .2s}.tile.ready{opacity:1}.vector-layer{z-index:2;opacity:.9}.tile-available .vector-layer{opacity:.19}.vector-layer svg{width:100%;height:100%;display:block;overflow:hidden}.vector-layer .country{fill:rgba(40,65,70,.08);stroke:#527082;stroke-width:1.4;vector-effect:non-scaling-stroke}.vector-layer .country-label{fill:#6c8794;letter-spacing:4px;font-size:15px;font-weight:500}.vector-layer .city-label{fill:#b4c5cc;font-weight:600;font-size:12px;letter-spacing:.01em}.vector-layer .city-dot{fill:#728e9b}.vector-layer .route{fill:none;stroke:#395b67;stroke-width:1.4}.vector-layer .river{fill:none;stroke:#274f68;stroke-width:1.3}.tile-available .vector-layer .country-label,.tile-available .vector-layer .city-label,.tile-available .vector-layer .city-dot{display:none}.markers-layer{z-index:5}.site{position:absolute;pointer-events:auto;border:none;background:transparent;padding:0;margin:0;transform:translate(-50%,-50%);display:grid;place-items:center;width:38px;height:38px;outline-offset:0;transition:opacity .12s;cursor:pointer}.site:after{content:"";position:absolute;width:10px;height:10px;border-radius:50%;border:1px solid #28220b;opacity:0}.site-circle{border-radius:50%;display:grid;place-items:center;width:var(--size);height:var(--size);min-width:9px;min-height:9px;border:1.5px solid var(--edge);background:var(--color);box-shadow:none!important;outline:none;transition:transform .14s,border-color .14s;position:relative;color:#442c13}.site-circle:after{content:"";position:absolute;inset:4px;border:1px solid rgba(255,250,210,.46);border-radius:50%;display:none}.site[data-level="very-high"] .site-circle:after,.site[data-level="high"] .site-circle:after{display:block}.site:hover .site-circle,.site:focus-visible .site-circle{transform:scale(1.2);border-color:#fff3cc}.site.selected .site-circle{outline:2px solid #f3ead0;outline-offset:3px}.site.cluster{z-index:2}.site.cluster .site-circle{border:2px solid #e8e8d2;color:#4b2b0b;font-size:11px;font-weight:900}.site[hidden]{display:none!important}
.floating{background:rgba(11,22,31,.94);border:1px solid #354a55;box-shadow:0 15px 45px rgba(0,0,0,.24);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);border-radius:8px;z-index:15}
.sidebar{position:absolute;top:22px;left:24px;width:288px;max-height:calc(100% - 80px);overflow:auto;padding:24px 21px 17px;scrollbar-width:thin;scrollbar-color:#44606b transparent}.panel-sub{font-size:10px;color:#8fa9b3;text-transform:uppercase;letter-spacing:.18em;margin:0 0 9px}.sidebar h1{font-size:24px;font-weight:630;letter-spacing:-.055em;margin:0 0 9px}.sidebar-description{color:#a3b8bd;font-size:12px;line-height:1.6;margin:0 0 22px}.field-label{display:block;color:#b0c6c7;font-size:11px;font-weight:700;margin-bottom:10px}.search-wrap{position:relative}.search-wrap svg{position:absolute;width:16px;height:16px;left:12px;top:12px;color:#8aa0aa;pointer-events:none}.search{width:100%;min-height:41px;background:#152631;color:#f3f6f2;border:1px solid #36515d;border-radius:5px;padding:0 11px 0 35px;font-size:12px}.search::placeholder{color:#7f99a3}.filter-title{display:flex;justify-content:space-between;align-items:center;margin:27px 0 12px;color:#b6cccb;font-size:11px;font-weight:700}.filter-title button{background:none;border:0;padding:0;color:#e9b34f;font-size:11px}.filter-stack{display:grid;gap:6px}.filter-btn{width:100%;background:transparent;border:1px solid transparent;color:#bdccd2;text-align:left;display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12px;padding:10px 11px;border-radius:5px}.filter-btn.active,.filter-btn:hover{border-color:#455a60;background:#203340;color:#fff}.filter-btn .inner{display:flex;align-items:center;gap:11px}.filter-btn .dot{width:10px;height:10px;border-radius:50%;background:var(--dot);border:1px solid #ffe0a8}.filter-btn .count{color:#9eb0b7;font-size:11px}.panel-summary{border-top:1px solid #2d404b;margin-top:21px;padding-top:18px;display:flex;justify-content:space-between;align-items:center}.panel-summary strong{font-size:21px;font-weight:650}.panel-summary span{color:#90a4aa;font-size:11px}.disclaimer{margin:17px 0 0;color:#758e99;font-size:10px;line-height:1.65}
.legend{position:absolute;top:22px;right:25px;width:215px;padding:19px 20px;z-index:13}.legend h2{font-size:15px;margin:0 0 4px;font-weight:650;letter-spacing:-.02em}.legend p{font-size:10px;line-height:1.4;color:#8da2ab;margin:0 0 18px}.legend-item{display:flex;align-items:center;gap:16px;height:45px;font-size:12px;color:#d1dce0}.legend-symbol{flex:none;display:grid;place-items:center;width:34px;height:34px}.legend-dot{display:block;width:var(--size);height:var(--size);background:var(--color);border:1.4px solid var(--edge);border-radius:50%;position:relative}.legend-symbol.high .legend-dot:after{content:"";position:absolute;inset:4px;border:1px solid #f7d38f;border-radius:50%}.map-controls{position:absolute;bottom:86px;right:25px;display:flex;flex-direction:column;gap:8px;z-index:12}.map-controls button{display:grid;place-items:center;width:41px;height:41px;border:1px solid #40545e;border-radius:6px;background:#13242f;color:#edf4ef;font-size:23px;box-shadow:0 6px 20px #0004}.map-controls button:hover{background:#24404d}.map-controls button.fit{font-size:18px}.map-status{position:absolute;left:26px;bottom:16px;z-index:12;color:#afc1c4;background:rgba(10,20,27,.85);border:1px solid #31434c;border-radius:5px;padding:10px 13px;font-size:10px;letter-spacing:.03em;display:flex;gap:12px;align-items:center;pointer-events:none}.map-status .mini-dot{height:7px;width:7px;border-radius:50%;background:#eab750}.map-attribution{position:absolute;right:13px;bottom:9px;z-index:11;font-size:10px;color:#b9c7c9;background:rgba(8,17,23,.77);padding:5px 9px;border-radius:3px}.map-attribution a{color:#d7e2e1;text-decoration:underline}.scale{position:absolute;bottom:45px;right:27px;z-index:12;color:#ccd9d8;font-size:10px}.scale-line{height:5px;border:1px solid #c2d7d6;border-top:0;margin-top:5px;max-width:140px}
.popup{position:absolute;z-index:26;width:288px;max-width:calc(100vw - 30px);padding:19px;background:#12232e;border:1px solid #536770;border-radius:8px;box-shadow:0 15px 45px #0009;display:none}.popup.open{display:block}.popup .close{position:absolute;right:12px;top:9px;border:0;background:transparent;color:#b5c4c4;font-size:22px;padding:3px}.popup .kicker{color:#f1bf5b;font-size:10px;letter-spacing:.12em;font-weight:750;text-transform:uppercase}.popup h3{font-size:18px;letter-spacing:-.03em;margin:8px 18px 6px 0}.popup p{color:#9cafb6;font-size:12px;line-height:1.6;margin:7px 0 12px}.popup dl{display:grid;grid-template-columns:1fr auto;gap:9px;margin:15px 0;border-top:1px solid #324652;padding-top:13px;font-size:12px}.popup dt{color:#91a6b0}.popup dd{margin:0;font-weight:650;text-align:right}.popup button.goto{display:flex;align-items:center;justify-content:center;border:1px solid #7d6842;background:#423222;color:#ffe3b4;width:100%;border-radius:5px;padding:10px;font-size:12px;font-weight:650}.popup .fineprint{font-size:10px;color:#8da1a8;margin:9px 0 0}.no-basemap{position:absolute;inset:auto 14px 15px auto;display:none;z-index:8;pointer-events:none;color:#a5b5ba;font-size:10px;background:#10202bcc;border:1px solid #344854;border-radius:4px;padding:7px 10px}.connection-warning{position:absolute;left:50%;top:24px;transform:translateX(-50%);z-index:9;background:#1c2a34e8;border:1px solid #465862;border-radius:6px;padding:10px 14px;font-size:11px;color:#cfdbdb;text-align:center;display:none;max-width:min(450px,90vw)}
@media(max-width:800px){.topbar{height:63px;padding:0 16px}.brand{font-size:17px}.sep{height:23px}.titles strong{font-size:12px}.titles small{font-size:10px}.topbadge{display:none}.sidebar{left:12px;top:12px;width:267px;padding:19px 16px}.legend{right:12px;top:12px}.map-controls{right:12px;bottom:90px}.map-status{bottom:15px;left:12px}}
@media(max-width:600px){.app{min-height:320px}.topbar{height:60px}.brandline{gap:10px}.brand{font-size:17px}.titles{display:none}.sep{display:none}.panel-toggle{display:block}.top-actions{gap:7px}.top-reset{font-size:11px;padding:9px 10px}.sidebar{top:11px;left:10px;bottom:auto;width:min(295px,calc(100% - 20px));max-height:calc(100% - 90px);display:none;box-shadow:0 16px 45px #000b}.sidebar.open{display:block}.legend{right:9px;top:10px;width:155px;padding:12px 11px}.legend h2{font-size:13px}.legend p{font-size:9px;margin-bottom:9px}.legend-item{gap:8px;height:30px;font-size:10px}.legend-symbol{width:25px;height:25px}.legend-dot{transform:scale(.74)}.map-controls{right:10px;bottom:77px}.map-controls button{width:36px;height:36px}.map-status{max-width:calc(100% - 90px);gap:6px;font-size:9px;line-height:1.45;padding:8px 10px}.popup{width:280px}.scale{right:11px;bottom:44px}.map-attribution{right:7px;bottom:6px;font-size:9px}.connection-warning{top:160px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important}}

/* MapTiler Streets Dark tiles are already dark. Do not color-invert them. */
.tile-layer{filter:none;opacity:1}
/* The original offline georeferenced vector basemap remains available. */

/* Embedded map only: the source header and explorer sidebar are absent. */
html,body,.workspace{width:100%;height:100%;min-height:0;}
.workspace{position:relative;}
.legend{top:14px;right:12px;width:145px;padding:14px 12px;}
.legend h2{font-size:13px;}
.legend p{font-size:9px;margin-bottom:10px;}
.legend-item{height:34px;gap:10px;font-size:10px;}
.legend-symbol{width:28px;height:28px;}
.legend-dot{transform:scale(.82);}
.map-controls{right:12px;bottom:78px;}
.map-controls button{width:34px;height:34px;font-size:20px;}
.scale{right:13px;bottom:41px;}
.popup{max-width:calc(100% - 24px);}
.connection-warning{max-width:calc(100% - 30px);top:auto;bottom:37px;font-size:10px;}
@media(max-width:400px){.legend{width:128px;padding:11px 10px;}.legend-item{gap:6px;height:29px;}.legend p{font-size:8px;}.legend-symbol{width:24px;height:24px;}.legend-dot{transform:scale(.72);}}
