: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}.mobile-refresh{position:fixed;top:14px;right:14px;z-index:10;display:block}.mobile-refresh.is-open{z-index:12}.layer-menu{position:fixed;top:72px;right:14px;z-index:10;display:flex;align-items:center;justify-content:flex-end;gap:10px}.layer-menu.is-open{z-index:12}.layer-menu-appearance{position:relative;display:none;align-items:center;gap:10px}.layer-menu.is-open .layer-menu-appearance{display:flex}.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:transform .18s ease,border-color .18s ease;touch-action:manipulation}.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}#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:grid;border:1px solid rgba(255,255,255,.28);border-radius:18px;background:transparent;box-shadow:0 0 0 1px #000000d1;-webkit-backdrop-filter:none;backdrop-filter:none;opacity:0;pointer-events:none;overflow:hidden;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.layer-menu-panel::-webkit-scrollbar{display:none}.layer-menu-panel.is-open{opacity:1;pointer-events:auto}.layer-menu-row{width:100%;padding:12px 14px;border:0;border-top:1px solid rgba(255,255,255,.28);box-shadow:inset 0 1px #000000d1;background:transparent;color:#eff7fbeb;font:inherit;font-size:.92rem;font-weight:700;text-align:left;cursor:pointer}.layer-menu-row:first-child{border-top:0;box-shadow:none}.layer-menu-row-layer{padding-left:calc(14px + (var(--row-depth, 0) * 14px))}.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-fill,.layer-menu-row-line{display:grid;gap:12px;cursor:default}.layer-menu-row-fill-color{padding:0;border:0}.layer-menu-row-line-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-leading{display:inline-flex;align-items:center;gap:10px;min-width:0}.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}.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-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}}.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}.upload-step-title{font-size:14px;font-weight:600;color:#ffffffd9;margin:0 0 4px}.upload-step-sub{font-size:12px;color:#9ad2ff80;margin:0 0 16px}.upload-dropzone{border:2px dashed rgba(154,210,255,.2);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:#9ad2ff80;background:#9ad2ff0a}.upload-dropzone-hint{font-size:14px;color:#fff9;margin:0 0 6px}.upload-dropzone-formats{font-size:11px;color:#9ad2ff66;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:100%;border-collapse:collapse;font-size:11px;color:#fff9;margin-bottom:16px;overflow-x:auto;display:block}.upload-preview th,.upload-preview td{padding:4px 8px;border:1px solid rgba(154,210,255,.08);white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.upload-preview th{color:#9ad2ff80;font-weight:500}.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:#9ad2ff99;margin-bottom:12px}.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-add-row:hover{color:#9ad2ffb3}.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}.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}
