:root{color:#f5f2eb;font-synthesis:none;text-rendering:optimizelegibility;--panel:#0a0c11db;--line:#ffffff1f;--line-strong:#fff3;--muted:#a9a8a4;--gold:#e1bd68;--gold-soft:#e1bd6829;--ready:#75d7ad;--error:#ff8f84;background:#080a0e;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app,#viewport{width:100%;height:100%;margin:0;overflow:hidden}body{background:#080a0e}button,kbd{font:inherit}button{color:inherit}button:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:3px}[hidden]{display:none!important}#viewport,#viewport canvas{display:block}#viewport canvas{outline:none;width:100%;height:100%}.top-bar{z-index:5;pointer-events:none;justify-content:space-between;align-items:flex-start;width:100%;padding:20px;transition:opacity .18s;display:flex;position:fixed;top:0;left:0}.brand,.scene-status,.hud-button,.help-panel,.interaction-hint,.tour-panel,.camera-dock,.position-readout,.error-panel{border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(18px)saturate(120%);box-shadow:0 16px 48px #00000042}.brand{border-radius:12px;align-items:center;gap:10px;min-height:52px;padding:6px 14px 6px 8px;display:flex}.brand-logo{object-fit:contain;width:48px;height:40px}.brand-copy strong,.brand-copy small{display:block}.brand-copy strong{font-size:15px;line-height:1.1}.brand-copy small{color:var(--muted);letter-spacing:.14em;text-transform:uppercase;margin-top:3px;font-size:10px;font-weight:700;line-height:1}.top-actions{pointer-events:auto;align-items:center;gap:8px;display:flex}.scene-status,.hud-button{border-radius:11px;min-height:44px}.scene-status{color:#d8d7d2;align-items:center;gap:9px;padding:0 14px;font-size:13px;display:flex}.status-dot{background:#8992a0;border-radius:50%;width:8px;height:8px}.scene-status[data-state=loading] .status-dot,.scene-status[data-state=building] .status-dot{background:var(--gold);animation:1.1s ease-in-out infinite status-pulse;box-shadow:0 0 0 4px #e1bd681f}.scene-status[data-state=ready] .status-dot{background:var(--ready);box-shadow:0 0 0 4px #75d7ad1f}.scene-status[data-state=error] .status-dot{background:var(--error);box-shadow:0 0 0 4px #ff8f841f}@keyframes status-pulse{50%{opacity:.42;transform:scale(.8)}}.hud-button{color:#d9d7d1;cursor:pointer;align-items:center;gap:9px;padding:0 10px 0 13px;transition:border-color .14s,background .14s,color .14s;display:inline-flex}.hud-button:hover:not(:disabled),.hud-button[aria-expanded=true]{color:#fff;background:#18191ef0;border-color:#e1bd6875}.hud-button:disabled{cursor:default;opacity:.42}kbd{border:1px solid var(--line-strong);color:#f0ede6;background:#ffffff12;border-bottom-color:#ffffff52;border-radius:6px;place-items:center;min-width:27px;min-height:25px;padding:3px 7px;font-size:12px;line-height:1;transition:border-color .1s,background .1s,color .1s,transform .1s;display:inline-grid;box-shadow:inset 0 -1px #ffffff12}kbd.is-pressed{border-color:var(--gold);background:var(--gold);color:#17120a;transform:translateY(1px)}.help-panel{z-index:9;border-radius:16px;width:min(390px,100vw - 40px);padding:20px;position:fixed;top:76px;right:20px}.help-panel>header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;padding-bottom:17px;display:flex}.panel-kicker,.camera-dock-heading>span{color:var(--gold);letter-spacing:.11em;text-transform:uppercase;font-size:12px;font-weight:700}.help-panel h2{margin:5px 0 0;font-size:22px;line-height:1.1}#help-close{border:1px solid var(--line);width:36px;height:36px;color:var(--muted);cursor:pointer;background:#ffffff0d;border-radius:9px;place-items:center;padding:0 0 2px;font-size:24px;line-height:1;display:grid}#help-close:hover{border-color:var(--line-strong);color:#fff}.help-grid{grid-template-columns:1fr 1fr;gap:10px;padding-top:14px;display:grid}.help-item{background:#ffffff08;border:1px solid #ffffff14;border-radius:10px;align-items:center;gap:11px;min-height:64px;padding:10px;display:flex}.help-item>span:last-child{min-width:0}.help-item strong,.help-item small{display:block}.help-item strong{font-size:14px;line-height:1.2}.help-item small{color:var(--muted);margin-top:3px;font-size:12px;line-height:1.25}.help-movement{grid-column:1/-1;padding:12px}.movement-keys{grid-template-rows:repeat(2,27px);grid-template-columns:repeat(3,27px);gap:4px;display:grid}.movement-keys kbd{min-width:27px;min-height:27px;padding:0}.movement-keys kbd:first-child{grid-column:2}.key-pair{gap:4px;display:flex}.mouse-glyph{border:1px solid #ffffff57;border-radius:11px;flex:none;width:21px;height:30px;position:relative}.mouse-glyph:before{background:var(--gold);content:"";border-radius:2px;width:2px;height:7px;position:absolute;top:5px;left:9px}.interaction-hint{z-index:4;pointer-events:none;border-radius:12px;align-items:center;gap:12px;max-width:320px;min-height:60px;padding:10px 15px;transition:opacity .18s,transform .18s;display:flex;position:fixed;bottom:20px;left:20px}.interaction-hint strong,.interaction-hint small{display:block}.interaction-hint strong{font-size:14px;line-height:1.2}.interaction-hint small{color:var(--muted);margin-top:4px;font-size:12px;line-height:1.25}.is-looking .interaction-hint{opacity:0;transform:translateY(8px)}.tour-panel{z-index:7;border-radius:16px;width:min(620px,100vw - 40px);padding:18px;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.tour-header,.tour-heading,.tour-controls{align-items:center;display:flex}.tour-header{justify-content:space-between}.tour-heading{gap:10px}.tour-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.tour-exit,.tour-controls button{border:1px solid var(--line);color:#d9d7d1;cursor:pointer;background:#ffffff0d;border-radius:9px;transition:border-color .14s,background .14s,color .14s}.tour-exit{min-height:34px;color:var(--muted);padding:0 11px;font-size:12px}.tour-exit:hover,.tour-controls button:hover:not(:disabled){color:#fff;background:#e1bd681a;border-color:#e1bd6875}.tour-copy{min-height:84px;padding:18px 0 15px}.tour-copy h2{color:#fffdf7;margin:0;font-size:clamp(22px,3vw,30px);line-height:1.08}.tour-copy p{color:#bbb9b3;max-width:520px;margin:8px 0 0;font-size:14px;line-height:1.45}.tour-progress{background:#ffffff17;border-radius:999px;height:3px;overflow:hidden}.tour-progress span{border-radius:inherit;background:var(--gold);transform-origin:0;width:100%;height:100%;transition:transform .42s;display:block;transform:scaleX(.125)}.tour-controls{justify-content:space-between;gap:8px;padding-top:14px}.tour-controls button{min-width:92px;min-height:40px;padding:0 13px;font-size:13px;font-weight:650}.tour-controls button:disabled{cursor:default;opacity:.34}.tour-controls .tour-play{background:var(--gold-soft);color:#fff8e8;border-color:#e1bd688a;min-width:112px}.is-tour-active .interaction-hint,.is-tour-active .camera-dock{opacity:0;pointer-events:none;transform:translate(-50%,8px)}.is-tour-active .position-readout{opacity:0;pointer-events:none}.camera-dock{z-index:4;border-radius:14px;width:min(720px,100vw - 680px);min-width:620px;padding:10px;transition:border-color .16s,opacity .18s;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.camera-dock:hover{border-color:var(--line-strong)}.camera-dock-heading{justify-content:space-between;align-items:center;padding:0 3px 8px;display:flex}.camera-dock-heading strong{color:#d7d5ce;font-size:12px;font-weight:600}.camera-list{grid-template-columns:repeat(10,minmax(48px,1fr));gap:5px;display:grid}.camera-list button{color:#cbc9c3;cursor:pointer;text-align:left;background:#ffffff0a;border:1px solid #ffffff17;border-radius:9px;grid-template-rows:auto auto;grid-template-columns:1fr auto;align-items:center;min-width:0;min-height:53px;padding:7px 7px 6px;transition:border-color .12s,background .12s,color .12s,transform .12s;display:grid;position:relative}.camera-list button:hover:not(:disabled){color:#fff;background:#e1bd681a;border-color:#e1bd687a;transform:translateY(-1px)}.camera-list button[aria-pressed=true]{border-color:var(--gold);background:var(--gold-soft);color:#fff;box-shadow:inset 0 0 0 1px #e1bd6826}.camera-list button:disabled{cursor:default;opacity:.32}.camera-number{font-size:14px;font-weight:700;line-height:1}.camera-lens{color:var(--muted);grid-column:1/-1;font-size:11px;line-height:1}.camera-list kbd{min-width:19px;min-height:19px;padding:2px;font-size:10px}.crosshair{z-index:3;opacity:0;pointer-events:none;width:15px;height:15px;transition:opacity .16s;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.crosshair:before,.crosshair:after,.crosshair span:before,.crosshair span:after{content:"";background:#ffffffd1;display:block;position:absolute}.crosshair:before,.crosshair:after{width:4px;height:1px;top:7px}.crosshair:before{left:0}.crosshair:after{right:0}.crosshair span:before,.crosshair span:after{width:1px;height:4px;left:7px}.crosshair span:before{top:0}.crosshair span:after{bottom:0}.is-looking .crosshair{opacity:1}.is-looking .top-bar,.is-looking .camera-dock,.is-looking .position-readout{opacity:.76}.is-looking .camera-dock:hover,.is-looking .top-bar:hover{opacity:1}.position-readout{z-index:4;color:#cfcdc7;font-variant-numeric:tabular-nums;border-radius:11px;align-items:center;gap:10px;min-height:42px;padding:0 13px;font-size:12px;display:flex;position:fixed;bottom:20px;right:20px}.readout-separator{background:var(--line);width:1px;height:14px}#scene-size-label{color:var(--muted)}.camera-toast{z-index:8;color:#f2eee6;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#080a0ee0;border:1px solid #ffffff26;border-radius:999px;padding:9px 13px;font-size:12px;font-weight:650;transition:opacity .15s,transform .15s;position:fixed;top:82px;left:50%;transform:translate(-50%,-8px)}.camera-toast.is-visible{opacity:1;transform:translate(-50%)}.error-panel{z-index:10;color:#e9e2de;border-color:#ff8f8461;border-radius:12px;width:min(440px,100vw - 40px);max-height:42vh;padding:16px;font-size:14px;position:fixed;bottom:82px;right:20px;overflow:auto}.error-panel strong{color:var(--error)}.error-panel p{color:#bbb6b1;margin:6px 0 12px}.error-panel summary{cursor:pointer;color:#ded8d2}.error-panel pre{color:#cbc5bf;white-space:pre-wrap;background:#0000004d;border-radius:7px;max-height:180px;margin:12px 0 0;padding:10px;font-size:12px;line-height:1.45;overflow:auto}@media (max-width:1440px){.interaction-hint,.position-readout{bottom:108px}}@media (max-width:1160px){.camera-dock{width:auto;min-width:0;bottom:16px;left:16px;right:16px;transform:none}}@media (max-width:760px){.top-bar{padding:12px}.brand{min-height:44px;padding:5px 10px 5px 6px}.brand-logo{width:40px;height:34px}.brand-copy small,.button-label,#scene-size-label,.readout-separator{display:none}.scene-status{min-height:40px;padding:0 10px}.hud-button{justify-content:center;min-width:40px;min-height:40px;padding:0 7px}.help-panel{width:auto;top:66px;left:12px;right:12px}.camera-dock{bottom:12px;left:12px;right:12px;overflow-x:auto}.tour-panel{width:auto;padding:15px;bottom:12px;left:12px;right:12px;transform:none}.tour-copy{min-height:76px;padding:15px 0 13px}.tour-controls button{flex:1;min-width:0}.camera-dock-heading{position:sticky;left:0}.camera-list{min-width:600px}.interaction-hint{max-width:none;bottom:104px;left:12px;right:12px}.position-readout{display:none}}@media (max-width:520px){.scene-status span:last-child{display:none}.help-grid{grid-template-columns:1fr}.help-movement{grid-column:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
