:root{color-scheme:light;--ink:#0e1117;--ink-2:#3a3f4b;--ink-3:#6b7280;--paper:#f5f3ee;--surface:#fffefa;--surface-2:#f0ede6;--border:rgba(14,17,23,.1);--border-2:rgba(14,17,23,.18);--accent:#1a4fbd;--accent-soft:rgba(26,79,189,.08);--accent-mid:rgba(26,79,189,.18);--good:#1a7a4a;--good-soft:rgba(26,122,74,.1);--bad:#c0392b;--bad-soft:rgba(192,57,43,.1);--warn:#b35f00;--warn-soft:rgba(179,95,0,.1);--font-ui:"Strichpunkt Sans","Aptos","Segoe UI",system-ui,sans-serif;--font-mono:"IBM Plex Mono","Cascadia Mono",Consolas,monospace;--r:8px;--r-2:14px;--r-3:20px;--shadow:0 2px 12px rgba(14,17,23,.08),0 1px 3px rgba(14,17,23,.06)}*{box-sizing:border-box}body,html{min-height:100%}body{-webkit-user-select:none;-moz-user-select:none;user-select:none;font-family:var(--font-ui);background:var(--paper);color:var(--ink);font-size:13px}main{display:grid;grid-template-rows:auto auto 1fr;min-height:100vh}h1,h2{margin:0;color:var(--ink);letter-spacing:-.02em}h1{font-size:15px;font-weight:800}h2{font-size:14px;font-weight:750}button,input{border:1px solid var(--border-2);border-radius:var(--r);background:var(--surface);color:var(--ink-2);padding:5px 10px;font:600 12px/1.35 var(--font-ui)}button{cursor:pointer;transition:background .15s,border-color .15s,color .15s;white-space:nowrap}button:hover,input:focus{outline:none;border-color:rgba(26,79,189,.32);background:var(--surface-2);color:var(--accent)}input[type=checkbox]{padding:0}input[type=checkbox],input[type=range],input[type=range].luftrum-map-controls-bar .zoom-range{accent-color:var(--accent)}#detailsJson,.debug-json,.json-panel,code,input,pre,textarea{-webkit-user-select:text;-moz-user-select:text;user-select:text}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-3);box-shadow:var(--shadow);overflow:hidden}.topbar{gap:12px;padding:10px 16px;border-bottom:1px solid var(--border);border-radius:0;box-shadow:none;flex-wrap:wrap}.topbar,.topbar>.brand{display:flex;align-items:center}.topbar>.brand{gap:10px;margin-right:auto}.brand-icon{width:32px;height:32px;border-radius:var(--r);background:var(--accent);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.brand-icon svg{width:18px;height:18px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.eyebrow{color:var(--ink-3);font-size:10px;line-height:1.2;text-transform:uppercase;letter-spacing:.12em;font-weight:750;margin-bottom:2px}.topbar .eyebrow{margin-top:1px}.topbar-meta{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:6px}.pill{display:inline-flex;align-items:center;min-height:24px;padding:4px 10px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);border:1px solid var(--border);font-size:11px;font-weight:650;letter-spacing:.02em}.pill.good{background:var(--good-soft);color:var(--good);border-color:rgba(26,122,74,.2)}.pill.bad{background:var(--bad-soft);color:var(--bad);border-color:rgba(192,57,43,.2)}.pill.muted{background:var(--surface-2);color:var(--ink-3)}#debugToggleButton.active,#debugToggleButton[aria-pressed=true]{border-color:rgba(26,79,189,.3);background:var(--accent-soft);color:var(--accent)}.metrics-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:8px;gap:8px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--border)}.metric{padding:10px 12px;border-radius:var(--r-2);background:var(--surface-2);box-shadow:none}.metric span{color:var(--ink-3);font-size:10px;text-transform:uppercase;letter-spacing:.1em}.metric span,.metric strong{display:block;font-weight:750}.metric strong{margin-top:5px;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#metricBackend{color:var(--bad)}#metricBackend.good,.pill.good~* #metricBackend{color:var(--good)}#metricBbox{font:600 11px var(--font-mono)}.layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;grid-gap:12px;gap:12px;padding:12px 16px;align-items:start;min-height:0}.map-column{min-width:0;display:flex;flex-direction:column}.side-column{display:grid;grid-gap:12px;gap:12px;align-content:start}.panel-block{min-width:0}.luftrum-map-controls-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);margin:0}.panel-header.compact{margin:0}.luftrum-map-controls-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.luftrum-map-controls-bar .zoom-range-label{color:var(--ink-3);font-size:10px;font-weight:750;letter-spacing:.1em;text-transform:uppercase}.luftrum-map-controls-bar .zoom-range{width:128px;min-width:96px;padding:0;border:0;background:transparent}.luftrum-map-controls-actions button:disabled,.toolbar-actions button:disabled{cursor:not-allowed;opacity:.45}.map-column .luftrum-map-controls-bar{flex:0 0 auto}.map-viewport{position:relative;flex:1 1;min-height:560px;overflow:hidden;border:0;border-radius:var(--r-3);cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none;background:#c7dce8}.map-viewport.dragging{cursor:-webkit-grabbing;cursor:grabbing}.map-viewport.backend-unavailable{cursor:not-allowed}#mapSvg,#staticMapCanvas{position:absolute;inset:0;width:100%;height:100%;min-height:560px;-webkit-user-select:none;-moz-user-select:none;user-select:none;transform-origin:50% 50%;will-change:transform}#staticMapCanvas{display:block;z-index:0;pointer-events:none}#mapSvg{display:block;z-index:1}#mapSvg .map-label,#mapSvg .object-label,#mapSvg .runtime-label,#mapSvg text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.graticule{stroke:rgba(76,99,117,.1);stroke-width:.7;fill:none}.object-point{fill:var(--accent);stroke:var(--surface);stroke-width:2;transition:r .1s}.object-hit-target,.object-point{cursor:pointer;pointer-events:auto}.object-hit-target{fill:transparent;stroke:transparent}.object-point.airport,.object-point.airports{fill:#3f7fb7}.object-point.city,.object-point.place,.object-point.populated_places{fill:#8b5e1a}.object-point.elevation_points{fill:#9b7d58}.object-point.navaids{fill:#245f9f}.object-point.landmarks,.object-point.reporting_points{fill:#1a4fbd;stroke-dasharray:2 2}.object-point.ports{fill:#4d7488}.object-point.selected{fill:var(--bad);stroke:var(--surface);stroke-width:3}.object-point.large_airport{r:7px}.object-point.medium_airport{r:6px}.object-point.heliport,.object-point.small_airport{r:4.5px}.aircraft-point{fill:#c0392b;stroke:var(--surface);stroke-width:2.1;stroke-linejoin:round;pointer-events:none;filter:drop-shadow(0 2px 3px rgba(44,28,20,.28))}.object-label{font:600 10px var(--font-mono);fill:var(--ink);paint-order:stroke;stroke:rgba(255,254,250,.95);stroke-width:3.5px;stroke-linejoin:round;pointer-events:none}.object-label.selectable-label{cursor:pointer;pointer-events:auto}.object-label.selectable-label:hover{fill:#174f80}.map-label{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;paint-order:stroke;stroke:rgba(255,254,250,.72);stroke-width:2.4px;stroke-linejoin:round;font-family:var(--font-ui);font-weight:700;letter-spacing:.015em}.area-label{fill:rgba(74,74,74,.22);text-transform:uppercase}.area-label.country_borders{fill:rgba(58,58,58,.2);font-weight:800;letter-spacing:.08em}.area-label.country_borders.country-admin-visible{-webkit-text-decoration-line:underline;text-decoration-line:underline;-webkit-text-decoration-style:double;text-decoration-style:double;text-underline-offset:.18em;text-decoration-thickness:.08em}.area-label.admin_borders{fill:rgba(83,77,70,.18);font-weight:750;letter-spacing:.05em}.area-label.geography_regions,.area-label.time_zones,.area-label.urban_areas{fill:rgba(90,83,70,.2)}.area-label.airspaces{fill:rgba(82,66,121,.24);stroke:rgba(255,254,250,.58);stroke-width:2px;font-weight:800;letter-spacing:.055em}.area-label.parks{fill:rgba(55,111,64,.24)}.lake-label{fill:rgba(46,111,153,.42);stroke:rgba(255,254,250,.62);font-style:italic;text-transform:none;letter-spacing:.02em}.line-label{fill:rgba(74,89,96,.52);stroke:rgba(255,254,250,.82);stroke-width:3px;font-weight:750}.line-label.rivers{fill:rgba(42,112,158,.58);font-style:italic}.line-label.roads{fill:rgba(142,92,26,.58)}.line-label.railroads{fill:rgba(72,72,72,.56)}.world-geometry{stroke:rgba(84,101,111,.56);stroke-width:1;fill:none;cursor:pointer;vector-effect:non-scaling-stroke}.world-geometry.MultiPolygon,.world-geometry.Polygon{fill:hsla(42,15%,60%,.08);stroke:rgba(84,101,111,.42)}.world-geometry.land{fill:hsla(45,35%,93%,.62);stroke:hsla(46,18%,71%,.25)}.world-geometry.ocean{fill:rgba(145,188,213,.54);stroke:rgba(87,137,168,.32)}.world-geometry.lakes{fill:rgba(145,202,232,.62);stroke:rgba(72,139,182,.66);stroke-width:.9}.world-geometry.rivers{stroke:rgba(54,126,178,.78);stroke-width:.95}.world-geometry.coastlines{stroke:rgba(80,137,168,.74);stroke-width:1.05}.world-geometry.parks{fill:rgba(207,232,201,.48);stroke:rgba(111,157,101,.42)}.world-geometry.geography_regions{fill:hsla(46,19%,56%,.1);stroke:hsla(46,19%,56%,.36)}.world-geometry.country_borders{fill:none;stroke:rgba(74,74,74,.82);stroke-width:1.8}.world-geometry.admin_borders{fill:none;stroke:hsla(30,7%,51%,.56);stroke-width:.9;stroke-dasharray:5 4}.world-geometry.time_zones{fill:hsla(38,19%,52%,.06);stroke:hsla(38,19%,52%,.35);stroke-width:.8;stroke-dasharray:3 5}.world-geometry.urban_areas{fill:hsla(40,23%,64%,.18);stroke:hsla(40,23%,64%,.3);stroke-width:.7}.world-geometry.roads{stroke:rgba(197,138,42,.68);stroke-width:.95}.world-geometry.railroads{stroke:hsla(0,0%,40%,.58);stroke-width:.85;stroke-dasharray:4 4}.world-geometry.airspaces{fill:rgba(154,79,159,.055);stroke:rgba(154,79,159,.68);stroke-width:1.35}.world-geometry.runways{stroke:rgba(74,74,74,.76);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.world-geometry.runways.taxi_path{stroke:rgba(86,104,113,.54);stroke-width:1.3}.world-geometry.runways.runway_path{stroke:rgba(74,74,74,.58);stroke-width:1.8;stroke-dasharray:6 3}.world-geometry.runways.runway_geometry{stroke:rgba(52,52,52,.86);stroke-width:2.8}.current-airport-point{fill:none;stroke:#c0392b;stroke-width:2.8;stroke-dasharray:5 3;pointer-events:none}.runtime-label{font:750 10px var(--font-mono);fill:#c0392b;paint-order:stroke;stroke:rgba(255,254,250,.95);stroke-width:3px;pointer-events:none}.runtime-link{stroke:rgba(192,57,43,.34);stroke-width:1.6;stroke-dasharray:5 3;pointer-events:none}.runway-geometry{fill:rgba(74,74,74,.08);stroke:rgba(74,74,74,.72);stroke-width:2;stroke-linejoin:round;pointer-events:none}.runway-geometry.active{fill:rgba(192,57,43,.12);stroke:rgba(192,57,43,.82);stroke-width:3}.map-reload-stack{position:absolute;top:12px;right:12px;z-index:5;display:grid;justify-items:end;grid-gap:5px;gap:5px}.map-connection-status,.map-debug-toggle-button,.map-reload-button,.map-search-form button,.map-search-selected,.map-search-toggle-button{padding:7px 12px;border-radius:999px;border:1px solid rgba(26,79,189,.24);background:rgba(255,254,250,.92);box-shadow:var(--shadow);color:var(--accent);font:750 11px var(--font-mono);cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.map-debug-toggle-button:hover,.map-reload-button:hover,.map-search-toggle-button:hover,.map-search-toggle-button[aria-expanded=true]{background:var(--accent-soft)}.map-reload-debug-menu{display:grid;justify-items:end;grid-gap:5px;gap:5px;opacity:0;transform:translateY(-4px);pointer-events:none;transition:opacity .14s ease,transform .14s ease}.map-reload-stack:focus-within .map-reload-debug-menu,.map-reload-stack:hover .map-reload-debug-menu{opacity:1;transform:translateY(0);pointer-events:auto}.map-debug-toggle-button[aria-pressed=true]{border-color:rgba(26,79,189,.3);background:var(--accent-soft);color:var(--accent)}.map-connection-status{cursor:default;min-height:0}.map-search-toggle-button{position:absolute;top:12px;left:12px;z-index:5;width:34px;height:34px;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:18px;line-height:1}.map-search-panel{position:absolute;top:52px;left:12px;z-index:5;width:min(560px,calc(100% - 24px));max-height:min(430px,calc(100% - 76px));overflow:auto;padding:10px;border:1px solid var(--border);border-radius:var(--r-3);background:rgba(255,254,250,.94);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.map-search-panel[hidden]{display:none}.map-search-form{display:grid;grid-template-columns:minmax(160px,1fr) auto auto;align-items:center;grid-gap:6px;gap:6px;padding:0}.map-search-form input{min-width:0;background:hsla(0,0%,100%,.86)}.map-search-selected{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--accent)}.map-search-selected:disabled{cursor:default;color:var(--ink-2);opacity:.72}.map-search-selected:not(:disabled):hover{background:var(--accent-soft)}.map-search-results{max-height:300px}.map-viewport-coordinates{left:50%;transform:translateX(-50%);z-index:4;padding:5px 10px;background:rgba(255,254,250,.88);border:1px solid var(--border);color:var(--ink-3);font:500 11px var(--font-mono);text-align:center;opacity:var(--luftrum-map-overlay-opacity)}.map-loading-overlay,.map-viewport-coordinates{position:absolute;top:12px;border-radius:999px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none}.map-loading-overlay{left:54px;z-index:3;padding:6px 10px;border:1px solid rgba(26,79,189,.24);background:rgba(255,254,250,.9);box-shadow:var(--shadow);color:var(--accent);font:700 11px var(--font-mono)}.map-loading-overlay[hidden]{display:none}.map-backend-unavailable-overlay{position:absolute;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(70,12,12,.24);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);pointer-events:auto}.map-backend-unavailable-overlay[hidden]{display:none}.map-backend-unavailable-card{max-width:min(420px,calc(100% - 32px));padding:22px 24px;border:1px solid rgba(192,57,43,.48);border-radius:var(--r-3);background:rgba(255,245,243,.96);box-shadow:0 18px 48px rgba(70,12,12,.32);color:var(--bad);text-align:center}.map-backend-unavailable-card span,.map-backend-unavailable-card strong{display:block}.map-backend-unavailable-card strong{font:850 18px/1.25 var(--font-ui);letter-spacing:-.02em}.map-backend-unavailable-card span{margin-top:8px;color:#7d1f16;font:650 13px/1.45 var(--font-ui)}luftrum-world-map[data-backend-unavailable] .luftrum-embedded-selector-tray,luftrum-world-map[data-backend-unavailable] .luftrum-embedded-zoom-controls{pointer-events:none}.map-hint{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);z-index:4;padding:5px 10px;background:rgba(255,254,250,.88);border:1px solid var(--border);border-radius:999px;color:var(--ink-3);font:500 11px var(--font-mono);text-align:center;opacity:var(--luftrum-map-overlay-opacity);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.panel-block>:not(.panel-header){margin-left:14px;margin-right:14px}.panel-block>:last-child{margin-bottom:12px}.layer-list{display:grid;grid-gap:6px;gap:6px;padding:12px 0 0}.layer-group{margin:8px 2px 0;color:var(--ink-3);font-size:10px;font-weight:750;text-transform:uppercase;letter-spacing:.1em}.layer-row{position:relative;display:grid;grid-template-columns:auto 1fr;grid-gap:8px;gap:8px;align-items:center;padding:7px 10px 7px 12px;border:1px solid color-mix(in srgb,var(--layer-accent,var(--border-2)) 18%,var(--border));border-left:4px solid color-mix(in srgb,var(--layer-accent,var(--accent)) 46%,transparent);border-radius:var(--r-2);background:color-mix(in srgb,var(--layer-soft,var(--surface-2)) 42%,var(--surface-2));cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}.layer-row:hover{border-color:color-mix(in srgb,var(--layer-accent,var(--accent)) 38%,var(--border-2))}.layer-row.enabled{background:color-mix(in srgb,var(--layer-soft,var(--accent-soft)) 74%,var(--surface));border-color:color-mix(in srgb,var(--layer-accent,var(--accent)) 34%,var(--border));border-left-color:var(--layer-accent,var(--accent));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--layer-accent,var(--accent)) 10%,transparent)}.layer-row input{width:13px;height:13px;accent-color:var(--layer-accent,var(--accent))}.layer-row.disabled{opacity:.55}.layer-row.auto-managed{cursor:default}.layer-row.auto-managed input{opacity:.72}.layer-row.inactive-at-zoom{filter:grayscale(.35)}.layer-row.enabled.inactive-at-zoom{opacity:.68;border-style:dashed}.layer-row.bad{border-color:rgba(192,57,43,.3);background:var(--bad-soft)}.layer-label strong{display:block;font-size:12px;font-weight:650;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-label small{display:block;margin-top:1px;color:var(--ink-3);font:500 10px var(--font-mono)}.compact-check{display:inline-flex;align-items:center;gap:5px;color:var(--ink-3);font-size:11px;font-weight:650;cursor:pointer}.compact-check input{width:12px;height:12px}.airspace-type-selector{margin:-2px 2px 4px 22px;padding:7px 8px;border:1px solid rgba(154,79,159,.14);border-radius:var(--r-2);background:rgba(154,79,159,.045)}.airspace-type-list,.airspace-type-selector{display:grid;grid-gap:4px;gap:4px}.airspace-type-selector:not(.enabled){opacity:.56}.airspace-type-title{color:var(--ink-3);font:750 10px var(--font-ui);text-transform:uppercase;letter-spacing:.08em;margin-bottom:1px}.airspace-altitude-selector{display:grid;grid-gap:4px;gap:4px;padding:5px 0 7px;border-bottom:1px solid rgba(154,79,159,.12);margin-bottom:2px}.airspace-altitude-label{color:var(--ink-2);font:750 11px var(--font-ui)}.airspace-altitude-selector:not(.enabled){opacity:.56}.airspace-altitude-control-row{display:grid;grid-template-columns:24px minmax(0,1fr) 72px;align-items:center;grid-gap:6px;gap:6px;color:var(--ink-3);font:650 10px var(--font-mono)}.airspace-altitude-row-label{color:var(--ink-2);font:750 10px var(--font-mono)}.airspace-altitude-slider{width:100%;min-width:0;padding:0;border:0;background:transparent;accent-color:#9a4f9f}.airspace-altitude-control-row input[type=number]{width:100%;min-width:0;padding:3px 5px;border:1px solid rgba(154,79,159,.22);border-radius:6px;background:hsla(0,0%,100%,.72);color:var(--ink-1);font:650 11px var(--font-mono)}.airspace-altitude-preset-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:4px;gap:4px}.airspace-altitude-preset-row button{padding:3px 4px;border:1px solid rgba(154,79,159,.18);border-radius:6px;background:rgba(154,79,159,.06);color:var(--ink-2);font:700 9px var(--font-mono);cursor:pointer}.airspace-altitude-preset-row button:disabled{cursor:default;opacity:.6}.airspace-type-row{display:grid;grid-template-columns:auto auto 1fr;align-items:center;grid-gap:6px;gap:6px;color:var(--ink-2);font:650 11px var(--font-ui);cursor:pointer}.airspace-type-row input{width:12px;height:12px;accent-color:var(--airspace-accent)}.airspace-type-swatch{width:18px;height:8px;border-radius:999px;border:1px solid var(--airspace-accent);background:color-mix(in srgb,var(--airspace-accent) 14%,transparent)}.airspace-type-swatch-legend{border-top-width:4px}.runtime-panel{display:grid;grid-template-columns:110px minmax(0,1fr);grid-gap:5px 8px;gap:5px 8px;font-size:11px;padding-top:12px}.runtime-panel.empty{color:var(--ink-3);font:500 11px var(--font-mono)}.runtime-overlay-controls{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px 12px;padding-bottom:6px;border-bottom:1px solid rgba(95,81,61,.16);margin-bottom:2px}.runtime-follow-check{font-size:11px}.runtime-empty-message{grid-column:1/-1}.search-form{display:flex;gap:6px;padding-top:12px}.search-form input{flex:1 1;min-width:0;width:100%;background:var(--surface-2)}.search-form input:focus{background:var(--surface)}.empty,.small-status{color:var(--ink-3);font-size:11px;margin-top:6px;font-family:var(--font-mono)}.results-list{display:grid;grid-gap:5px;gap:5px;max-height:220px;overflow:auto;margin-top:8px}.result-item{text-align:left;width:100%;padding:8px 10px;border-radius:var(--r-2);background:var(--surface-2);border:1px solid var(--border)}.result-item:hover{border-color:var(--accent);background:var(--accent-soft)}.result-item.selected{border-color:rgba(192,57,43,.35);background:var(--bad-soft);box-shadow:none}.result-title{display:block;font-size:12px;font-weight:750;color:var(--ink)}.result-subtitle{color:var(--ink-3);font:500 10px var(--font-mono);margin-top:2px}.result-meta{display:flex;gap:4px;flex-wrap:wrap;margin-top:5px}.result-meta span{padding:2px 6px;border-radius:999px;background:var(--accent-mid);color:var(--accent);font:650 10px var(--font-mono)}.selected-info{font:500 11px/1.6 var(--font-mono);color:var(--ink-2);margin:12px 14px 8px}.selected-info.empty{color:var(--ink-3)}.json-panel{min-height:100px;max-height:210px;overflow:auto;margin:0 14px 14px;padding:10px;border-radius:var(--r-2);border:1px solid var(--border);background:var(--surface-2);color:#2a3040;white-space:pre-wrap;overflow-wrap:anywhere;font:500 11px/1.5 var(--font-mono)}.kv-grid{display:grid;grid-template-columns:110px minmax(0,1fr);grid-gap:6px 10px;gap:6px 10px;padding-top:12px;font-size:11px}.kv-key{color:var(--ink-3);font-weight:650}.kv-value{color:var(--ink-2);overflow-wrap:anywhere;font-family:var(--font-mono)}.error-text{color:var(--bad)}.debug-comparison{margin:12px 16px 0}.debug-comparison[hidden]{display:none}.debug-summary{padding:10px 14px;margin:14px 16px 12px;border:1px solid rgba(26,79,189,.15);border-radius:var(--r-2);background:var(--accent-soft);color:var(--ink-2);font:500 12px var(--font-mono)}.debug-summary.empty{background:var(--surface-2);border-color:var(--border);color:var(--ink-3)}.debug-tabs{display:flex;gap:4px;padding:10px 16px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap}.debug-tab{padding:6px 12px;border-radius:var(--r) var(--r) 0 0;font-size:12px;font-weight:650;color:var(--ink-3);cursor:pointer;border:1px solid transparent;border-bottom:0;background:transparent}.debug-tab:hover{color:var(--ink);background:var(--surface-2)}.debug-tab.active{color:var(--accent);background:var(--surface-2);border-color:var(--border)}.debug-tab-panel{display:none;padding:14px 16px}.debug-tab-panel.active{display:block}.split-json{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.split-json.active{display:grid}.split-json .json-panel{margin:0}.json-title{color:var(--ink-3);font-size:10px;text-transform:uppercase;letter-spacing:.1em;font-weight:750;margin:0 0 6px}.json-panel.small{min-height:140px;max-height:240px}.reasoning-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px;margin-bottom:10px}.reasoning-card{padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-2);background:var(--surface-2);min-width:0}.reasoning-title{font-size:11px;font-weight:750;color:var(--ink-2);margin-bottom:6px}.reasoning-lines{display:grid;grid-gap:4px;gap:4px;color:var(--ink-3);font:500 10.5px/1.55 var(--font-mono);overflow-wrap:anywhere}.reasoning-empty{grid-column:1/-1;color:var(--ink-3)}.mismatch-list{display:grid;grid-gap:5px;gap:5px}.mismatch{padding:6px 10px;border-radius:var(--r);border:1px solid var(--border);font:500 12px var(--font-mono)}.mismatch.ok{color:var(--good);background:var(--good-soft);border-color:rgba(26,122,74,.18)}.mismatch.warn{color:var(--warn);background:var(--warn-soft);border-color:rgba(179,95,0,.2)}@media (max-width:1120px){.layout{grid-template-columns:1fr}.metrics-row{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar{align-items:stretch}.topbar-meta{justify-content:flex-start}.reasoning-grid,.split-json.active{grid-template-columns:1fr}}.map-legend{position:absolute;right:12px;bottom:12px;z-index:3;display:grid;grid-template-rows:auto minmax(0,1fr);grid-gap:5px;gap:5px;min-width:188px;max-width:calc(100% - 24px);max-height:calc(100% - 24px);padding:8px 10px;border:1px solid var(--border);border-radius:var(--r-2);background:rgba(255,254,250,.92);box-shadow:var(--shadow);color:var(--ink-2);font:650 11px var(--font-ui);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:default;pointer-events:auto;overflow:hidden}.map-legend:empty{display:none}.legend-title{color:var(--ink);font-size:11px;font-weight:800;letter-spacing:.02em}.legend-rows{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}.map-legend.airspace-map-legend:has(.airspace-legend-rows .legend-row:nth-child(9)){width:min(520px,calc(100% - 24px))}.airspace-legend-rows{column-width:132px;column-gap:14px}.legend-row{display:flex;align-items:center;gap:7px;page-break-inside:avoid;break-inside:avoid;margin-bottom:5px}.legend-row:last-child{margin-bottom:0}.legend-swatch{width:24px;height:0;border-top:3px solid rgba(86,104,113,.72);border-radius:999px}.legend-swatch.path-edge{border-color:rgba(86,104,113,.72)}.legend-swatch.runway-edge{border-color:rgba(52,52,52,.88);border-top-width:4px}.legend-swatch.parking-edge{border-color:rgba(122,93,63,.72);border-style:dashed}.legend-swatch.vehicle-edge{border-color:rgba(192,57,43,.7);border-style:dotted}.legend-check{display:flex;align-items:center;gap:6px;margin-top:2px;color:var(--ink-3);font:650 11px var(--font-ui)}.legend-check input{width:13px;height:13px;pointer-events:auto}@container (max-width: 599px){.map-legend.airspace-map-legend{display:none}}.airport-grid{stroke:rgba(74,74,74,.1);stroke-width:.7;vector-effect:non-scaling-stroke}.airport-center-point{fill:#3f7fb7;stroke:var(--surface);stroke-width:2.4}.airport-view-message{font:700 12px var(--font-mono);fill:var(--warn);paint-order:stroke;stroke:rgba(255,254,250,.95);stroke-width:3px}.airport-edge{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.airport-edge.path-edge{stroke:rgba(86,104,113,.72);stroke-width:1.8}.airport-edge.runway-edge{stroke:rgba(52,52,52,.88);stroke-width:4.2}.airport-edge.parking-edge{stroke:rgba(122,93,63,.72);stroke-width:1.6;stroke-dasharray:4 3}.airport-edge.vehicle-edge{stroke:rgba(192,57,43,.7);stroke-width:1.4;stroke-dasharray:2 4}.airport-edge.with-width{vector-effect:none;opacity:.62}.layer-badge{display:inline-flex;align-items:center;margin-left:6px;padding:1px 6px;border-radius:999px;font-size:9px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;vertical-align:1px}.layer-badge.heavy,.layer-badge.inactive{color:var(--warn);background:var(--warn-soft);border:1px solid rgba(179,95,0,.2)}.runway-label{font-size:10px;font-weight:700;fill:rgba(28,28,28,.92);paint-order:stroke;stroke:hsla(0,0%,100%,.78);stroke-width:3px;pointer-events:auto;-webkit-user-select:none;-moz-user-select:none;user-select:none}.world-geometry.airspaces.hovered{stroke-width:2.4;filter:drop-shadow(0 0 3px rgba(154,79,159,.34))}.airspace-hover-tooltip{position:absolute;z-index:8;min-width:230px;max-width:320px;padding:9px 10px;border:1px solid rgba(82,66,121,.28);border-radius:10px;background:rgba(255,254,250,.96);box-shadow:0 10px 26px rgba(42,38,54,.18);color:var(--ink);pointer-events:none;opacity:0;transform:translateY(3px);transition:opacity .08s ease,transform .08s ease}.airspace-hover-tooltip.visible{opacity:1;transform:translateY(0)}.airspace-hover-title{margin-bottom:6px;color:var(--ink);font:800 12px var(--font-ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.airspace-hover-row{display:grid;grid-template-columns:54px minmax(0,1fr);grid-gap:8px;gap:8px;align-items:baseline;padding:2px 0;font:600 10.5px var(--font-mono)}.airspace-hover-row span{color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}.airspace-hover-row strong{color:var(--ink-2);font-weight:750;min-width:0;overflow-wrap:anywhere}.airspace-hover-section-title{margin:7px 0 2px;color:var(--ink-3);font:800 10px var(--font-mono);text-transform:uppercase;letter-spacing:.06em}.airspace-hover-section{margin-top:7px;font:650 10.5px var(--font-mono)}.airspace-hover-item{padding:1px 0;color:var(--ink-2);font:650 10.5px var(--font-mono);overflow-wrap:anywhere}.airspace-hover-item.subtle,.airspace-hover-section.subtle{color:var(--ink-3)}luftrum-world-map-shell{display:contents}luftrum-airspace-panel,luftrum-layer-panel,luftrum-map-controls,luftrum-world-map{display:block}luftrum-world-map{container-type:inline-size;position:relative}.airspace-panel-host:empty{display:none}luftrum-world-map.luftrum-world-map-embedded,luftrum-world-map[controls=embedded],luftrum-world-map[embedded-controls],luftrum-world-map[embedded]{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;height:100%;position:relative;overflow:hidden}luftrum-world-map.luftrum-world-map-embedded>.map-viewport,luftrum-world-map[controls=embedded]>.map-viewport,luftrum-world-map[embedded-controls]>.map-viewport,luftrum-world-map[embedded]>.map-viewport{flex:1 1 auto;min-height:0;height:100%}:root{--luftrum-map-overlay-opacity:0.75}.luftrum-embedded-map-controls{position:absolute;top:12px;left:50%;width:min(920px,calc(100% - 24px));z-index:8;pointer-events:none;opacity:var(--luftrum-map-overlay-opacity);transform:translateX(-50%);transition:opacity .16s ease,transform .18s ease,width .18s ease}.luftrum-embedded-map-controls:focus-within,.luftrum-embedded-map-controls:hover{opacity:.96}.luftrum-embedded-controls-body{max-height:180px;opacity:1;transform:translateY(0);overflow:hidden;border-radius:var(--r-3);transition:max-height .18s ease,opacity .16s ease,transform .18s ease}.luftrum-embedded-map-controls .luftrum-map-controls-bar{pointer-events:auto;border:1px solid hsla(0,0%,100%,.62);border-radius:var(--r-3)!important;overflow:hidden;background:rgba(255,254,250,.9);box-shadow:0 12px 36px rgba(38,49,57,.18);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.luftrum-embedded-controls-toggle{position:absolute;top:0;left:0;z-index:2;width:32px;height:30px;padding:0;pointer-events:auto;border-radius:var(--r-3);background:rgba(255,254,250,.92);box-shadow:0 8px 24px rgba(38,49,57,.18);transition:transform .16s ease,opacity .16s ease}.luftrum-embedded-map-controls:not(.collapsed) .luftrum-embedded-controls-toggle{border-radius:var(--r-3)}.luftrum-embedded-map-controls.collapsed{width:32px;transform:translateX(-50%) translateY(-2px)}.luftrum-embedded-map-controls.collapsed .luftrum-embedded-controls-body{max-height:0;opacity:0;pointer-events:none;transform:translateY(-10px)}.luftrum-embedded-map-controls.collapsed .luftrum-embedded-controls-toggle{position:static;border-radius:var(--r-3)}.luftrum-visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.luftrum-embedded-zoom-controls{position:absolute;left:14px;top:50%;z-index:8;display:flex;flex-direction:column;align-items:center;gap:7px;padding:5px;border-radius:var(--r-3);pointer-events:auto;opacity:var(--luftrum-map-overlay-opacity);background:rgba(255,254,250,.92);border:1px solid hsla(0,0%,100%,.68);box-shadow:0 10px 28px rgba(38,49,57,.2);transform:translateY(-50%);transition:opacity .16s ease,transform .18s ease}.luftrum-embedded-zoom-controls:focus-within,.luftrum-embedded-zoom-controls:hover{opacity:.96}.luftrum-embedded-zoom-controls .zoom-range-label{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.luftrum-embedded-zoom-controls .zoom-range{width:132px;min-width:112px;height:18px;padding:0 2px;border-top:1px solid rgba(55,74,86,.22);border-bottom:1px solid rgba(55,74,86,.22);border-left:0;border-right:0;background:transparent;pointer-events:auto;transform:rotate(-90deg);margin:56px -47px}.luftrum-embedded-zoom-controls button{width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;border-radius:10px;pointer-events:auto;background:var(--surface);border:1px solid var(--border-2);box-shadow:none}.luftrum-embedded-selector-tray{position:absolute;left:14px;bottom:14px;z-index:9;display:grid;grid-template-rows:minmax(0,1fr) auto;grid-gap:8px;gap:8px;max-height:calc(100% - 28px);min-height:0;pointer-events:none}.luftrum-embedded-selector-buttons{display:flex;gap:8px;pointer-events:auto}.luftrum-embedded-selector-button{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;font-size:18px;border-radius:var(--r-3);opacity:var(--luftrum-map-overlay-opacity);background:rgba(255,254,250,.92);border:1px solid hsla(0,0%,100%,.68);box-shadow:0 10px 28px rgba(38,49,57,.2);transition:opacity .16s ease,transform .16s ease}.luftrum-embedded-selector-button.active,.luftrum-embedded-selector-button:focus-visible,.luftrum-embedded-selector-button:hover{opacity:.96}.luftrum-embedded-selector-button.active{outline:2px solid rgba(45,104,160,.45)}.luftrum-embedded-selector-icon{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.luftrum-embedded-popover{width:min(380px,calc(100vw - 40px));max-height:100%;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:12px;pointer-events:auto;border-radius:var(--r-3);opacity:var(--luftrum-map-overlay-opacity);border:1px solid hsla(0,0%,100%,.66);background:rgba(255,254,250,.94);box-shadow:0 16px 44px rgba(38,49,57,.24);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:luftrum-overlay-slide-in .17s ease both}.luftrum-embedded-popover:focus-within,.luftrum-embedded-popover:hover{opacity:.96}.luftrum-embedded-popover-title{position:-webkit-sticky;position:sticky;top:-12px;z-index:1;margin:-12px -12px 8px;padding:12px 12px 8px;background:rgba(255,254,250,.96);color:var(--ink-3);font-size:10px;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.luftrum-embedded-popover .layer-group:first-of-type{margin-top:0}.luftrum-embedded-popover-content{min-height:0}luftrum-world-map[data-embedded-popover=airspaces] .luftrum-embedded-popover{width:min(560px,calc(100vw - 40px));overflow:hidden;display:flex;flex-direction:column}luftrum-world-map[data-embedded-popover=airspaces] .luftrum-embedded-popover-content{min-height:0;overflow:hidden}luftrum-world-map[data-embedded-popover=airspaces] .airspace-type-selector{max-height:100%;min-height:0;overflow:hidden;display:flex;flex-direction:column}luftrum-world-map[data-embedded-popover=airspaces] .airspace-altitude-selector,luftrum-world-map[data-embedded-popover=airspaces] .airspace-type-bulk-actions,luftrum-world-map[data-embedded-popover=airspaces] .airspace-type-title{flex:0 0 auto}luftrum-world-map[data-embedded-popover=airspaces] .airspace-type-list{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:4px 8px;padding-right:2px}@keyframes luftrum-overlay-slide-in{0%{opacity:0;transform:translateY(8px)}to{opacity:var(--luftrum-map-overlay-opacity);transform:translateY(0)}}.airspace-type-bulk-actions{display:flex;gap:6px;margin:0 0 8px}.airspace-type-bulk-actions button{flex:1 1;padding:6px 8px;font-size:11px}luftrum-world-map.luftrum-world-map-embedded .map-hint,luftrum-world-map[controls=embedded] .map-hint,luftrum-world-map[embedded-controls] .map-hint,luftrum-world-map[embedded] .map-hint{z-index:1;pointer-events:none}.airport-viewer-page{--airport-viewer-bg:var(--bg-secondary,#f5f4f0);--airport-viewer-surface:var(--bg-primary,#fff);--airport-viewer-surface-muted:var(--bg-tertiary,#eeede8);--airport-viewer-border:var(--border,rgba(0,0,0,.12));--airport-viewer-border-strong:var(--border-md,rgba(0,0,0,.22));--airport-viewer-text:var(--text-primary,#1a1a18);--airport-viewer-muted:var(--text-secondary,#5f5e5a);--airport-viewer-subtle:var(--text-tertiary,#888780);--airport-viewer-accent:var(--brand,#0b3b73);--airport-viewer-success:var(--success,#0f6e56);--airport-viewer-warning:var(--warning,#854f0b);--airport-viewer-danger:var(--danger,#a32d2d);--airport-viewer-runway:#68707a;--airport-viewer-edge:#256fa8;--airport-viewer-grid:rgba(15,23,42,.035);--airport-viewer-point:#0f6e56;--airport-viewer-parking:#b26b00;--airport-viewer-origin:#a32d2d;display:flex;flex:1 1 auto;min-height:0;width:100%;overflow:hidden;padding:12px;background:var(--airport-viewer-bg);color:var(--airport-viewer-text)}.airport-viewer-page *,.airport-viewer-page :after,.airport-viewer-page :before{box-sizing:border-box}.airport-viewer-page .airport-viewer-runtime-host,.airport-viewer-page .airport-viewer-runtime-root{display:flex;flex:1 1 auto;min-height:0;width:100%;overflow:hidden}.airport-viewer-page .airport-viewer-shell{display:flex;flex-direction:column;gap:12px;width:100%;min-height:0;margin:0;padding:0}.airport-viewer-page code{color:var(--airport-viewer-accent)}.airport-viewer-page h1,.airport-viewer-page h2{margin:0}.airport-viewer-page h2{color:var(--airport-viewer-muted);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.airport-viewer-page p{color:var(--airport-viewer-muted);margin:6px 0 0}.airport-viewer-page button,.airport-viewer-page input,.airport-viewer-page select{border:.5px solid var(--airport-viewer-border-strong);border-radius:var(--radius-md,8px);background:var(--airport-viewer-surface-muted);color:var(--airport-viewer-text);padding:8px 12px;font:inherit;font-size:13px}.airport-viewer-page input,.airport-viewer-page select{background:var(--airport-viewer-surface)}.airport-viewer-page button{cursor:pointer;font-weight:500}.airport-viewer-page button:hover:not(:disabled){background:var(--airport-viewer-bg)}.airport-viewer-page button:disabled,.airport-viewer-page input:disabled,.airport-viewer-page select:disabled{cursor:not-allowed;opacity:.55}.airport-viewer-page button:focus-visible,.airport-viewer-page input:focus,.airport-viewer-page select:focus{border-color:var(--airport-viewer-muted);box-shadow:0 0 0 3px color-mix(in srgb,var(--airport-viewer-accent) 12%,transparent);outline:none}.airport-viewer-page select{min-width:320px}.airport-viewer-page .source-select{min-width:180px}.airport-viewer-page .search-input{min-width:min(520px,100%)}.airport-viewer-page .search-input::placeholder{color:var(--airport-viewer-subtle)}.airport-viewer-page .panel{background:var(--airport-viewer-surface);border:.5px solid var(--airport-viewer-border);border-radius:var(--radius-lg,12px);box-shadow:0 1px 3px rgba(0,0,0,.04),0 1px 2px rgba(0,0,0,.03);padding:14px}.airport-viewer-page .search-panel{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(0,1.6fr);align-items:end;grid-gap:12px;gap:12px;flex-shrink:0}.airport-viewer-page .search-primary,.airport-viewer-page .search-secondary{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.airport-viewer-page .search-primary{align-items:stretch;flex-direction:column}.airport-viewer-page .search-primary input{width:100%}.airport-viewer-page .search-panel label{color:var(--airport-viewer-subtle);font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase}.airport-viewer-page .status{color:var(--airport-viewer-accent);font-size:13px}.airport-viewer-page .layout{display:grid;grid-template-columns:340px minmax(0,1fr);grid-gap:12px;gap:12px;flex:1 1 auto;min-height:0;overflow:hidden}.airport-viewer-page .sidebar{display:flex;flex-direction:column;gap:12px;min-height:0;overflow:auto;overscroll-behavior:contain;padding-right:2px}.airport-viewer-page .collapsible-panel{padding:0;overflow:hidden}.airport-viewer-page .collapsible-panel summary{cursor:pointer;list-style:none;padding:14px;color:var(--airport-viewer-muted);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.airport-viewer-page .collapsible-panel summary::-webkit-details-marker{display:none}.airport-viewer-page .collapsible-panel summary:after{content:"▾";float:right;color:var(--airport-viewer-subtle)}.airport-viewer-page .collapsible-panel:not([open]) summary:after{content:"▸"}.airport-viewer-page .collapsible-panel>div{margin:0 14px 14px}.airport-viewer-page .kv-grid{display:grid;grid-template-columns:minmax(100px,.8fr) minmax(0,1.2fr);grid-gap:8px 12px;gap:8px 12px;margin-top:12px}.airport-viewer-page .kv-key{color:var(--airport-viewer-subtle);font-size:12px}.airport-viewer-page .kv-value{font-family:Consolas,Cascadia Mono,monospace;font-size:13px;overflow-wrap:anywhere}.airport-viewer-page .empty{color:var(--airport-viewer-subtle);font-size:13px;display:block}.airport-viewer-page .diagnostics,.airport-viewer-page .frequencies{margin-top:12px;color:var(--airport-viewer-muted);font-size:13px}.airport-viewer-page .diagnostics ul{margin:8px 0 0;padding-left:20px}.airport-viewer-page .diagnostics li{margin:4px 0}.airport-viewer-page .frequency-row{display:grid;grid-template-columns:minmax(76px,.8fr) minmax(64px,auto);grid-gap:2px 10px;gap:2px 10px;padding:8px 0;border-bottom:.5px solid var(--airport-viewer-border)}.airport-viewer-page .frequency-row:last-child{border-bottom:0}.airport-viewer-page .frequency-row span{font-family:Consolas,Cascadia Mono,monospace;text-align:right}.airport-viewer-page .frequency-row small{grid-column:1/-1;color:var(--airport-viewer-subtle)}.airport-viewer-page .count-grid{display:grid;grid-template-columns:1fr auto;grid-gap:6px 12px;gap:6px 12px;margin-top:8px}.airport-viewer-page .legend{display:grid;grid-gap:9px;gap:9px;margin-top:12px;color:var(--airport-viewer-muted);font-size:13px}.airport-viewer-page .legend span{display:flex;align-items:center;gap:9px}.airport-viewer-page .legend i{width:18px;height:10px;border-radius:999px;display:inline-block}.airport-viewer-page .legend .runway{background:var(--airport-viewer-runway)}.airport-viewer-page .legend .taxi-edge{background:var(--airport-viewer-edge)}.airport-viewer-page .legend .taxi-point{background:var(--airport-viewer-point);width:10px;height:10px}.airport-viewer-page .legend .parking{background:var(--airport-viewer-parking);width:10px;height:10px}.airport-viewer-page .legend .origin{background:var(--airport-viewer-origin);width:10px;height:10px}.airport-viewer-page .legend .unresolved{border:2px dashed var(--airport-viewer-danger);background:transparent}.airport-viewer-page .viewer-panel{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.airport-viewer-page .viewer-toolbar{flex:0 0 auto;display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px}.airport-viewer-page .toolbar-actions{display:flex;gap:8px}.airport-viewer-page .graph-viewport{flex:1 1;min-height:240px;border:.5px solid var(--airport-viewer-border);border-radius:var(--radius-lg,12px);overflow:hidden;background:#fff;cursor:-webkit-grab;cursor:grab;position:relative}.airport-viewer-page .graph-viewport.dragging{cursor:-webkit-grabbing;cursor:grabbing}.airport-viewer-page .graph-options-control{position:absolute;right:14px;bottom:14px;z-index:4;display:flex;flex-direction:column;align-items:flex-end;gap:8px;cursor:auto}.airport-viewer-page .graph-options-button{border-color:var(--airport-viewer-border);background:color-mix(in srgb,var(--airport-viewer-surface) 94%,transparent);box-shadow:0 2px 8px rgba(0,0,0,.08)}.airport-viewer-page .graph-options-panel{display:grid;grid-gap:16px;gap:16px;width:min(360px,calc(100vw - 48px));max-height:min(520px,calc(100vh - 180px));overflow:auto;padding:14px;border:.5px solid var(--airport-viewer-border-strong);border-radius:var(--radius-lg,12px);background:color-mix(in srgb,var(--airport-viewer-surface) 98%,transparent);box-shadow:0 10px 28px rgba(0,0,0,.12)}.airport-viewer-page .graph-options-panel[hidden]{display:none}.airport-viewer-page #graphSvg{display:block;width:100%;height:100%;min-height:0;background:linear-gradient(var(--airport-viewer-grid) 1px,transparent 1px),linear-gradient(90deg,var(--airport-viewer-grid) 1px,transparent 1px),#fff;background-size:40px 40px}.airport-viewer-page .runway-shape{fill:color-mix(in srgb,var(--airport-viewer-runway) 16%,transparent);stroke:var(--airport-viewer-runway);stroke-width:2}.airport-viewer-page .edge-shape{stroke:var(--airport-viewer-edge);stroke-linecap:round;opacity:.9;shape-rendering:geometricPrecision}.airport-viewer-page .unresolved-shape{stroke:var(--airport-viewer-danger);stroke-dasharray:8 5;fill:none;opacity:.92;shape-rendering:geometricPrecision}.airport-viewer-page .edge-hit-shape{stroke:transparent;stroke-linecap:round;fill:none;cursor:pointer;pointer-events:stroke}.airport-viewer-page .node-hit-shape{fill:transparent;stroke:transparent;cursor:pointer;pointer-events:all}.airport-viewer-page .debug-selectable{cursor:pointer}.airport-viewer-page .debug-selected.edge-shape,.airport-viewer-page .debug-selected.unresolved-shape{opacity:1}.airport-viewer-page .debug-selected.edge-shape{stroke-width:5}.airport-viewer-page .debug-selected.unresolved-shape{stroke-width:4}.airport-viewer-page .debug-selected.origin-shape,.airport-viewer-page .debug-selected.parking-shape,.airport-viewer-page .debug-selected.taxi-point-shape{stroke:var(--airport-viewer-accent);stroke-width:2.5}.airport-viewer-page .graph-popover{position:absolute;z-index:5;max-width:min(560px,calc(100% - 24px));max-height:min(440px,calc(100% - 24px));overflow:auto;padding:12px;border:.5px solid var(--airport-viewer-border-strong);border-radius:var(--radius-lg,12px);background:var(--airport-viewer-surface);box-shadow:0 8px 24px rgba(0,0,0,.1);color:var(--airport-viewer-text);cursor:auto}.airport-viewer-page .graph-popover[hidden]{display:none}.airport-viewer-page .graph-popover-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;color:var(--airport-viewer-accent);font-size:13px;font-weight:700}.airport-viewer-page .graph-popover-close{border:0;background:transparent;color:var(--airport-viewer-muted);padding:0;font-size:18px;line-height:1}.airport-viewer-page .graph-popover-close:hover{color:var(--airport-viewer-text)}.airport-viewer-page .graph-popover pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.4 Consolas,Cascadia Mono,monospace}.airport-viewer-page .taxi-point-shape{fill:var(--airport-viewer-point);stroke:#fff;stroke-width:1}.airport-viewer-page .parking-shape{fill:var(--airport-viewer-parking);stroke:#fff;stroke-width:1}.airport-viewer-page .origin-shape{fill:var(--airport-viewer-origin);stroke:#fff;stroke-width:1}.airport-viewer-page .label{fill:var(--airport-viewer-text);font-size:11px;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}.airport-viewer-page .edge-type-controls{display:grid;grid-gap:8px;gap:8px;margin-top:12px}.airport-viewer-page .edge-type-controls p{margin:0}.airport-viewer-page .edge-type-toggle,.airport-viewer-page .width-toggle{display:flex;align-items:center;gap:8px;color:var(--airport-viewer-muted);font-size:13px}.airport-viewer-page .edge-type-toggle input,.airport-viewer-page .width-toggle input{accent-color:var(--airport-viewer-accent)}.airport-viewer-page .width-toggle{margin-top:14px}.airport-viewer-page .airport-viewer-startup-error{margin-bottom:12px;border:.5px solid color-mix(in srgb,var(--airport-viewer-danger) 35%,transparent);border-radius:var(--radius-lg,12px);background:color-mix(in srgb,var(--airport-viewer-danger) 10%,var(--airport-viewer-surface));color:var(--airport-viewer-text);padding:12px 14px;font-size:13px}@media (max-width:1000px){.airport-viewer-page{padding:10px}.airport-viewer-page .search-panel{grid-template-columns:1fr}.airport-viewer-page .search-secondary{align-items:stretch;flex-direction:column}.airport-viewer-page .layout{grid-template-columns:1fr;grid-template-rows:minmax(120px,32vh) minmax(0,1fr);overflow:hidden}.airport-viewer-page .sidebar{min-height:0;overflow:auto;overscroll-behavior:contain}.airport-viewer-page .viewer-panel{min-height:0}.airport-viewer-page .graph-viewport{min-height:180px}.airport-viewer-page input,.airport-viewer-page select{min-width:0;width:100%}}luftrum-job-map{display:block;position:relative;overflow:hidden}luftrum-job-map .jm-world-map-host{position:absolute;inset:0}luftrum-job-map .jm-world-map-element{display:block;width:100%;height:100%}luftrum-job-map .jm-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}luftrum-job-map .world-map-runtime-hidden{display:none!important}luftrum-job-map{--jm-path-color:var(--info,#185fa5);--jm-airport-fill:var(--info,#185fa5);--jm-airport-label:var(--info,#185fa5);--jm-place-fill:var(--warning,#854f0b);--jm-place-label:var(--warning,#854f0b);--jm-node-stroke:var(--bg-primary,#fff);--jm-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif}[data-theme=dark] luftrum-job-map{--jm-node-stroke:var(--bg-primary,#1a1a18)}:root{--bg-primary:#fff;--bg-secondary:#f5f4f0;--bg-tertiary:#eeede8;--text-primary:#1a1a18;--text-secondary:#5f5e5a;--text-tertiary:#888780;--border:rgba(0,0,0,.12);--border-md:rgba(0,0,0,.22);--success:#0f6e56;--danger:#a32d2d;--info:#185fa5;--warning:#854f0b;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;--brand:#0b3b73}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg-primary:#1c1c1a;--bg-secondary:#252522;--bg-tertiary:#2e2e2b;--text-primary:#f0efe9;--text-secondary:#a5a49f;--text-tertiary:#6e6d68;--border:hsla(0,0%,100%,.1);--border-md:hsla(0,0%,100%,.18);--success:#1db38a;--danger:#d95252;--info:#4a8fd4;--warning:#c48020}}[data-theme=dark]{--bg-primary:#1c1c1a;--bg-secondary:#252522;--bg-tertiary:#2e2e2b;--text-primary:#f0efe9;--text-secondary:#a5a49f;--text-tertiary:#6e6d68;--border:hsla(0,0%,100%,.1);--border-md:hsla(0,0%,100%,.18);--success:#1db38a;--danger:#d95252;--info:#4a8fd4;--warning:#c48020}*,:after,:before{box-sizing:border-box}body{font-family:var(--font);background-color:var(--bg-secondary);color:var(--text-primary);line-height:1.5;margin:0;-webkit-font-smoothing:antialiased}.card{background-color:var(--bg-primary);border:.5px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 1px 3px rgba(0,0,0,.04),0 1px 2px rgba(0,0,0,.03)}.card-hover{transition:box-shadow .15s,border-color .15s;cursor:pointer}.card-hover:hover{box-shadow:0 4px 12px rgba(0,0,0,.08);border-color:var(--border-md)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:var(--radius-md);font-size:14px;font-weight:500;cursor:pointer;transition:opacity .15s,background-color .15s,box-shadow .15s;border:none;outline:none;text-decoration:none;font-family:var(--font)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:var(--text-primary);color:var(--bg-primary)}.btn-primary:hover:not(:disabled){opacity:.85}.btn-secondary{background-color:var(--bg-tertiary);color:var(--text-primary);border:.5px solid var(--border-md)}.btn-secondary:hover:not(:disabled){background-color:var(--bg-secondary)}.btn-success{background-color:var(--success);color:#fff}.btn-success:hover:not(:disabled){opacity:.9}.btn-danger{background-color:var(--danger);color:#fff}.btn-sm{padding:5px 12px;font-size:13px}.btn-lg{padding:12px 24px;font-size:15px;border-radius:var(--radius-lg)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.02em;white-space:nowrap}.badge-info{background:color-mix(in srgb,var(--info) 12%,transparent);color:var(--info)}.badge-success{background:color-mix(in srgb,var(--success) 12%,transparent);color:var(--success)}.badge-warning{background:color-mix(in srgb,var(--warning) 12%,transparent);color:var(--warning)}.badge-danger{background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}.badge-neutral{background:var(--bg-tertiary);color:var(--text-secondary)}.input{width:100%;padding:9px 12px;background-color:var(--bg-secondary);border:.5px solid var(--border-md);border-radius:var(--radius-md);color:var(--text-primary);font-size:14px;outline:none;font-family:var(--font);transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--text-secondary);box-shadow:0 0 0 3px rgba(0,0,0,.06)}.input::placeholder{color:var(--text-tertiary)}.input-error{border-color:var(--danger)!important}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.text-info{color:var(--info)}.section-label{font-size:16px;font-weight:600;color:var(--text-secondary);letter-spacing:.18em;text-transform:uppercase}.tile{background-color:var(--bg-primary);border:.5px solid var(--border);border-radius:var(--radius-lg);padding:2rem;box-shadow:0 2px 8px rgba(0,0,0,.06);transition:box-shadow .2s,transform .2s}.tile:hover{box-shadow:0 8px 24px rgba(0,0,0,.1);transform:translateY(-2px)}.divider{height:.5px;background:var(--border);border:none;margin:0}body,html{margin:0;padding:0;height:100%;overflow:hidden;font-size:14px}#__next,body>div:first-child{height:100vh}.hub-layout{height:100vh;background-color:var(--bg-secondary)}.hub-layout,.hub-sidebar{display:flex;overflow:hidden}.hub-sidebar{width:220px;min-width:220px;background-color:var(--bg-primary);border-right:.5px solid var(--border);flex-direction:column;flex-shrink:0}.hub-main{flex:1 1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.hub-topbar{height:56px;min-height:56px;background-color:var(--bg-primary);border-bottom:.5px solid var(--border);display:flex;align-items:center;padding:0 20px;gap:12px;flex-shrink:0;z-index:10}.hub-content{flex:1 1;overflow-y:auto;overflow-x:hidden}.hub-content:has(.airport-viewer-page),.hub-content:has(.world-map-experience){display:flex;min-height:0;overflow:hidden}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 12px;font-size:14px;color:var(--text-secondary);cursor:pointer;text-decoration:none;transition:background-color .1s,color .1s;border-radius:var(--radius-md)}.nav-item:hover{background-color:var(--bg-secondary);color:var(--text-primary)}.nav-item.active{background-color:var(--bg-tertiary);color:var(--text-primary);font-weight:500}.nav-item svg{width:17px;height:17px;flex-shrink:0}.topbar-title{font-size:16px;font-weight:600;color:var(--text-secondary);letter-spacing:.18em;text-transform:uppercase;flex:1 1}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table thead th{padding:8px 12px;text-align:left;font-size:11px;font-weight:500;color:var(--text-tertiary);letter-spacing:.05em;text-transform:uppercase;border-bottom:.5px solid var(--border);white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.data-table thead th:hover{color:var(--text-secondary)}.data-table tbody td{padding:10px 12px;border-bottom:.5px solid var(--border);color:var(--text-primary);white-space:nowrap}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background-color:var(--bg-secondary)}.tab-bar{display:flex;border-bottom:.5px solid var(--border);padding:0 20px;flex-shrink:0;overflow-x:auto}.tab-item{padding:11px 14px;font-size:13px;font-weight:500;color:var(--text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-.5px;transition:color .12s;white-space:nowrap;text-decoration:none}.tab-item:hover{color:var(--text-primary)}.tab-item.active,[data-theme=dark] .tab-item.active{color:var(--info);border-bottom-color:var(--info)}.panel-layout{flex:1 1;min-height:0}.panel-layout,.panel-left{display:flex;overflow:hidden}.panel-left{width:300px;min-width:300px;border-right:.5px solid var(--border);flex-direction:column;background-color:var(--bg-primary)}.panel-right{flex:1 1;display:flex;flex-direction:column;overflow-y:auto;min-width:0}.airport-item{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;border-bottom:.5px solid var(--border);font-size:13px;transition:background-color .1s;text-decoration:none;color:var(--text-primary)}.airport-item:hover{background-color:var(--bg-secondary)}.airport-item.selected{background-color:color-mix(in srgb,var(--info) 8%,transparent);color:var(--info)}[data-theme=dark] .airport-item.selected{color:var(--info);background-color:color-mix(in srgb,var(--info) 10%,transparent)}.airport-item .icao{font-weight:600;font-size:12px;font-family:monospace;min-width:44px}.airport-item .name{color:var(--text-secondary);font-size:12px;flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-placeholder{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;background-color:var(--bg-secondary);border:1.5px dashed var(--border-md);border-radius:var(--radius-lg);position:relative;overflow:hidden}.map-placeholder:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,color-mix(in srgb,var(--info) 18%,transparent) 1px,transparent 1px);background-size:20px 20px;pointer-events:none}.map-placeholder-text{position:relative;z-index:1;text-align:center}.access-denied{flex:1 1;flex-direction:column;justify-content:center;gap:14px;text-align:center;padding:60px 40px}.access-denied,.info-row{display:flex;align-items:center}.info-row{justify-content:space-between;padding:7px 0;border-bottom:.5px solid var(--border);font-size:13px}.info-row:last-child{border-bottom:none}.info-row .label{color:var(--text-secondary)}.info-row .value{font-weight:500}.form-group{margin-bottom:14px}.form-label{display:block;font-size:11px;font-weight:600;color:var(--text-secondary);letter-spacing:.07em;text-transform:uppercase;margin-bottom:5px}@media (max-width:768px){.hub-sidebar{display:none}.hub-layout{flex-direction:column}.mobile-topbar-logo{display:flex}.mobile-bottom-nav{display:flex;border-top:.5px solid var(--border);background-color:var(--bg-primary);flex-shrink:0}.mobile-tab{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 4px;font-size:10px;color:var(--text-tertiary);cursor:pointer;gap:3px;text-decoration:none}.mobile-tab.active{color:var(--info)}}@media (min-width:769px){.mobile-bottom-nav,.mobile-topbar-logo{display:none}}.world-map-experience{display:flex;flex:1 1;width:100%;height:100%;min-height:0;overflow:hidden;flex-direction:column}.world-map-tab-panel{flex:1 1;display:flex;min-height:0;overflow:hidden;background:var(--bg-secondary)}.world-map-embedded-mode{flex:1 1;min-width:0;min-height:0;display:flex;overflow:hidden;box-sizing:border-box;padding:12px}.world-map-composed-main,.world-map-embedded-stack{flex:1 1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.world-map-composed-mode{flex:1 1;min-width:0;min-height:0;display:flex;overflow:hidden}.world-map-control-rail{width:320px;min-width:320px;display:flex;flex-direction:column;gap:12px;padding:12px;overflow:auto;border-left:.5px solid var(--border);background:var(--bg-primary)}.world-map-control-card{background:var(--bg-primary);border:.5px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.world-map-control-title{padding:10px 12px;border-bottom:.5px solid var(--border);color:var(--text-secondary);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.world-map-control-card luftrum-airspace-panel,.world-map-control-card luftrum-layer-panel{display:block;padding:10px 12px}.world-map-runtime-map,.world-map-runtime-shell{flex:1 1;min-width:0;min-height:0;display:flex;overflow:hidden}.world-map-runtime-map{width:100%;flex-direction:column}.world-map-embedded-stack>luftrum-world-map.luftrum-world-map-embedded,.world-map-embedded-stack>luftrum-world-map[embedded],.world-map-runtime-map-embedded{flex:1 1 auto;height:100%;max-height:100%;min-height:0}.world-map-runtime-controls{display:block;flex:0 0 auto}.world-map-runtime-controls .luftrum-map-controls-bar{margin:0;border-bottom:.5px solid var(--border)}.world-map-runtime-hidden{display:none}.world-map-runtime-map .map-viewport{flex:1 1;min-height:0;height:100%;border-radius:var(--radius-lg)}.world-map-runtime-map #mapSvg,.world-map-runtime-map #staticMapCanvas{min-height:0}.world-map-runtime-map .eyebrow{color:var(--text-tertiary);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.world-map-runtime-map h2{margin:0;color:var(--text-primary);font-size:14px}.luftrum-auth-placeholder{flex:1 1;min-height:0;display:flex;align-items:center;justify-content:center;padding:32px;background:var(--bg-secondary);color:var(--text-primary)}.luftrum-auth-placeholder-card{width:min(640px,100%);border:.5px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-primary);box-shadow:0 12px 40px rgba(14,17,23,.12);padding:28px}.luftrum-auth-placeholder-card-error{border-color:color-mix(in srgb,var(--danger) 40%,var(--border))}.luftrum-auth-placeholder-kicker{font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:10px}.luftrum-auth-placeholder h1{margin:0 0 10px;font-size:22px;line-height:1.2;color:var(--text-primary)}.luftrum-auth-placeholder p{margin:0 0 14px;color:var(--text-secondary);line-height:1.55}.luftrum-auth-placeholder pre{margin:12px 0 14px;white-space:pre-wrap;word-break:break-word;border:.5px solid var(--border);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-primary);padding:12px;font-family:IBM Plex Mono,Cascadia Mono,Consolas,monospace;font-size:12px;line-height:1.45}.luftrum-auth-placeholder-help{font-size:13px}