*{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,Apple Color Emoji,Segoe UI Emoji;background:#0b1217;color:#e8eaed}:root{--header-top:12px;--header-left:16px;--mm-right-rail-w:0px;--mm-attrib-safe-bottom:54px;--shell-w:338px;--shadow:0 6px 20px rgba(0,0,0,.30);--banner-bg:rgba(20,20,20,.78);--panel-bg:linear-gradient(180deg,rgba(27,31,38,.92),rgba(18,22,28,.92));--card-fg:#fff;--mm-panel-bg:rgba(2,6,23,0.92);--mm-panel-border:rgba(255,255,255,0.10);--accent:#2cd3a4;--warn:#d06a61;--muted:rgba(255,255,255,.24)}.app{position:relative;height:100vh;width:100vw;overflow:hidden}.map{inset:0}.map,.uiStack{position:absolute}.uiStack{top:var(--header-top);left:var(--header-left);width:var(--shell-w);z-index:20}.header{display:flex;align-items:center;gap:8px;width:100%;background:var(--banner-bg);color:var(--card-fg);padding:8px 12px;border-radius:14px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(6px) saturate(1.2);backdrop-filter:blur(6px) saturate(1.2)}.brand{font-weight:700;letter-spacing:.2px}.headerSpacer{flex:1 1}.chip{display:inline-block;background:#2f7d3f;color:#fff;border:none;border-radius:10px;padding:6px 12px;font-size:14px;cursor:pointer;box-shadow:var(--shadow);text-decoration:none}.chip.secondary{background:#2670b9}.controlsBtn{margin-top:8px;background:var(--banner-bg);color:var(--card-fg);border:1px solid rgba(255,255,255,.08);padding:6px 10px;border-radius:10px;cursor:pointer;box-shadow:var(--shadow)}.controlsPanel{width:100%;overflow:hidden;max-height:0;opacity:0;transform:translateY(-6px);transition:max-height .25s ease,opacity .18s ease,transform .18s ease;pointer-events:none;margin-top:8px}.controlsPanel.open{max-height:800px;opacity:1;transform:translateY(0);pointer-events:auto}.trayCard{background:var(--panel-bg);color:var(--card-fg);border-radius:16px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(6px) saturate(1.2);backdrop-filter:blur(6px) saturate(1.2);padding:16px}.tray .section{margin-bottom:14px}.tray .section:last-child{margin-bottom:0}.tray .sectionTitle{font-weight:700;margin:6px 0 8px;font-size:13px;letter-spacing:.2px;opacity:.95}.ctlPill{background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:8px 12px;font-weight:700;box-shadow:var(--shadow)}.pillSelect{-webkit-appearance:none;-moz-appearance:none;appearance:none}.pillSelect,.valuePill{box-shadow:inset 0 1px 0 rgba(0,0,0,.2),var(--shadow)}.valuePill{width:62px;text-align:center}.valuePill::-webkit-inner-spin-button,.valuePill::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.valuePill{-moz-appearance:textfield}.valuePill:focus{outline:2px solid rgba(255,255,255,.22);outline-offset:2px}.row{display:flex;align-items:center;gap:10px}.range{flex:1 1 auto;display:block;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;margin:0;padding:0;background:transparent;border-radius:999px;outline:none;accent-color:var(--accent);touch-action:pan-y;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.basemapRow{margin-top:6px}.range.small{height:28px}.range::-webkit-slider-runnable-track{height:4px;border-radius:999px;background:var(--muted)}.range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid rgba(0,0,0,.25);box-shadow:0 1px 3px rgba(0,0,0,.25);margin-top:-6px}.range::-moz-range-track{height:4px;border-radius:999px;background:var(--muted)}.range::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid rgba(0,0,0,.25);box-shadow:0 1px 3px rgba(0,0,0,.25)}.range:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 4px rgba(44,211,164,.2),0 1px 3px rgba(0,0,0,.25)}.range:focus-visible::-moz-range-thumb{box-shadow:0 0 0 4px rgba(44,211,164,.2),0 1px 3px rgba(0,0,0,.25)}.toggleBtn{flex:1 1;background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:8px 12px;cursor:pointer;box-shadow:var(--shadow);transition:transform .05s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease}.toggleBtn:active{transform:translateY(1px)}.toggleBtn.active{background:rgba(44,211,164,.18);border-color:rgba(44,211,164,.55);box-shadow:inset 0 2px 10px rgba(0,0,0,.35),var(--shadow)}.resetBtn{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:8px 14px;cursor:pointer}.legend,.resetBtn{color:#fff;box-shadow:var(--shadow)}.legend{position:static;left:auto;bottom:auto;width:var(--shell-w);max-width:92vw;z-index:15;background:var(--mm-panel-bg);border:1px solid var(--mm-panel-border);border-radius:16px;padding:12px 14px}@media (max-width:768px){.controls-panel-wrap .legend{position:static;left:auto;bottom:auto;width:100%;max-width:none;background:transparent;border:0;box-shadow:none;padding:0;border-radius:0}}.controlsTrayScroll{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.controls-panel-wrap,.controlsTrayScroll,.modalBody{scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.38) transparent}.controls-panel-wrap::-webkit-scrollbar,.controlsTrayScroll::-webkit-scrollbar,.modalBody::-webkit-scrollbar{width:7px;height:7px}.controls-panel-wrap::-webkit-scrollbar-track,.controlsTrayScroll::-webkit-scrollbar-track,.modalBody::-webkit-scrollbar-track{background:transparent}.controls-panel-wrap::-webkit-scrollbar-thumb,.controlsTrayScroll::-webkit-scrollbar-thumb,.modalBody::-webkit-scrollbar-thumb{background:rgba(148,163,184,.32);border-radius:999px;border:2px solid rgba(2,6,23,.92)}.controls-panel-wrap::-webkit-scrollbar-thumb:hover,.controlsTrayScroll::-webkit-scrollbar-thumb:hover,.modalBody::-webkit-scrollbar-thumb:hover{background:rgba(203,213,225,.46)}.controls-panel-wrap::-webkit-scrollbar-corner,.controlsTrayScroll::-webkit-scrollbar-corner,.modalBody::-webkit-scrollbar-corner{background:transparent}.legend .colorbar,.legend .gradientBar,.legend .legend-bar,.legend .legendBar,.legend .legend__bar{height:10px;border-radius:6px;background:linear-gradient(90deg,var(--warn) 0,#e0c164 50%,var(--accent) 100%);margin:6px 0 8px}.legend .labels,.legend .legend-ticks,.legend .legendTicks,.legend .legend__ticks,.legend .ticks{display:flex;justify-content:space-between;gap:8px;font-size:12px;letter-spacing:.2px;opacity:.9}.legend .caption,.legend .legend-caption,.legend .legendCaption,.legend .legend__caption{margin-top:6px;font-size:11px;opacity:.85;line-height:1.25}.mm-tooltip{background:rgba(18,22,28,.92);color:#e9eef5;border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:6px 8px;font:13px/1.35 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial;box-shadow:0 4px 14px rgba(0,0,0,.35)}.mm-tooltip .leaflet-tooltip-tip{background:rgba(18,22,28,.92);border:none}.leaflet-container .leaflet-popup-content,.leaflet-container .leaflet-tooltip{color:#e9eef5!important;background:rgba(18,22,28,.92);border:1px solid rgba(255,255,255,.12)}.leaflet-container .leaflet-tooltip .leaflet-tooltip-tip{background:rgba(18,22,28,.92);border:none}.maplibregl-ctrl-attrib{background:rgba(15,23,42,.94);color:#111;border:1px solid rgba(148,163,184,.55);border-radius:999px;padding:4px 10px;font-size:10.5px;line-height:14px;box-shadow:none;box-sizing:border-box}.maplibregl-ctrl-attrib a{color:#93c5fd;text-decoration:none}.maplibregl-ctrl-attrib a:hover{text-decoration:underline}.maplibregl-ctrl-bottom-right{right:calc(6px + var(--mm-right-rail-w));bottom:6px;z-index:3}@media (max-width:768px){:root{--mm-right-rail-w:0px;--mm-attrib-safe-bottom:0px}.maplibregl-ctrl-bottom-right{top:88px;bottom:auto;right:8px}.maplibregl-ctrl-top-left .maplibregl-ctrl{margin:0}}.controls-panel-wrap{padding:14px 16px;background:var(--mm-panel-bg);border:1px solid var(--mm-panel-border);color:#fff;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px) saturate(1.1);backdrop-filter:blur(8px) saturate(1.1)}.mmNoScrollbar{scrollbar-width:none;-ms-overflow-style:none}.mmNoScrollbar::-webkit-scrollbar{width:0;height:0;display:none}[data-mm-topleft-ui]+div a{color:rgba(191,227,255,.72);text-decoration:none;font-weight:500}[data-mm-topleft-ui]+div a:hover{color:rgba(191,227,255,.95);text-decoration:underline}.controls-panel-wrap .section{margin-bottom:14px}.controls-panel-wrap .section:last-child{margin-bottom:0}.modalOverlay{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;z-index:9999;padding:16px}.modal{width:min(760px,100%);height:min(82vh,720px);display:flex;flex-direction:column;background:rgba(18,22,28,.92);color:#fff;border:1px solid rgba(255,255,255,.12);border-radius:18px;box-shadow:0 18px 50px rgba(0,0,0,.55);overflow:hidden}.modalHeader{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid rgba(148,163,184,.18)}.modalTitle{font-weight:700;font-size:14px}.closeX{width:34px;height:34px;border-radius:10px;border:none;background:transparent;color:#e5e7eb;font-size:18px;cursor:pointer}.closeX:hover{background:rgba(148,163,184,.12)}.modalTabs{display:flex;gap:8px;padding:10px 16px;border-bottom:1px solid rgba(148,163,184,.14);overflow-x:auto}.tabBtn{border-radius:999px;border:1px solid rgba(148,163,184,.18);background:rgba(148,163,184,.1);color:#e5e7eb;padding:6px 10px;font-size:12px;cursor:pointer;white-space:nowrap}.tabBtn.active{background:rgba(148,163,184,.28);border-color:rgba(148,163,184,.35)}.modalBody{flex:1 1;padding:14px 16px 18px;overflow:auto}.modalBody h3{margin:0 0 8px;font-size:16px}.modalBody li,.modalBody p{margin:0 0 10px;line-height:1.5;color:#d1d5db}.modalBody ul{padding-left:18px;margin:0 0 10px}.modalBody a{color:#93c5fd;text-decoration:underline}.cornerInfoBtn{position:absolute;right:10px;bottom:46px;width:34px;height:34px;border-radius:999px;border:1px solid rgba(148,163,184,.4);background:rgba(15,23,42,.9);color:#e5e7eb;font-weight:800;font-size:14px;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:4}.cornerInfoBtn:hover{background:rgba(15,23,42,.98)}@media (max-width:768px){.cornerInfoBtn{display:none}}.dangerBox{margin-top:12px;padding:12px;border-radius:14px;border:1px solid rgba(239,68,68,.35);background:rgba(239,68,68,.08)}.dangerTitle{font-weight:800;color:#fecaca}.dangerLabel{display:block;margin-top:10px;margin-bottom:6px;font-size:12px;color:#e5e7eb}.dangerInput{width:100%;padding:10px;border-radius:12px;border:1px solid rgba(148,163,184,.35);background:rgba(15,23,42,.65);color:#e5e7eb;outline:none}.dangerInput:focus{border-color:rgba(239,68,68,.55);box-shadow:0 0 0 3px rgba(239,68,68,.18)}.dangerCheck{display:flex;align-items:center;gap:8px;color:#e5e7eb}.dangerCheck,.dangerError{margin-top:10px;font-size:12px}.dangerError{padding:8px 10px;border-radius:12px;border:1px solid rgba(239,68,68,.35);background:rgba(239,68,68,.12);color:#fecaca}.dangerBtn{margin-top:12px;width:100%;padding:10px 12px;border-radius:999px;border:none;background:#ef4444;color:white;font-weight:800;cursor:pointer}.dangerBtn:disabled{opacity:.45;cursor:not-allowed}.mmRightRail{position:absolute;top:0;right:0;bottom:0;width:var(--mm-right-rail-w);display:none;justify-content:space-between;padding:10px 8px;background:rgba(2,6,23,.92);border-left:1px solid rgba(255,255,255,.1);z-index:6;pointer-events:auto}.mmRailGroup,.mmRightRail{flex-direction:column;align-items:center}.mmRailGroup{display:flex;gap:10px}.mmRailBtn{width:40px;height:40px;border-radius:14px;border:1px solid rgba(148,163,184,.35);background:rgba(15,23,42,.9);color:rgba(229,231,235,.95);display:flex;align-items:center;justify-content:center;cursor:pointer}.mmRailBtn[data-active=true]{background:rgba(148,163,184,.28);border-color:rgba(148,163,184,.6)}.mmRailBtn:disabled{opacity:.35;cursor:default}@media (min-width:769px){.mmRightRail{display:flex}}.pressable{transition:transform 80ms ease,filter .12s ease,box-shadow .12s ease,background-color .12s ease;will-change:transform,filter,background-color,box-shadow}.controls-toggle{position:relative;overflow:hidden}.pressable:hover{filter:brightness(1.05)}.pressable:active{transform:translateY(1px) scale(.985)}.controls-toggle.active,.pressable:active{box-shadow:inset 0 2px 6px rgba(0,0,0,.35)}.controls-toggle.active{transform:translateY(1px);filter:none}.controls-toggle.active:after{content:"";position:absolute;inset:0;background:rgba(255,255,255,.16);pointer-events:none;border-radius:inherit}