:root{color-scheme:dark;--scene-background: #101416;--panel: rgba(12, 17, 19, .76);--panel-strong: rgba(8, 12, 14, .9);--line: rgba(255, 255, 255, .14);--text: #f4f0e8;--muted: #aeb7b7;--soft: rgba(255, 255, 255, .06);--accent: #6fd0b6;--accent-strong: #9df5d8;--danger: #ff8f78;--viewer-filter: brightness(1) contrast(1) saturate(1);--reveal-duration: 1.6s;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app-shell{width:100%;height:100%;margin:0}body{overflow:hidden;background:var(--scene-background);color:var(--text)}button,input,select,textarea{font:inherit}button{border:1px solid var(--line);border-radius:6px;background:#ffffff12;color:var(--text);cursor:pointer;transition:background .14s ease,border-color .14s ease,transform .14s ease}button:focus-visible,button.active{border-color:#6fd0b6b8;background:#6fd0b62b;outline:none}@media(hover:hover)and (pointer:fine){button:hover{border-color:#6fd0b6b8;background:#6fd0b62b;outline:none}}button:active{transform:translateY(1px)}#viewer-canvas{position:relative;z-index:1;display:block;width:100%;height:100%;filter:var(--viewer-filter);touch-action:none;opacity:1;transform:scale(1)}.scene-skydome{position:fixed;inset:0;z-index:0;background:linear-gradient(180deg,#1d3340,#101416);pointer-events:none}.scene-skydome[hidden]{display:none}body.viewer-loading #viewer-canvas{opacity:0;filter:var(--viewer-filter) blur(10px);transform:scale(1.035)}body.viewer-revealing #viewer-canvas{animation:luma-scene-reveal var(--reveal-duration) cubic-bezier(.16,1,.3,1) both}@keyframes luma-scene-reveal{0%{opacity:0;filter:var(--viewer-filter) blur(10px);transform:scale(1.035)}to{opacity:1;filter:var(--viewer-filter) blur(0);transform:scale(1)}}.loading-screen{position:fixed;inset:0;z-index:30;display:grid;place-items:center;align-content:center;gap:12px;padding:24px;background:radial-gradient(circle at 50% 44%,rgba(255,255,255,.08),transparent 34%),color-mix(in srgb,var(--scene-background) 88%,black);color:var(--text);text-align:center;transition:opacity .52s ease,visibility .52s ease}.loading-screen[hidden]{display:none}#loading-logo{width:min(360px,72vw);max-height:none;object-fit:contain;margin-bottom:2px}.loading-brand{color:var(--text);font-size:.82rem;font-weight:700}.loading-brand span{color:var(--accent-strong)}#loading-logo,.loading-screen .eyebrow,.loading-screen h1,.loading-screen p,.loading-bar-track{position:relative;z-index:1}.loading-screen h1,.loading-screen p{margin:0}.loading-screen h1{max-width:min(720px,90vw);font-size:clamp(1.55rem,3.6vw,3.2rem);font-weight:680;line-height:1.04}#loading-message{color:var(--muted);font-size:.94rem}.loading-bar-track{width:min(340px,72vw);height:5px;overflow:hidden;border-radius:999px;background:#ffffff21}#loading-bar{display:block;width:8%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent-strong));box-shadow:0 0 12px #6fd0b659;transition:width .18s ease}.scene-label{position:fixed;top:22px;left:22px;z-index:5;max-width:min(460px,calc(100vw - 470px));pointer-events:none;text-shadow:0 1px 20px rgba(0,0,0,.55)}.scene-label h1,.scene-label p{margin:0}.scene-label h1{margin-top:2px;color:var(--text);font-size:clamp(1.55rem,2.7vw,2.7rem);font-weight:680;line-height:1.05}#scene-description{margin-top:8px;max-width:38rem;color:#f4f0e8c7;font-size:.94rem;line-height:1.45}.scene-type-label{display:inline-flex;margin-top:10px;border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:4px 9px;background:#0000002e;color:#f4f0e8c7;font-size:.72rem;font-weight:650}.topbar{position:fixed;top:18px;right:18px;z-index:5;display:flex;align-items:center;justify-content:flex-end;gap:8px}.eyebrow,.author-panel h2,.setup-section h3,.status-panel p{margin:0}.eyebrow{color:var(--accent-strong);font-size:.7rem;font-weight:700;letter-spacing:0;text-transform:uppercase}.topbar button{min-height:38px;padding:0 12px;background:var(--panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);font-size:.84rem;font-weight:650}.menu-toggle,.fullscreen-toggle{display:grid;width:38px;padding:0;place-items:center}.fullscreen-toggle span{display:block;font-size:1.24rem;line-height:1}.menu-toggle span,.menu-toggle span:before,.menu-toggle span:after{display:block;width:16px;height:2px;border-radius:99px;background:currentColor;content:""}.menu-toggle span{position:relative}.menu-toggle span:before,.menu-toggle span:after{position:absolute;left:0}.menu-toggle span:before{top:-5px}.menu-toggle span:after{top:5px}.viewer-menu{position:absolute;top:calc(100% + 8px);right:0;display:grid;min-width:158px;gap:4px;border:1px solid rgba(255,235,210,.12);border-radius:9px;padding:6px;background:#14110fd6;box-shadow:0 16px 42px #00000052;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.viewer-menu[hidden]{display:none}.viewer-menu button{width:100%;justify-content:flex-start;text-align:left}#toggle-author{display:none}body.author-access #toggle-author{display:grid}body.client-preview #toggle-author,body.client-preview #status-panel{display:none}body:not(.author-access) #status-panel{display:none}body.client-preview .topbar{top:auto;right:16px;bottom:16px}.status-panel,.author-panel{position:fixed;z-index:6;border:0;background:var(--panel);box-shadow:-24px 0 70px #0000004d;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.status-panel{left:16px;bottom:16px;max-width:min(520px,calc(100vw - 32px));padding:12px 14px;color:var(--muted);font-size:.9rem}.author-panel{top:0;right:0;bottom:0;width:min(420px,100vw);max-height:100vh;overflow:auto;border-left:1px solid var(--line);padding:20px}.author-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:16px;border-bottom:1px solid var(--line)}.header-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.author-header h2{margin-top:2px;font-size:1.35rem;line-height:1.1}.author-header button,.bound-grid button,.button-grid button{min-height:36px;padding:0 12px}.setup-section{padding:16px 0;border-bottom:1px solid rgba(255,255,255,.09)}.setup-section h3{margin-bottom:10px;color:#f4f0e8e6;font-size:.86rem;font-weight:750}.field{display:grid;gap:7px;margin-top:10px}.field span,.slider-stack span,.pivot-grid span{color:var(--muted);font-size:.76rem}.field input,.field select,.field textarea,.pivot-grid input{width:100%;border:1px solid var(--line);border-radius:6px;background:#ffffff14;color:var(--text);outline:none}.field input,.field select,.pivot-grid input{min-height:36px;padding:0 10px}.field textarea{min-height:78px;resize:vertical;padding:9px 10px;line-height:1.45}.field input:focus,.field select:focus,.field textarea:focus,.pivot-grid input:focus{border-color:#6fd0b6a6}.color-row{display:grid;grid-template-columns:48px 1fr;gap:8px}.color-row input[type=color]{min-height:36px;padding:3px}.instruction-note{margin:0;border:1px solid var(--line);border-radius:8px;padding:10px;background:var(--soft);color:var(--muted);font-size:.82rem;line-height:1.45}.instruction-note code{color:var(--accent-strong);font-size:.78rem;word-break:break-word}.button-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}#client-preview{grid-column:1 / -1}.current-file,.save-result{margin:8px 0 0;overflow:hidden;color:var(--muted);font-size:.78rem;line-height:1.4}.current-file{text-overflow:ellipsis;white-space:nowrap}.author-toggle{display:flex;align-items:center;gap:9px;margin:10px 0 0;color:var(--muted);font-size:.9rem}.author-toggle input{width:18px;height:18px;accent-color:var(--accent)}.grid-opacity-control{margin-top:10px}.grid-opacity-control>span{display:flex;align-items:center;justify-content:space-between;gap:10px}.grid-opacity-control output{min-width:42px;border:1px solid rgba(255,255,255,.1);border-radius:5px;padding:3px 5px;background:#ffffff0e;color:#f4f0e8db;font-size:.7rem;font-variant-numeric:tabular-nums;text-align:right}.grid-opacity-control input{width:100%;accent-color:var(--accent)}.toggle-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.toggle-pill{min-height:34px;padding:0 11px;border-color:#ffffff1f;background:#ffffff0f;color:var(--muted);font-size:.78rem;font-weight:700}.toggle-pill[aria-pressed=true],.toggle-pill.active{border-color:#6fd0b6b8;background:#6fd0b62e;color:var(--accent-strong)}.space-options[hidden]{display:none}.height-control{display:grid;grid-template-columns:minmax(0,1fr) 96px;gap:10px;align-items:end}.height-control-slider input{width:100%}.height-control-value input{text-align:center}.audio-picker{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:7px;margin-top:10px}.audio-picker div{min-width:0}.audio-picker span{color:var(--muted);font-size:.76rem}.audio-picker p{margin:3px 0 0;overflow:hidden;color:var(--text);font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.audio-picker button{min-height:32px;padding:0 9px;font-size:.76rem}button:disabled,input:disabled{cursor:not-allowed;opacity:.45}.camera-readout{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px}.camera-readout div{border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--soft)}.camera-readout dt{color:var(--muted);font-size:.72rem}.camera-readout dd{margin:4px 0 0;font-variant-numeric:tabular-nums}.orientation-guides{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 12px}.yaw-guide,.pitch-guide{border:1px solid var(--line);border-radius:8px;padding:10px;background:var(--soft)}.yaw-guide p,.pitch-guide p{margin:0 0 8px;color:var(--muted);font-size:.76rem;line-height:1.35}.yaw-dial{position:relative;width:118px;height:118px;margin:0 auto;border:1px solid rgba(111,208,182,.42);border-radius:999px;background:linear-gradient(#6fd0b629,#6fd0b60a),radial-gradient(circle,rgba(255,255,255,.14) 0 3px,transparent 4px)}.yaw-needle{position:absolute;left:50%;top:50%;width:3px;height:43px;border-radius:999px;background:var(--accent-strong);transform:translate(-50%,-100%) rotate(0);transform-origin:50% 100%;box-shadow:0 0 16px #6fd0b68c}.dial-label{position:absolute;color:var(--muted);font-size:.62rem}.dial-front{top:6px;left:50%;transform:translate(-50%)}.dial-right{top:50%;right:5px;transform:translateY(-50%)}.dial-back{bottom:6px;left:50%;transform:translate(-50%)}.dial-left{top:50%;left:7px;transform:translateY(-50%)}.pitch-scale{display:grid;grid-template-rows:auto 118px auto;justify-items:center;gap:6px;color:var(--muted);font-size:.68rem}.pitch-track{position:relative;width:28px;height:118px;border:1px solid rgba(111,208,182,.42);border-radius:999px;background:linear-gradient(to bottom,#6fd0b647,#ffffff0f,#ff8f782e)}#pitch-marker{position:absolute;left:50%;top:50%;width:38px;height:3px;border-radius:999px;background:var(--accent-strong);transform:translate(-50%,-50%);box-shadow:0 0 14px #6fd0b68c}.slider-stack{display:grid;gap:12px;margin-top:12px}.slider-stack label{display:grid;grid-template-columns:52px 1fr;align-items:center;gap:10px}.render-slider-stack label{grid-template-columns:76px 48px 1fr}.render-slider-stack output{justify-self:end;min-width:42px;border:1px solid rgba(255,255,255,.1);border-radius:5px;padding:3px 5px;background:#ffffff0e;color:#f4f0e8db;font-size:.7rem;font-variant-numeric:tabular-nums;text-align:right}.slider-stack input[type=range]{width:100%;accent-color:var(--accent)}.pivot-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.pivot-grid label{display:grid;gap:6px}.bound-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.fatal-error{display:grid;min-height:100vh;place-items:center;padding:24px;color:var(--danger)}.exit-preview{position:fixed;right:16px;bottom:16px;z-index:8;min-height:38px;padding:0 14px;background:var(--panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.audio-dock{position:fixed;left:16px;bottom:16px;z-index:8;display:flex;flex-wrap:wrap;gap:8px}.audio-dock[hidden]{display:none}.audio-dock button{min-height:38px;padding:0 13px;background:var(--panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.walk-joystick{position:fixed;left:50%;right:auto;bottom:76px;z-index:8;width:126px;height:126px;border:1px solid rgba(255,255,255,.16);border-radius:999px;background:radial-gradient(circle,rgba(111,208,182,.2),rgba(111,208,182,.04) 58%,transparent 60%),#060a0b7a;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);opacity:.18;touch-action:none;transform:translate(-50%);transition:opacity .42s ease}.walk-joystick.joystick-active{opacity:.58}.walk-joystick[hidden],body.navigation-object .walk-joystick{display:none}#walk-joystick-knob{position:absolute;left:50%;top:50%;width:48px;height:48px;border:1px solid rgba(157,245,216,.6);border-radius:999px;background:#9df5d82e;box-shadow:0 12px 30px #00000042;transform:translate(-50%,-50%)}.client-brand{display:none}body:not(.author-access) .client-brand,body.client-preview .client-brand{position:fixed;top:22px;left:22px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:5px;color:#f7eee4;pointer-events:auto;text-decoration:none;text-shadow:0 2px 18px rgba(0,0,0,.55);opacity:.72;transition:opacity .42s ease}body:not(.author-access) .client-brand:focus-visible,body.client-preview .client-brand:focus-visible{outline:2px solid #e88a4b;outline-offset:5px}body.viewer-loading .client-brand{display:none}body:not(.author-access) .client-brand img,body.client-preview .client-brand img{display:block;width:116px;height:auto;max-height:none;filter:none;object-fit:contain}body:not(.author-access) .client-brand p,body.client-preview .client-brand p{margin:0;color:#f7eee48a;font-size:.76rem;font-weight:700}body:not(.author-access) .client-brand p span,body.client-preview .client-brand p span{color:#e88a4b}body:not(.author-access) .scene-label,body.client-preview .scene-label{inset:auto auto 24px 28px;display:flex;max-width:min(560px,calc(100vw - 56px));flex-direction:column;gap:0;opacity:.72;transition:opacity .42s ease}body:not(.author-access) .scene-label .eyebrow,body.client-preview .scene-label .eyebrow,body:not(.author-access) .scene-type-label,body.client-preview .scene-type-label{display:none}body:not(.author-access) .scene-project,body.client-preview .scene-project{order:-1;margin:0 0 7px;color:#f7eee494;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.66rem;font-weight:500}body:not(.author-access) .scene-label h1,body.client-preview .scene-label h1{margin:0;color:#f7eee4;font-size:2.6rem;font-weight:320;line-height:1}body:not(.author-access) .scene-splat-size,body.client-preview .scene-splat-size{margin:9px 0 0;color:#f7eee494;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.66rem}body:not(.author-access) #scene-description,body.client-preview #scene-description{margin-top:10px;color:#f7eee4c2;font-size:.86rem;line-height:1.45}body:not(.author-access) .topbar,body.client-preview .topbar{top:20px;right:24px;bottom:auto;gap:0;border:1px solid rgba(255,235,210,.12);border-radius:9px;padding:4px;background:#14110fb8;box-shadow:0 10px 28px #0003;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);opacity:.78;transition:opacity .42s ease}body:not(.author-access) .topbar button,body.client-preview .topbar button{display:inline-flex;align-items:center;min-height:34px;border:0;border-radius:6px;padding:0 11px;background:transparent;color:#f7eee4cc;font-size:.76rem}body:not(.author-access) .topbar .menu-toggle,body.client-preview .topbar .menu-toggle,body:not(.author-access) .topbar .fullscreen-toggle,body.client-preview .topbar .fullscreen-toggle{width:34px;justify-content:center;padding:0}body:not(.author-access) .viewer-menu,body.client-preview .viewer-menu{min-width:150px}body:not(.author-access) .topbar button:focus-visible,body.client-preview .topbar button:focus-visible{border-color:transparent;background:#e88a4be0;color:#15100d}body:not(.author-access) .topbar button.active,body.client-preview .topbar button.active{border-color:transparent;background:#e88a4be0;color:#15100d}@media(hover:hover)and (pointer:fine){body:not(.author-access) .topbar button:hover,body.client-preview .topbar button:hover{border-color:transparent;background:#e88a4be0;color:#15100d}}body.author-access:not(.client-preview) #capture-screenshot{display:none}#client-info-toggle{display:inline-flex}body:not(.author-access) .audio-dock,body.client-preview .audio-dock{right:24px;bottom:24px;left:auto;opacity:.78;transition:opacity .42s ease}body:not(.author-access).auto-rotating .client-brand,body.client-preview.auto-rotating .client-brand,body:not(.author-access).auto-rotating .scene-label,body.client-preview.auto-rotating .scene-label,body:not(.author-access).auto-rotating .topbar,body.client-preview.auto-rotating .topbar,body:not(.author-access).auto-rotating .audio-dock,body.client-preview.auto-rotating .audio-dock{opacity:var(--auto-rotate-overlay-opacity, .28)}body:not(.author-access) .audio-dock button,body.client-preview .audio-dock button{border-color:#ffebd21f;background:#14110fb8;color:#f7eee4db}body:not(.author-access) .audio-dock button.active,body.client-preview .audio-dock button.active{border-color:transparent;background:#e88a4be0;color:#15100d}@media(hover:hover)and (pointer:fine){body:not(.author-access) .audio-dock button:hover,body.client-preview .audio-dock button:hover{border-color:transparent;background:#e88a4be0;color:#15100d}}@media(max-width:720px){.topbar{top:12px;right:12px;left:12px;justify-content:flex-end}.topbar button{min-height:36px;padding:0 9px;font-size:.74rem}.status-panel{left:12px;right:12px;bottom:12px}.author-panel{top:0;right:0;left:auto;width:min(420px,100vw);max-width:100vw}.orientation-guides{grid-template-columns:1fr}.scene-label{top:64px;left:12px;right:12px;max-width:none}body.author-access:not(.client-preview) .scene-label{display:none}.exit-preview{right:12px;bottom:12px}.audio-dock{left:12px;right:12px;bottom:12px}.walk-joystick{left:50%;right:auto;bottom:72px;width:112px;height:112px;transform:translate(-50%)}#walk-joystick-knob{width:42px;height:42px}body.client-preview .topbar{right:12px;bottom:12px}body:not(.author-access) .client-brand,body.client-preview .client-brand{top:16px;left:18px}body:not(.author-access) .client-brand img,body.client-preview .client-brand img{width:116px;max-height:none}body:not(.author-access) .scene-label,body.client-preview .scene-label{right:18px;bottom:20px;left:18px;max-width:none}body:not(.author-access) .scene-label h1,body.client-preview .scene-label h1{font-size:2rem}body:not(.author-access) .topbar,body.client-preview .topbar{inset:14px 14px auto auto}body:not(.author-access) #client-info-toggle,body.client-preview #client-info-toggle{display:inline-flex;align-items:center}body:not(.author-access) #scene-description,body.client-preview #scene-description{display:none}body:not(.author-access).client-info-open .scene-label,body.client-preview.client-info-open .scene-label{right:16px;bottom:16px;left:16px;z-index:9;max-height:min(66vh,360px);overflow-y:auto;border:1px solid rgba(255,235,210,.14);border-radius:8px;padding:16px;background:#14110fe6;box-shadow:0 16px 44px #0000005c;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}body:not(.author-access).client-info-open #scene-description,body.client-preview.client-info-open #scene-description{display:block}body:not(.author-access).client-info-open #client-info-toggle,body.client-preview.client-info-open #client-info-toggle{background:#e88a4be0;color:#15100d}body:not(.author-access) .audio-dock,body.client-preview .audio-dock{right:14px;bottom:14px;left:14px;justify-content:flex-end}body:not(.author-access).client-info-open .audio-dock,body.client-preview.client-info-open .audio-dock{display:none}}@media(hover:none)and (pointer:coarse){.walk-joystick{left:50%;right:auto;transform:translate(-50%)}}@media(min-width:721px)and (max-height:540px)and (orientation:landscape){body:not(.author-access) #client-info-toggle,body.client-preview #client-info-toggle{display:inline-flex;align-items:center}body:not(.author-access) #scene-description,body.client-preview #scene-description{display:none}body:not(.author-access).client-info-open .scene-label,body.client-preview.client-info-open .scene-label{right:24px;bottom:18px;left:24px;z-index:9;max-height:62vh;overflow-y:auto;border:1px solid rgba(255,235,210,.14);border-radius:8px;padding:14px 16px;background:#14110fe6;box-shadow:0 16px 44px #0000005c;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}body:not(.author-access).client-info-open #scene-description,body.client-preview.client-info-open #scene-description{display:block}}
