:root{--font-sans:"IBM Plex Sans",system-ui,-apple-system,sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,monospace;--text-2xs:0.6875rem;--text-xs:0.75rem;--text-sm:0.8125rem;--text-md:0.875rem;--text-title:1.0625rem;--color-paper:oklch(99% 0.003 235);--color-paper-2:oklch(97% 0.005 235);--color-paper-3:oklch(94.5% 0.006 235);--color-panel:oklch(99% 0.004 235/0.94);--color-scrim:oklch(22% 0.03 255/0.82);--color-border:oklch(91% 0.008 235);--color-border-strong:oklch(85% 0.012 235);--color-hairline:oklch(93.5% 0.006 235);--color-ink:oklch(28% 0.02 255);--color-ink-2:oklch(46% 0.016 255);--color-ink-3:oklch(60% 0.012 255);--color-on-scrim:oklch(96% 0.01 235);--color-accent:oklch(56% 0.13 232);--color-accent-strong:oklch(49% 0.14 232);--color-accent-soft:oklch(94% 0.035 232);--color-accent-on:oklch(99% 0.01 232);--color-focus:oklch(60% 0.16 232);--color-danger:oklch(57% 0.19 25);--color-danger-soft:oklch(95% 0.03 25);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--radius-sm:6px;--radius-md:9px;--radius-lg:14px;--radius-pill:999px;--shadow-panel:0 10px 34px -10px oklch(30% 0.03 255/0.30),0 2px 8px -2px oklch(30% 0.03 255/0.14);--shadow-pop:0 8px 26px -8px oklch(30% 0.03 255/0.34);--shadow-pill:0 2px 10px -3px oklch(30% 0.03 255/0.35);--dur-fast:120ms;--dur:180ms;--ease-out:cubic-bezier(0.2,0.8,0.2,1);--ease-in-out:cubic-bezier(0.65,0,0.35,1)}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;font-family:var(--font-sans);color:var(--color-ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow:hidden;overflow-x:clip}.app{position:fixed;inset:0}.map{inset:0;width:100%;height:100%}.map,.panel{position:absolute}.panel{top:var(--space-4);left:var(--space-4);z-index:10;width:312px;max-height:calc(100vh - 2 * var(--space-4));overflow-y:auto;background:var(--color-panel);-webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel);padding:var(--space-3) var(--space-4) var(--space-4);font-size:var(--text-sm);scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent;transition:transform var(--dur) var(--ease-out),opacity var(--dur) var(--ease-out)}.panel::-webkit-scrollbar{width:8px}.panel::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:99px;border:2px solid transparent;background-clip:content-box}.panel.hidden{transform:translateX(calc(-100% - var(--space-5)));opacity:0;pointer-events:none}.panel-fab{position:absolute;top:var(--space-4);left:var(--space-4);z-index:11;width:44px;height:44px;border-radius:var(--radius-md);background:var(--color-accent);color:var(--color-accent-on);border:none;display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow-panel);transition:transform var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.panel-fab svg{width:21px;height:21px}.panel-fab:hover{background:var(--color-accent-strong);transform:translateY(-1px)}.panel-fab:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.brand{display:flex;align-items:center;gap:var(--space-3)}.brand-txt{flex:1 1;min-width:0}.collapse-btn{flex:none;width:28px;height:28px;border-radius:7px;border:1px solid var(--color-border);background:var(--color-paper);color:var(--color-ink-2);cursor:pointer;display:grid;place-items:center;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.collapse-btn svg{width:16px;height:16px}.collapse-btn:hover{background:var(--color-accent-soft);color:var(--color-accent-strong);border-color:var(--color-accent)}.collapse-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.brand .mark{flex:none;width:34px;height:34px;border-radius:9px;background:linear-gradient(150deg,var(--color-accent),var(--color-accent-strong));display:grid;place-items:center;color:var(--color-accent-on);box-shadow:0 2px 8px -2px var(--color-accent)}.brand .mark svg{width:19px;height:19px}.brand .title{font-weight:600;font-size:var(--text-title);letter-spacing:-.01em;line-height:1.1}.brand .sub{color:var(--color-ink-3);font-size:var(--text-2xs);margin-top:3px;font-family:var(--font-mono);letter-spacing:.02em;text-transform:uppercase}.searchbox{position:relative;margin:var(--space-4) 0 var(--space-2)}.searchbox:before{content:"";position:absolute;left:11px;top:50%;width:15px;height:15px;transform:translateY(-50%);pointer-events:none;opacity:.5;background:no-repeat 50%/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23334' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.searchbox input{width:100%;padding:9px 12px 9px 34px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-ink);background:var(--color-paper);outline:none;transition:border-color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out)}.searchbox input::placeholder{color:var(--color-ink-3)}.searchbox input:hover{border-color:var(--color-border-strong)}.searchbox input:focus-visible{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.results{list-style:none;margin:var(--space-2) 0 0;padding:var(--space-1);position:absolute;z-index:20;width:100%;background:var(--color-paper);border:1px solid var(--color-border);border-radius:var(--radius-md);max-height:264px;overflow-y:auto;box-shadow:var(--shadow-pop)}.results li{padding:7px 9px;cursor:pointer;display:flex;flex-direction:column;gap:1px;border-radius:var(--radius-sm);transition:background var(--dur-fast) var(--ease-out)}.results li:hover{background:var(--color-accent-soft)}.results li b{font-weight:500}.results li span{color:var(--color-ink-3);font-size:var(--text-2xs);font-family:var(--font-mono);letter-spacing:.01em}.section{margin-top:var(--space-2);border-top:1px solid var(--color-hairline);padding-top:var(--space-2)}.section-head{justify-content:space-between;gap:var(--space-2)}.section-head,.section-toggle{display:flex;align-items:center}.section-toggle{flex:1 1;gap:7px;padding:4px 0;margin:0;border:none;background:none;cursor:pointer;text-align:left;font-family:var(--font-mono);font-weight:500;font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.09em;color:var(--color-ink-3)}.section-toggle:hover{color:var(--color-ink)}.section-toggle:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:4px}.section-toggle .chev{width:13px;height:13px;flex:none;color:var(--color-ink-3);transition:transform var(--dur) var(--ease-out)}.section.open .section-toggle .chev{transform:rotate(90deg)}.section-name{flex:1 1}.section .count{font-size:var(--text-2xs);color:var(--color-ink-3);background:var(--color-paper-3);border-radius:var(--radius-pill);padding:1px 7px;letter-spacing:0}.section-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur) var(--ease-out)}.section.open .section-body{grid-template-rows:1fr}.section-inner{overflow:hidden;min-height:0;padding-top:2px}.basemaps{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:2px;gap:2px;background:var(--color-paper-3);padding:3px;border-radius:var(--radius-md);border:1px solid var(--color-border);margin-top:var(--space-2)}.basemaps button{border:none;background:transparent;border-radius:6px;padding:6px 4px;font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:500;color:var(--color-ink-2);cursor:pointer;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.basemaps button:hover{color:var(--color-ink)}.basemaps button:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.basemaps button.active{box-shadow:var(--shadow-pill);font-weight:600}.basemaps button.active,.cmp{background:var(--color-paper);color:var(--color-accent-strong)}.cmp{border:1px solid var(--color-border-strong);border-radius:var(--radius-pill);padding:3px 10px;font-size:var(--text-2xs);font-weight:500;font-family:var(--font-sans);cursor:pointer;letter-spacing:0;transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.cmp:hover{background:var(--color-accent-soft);border-color:var(--color-accent)}.cmp:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.layer{border-radius:var(--radius-md);transition:background var(--dur-fast) var(--ease-out)}.layer:hover{background:var(--color-paper-2)}.layer.off .layer-name{color:var(--color-ink-3)}.layer-main{gap:4px;padding:5px var(--space-2);margin:0 calc(-1 * var(--space-2))}.layer-check,.layer-main{display:flex;align-items:center}.layer-check{flex:1 1;min-width:0;gap:9px;cursor:pointer;font-weight:500;color:var(--color-ink);-webkit-user-select:none;-moz-user-select:none;user-select:none}.layer-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer .dot{width:11px;height:11px;border-radius:3px;flex:none;box-shadow:inset 0 0 0 1px oklch(0 0 0/.12)}.layer.raster .dot{border-radius:50%}.row-more{flex:none;width:24px;height:24px;border:none;background:none;cursor:pointer;color:var(--color-ink-3);border-radius:6px;display:grid;place-items:center;opacity:0;transition:opacity var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out),transform var(--dur) var(--ease-out)}.row-more svg{width:15px;height:15px}.layer.expanded .row-more,.layer:hover .row-more{opacity:1}.row-more:hover{background:var(--color-paper-3);color:var(--color-ink)}.row-more:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px;opacity:1}.layer.expanded .row-more{transform:rotate(180deg)}.layer input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;flex:none;width:17px;height:17px;margin:0;border-radius:5px;border:1.5px solid var(--color-border-strong);background:var(--color-paper);cursor:pointer;display:grid;place-content:center;transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.layer input[type=checkbox]:after{content:"";width:9px;height:9px;transform:scale(0);transform-origin:center;transition:transform var(--dur-fast) var(--ease-out);background:no-repeat 50%/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E")}.layer input[type=checkbox]:hover{border-color:var(--color-accent)}.layer input[type=checkbox]:checked{background:var(--color-accent);border-color:var(--color-accent)}.layer input[type=checkbox]:checked:after{transform:scale(1)}.layer input[type=checkbox]:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.ctl-wrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur) var(--ease-out)}.layer.expanded .ctl-wrap,.layer:hover .ctl-wrap{grid-template-rows:1fr}.ctl{overflow:hidden;min-height:0;display:flex;align-items:center;gap:var(--space-2);padding:2px var(--space-2) 8px 33px;opacity:0;transition:opacity var(--dur) var(--ease-out)}.layer.expanded .ctl,.layer:hover .ctl{opacity:1}.ctl input[type=range]{flex:1 1;height:4px;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:var(--color-border-strong);border-radius:99px;cursor:pointer;outline:none}.ctl input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--color-paper);border:2px solid var(--color-accent);box-shadow:var(--shadow-pill);cursor:pointer;-webkit-transition:transform var(--dur-fast) var(--ease-out);transition:transform var(--dur-fast) var(--ease-out)}.ctl input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--color-paper);border:2px solid var(--color-accent);box-shadow:var(--shadow-pill);cursor:pointer}.ctl input[type=range]:hover::-webkit-slider-thumb{transform:scale(1.12)}.ctl input[type=range]:focus-visible::-webkit-slider-thumb{outline:2px solid var(--color-focus);outline-offset:2px}.op-val{flex:none;min-width:30px;text-align:right;font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--color-ink-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.zoom-to{flex:none;border:1px solid var(--color-border);background:var(--color-paper);color:var(--color-ink-2);border-radius:7px;width:26px;height:24px;cursor:pointer;display:grid;place-items:center;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.zoom-to svg{width:14px;height:14px}.zoom-to:hover{background:var(--color-accent-soft);color:var(--color-accent-strong);border-color:var(--color-accent)}.zoom-to:active{transform:translateY(1px)}.zoom-to:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.status{margin-top:var(--space-3);padding:var(--space-3);background:var(--color-danger-soft);color:var(--color-danger);border-radius:var(--radius-md);font-size:var(--text-xs);border:1px solid oklch(88% .05 25)}.statusbar{position:absolute;bottom:var(--space-4);right:var(--space-4);z-index:10;background:var(--color-scrim);color:var(--color-on-scrim);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-family:var(--font-mono);font-size:var(--text-2xs);padding:7px 12px;border-radius:var(--radius-pill);display:flex;gap:var(--space-4);box-shadow:var(--shadow-pill);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.statusbar b{color:oklch(78% .09 232);font-weight:500;margin-right:5px}.gis-popup .maplibregl-popup-content{border-radius:var(--radius-lg);padding:0;overflow:hidden;box-shadow:var(--shadow-pop);border:1px solid var(--color-border);font-family:var(--font-sans)}.gis-popup .maplibregl-popup-tip{display:none}.gis-popup .maplibregl-popup-close-button{font-size:0;width:24px;height:24px;top:8px;right:8px;border-radius:6px;color:var(--color-on-scrim);z-index:3;line-height:0;transition:background var(--dur-fast) var(--ease-out)}.gis-popup .maplibregl-popup-close-button:before{content:"✕";font-size:13px;font-family:var(--font-sans)}.gis-popup .maplibregl-popup-close-button:hover{background:oklch(100% 0 0/.15)}.popup{width:288px;max-width:100%}.popup-head{padding:12px 14px;background:var(--color-scrim);color:var(--color-on-scrim);position:relative}.popup-kicker{display:block;font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:oklch(78% .09 232);margin-bottom:3px}.popup-head h4{margin:0;font-size:var(--text-md);font-weight:600;letter-spacing:-.01em;line-height:1.25;padding-right:22px;overflow-wrap:anywhere}.popup-sub{display:block;font-size:var(--text-xs);color:oklch(80% .015 235);margin-top:3px}.popup-chips{margin-top:9px;display:flex;flex-wrap:wrap;gap:5px}.chip{font-size:var(--text-2xs);font-weight:600;padding:2px 9px;border-radius:var(--radius-pill);letter-spacing:.01em;line-height:1.5}.chip-good{background:oklch(62% .15 150/.22);color:oklch(88% .14 150)}.chip-warn{background:oklch(70% .16 60/.22);color:oklch(90% .15 75)}.chip-neutral{background:oklch(100% 0 0/.14);color:var(--color-on-scrim)}.popup-body{max-height:320px;overflow-y:auto;scrollbar-width:thin}.popup table{border-collapse:collapse;font-size:var(--text-xs);width:100%}.popup td{padding:6px 14px;border-bottom:1px solid var(--color-hairline);vertical-align:top}.popup tr:last-child td{border-bottom:none}.popup td:first-child{color:var(--color-ink-3);font-weight:500;white-space:nowrap;width:38%;font-family:var(--font-mono);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.02em}.popup td:last-child{color:var(--color-ink);font-weight:500;overflow-wrap:anywhere}.popup-foot{padding:8px 14px;border-top:1px solid var(--color-hairline);background:var(--color-paper-2);font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--color-ink-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:6px}.popup-foot:before{content:"";width:11px;height:11px;flex:none;opacity:.55;background:no-repeat 50%/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23667' stroke-width='2.2'%3E%3Cpath d='M12 21s-7-6-7-11a7 7 0 0 1 14 0c0 5-7 11-7 11Z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E")}.swipe-right{z-index:2}.swipe-divider{top:0;bottom:0;z-index:5;width:2px;box-shadow:0 0 0 1px oklch(0 0 0/.15),0 0 12px oklch(0 0 0/.3);cursor:ew-resize;transform:translateX(-1px)}.swipe-divider,.swipe-divider .handle{position:absolute;background:var(--color-paper)}.swipe-divider .handle{top:50%;left:50%;transform:translate(-50%,-50%);width:38px;height:38px;border-radius:50%;color:var(--color-accent-strong);display:grid;place-items:center;box-shadow:var(--shadow-pop);font-size:15px;border:1px solid var(--color-border)}.swipe-labels .lbl{position:absolute;top:var(--space-4);z-index:6}.swipe-labels .lbl.left{left:var(--space-4)}.swipe-labels .lbl.right{right:var(--space-4)}.swipe-labels select{padding:7px 10px;border-radius:var(--radius-md);border:1px solid var(--color-border);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:500;color:var(--color-ink);background:var(--color-panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--shadow-pill);cursor:pointer;outline:none}.swipe-labels select:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.swipe-close{position:absolute;bottom:var(--space-5);left:50%;transform:translateX(-50%);z-index:6;border:none;background:var(--color-scrim);color:var(--color-on-scrim);padding:9px 18px;border-radius:var(--radius-pill);cursor:pointer;font-size:var(--text-sm);font-weight:500;font-family:var(--font-sans);box-shadow:var(--shadow-pill);transition:transform var(--dur-fast) var(--ease-out)}.swipe-close:hover{transform:translateX(-50%) translateY(-1px)}.swipe-close:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.maplibregl-ctrl-group{border-radius:var(--radius-md)!important;box-shadow:var(--shadow-pill)!important;border:1px solid var(--color-border)!important;overflow:hidden}.maplibregl-ctrl-group button{width:32px!important;height:32px!important}@media (max-width:480px){.panel{width:calc(100vw - 2 * var(--space-3));top:var(--space-3);max-height:52vh}.panel,.statusbar{left:var(--space-3)}.statusbar{right:var(--space-3);bottom:var(--space-3);justify-content:center}}@media (prefers-reduced-motion:reduce){*{transition-duration:60ms!important;animation-duration:60ms!important}}