:root{--bg: #0c0d10;--bg-2: #13151a;--panel: rgba(15, 16, 20, .78);--panel-solid: #15171c;--line: rgba(255, 255, 255, .08);--line-2: rgba(255, 255, 255, .16);--text: #e7e7ea;--mute: rgba(231, 231, 234, .5);--faint: rgba(231, 231, 234, .28);--paper: #c9c9c6;--accent: #4d5cff;--accent-hi: #7d89ff;--warn: #ff6b4a;--head: "Outfit", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace;--ease-out: cubic-bezier(.22, .61, .36, 1);--ease-expo: cubic-bezier(.16, 1, .3, 1)}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--head);-webkit-font-smoothing:antialiased;user-select:none}#viewport{position:fixed;inset:0;width:100%;height:100%;display:block;outline:none;touch-action:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}kbd{font-family:var(--mono);font-size:10px;padding:1px 5px;border:1px solid var(--line-2);border-bottom-width:2px;border-radius:3px;background:#ffffff0a;color:var(--text)}code{font-family:var(--mono);font-size:.92em;color:var(--text)}#intro{--pyro: #ef7a35;--hydro: #4cc2f1;--anemo: #74c2a8;--electro: #af8ec1;--dendro: #a5c83b;--cryo: #9fd6e3;--geo: #fab632;--night: #0d0f1c;--night-hi: #1d2340;--gold: #d3bc8e;--gold-dim: rgba(211, 188, 142, .32);--cream: #ece5d8;--ink: #3b4255;--side: clamp(24px, 6vw, 96px);position:fixed;inset:0;z-index:50;background:#000;overflow:clip;font-family:var(--head);transition:opacity .7s var(--ease-out)}#intro.done{opacity:0;pointer-events:none}#intro.gone{display:none}#intro:not(.play) .in-stage{visibility:hidden}.in-stage{position:absolute;inset:0;overflow:clip;transition:opacity .5s var(--ease-out)}#intro.loading .in-stage{opacity:0;pointer-events:none}.in-sky{position:absolute;inset:0;background:radial-gradient(ellipse 70% 90% at 30% 50%,var(--night-hi) 0%,transparent 70%),radial-gradient(ellipse 50% 60% at 85% 20%,rgba(211,188,142,.07) 0%,transparent 70%),var(--night);opacity:0}.in-flash{position:absolute;left:0;right:0;top:50%;height:2px;margin-top:-1px;background:linear-gradient(90deg,transparent,var(--cream) 30%,#fff 50%,var(--cream) 70%,transparent);box-shadow:0 0 24px 4px #ece5d859;transform:scaleX(0);opacity:0}.in-wheel{--size: min(150vmin, 1200px);--cx: calc(var(--side) + min(280px, 22vw));position:absolute;left:var(--cx);top:50%;width:var(--size);height:var(--size);translate:-50% -50%;opacity:0}.in-wheel svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.w-l{stroke:var(--gold);stroke-width:1.2}.w-faint{stroke:var(--gold-dim);stroke-width:1.2}.w-ticks{stroke:var(--gold);stroke-width:10;stroke-dasharray:1 11;opacity:.55}.w-ticks.fine{stroke-width:5;stroke-dasharray:.6 5.4;opacity:.4}.w-arc{stroke:var(--cream);stroke-width:3}.w-fill{fill:var(--gold)}.d{stroke-dasharray:1;stroke-dashoffset:1}.w-turn,.w-turn-back{transform-box:fill-box;transform-origin:center}.w-turn-back,.w-core{opacity:.4}.in-orbit{position:absolute;inset:0}.in-el{--a: calc(var(--i) * 360deg / 7 - 90deg);position:absolute;left:50%;top:50%;width:9.5%;aspect-ratio:1;margin:-4.75% 0 0 -4.75%;transform:rotate(var(--a)) translateY(calc(var(--size) * -.36)) rotate(calc(-1 * var(--a)))}.in-el i{position:absolute;inset:0;-webkit-mask:url(./emblems_bright-B4SO1YMh.webp) no-repeat;mask:url(./emblems_bright-B4SO1YMh.webp) no-repeat;-webkit-mask-size:700% 100%;mask-size:700% 100%;-webkit-mask-position:calc(var(--i) * 100% / 6) 50%;mask-position:calc(var(--i) * 100% / 6) 50%;background:var(--c);opacity:0;scale:.4}.in-el:nth-child(1){--i: 0;--c: var(--pyro)}.in-el:nth-child(2){--i: 1;--c: var(--hydro)}.in-el:nth-child(3){--i: 2;--c: var(--anemo)}.in-el:nth-child(4){--i: 3;--c: var(--electro)}.in-el:nth-child(5){--i: 4;--c: var(--dendro)}.in-el:nth-child(6){--i: 5;--c: var(--cryo)}.in-el:nth-child(7){--i: 6;--c: var(--geo)}.in-brand{position:absolute;left:var(--side);top:clamp(20px,4vh,40px);display:flex;align-items:center;gap:12px;font-family:Marcellus,serif;font-size:18px;letter-spacing:.06em;color:var(--cream);opacity:0}.in-brand svg{width:22px;height:22px}.in-hero{position:absolute;left:var(--side);top:50%;translate:0 -50%;width:min(560px,44vw)}.in-hero h1{font-family:Marcellus,serif;font-weight:400;font-size:clamp(40px,5.4vw,76px);line-height:1.04;letter-spacing:-.01em;color:var(--cream);text-wrap:balance;opacity:0}.in-rule{display:flex;align-items:center;gap:10px;margin:26px 0 22px;width:220px;opacity:0}.in-rule:before,.in-rule:after{content:"";height:1px;flex:1;background:linear-gradient(90deg,var(--gold),transparent)}.in-rule:before{flex:0 0 36px;background:var(--gold)}.in-rule i{width:7px;height:7px;rotate:45deg;border:1px solid var(--gold)}.in-hero p{max-width:34em;font-weight:300;font-size:clamp(15px,1.2vw,17px);line-height:1.65;color:#ece5d8b8;text-wrap:pretty;opacity:0}.in-note{margin-top:14px;font-size:13px;color:var(--warn);opacity:0}.in-news{position:absolute;right:var(--side);top:50%;translate:0 -54%;width:min(400px,34vw);padding:22px 24px 18px;background:linear-gradient(180deg,#1d2340d1,#0d0f1ce0);border:1px solid var(--gold-dim);outline:1px solid rgba(211,188,142,.12);outline-offset:5px;backdrop-filter:blur(6px);opacity:0}.in-news:before,.in-news:after{content:"";position:absolute;width:9px;height:9px;rotate:45deg;background:var(--night);border:1px solid var(--gold)}.in-news:before{left:-10px;top:-10px}.in-news:after{right:-10px;bottom:-10px}.in-news h2{display:flex;align-items:center;gap:10px;font-family:Marcellus,serif;font-weight:400;font-size:20px;color:var(--cream)}.in-news h2:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--gold-dim),transparent)}.in-tabs{display:flex;gap:4px;margin:14px 0 16px}.in-tabs button{padding:6px 14px;border-radius:999px;font-size:13px;color:#ece5d899;transition:background .2s var(--ease-out),color .2s var(--ease-out)}.in-tabs button:hover{color:var(--cream)}.in-tabs button[aria-selected=true]{background:var(--cream);color:var(--ink);font-weight:600}.in-article{height:172px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--gold-dim) transparent}.in-article time{font-size:12px;color:var(--gold)}.in-article h3{margin:6px 0 8px;font-family:Marcellus,serif;font-weight:400;font-size:21px;line-height:1.2;color:var(--cream)}.in-article p{font-size:14px;line-height:1.6;color:#ece5d8b3}.in-article a{color:var(--gold)}.in-pager{display:flex;align-items:center;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid rgba(211,188,142,.14)}.in-pager button{width:28px;height:28px;display:grid;place-items:center;border:1px solid var(--gold-dim);border-radius:50%;color:var(--cream);transition:background .2s var(--ease-out),border-color .2s var(--ease-out)}.in-pager button:hover:not(:disabled){background:#d3bc8e24;border-color:var(--gold)}.in-pager button:disabled{opacity:.3;cursor:default}.in-pager svg{width:10px;height:10px}.in-dots{display:flex;gap:7px;flex:1;justify-content:center}.in-dots i{width:6px;height:6px;rotate:45deg;background:#ece5d838;transition:background .2s var(--ease-out)}.in-dots i.on{background:var(--gold)}.in-tabs button:focus-visible,.in-pager button:focus-visible,.in-article a:focus-visible{outline:2px solid var(--cream);outline-offset:2px}.in-enter{position:absolute;right:var(--side);bottom:clamp(24px,6vh,56px);display:flex;align-items:center;gap:14px;padding:8px 34px 8px 8px;border-radius:999px;background:var(--cream);color:var(--ink);font-size:19px;font-weight:600;box-shadow:0 0 0 1px #ece5d840,0 0 0 6px #0d0f1c99,0 0 0 7px var(--gold-dim);transition:box-shadow .25s var(--ease-out),translate .25s var(--ease-out);opacity:0}.in-enter .disc{width:46px;height:46px;display:grid;place-items:center;border-radius:50%;background:var(--ink);color:var(--gold)}.in-enter .disc svg{width:24px;height:24px;transition:rotate .6s var(--ease-expo)}.in-enter:hover{box-shadow:0 0 0 1px #ece5d866,0 0 0 6px #0d0f1c99,0 0 0 7px var(--gold),0 0 32px 4px #d3bc8e40;translate:0 -1px}.in-enter:hover .disc svg{rotate:90deg}.in-enter:focus-visible{outline:2px solid var(--cream);outline-offset:10px}.in-fine{position:absolute;left:var(--side);bottom:clamp(24px,6vh,56px);max-width:40ch;font-size:12px;line-height:1.5;color:#ece5d861;opacity:0}#intro.play .in-flash{animation:in-flash 1.1s .15s var(--ease-out) both}@keyframes in-flash{0%{transform:scaleX(0);opacity:1}45%{transform:scaleX(1);opacity:1}to{transform:scaleX(1);opacity:0}}#intro.play .in-wheel{animation:in-wheel 2.6s .5s var(--ease-expo) both}@keyframes in-wheel{0%{opacity:1;transform:translate(calc(50vw - var(--cx))) scale(1.1)}55%{opacity:1;transform:translate(calc(50vw - var(--cx))) scale(1.1)}to{opacity:.55;transform:none}}#intro.play .d{animation:in-draw 1.3s calc(.6s + var(--d, 0) * 90ms) var(--ease-out) forwards}@keyframes in-draw{to{stroke-dashoffset:0}}#intro.play .w-ticks,#intro.play .w-fill{animation:in-fade .9s 1s var(--ease-out) both}@keyframes in-fade{0%{opacity:0}}#intro.play .in-el i{animation:in-el .7s calc(1.35s + var(--i) * 90ms) var(--ease-expo) forwards,in-upright 240s 3.1s linear infinite}@keyframes in-el{to{opacity:1;scale:1}}#intro.play .in-sky{animation:in-show 1.4s 1.9s var(--ease-out) forwards}@keyframes in-show{to{opacity:1}}#intro.play .w-turn{animation:in-turn 240s 3.1s linear infinite}#intro.play .w-turn-back{animation:in-turn 160s 3.1s linear infinite reverse}#intro.play .in-orbit{animation:in-turn 240s 3.1s linear infinite}@keyframes in-turn{to{rotate:360deg}}@keyframes in-upright{to{rotate:-360deg}}#intro.play .in-brand{animation:in-rise .9s 2.5s var(--ease-expo) both}#intro.play .in-hero h1{animation:in-rise 1s 2.6s var(--ease-expo) both}#intro.play .in-rule{animation:in-rise 1s 2.75s var(--ease-expo) both}#intro.play .in-hero p{animation:in-rise 1s 2.85s var(--ease-expo) both}#intro.play .in-note{animation:in-rise 1s 2.95s var(--ease-expo) both}#intro.play .in-news{animation:in-slide 1.1s 2.8s var(--ease-expo) both}#intro.play .in-enter{animation:in-rise 1s 3.1s var(--ease-expo) both}#intro.play .in-fine{animation:in-show 1s 3.2s var(--ease-out) both}@keyframes in-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1}}@keyframes in-slide{0%{opacity:0;transform:translate(28px)}to{opacity:1}}#intro.skip *,#intro.skip *:before,#intro.skip *:after{animation-delay:0s!important;animation-duration:1ms!important}#intro.skip .w-turn,#intro.skip .in-orbit{animation-duration:240s!important}#intro.skip .w-turn-back{animation-duration:160s!important}#intro.skip .in-el i{animation-duration:1ms,240s!important}@media (prefers-reduced-motion: reduce){#intro *,#intro *:before,#intro *:after{animation-delay:0s!important}#intro.play .w-turn,#intro.play .w-turn-back,#intro.play .in-orbit{animation:none}#intro.play .in-el i{animation:in-el 1ms forwards}}.in-loadscreen{position:absolute;inset:0;background:var(--bg);opacity:0;pointer-events:none;transition:opacity .5s .15s var(--ease-out)}#intro.loading .in-loadscreen{opacity:1}.in-strip{position:absolute;left:50%;top:50%;width:min(38vw,420px);aspect-ratio:2750 / 500;translate:-50% -50%}.in-strip i{position:absolute;inset:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.in-strip .dark{-webkit-mask-image:url(./emblems_dark-MFOfOw6A.webp);mask-image:url(./emblems_dark-MFOfOw6A.webp);background:#3a3c42}.in-strip .bright{-webkit-mask-image:url(./emblems_bright-B4SO1YMh.webp);mask-image:url(./emblems_bright-B4SO1YMh.webp);background:var(--text);clip-path:inset(0 calc((1 - var(--p, 0)) * 100%) 0 0)}.in-load{--pad: 10px;position:absolute;left:var(--pad);right:var(--pad);bottom:var(--pad)}.in-load-row{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:0 4px 10px}.in-status{display:grid;gap:4px;padding-bottom:.3em;font-size:14px;color:var(--text)}.in-status small{font-size:12px;color:var(--mute);font-variant-numeric:tabular-nums;min-height:1.4em}.in-status.error{color:var(--warn);max-width:60ch}.in-pct{font-weight:900;font-size:clamp(40px,5.5vw,84px);line-height:.8;letter-spacing:-.04em;color:#fff;font-variant-numeric:tabular-nums}.in-pct small{font-size:.42em;font-weight:600;letter-spacing:0;margin-left:.06em}.in-bar{height:3px;background:#ffffff1a}.in-bar i{display:block;height:100%;width:100%;background:#fff;transform-origin:0 0;transform:scaleX(var(--p, 0))}@media (max-width: 860px){.in-wheel{--size: 120vmax;--cx: 50vw;top:34%}@keyframes in-wheel{0%,55%{opacity:1;transform:scale(.8)}to{opacity:.3;transform:none}}.in-hero{top:18vh;translate:none;width:auto;right:var(--side)}.in-news{top:auto;bottom:120px;translate:none;left:var(--side);right:var(--side);width:auto}.in-article{height:132px}.in-enter{left:var(--side);justify-content:center}.in-fine{display:none}}@media (max-width: 860px) and (max-height: 760px){.in-news{display:none}}#app{position:fixed;inset:0;pointer-events:none;font-family:var(--head);font-size:13px;opacity:0;transition:opacity .7s ease}#app.visible{opacity:1}#app.ui-hidden>:not(.statusbar):not(.crosshair):not(.ctx):not(.toast){opacity:0!important;pointer-events:none!important}#app>*{pointer-events:auto;transition:opacity .25s ease,transform .4s var(--ease-expo)}.glass,.brand,.coords,.perf,.panel-body,.inspector,.minimap,.navtools,.ctx{background:var(--panel);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);border:1px solid var(--line)}label,.kv span{color:var(--mute)}label{font-size:11px}.topbar{position:absolute;top:14px;left:14px;right:14px;display:flex;align-items:stretch;gap:10px;pointer-events:none!important}.topbar>*{pointer-events:auto}.brand,.coords,.perf{display:flex;align-items:center;gap:18px;padding:9px 16px}.brand{gap:12px}.brand b{font-weight:900;font-size:15px;letter-spacing:.06em;display:block;line-height:1}.brand small{font-family:var(--mono);font-size:10px;color:var(--mute)}.brand-mark{width:16px;height:16px;border:4px solid var(--text);transform:rotate(45deg)}.coords{flex:1;min-width:0}.perf{margin-left:auto;gap:12px}.coords>div,.perf>div{display:flex;flex-direction:column;gap:2px;min-width:0}.coords label,.perf label{font-family:var(--mono);font-size:9px;letter-spacing:.1em;color:var(--faint)}.coords span,.perf span{font-family:var(--mono);font-weight:600;font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.perf span{min-width:2.2em}#fps-graph{width:120px;height:28px}.panel{position:absolute;top:76px;left:14px;width:272px;max-height:calc(100% - 140px);display:flex;background:none!important;border:0!important}.panel.collapsed{transform:translate(calc(-100% + 36px))}.panel.collapsed .panel-body{opacity:0;pointer-events:none}.panel-body{flex:1;overflow-y:auto;transition:opacity .25s;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}.panel-toggle{order:2;align-self:flex-start;width:34px;height:34px;margin-left:6px;background:var(--panel);border:1px solid var(--line);backdrop-filter:blur(16px);font-size:15px}.panel-toggle:hover{background:var(--text);color:var(--bg)}.panel section{padding:14px 16px 16px;border-bottom:1px solid var(--line)}.panel section:last-child{border-bottom:0}.panel h3{font-weight:800;font-size:12px;letter-spacing:.12em;margin-bottom:10px;display:flex;align-items:center;gap:8px}.panel h3 em{font-style:normal;font-family:var(--mono);font-weight:600;font-size:10px;color:var(--bg);background:var(--paper);padding:1px 4px}.sw{display:flex;align-items:center;gap:10px;padding:4px 0;font-size:12.5px;color:var(--text);cursor:pointer}.sw input{position:absolute;opacity:0;pointer-events:none}.sw span{width:26px;height:14px;border:1.5px solid var(--faint);position:relative;flex:none;transition:background .15s,border-color .15s}.sw span:after{content:"";position:absolute;top:2px;left:2px;width:7px;height:7px;background:var(--mute);transition:transform .2s var(--ease-expo),background .15s}.sw input:checked+span{background:var(--accent);border-color:var(--accent)}.sw input:checked+span:after{transform:translate(12px);background:#fff}.sw input:focus-visible+span{outline:2px solid var(--accent-hi);outline-offset:2px}.range{display:block;padding:5px 0 7px}.range>span{display:flex;justify-content:space-between;font-size:12px;color:var(--text);margin-bottom:4px}.range b{font-family:var(--mono);font-weight:600;font-size:11px;color:var(--mute)}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:14px;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:2px;background:var(--line-2)}input[type=range]::-moz-range-track{height:2px;background:var(--line-2)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:11px;height:11px;margin-top:-4.5px;background:var(--bg);border:2px solid var(--text);transform:rotate(45deg)}input[type=range]::-moz-range-thumb{width:9px;height:9px;background:var(--bg);border:2px solid var(--text);border-radius:0;transform:rotate(45deg)}input[type=range]:hover::-webkit-slider-thumb,input[type=range]:focus-visible::-webkit-slider-thumb{border-color:var(--accent-hi);background:var(--accent)}.kv{display:flex;justify-content:space-between;gap:12px;padding:3px 0;font-size:12px}.kv b{font-family:var(--mono);font-weight:600;font-size:11.5px;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.navtools{position:absolute;top:76px;right:14px;display:flex;align-items:flex-start;gap:6px;padding:6px;background:none!important;border:0!important;backdrop-filter:none!important}#gizmo{width:96px;height:96px;border-radius:50%;cursor:grab;transition:background .2s}#gizmo:hover{background:#ffffff0f}#gizmo.dragging{cursor:grabbing}.navbtns{display:flex;flex-direction:column;gap:4px;order:-1}.navbtns button{width:30px;height:30px;display:grid;place-items:center;background:var(--panel);border:1px solid var(--line);backdrop-filter:blur(16px)}.navbtns button:hover{background:#ffffff1f}.navbtns button.on{background:var(--accent);border-color:var(--accent)}.navbtns svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round}#nb-mode svg{fill:currentColor;stroke:none}.mode-tag{position:absolute;right:6px;top:104px;width:96px;text-align:center;font-family:var(--mono);font-size:9px;letter-spacing:.16em;color:var(--mute)}.mode-tag.fly{color:var(--accent-hi)}.inspector{position:absolute;top:210px;right:14px;width:300px;padding:14px 16px 16px;border-top:2px solid var(--accent);animation:insp-in .45s var(--ease-expo)}.inspector[hidden]{display:none}@keyframes insp-in{0%{opacity:0;transform:translate(16px)}}.insp-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.insp-tag{font-family:var(--mono);font-size:10px;font-weight:600;color:#fff;background:var(--accent);padding:2px 6px;letter-spacing:.1em}#insp-close{width:24px;height:24px;font-size:12px;color:var(--mute)}#insp-close:hover{background:var(--text);color:var(--bg)}.inspector h4{font-weight:800;font-size:15px;line-height:1.25;word-break:break-all;margin-bottom:10px}.btn{margin-top:12px;width:100%;padding:9px;background:var(--text);color:var(--bg);font-weight:800;letter-spacing:.12em;font-size:12px;display:flex;justify-content:center;align-items:center;gap:10px}.btn kbd{color:var(--bg);border-color:#00000040;background:transparent}.btn:hover{background:var(--accent);color:#fff}.btn:hover kbd{color:#fff;border-color:#fff6}.minimap{position:absolute;right:18px;bottom:14px;width:140px;height:140px;border-radius:50%;box-shadow:0 0 0 6px #0c0d1066}.minimap canvas{width:100%;height:100%;border-radius:50%}.mm-n{position:absolute;top:-9px;left:50%;transform:translate(-50%);font-family:var(--mono);font-weight:600;font-size:10px;background:var(--text);color:var(--bg);padding:0 4px}.mm-label{position:absolute;top:-24px;display:none;left:50%;transform:translate(-50%);font-family:var(--mono);font-size:9px;letter-spacing:.14em;color:var(--faint);white-space:nowrap}.crosshair{position:absolute;left:50%;top:50%;width:22px;height:22px;transform:translate(-50%,-50%) rotate(45deg);border:1.5px solid rgba(255,255,255,.7);pointer-events:none!important;opacity:0;transition:opacity .2s,transform .3s var(--ease-expo)}.crosshair:after{content:"";position:absolute;left:50%;top:50%;width:3px;height:3px;margin:-1.5px;background:#fff}.fly.locked .crosshair{opacity:1;transform:translate(-50%,-50%) rotate(45deg) scale(1)}.fly-hint{position:absolute;left:50%;top:50%;translate:-50% -50%;display:grid;justify-items:center;gap:6px;padding:14px 22px;background:#0c0d108c;border:1px solid var(--line-2);backdrop-filter:blur(6px);font-size:15px;color:var(--text);pointer-events:none!important;opacity:0;scale:.96;transition:opacity .25s var(--ease-out),scale .25s var(--ease-out)}.fly-hint span{font-size:12px;color:var(--mute)}.fly:not(.locked) .fly-hint{opacity:1;scale:1}.panel-note{margin-top:10px;font-size:11px;line-height:1.55;color:var(--mute)}.ctx{position:absolute;min-width:232px;padding:5px;list-style:none;font-size:12.5px;box-shadow:0 18px 50px #00000080;z-index:40;animation:ctx-in .16s var(--ease-out);transform-origin:top left}.ctx[hidden]{display:none}@keyframes ctx-in{0%{opacity:0;transform:scale(.96)}}.ctx-head{padding:6px 10px 8px;margin-bottom:4px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:10px;color:var(--mute);line-height:1.6}.ctx-head b{color:var(--text);font-weight:600}.ctx button{width:100%;display:flex;align-items:center;gap:10px;padding:7px 10px;text-align:left}.ctx button .ic{width:14px;text-align:center;color:var(--mute);font-family:var(--mono)}.ctx button kbd{margin-left:auto;font-size:9px;color:var(--mute)}.ctx button:hover,.ctx button:focus-visible{background:var(--accent);color:#fff;outline:none}.ctx button:hover .ic,.ctx button:hover kbd{color:#fff}.ctx button:disabled{opacity:.35;pointer-events:none}.ctx hr{border:0;border-top:1px solid var(--line);margin:4px 0}.toast{position:absolute;left:50%;bottom:64px;transform:translate(-50%,10px);padding:8px 14px;font-family:var(--mono);font-size:11px;background:var(--text);color:var(--bg);opacity:0;pointer-events:none!important;transition:opacity .2s,transform .3s var(--ease-expo)}.toast.show{opacity:1;transform:translate(-50%)}.fps-warn{position:absolute;right:18px;bottom:14px;z-index:40;display:flex;align-items:center;gap:10px;max-width:264px;padding:10px 12px;background:var(--panel);border:1px solid var(--warn);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 12px 30px #00000073;font-size:12px}.fps-warn[hidden]{display:none}.fw-ic{color:var(--warn);font-size:13px;line-height:1}.fw-text{display:flex;flex-direction:column;gap:2px;min-width:0}.fw-text b{font-weight:800;letter-spacing:.02em}.fw-text small{color:var(--mute);font-size:11px}.fw-x{margin-left:2px;width:22px;height:22px;flex:none;border:0;background:none;color:var(--mute);cursor:pointer;font-size:13px}.fw-x:hover{color:var(--text)}#app.minimap-on .fps-warn{bottom:172px}@media (max-width: 900px){#app.minimap-on .fps-warn{bottom:130px}}.statusbar{position:absolute;left:14px;right:auto;max-width:calc(100vw - 28px);bottom:12px;display:flex;align-items:center;gap:18px;padding:6px 12px;font-family:var(--mono);font-size:11px;pointer-events:none!important;background:var(--panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--line)}.statusbar .sync{display:flex;align-items:center;gap:8px;font-weight:600}.vl-ring{width:16px;height:16px;transform:rotate(-90deg);flex:none}.vl-ring circle{fill:none;stroke-width:2.6;stroke:var(--line-2)}.vl-ring .vl-fg{stroke:var(--text);stroke-dasharray:47.12;stroke-dashoffset:calc(47.12 * (1 - var(--p, 0)));transition:stroke-dashoffset .3s var(--ease-out)}.statusbar .sync.busy .vl-fg{stroke:var(--accent-hi)}.statusbar .sync.busy .vl-ring{animation:vl-spin 2.4s linear infinite}@keyframes vl-spin{0%{transform:rotate(-90deg)}to{transform:rotate(270deg)}}#ui-status{min-width:9.5ch}.vl-parts{display:flex;gap:10px;font-weight:400;color:var(--faint);padding-right:6px;border-right:1px solid var(--line)}.vl-parts b{color:var(--mute);font-weight:600}@keyframes blink{50%{opacity:.15}}.statusbar .keys{color:var(--mute);display:flex;gap:5px;align-items:center;flex-wrap:wrap}.statusbar .keys[hidden]{display:none}.statusbar .keys kbd+kbd{margin-left:-2px}.statusbar .keys kbd:not(kbd+kbd){margin-left:8px}.statusbar .speed{margin-left:auto;white-space:nowrap}@media (max-width: 900px){.coords{display:none}.statusbar .keys{display:none!important}.minimap{width:104px;height:104px;bottom:14px}.inspector{inset:auto 14px 180px;width:auto}}@media (max-width: 600px){.perf>div:nth-child(n+4){display:none}.brand small{display:none}.panel{width:calc(100% - 68px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;border:1px solid var(--line-2);margin-bottom:10px}.seg button{padding:7px 0;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.08em;color:var(--mute);border-right:1px solid var(--line)}.seg button:last-child{border-right:0}.seg button:hover{color:var(--text);background:#ffffff0d}.seg button.on{background:var(--text);color:var(--bg)}.seg button:focus-visible{outline:2px solid var(--accent-hi);outline-offset:-2px}.panel-debug{width:100%;display:flex;justify-content:space-between;align-items:center;padding:11px 16px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--mute);border-top:1px solid var(--line)}.panel-debug:hover{color:var(--text);background:#ffffff0a}.range small{display:block;margin-top:2px;font-size:10px;color:var(--faint)}input[type=range]:disabled{opacity:.35;cursor:not-allowed}.dbg{position:absolute;top:76px;right:160px;width:360px;max-height:calc(100% - 140px);min-width:300px;min-height:180px;display:flex;flex-direction:column;background:#0a0b0ee6;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--line-2);box-shadow:0 24px 60px #0000008c;font-size:12px;z-index:30;resize:both;overflow:hidden}.dbg[hidden]{display:none}.dbg-head{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;border-bottom:1px solid var(--line);cursor:move;user-select:none;font-family:var(--mono);font-size:11px}.dbg-head b{letter-spacing:.14em}.dbg-dot{width:8px;height:8px;background:var(--warn);box-shadow:0 0 10px var(--warn)}.dbg-sub{color:var(--mute);font-size:10px}.dbg-x{margin-left:auto;width:24px;height:24px;color:var(--mute);cursor:pointer}.dbg-x:hover{background:var(--text);color:var(--bg)}.dbg-tabs{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;border-bottom:1px solid var(--line)}.dbg-tex{display:grid;gap:5px;margin-top:4px}.dbg-tex-row{display:grid;grid-template-columns:5.2em 1fr 6.4em;align-items:center;gap:8px;font-family:var(--mono);font-size:10px}.dbg-tex-row>span:first-child{color:var(--mute)}.dbg-tex-row em{font-style:normal;text-align:right;color:var(--text);font-variant-numeric:tabular-nums}.dbg-tex-row em.climbing{color:var(--accent-hi)}.dbg-steps{display:grid;grid-template-columns:repeat(6,1fr);gap:2px}.dbg-steps i{height:8px;background:var(--line)}.dbg-steps i.have{background:var(--text)}.dbg-steps i.want{box-shadow:inset 0 0 0 1px var(--accent-hi)}.dbg-steps i.loading{background:var(--accent);animation:blink .6s steps(2) infinite}.dbg-tabs button{padding:8px 0;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.12em;color:var(--mute);border-bottom:2px solid transparent}.dbg-tabs button:hover{color:var(--text)}.dbg-tabs button.on{color:var(--text);border-bottom-color:var(--warn)}.dbg-body{flex:1;min-height:0;overflow-y:auto;padding:4px 14px 14px;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}.dbg-pane[hidden]{display:none}.dbg h4{margin:14px 0 6px;font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--faint);display:flex;align-items:center;gap:8px}.dbg h4:after{content:"";flex:1;height:1px;background:var(--line)}.dbg p.dim,.dbg .dim{color:var(--faint);font-size:11px;line-height:1.5;margin-bottom:8px}.dbg-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:16px}.dbg-grid .kv{font-size:11px;padding:2px 0}.dbg-grid .kv b{font-size:11px}.dbg-graph{width:100%;height:100px;margin-top:10px;background:#ffffff05;border:1px solid var(--line)}.dbg-graph-legend{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 4px;font-family:var(--mono);font-size:10px;color:var(--mute)}.dbg-graph-legend b{color:var(--text)}.dbg-row{display:flex;gap:6px;margin:8px 0}.dbg-btn{flex:1;padding:8px 10px;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.1em;border:1px solid var(--line-2);color:var(--text)}.dbg-btn:hover{background:#ffffff14}.dbg-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.dbg-btn.primary:hover{background:var(--accent-hi)}.dbg-btn.warn{border-color:#ff6b4a99;color:var(--warn)}.dbg-btn.warn:hover{background:var(--warn);color:var(--bg)}.dbg-seg{margin-bottom:0}.dbg-progress{height:3px;background:var(--line);margin-bottom:8px}.dbg-progress[hidden]{display:none}.dbg-progress i{display:block;height:100%;background:var(--accent-hi);transform-origin:left;transform:scaleX(0)}.dbg-results table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:10px}.dbg-results th{text-align:right;font-weight:400;color:var(--faint);padding:4px 2px;border-bottom:1px solid var(--line)}.dbg-results td{text-align:right;padding:4px 2px;font-variant-numeric:tabular-nums}.dbg-results th:first-child,.dbg-results td:first-child{text-align:left}.dbg-results tr:first-child td{color:var(--accent-hi)}.dbg-maps{display:grid;gap:6px}.dbg-map{display:grid;gap:2px;padding:10px 12px;text-align:left;border:1px solid var(--line-2)}.dbg-map b{font-size:14px;font-weight:800}.dbg-map span{color:var(--mute);font-size:11px}.dbg-map em{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--faint)}.dbg-map:hover{border-color:var(--text)}.dbg-map.on{border-color:var(--accent);background:#4d5cff1f;cursor:default}.dbg-list{display:grid}.dbg-list button{display:flex;justify-content:space-between;padding:6px 4px;font-family:var(--mono);font-size:11px;border-bottom:1px solid var(--line);text-align:left}.dbg-list button em{font-style:normal;color:var(--faint)}.dbg-list button:hover{background:var(--accent);color:#fff}.dbg-list button:hover em{color:#fff}@media (max-width: 700px){.dbg{left:8px!important;right:8px!important;width:auto;top:70px!important}}.look-only[hidden]{display:none}.pick{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;margin-top:6px}.pick select{flex:1;max-width:170px;background:var(--panel-2, #1c1f26);color:inherit;border:1px solid rgba(255,255,255,.14);border-radius:4px;padding:3px 6px;font:inherit}
