*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg-primary:#1a1a1a;--color-bg-secondary:#2a2a2a;--color-bg-tertiary:#3a3a3a;--color-text-primary:#fff;--color-text-secondary:#ccc;--color-text-muted:#fff9;--color-border:#ffffff1a;--color-border-hover:#fff3;--color-accent:#4a90e2;--color-accent-hover:#357abd;--color-accent-light:#3b82f64d;--color-error:#ff6b6b;--color-success:#51cf66;--overlay-light:#ffffff0d;--overlay-medium:#ffffff1a;--overlay-dark:#000000b3;--overlay-darker:#000000e6;--overlay-panel:#1a1a1af2;--shadow-sm:0 2px 8px #0000004d;--shadow-md:0 4px 12px #00000080;--shadow-lg:0 10px 40px #00000080;--z-canvas:0;--z-panels:10;--z-modals:15;--z-video:20;--z-loading:100;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:12px;--spacing-lg:16px;--spacing-xl:20px;--spacing-2xl:24px;--spacing-3xl:32px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--radius-full:50%;--transition-fast:.15s ease;--transition-base:.2s ease;--transition-slow:.3s ease;--font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;--font-size-xs:12px;--font-size-sm:14px;--font-size-base:16px;--font-size-lg:18px;--font-size-xl:20px;--font-size-2xl:24px;--font-size-3xl:28px}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;font-size:16px}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text-primary);background-color:var(--color-bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:100vw;height:100vh;overscroll-behavior:none;height:100dvh;line-height:1.5;position:fixed;overflow:hidden}#root{width:100vw;height:100vh;height:100dvh;position:relative;overflow:hidden}h1,h2,h3,h4,h5,h6{color:var(--color-text-primary);font-weight:600;line-height:1.2}p{margin:0;line-height:1.6}a{color:var(--color-accent);transition:color var(--transition-base);text-decoration:none}a:hover{color:var(--color-accent-hover)}button{font-family:inherit;font-size:inherit;line-height:inherit;cursor:pointer;color:inherit;transition:all var(--transition-base);background:0 0;border:none;padding:0}button:disabled{opacity:.5;cursor:not-allowed}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-secondary)}::-webkit-scrollbar-thumb{background:var(--color-bg-tertiary);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:#ffffff4d}::selection{background:var(--color-accent-light);color:var(--color-text-primary)}@media (max-width:1024px){:root{--font-size-base:15px}}@media (max-width:768px){:root{--font-size-base:14px;--spacing-lg:12px;--spacing-xl:16px;--spacing-2xl:20px}}@media (max-width:480px){:root{--font-size-base:13px;--spacing-md:10px;--spacing-lg:12px;--spacing-xl:14px}}.hotspot-tooltip{background:var(--overlay-darker);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid #ffffff1a;width:450px;max-width:90vw;animation:.3s ease-out tooltipFadeIn;overflow:hidden}@keyframes tooltipFadeIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.hotspot-tooltip-close{top:var(--spacing-sm);right:var(--spacing-sm);background:var(--overlay-dark);color:var(--color-text-primary);border-radius:var(--radius-full);cursor:pointer;z-index:1;width:32px;height:32px;transition:background var(--transition-base);border:none;justify-content:center;align-items:center;font-size:24px;line-height:1;display:flex;position:absolute}.hotspot-tooltip-close:hover{background:var(--overlay-darker)}.hotspot-tooltip-content{flex-direction:column;display:flex}.hotspot-tooltip-image{object-fit:contain;background:var(--color-bg-secondary);width:100%;height:220px;display:block}.hotspot-tooltip-text{padding:var(--spacing-xl)}.hotspot-tooltip-title{margin:0 0 var(--spacing-md)0;font-size:var(--font-size-xl);color:var(--color-text-primary);font-weight:600}.hotspot-tooltip-description{font-size:var(--font-size-base);color:var(--color-text-secondary);margin:0;line-height:1.6}@media (max-width:768px){.hotspot-tooltip{width:280px}.hotspot-tooltip-image{height:140px}.hotspot-tooltip-text{padding:var(--spacing-md)}.hotspot-tooltip-title{font-size:var(--font-size-base)}.hotspot-tooltip-description{font-size:var(--font-size-xs)}}.animation-panel{left:var(--spacing-xl);top:var(--spacing-xl);background:var(--overlay-panel);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);min-width:250px;max-width:300px;z-index:var(--z-panels);box-shadow:var(--shadow-md);transition:all var(--transition-slow);position:fixed}.animation-panel.collapsed{min-width:auto;padding:var(--spacing-md)}.animation-panel-header{cursor:pointer;-webkit-user-select:none;user-select:none;margin-bottom:var(--spacing-md);justify-content:space-between;align-items:center;display:flex}.animation-panel.collapsed .animation-panel-header{margin-bottom:0}.animation-panel-header h3{font-size:var(--font-size-lg);color:var(--color-text-primary);margin:0;font-weight:600}.animation-panel.collapsed .animation-panel-header h3{display:none}.toggle-button{color:var(--color-text-primary);font-size:var(--font-size-base);cursor:pointer;padding:var(--spacing-xs)var(--spacing-sm);transition:opacity var(--transition-base);background:0 0;border:none}.toggle-button:hover{opacity:.7}.animation-list{gap:var(--spacing-sm);flex-direction:column;display:flex}.animation-item{justify-content:space-between;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);background:var(--overlay-light);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);display:flex;overflow:hidden}.animation-item:hover{background:var(--overlay-medium);border-color:var(--color-border-hover)}.animation-item.active{background:var(--color-accent-light);border-color:var(--color-accent)}.animation-item.active:hover{background:#3b82f666}.animation-name{font-size:var(--font-size-sm);color:var(--color-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:500;overflow:hidden}.animation-duration{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap;flex-shrink:0}@media (max-width:768px){.animation-panel{display:none}}.animation-list-mobile{gap:var(--spacing-sm);flex-direction:column;display:flex}.animation-list-mobile .animation-item{justify-content:space-between;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);display:flex}.animation-list-mobile .animation-item:hover{background:var(--color-bg-tertiary)}.animation-list-mobile .animation-item.active{background:var(--color-accent-light);border-color:var(--color-accent)}.video-player{bottom:var(--spacing-xl);right:var(--spacing-xl);background:var(--overlay-darker);border-radius:var(--radius-lg);width:400px;box-shadow:var(--shadow-md);z-index:var(--z-video);transition:all var(--transition-slow);position:fixed;overflow:hidden}.video-player.secondary{bottom:auto;top:var(--spacing-xl);right:var(--spacing-xl)}.video-player.minimized{width:200px;height:60px}.video-player-header{padding:var(--spacing-sm);background:#00000080;justify-content:flex-end;display:flex}.minimize-button{color:var(--color-text-primary);font-size:var(--font-size-lg);cursor:pointer;padding:var(--spacing-xs)var(--spacing-sm);border-radius:var(--radius-sm);transition:background var(--transition-base);background:0 0;border:none}.minimize-button:hover{background:var(--overlay-medium)}.video-element{object-fit:cover;cursor:pointer;background:#000;width:100%;max-height:225px;display:block}.video-element::-webkit-media-controls{-webkit-appearance:none!important;display:none!important}.video-element::-webkit-media-controls-enclosure{display:none!important}.video-element::-webkit-media-controls-panel{display:none!important}.video-element::-webkit-media-controls-play-button{display:none!important}.video-element::-webkit-media-controls-start-playback-button{display:none!important}.video-element::-webkit-media-controls-overlay-play-button{display:none!important}.video-element::--webkit-media-controls-overlay-enclosure{display:none!important}video::-internal-media-controls-overlay-cast-button{display:none!important}.video-element::-moz-media-controls{display:none!important}.video-element[controls]{pointer-events:auto}.video-controls{align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);background:#000c;display:flex}.play-pause-button{background:var(--overlay-medium);color:var(--color-text-primary);font-size:var(--font-size-xl);border-radius:var(--radius-full);cursor:pointer;width:40px;height:40px;transition:background var(--transition-base);border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.play-pause-button:hover{background:#fff3}.time-display{color:var(--color-text-primary);font-size:var(--font-size-xs);white-space:nowrap;flex-shrink:0}.progress-bar{border-radius:var(--radius-sm);cursor:pointer;background:#fff3;flex:1;height:6px;position:relative;overflow:hidden}.progress-fill{background:var(--color-accent);border-radius:var(--radius-sm);height:100%;transition:width .1s linear}.progress-bar:hover .progress-fill{background:#6bb3ff}.volume-control{align-items:center;gap:var(--spacing-sm);flex-shrink:0;display:flex}.volume-icon{font-size:var(--font-size-base)}.volume-slider{appearance:none;border-radius:var(--radius-sm);cursor:pointer;background:#fff3;outline:none;width:80px;height:4px}.volume-slider::-webkit-slider-thumb{appearance:none;background:var(--color-text-primary);border-radius:var(--radius-full);cursor:pointer;width:12px;height:12px}.volume-slider::-moz-range-thumb{background:var(--color-text-primary);border-radius:var(--radius-full);cursor:pointer;border:none;width:12px;height:12px}.minimized-content{justify-content:center;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-lg);color:var(--color-text-primary);cursor:pointer;display:flex}.minimized-icon{font-size:var(--font-size-2xl)}.minimized-text{font-size:var(--font-size-sm);font-weight:500}@media (max-width:768px){.video-player:not(.mobile){display:none}}.video-player.mobile{border-radius:var(--radius-md);width:100%;position:static}.video-player.mobile .video-player-header{display:none}.video-player.mobile .video-element{border-radius:var(--radius-md)var(--radius-md)0 0;max-height:200px}.video-player.mobile .video-controls{border-radius:0 0 var(--radius-md)var(--radius-md)}.progressive-loader-overlay{z-index:5;pointer-events:none;background:#1a1a1af2;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.progressive-loader-content{align-items:center;gap:var(--spacing-xl);padding:var(--spacing-2xl);pointer-events:auto;flex-direction:column;width:100%;max-width:280px;display:flex}.progressive-spinner{width:90px;height:90px;position:relative}.progressive-spinner.spinning{animation:1.5s linear infinite rotate}@keyframes rotate{to{transform:rotate(360deg)}}.spinner-svg{width:100%;height:100%;transform:rotate(-90deg)}.spinner-track{opacity:.15}.spinner-progress{color:var(--color-accent);transition:stroke-dasharray .2s ease-out}.spinner-progress.animate-spin{animation:1.5s ease-in-out infinite dash}@keyframes dash{0%{stroke-dasharray:1 126;stroke-dashoffset:0}50%{stroke-dasharray:63 126;stroke-dashoffset:-25px}to{stroke-dasharray:1 126;stroke-dashoffset:-126px}}.progress-percent{font-size:var(--font-size-lg);color:var(--color-text-primary);font-weight:600;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.progress-message{color:var(--color-text-secondary);font-size:var(--font-size-sm);text-align:center;margin:0}.progress-bar{background:var(--color-bg-tertiary);border-radius:var(--radius-sm);width:100%;height:4px;overflow:hidden}.progress-bar-fill{background:var(--color-accent);border-radius:var(--radius-sm);height:100%;transition:width .2s ease-out}.progress-bar-fill.indeterminate{animation:1.5s ease-in-out infinite indeterminate;width:30%!important}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(400%)}}@media (max-width:480px){.progressive-loader-content{gap:var(--spacing-lg);padding:var(--spacing-lg)}.progressive-spinner{width:70px;height:70px}.progress-percent{font-size:var(--font-size-base)}.progress-message{font-size:var(--font-size-xs)}}.error-fallback-container{background:var(--color-bg-primary);width:100vw;height:100vh;color:var(--color-text-primary);justify-content:center;align-items:center;display:flex}.error-fallback-content{max-width:500px;padding:var(--spacing-3xl);text-align:center;align-items:center;gap:var(--spacing-xl);flex-direction:column;display:flex}.error-icon{margin-bottom:var(--spacing-md);font-size:64px}.error-title{font-size:var(--font-size-3xl);color:var(--color-error);margin:0;font-weight:600}.error-message{font-size:var(--font-size-base);color:var(--color-text-secondary);margin:0;line-height:1.6}.error-retry-button{margin-top:var(--spacing-md);padding:var(--spacing-md)var(--spacing-3xl);font-size:var(--font-size-base);color:var(--color-text-primary);background:var(--color-accent);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-base);border:none;font-weight:500}.error-retry-button:hover{background:var(--color-accent-hover)}.error-retry-button:active{transform:scale(.98)}@media (max-width:768px){.error-fallback-content{max-width:90%;padding:var(--spacing-2xl)}.error-icon{font-size:56px}.error-title{font-size:var(--font-size-2xl)}}@media (max-width:480px){.error-fallback-content{padding:var(--spacing-xl)}.error-icon{font-size:48px}.error-title{font-size:var(--font-size-xl)}.error-message{font-size:var(--font-size-sm)}}.environment-rotation-control{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:25;color:#fff;background:#000c;border-radius:8px;width:300px;padding:16px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;position:fixed;bottom:20px;left:20px}.control-header{margin-bottom:12px}.control-header label{color:#ffffffe6;font-size:14px;font-weight:600}.control-body{flex-direction:column;gap:8px;display:flex}.rotation-slider{appearance:none;cursor:pointer;background:#fff3;border-radius:3px;outline:none;width:100%;height:6px}.rotation-slider::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#3b82f6;border-radius:50%;width:18px;height:18px;transition:background .2s}.rotation-slider::-webkit-slider-thumb:hover{background:#60a5fa}.rotation-slider::-moz-range-thumb{cursor:pointer;background:#3b82f6;border:none;border-radius:50%;width:18px;height:18px;transition:background .2s}.rotation-slider::-moz-range-thumb:hover{background:#60a5fa}.control-footer{justify-content:space-between;align-items:center;margin-top:4px;display:flex}.rotation-value{color:#ffffffe6;min-width:40px;font-size:14px;font-weight:500}.reset-button{color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:4px;padding:6px 12px;font-size:12px;font-weight:500;transition:all .2s}.reset-button:hover{background:#fff3;border-color:#ffffff4d}.reset-button:active{transform:scale(.98)}.reset-button:focus{outline-offset:2px;outline:2px solid #3b82f6}@media (max-width:768px){.environment-rotation-control:not(.mobile){display:none}}.environment-rotation-control.mobile{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-radius:0;width:100%;padding:0;position:static}.environment-rotation-control.mobile .control-header{display:none}.model-selector{top:var(--spacing-xl);align-items:center;gap:var(--spacing-md);background:var(--overlay-panel);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-md)var(--spacing-lg);z-index:var(--z-panels);box-shadow:var(--shadow-md);display:flex;position:fixed;left:50%;transform:translate(-50%)}.model-selector-label{font-size:var(--font-size-sm);color:var(--color-text-primary);white-space:nowrap;font-weight:500}.model-selector-dropdown{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-sm)var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-text-primary);cursor:pointer;transition:all var(--transition-base);min-width:150px}.model-selector-dropdown:hover{border-color:var(--color-border-hover);background:var(--color-bg-tertiary)}.model-selector-dropdown:focus{border-color:var(--color-accent);outline:none}@media (max-width:768px){.model-selector:not(.mobile){display:none}}.model-selector.mobile{align-items:center;gap:var(--spacing-md);box-shadow:none;background:0 0;border:none;flex-direction:row;width:100%;padding:0;display:flex;position:static;transform:none}.model-selector.mobile .model-selector-dropdown{flex:1}.app-container{width:100vw;height:100vh;background:var(--color-bg-primary);height:100dvh;position:relative;overflow:hidden}.viewer-section{width:100%;height:100%;position:relative}.desktop-overlays{display:block}.mobile-controls{display:none}@media (max-width:768px){.app-container{flex-direction:column;display:flex;overflow:hidden}.viewer-section{touch-action:none;-webkit-user-select:none;user-select:none;flex-shrink:0;height:50vh;min-height:300px;position:relative}.viewer-section canvas{touch-action:none!important}.desktop-overlays{display:none}.mobile-controls{background:var(--color-bg-primary);padding:var(--spacing-sm);gap:var(--spacing-sm);-webkit-overflow-scrolling:touch;flex-direction:column;flex:1;display:flex;overflow:hidden auto}.mobile-model-selector{padding:var(--spacing-sm);background:var(--color-bg-secondary);border-radius:var(--radius-md)}.accordion-section{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);overflow:hidden}.accordion-header{width:100%;padding:var(--spacing-md)var(--spacing-lg);background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--font-size-base);cursor:pointer;transition:background var(--transition-base);border:none;justify-content:space-between;align-items:center;font-weight:500;display:flex}.accordion-header:hover{background:var(--color-bg-tertiary)}.accordion-header.open{background:var(--color-bg-tertiary);border-bottom:1px solid var(--color-border)}.accordion-icon{font-size:var(--font-size-xl);color:var(--color-text-secondary);font-weight:300}.accordion-content{padding:var(--spacing-md);background:var(--color-bg-primary)}}@media (max-width:480px){.viewer-section{height:45vh;min-height:250px}.mobile-controls{padding:var(--spacing-xs);gap:var(--spacing-xs)}.accordion-header{padding:var(--spacing-sm)var(--spacing-md);font-size:var(--font-size-sm)}.accordion-content{padding:var(--spacing-sm)}}
