:root{--gutter:8px;--panel-bg:#1214209e;--panel-border:#ffffff1f;--panel-text:#e8eaf2;--panel-muted:#9aa0b8;--accent:#7c9cff;--brand-cyan:#22d3ee;--brand-violet:#a78bfa;--brand-pink:#f472b6;--brand-amber:#fbbf24;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{overscroll-behavior:none;background:#1a1a2e;width:100%;height:100%;overflow:hidden}canvas{touch-action:none;display:block}.brand-mark{--brand-tile-size:8px;grid-template-columns:repeat(2, var(--brand-tile-size));flex:none;gap:2px;display:grid}.brand-mark i{width:var(--brand-tile-size);height:var(--brand-tile-size);background:var(--brand-cyan);border-radius:2px;animation:4s ease-in-out infinite brand-flip}.brand-mark i:nth-child(2){background:var(--brand-violet);animation-delay:.25s}.brand-mark i:nth-child(3){background:var(--brand-pink);animation-delay:.5s}.brand-mark i:nth-child(4){background:var(--brand-amber);animation-delay:.75s}@keyframes brand-flip{0%,to{opacity:1;transform:rotate(0)scale(1)}50%{opacity:.35;transform:rotate(90deg)scale(.4)}}.startup-error{border:1px solid var(--panel-border);width:min(460px,100vw - 40px);color:var(--panel-text);background:#121420f5;border-radius:12px;padding:28px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 18px 70px #00000080}.startup-error__brand{color:var(--panel-text);align-items:center;gap:10px;margin-bottom:20px;font-size:14px;font-weight:700;display:flex}.startup-error h1{font-size:22px}.startup-error p{color:var(--panel-muted);margin-top:10px}:where(.startup-error) button{border:1px solid var(--accent);color:var(--panel-text);font:inherit;cursor:pointer;background:#7c9cff2e;border-radius:7px;margin-top:20px;padding:8px 14px}.map-transition{pointer-events:auto;z-index:20;color:#f4f7ff;isolation:isolate;position:fixed;inset:0;overflow:hidden}.map-transition[hidden]{display:none}.map-transition__grid{grid-template-columns:repeat(var(--wipe-columns), 1fr);grid-template-rows:repeat(var(--wipe-rows), 1fr);display:grid;position:absolute;inset:-2px}.map-transition__tile{opacity:0;transform-origin:50%;will-change:opacity, transform;background:#0a0a14;min-width:0;transition:opacity .18s cubic-bezier(.65,0,.35,1),transform .18s cubic-bezier(.65,0,.35,1);display:block;transform:scale(0)rotate(91.6732deg)}.map-transition.is-loading .map-transition__tile{opacity:1;transition-delay:var(--tile-cover-delay);transform:scale(1.08)rotate(0)}.map-transition.is-revealing .map-transition__tile{opacity:0;transition-delay:var(--tile-reveal-delay);transform:scale(0)rotate(-91.6732deg)}.map-transition__readout{z-index:1;-webkit-backdrop-filter:blur(16px)saturate(1.4);opacity:0;background:#0c0c16c2;border:1px solid #ffffff17;border-radius:16px;width:min(360px,100vw - 48px);padding:24px 26px 22px;font-family:ui-monospace,Consolas,monospace;transition:opacity .18s,transform .24s cubic-bezier(.2,.9,.2,1);position:absolute;top:50%;left:50%;transform:translate(-50%,calc(10px - 50%))scale(.96);box-shadow:0 24px 80px #0000007a,inset 0 0 28px #a78bfa0a}.map-transition__brand{color:#f4f4fb;letter-spacing:.02em;align-items:center;gap:9px;margin-bottom:16px;font-size:10px;font-weight:700;display:flex}.map-transition__brand-tag{color:#7d7d96;letter-spacing:.12em;text-transform:uppercase;font-size:9px}.map-transition__map{color:#f4f7ff;letter-spacing:-.04em;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(22px,5vw,34px);font-weight:600;line-height:1.05;display:block;overflow:hidden}.map-transition__task{color:#929bb4;letter-spacing:.05em;margin-top:8px;font-size:11px;display:block}.map-transition__progress{background:#ffffff14;height:3px;margin-top:20px;display:block;overflow:hidden}.map-transition__progress i{background:linear-gradient(90deg, transparent, var(--brand-cyan) 28%, var(--brand-violet) 58%, var(--brand-pink) 82%, transparent);width:38%;height:100%;animation:1.1s ease-in-out infinite tile-scan;display:block}.map-transition.is-loading .map-transition__readout{opacity:1;transition-delay:.1s;transform:translate(-50%,-50%)scale(1)}.map-transition.is-revealing .map-transition__readout{opacity:0;transition-delay:0s;transform:translate(-50%,calc(-50% - 10px))scale(.97)}@keyframes tile-scan{0%{transform:translate(-110%)}to{transform:translate(270%)}}.tile-grid{pointer-events:none;z-index:5;width:100%;height:100%;position:fixed;inset:0}.tile-grid[hidden]{display:none}.panel{top:var(--gutter);right:var(--gutter);width:260px;max-height:calc(100vh - var(--gutter) * 2);border:1px solid var(--panel-border);background:var(--panel-bg);-webkit-backdrop-filter:blur(14px)saturate(140%);color:var(--panel-text);z-index:10;user-select:none;border-radius:12px;flex-direction:column;font-size:13px;display:flex;position:fixed;box-shadow:0 8px 28px #00000059}:where(.panel) button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}.panel__header{border-bottom:1px solid var(--panel-border);justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;display:flex}.panel.is-collapsed .panel__header{border-bottom-color:#0000}.panel__collapse{letter-spacing:.02em;align-items:center;gap:6px;font-weight:600;display:flex}.panel__collapse .brand-mark{--brand-tile-size:5px;gap:1px}.panel__chevron{transition:transform .15s;display:inline-block}.panel.is-collapsed .panel__chevron{transform:rotate(-90deg)}.panel__status{text-align:right;text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--panel-muted);flex:1;font-size:11px;overflow:hidden}.panel__status[data-kind=loading]{color:var(--accent);animation:1s ease-in-out infinite alternate pulse}.panel__status[data-kind=error]{color:#ff7a8a}.fps{font-variant-numeric:tabular-nums;background:#ffffff12;border-radius:6px;flex:none;justify-content:center;align-items:center;gap:4px;padding:2px 7px;font:600 11px/1 ui-monospace,Consolas,monospace;display:flex}.fps__label{letter-spacing:.06em;color:var(--panel-muted);font:600 9px/1 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@keyframes pulse{0%{opacity:1}to{opacity:.4}}.panel__body{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.panel.is-collapsed .panel__body{display:none}.panel__section--map{border-bottom:1px solid var(--panel-border);padding:8px}.panel__section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--panel-muted);justify-content:space-between;align-items:center;padding:8px 10px 4px;font-size:11px;font-weight:600;display:flex}.panel__options{border-bottom:1px solid var(--panel-border);padding:0 4px 4px}.layer-row:has(input:disabled){opacity:.45;cursor:not-allowed}.panel__actions{gap:4px;display:flex}.panel__actions button{text-transform:none;letter-spacing:0;color:var(--panel-muted);background:#ffffff0f;border-radius:6px;padding:2px 8px;font-size:11px;transition:background .12s,color .12s}.panel__actions button:hover{color:var(--panel-text);background:#ffffff24}.panel__layers{overscroll-behavior:contain;flex:auto;min-height:0;padding:0 4px 4px;overflow-y:auto}.panel__section-title--tile{border-top:1px solid var(--panel-border)}.panel__tile{flex:none;padding:0 10px 10px}.panel__credit{border-top:1px solid var(--panel-border);color:var(--panel-muted);text-overflow:ellipsis;white-space:nowrap;flex:none;padding:6px 10px 8px;font-size:10px;line-height:1.35;overflow:hidden}.panel__credit[hidden]{display:none}.panel__credit a{color:inherit;text-underline-offset:2px;text-decoration-color:#9aa0b873}.panel__credit a:hover,.panel__credit a:focus-visible{color:var(--panel-text)}.tile-info{flex-direction:column;gap:6px;min-height:44px;display:flex}.tile-info__head{font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;gap:8px;font-family:ui-monospace,Consolas,monospace;display:flex}.tile-info__cell{color:var(--accent);font-size:14px;font-weight:600}.tile-info__px{color:var(--panel-muted);font-size:11px}.tile-info__empty{color:var(--panel-muted);font-size:12px}.tile-info__layers{scrollbar-width:thin;scrollbar-color:#fff3 transparent;flex-direction:column;gap:4px;max-height:180px;display:flex;overflow-y:auto}.tile-info__row{background:#ffffff0d;border-radius:6px;padding:4px 6px}.tile-info__row.is-hidden{opacity:.45}.tile-info__line{justify-content:space-between;gap:8px;display:flex}.tile-info__layer{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.tile-info__tile{color:#8fb4ff;flex:none;font-family:ui-monospace,Consolas,monospace;font-size:11px}.tile-info__meta{flex-wrap:wrap;gap:3px;margin-top:3px;display:flex}.tile-info__tag{color:var(--panel-muted);background:#ffffff12;border-radius:4px;padding:0 5px;font-family:ui-monospace,Consolas,monospace;font-size:10px}.panel__empty{color:var(--panel-muted);padding:6px}.panel__layers,.map-picker__list{scrollbar-width:thin;scrollbar-color:#fff3 transparent}.panel ul{list-style:none}.layer-list .layer-list{border-left:1px solid var(--panel-border);margin-left:14px;padding-left:4px}.map-picker{position:relative}.map-picker__row{gap:4px;display:flex}.map-picker__trigger,.map-picker__step{border:1px solid var(--panel-border);background:#ffffff12;border-radius:8px;height:32px;transition:background .12s,border-color .12s}.map-picker__trigger:hover,.map-picker__step:hover{background:#ffffff21}.map-picker__trigger:focus-visible,.map-picker__step:focus-visible,.map-picker__search:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #7c9cff40}.map-picker__step{width:28px;color:var(--panel-muted);flex:none;font-size:16px;line-height:1}.map-picker__trigger{flex:1;justify-content:space-between;align-items:center;gap:6px;min-width:0;padding:0 10px;font-family:ui-monospace,Consolas,monospace;display:flex}.map-picker__value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.map-picker__caret{color:var(--panel-muted);transition:transform .15s}.map-picker__trigger[aria-expanded=true] .map-picker__caret{transform:rotate(180deg)}.map-picker__popover{z-index:1;border:1px solid var(--panel-border);-webkit-backdrop-filter:blur(16px);background:#161826eb;border-radius:10px;padding:6px;animation:.12s ease-out pop-in;position:absolute;top:calc(100% + 6px);left:0;right:0;box-shadow:0 12px 32px #00000080}.map-picker__popover[hidden]{display:none}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.map-picker__search{border:1px solid var(--panel-border);width:100%;height:30px;color:var(--panel-text);font:inherit;background:#0000004d;border-radius:7px;padding:0 10px}.map-picker__search::placeholder{color:var(--panel-muted)}.map-picker__list{max-height:min(320px,50vh);margin-top:6px;overflow-y:auto}.map-picker__option,.map-picker__empty{border-radius:6px;padding:5px 8px;font-family:ui-monospace,Consolas,monospace;font-size:12px}.map-picker__option{cursor:pointer}.map-picker__option.is-active{background:#7c9cff33}.map-picker__option[aria-selected=true]{color:var(--accent);font-weight:600}.map-picker__option[aria-selected=true]:after{content:" ✓"}.map-picker__empty{color:var(--panel-muted)}.layer-row{cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:4px 6px;transition:background .12s;display:flex}.layer-row:hover{background:#ffffff14}.layer-row input{width:14px;height:14px;accent-color:var(--accent);cursor:pointer;flex:none}.layer-row__name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.is-hidden>.layer-row .layer-row__name{color:var(--panel-muted);text-decoration:line-through #ffffff40}.layer-row__badge{color:var(--panel-muted);background:#ffffff12;border-radius:4px;flex:none;padding:1px 5px;font-size:10px;font-weight:600}.layer-row__badge--tilelayer{color:#8fb4ff}.layer-row__badge--objectgroup{color:#ffc27a}.layer-row__badge--imagelayer{color:#8fe3a8}.layer-row__badge--group{color:#d6a4ff}.upload-launcher{right:max(18px, env(safe-area-inset-right));bottom:max(18px, env(safe-area-inset-bottom));z-index:12;min-height:44px;color:var(--panel-text);-webkit-backdrop-filter:blur(18px)saturate(1.35);font:inherit;letter-spacing:.01em;cursor:pointer;background:#121420b8;border:1px solid #ffffff29;border-radius:999px;align-items:center;gap:9px;padding:0 16px 0 13px;font-size:12px;font-weight:650;transition:border-color .16s,background .16s,opacity .16s,transform .16s;display:flex;position:fixed;box-shadow:0 12px 38px #0000004d}.ui-visibility-hint{left:max(14px, env(safe-area-inset-left));bottom:max(14px, env(safe-area-inset-bottom));z-index:11;color:#e8eaf294;-webkit-backdrop-filter:blur(10px);letter-spacing:.02em;pointer-events:none;user-select:none;background:#12142075;border:1px solid #ffffff14;border-radius:999px;padding:6px 9px;font-size:10px;line-height:1;position:fixed}.ui-visibility-hint kbd{color:#e8eaf2c2;font:600 9px ui-monospace,Consolas,monospace}.ui-visibility-hint__mobile{display:none}.panel,.ui-visibility-hint{transition:opacity .16s,transform .16s}body.is-ui-hidden :is(.panel,.upload-launcher,.ui-visibility-hint){opacity:0;pointer-events:none;transform:translateY(5px)}.upload-launcher:hover{background:#1b1f32e0;border-color:#7c9cffad;transform:translateY(-2px)}.upload-launcher:focus-visible,.upload-dialog button:focus-visible,.upload-dropzone:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.upload-launcher svg{fill:none;width:21px;height:21px;stroke:var(--brand-cyan);stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}.upload-launcher svg .upload-launcher__tile{fill:var(--brand-violet);stroke:none}.upload-overlay{z-index:40;-webkit-backdrop-filter:blur(7px);background:#05070e85;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.upload-overlay[hidden]{display:none}.upload-dialog{width:min(560px,100%);max-height:min(720px,100dvh - 48px);color:var(--panel-text);-webkit-backdrop-filter:blur(24px)saturate(1.25);background:linear-gradient(145deg,#24283fc7,#0e101ce0),#121420d1;border:1px solid #ffffff24;border-radius:20px;padding:24px;overflow-y:auto;box-shadow:0 30px 100px #00000094,inset 0 1px #ffffff14}.upload-dialog__header{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.upload-dialog__eyebrow{color:var(--brand-cyan);letter-spacing:.15em;text-transform:uppercase;margin-bottom:5px;font-size:10px;font-weight:750;display:block}.upload-dialog h2{letter-spacing:-.035em;font-size:clamp(22px,5vw,30px);font-weight:680}.upload-dialog__close{width:34px;height:34px;color:var(--panel-muted);font:inherit;cursor:pointer;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:10px;font-size:23px;line-height:1}.upload-dialog__intro{color:#b5bacb;margin:14px 0 20px;font-size:13px;line-height:1.55}.upload-step{background:#ffffff09;border:1px solid #ffffff14;border-radius:12px;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;min-height:58px;padding:10px 12px;display:grid}.upload-step+.upload-step{margin-top:8px}.upload-step[hidden]{display:none}.upload-step__number{color:#b9c8ff;background:#7c9cff29;border-radius:9px;place-items:center;width:28px;height:28px;font-size:11px;font-weight:750;display:grid}.upload-step strong,.upload-step div>span{display:block}.upload-step strong{font-size:12px}.upload-step div>span{color:var(--panel-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:11px;overflow:hidden}.upload-dialog__choose{color:#c8d3ff;cursor:pointer;border:1px solid #7c9cff66;border-radius:8px;padding:7px 10px;font-size:11px}.upload-dialog__choose input,.upload-dropzone input{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.upload-dropzone{min-height:118px;color:var(--panel-text);text-align:center;cursor:pointer;background:#05081238;border:1px dashed #9aa0b86b;border-radius:14px;align-content:center;place-items:center;gap:4px;margin-top:12px;transition:border-color .16s,background .16s,transform .16s;display:grid}.upload-dropzone:hover,.upload-dropzone.is-dragging{border-color:var(--brand-cyan);background:#22d3ee12;transform:translateY(-1px)}.upload-dropzone svg{fill:none;width:30px;height:30px;stroke:var(--brand-cyan);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;margin-bottom:4px}.upload-dropzone strong{font-size:12px}:where(.upload-dropzone span){color:var(--panel-muted);font-size:10px}.upload-missing{gap:5px;max-height:132px;margin-top:12px;list-style:none;display:grid;overflow-y:auto}.upload-missing:empty{display:none}.upload-missing li{border-left:2px solid var(--brand-amber);color:#f1d58d;text-overflow:ellipsis;white-space:nowrap;background:#fbbf2412;border-radius:3px 7px 7px 3px;padding:7px 9px;font-family:ui-monospace,Consolas,monospace;font-size:10px;overflow:hidden}.upload-summary,.upload-status{min-height:18px;color:var(--panel-muted);margin-top:9px;font-size:11px}.upload-status[data-kind=error]{color:#ff9eab}.upload-status[data-kind=loading],.upload-status[data-kind=success]{color:var(--brand-cyan)}.upload-dialog__footer{border-top:1px solid #ffffff14;justify-content:space-between;align-items:center;gap:16px;margin-top:18px;padding-top:16px;display:flex}:where(.upload-dialog__footer span){color:#73798f;max-width:260px;font-size:9px;line-height:1.45}.upload-dialog__footer button{color:#edf1ff;min-height:38px;font:inherit;cursor:pointer;background:linear-gradient(135deg,#7c9cff47,#a78bfa33);border:1px solid #7c9cffa6;border-radius:10px;flex:none;padding:0 15px;font-size:11px;font-weight:700}.upload-dialog__footer button:disabled{color:#666b7d;cursor:not-allowed;background:#ffffff09;border-color:#ffffff14}@media (width<=700px),(height<=500px),(pointer:coarse){.panel{top:max(var(--gutter), env(safe-area-inset-top));right:max(var(--gutter), env(safe-area-inset-right));width:min(clamp(218px, 68vw, 242px), calc(100vw - 24px - env(safe-area-inset-left) - env(safe-area-inset-right)));max-height:min(64dvh, calc(100dvh - var(--gutter) - var(--gutter) - env(safe-area-inset-top) - env(safe-area-inset-bottom)));font-size:12px}.panel.is-collapsed{width:auto;max-width:calc(100vw - var(--gutter) - var(--gutter));max-height:none}.panel__header{min-height:40px;padding:3px 7px}.panel__collapse{min-height:34px;padding:0 3px}.panel.is-collapsed .panel__status:empty{display:none}.fps{min-height:26px;padding-inline:6px}.panel__section--map{padding:6px}.panel__section-title{padding:6px 8px 3px;font-size:10px}.map-picker__trigger,.map-picker__step,.map-picker__search{height:38px}.map-picker__step{width:36px}.map-picker__search{font-size:16px}.map-picker__option{align-items:center;min-height:38px;display:flex}.layer-row{min-height:36px;padding-block:5px}.layer-row input{width:18px;height:18px}.panel__actions button{min-width:38px;min-height:28px}.panel__section-title--tile,.panel__tile{display:none}.panel__credit{padding:5px 8px 6px;font-size:9px}.upload-launcher{right:max(12px, env(safe-area-inset-right));bottom:max(12px, env(safe-area-inset-bottom));min-height:42px;padding:0 12px}.upload-launcher span{display:none}.ui-visibility-hint{left:max(10px, env(safe-area-inset-left));bottom:max(10px, env(safe-area-inset-bottom))}.ui-visibility-hint__desktop{display:none}.ui-visibility-hint__mobile{display:inline}.upload-overlay{align-items:end;padding:10px}.upload-dialog{border-radius:18px;max-height:calc(100dvh - 20px);padding:18px}}@media (height<=500px){.panel{max-height:min(76dvh, calc(100dvh - var(--gutter) - var(--gutter) - env(safe-area-inset-top) - env(safe-area-inset-bottom)))}}@media (prefers-reduced-motion:reduce){.brand-mark i,.map-transition__progress i{animation:none}.map-transition__tile,.map-transition__readout,.panel,.upload-launcher,.ui-visibility-hint{transition-duration:.12s;transition-delay:0s;animation-duration:.12s;animation-delay:0s}}
