:root{--glass: rgba(12, 16, 22, .72);--glass-edge: rgba(255, 255, 255, .1);--ink: #e8edf3;--ink-dim: #93a3b5;--accent: #7dd3fc;--c-surveyed: #4ade80;--c-reference: #60a5fa;--c-inferred: #fbbf24;--c-approximated: #f87171;--radius: 10px;--font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:#0b1016;color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased}#app{position:fixed;inset:0}#app canvas{display:block;width:100vw;height:100vh}#loading{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:radial-gradient(120% 90% at 50% 10%,#1a2634,#0a0e14 70%);transition:opacity .6s ease}#loading.done{opacity:0;pointer-events:none}#loading .panel{width:min(420px,84vw);padding:28px 30px 24px;background:var(--glass);border:1px solid var(--glass-edge);border-radius:14px;backdrop-filter:blur(14px);text-align:left}#loading h1{margin:0;font-size:22px;font-weight:600;letter-spacing:.01em}#loading .sub{margin:4px 0 20px;font-size:13px;color:var(--ink-dim)}#loading .bar{height:3px;border-radius:3px;background:#ffffff1a;overflow:hidden}#loading .bar i{display:block;width:0;height:100%;background:linear-gradient(90deg,var(--accent),#fbbf24);transition:width .26s ease}#loading .stage{margin:12px 0 0;font-family:var(--mono);font-size:11.5px;color:var(--ink-dim);letter-spacing:.02em}.hud{position:fixed;inset:0;z-index:45;pointer-events:none;font-size:13px}.hud-panel{position:absolute;pointer-events:auto;background:var(--glass);border:1px solid var(--glass-edge);border-radius:var(--radius);backdrop-filter:blur(12px);box-shadow:0 6px 24px #00000052}.hud-place{top:14px;left:14px;padding:9px 13px;max-width:min(420px,52vw)}.hud-place .place-name{font-size:14px;font-weight:600;line-height:1.25}.hud-place .place-name em{font-style:normal;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;padding:1px 5px;border-radius:4px;background:#ffffff14;vertical-align:1px}.hud-place .dist{color:var(--ink-dim);font-weight:400;font-size:11.5px}.hud-place .place-near{margin-top:2px;font-size:11.5px;color:var(--ink-dim)}.hud-place .place-near:empty{display:none}.hud-place .place-meta{margin-top:3px;font-family:var(--mono);font-size:11.5px;color:var(--ink-dim);display:flex;gap:8px}.ref-on .hud-stats,.debug .hud-stats{display:flex}.hud-stats{top:14px;right:14px;padding:8px 12px;display:none;gap:12px;font-family:var(--mono);font-size:11.5px;color:var(--ink-dim)}.hud-stats .fps{color:var(--ink)}.hud-toast{left:50%;top:14px;transform:translate(-50%);padding:7px 13px;font-family:var(--mono);font-size:12px;color:var(--ink);pointer-events:none;white-space:nowrap}.hud-toast.warn{color:#fecaca;border-color:#f8717173}.hud-place .level.flash{animation:level-flash .28s ease-out 2}@keyframes level-flash{50%{color:#fca5a5}}.hud-fail{top:56px;right:14px;padding:7px 11px;max-width:300px;border-color:#f8717173;color:#fecaca;font-size:11.5px;line-height:1.4}.hud-fail b{display:block;font-size:12px}.hud-fail span{color:#fca5a5;font-family:var(--mono)}.hud-bar{left:50%;bottom:16px;transform:translate(-50%);padding:8px 10px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;max-width:min(1080px,96vw)}.hud-group{display:flex;align-items:center;gap:6px}.hud-group>label{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-dim)}.hud-btn{appearance:none;border:1px solid transparent;border-radius:7px;background:#ffffff0f;color:var(--ink);font:inherit;font-size:12.5px;padding:6px 11px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .12s ease,border-color .12s ease}.hud-btn:hover{background:#ffffff1f}.hud-btn.on{background:#7dd3fc2e;border-color:#7dd3fc80;color:#e0f2fe}.hud-btn.small{padding:4px 8px;font-size:11.5px}.hud-btn kbd{font-family:var(--mono);font-size:9.5px;color:var(--ink-dim);border:1px solid var(--glass-edge);border-radius:3px;padding:0 3px}.hud-select{appearance:none;background:#ffffff0f;border:1px solid var(--glass-edge);border-radius:7px;color:var(--ink);font:inherit;font-size:12.5px;padding:6px 10px;max-width:190px;cursor:pointer}.hud-select option{background:#0f151d;color:var(--ink)}.hud-slider input[type=range]{appearance:none;width:108px;height:3px;border-radius:3px;background:#ffffff2e;cursor:pointer}.hud-slider input[type=range]::-webkit-slider-thumb{appearance:none;width:13px;height:13px;border-radius:50%;background:var(--accent);border:none}.hud-slider input[type=range]::-moz-range-thumb{width:13px;height:13px;border:none;border-radius:50%;background:var(--accent)}.hud-value{font-family:var(--mono);font-size:11px;color:var(--ink-dim);min-width:82px}.hud-help{left:14px;bottom:calc(var(--hud-bar-h, 50px) + 28px);width:min(430px,88vw);max-height:min(62vh,calc(100vh - var(--hud-bar-h, 50px) - var(--hud-place-h, 100px) - 54px));overflow-y:auto;padding:16px 18px;line-height:1.5}.hud-help h2{margin:0 0 10px;font-size:12px;text-transform:uppercase;letter-spacing:.09em;color:var(--ink-dim)}.hud-help dl{margin:0;display:grid;grid-template-columns:minmax(96px,auto) 1fr;gap:4px 14px;font-size:12.5px}.hud-help dt{font-family:var(--mono);font-size:11.5px;color:var(--accent)}.hud-help dd{margin:0;color:var(--ink)}.hud-reflayers{margin-top:16px;display:flex;flex-wrap:wrap;gap:6px}.hud-reflayers h2{width:100%;margin-bottom:2px}.hud-note{margin:14px 0 0;font-size:11.5px;color:var(--ink-dim);line-height:1.5}.hud-card{right:14px;bottom:calc(var(--hud-bar-h, 50px) + 28px);width:min(320px,86vw);padding:15px 17px 14px}.hud-card h3{margin:0 0 10px;font-size:15px;font-weight:600;padding-right:20px}.hud-card dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:3px 12px;font-size:12.5px}.hud-card dt{color:var(--ink-dim);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.hud-card dd{margin:0}.hud-close{position:absolute;top:8px;right:8px;width:22px;height:22px;border:none;border-radius:5px;background:transparent;color:var(--ink-dim);font-size:17px;line-height:1;cursor:pointer}.hud-close:hover{background:#ffffff1a;color:var(--ink)}.confidence{margin-top:12px;padding:5px 9px;border-radius:6px;font-family:var(--mono);font-size:11px;letter-spacing:.04em;background:#ffffff0f;border-left:3px solid var(--ink-dim)}.c-surveyed,.confidence.c-surveyed{color:var(--c-surveyed);border-left-color:var(--c-surveyed)}.c-reference,.confidence.c-reference{color:var(--c-reference);border-left-color:var(--c-reference)}.c-inferred,.confidence.c-inferred{color:var(--c-inferred);border-left-color:var(--c-inferred)}.c-approximated,.confidence.c-approximated{color:var(--c-approximated);border-left-color:var(--c-approximated)}#tour-caption{position:fixed;left:50%;bottom:calc(var(--hud-bar-h, 60px) + 28px);transform:translate(-50%) translateY(8px);z-index:46;width:min(680px,92vw);padding:13px 17px 15px;background:var(--glass);border:1px solid var(--glass-edge);border-radius:var(--radius);backdrop-filter:blur(12px);opacity:0;transition:opacity .5s ease,transform .5s ease;pointer-events:none}#tour-caption.visible{opacity:1;transform:translate(-50%) translateY(0)}#tour-caption .tour-beat{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:5px}#tour-caption .tour-text{font-size:14.5px;line-height:1.5}#tour-caption .tour-progress{position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--accent);border-radius:0 2px 2px 0;transition:width .2s linear}.touch-controls{position:fixed;inset:0;z-index:44;pointer-events:none}.touch-controls .stick{position:absolute;left:22px;bottom:96px;width:118px;height:118px;border-radius:50%;border:1px solid var(--glass-edge);background:#0c10166b;backdrop-filter:blur(8px);pointer-events:auto;touch-action:none;display:grid;place-items:center}.touch-controls .stick i{width:46px;height:46px;border-radius:50%;background:#7dd3fc8c;display:block}.touch-controls .look-pad{position:absolute;right:0;top:0;width:55vw;height:74vh;pointer-events:auto;touch-action:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}#tour-caption,#tour-caption.visible{transform:translate(-50%)}#loading{transition:none}}@media(max-width:720px){.hud-bar{gap:7px;padding:7px 8px;bottom:10px}.hud-slider input[type=range]{width:74px}.hud-value{min-width:54px}.hud-help{max-height:calc(100vh - var(--hud-bar-h, 50px) - var(--hud-place-h, 100px) - 54px)}.hud-place{max-width:62vw}.hud-stats .calls,.hud-stats .tris{display:none}}.hud-reticle{position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border:1.5px solid rgba(232,237,243,.75);border-radius:50%;box-shadow:0 0 0 1px #00000059;pointer-events:none;transition:transform .12s ease-out,border-color .12s}.hud-reticle.on{border-color:var(--accent);transform:scale(1.35)}.hud-hint{position:absolute;left:50%;top:calc(50% + 18px);transform:translate(-50%);padding:4px 9px;font-family:var(--mono);font-size:12px;color:var(--ink);background:var(--glass);border:1px solid var(--glass-edge);border-radius:6px;white-space:nowrap;pointer-events:none}.hud-hint kbd{margin-left:6px;padding:0 4px;font-family:var(--mono);font-size:10.5px;color:var(--ink-dim);border:1px solid var(--glass-edge);border-radius:3px}.hud-minimap{left:14px;bottom:calc(var(--hud-bar-h, 50px) + 28px);padding:0;line-height:0;background:none;border:none;border-radius:50%;backdrop-filter:none;box-shadow:none}.hud-minimap canvas{display:block;width:220px;height:220px;border-radius:50%;box-shadow:0 0 0 2px var(--glass-edge),0 2px 12px #00000073;cursor:pointer}.hud-minimap .minimap-level{position:absolute;left:0;right:0;bottom:16px;text-align:center;font-family:var(--mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;line-height:1.2;color:var(--ink-dim);text-shadow:0 1px 3px rgba(0,0,0,.8);pointer-events:none}@media(pointer:coarse){.hud-minimap{bottom:auto;top:calc(var(--hud-place-h, 100px) + 26px);transform:scale(.6);transform-origin:top left}}.hud-minimap-btn{display:none}.hud-minimap-btn[aria-pressed=true]{background:#7dd3fc2e;border-color:#7dd3fc80}@media(pointer:coarse){.hud-minimap-btn{display:inline-flex}}@media(pointer:coarse)and (max-height:600px){.hud-minimap{display:none}}.hud-help .hud-look{margin:10px 0 4px;font-size:12px;color:var(--ink-dim)}.hud-help .hud-look input{vertical-align:middle;width:150px;margin:0 6px;accent-color:var(--accent)}.hud-help .hud-look output{font-family:var(--mono);color:var(--ink)}.hud-help.hud-intro{left:50%;top:calc(50% - 70px);bottom:auto;transform:translate(-50%,-50%);max-height:calc(100vh - 170px);cursor:pointer}.hud-intro .hud-look,.hud-intro .hud-reflayers,.hud-intro .hud-note{display:none}.hud-help.hud-intro dl>:not(.intro-core){display:none}.hud-intro-more{display:none}.hud-intro .hud-intro-more{display:block;margin:10px 0 12px;font-size:12.5px;color:var(--ink-dim)}.hud-help .hud-intro-go{position:sticky;bottom:0;display:block;width:100%;margin-top:14px;padding:10px;font-size:14px;background:#1e2732}.hud-help .hud-intro-go:hover{background:#2a3644}@media(max-width:720px){.hud-help.hud-intro{top:12px;transform:translate(-50%);max-height:calc(100vh - var(--hud-bar-h, 190px) - 40px)}}.hud-guide{flex-basis:100%;display:flex;align-items:center;gap:10px;font-size:14px}.hud-guide .guide-arrow{display:inline-block;width:20px;text-align:center;font-size:18px;color:var(--accent);transition:transform .2s ease}.hud-guide .guide-text{flex:1}.hud-guide[hidden]{display:none}.hud-help .hud-sound{margin:4px 0;font-size:12px;color:var(--ink-dim)}.hud-help .hud-sound input{vertical-align:middle;margin:0 6px 0 0;accent-color:var(--accent)}.hud-intro .hud-sound{display:none}.hud-place .place-nearby{list-style:none;margin:6px 0 0;padding:6px 0 0;border-top:1px solid var(--glass-edge);font-size:11.5px;line-height:1.45;color:var(--ink-dim)}.hud-place .place-nearby li{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.only-touch,.hud-more{display:none}@media(pointer:coarse){.only-key,.hud-btn kbd{display:none}.only-touch{display:revert}.touch-controls .stick{bottom:calc(var(--hud-bar-h, 80px) + 26px)}.hud-help.hud-intro:not([hidden])~.hud-minimap{display:none}}@media(pointer:coarse)and (max-width:720px){.hud-more{display:inline-flex}.hud-bar:not(.more) .hud-extra{display:none}.hud-stats{display:none}.hud-place{max-width:calc(100vw - 28px)}}
