:root{color-scheme:dark;--bg-0: #091017;--bg-1: #122330;--panel: rgba(8, 18, 26, .84);--panel-border: rgba(163, 197, 218, .16);--text: #eff7fb;--muted: rgba(239, 247, 251, .68);--accent: #78d1ac;--accent-2: #ffd17b}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;min-height:100%}body{min-height:100vh;background:#000;color:var(--text);font-family:Manrope,system-ui,sans-serif}.app-shell{width:100vw;min-height:100dvh;margin:0 auto;padding:0}h1,h2,p,pre,ul{margin:0}.map-shell{margin-top:0}.map-stage{position:relative;width:100vw;height:100dvh;overflow:hidden;background:#000}.map-stage.has-live-map{background:#000}.map-stage:before{position:absolute;inset:0}.map-stage:before{content:"";display:none}.map-stage.has-live-map:before{opacity:0}.map-scale{position:absolute;left:14px;bottom:18px;z-index:6;display:flex;flex-direction:column;gap:6px;opacity:0;pointer-events:none}.map-scale.is-visible{opacity:1}.map-scale-labels{display:flex;align-items:baseline;gap:10px}.map-scale-label{color:#fff;font-size:.78rem;font-weight:700;line-height:1;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.map-scale-label-imperial{color:#c3cdd2}.map-scale-bar{height:0;border-top:2px solid rgba(255,255,255,.96);box-shadow:0 0 0 1px #000000e0,inset 0 0 0 1px #000000e0}.map-compass{position:absolute;right:14px;bottom:18px;z-index:7;display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;padding:0;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:#08121aad;box-shadow:0 0 0 1px #000000d1,0 10px 24px #0000003d;color:#fff;cursor:pointer;opacity:.7;transition:opacity .16s ease,border-color .16s ease,background-color .16s ease,transform .16s ease}.map-compass:hover,.map-compass:focus-visible,.map-compass.is-active{opacity:1}.map-compass:hover,.map-compass:focus-visible{border-color:#9ad2ff80;background:#0d1d28e0}.map-compass:focus-visible{outline:2px solid rgba(154,210,255,.42);outline-offset:2px}.map-compass:active{transform:scale(.97)}.map-compass-ring{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid rgba(255,255,255,.3);border-radius:999px}.map-compass-arrow{position:relative;width:2px;height:16px;border-radius:999px;background:linear-gradient(to bottom,#78d1ac 0 46%,#ffffff4d 46% 100%);transform-origin:50% 50%;transition:transform .16s ease}.map-compass-arrow:before{content:"";position:absolute;top:-4px;left:50%;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:8px solid var(--accent);transform:translate(-50%)}.map-compass-label{position:absolute;top:5px;left:50%;color:#ffffffe6;font-size:.52rem;font-weight:800;letter-spacing:.08em;line-height:1;transform:translate(-50%);text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.mobile-refresh{position:fixed;top:14px;right:14px;z-index:10;display:block}.mobile-refresh.is-open{z-index:14}.layer-menu{position:fixed;top:72px;right:14px;z-index:10;--layer-menu-card-bg: rgba(11, 24, 33, .88);display:flex;align-items:center;justify-content:flex-end;gap:10px}.layer-menu.is-open{z-index:12}.layer-menu-appearance{position:relative;display:flex;align-items:center;gap:10px;min-height:48px;padding-right:0;visibility:hidden;opacity:0;pointer-events:none}.layer-menu.is-open .layer-menu-appearance{visibility:visible;opacity:1;pointer-events:auto}.mobile-refresh-button,.layer-menu-button{position:relative;display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;padding:0;border:1px solid rgba(255,255,255,.28);border-radius:16px;background:transparent;box-shadow:0 0 0 1px #000000d1;-webkit-backdrop-filter:none;backdrop-filter:none;cursor:pointer;transition:opacity .12s ease,transform .18s ease,border-color .18s ease;touch-action:manipulation}.layer-menu-button{opacity:0}.layer-menu:not(.is-open) .layer-menu-button{opacity:1}.layer-menu-panel:hover~.layer-menu-button,.layer-menu-panel:hover~.layer-menu-appearance .layer-menu-appearance-button,.layer-menu:hover .layer-menu-button{opacity:1}.layer-menu-button[aria-label="Close layer menu"]{cursor:grab}.layer-menu-button.is-dragging{cursor:grabbing}.layer-menu-appearance-button{position:relative;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:var(--swatch-color, #ffffff);box-shadow:0 0 0 1px #000000d1;color:#eff7fbeb;font:inherit;font-size:.9rem;font-weight:700;cursor:pointer;touch-action:manipulation;opacity:0;transition:opacity .12s ease,border-color .18s ease}.layer-menu:hover .layer-menu-appearance-button{opacity:1}#layerMenuScreenButton{border-radius:6px}.layer-menu-appearance-button.is-open{font-size:1.1rem;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.mobile-refresh-button:hover,.mobile-refresh-button:focus-visible,.layer-menu-button:hover,.layer-menu-button:focus-visible{transform:translateY(-1px);border-color:#ffffff85}.layer-menu-appearance-button:hover,.layer-menu-appearance-button:focus-visible{border-color:#ffffff85}.mobile-refresh-button:focus-visible,.mobile-refresh-menu-item:focus-visible,.layer-menu-appearance-button:focus-visible,.layer-menu-button:focus-visible,.layer-menu-row:focus-visible{outline:2px solid rgba(176,108,44,.85);outline-offset:3px}.mobile-refresh-icon{display:block;width:16px;height:16px;border:2px solid rgba(239,247,251,.88);border-radius:999px;box-shadow:-1px -1px #000000e6,-1px 0 #000000e6,-1px 1px #000000e6,0 -1px #000000e6,0 1px #000000e6,1px -1px #000000e6,1px 0 #000000e6,1px 1px #000000e6}.layer-menu-icon{position:relative;display:inline-grid;gap:4px;width:16px;height:14px}.layer-menu-icon span{position:absolute;left:0;display:block;width:16px;height:2px;border-radius:999px;background:#eff7fbeb;box-shadow:-1px -1px #000000e6,-1px 0 #000000e6,-1px 1px #000000e6,0 -1px #000000e6,0 1px #000000e6,1px -1px #000000e6,1px 0 #000000e6,1px 1px #000000e6;transform-origin:50% 50%;transition:transform .18s ease,opacity .14s ease,top .18s ease}.layer-menu-icon span:nth-child(1){top:0}.layer-menu-icon span:nth-child(2){top:6px}.layer-menu-icon span:nth-child(3){top:12px}.layer-menu.is-open .layer-menu-icon span:nth-child(1){top:6px;transform:rotate(45deg)}.layer-menu.is-open .layer-menu-icon span:nth-child(2){opacity:0}.layer-menu.is-open .layer-menu-icon span:nth-child(3){top:6px;transform:rotate(-45deg)}.mobile-refresh-menu{position:absolute;top:calc(100% + 10px);right:0;z-index:1;min-width:170px;display:grid;gap:6px;padding:8px;border:1px solid rgba(255,255,255,.18);border-radius:18px;background:#0b1821f0;box-shadow:0 20px 48px #00000047;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);opacity:0;transform:translateY(-8px);pointer-events:none;transition:opacity .16s ease,transform .16s ease;touch-action:manipulation}.layer-menu-panel{position:absolute;top:calc(100% + 10px);right:0;min-width:196px;display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.28);border-radius:0;background:transparent;box-shadow:0 0 0 1px #000000d1;-webkit-backdrop-filter:none;backdrop-filter:none;opacity:0;pointer-events:none;overflow-x:hidden;overflow-y:auto}.layer-menu-panel-scroll{display:grid;overflow:visible;scrollbar-width:none;-ms-overflow-style:none}.layer-menu-panel-scroll::-webkit-scrollbar{display:none}.layer-menu-panel.is-open{opacity:1;pointer-events:auto}.layer-menu-panel-footer{flex:0 0 auto;max-height:0;padding:0 12px;border-top:0 solid rgba(255,255,255,.16);box-shadow:none;opacity:0;pointer-events:none;overflow:hidden;transition:max-height .12s ease,padding .12s ease,border-top-width .12s ease,opacity .12s ease}.layer-menu-panel:hover .layer-menu-panel-footer,.layer-menu:hover .layer-menu-panel-footer,.layer-menu-panel:focus-within .layer-menu-panel-footer{max-height:48px;padding:10px 12px 12px;border-top-width:1px;box-shadow:inset 0 1px #000000b8;opacity:1;pointer-events:auto}.layer-menu-row{width:100%;padding:12px 14px;border:0;border-top:1px solid transparent;box-shadow:none;background:transparent;color:#eff7fbeb;font:inherit;font-size:.92rem;font-weight:700;text-align:left;cursor:pointer;transition:border-top-color .12s ease,box-shadow .12s ease,color .12s ease}.layer-menu-row:first-child{border-top:0;box-shadow:none}.layer-menu:hover .layer-menu-row:not(:first-child),.layer-menu-panel:focus-within .layer-menu-row:not(:first-child){border-top-color:#ffffff47;box-shadow:inset 0 1px #000000d1}.layer-menu-row-layer{padding-left:calc(14px + (var(--row-depth, 0) * 14px))}.layer-menu-panel-scroll .layer-menu-row-layer[data-row-id=earth]{max-height:0;padding-top:0;padding-bottom:0;border-top-width:0;border-top-color:transparent;box-shadow:none;background:transparent;overflow:hidden;visibility:hidden;opacity:0;pointer-events:none;transition:max-height .12s ease,padding .12s ease,opacity .12s ease,visibility 0s linear .12s}.layer-menu-panel:hover .layer-menu-panel-scroll .layer-menu-row-layer[data-row-id=earth],.layer-menu:hover .layer-menu-panel-scroll .layer-menu-row-layer[data-row-id=earth],.layer-menu-panel:focus-within .layer-menu-panel-scroll .layer-menu-row-layer[data-row-id=earth]{max-height:60px;padding-top:12px;padding-bottom:12px;border-top-width:1px;visibility:visible;opacity:1;pointer-events:auto;transition:max-height .12s ease,padding .12s ease,opacity .12s ease}.layer-menu-row:hover,.layer-menu-row:focus-visible{color:#fff}.layer-menu-row-slider{display:grid;gap:8px;cursor:default}.layer-menu-row-color{display:grid;gap:10px;cursor:default;justify-items:stretch}.layer-menu-row-style{display:grid;cursor:default}.layer-menu-panel-scroll .layer-menu-row-style{max-height:0;padding-top:0;padding-bottom:0;border-top-width:0;box-shadow:none;opacity:0;overflow:hidden;pointer-events:none;transition:max-height .12s ease,padding .12s ease,border-top-width .12s ease,opacity .12s ease}.layer-menu-panel:hover .layer-menu-panel-scroll .layer-menu-row-style,.layer-menu:hover .layer-menu-panel-scroll .layer-menu-row-style,.layer-menu-panel:focus-within .layer-menu-panel-scroll .layer-menu-row-style{max-height:none;padding-top:12px;padding-bottom:12px;border-top-width:1px;opacity:1;pointer-events:auto}.layer-menu-style-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.layer-menu-style-body{display:grid;gap:12px;padding-top:12px}.layer-menu-style-body-standalone{padding-top:0}.layer-menu-row-style.is-hidden .layer-menu-style-body{opacity:.4;pointer-events:none}.layer-menu-row-fill-color,.layer-menu-row-line-color,.layer-menu-row-point-color{padding:0;border:0;box-shadow:none}.layer-menu-row-fill-opacity{display:grid;gap:8px}.layer-menu-slider-header,.layer-menu-row-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.layer-menu-row-layer-header{justify-content:flex-start}.layer-menu-row-layer-header .layer-menu-row-leading{flex:1 1 auto}.layer-menu-row-gear{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:0;background:transparent;color:#eff7fb75;cursor:pointer;transition:color .12s ease,opacity .12s ease;opacity:0}.layer-menu-panel:hover .layer-menu-row-gear,.layer-menu:hover .layer-menu-row-gear,.layer-menu-panel:focus-within .layer-menu-row-gear{opacity:1}.layer-menu-row-gear:hover,.layer-menu-row-gear:focus-visible{color:#eff7fbeb}.layer-menu-row-gear:focus-visible{outline:none}.layer-menu-row-leading{display:inline-flex;align-items:center;gap:10px;min-width:0}.layer-menu:not(:hover) .layer-menu-row-leading{gap:0}.layer-menu:not(:hover) .layer-menu-row-leading>.layer-menu-row-toggle,.layer-menu:not(:hover) .layer-menu-row-leading>.layer-menu-row-label{margin-left:-14px}.layer-menu-row-grabber{display:inline-grid;gap:3px;flex:0 0 auto;width:14px;padding:0;border:0;background:transparent;cursor:grab;touch-action:none;opacity:0;pointer-events:none;transition:opacity .12s ease}.layer-menu:hover .layer-menu-row-grabber,.layer-menu-panel:focus-within .layer-menu-row-grabber{opacity:1;pointer-events:auto}.layer-menu:hover .layer-menu-row-leading,.layer-menu-panel:focus-within .layer-menu-row-leading{gap:10px}.layer-menu:hover .layer-menu-row-leading>.layer-menu-row-toggle,.layer-menu:hover .layer-menu-row-leading>.layer-menu-row-label,.layer-menu-panel:focus-within .layer-menu-row-leading>.layer-menu-row-toggle,.layer-menu-panel:focus-within .layer-menu-row-leading>.layer-menu-row-label{margin-left:0}.layer-menu-row-grabber span{display:block;width:10px;height:2px;margin:0 auto;border-radius:999px;background:#eff7fbeb;box-shadow:-1px -1px #000000e6,-1px 0 #000000e6,-1px 1px #000000e6,0 -1px #000000e6,0 1px #000000e6,1px -1px #000000e6,1px 0 #000000e6,1px 1px #000000e6}.layer-menu-row.is-dragging{opacity:.5}body.is-reordering-rows{-webkit-user-select:none;user-select:none}.layer-menu-row.is-drop-before{background:#ffffff14;box-shadow:inset 0 0 0 1px #ffffff47,inset 0 0 0 2px #000000d1,inset 0 2px #ffffffe0,inset 0 3px #000000d1}.layer-menu-row.is-drop-after{background:#ffffff14;box-shadow:inset 0 0 0 1px #ffffff47,inset 0 0 0 2px #000000d1,inset 0 -2px #ffffffe0,inset 0 -3px #000000d1}.layer-menu-row-toggle,.layer-menu-row-chevron-button{padding:0;border:0;background:transparent;font:inherit;cursor:pointer}.layer-menu-row-toggle{display:inline-flex;align-items:center;min-width:0;text-align:left}.layer-menu-row.is-hidden .layer-menu-row-label{color:#7f8a90}.layer-menu-row-chevron,.layer-menu-row-chevron-button{display:block;flex:0 0 auto;color:#fff;opacity:.8;transform:rotate(90deg);transform-origin:50% 50%;transition:transform .16s ease;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.layer-menu-row-chevron.is-expanded,.layer-menu-row-chevron-button.is-expanded{transform:rotate(-90deg)}.layer-menu-color-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.layer-menu-row-label,.layer-menu-row-value{display:block;color:#fff;font-size:.85rem;font-weight:700;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.layer-menu-row-value{color:#c3cdd2}.layer-menu-row-legend{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:42px;min-width:42px;height:18px;margin-left:auto}.layer-menu-row-legend.is-hidden{visibility:hidden}.layer-menu-row-legend-svg{display:block;width:100%;height:100%;overflow:visible;shape-rendering:geometricPrecision}.layer-menu-slider{width:100%;margin:0;accent-color:rgba(239,247,251,.92);background:transparent}.layer-menu-color-swatches{display:flex;flex-wrap:nowrap;gap:8px;width:100%;overflow-x:auto;overflow-y:visible;margin-top:-1px;margin-left:-1px;padding-top:1px;padding-left:1px;padding-bottom:2px;scrollbar-width:none;-ms-overflow-style:none}.layer-menu-color-swatches::-webkit-scrollbar{display:none}.layer-menu-color-swatch{position:relative;flex:0 0 auto;width:18px;height:18px;padding:0;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:var(--swatch-color);box-shadow:0 0 0 1px #000000d1;cursor:pointer}.layer-menu-color-swatch.is-active{border-color:#fff;box-shadow:0 0 0 1px #ffffff73}.layer-menu-color-swatch-add{display:inline-flex;align-items:center;justify-content:center;background:transparent;color:#eff7fbeb;font:inherit;font-size:.85rem;font-weight:700;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9);transition:transform .18s ease,border-color .18s ease}.layer-menu-color-swatch-add.is-open{transform:rotate(45deg);border-color:#ffffff85}.layer-menu-color-swatch-add.is-delete-armed{transform:none;border-color:#ffffffeb}.layer-menu-color-swatch.is-delete-armed{border-color:#ffffffeb;box-shadow:0 0 0 1px #ffffff73}.layer-menu-color-panel{display:none;gap:10px;width:100%;padding:0;border:0;border-radius:0;background:transparent}.layer-menu-color-panel.is-open{display:grid}.layer-menu-color-field{position:relative;width:100%;aspect-ratio:1 / 1;border:1px solid rgba(255,255,255,.18);border-radius:14px;background:linear-gradient(to top,#000 0%,transparent 100%),linear-gradient(to right,#fff 0%,transparent 100%),var(--picker-hue, hsl(35 100% 50%));touch-action:none}.layer-menu-color-field-handle{position:absolute;top:50%;left:50%;width:14px;height:14px;border:2px solid #fff;border-radius:999px;box-shadow:0 0 0 1px #00000059;transform:translate(-50%,-50%);pointer-events:none}.layer-menu-color-hue{position:relative;width:100%;height:18px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:linear-gradient(90deg,red,#ff0,#0f0,#0ff,#00f,#f0f,red);touch-action:none}.layer-menu-color-hue-handle{position:absolute;top:50%;left:50%;width:12px;height:24px;border:2px solid #fff;border-radius:999px;background:transparent;box-shadow:0 0 0 1px #00000059;transform:translate(-50%,-50%);pointer-events:none}.layer-menu-color-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.layer-menu-color-hex,.layer-menu-color-save{min-height:38px;border:1px solid rgba(255,255,255,.22);border-radius:12px;background:transparent;color:#eff7fbeb;font:inherit}.layer-menu-color-hex{width:100%;padding:0 12px}.layer-menu-color-save{padding:0 12px;font-size:.84rem;font-weight:700;cursor:pointer}.mobile-refresh-menu.is-open{opacity:1;transform:translateY(0);pointer-events:auto}.mobile-refresh-menu-item{width:100%;padding:11px 12px;border:1px solid rgba(255,255,255,.12);border-radius:12px;background:#ffffff08;color:#eff7fbeb;font:inherit;font-size:.88rem;font-weight:700;text-align:left;cursor:pointer;transition:border-color .16s ease,background-color .16s ease}.mobile-refresh-menu-item:hover,.mobile-refresh-menu-item:focus-visible{background:#9ad2ff14;border-color:#9ad2ff57}@media(max-width:800px){.mobile-refresh{top:12px;right:12px}.layer-menu{top:70px;right:12px}}@media(hover:none),(pointer:coarse){.layer-menu-panel{min-width:220px}.layer-menu.is-open .layer-menu-button,.layer-menu.is-open .layer-menu-appearance-button{opacity:1}.layer-menu.is-open .layer-menu-panel-footer{max-height:48px;padding:10px 12px 12px;border-top-width:1px;box-shadow:inset 0 1px #000000b8;opacity:1;pointer-events:auto}.layer-menu.is-open .layer-menu-row:not(:first-child){border-top-color:#ffffff47;box-shadow:inset 0 1px #000000d1}.layer-menu.is-open .layer-menu-panel-scroll .layer-menu-row-layer[data-row-id=earth]{max-height:60px;padding-top:12px;padding-bottom:12px;border-top-width:1px;visibility:visible;opacity:1;pointer-events:auto;transition:max-height .12s ease,padding .12s ease,opacity .12s ease}.layer-menu.is-open .layer-menu-panel-scroll .layer-menu-row-style{max-height:none;padding-top:12px;padding-bottom:12px;border-top-width:1px;opacity:1;pointer-events:auto}.layer-menu.is-open .layer-menu-row-gear,.layer-menu.is-open .layer-menu-row-grabber{opacity:1;pointer-events:auto}.layer-menu.is-open .layer-menu-row-leading{gap:10px}.layer-menu.is-open .layer-menu-row-leading>.layer-menu-row-toggle,.layer-menu.is-open .layer-menu-row-leading>.layer-menu-row-label{margin-left:0}}.upload-panel{display:none;position:fixed;inset:0;z-index:1000;background:#0009;align-items:center;justify-content:center}.upload-panel.is-open{display:flex}.upload-panel-inner{background:var(--bg-1, #122330);border:1px solid rgba(154,210,255,.12);border-radius:12px;width:min(480px,calc(100vw - 32px));max-height:calc(100vh - 64px);overflow-y:auto;display:flex;flex-direction:column}.upload-panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid rgba(154,210,255,.08)}.upload-panel-title{font-size:15px;font-weight:600;color:#ffffffe6}.upload-panel-close{background:none;border:none;color:#fff6;cursor:pointer;font-size:16px;padding:4px 8px;border-radius:4px;transition:color .12s}.upload-panel-close:hover{color:#fffc}.upload-panel-content{padding:20px}.clp-panel{display:none;position:fixed;inset:0;z-index:1000;background:#0000008c;align-items:center;justify-content:center}.clp-panel.is-open{display:flex}.adp-panel{z-index:1002}.clp-inner{width:min(420px,calc(100vw - 32px));max-height:calc(100vh - 64px);display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.28);border-radius:18px;box-shadow:0 0 0 1px #000000d1,0 20px 48px #00000047;overflow:hidden}.clp-inner.is-preview-step{width:min(960px,calc(100vw - 32px))}.clp-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid rgba(255,255,255,.16);box-shadow:inset 0 -1px #000000b8}.clp-title{font-size:15px;font-weight:600;color:#ffffffe6;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.clp-close{background:none;border:none;color:#fff6;cursor:pointer;font-size:14px;padding:4px 6px;border-radius:4px;transition:color .12s}.clp-close:hover{color:#fffc}.clp-content{padding:16px 20px 20px}.clp-inner.is-preview-step .clp-content{display:flex;flex:1 1 auto;min-height:0;min-width:0}.clp-form{display:grid;gap:16px}.clp-mode-selector{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.clp-mode-option{appearance:none;border:1px solid rgba(255,255,255,.38);border-radius:8px;background:#ffffff0d;color:#ffffffe6;cursor:pointer;font:inherit;font-size:12px;font-weight:700;letter-spacing:.05em;padding:10px 14px;text-align:center;text-transform:uppercase;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9);transition:border-color .12s,background .12s,color .12s}.clp-mode-option:hover{border-color:#ffffff9e;background:#ffffff17}.clp-mode-option.is-selected{border-color:#ffffffd1;background:#ffffff29}.clp-field{display:grid;gap:6px}.clp-existing-list{display:grid;gap:8px;max-height:240px;overflow:auto;padding:4px;border:1px solid rgba(255,255,255,.3);border-radius:10px;background:#00000014}.clp-existing-item{display:grid;gap:4px;width:100%;padding:10px 12px;border:1px solid rgba(255,255,255,.28);border-radius:8px;background:#ffffff0a;color:inherit;cursor:pointer;text-align:left}.clp-existing-item:hover{border-color:#ffffff85;background:#ffffff14}.clp-existing-item.is-selected{border-color:#ffffffd1;background:#ffffff1f}.clp-existing-item-name,.clp-existing-item-meta,.clp-existing-list-state{text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.clp-existing-item-name{color:#fff;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.clp-existing-item-meta,.clp-existing-list-state{color:#ffffffad;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.clp-existing-list-state{padding:12px;border:1px solid rgba(255,255,255,.22);border-radius:10px;background:#ffffff0a}.clp-existing-list-error{color:#ffd2d2eb}.clp-field-label{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#fff;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.clp-field-input{width:100%;background:#ffffff14;border:1px solid rgba(255,255,255,.5);border-radius:8px;padding:10px 12px;color:#ffffffe6;font:inherit}.clp-field-input::placeholder{color:#ffffff73}.clp-field-input:focus{border-color:#ffffffe6;outline:none}.clp-preview,.clp-uploading{display:grid;gap:16px}.clp-preview{position:relative}.clp-inner.is-preview-step .clp-preview{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;min-width:0}.clp-table-wrap{overflow:auto;max-width:100%;overscroll-behavior-x:contain;border-radius:10px;border:1px solid rgba(255,255,255,.3);background:#00000014}.clp-inner.is-preview-step .clp-table-wrap{flex:1 1 auto;min-height:0}.clp-preview-summary-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.clp-preview-summary-row .upload-step-sub{flex:1;min-width:0}.clp-undo-icon{flex-shrink:0;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:999px;background:transparent;color:#ffffffad;font-size:14px;line-height:1;cursor:pointer;vertical-align:middle}.clp-undo-icon:hover{color:#ffffffeb}.clp-undo-icon span{display:block;line-height:1}.clp-actions{display:flex;justify-content:flex-end;gap:10px}.clp-preview-controls{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}.clp-preview-pmtiles{margin-bottom:0}.clp-preview-pagination{display:inline-flex;align-items:baseline;justify-content:flex-end;gap:8px;margin-left:auto}.clp-preview-page-range{font-size:12px;color:#fff;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.clp-preview-page-btn{color:#ffffffb8;align-self:baseline}.clp-preview-page-btn:disabled{opacity:.4;cursor:default}.clp-btn{border:none;border-radius:8px;padding:10px 14px;font:inherit;font-weight:600;cursor:pointer}.clp-btn-primary,.clp-btn-secondary{background:transparent;border:1px solid rgba(255,255,255,.5);color:#ffffffe6}.clp-error{color:#ff8f8f;font-size:13px;margin:0}.clp-uploading-label{margin:0;font-size:15px;font-weight:600;color:#fff;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.clp-progress-track{width:100%;height:10px;border-radius:999px;background:#ffffff14;overflow:hidden}.clp-progress-bar{height:100%;background:linear-gradient(90deg,#ffffffbf,#fffffff2)}.clp-progress-label{margin:0;font-size:13px;color:#fff;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.upload-step-title{font-size:14px;font-weight:600;color:#fff;margin:0 0 4px;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.upload-step-sub{font-size:12px;color:#fff;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9);margin:0 0 4px}.upload-dropzone{border:2px dashed rgba(255,255,255,.4);border-radius:10px;padding:40px 20px;text-align:center;cursor:pointer;transition:border-color .12s,background .12s;position:relative}.upload-dropzone:hover,.upload-dropzone.is-over{border-color:#ffffffbf;background:#ffffff14}.upload-dropzone-hint{font-size:14px;color:#fff;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9);margin:0 0 6px}.upload-dropzone-formats{font-size:11px;color:#fff9;text-shadow:none;margin:0;letter-spacing:.03em}.upload-file-input{position:absolute;inset:0;opacity:0;cursor:pointer}.upload-col-map{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.upload-col-row{display:flex;align-items:center;gap:12px}.upload-col-label{font-size:12px;color:#9ad2ff99;width:80px;flex-shrink:0}.upload-col-select,.upload-field-input{flex:1;background:#0000004d;border:1px solid rgba(154,210,255,.15);border-radius:6px;color:#ffffffd9;font-size:13px;padding:6px 10px;outline:none;width:100%}.upload-col-select:focus,.upload-field-input:focus{border-color:#9ad2ff66}.upload-preview{width:max-content;min-width:100%;border-collapse:collapse;font-size:11px;color:#fff9;margin-bottom:16px}.upload-preview th,.upload-preview td{padding:4px 8px;border:1px solid rgba(255,255,255,.45);white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.upload-preview th{color:#fff;font-weight:500;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.upload-preview thead th{position:sticky;top:0;z-index:1;background:var(--clp-preview-header-background, rgba(18, 18, 18, .96));box-shadow:inset 0 -1px #ffffff4d}.upload-preview th.is-col-resize-target{cursor:col-resize}.upload-preview th.is-col-reorder-target{cursor:ew-resize}.clp-col-head{display:flex;align-items:center;justify-content:flex-start;gap:8px}.clp-col-sort{flex-shrink:0;border:none;background:none;color:#fff;cursor:pointer;padding:0;line-height:1;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.clp-col-sort:hover{color:#ffffffd9}.clp-col-sort:disabled{color:#ffffff59;cursor:default}.clp-col-sort:disabled:hover{color:#ffffff59}.clp-col-sort-icon{display:block;line-height:1}.clp-col-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.clp-col-name-button{min-width:0;flex:1;display:inline-flex;align-items:center;padding:0;border:none;background:transparent;color:inherit;cursor:text;text-align:left}.clp-col-name-input{min-width:0;flex:1;width:100%;padding:1px 4px;border:1px solid rgba(154,210,255,.22);border-radius:4px;background:#0000002e;color:#ffffffe6;font:inherit;line-height:1.2}.clp-col-name-input:focus{outline:none;border-color:#9ad2ff6b}.clp-col-remove{margin-left:auto;border:none;background:none;color:#fff;cursor:pointer;padding:0;line-height:1;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9)}.clp-col-remove:hover{color:#ffffffd9}.clp-preview.is-resizing-columns,.clp-preview.is-resizing-columns *{cursor:col-resize!important;-webkit-user-select:none;user-select:none}.clp-preview.is-reordering-columns,.clp-preview.is-reordering-columns *{cursor:ew-resize!important;-webkit-user-select:none;user-select:none}.upload-summary{background:#0003;border-radius:8px;padding:12px 14px;margin-bottom:16px;display:flex;flex-direction:column;gap:6px}.upload-summary-row{display:flex;justify-content:space-between;font-size:13px;color:#ffffff80}.upload-summary-row strong{color:#ffffffd9}.upload-field-label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:#fff;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9);margin-bottom:12px}.upload-field-row{display:flex;gap:10px;margin-bottom:12px}.clp-metadata-row{margin-top:-2px}.upload-field-row .upload-field-label{flex:1 1 0;min-width:0;margin-bottom:0}.upload-field-label-tight{gap:4px}.upload-field-label-inline{flex-direction:row;align-items:center;gap:8px}@media(max-width:800px){.upload-field-row{flex-wrap:wrap}.upload-field-row .upload-field-label{min-width:min(100%,180px)}}.upload-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.upload-actions-col{flex-direction:column;align-items:stretch}.upload-btn-ghost{background:none;border:none;color:var(--text-muted, #888);cursor:pointer;font-size:13px;padding:6px 0;text-align:center}.upload-btn-ghost:hover{color:var(--text, #ccc)}.upload-btn{padding:8px 18px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;border:none;transition:opacity .12s}.upload-btn:hover{opacity:.85}.upload-btn-primary{background:#9ad2ff26;color:#9ad2ffe6;border:1px solid rgba(154,210,255,.25)}.upload-btn-secondary{background:transparent;color:#ffffff73;border:1px solid rgba(255,255,255,.1)}.upload-error{font-size:12px;color:#e74c3c;margin:8px 0 0}.upload-step-uploading,.upload-step-done{text-align:center;padding:20px 0}.upload-uploading-label,.upload-done-label{font-size:14px;color:#ffffffb3;margin:0 0 16px}.upload-progress-track{height:4px;background:#9ad2ff1a;border-radius:2px;overflow:hidden;margin-bottom:8px}.upload-progress-bar{height:100%;background:#9ad2ff99;border-radius:2px;transition:width .2s ease}.upload-progress-label{font-size:12px;color:#9ad2ff80;margin:0}.layer-menu-add-row{display:block;width:100%;text-align:left;background:none;border:none;cursor:pointer;font-size:11px;color:#9ad2ff4d;padding:5px 12px 5px calc(12px + var(--row-depth, 0) * 16px);transition:color .12s;letter-spacing:.02em}.layer-menu-panel-footer .layer-menu-add-row{padding:0;color:#fff;font-size:12px;font-weight:600;letter-spacing:.08em;text-align:center;text-transform:uppercase;text-shadow:-1px -1px rgba(0,0,0,.9),-1px 0 rgba(0,0,0,.9),-1px 1px rgba(0,0,0,.9),0 -1px rgba(0,0,0,.9),0 1px rgba(0,0,0,.9),1px -1px rgba(0,0,0,.9),1px 0 rgba(0,0,0,.9),1px 1px rgba(0,0,0,.9);transition:color .12s ease}.layer-menu-add-row:hover{color:#9ad2ffb3}.layer-menu-panel-footer .layer-menu-add-row:hover{color:#fff}.layer-menu-row-remove{flex:0 0 auto;margin-left:auto;padding:0 4px;border:0;background:transparent;color:#ffffff40;font-size:1rem;line-height:1;cursor:pointer;transition:color .12s}.layer-menu-row-remove:hover{color:#ff6464cc}.arp-panel{display:none;position:fixed;inset:0;z-index:1000;background:#0000008c;align-items:center;justify-content:center}.arp-panel.is-open{display:flex}.arp-inner{background:var(--bg-1, #122330);border:1px solid rgba(154,210,255,.12);border-radius:12px;width:min(420px,calc(100vw - 32px));max-height:calc(100vh - 64px);overflow-y:auto;display:flex;flex-direction:column}.arp-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid rgba(154,210,255,.08);flex-shrink:0}.arp-title{font-size:15px;font-weight:600;color:#ffffffe6}.arp-close{background:none;border:none;color:#fff6;cursor:pointer;font-size:14px;padding:4px 6px;border-radius:4px;transition:color .12s}.arp-close:hover{color:#fffc}.arp-content{padding:16px 20px 20px}.arp-type-picker{display:flex;flex-direction:column;gap:4px}.arp-type-item{display:flex;flex-direction:column;gap:2px;width:100%;background:#9ad2ff0a;border:1px solid rgba(154,210,255,.08);border-radius:8px;padding:11px 14px;cursor:pointer;text-align:left;transition:background .1s,border-color .1s}.arp-type-item:hover{background:#9ad2ff17;border-color:#9ad2ff2e}.arp-type-item-inline{flex-direction:row;padding:9px 14px}.arp-type-label{font-size:13px;font-weight:500;color:#ffffffd9}.arp-type-sub{font-size:11px;color:#9ad2ff80}.arp-type-divider{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#9ad2ff59;padding:8px 4px 2px}.arp-form{display:flex;flex-direction:column;gap:14px}.arp-field{display:flex;flex-direction:column;gap:6px}.arp-field-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#9ad2ff80}.arp-field-input,.arp-select{background:#9ad2ff0f;border:1px solid rgba(154,210,255,.12);border-radius:7px;color:#ffffffd9;font-size:13px;padding:9px 12px;width:100%;outline:none;transition:border-color .12s;box-sizing:border-box}.arp-field-input::placeholder{color:#9ad2ff4d}.arp-field-input:focus,.arp-select:focus{border-color:#9ad2ff59}.arp-select{cursor:pointer}.arp-select option,.arp-select optgroup{background:#122330;color:#ffffffd9}.arp-radio-group{display:flex;flex-direction:column;gap:8px}.arp-radio{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:#ffffffbf}.arp-radio input[type=radio]{accent-color:rgba(154,210,255,.8)}.arp-source-section{margin-top:-4px}.arp-upload-hint{font-size:12px;color:#9ad2ff73;margin:0;line-height:1.5}.arp-error{font-size:12px;color:#e07070;margin:0}.arp-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.dtv-title-wrap{display:flex;flex-direction:column;gap:2px}.dtv-eyebrow{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#9ad2ff80}.dtv-preview{min-height:0}.dtv-dataset-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(220px,1fr);gap:12px;align-items:end;margin-bottom:12px}.dtv-dataset-field{min-width:0}.dtv-dataset-picker{display:grid;grid-template-columns:minmax(0,1fr) 40px;gap:8px;align-items:end;min-width:0}.dtv-dataset-select{cursor:pointer}.dtv-add-data-btn{height:40px;border:1px solid rgba(154,210,255,.16);border-radius:10px;background:#9ad2ff14;color:#ffffffe0;font-size:22px;line-height:1;cursor:pointer}.dtv-add-data-btn:hover{background:#9ad2ff29}.dtv-dataset-select option{background:#122330;color:#ffffffe6}.dtv-license-panel{display:grid;gap:8px;min-width:0;padding:10px 12px;border:1px solid rgba(255,255,255,.12);border-radius:10px;background:#ffffff0a}.dtv-license-item{display:grid;gap:2px;min-width:0}.dtv-license-label{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9ad2ffa6}.dtv-license-link,.dtv-license-text{min-width:0;color:#ffffffe6;font-size:13px;line-height:1.35;overflow-wrap:anywhere}.dtv-license-link:hover{color:#fff}.dtv-license-text-muted{color:#ffffff73}.dtv-empty{padding:24px 16px;border:1px solid rgba(154,210,255,.08);border-radius:10px;color:#9ad2ff80;text-align:center}@media(max-width:800px){.dtv-dataset-row{grid-template-columns:1fr}}.arp-btn{border:none;border-radius:7px;cursor:pointer;font-size:13px;font-weight:500;padding:9px 18px;transition:background .12s,color .12s}.arp-btn-secondary{background:#9ad2ff12;color:#fff9}.arp-btn-secondary:hover{background:#9ad2ff1f;color:#ffffffd9}.arp-btn-primary{background:#9ad2ff2e;color:#ffffffe6}.arp-btn-primary:hover{background:#9ad2ff47}.layer-menu-row-meta .layer-menu-row-header{opacity:.65;font-style:italic}
