:root{--bg: #070707;--white: #ffffff;--paper: #ede4ce;--accent: #4a9eff;--text-dim: #3a3a3a;--text-ghost: #1a1a1a;--glass-bg: rgba(20, 20, 20, .7);--glass-border: rgba(255, 255, 255, .08);--error: #ff4a4a;--font-stack: "Instrument Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--white);font-family:var(--font-stack);font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}#viewer-root{position:fixed;inset:0;width:100%;height:100%;background:var(--bg)}.viewer-mount{position:relative;overflow:hidden;background:var(--bg);color:var(--white);font-family:var(--font-stack);min-height:240px;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}#viewer-canvas,.viewer-mount .viewer-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;background:var(--bg);opacity:0;transition:opacity .4s ease}#viewer-canvas.visible,.viewer-mount .viewer-canvas.visible{opacity:1}.viewer-mount .ollo-ui,#viewer-ui{position:absolute;inset:0;pointer-events:none;z-index:10}.viewer-mount .ollo-ui>*,#viewer-ui>*{pointer-events:auto}.ollo-ui input,.ollo-ui textarea{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.viewer-mount .ollo-ui>.ollo-loading,#viewer-ui>.ollo-loading{pointer-events:none}.viewer-mount .ollo-ui>.ollo-shutter,#viewer-ui>.ollo-shutter,.viewer-mount .ollo-ui>.ollo-save:not(.visible),#viewer-ui>.ollo-save:not(.visible),.viewer-mount .ollo-ui>.ollo-save-backdrop:not(.visible),#viewer-ui>.ollo-save-backdrop:not(.visible){pointer-events:none}.ollo-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;background:var(--bg);z-index:20;transition:opacity .32s ease;pointer-events:none}#ollo-boot-loading{position:fixed;z-index:40}.ollo-loading:before{content:"";position:absolute;inset:-20%;background:radial-gradient(60% 80% at 30% 20%,rgba(74,158,255,.08),transparent 70%),radial-gradient(50% 70% at 75% 80%,rgba(245,245,247,.05),transparent 70%);animation:ollo-breathe 9s ease-in-out infinite alternate;pointer-events:none}@keyframes ollo-breathe{0%{transform:translate3d(-2%,-1%,0) scale(1);opacity:.7}to{transform:translate3d(2%,1%,0) scale(1.08);opacity:1}}.ollo-loading.hidden{opacity:0}.ollo-loading-logo-wrap{position:relative;z-index:1;width:120px;animation:ollo-load-pulse 2s ease-in-out infinite}.ollo-loading-logo{width:100%;height:auto;fill:#f5f5f7f2;display:block}@keyframes ollo-load-pulse{0%,to{opacity:.45}50%{opacity:1}}.ollo-loading-bar-track{position:relative;z-index:1;width:min(300px,64vw);height:4px;border-radius:999px;background:#ffffff1a;overflow:hidden}.ollo-loading-bar-track:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transform:translate(-100%);animation:ollo-load-sweep 1.8s ease-in-out infinite}@keyframes ollo-load-sweep{to{transform:translate(100%)}}.ollo-loading-note{font:400 13px/1.4 system-ui,-apple-system,sans-serif;letter-spacing:.02em;color:#f5f5f78c;text-align:center;max-width:min(300px,64vw);margin-top:-12px;animation:ollo-note-in .4s ease both}@keyframes ollo-note-in{0%{opacity:0}to{opacity:1}}.ollo-loading-bar-fill{position:absolute;inset:0;border-radius:inherit;background:#f5f5f7;transform:translate(-100%)}@media(prefers-reduced-motion:reduce){.ollo-loading:before,.ollo-loading-logo-wrap,.ollo-loading-bar-track:after{animation:none}.ollo-loading-logo-wrap{opacity:.8}}.ollo-btn{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--white);cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background .2s ease,transform .15s ease,border-color .2s ease;display:flex;align-items:center;justify-content:center;font-family:inherit}.ollo-btn:hover{background:#323232d9;transform:scale(1.06);border-color:#ffffff26}.ollo-btn:active{transform:scale(.94);transition-duration:.08s}.ollo-btn.active{background:#4a9eff33;border-color:#4a9eff66}.ollo-toolbar{position:absolute;top:16px;right:16px;display:flex;gap:8px;z-index:15}.ollo-toolbar-btn{width:36px;height:36px;border-radius:8px;padding:0}.ollo-toolbar-btn[disabled]{opacity:.35;cursor:default;pointer-events:none}.ollo-toolbar-btn[disabled]:hover{background:var(--glass-bg);border-color:var(--glass-border);transform:none}.ollo-mode-toggle{position:absolute;bottom:20px;left:50%;transform:translate(-50%);display:flex;gap:2px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:20px;padding:3px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:15}.ollo-mode-option{background:none;border:none;color:#ffffff80;font-family:inherit;font-weight:300;font-size:11px;letter-spacing:.12em;padding:6px 16px;border-radius:16px;cursor:pointer;transition:color .2s ease,background .2s ease;text-transform:uppercase}.ollo-mode-option:hover{color:var(--white)}.ollo-mode-option.active{background:#4a9eff26;color:var(--white)}.ollo-close-btn{position:absolute;top:16px;z-index:15;display:none}.viewer-mount:fullscreen .ollo-close-btn{display:flex}.viewer-mount:-webkit-full-screen .ollo-close-btn{display:flex}.viewer-mount.ollo-fs-pseudo .ollo-close-btn{display:flex}.viewer-mount.ollo-ipados:fullscreen .ollo-info-panel{top:24px;left:88px}.viewer-mount.ollo-ipados:-webkit-full-screen .ollo-info-panel{top:24px;left:88px}.viewer-mount.ollo-ipados:fullscreen .ollo-toolbar{top:24px}.viewer-mount.ollo-ipados:-webkit-full-screen .ollo-toolbar{top:24px}.viewer-mount.ollo-ipados.ollo-host-fs .ollo-info-panel{top:24px;left:88px}.viewer-mount.ollo-ipados.ollo-host-fs .ollo-toolbar{top:24px}.ollo-info-panel{position:absolute;top:16px;left:16px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:8px;padding:8px 14px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);cursor:pointer;z-index:15;overflow:hidden;transition:background .2s ease,transform .15s ease,border-color .2s ease}.ollo-info-panel:hover{background:#323232d9;transform:scale(1.03);border-color:#ffffff26}.ollo-info-title{color:var(--white);font-size:13px;font-weight:400;line-height:18px;letter-spacing:.06em;white-space:nowrap}.ollo-info-details{display:none;margin-top:8px;opacity:0;transition:opacity .2s ease}.ollo-info-panel.expanded .ollo-info-details{display:block;opacity:1}.ollo-info-subtitle{color:#fff9;font-size:11px;font-weight:300;letter-spacing:.08em;margin-bottom:6px}.ollo-info-description{color:#ffffff80;font-size:11px;font-weight:300;line-height:1.5;margin-bottom:6px}.ollo-info-attribution{color:#ffffff4d;font-size:10px;font-weight:300;letter-spacing:.1em}.ollo-branding{position:absolute;bottom:14px;left:16px;display:flex;flex-direction:column;align-items:center;gap:3px;text-decoration:none;z-index:15;opacity:.35;transition:opacity .2s ease}.ollo-branding:hover{opacity:.7}.ollo-branding-label{font-size:8px;font-weight:300;letter-spacing:.14em;color:#fff9;text-transform:uppercase}.ollo-branding-logo{height:24px;filter:invert(1);opacity:.8}.ollo-toast{position:absolute;top:calc(100% + 8px);right:0;background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--white);font-size:11px;font-weight:300;letter-spacing:.1em;padding:4px 12px;border-radius:6px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);white-space:normal;max-width:220px;text-align:right;animation:ollo-fade-in .15s ease}@keyframes ollo-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ollo-shutter{position:absolute;inset:0;background:var(--white);opacity:0;pointer-events:none;z-index:16;animation:ollo-shutter .14s ease-out}@keyframes ollo-shutter{0%{opacity:.75}to{opacity:0}}.ollo-save-backdrop{position:absolute;inset:0;background:#07070773;opacity:0;z-index:16;transition:opacity .3s ease}.ollo-save-backdrop.visible{opacity:1}.ollo-save{position:absolute;bottom:20px;left:50%;display:flex;flex-direction:column;align-items:center;gap:10px;padding:12px 12px 10px;border-radius:16px;background:var(--glass-bg);border:1px solid var(--glass-border);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--white);z-index:17;max-width:86%;opacity:0;transform:translate(-50%) translateY(8px);transition:opacity .3s ease,transform .3s cubic-bezier(.2,.8,.2,1);pointer-events:none}.ollo-save.visible{opacity:1;transform:translate(-50%) translateY(0);pointer-events:auto}.ollo-save-img{display:block;max-width:100%;max-height:46vh;border-radius:8px;-webkit-touch-callout:default;-webkit-user-select:auto;user-select:auto}.ollo-save-label{margin:0;font-size:11px;font-weight:300;letter-spacing:.1em;text-align:center;color:#ffffffd9}.ollo-save-close{align-self:stretch;min-height:40px;padding:0 18px;border-radius:10px;font-size:11px;font-weight:300;letter-spacing:.1em;text-transform:uppercase}.ollo-tour-play{position:absolute;bottom:22px;left:50%;transform:translate(-50%);width:48px;height:48px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--white);cursor:pointer;pointer-events:auto;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background .2s ease,transform .15s ease,border-color .2s ease;touch-action:manipulation;z-index:15}.ollo-tour-play svg{width:18px;height:18px;display:block}.ollo-tour-play svg.play{margin-left:2px}.ollo-tour-play:hover{background:#323232d9;border-color:#ffffff26;transform:translate(-50%) scale(1.06)}.ollo-tour-play:active{transform:translate(-50%) scale(.94);transition-duration:.08s}.ollo-tour-play.playing{background:#4a9eff33;border-color:#4a9eff66}.ollo-hints{position:absolute;bottom:20px;left:50%;display:flex;align-items:center;gap:16px;padding:10px 14px 10px 12px;border-radius:26px;background:var(--glass-bg);border:1px solid var(--glass-border);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--white);z-index:16;user-select:none;white-space:nowrap;opacity:0;transform:translate(-50%) translateY(8px);transition:opacity .45s ease,transform .45s cubic-bezier(.2,.8,.2,1);pointer-events:none}.ollo-hints.visible{opacity:1;transform:translate(-50%) translateY(0);pointer-events:auto}.ollo-hints--above-tour{bottom:84px}.ollo-hints-row{display:flex;align-items:center;gap:10px;opacity:0;transform:translateY(6px);transition:opacity .5s ease,transform .5s cubic-bezier(.2,.8,.2,1)}.ollo-hints.visible .ollo-hints-row{opacity:1;transform:none;transition-delay:.1s}.ollo-hints.visible .ollo-hints-row+.ollo-hints-sep+.ollo-hints-row{transition-delay:.3s}.ollo-hints-glyph{display:flex;align-items:center;justify-content:center;width:32px;height:32px;flex:0 0 32px;border-radius:9px;border:1px solid rgba(255,255,255,.14);background:#ffffff0f;color:#ffffffeb}.ollo-hints-glyph svg{width:20px;height:20px;display:block;overflow:visible}.ollo-hints-label{font-size:11px;font-weight:300;letter-spacing:.12em;text-transform:uppercase;color:#fffc}.ollo-hints-glyph g[class^=ch-anim]{transform-box:view-box}@keyframes ch-slide{0%,to{transform:translate(-2.2px)}50%{transform:translate(2.2px)}}.ch-anim-slide{animation:ch-slide 2s ease-in-out infinite}@keyframes ch-scroll{0%,to{transform:translateY(-1.6px)}50%{transform:translateY(1.6px)}}.ch-anim-scroll{animation:ch-scroll 1.7s ease-in-out infinite}@keyframes ch-spin{to{transform:rotate(360deg)}}.ch-anim-orbit{transform-origin:12px 12px;animation:ch-spin 2.8s linear infinite}@keyframes ch-rock{0%,to{transform:rotate(-16deg)}50%{transform:rotate(16deg)}}.ch-anim-rock{transform-origin:12px 12px;animation:ch-rock 2.2s ease-in-out infinite}@keyframes ch-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.14)}}.ch-anim-pulse{transform-origin:10.5px 10.5px;animation:ch-pulse 1.9s ease-in-out infinite}@keyframes ch-pinch-a{0%,to{transform:translate(0)}50%{transform:translate(-1.4px,-1.4px)}}.ch-anim-pinch-a{animation:ch-pinch-a 1.9s ease-in-out infinite}@keyframes ch-pinch-b{0%,to{transform:translate(0)}50%{transform:translate(1.4px,1.4px)}}.ch-anim-pinch-b{animation:ch-pinch-b 1.9s ease-in-out infinite}.ollo-hints-row.done .ollo-hints-glyph{background:#4a9eff29;border-color:#4a9eff73;color:var(--white)}.ollo-hints-row.done .ollo-hints-label{color:#fffffff2}@keyframes ch-pop{0%{transform:scale(.35);opacity:0}60%{transform:scale(1.18);opacity:1}to{transform:scale(1);opacity:1}}.ollo-hints-row.done .ollo-hints-glyph svg{animation:ch-pop .35s cubic-bezier(.2,.8,.2,1)}.ollo-hints.complete{border-color:#4a9eff66}.ollo-hints-sep{width:1px;height:16px;background:#ffffff24}.ollo-hints-close{display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;margin-left:2px;border:none;border-radius:50%;background:none;color:#ffffff59;cursor:pointer;transition:color .2s ease,background .2s ease}.ollo-hints-close svg{width:12px;height:12px;display:block}.ollo-hints-close:hover{color:var(--white);background:#ffffff1a}@media(max-width:560px){.ollo-hints,.ollo-hints--above-tour{bottom:156px;flex-direction:column;align-items:flex-start;gap:8px;padding:12px 36px 12px 14px;border-radius:14px}.ollo-hints-sep{width:100%;height:1px}.ollo-hints-close{position:absolute;top:6px;right:6px}.ollo-save{bottom:156px;max-width:calc(100% - 32px)}.ollo-save-img{max-height:38vh}}@media(max-height:560px){.ollo-save{bottom:96px;max-width:calc(100% - 32px)}.ollo-save-img{max-height:30vh}}@media(prefers-reduced-motion:reduce){.ollo-hints{transition:opacity .2s ease;transform:translate(-50%)}.ollo-hints.visible{transform:translate(-50%)}.ollo-hints-row{transition:opacity .2s ease;transform:none}.ollo-hints-glyph g[class^=ch-anim]{animation:none}.ollo-hints-row.done .ollo-hints-glyph svg{animation:none}.ollo-save{transition:opacity .2s ease;transform:translate(-50%)}.ollo-save.visible{transform:translate(-50%)}}.fps-overlay{position:absolute;bottom:16px;right:16px;display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:12px;background:var(--glass-bg);border:1px solid var(--glass-border);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--white);font-family:var(--font-stack);font-size:12px;font-variant-numeric:tabular-nums;letter-spacing:.02em;user-select:none;z-index:20}.fps-overlay .num{font-weight:500}.fps-overlay .unit{font-size:10px;opacity:.7;margin-left:2px}.fps-overlay .sep{opacity:.3}.fps-overlay.good .fps .num{color:#6fffa8}.fps-overlay.ok .fps .num{color:var(--paper)}.fps-overlay.bad .fps .num{color:var(--error)}.quality-dropdown{position:absolute;bottom:16px;right:180px;display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:12px;background:var(--glass-bg);border:1px solid var(--glass-border);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--white);font-family:var(--font-stack);font-size:12px;user-select:none;z-index:20}.quality-dropdown .label{opacity:.7}.quality-dropdown select{background:transparent;color:var(--white);border:1px solid var(--glass-border);border-radius:6px;padding:2px 6px;font-family:inherit;font-size:12px;cursor:pointer;outline:none}.quality-dropdown select:focus{border-color:var(--accent)}.quality-dropdown select option{background:#1a1a1a;color:var(--white)}.ollo-diag{position:absolute;inset:8px;z-index:21;display:flex;flex-direction:column;gap:6px;background:#060607f0;border:1px solid rgba(255,255,255,.16);border-radius:10px;padding:8px;pointer-events:auto}.ollo-diag-bar{display:flex;gap:6px;flex:0 0 auto}.ollo-diag-btn{font:600 11px/1 system-ui,sans-serif;letter-spacing:.06em;padding:8px 12px;min-height:32px}.ollo-diag-body{flex:1 1 auto;margin:0;overflow:auto;-webkit-overflow-scrolling:touch;font:400 10px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;color:#e8e8ea;white-space:pre;-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}
