*{box-sizing:border-box;margin:0;padding:0}:root{--gold:#cda14a;--gold-soft:#e3c987}html,body,#root{overscroll-behavior:none;background:#000;width:100%;height:100%;font-family:system-ui,Segoe UI,Roboto,sans-serif;overflow:hidden}canvas{display:block}.viewer{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;position:fixed;inset:0}.title{z-index:20;color:#fff;pointer-events:none;text-shadow:0 1px 2px #000000e6,0 2px 5px #000000b3,0 0 16px #00000080;align-items:flex-end;gap:12px;display:flex;position:absolute;top:16px;left:20px}.title h1{letter-spacing:.2px;font-size:30px;font-weight:700}.title .sub{color:#f1ece2;letter-spacing:.3px;margin-top:3px;font-size:14px;font-weight:600}.brand-logo{filter:drop-shadow(0 1px 3px #0009)drop-shadow(0 0 10px #0006);flex-shrink:0;width:auto;height:48px;margin-bottom:2px;display:block}@media (pointer:coarse){.brand-logo{height:32px}}.hud{z-index:20;color:var(--gold);text-align:right;white-space:pre;pointer-events:none;text-shadow:0 1px 3px #000000d9;font-family:ui-monospace,Consolas,monospace;font-size:13px;line-height:1.55;position:absolute;top:16px;right:20px}.overlay{pointer-events:none;z-index:15;background:#00000073;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.card{text-align:center;background:#0c0c0eeb;border:1px solid #cda14a47;border-radius:14px;min-width:320px;padding:26px 32px;box-shadow:0 24px 70px #0009}.card .kicker{color:var(--gold);letter-spacing:2.5px;font-size:12px;font-weight:700}.card h2{color:#fff;margin:8px 0 18px;font-size:26px;font-weight:600}.keys{text-align:left;flex-direction:column;gap:9px;display:flex}.krow{align-items:center;gap:12px;display:flex}.krow kbd{color:#eaeaea;text-align:center;background:#1c1c1e;border:1px solid #3a3a3d;border-bottom-width:2px;border-radius:5px;min-width:44px;padding:3px 9px;font-family:ui-monospace,Consolas,monospace;font-size:12px}.krow span{color:#cfcfcf;font-size:14px}.tut-overlay{pointer-events:auto}.tut-card{width:380px;max-width:calc(100vw - 36px);padding:44px 30px 22px;position:relative}.tut-skip{color:#8a8a8a;cursor:pointer;background:0 0;border:none;padding:4px 6px;font-size:13px;position:absolute;top:11px;right:13px}.tut-skip:hover{color:#e5e5e5}.tut-kicker{color:var(--gold);letter-spacing:2px;text-transform:uppercase;font-size:11px;font-weight:700}.tut-art{background:radial-gradient(120% 120% at 50% 28%,#cda14a1a,#cda14a05 70%);border:1px solid #cda14a2e;border-radius:12px;justify-content:center;align-items:center;height:132px;margin:14px 0;display:flex}.tut-art svg{width:86%;height:86%}.tut-title{color:#fff;height:28px;margin:0;font-size:21px;font-weight:600;line-height:28px}.tut-keys{flex-wrap:wrap;justify-content:center;align-items:center;gap:7px;height:30px;margin:8px 0 0;display:flex}.tut-keys kbd{color:#eaeaea;text-align:center;background:#1c1c1e;border:1px solid #3a3a3d;border-bottom-width:2px;border-radius:6px;min-width:30px;padding:4px 11px;font-family:ui-monospace,Consolas,monospace;font-size:13px}.tut-text{color:#d2d2d2;text-align:center;justify-content:center;align-items:center;height:72px;margin:6px 0 0;font-size:15px;line-height:1.5;display:flex}.tut-dots{justify-content:center;gap:9px;margin:14px 0 18px;display:flex}.tut-dots span{cursor:pointer;background:#ffffff38;border-radius:50%;width:9px;height:9px;transition:background .15s,transform .15s}.tut-dots span.on{background:var(--gold);transform:scale(1.25)}.tut-nav{gap:10px;display:flex}.tut-back,.tut-next{cursor:pointer;border-radius:9px;padding:12px 16px;font-size:15px;font-weight:600}.tut-back{color:#cfcfcf;background:0 0;border:1px solid #ffffff2e;flex:none;min-width:96px}.tut-back:disabled{opacity:.35;cursor:default}.tut-back:not(:disabled):hover{color:#fff;border-color:#fff6}.tut-next{background:var(--gold);color:#14140f;border:none;flex:1}.tut-next:hover{filter:brightness(1.07)}.tut-dev{color:#6f6f6f;margin-top:14px;font-family:ui-monospace,Consolas,monospace;font-size:11px}.calib{z-index:25;pointer-events:none;background:#0c0c0eeb;border:1px solid #cda14a73;border-radius:10px;min-width:300px;padding:12px 14px;position:absolute;bottom:16px;left:20px;box-shadow:0 14px 40px #0000008c}.calib-h{color:var(--gold);letter-spacing:2px;margin-bottom:6px;font-size:12px;font-weight:700}.calib-steps{color:#bdbdbd;margin-bottom:8px;font-size:11px;line-height:1.5}.calib-steps b{color:var(--gold-soft);font-family:ui-monospace,Consolas,monospace}.calib-val{color:var(--gold);white-space:pre;font-family:ui-monospace,Consolas,monospace;font-size:12px;line-height:1.6}.angle{z-index:26;color:var(--gold-soft);letter-spacing:.5px;white-space:pre;pointer-events:none;background:#0c0c0e8c;border:1px solid #cda14a40;border-radius:7px;padding:3px 11px;font-family:ui-monospace,Consolas,monospace;font-size:13px;display:none;position:absolute;top:58%;left:50%;transform:translate(-50%)}.bottom-hint{bottom:calc(20px + env(safe-area-inset-bottom));right:calc(22px + env(safe-area-inset-right));text-align:right;color:#c2c2c2;z-index:20;pointer-events:none;text-shadow:0 1px 3px #000000d9;font-size:12.5px;line-height:1.55;position:absolute}.bottom-hint span{display:block}.bottom-hint b{color:var(--gold-soft);font-weight:700}.joy{left:calc(26px + env(safe-area-inset-left));bottom:calc(30px + env(safe-area-inset-bottom));z-index:30;touch-action:none;background:#0c0c0e4d;border:1.5px solid #cda14a80;border-radius:50%;width:124px;height:124px;position:absolute;box-shadow:0 6px 24px #00000073,inset 0 0 24px #0006}.joy-thumb{background:radial-gradient(circle at 35% 30%, #f3e0ad, var(--gold) 72%);will-change:transform;border:1px solid #fff2cfd9;border-radius:50%;width:58px;height:58px;margin:-29px 0 0 -29px;position:absolute;top:50%;left:50%;box-shadow:0 3px 12px #00000080}.mbtn{z-index:30;width:56px;height:56px;color:var(--gold-soft);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:#0c0c0eb8;border:1.5px solid #cda14a80;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:26px;line-height:1;position:absolute}.mbtn:active{background:#cda14a40}.mbtn.home{right:calc(26px + env(safe-area-inset-right));bottom:calc(64px + env(safe-area-inset-bottom))}.touch-hint{bottom:calc(40px + env(safe-area-inset-bottom));text-align:center;color:#c2c2c2;z-index:25;pointer-events:none;text-shadow:0 1px 3px #000000d9;max-width:56vw;font-size:12px;line-height:1.45;position:absolute;left:50%;transform:translate(-50%)}.sign-overlay{z-index:40;cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.sign-card{cursor:default;background:linear-gradient(#15161b,#0a0807);border:1px solid #cda14a40;border-radius:18px;grid-template-columns:1.2fr 1fr;width:100%;max-width:880px;max-height:90vh;display:grid;position:relative;overflow:hidden;box-shadow:0 30px 90px #000000a6}.sign-close{z-index:2;color:#cfcfcf;cursor:pointer;background:#0a080799;border:1px solid #ffffff2e;border-radius:50%;width:34px;height:34px;font-size:15px;position:absolute;top:14px;right:14px}.sign-close:hover{color:var(--gold-soft);border-color:#cda14a99}.sign-photo{background:#000}.sign-photo img{object-fit:cover;width:100%;height:100%;display:block}.sign-info{color:#eaeaea;flex-direction:column;padding:30px 30px 26px;display:flex}.sign-kicker{color:var(--gold);letter-spacing:2px;font-size:11px;font-weight:700}.sign-info h2{color:#fff;margin-top:10px;font-size:30px;font-weight:600}.sign-addr{color:#9a9a9a;margin-top:4px;font-size:14px}.sign-price{color:var(--gold);margin-top:18px;font-size:38px;font-weight:700}.sign-stats{border-top:1px solid #ffffff1a;grid-template-columns:1fr 1fr;gap:14px 18px;margin-top:22px;padding-top:18px;display:grid}.sign-stats span{text-transform:uppercase;letter-spacing:1.5px;color:#7c7c7c;font-size:11px;display:block}.sign-stats b{color:#fff;margin-top:3px;font-family:ui-monospace,Consolas,monospace;font-size:16px;font-weight:500;display:block}.sign-foot{color:#6a6a6a;margin-top:auto;padding-top:20px;font-size:11px}@media (width<=640px){.sign-card{grid-template-columns:1fr;max-height:92vh;overflow-y:auto}.sign-photo img{height:220px}.sign-info{padding:22px 20px}.sign-info h2{font-size:24px}.sign-price{font-size:30px}}.mode-badge{z-index:30;letter-spacing:.4px;pointer-events:none;white-space:nowrap;border:2px solid;border-radius:999px;align-items:center;gap:10px;padding:8px 18px;font-size:15px;font-weight:700;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #00000080}.mode-badge-hint{letter-spacing:0;opacity:.65;font-size:11px;font-weight:500}.mode-badge.collider{color:#cfe8ff;background:#39a0ff33;border-color:#39a0ff}.mode-badge.censor{color:#ffd6c9;background:#ff603c38;border-color:#ff6a3c}.mode-badge.room{border-color:var(--gold);color:var(--gold-soft);background:#cda14a38}.mode-badge.portal{color:#d9d2ff;background:#8c78ff38;border-color:#8c78ff}.tour-fade{z-index:40;opacity:0;pointer-events:none;background:#0e0f13;transition:opacity .26s;position:absolute;inset:0}.zone-loader{z-index:41;pointer-events:none;color:#cfcabb;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:absolute;inset:0}.zone-loader .zl-label{letter-spacing:.14em;text-transform:uppercase;text-shadow:0 1px 3px #000000d9;font-size:13px}.zone-loader .zl-bar{background:#ffffff1f;border-radius:2px;width:220px;max-width:60vw;height:3px;overflow:hidden}.zone-loader .zl-fill{background:#cda14a;width:0%;height:100%;box-shadow:0 0 10px #cda14a99}.zone-loader .zl-pct{color:#cda14a;font-variant-numeric:tabular-nums;letter-spacing:.08em;font-size:12px}.room-panel{z-index:26;pointer-events:auto;background:#0c0c0ef0;border:1px solid #cda14a73;border-radius:12px;flex-direction:column;width:260px;max-height:calc(100vh - 160px);display:flex;position:absolute;top:124px;right:16px;overflow:hidden;box-shadow:0 14px 40px #0000008c}.rp-head{color:var(--gold);letter-spacing:1px;border-bottom:1px solid #cda14a38;align-items:center;gap:8px;padding:12px 14px;font-size:13px;font-weight:800;display:flex}.rp-count{color:var(--gold-soft);background:#cda14a2e;border-radius:999px;margin-left:auto;padding:1px 9px;font-size:12px}.rp-empty{color:#9a9a9a;padding:18px 16px;font-size:12px;line-height:1.55}.rp-empty b{color:var(--gold-soft)}.rp-list{flex-direction:column;gap:4px;padding:6px;display:flex;overflow-y:auto}.rp-item{background:#ffffff08;border:1px solid #0000;border-radius:8px;align-items:stretch;gap:2px;display:flex}.rp-item.active{background:#cda14a29;border-color:#cda14a99}.rp-go{color:#e8e8e8;cursor:pointer;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:8px;min-width:0;padding:8px;display:flex}.rp-num{width:20px;height:20px;color:var(--gold-soft);background:#cda14a38;border-radius:6px;flex:none;place-items:center;font-size:11px;font-weight:700;display:grid}.rp-item.active .rp-num{background:var(--gold);color:#0a0807}.rp-name{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.rp-zone{color:#8a8a8a;flex:none;font-family:ui-monospace,Consolas,monospace;font-size:10px}.rp-ic{cursor:pointer;opacity:.65;background:0 0;border:0;border-radius:6px;flex:none;width:30px;font-size:13px}.rp-ic:hover{opacity:1;background:#ffffff14}.rp-orbit{background:#cda14a14;border-top:1px solid #cda14a38;padding:10px 14px}.rp-orbit-val{color:var(--gold);min-height:16px;font-family:ui-monospace,Consolas,monospace;font-size:13px;font-weight:700}.rp-orbit-hint{color:#9a9a9a;margin:3px 0 8px;font-size:10.5px}.rp-done{color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:8px;width:100%;padding:8px;font-size:12px;font-weight:700}.rp-done:hover{background:#ffffff29}.rp-add{background:var(--gold);color:#0a0807;cursor:pointer;border:0;border-radius:8px;margin:8px;padding:10px;font-size:13px;font-weight:800}.rp-add:hover{filter:brightness(1.1)}.zonerow{align-items:center;gap:10px;margin:6px 0 8px;display:flex}.zonebtn{color:#d9d2ff;cursor:pointer;pointer-events:auto;background:#8c78ff38;border:1px solid #8c78ff;border-radius:8px;padding:7px 13px;font-size:12px;font-weight:700}.zonebtn:hover{background:#8c78ff59}.zonestat{color:#bdbdbd;font-size:11.5px}.zonestat b{color:var(--gold-soft);font-family:ui-monospace,Consolas,monospace}.saverow{align-items:center;gap:10px;margin:8px 0 10px;display:flex}.savebtn{background:var(--gold);color:#0a0807;letter-spacing:.5px;cursor:pointer;pointer-events:auto;border:0;border-radius:8px;padding:8px 14px;font-size:12.5px;font-weight:800}.savebtn:hover{filter:brightness(1.1)}.savebtn:disabled{opacity:.55;cursor:wait}.savestat{opacity:.8;font-size:11.5px}.savehint{color:#9a9a9a;margin-bottom:8px;font-size:10.5px;line-height:1.45}.savehint b{color:var(--gold-soft)}.savestat.ok{color:#7fd97f;opacity:1}.savestat.err{color:#e07a6a;opacity:1;font-weight:700}.mode-switch{z-index:24;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0c0c0ec7;border:1px solid #cda14a66;border-radius:999px;gap:2px;padding:3px;display:flex;position:absolute;top:16px;left:50%;transform:translate(-50%);box-shadow:0 8px 28px #00000080}.mode-switch button{color:#cfcfcf;font:inherit;cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:999px;padding:7px 16px;font-size:13px;font-weight:600}.mode-switch button.active{background:var(--gold);color:#0a0807}.tour-nav{bottom:calc(22px + env(safe-area-inset-bottom));z-index:24;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0c0c0ed1;border:1px solid #cda14a59;border-radius:999px;align-items:center;gap:4px;max-width:92vw;padding:6px 8px;display:flex;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 10px 34px #0000008c}.tn-arrow{width:38px;height:38px;color:var(--gold-soft);cursor:pointer;background:#ffffff0f;border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0 0 3px;font-size:24px;line-height:1;display:flex}.tn-arrow:hover{color:#fff;background:#cda14a38}.tn-mid{flex-direction:column;align-items:center;gap:5px;min-width:124px;padding:2px 8px 3px;display:flex}.tn-name{color:#fff;letter-spacing:.2px;white-space:nowrap;font-size:15px;font-weight:700;line-height:1}.tn-dots{align-items:center;gap:3px;display:flex}.tn-dot{cursor:pointer;background:0 0;border:0;width:18px;height:16px;padding:0;position:relative}.tn-dot:before{content:"";background:#ffffff4d;border-radius:50%;width:7px;height:7px;transition:background .15s,width .15s,height .15s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.tn-dot:hover:before{background:#fff9}.tn-dot.on:before{background:var(--gold);width:9px;height:9px}.orbit-hud{bottom:calc(80px + env(safe-area-inset-bottom));z-index:25;border:1px solid var(--gold);color:var(--gold-soft);white-space:nowrap;pointer-events:none;background:#0c0c0ed9;border-radius:999px;padding:7px 16px;font:600 14px/1.1 ui-monospace,Consolas,monospace;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 8px 28px #00000080}.fab-col{top:calc(16px + env(safe-area-inset-top));right:calc(16px + env(safe-area-inset-right));z-index:24;pointer-events:none;flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:absolute}.fab-col>*{pointer-events:auto}.fab{width:42px;height:42px;color:var(--gold-soft);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);-webkit-tap-highlight-color:transparent;background:#0c0c0ed1;border:1px solid #cda14a73;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:18px;line-height:1;transition:border-color .15s,background .15s,transform .1s;display:flex;box-shadow:0 6px 20px #00000073}.fab:hover{border-color:var(--gold);color:#fff;background:#161411eb}.fab:active{transform:translateY(1px)}.expose-fab .ef-ic{font-size:17px;line-height:1}@media (pointer:coarse){.title{top:calc(12px + env(safe-area-inset-top));left:calc(14px + env(safe-area-inset-left))}.title h1{font-size:19px}.title .sub{margin-top:1px;font-size:12px}.mode-switch button{padding:6px 13px;font-size:12.5px}.touch-hint{left:auto;right:calc(18px + env(safe-area-inset-right));bottom:calc(34px + env(safe-area-inset-bottom));text-align:right;max-width:60vw;line-height:1.6;transform:none}.touch-hint span{display:block}.touch-hint b{color:var(--gold-soft);font-weight:700}}@media (pointer:coarse) and (orientation:portrait){.mode-switch{top:calc(58px + env(safe-area-inset-top))}}.settings{position:relative}.set-gear svg{transition:transform .3s}.settings.open .set-gear{border-color:var(--gold);color:#fff;background:#161411eb}.settings.open .set-gear svg{transform:rotate(60deg)}.set-panel{z-index:30;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#eaeaea;background:#0c0c0eeb;border:1px solid #cda14a73;border-radius:14px;width:238px;max-width:calc(100vw - 32px);max-height:72vh;padding:13px 14px 14px;animation:.22s both uiRise;position:absolute;top:calc(100% + 8px);right:0;overflow-y:auto;box-shadow:0 12px 34px #0000008c}.set-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.set-title{letter-spacing:.6px;text-transform:uppercase;color:var(--gold-soft);font-size:11.5px;font-weight:700}.set-reset{color:#9a958d;font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:6px;padding:2px 5px;font-size:11px}.set-reset:hover{color:#fff}.set-row{margin-bottom:13px}.set-lbl{color:#d4d0c8;justify-content:space-between;align-items:baseline;margin-bottom:6px;font-size:12.5px;display:flex}.set-lbl em{font-variant-numeric:tabular-nums;color:#fff;font-style:normal;font-weight:700}.set-row input[type=range]{width:100%;accent-color:var(--gold);cursor:pointer;margin:0}.set-check{color:#d4d0c8;cursor:pointer;-webkit-tap-highlight-color:transparent;align-items:center;gap:9px;padding:5px 0;font-size:12.5px;display:flex}.set-check input{width:16px;height:16px;accent-color:var(--gold);cursor:pointer;flex:none}.set-hint{color:#7e7a73;border-top:1px solid #ffffff14;margin-top:10px;padding-top:9px;font-size:10.5px;line-height:1.45}html,body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.viewer button{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:transform .12s cubic-bezier(.2,.8,.2,1),background-color .15s,background .15s,border-color .15s,color .15s,opacity .15s,box-shadow .15s}.viewer button:active:not(:disabled){transform:scale(.96)}.zl-pct,.hud,.orbit-hud,.rp-orbit-val,.sign-price,.sign-stats b{font-variant-numeric:tabular-nums}.tut-card,.sign-card{box-shadow:0 1px 2px #00000057,0 10px 28px #0006,0 30px 66px #00000080}.mode-switch,.tour-nav,.orbit-hud,.room-panel,.calib{box-shadow:0 1px 2px #0000004d,0 6px 16px #00000057,0 16px 40px #0000006b}.sign-photo{position:relative}.sign-photo:after{content:"";pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 0 1px #ffffff1a}@keyframes uiCardIn{0%{opacity:0;transform:translateY(10px)scale(.985)}to{opacity:1;transform:none}}@keyframes uiRise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes uiRiseCentered{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@keyframes uiFade{0%{opacity:0}to{opacity:1}}.tut-card{animation:.42s cubic-bezier(.22,.8,.26,1) both uiCardIn}.sign-card{animation:.4s cubic-bezier(.22,.8,.26,1) both uiCardIn}.tut-step{flex-direction:column;animation:.3s cubic-bezier(.22,.8,.26,1) both uiRise;display:flex}.mode-switch,.fab-col,.bottom-hint,.touch-hint{animation:.35s both uiFade}.tour-nav{animation:.32s cubic-bezier(.22,.8,.26,1) both uiRiseCentered}.sign-close{width:40px;height:40px}.rp-ic{min-height:34px}.tut-skip{padding:8px 11px}@media (prefers-reduced-motion:reduce){.tut-card,.sign-card,.tut-step,.mode-switch,.tour-nav,.fab-col,.bottom-hint,.touch-hint{animation:none}.viewer button{transition:none}}
