:root{--ink:#101b17;--paper:#f2f0e9;--panel:#e7e6de;--lime:#c8f04b;--blue:#159dcc;--road:#d66b3d;--muted:#66726d;--line:rgba(16,27,23,.16)}
*{box-sizing:border-box}
html,body{height:100%;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;background:var(--paper);color:var(--ink)}
button,input{font:inherit}
.shell{height:100%;display:grid;grid-template-columns:340px 1fr;grid-template-rows:70px 1fr;overflow:hidden}
.topbar{grid-column:1/-1;background:var(--ink);color:#fff;display:flex;align-items:center;padding:0 22px;gap:28px;z-index:1001}
.brand{display:flex;align-items:center;gap:12px;min-width:290px}
.mark{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--lime);color:var(--lime);font-family:Georgia,serif;font-size:23px}
.brand strong{display:block;font-size:13px;letter-spacing:.18em}
.brand small{display:block;color:#9faaa5;font-size:10px;letter-spacing:.14em;margin-top:2px}
.status{display:flex;align-items:center;gap:8px;margin-left:auto;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#bfc7c3}
.status i{width:7px;height:7px;border-radius:50%;background:#f0aa4b}
.status.online i{background:var(--lime);box-shadow:0 0 12px var(--lime)}
button{border:0;cursor:pointer}
.ghost{border:1px solid rgba(255,255,255,.3);background:transparent;color:#fff;padding:10px 15px;text-transform:uppercase;letter-spacing:.1em;font-size:11px}
.radar-mode{display:flex;align-items:center;gap:8px;border:1px solid rgba(200,240,75,.45);background:rgba(200,240,75,.08);color:var(--lime);padding:10px 15px;text-transform:uppercase;letter-spacing:.08em;font-size:11px}
.radar-mode.active{background:var(--lime)!important;color:var(--ink)!important}
.radar-mode-icon{font-size:18px;line-height:10px}
.panel{grid-row:2;background:var(--panel);padding:30px 26px 18px;overflow-y:auto;border-right:1px solid var(--line);z-index:500}
.intro{border-bottom:1px solid var(--line);padding-bottom:25px}
.eyebrow{font-size:10px;letter-spacing:.16em;color:var(--muted)}
h1{font-family:Georgia,serif;font-weight:400;font-size:47px;line-height:.91;margin:12px 0 16px;letter-spacing:-.04em}
.intro p,.route-tools p{color:var(--muted);font-size:12px;line-height:1.55}
.controls{padding:22px 0;border-bottom:1px solid var(--line)}
.section-title{font-size:11px;text-transform:uppercase;letter-spacing:.13em;margin-bottom:15px}
.section-title span{color:#87918c;margin-right:10px}
.coords{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.coords label{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.wide-label{display:block;margin-top:9px;font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
input{width:100%;margin-top:6px;background:rgba(255,255,255,.55);border:1px solid var(--line);padding:10px;color:var(--ink);outline:none}
.primary,.secondary{width:100%;padding:12px;margin-top:10px;text-transform:uppercase;letter-spacing:.1em;font-size:10px}
.primary{background:var(--ink);color:#fff}
.primary:hover{background:#24362f}
.secondary{background:transparent;border:1px solid var(--line);color:var(--ink)}
.reading{margin-top:14px;min-height:56px;font-size:11px;color:var(--muted)}
.reading strong{font-family:Georgia,serif;font-size:32px;font-weight:400;color:var(--ink);margin-right:5px}
.reading dl{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:8px 0 0}
.reading dt{color:#7a8580}
.reading dd{margin:0;text-align:right;color:var(--ink)}
.toggle{display:flex;align-items:center;gap:10px;margin:12px 0;cursor:pointer;font-size:12px}
.toggle input{display:none}
.toggle b{width:28px;height:16px;border-radius:12px;background:#aab1ad;position:relative}
.toggle b:after{content:"";position:absolute;width:12px;height:12px;left:2px;top:2px;border-radius:50%;background:#fff;transition:.2s}
.toggle input:checked+b{background:var(--ink)}
.toggle input:checked+b:after{transform:translateX(12px)}
.toggle span{display:flex;align-items:center;gap:7px}
.toggle em{width:8px;height:8px;border-radius:50%}
.road-dot{background:var(--road)}
.river-dot{background:var(--blue)}
.water-dot{background:#21b7e8}
.park-dot{background:#6a9a5a}
.rail-dot{background:#5c4a3a}
.poi-dot{background:var(--lime)}
.infra-dot{background:#c8a000}
.button-row{display:flex;gap:8px}
.button-row .secondary{flex:1}
.icon-button{width:39px;margin-top:10px;background:transparent;border:1px solid var(--line);font-size:20px}
.active{background:var(--lime)!important;color:var(--ink)!important;border-color:var(--lime)!important}
#profileChart{width:100%;display:none;margin-top:14px}
.micro{font-size:10px;color:var(--muted);margin-top:10px}
footer{font-size:9px;color:#7f8984;padding-top:18px}
.map-wrap{grid-column:2;grid-row:2;position:relative}
.map-wrap:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 80px rgba(16,27,23,.08);z-index:450}
#map{height:100%;background:#d9ddd6}
.leaflet-tile-pane{filter:saturate(.55) contrast(.94) brightness(1.06)}
.map-wrap.imagery-on .leaflet-tile-pane{filter:none}
.map-caption{position:absolute;top:78px;left:18px;right:18px;z-index:500;display:flex;justify-content:space-between;pointer-events:none;font-size:10px;letter-spacing:.1em;text-transform:uppercase}
.map-wrap.radar-open .map-caption{right:390px}
.map-caption span{background:rgba(242,240,233,.88);backdrop-filter:blur(6px);padding:8px 10px}
.map-search{position:absolute;z-index:950;top:18px;left:18px;width:min(520px,calc(100% - 54px));height:48px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;background:rgba(11,23,19,.95);box-shadow:0 10px 30px rgba(7,16,12,.24);border:1px solid rgba(255,255,255,.14)}
.map-wrap.radar-open .map-search{width:min(480px,calc(100% - 410px))}
.search-symbol{display:grid;place-items:center;color:var(--lime);font-size:25px}
.map-search input{height:46px;margin:0;padding:0 8px;background:transparent;border:0;color:#fff;font-size:15px}.map-search input::placeholder{color:#91a099}.map-search input:focus{outline:0}.map-search button{margin:7px;padding:0 15px;background:var(--lime);color:var(--ink);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.07em}
.search-results{position:absolute;left:-1px;right:-1px;top:48px;background:#0b1713;border:1px solid rgba(255,255,255,.14);box-shadow:0 18px 38px rgba(4,12,9,.36);max-height:360px;overflow:auto}
.search-option{width:100%;display:grid;grid-template-columns:30px 1fr;gap:8px;padding:12px 14px;text-align:left;background:transparent;color:#fff;border-bottom:1px solid rgba(255,255,255,.08)}.search-option:hover,.search-option:focus{background:rgba(200,240,75,.1);outline:0}.search-option>span{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:rgba(200,240,75,.12);color:var(--lime)}.search-option strong{display:block;font-size:14px;font-weight:650}.search-option small{display:block;margin-top:3px;color:#93a29b;font-size:12px;line-height:1.35}.search-empty{padding:15px;color:#aab6b0;font-size:13px}.search-attribution{padding:8px 14px;color:#718078;font-size:11px;text-align:right}
.legend{position:absolute;bottom:23px;right:22px;z-index:500;background:rgba(16,27,23,.9);color:#fff;padding:11px 14px;display:flex;flex-wrap:wrap;gap:10px 15px;max-width:min(520px,calc(100% - 48px));font-size:9px;text-transform:uppercase;letter-spacing:.1em}
.map-wrap.radar-open .legend{right:390px}
.legend span{display:flex;align-items:center;gap:6px}
.legend i{display:block;width:17px;height:3px}
.legend .road{background:var(--road)}
.legend .river{background:var(--blue)}
.legend .route{background:var(--lime)}
.legend .radio-clear{height:8px;width:8px;border-radius:50%;background:#6edc73}
.legend .radio-shadow{height:8px;width:8px;border-radius:50%;background:#e14d48}
.radar-editor{position:absolute;z-index:900;right:18px;top:18px;bottom:18px;width:354px;overflow:auto;background:#0b1713;color:#eaf0ed;border:1px solid rgba(200,240,75,.24);box-shadow:0 20px 55px rgba(4,12,9,.3);transform:translateX(calc(100% + 28px));opacity:0;pointer-events:none;transition:transform .25s ease,opacity .2s ease}
.radar-editor.open{transform:none;opacity:1;pointer-events:auto}
.radar-editor:before{content:"";position:absolute;right:72px;top:-90px;width:180px;height:180px;border:1px solid rgba(200,240,75,.1);border-radius:50%;box-shadow:0 0 0 34px rgba(200,240,75,.025),0 0 0 68px rgba(200,240,75,.018);pointer-events:none}
.radar-editor-head{position:relative;display:flex;justify-content:space-between;align-items:flex-start;padding:22px 22px 16px;border-bottom:1px solid rgba(255,255,255,.1)}
.editor-kicker{color:var(--lime);font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.radar-editor h2{font-family:Georgia,serif;font-size:27px;font-weight:400;margin:5px 0 0}
.editor-close{width:34px;height:34px;background:transparent;border:1px solid rgba(255,255,255,.18);color:#fff;font-size:22px}
.placement-hint{display:grid;grid-template-columns:32px 1fr;gap:10px;padding:15px 22px;background:rgba(200,240,75,.07);border-bottom:1px solid rgba(255,255,255,.08)}
.placement-hint>span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--lime);color:var(--ink);font-weight:700}
.placement-hint p{margin:0;color:#aebbb5;font-size:13px;line-height:1.45}.placement-hint strong{display:block;color:#fff;font-size:14px}
.editor-coordinates{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:16px 22px 8px}
.editor-coordinates label,.editor-field{font-size:12px;color:#9eaba5}.editor-coordinates input,.editor-field input,.editor-grid.compact input,.editor-grid select{margin-top:6px;border-color:rgba(255,255,255,.14);background:#13231d;color:#fff;padding:9px}
.band-fieldset{min-width:0;margin:0 0 14px;padding:0;border:0}.band-fieldset legend{width:100%;margin-bottom:9px;color:#aebbb5;font-size:13px}.band-fieldset legend small{float:right;color:#75867e;font-size:11px}
.band-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.band-picker button{display:flex;align-items:baseline;justify-content:space-between;gap:5px;min-width:0;padding:8px 9px;background:#102019;border:1px solid rgba(255,255,255,.11);color:#9eaba5;text-align:left}.band-picker button:hover{border-color:rgba(200,240,75,.5)}.band-picker button.selected{border-color:var(--lime);background:rgba(200,240,75,.11);color:#fff;box-shadow:inset 3px 0 0 var(--lime)}.band-picker b{color:#eaf0ed;font-size:13px}.band-picker .selected b{color:var(--lime)}.band-picker span{overflow:hidden;color:#84958c;font-size:10px;white-space:nowrap;text-overflow:ellipsis}
.manual-frequency{display:block}.manual-frequency small{float:right;color:#75867e;font-size:10px}.frequency-preview{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:9px 0 15px;padding:9px 10px;background:rgba(200,240,75,.06);border-left:2px solid var(--lime);font-size:11px}.frequency-preview span{flex:none;color:#7f9088}.frequency-preview output{color:#dce8e1;text-align:right;line-height:1.35}
.frequency-note{margin:-7px 0 15px;color:#75867e;font-size:11px;line-height:1.4}
.airspace-section{background:rgba(21,157,204,.035)}.airspace-note{margin:12px 0 0}.altitude-slice{margin:0 22px 12px;padding:12px 14px;background:rgba(21,157,204,.08);border:1px solid rgba(21,157,204,.28)}.altitude-slice label>span{display:flex;justify-content:space-between;color:#aebbb5;font-size:12px}.altitude-slice output{color:#73d4f2;font-weight:700}.altitude-slice input{height:22px;margin:5px 0 3px;padding:0;background:transparent;border:0;accent-color:#21b7e8}.altitude-slice small{color:#75867e;font-size:10px}
.radar-presets{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;padding:8px 22px 15px}
.radar-presets button{padding:9px 5px;background:transparent;border:1px solid rgba(255,255,255,.14);color:#9facA6;font-size:12px}.radar-presets button.selected{border-color:var(--lime);color:var(--lime);background:rgba(200,240,75,.08)}
.editor-section{padding:17px 22px;border-top:1px solid rgba(255,255,255,.09)}
.editor-section-title{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}.editor-section-title span{font-size:14px;font-weight:650}.editor-section-title small{font-size:11px;color:#7f9088}
.range-control,.editor-grid>label{display:block}.range-control>span,.editor-grid:not(.compact)>label>span{display:flex;justify-content:space-between;color:#aebbb5;font-size:13px}.range-control output,.editor-grid output{color:var(--lime);font-weight:650}
.radar-editor input[type="range"]{height:24px;margin:5px 0 10px;padding:0;background:transparent;border:0;accent-color:var(--lime)}
.editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px 13px}.editor-grid.compact{gap:10px}.editor-grid.compact label{font-size:12px;color:#9eaba5}.editor-grid select{width:100%}
.ray-density{display:grid;grid-template-columns:1fr auto;align-items:end;gap:12px;margin-top:11px}.ray-density label{color:#9eaba5;font-size:12px}.ray-density select{display:block;width:100%;margin-top:6px;padding:9px;background:#13231d;border:1px solid rgba(255,255,255,.14);color:#fff}.ray-density output{padding-bottom:9px;color:#8fa199;font-size:11px;text-align:right}.ray-density output.warning{color:#f0b43c}
.editor-switch{display:flex;align-items:center;gap:10px;margin-top:15px;cursor:pointer}.editor-switch input{position:absolute;opacity:0;width:1px}.editor-switch span{position:relative;width:36px;height:20px;border-radius:12px;background:#405049;flex:none}.editor-switch span:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:.2s}.editor-switch input:checked+span{background:var(--lime)}.editor-switch input:checked+span:after{transform:translateX(16px);background:var(--ink)}.editor-switch b{font-size:12px;font-weight:500;color:#bac5c0}
.radar-calculate{display:flex;width:calc(100% - 44px);margin:3px 22px 15px;padding:14px 16px;align-items:center;justify-content:space-between;text-align:left;background:var(--lime);color:var(--ink)}.radar-calculate span{font-size:14px;font-weight:750}.radar-calculate small{font-size:10px;opacity:.68}.radar-calculate:disabled{opacity:.55;cursor:wait}
.radar-result{margin:0 22px 12px;padding:14px;background:#13231d;border:1px solid rgba(255,255,255,.1)}.result-score{display:flex;align-items:baseline;gap:9px}.result-score strong{font-family:Georgia,serif;color:var(--lime);font-size:31px}.result-score span{font-size:12px;color:#9eaba5}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:10px}.result-stats span{display:grid;grid-template-columns:8px 1fr;column-gap:5px;color:#8f9f97;font-size:10px}.result-stats b{grid-row:2;grid-column:2;color:#fff;font-size:14px}.result-stats i{grid-row:1/3;align-self:center;width:7px;height:7px;border-radius:50%}.result-stats .ok{background:#55c96a}.result-stats .warn{background:#f0b43c}.result-stats .bad{background:#df4c47}
.editor-status{margin:0 22px 12px;color:#9eaba5;font-size:12px;line-height:1.4}.editor-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 22px 22px}.editor-actions button{padding:11px;background:transparent;border:1px solid rgba(255,255,255,.18);color:#dce4e0;font-size:12px}.editor-actions button:disabled{opacity:.35;cursor:not-allowed}
.radar-site-icon,.radar-handle-icon{background:transparent;border:0}.radar-site-marker{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#0b1713;border:3px solid var(--lime);box-shadow:0 0 0 7px rgba(200,240,75,.2),0 4px 14px rgba(0,0,0,.45);color:var(--lime);font-size:19px}.radar-handle-marker{width:18px;height:18px;border-radius:50%;background:#fff;border:4px solid #173229;box-shadow:0 2px 8px rgba(0,0,0,.35)}
.leaflet-interactive.radar-sector{filter:drop-shadow(0 4px 9px rgba(9,22,16,.16))}
.scene{position:fixed;inset:70px 0 0 0;background:#09110e;color:#fff;z-index:2000;display:none}
.scene.open{display:block}
.scene-head{position:absolute;z-index:2;left:28px;right:28px;top:22px;display:flex;justify-content:space-between;align-items:start}
.scene h2{font-family:Georgia,serif;font-size:32px;font-weight:400;margin:6px 0}
.scene canvas{width:100%;height:100%;display:block}
.scene-controls{position:absolute;z-index:2;bottom:22px;left:28px;right:28px;display:flex;justify-content:space-between;align-items:center;font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:#aeb8b3}
.scene-controls label{display:flex;gap:12px;align-items:center}
.scene-controls input{width:170px;margin:0;accent-color:var(--lime)}
.loading{position:absolute;inset:0;display:grid;place-items:center;background:rgba(9,17,14,.78);font-size:11px;text-transform:uppercase;letter-spacing:.18em}
.loading.hidden{display:none}
@media(max-width:760px){.shell{grid-template-columns:1fr;grid-template-rows:62px 47vh 1fr;overflow:auto}
.topbar{grid-row:1}
.brand{min-width:0}
.status{display:none}
.topbar .ghost{margin-left:auto}
.map-wrap{grid-column:1;grid-row:2}
.panel{grid-row:3;border:0;overflow:visible}
.intro h1{font-size:38px}
.scene{inset:62px 0 0}
.scene-controls{align-items:flex-start;gap:14px;flex-direction:column}
.radar-mode{margin-left:auto}.topbar>.ghost{display:none}.radar-editor{position:fixed;inset:70px 8px 8px;width:auto}.map-wrap.radar-open .map-caption{right:18px}.map-wrap.radar-open .legend{display:none}.map-search,.map-wrap.radar-open .map-search{left:8px;right:8px;top:8px;width:auto}.map-caption{top:66px;left:8px;right:8px}.map-caption span:last-child{display:none}
}
.building-dot{background:#76857d}
.imagery-dot{background:#c4a35a}
.check{display:block;font-size:11px;color:var(--muted);margin:10px 0}
.check input{width:auto;margin:0 7px 0 0;accent-color:var(--ink)}
.legend .building{height:8px;width:8px;background:#76857d}
.legend .imagery{height:8px;width:8px;background:#c4a35a}
.legend .water{background:#21b7e8}
.legend .park{background:#6a9a5a}
.legend .rail{background:#5c4a3a}
.legend .poi{height:8px;width:8px;border-radius:50%;background:var(--lime)}

.map-search .search-symbol{display:none}
.map-search select{width:116px;margin:0;padding:0 6px;border:0;background:#0b1713;color:#d9e7df;font-size:12px}
.object-result{padding:14px;border-bottom:1px solid #34443c;color:#e1eae5;font-size:13px;line-height:1.45}
.object-result strong,.object-result small,.object-result a{display:block}
.object-result small{color:#aab9b0}.object-result p{margin:7px 0}.object-result a{color:#c8f04b;overflow-wrap:anywhere;margin:5px 0}
.map-search .object-result button{padding:8px;letter-spacing:0}
