: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}#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}#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}.viewer-mount .ollo-ui>.ollo-loading,#viewer-ui>.ollo-loading{pointer-events:none}.ollo-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--bg);z-index:20;transition:opacity .5s ease;pointer-events:none}.ollo-loading:before{content:"";position:absolute;inset:-20%;background:radial-gradient(60% 80% at 30% 20%,rgba(74,158,255,.1),transparent 70%),radial-gradient(50% 70% at 75% 80%,rgba(237,228,206,.06),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-poster{position:absolute;inset:-6%;background-size:cover;background-position:center;filter:blur(26px) saturate(1.15) brightness(.5);transform:scale(1.06);animation:ollo-kenburns 22s ease-in-out infinite alternate;pointer-events:none}@keyframes ollo-kenburns{0%{transform:scale(1.06) translate3d(-1.5%,-1%,0)}to{transform:scale(1.16) translate3d(1.5%,1%,0)}}.ollo-loading.revealing{background:transparent;transition:background 1.5s ease}.ollo-loading.revealing:before,.ollo-loading.revealing .ollo-loading-poster{opacity:0;transition:opacity 1.2s ease}.ollo-loading.hidden{opacity:0}@media(prefers-reduced-motion:reduce){.ollo-loading:before,.ollo-loading-poster{animation:none}}.ollo-loading-logo-wrap,.ollo-loading-bar-track{position:relative;z-index:1}.ollo-loading-logo-wrap{width:140px;display:flex;align-items:center;justify-content:center}.ollo-loading-logo{width:100%;height:auto;fill:#ffffffeb;display:block;overflow:visible}.ollo-loading-logo-wrap--pulse{animation:ollo-pulse 1.6s ease-in-out infinite}@keyframes ollo-pulse{0%,to{opacity:.4}50%{opacity:1}}.ollo-loading-logo-wrap--bounce .ollo-loading-logo path{animation:ollo-bounce 1.6s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.ollo-loading-logo-wrap--bounce .ollo-loading-logo path[data-letter="0"]{animation-delay:0s}.ollo-loading-logo-wrap--bounce .ollo-loading-logo path[data-letter="1"]{animation-delay:.15s}.ollo-loading-logo-wrap--bounce .ollo-loading-logo path[data-letter="2"]{animation-delay:.3s}.ollo-loading-logo-wrap--bounce .ollo-loading-logo path[data-letter="3"]{animation-delay:.45s}@keyframes ollo-bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-22%)}}.ollo-loading-bar-track{width:200px;height:12px;background:#ffffff14;border-radius:3px;overflow:hidden}.ollo-loading-bar-fill{width:0%;height:100%;background:var(--paper)}.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-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-info-panel{position:absolute;top:16px;left:16px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;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;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:nowrap;animation:ollo-fade-in .15s ease}@keyframes ollo-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.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}}@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}}.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)}
