@import"https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap";:root{color-scheme:dark;--bg-top: #0a1526;--bg-bottom: #08111d;--panel-bg: rgba(255, 255, 255, .08);--panel-border: rgba(255, 255, 255, .5);--panel-shadow: rgba(240, 138, 36, .12);--panel-blur: blur(14px);--text: #0c1a2b;--accent: #e5f1ff;--blueprint: #6ca6df;--menu-font: "Montserrat", "Segoe UI", "Helvetica Neue", Arial, sans-serif;--control-outline: #c8c8c8;--popup-detail-text-size: 12px;--ui-scale: .9}*,*:before,*:after{box-sizing:border-box;cursor:crosshair!important}body,html{margin:0;padding:0;height:100%;background:#000;color:#eaf6ff;font-family:Roboto,Segoe UI,Helvetica Neue,Arial,sans-serif;overflow:hidden}#app{position:fixed;inset:0;overflow:hidden}#scene-canvas{width:100%;height:100%;display:block}#axis-indicator{position:fixed;left:16px;bottom:16px;width:140px;height:140px;pointer-events:auto;z-index:4;border:1px solid #c8c8c8;border-radius:0;background:var(--panel-bg);box-shadow:none;backdrop-filter:var(--panel-blur);-webkit-backdrop-filter:var(--panel-blur);cursor:grab;-webkit-user-select:none;user-select:none;scale:var(--ui-scale);transform-origin:top left}.axis-arrow{position:absolute;left:50%;top:50%;width:40px;height:2px;background:#ffffffe6;border-radius:0;transform-origin:0% 50%;box-shadow:0 0 6px #ffffff40}.axis-arrow:after{content:"";position:absolute;right:-7px;top:-4px;width:0;height:0;border-left:9px solid rgba(255,255,255,.95);border-top:5px solid transparent;border-bottom:5px solid transparent}.axis-dot{position:absolute;left:50%;top:50%;width:6px;height:6px;background:#fff;border-radius:0;transform:translate(-50%,-50%);box-shadow:0 0 6px #ffffff73}.axis-label{position:absolute;right:-20px;top:50%;transform:translateY(-50%);font-size:10px;font-weight:700;color:#fff;letter-spacing:.04em}#ui-root{position:absolute;inset:0;pointer-events:none}#loading-overlay{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:5;font-family:var(--menu-font);color:#fff}#loading-overlay.done{opacity:0;transition:opacity .2s ease}.loading-panel{min-width:260px;padding:0;border-radius:0;color:inherit;background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}.loading-title{font-weight:700;font-size:14px;letter-spacing:.02em;margin-bottom:10px}.loading-bar{height:10px;border-radius:0;background:#ffffff1f;border:1px solid rgba(255,255,255,.3);overflow:hidden;box-shadow:none}.loading-bar-fill{height:100%;width:0%;border-radius:0;background:#9b9b9b;transition:none}.loading-meta{margin-top:10px;font-size:12px;opacity:.9}#ui-panel{display:flex;flex-direction:column;position:absolute;top:20px;left:20px;width:348px;min-width:260px;max-width:348px;max-height:calc(100vh - 20px);color:var(--text);background:var(--panel-bg);border:1px solid #c8c8c8;border-radius:0;backdrop-filter:var(--panel-blur);-webkit-backdrop-filter:var(--panel-blur);box-shadow:none;overflow:hidden;-webkit-user-select:none;user-select:none;pointer-events:auto;z-index:10;font-family:var(--menu-font);scale:var(--ui-scale);transform-origin:top left}#popup-window{position:fixed;left:50%;top:50%;width:348px;height:auto;min-width:348px;min-height:240px;max-width:calc(100vw - 20px);max-height:calc(100vh - 20px);transform:translate(-50%,-50%);display:none;flex-direction:column;border:1px solid #c8c8c8;border-radius:0;background:var(--panel-bg);box-shadow:none;backdrop-filter:var(--panel-blur);-webkit-backdrop-filter:var(--panel-blur);z-index:20;overflow:hidden;resize:none;pointer-events:auto;font-family:var(--menu-font);scale:var(--ui-scale);transform-origin:top left}#ui-panel *,#popup-window *{font-family:inherit}#popup-window,#popup-window *{user-select:none;-webkit-user-select:none}#popup-window.visible{display:flex}.popup-header{position:relative;padding:12px 14px;min-height:18px;background:transparent;color:var(--text);font-weight:600;cursor:grab}.popup-close-btn{position:absolute;top:14px;right:14px;transform:none;border:0;border-radius:0;background:transparent;color:#fff;font-family:inherit;font-size:14px;font-weight:400;line-height:14px;width:14px;height:14px;display:flex;align-items:center;justify-content:center;text-align:center;padding:0;cursor:pointer}.popup-close-btn:hover{color:#c8c8c8}.popup-handle-bottom{padding:12px 14px;min-height:18px;background:transparent;color:var(--text);font-weight:600;cursor:grab}.popup-body{display:flex;flex-direction:column;gap:12px;padding:4px 26px;flex:1;min-height:0;overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.popup-body::-webkit-scrollbar{display:none}.popup-image-wrap{flex:0 0 auto;width:100%;aspect-ratio:1 / 1;border-radius:0;background:#00000073;display:grid;place-items:center;overflow:hidden}.popup-image{max-width:100%;max-height:100%;object-fit:contain}.popup-meta{display:flex;flex-direction:column;flex:0 0 auto;min-height:auto;overflow:visible;gap:6px;color:#e6e6e6}.popup-building-name{width:100%;margin:0;font-size:14px;line-height:1;font-weight:400;text-align:left;color:#fff}.popup-attrs{display:grid;gap:6px;padding-right:4px}.popup-opensea-btn{border:1px solid var(--control-outline);border-radius:0;background:#ffffff29;color:#fff;font-family:Roboto,Segoe UI,Helvetica Neue,Arial,sans-serif;font-size:12px;font-weight:400;padding:8px 12px;cursor:pointer;width:100%;text-align:center;align-self:stretch}.popup-opensea-btn:hover{background:#ffffff38}.popup-attr{display:flex;justify-content:space-between;gap:10px;font-size:var(--popup-detail-text-size)}.popup-attr span{color:#e6e6e6;font-weight:700}.popup-attr strong{color:#fff;font-weight:400;text-align:right;max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popup-preview-wrap{flex:0 0 auto;width:100%;aspect-ratio:1 / 1;border-radius:0;background:#000;border:1px solid var(--control-outline);overflow:hidden}.popup-preview-canvas{width:100%;height:100%;display:block}#ui-handle,#ui-handle-bottom{padding:12px 14px;min-height:18px;background:transparent;cursor:grab;font-weight:600;color:var(--text)}#ui-handle{position:relative}.ui-collapse-btn{position:absolute;top:14px;right:14px;border:0;border-radius:0;background:transparent;color:#fff;font-family:inherit;font-size:16px;font-weight:400;line-height:16px;width:14px;height:14px;display:flex;align-items:center;justify-content:center;text-align:center;padding:0;cursor:pointer;transform:rotate(0);transition:transform .16s ease,color .12s ease}.ui-collapse-btn:hover{color:#c8c8c8}#ui-panel.is-collapsed .ui-collapse-btn{transform:rotate(180deg)}#ui-panel.is-collapsed .ui-body,#ui-panel.is-collapsed #ui-handle-bottom{display:none}#ui-panel.is-collapsed #ui-handle{min-height:40px;padding-bottom:29px}.ui-body{padding:4px 14px;position:relative;flex:1 1 auto;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.ui-body::-webkit-scrollbar{display:none}.section{background:#ffffff0f;border-radius:0;margin-bottom:10px;box-shadow:none;overflow:hidden}.section:last-child{margin-bottom:0}.section+.section{margin-top:10px}.section-title{font-weight:700;font-size:14px;letter-spacing:.01em;margin:0;padding:10px 12px;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:space-between}.section-title:after{content:"";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:7px solid rgba(255,255,255,.85);display:inline-block;opacity:.9;transition:transform .12s ease}.section.collapsed .section-title:after{transform:rotate(180deg)}.section-content{display:block;padding:10px 12px 12px}.ui-body>.section-content:first-child{padding-top:0}.ui-body>.section-content:last-child{padding-bottom:0}.section.collapsed .section-content{display:none}.control-row{display:flex;align-items:center;justify-content:space-between;font-size:14px;margin-bottom:6px;gap:10px}.plot-search-title-row{margin-bottom:12px}.map-colors-wrap{position:relative;width:154px;flex:0 0 154px;min-width:154px}.map-colors-select{display:block;width:100%;appearance:none;border:1px solid var(--control-outline);border-radius:0;background:#ffffff29;color:#fff;font-size:12px;font-family:Roboto,Segoe UI,Helvetica Neue,Arial,sans-serif;font-weight:400;padding:8px 30px 8px 10px;text-align:left;line-height:1.2;outline:none;box-shadow:none;cursor:pointer;transition:background .12s ease}.map-colors-select:hover{background:#fff3}.map-colors-select:focus{border-color:var(--control-outline)}.map-colors-caret{position:absolute;right:10px;top:50%;transform:translateY(-35%) rotate(0);transform-origin:50% 40%;transition:transform .16s ease;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid rgba(255,255,255,.85);pointer-events:none}.map-colors-wrap.open .map-colors-caret{transform:translateY(-35%) rotate(180deg)}.map-colors-menu{position:absolute;left:0;right:0;top:calc(100% + 2px);display:grid;background:#1a1a1a;border:1px solid var(--control-outline);max-height:220px;overflow-y:auto;z-index:30}.building-colors-wrap .map-colors-menu{max-height:none;overflow-y:visible}.map-colors-menu[hidden]{display:none}.map-colors-option{border:none;border-bottom:1px solid rgba(255,255,255,.1);background:#1a1a1a;color:#fff;font-family:Roboto,Segoe UI,Helvetica Neue,Arial,sans-serif;font-size:12px;font-weight:400;text-align:left;padding:8px 10px;cursor:pointer}.map-colors-option:last-child{border-bottom:none}.map-colors-option:hover{background:#fff3}.map-colors-option.active{background:#ffffff29}.lighting-slider-row{align-items:center}.lighting-slider-wrap{min-width:152px;display:flex;align-items:center;gap:8px}.lighting-slider{flex:1;width:100%;margin:0;accent-color:#cfcfcf}.lighting-slider-value{width:34px;text-align:right;font-size:11px;color:#ffffffe0;font-variant-numeric:tabular-nums}.toggle-row{align-items:center;margin-bottom:12px}.toggle-row:last-child{margin-bottom:0}.legend-block{margin-top:8px;padding-top:8px;padding-bottom:8px;border-top:1px solid rgba(255,255,255,.12);border-bottom:1px solid rgba(255,255,255,.12)}.legend-block+.control-row{margin-top:16px}.legend-list{display:grid;gap:6px}.legend-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.legend-label{color:#fff;font-size:12px;line-height:1}.legend-swatch{width:22px;height:12px;border-radius:0;border:1px solid rgba(255,255,255,.35);box-shadow:none}.plot-search-row{display:flex;align-items:center;gap:8px}.plot-search-input{flex:1;min-width:0;border:1px solid var(--control-outline);border-radius:0;background:#00000047;color:#fff;font-size:12px;font-family:Roboto,Segoe UI,Helvetica Neue,Arial,sans-serif;padding:8px 10px;outline:none}.plot-search-input:focus,.plot-search-input:focus-visible{border-color:#c8c8c8;outline:none;box-shadow:none}.plot-search-button{border:1px solid var(--control-outline);border-radius:0;background:#ffffff29;color:#fff;font-family:Roboto,Segoe UI,Helvetica Neue,Arial,sans-serif;font-size:12px;font-weight:400;padding:8px 12px;cursor:pointer}.plot-search-button:hover{background:#ffffff38}.walk-toggle-row{justify-content:stretch;margin-top:18px;margin-bottom:0}.walk-toggle-button{width:100%;font-size:14px}.plot-search-status{margin-top:8px;font-size:11px;color:#ffffffbf}.plot-search-status:empty{display:none}.controls-list{display:grid;gap:6px;border:1px solid var(--control-outline);border-radius:0;background:#ffffff29;padding:8px 10px}.controls-item{display:flex;align-items:baseline;justify-content:space-between;gap:12px;color:#e6e6e6;font-size:var(--popup-detail-text-size);font-weight:400;line-height:1.2}.controls-item-label{font-weight:700}.controls-item-value{text-align:right;margin-left:auto}.switch{position:relative;display:inline-block;width:38px;height:20px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background:#ffffff29;border:1px solid var(--control-outline);border-radius:0;box-shadow:none;transition:background .16s ease,border-color .16s ease,box-shadow .16s ease}.slider:before{position:absolute;content:"";height:16px;width:16px;left:2px;top:1px;background:#fff;border-radius:0;border:1px solid var(--control-outline);box-shadow:none;transition:transform .16s ease}.switch input:checked+.slider{background:#ffffff38;border-color:var(--control-outline)}.switch input:checked+.slider:before{transform:translate(16px)}label{color:#fff}@media(max-width:640px){#ui-panel{width:calc(100% - 20px);max-width:none;left:10px!important;right:10px!important}}
