:root{--bg: #0d0f12;--panel: rgba(16, 18, 22, .86);--line: rgba(255, 255, 255, .08);--text: #e8e9ec;--muted: #9aa0a8;--accent: #e23d28;--accent-2: #3aa655;font-family:ui-sans-serif,-apple-system,Segoe UI,Inter,Roboto,sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);overflow:hidden;user-select:none;-webkit-user-select:none}canvas#scene{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}#topbar{position:fixed;top:0;left:0;right:0;height:52px;display:flex;align-items:center;gap:18px;padding:0 16px;background:linear-gradient(to bottom,#0d0f12eb,#0d0f1299);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10}.brand{font-weight:800;letter-spacing:.08em;color:var(--accent)}.brand span{font-weight:500;letter-spacing:0;color:var(--muted)}.modes{display:flex;gap:4px;background:#ffffff0d;padding:3px;border-radius:8px}.modes button{background:transparent;border:0;color:var(--muted);padding:6px 12px;border-radius:6px;cursor:pointer;font-weight:600}.modes button.active{background:var(--accent);color:#fff}.actions{margin-left:auto;display:flex;gap:8px;align-items:center}button,.file-btn{background:#ffffff14;color:var(--text);border:1px solid var(--line);padding:6px 12px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600}button:hover,.file-btn:hover{background:#ffffff24}.file-btn input{display:none}#hint{position:fixed;left:16px;bottom:14px;max-width:70vw;font-size:12px;color:var(--muted);background:var(--panel);border:1px solid var(--line);padding:8px 12px;border-radius:8px;z-index:10}#hint kbd,#walk-overlay kbd{display:inline-block;padding:0 5px;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--text);margin:0 1px}#hint code{color:var(--accent-2)}#walk-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#0000008c;z-index:20}#walk-overlay .card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:28px 32px;text-align:center;max-width:420px}#walk-overlay h2{margin:0 0 10px}#walk-overlay p{color:var(--muted);margin:0 0 18px;line-height:1.6}#walk-overlay button{background:var(--accent);border-color:transparent;color:#fff;padding:10px 20px;font-size:15px}#selection{position:fixed;right:16px;bottom:14px;z-index:10;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 14px;font-size:13px;min-width:220px}#selection h4{margin:0 0 6px;font-size:13px;color:var(--accent-2)}#selection .row{display:flex;justify-content:space-between;gap:12px;color:var(--muted)}#selection .row b{color:var(--text);font-weight:600}.hidden{display:none!important}.lil-gui{--background-color: rgba(16,18,22,.9) !important;--widget-color: rgba(255,255,255,.08) !important;--hover-color: rgba(255,255,255,.14) !important;--focus-color: rgba(255,255,255,.2) !important;--number-color: #7fd38f !important;--string-color: #f0b35b !important;--font-family: inherit !important;--title-background-color: rgba(255,255,255,.04) !important}.lil-gui.root{top:60px!important;right:12px!important;max-height:calc(100vh - 140px);overflow-y:auto;border:1px solid var(--line);border-radius:10px}.lil-gui.root>.title{color:var(--accent);font-weight:800;letter-spacing:.04em}#crosshair{position:fixed;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#fff;opacity:.7;z-index:15;pointer-events:none}#compass{position:fixed;left:16px;top:64px;z-index:10;display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 12px 8px 8px}#compass svg{width:84px;height:84px;flex:none}#compass .ring{fill:#ffffff0a;stroke:#ffffff2e;stroke-width:2}#compass-rose{transform-origin:50px 50px;transition:transform .08s linear}#compass .n{fill:var(--accent)}#compass .s,#compass .e,#compass .w{fill:#ffffff59}#compass .lbl{fill:#fff;font-size:13px;font-weight:800;text-anchor:middle}#compass .legend{font-size:11px;color:var(--muted);line-height:1.5;max-width:190px}#compass .legend b{color:var(--text)}.brand{text-decoration:none}.viewer-only{display:none}body.viewer .viewer-only{display:inline}body.viewer .planner-only,body.viewer .actions,body.viewer #hint,body.viewer #selection,body.viewer .lil-gui{display:none!important}.fullscreen-link{margin-left:auto;color:var(--text);font-size:13px;font-weight:600;text-decoration:none;opacity:.85}body:not(.embed) .fullscreen-link{display:none!important}body.embed .brand,body.embed #compass .legend{display:none}#loading{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-content:center;justify-items:center;gap:14px;background:var(--bg);color:var(--muted);font-weight:600}.spinner{width:34px;height:34px;border-radius:50%;border:3px solid rgba(255,255,255,.12);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#start-card{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;background:#00000059;padding:16px}#start-card .card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:28px 30px;max-width:420px;text-align:center}#start-card h1{margin:0 0 8px;font-size:24px}#start-card p{margin:0 0 20px;color:var(--muted);line-height:1.5}#start-card .row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}#start-card button{padding:10px 18px;font-size:15px}#start-card button.primary{background:var(--accent);border-color:transparent;color:#fff}@media(max-width:767px){body.viewer .modes button[data-mode=walk]{display:none}#topbar{gap:10px;padding:0 10px}#compass{top:60px;left:10px;padding:6px}#compass svg{width:56px;height:56px}#compass .legend{display:none}}#render-failed{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;background:var(--bg);padding:16px}#render-failed .card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:28px 30px;max-width:420px;text-align:center}#render-failed h1{margin:0 0 8px;font-size:22px}#render-failed p{margin:0 0 20px;color:var(--muted);line-height:1.5}#render-failed a.primary{display:inline-block;background:var(--accent);color:#fff;padding:10px 18px;border-radius:6px;font-weight:600;text-decoration:none}#render-failed.hidden{display:none!important}
