@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Noto+Serif+SC:wght@400;500;600;700&family=Playfair+Display:wght@700;800;900&display=swap";.homepage{min-height:100vh;background:linear-gradient(135deg,#000,#262626);display:flex;align-items:center;justify-content:center;font-family:Inter,SF Pro Display,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.homepage-content{text-align:center;color:#fff;max-width:1200px;padding:4rem}.homepage-title{font-size:4.5rem;font-weight:700;margin-bottom:1.5rem;text-shadow:2px 2px 4px rgba(0,0,0,.8);font-family:Playfair Display,"Noto Serif SC",serif;letter-spacing:-.025em}.homepage-subtitle{font-size:1.5rem;margin-bottom:4rem;opacity:.9;font-weight:400;letter-spacing:.025em}.navigation-cards{display:flex;flex-direction:row;gap:3rem;margin-top:2rem;justify-content:center;align-items:stretch}.nav-card{background:#ffffff0d;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);border-radius:0;padding:3rem;text-decoration:none;color:#fff;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;align-items:center;text-align:center;flex:1;max-width:400px;min-height:350px}.nav-card:hover{transform:translateY(-8px);background:#ffffff1a;box-shadow:0 25px 50px -12px #00000040;border-color:#fff3}.nav-card-icon{margin-bottom:2rem;padding:0;background:none;border:none;border-radius:0;display:flex;align-items:center;justify-content:center;transition:all .3s cubic-bezier(.4,0,.2,1)}.nav-card-icon svg{width:60px;height:60px}.nav-card:hover .nav-card-icon{transform:scale(1.1)}.nav-card-title{font-size:1.75rem;font-weight:600;margin-bottom:1.5rem;font-family:Playfair Display,"Noto Serif SC",serif;letter-spacing:-.025em}.nav-card-description{font-size:1rem;opacity:.8;line-height:1.75;font-weight:400;flex-grow:1}@media(max-width:1024px){.homepage-content{padding:3rem 2rem}.homepage-title{font-size:3.5rem}.navigation-cards{gap:2rem;flex-direction:row}.nav-card{padding:2.5rem;max-width:350px;min-height:320px}}@media(max-width:768px){.homepage-title{font-size:2.5rem}.homepage-subtitle{font-size:1.25rem;margin-bottom:3rem}.navigation-cards{flex-direction:column;gap:1.5rem;align-items:center}.nav-card{width:100%;max-width:400px;padding:2rem;min-height:280px}}@media(max-width:480px){.homepage-content{padding:2rem 1rem}.homepage-title{font-size:2rem}.homepage-subtitle{font-size:1.125rem}.nav-card{padding:1.5rem;min-height:250px}}.controls{position:fixed;top:var(--ds-space-5);right:var(--ds-space-5);width:320px;max-height:80vh;background:var(--ds-alpha-overlay);border-radius:var(--ds-radius-lg);-webkit-backdrop-filter:blur(var(--ds-blur-base));backdrop-filter:blur(var(--ds-blur-base));border:1px solid var(--ds-alpha-overlay-light);box-shadow:var(--ds-shadow-xl);color:var(--ds-color-neutral-white);font-family:var(--ds-font-primary);z-index:1000;transition:all var(--ds-duration-base) var(--ds-easing-default)}.controls.collapsed{height:auto}.controls-header{padding:var(--ds-space-4) var(--ds-space-5);border-bottom:1px solid var(--ds-alpha-overlay-light);cursor:pointer;display:flex;justify-content:space-between;align-items:center;-webkit-user-select:none;user-select:none}.controls-header h3{margin:0;font-size:var(--ds-font-size-base);font-weight:var(--ds-font-weight-semibold)}.collapse-icon{font-size:14px;transition:transform .3s ease}.controls-content{max-height:calc(80vh - 60px);overflow-y:auto}.tabs-navigation{display:flex;flex-wrap:wrap;padding:var(--ds-space-2);gap:var(--ds-space-1);border-bottom:1px solid var(--ds-alpha-overlay-light)}.tab-button{background:var(--ds-alpha-overlay-light);border:none;color:#fffc;padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--ds-radius-base);cursor:pointer;font-size:12px;transition:all var(--ds-duration-fast) var(--ds-easing-default);flex:1;min-width:80px}.tab-button:hover{background:#ffffff26;color:var(--ds-color-neutral-white)}.tab-button.active{background:var(--ds-color-neutral-gray800);color:var(--ds-color-neutral-white)}.tab-content{padding:var(--ds-space-5)}.control-group{display:flex;flex-direction:column;gap:15px}.control-group h4{margin:0 0 10px;font-size:14px;font-weight:600;color:var(--ds-color-neutral-gray200);border-bottom:1px solid var(--ds-alpha-overlay-light);padding-bottom:5px}.control-item{display:flex;flex-direction:column;gap:8px}.control-item label{font-size:13px;color:#ffffffe6;font-weight:var(--ds-font-weight-medium)}.control-item input[type=range]{-webkit-appearance:none;appearance:none;height:6px;background:#fff3;border-radius:3px;outline:none;cursor:pointer}.control-item input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;background:var(--ds-color-neutral-white);border-radius:50%;cursor:pointer;box-shadow:var(--ds-shadow-sm);transition:all var(--ds-duration-fast) var(--ds-easing-default)}.control-item input[type=range]::-webkit-slider-thumb:hover{background:#ffffffd9;transform:scale(1.1)}.control-item input[type=range]::-moz-range-thumb{width:18px;height:18px;background:var(--ds-color-neutral-white);border-radius:50%;cursor:pointer;border:none;box-shadow:var(--ds-shadow-sm)}.control-item select{background:var(--ds-alpha-overlay-light);border:1px solid rgba(255,255,255,.2);color:var(--ds-color-neutral-white);padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--ds-radius-base);font-size:13px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 8px center;background-size:16px;padding-right:32px}.control-item select:focus{outline:none;border-color:#ffffff59;background-color:#ffffff26}.control-item select option{background-color:#000000e6;color:#fff;padding:8px 12px;border:none}.control-item select option:hover{background-color:#4096ffcc}.control-item select option:checked{background-color:#4096ff99}.control-item select::-ms-expand{display:none}.control-item select:-moz-focusring{color:transparent;text-shadow:0 0 0 white}.touch-camera-controller{margin-top:20px;padding-top:15px;border-top:1px solid rgba(255,255,255,.1)}.touch-joystick__outer{border-radius:50%;background:#ffffff14;border:2px solid rgba(255,255,255,.25);box-shadow:var(--ds-shadow-md)}.touch-joystick__center{border-radius:50%;background:#ffffff73}.touch-joystick__knob{border-radius:50%;background:#ffffffd9;border:2px solid rgba(255,255,255,1);transition:all var(--ds-duration-fast) var(--ds-easing-default)}.touch-joystick__knob--dragging{transition:none}.touch-camera-controller h5{margin:0 0 15px;font-size:13px;font-weight:600;color:#4096ff;text-align:center}.touch-controller-container{background:#0000004d;border-radius:50%;border:1px solid rgba(255,255,255,.1);box-shadow:inset 0 2px 8px #0000004d;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.touch-controller-container:hover{background:#0006;border-color:#4096ff4d}.touch-controller-container .outer-circle{transition:border-color .2s ease}.touch-controller-container:hover .outer-circle{border-color:#4096ffcc}.touch-controller-container .knob{transition:box-shadow .2s ease}.touch-controller-container .knob:hover{box-shadow:0 4px 12px #4096ff66}.controller-status{margin-top:10px;font-style:italic}@media(hover:none)and (pointer:coarse){.touch-controller-container .knob{width:36px;height:36px}.touch-controller-container{width:140px;height:140px}}.control-item select:invalid{color:#ffffffb3}.control-item input[type=color]{width:40px;height:30px;border:none;border-radius:4px;cursor:pointer;background:none}.control-item input[type=checkbox]{width:18px;height:18px;accent-color:var(--ds-color-neutral-white);cursor:pointer}.controls-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--ds-space-2);padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--ds-radius-base);border:1px solid rgba(255,255,255,.15);background:var(--ds-alpha-overlay-light);color:var(--ds-color-neutral-white);cursor:pointer;font-size:var(--ds-font-size-sm);transition:all var(--ds-duration-fast) var(--ds-easing-default)}.controls-btn:hover{background:#ffffff26}.controls-btn--primary{background:var(--ds-color-neutral-gray800);border-color:#ffffff1f}.controls-btn--danger{background:var(--ds-color-neutral-gray900);border-color:#ffffff1f}.controls-btn--sm{padding:var(--ds-space-1) var(--ds-space-2);font-size:var(--ds-font-size-xs)}.controls-note{margin-top:var(--ds-space-5);padding:var(--ds-space-3);background:var(--ds-alpha-glass);border:1px solid var(--ds-alpha-overlay-light);border-radius:var(--ds-radius-base);font-size:var(--ds-font-size-xs);color:#ffffffd9}.controls-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:var(--ds-alpha-overlay);z-index:999}.controls-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--ds-color-neutral-gray900);border:1px solid var(--ds-alpha-overlay-light);padding:var(--ds-space-5);border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-xl);z-index:1000;min-width:300px;color:var(--ds-color-neutral-white)}.controls-input{width:100%;padding:var(--ds-space-2) var(--ds-space-3);border:1px solid rgba(255,255,255,.2);border-radius:var(--ds-radius-base);background:#ffffff14;color:var(--ds-color-neutral-white)}.controls-modal-actions{display:flex;gap:var(--ds-space-2);justify-content:flex-end}.controls-btn-group{display:flex;flex-direction:column;gap:var(--ds-space-2)}.controls-btn-row{display:flex;gap:var(--ds-space-2)}.controls-muted-text{font-size:var(--ds-font-size-xs);color:#ffffffa6}.controls-help-text{margin-top:var(--ds-space-1);font-size:var(--ds-font-size-xs);color:#fff9}.controls-help-text--xs{font-size:10px}.controls-disabled{opacity:.5}.controls-input--sm{padding:var(--ds-space-1) var(--ds-space-2);font-size:var(--ds-font-size-xs)}.scene-config{margin-bottom:var(--ds-space-2);border:1px solid rgba(255,255,255,.15);border-radius:var(--ds-radius-base);background:#00000040}.scene-config--current{border-color:#ffffff59;background:#00000059}.scene-config__header{padding:var(--ds-space-3);cursor:pointer;display:flex;justify-content:space-between;align-items:center;background:#ffffff0f;border-radius:var(--ds-radius-base) var(--ds-radius-base) 0 0}.scene-config__header--current{background:#ffffff17}.scene-config__header-left{display:flex;align-items:center;gap:var(--ds-space-2)}.scene-config__chevron{font-size:14px;opacity:.85}.scene-config__title{font-weight:var(--ds-font-weight-semibold)}.scene-config__current-indicator{font-size:var(--ds-font-size-xs);opacity:.85}.scene-config__body{padding:var(--ds-space-3)}.scene-config__section{margin-bottom:var(--ds-space-3)}.scene-config__section-title{font-size:var(--ds-font-size-sm);color:#fffc;display:block;margin-bottom:var(--ds-space-2)}.scene-config__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--ds-space-2)}.scene-config__axis-label{font-size:var(--ds-font-size-xs);color:#fff9;display:block;margin-bottom:var(--ds-space-1)}.scene-config__preview{margin-top:var(--ds-space-2);padding:var(--ds-space-2);background:#00000059;border:1px solid rgba(255,255,255,.12);border-radius:var(--ds-radius-base);font-size:var(--ds-font-size-xs);color:#fff9;font-family:var(--ds-font-secondary)}.preset-buttons{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.preset-save-section,.preset-json-section{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin-bottom:var(--ds-space-2)}.preset-row{display:flex;align-items:center;gap:var(--ds-space-2);width:100%}.preset-btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:12px;transition:all .2s ease;flex:1;min-width:80px}.preset-btn:hover{background:#4096ff99;border-color:#4096ffcc}.controls-content::-webkit-scrollbar{width:6px}.controls-content::-webkit-scrollbar-track{background:#ffffff1a;border-radius:3px}.controls-content::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}.controls-content::-webkit-scrollbar-thumb:hover{background:#ffffff80}@media(max-width:768px){.controls{width:280px;right:var(--ds-space-2);top:var(--ds-space-2)}.tab-button{font-size:11px;padding:6px 8px}.tab-content{padding:15px}}.app{width:100vw;height:100vh;position:relative;overflow:hidden;background:#000;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.scroll-camera-page,.free-camera-page{width:100%;height:100%;position:relative}canvas{outline:none;display:block}html,body,#root{width:100%;height:100%;margin:0;padding:0;overflow:hidden}body{background:#000;color:#fff}.loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:18px;text-align:center;z-index:1000}.loading:after{content:"";display:inline-block;width:20px;height:20px;margin-left:10px;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#ff6b6b;font-size:16px;text-align:center;z-index:1000;background:#000c;padding:20px;border-radius:8px;border:1px solid #ff6b6b}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}@media(max-width:768px){.app{height:-webkit-fill-available;height:100vh}}@media(prefers-contrast:high){.app{filter:contrast(1.2)}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media print{.app{background:#fff;color:#000}.controls{display:none}}:root{--ds-color-primary-main: #000000;--ds-color-primary-light: #1a1a1a;--ds-color-neutral-white: #ffffff;--ds-color-neutral-gray100: #f5f5f5;--ds-color-neutral-gray200: #e5e5e5;--ds-color-neutral-gray300: #d4d4d4;--ds-color-neutral-gray400: #a3a3a3;--ds-color-neutral-gray500: #737373;--ds-color-neutral-gray600: #525252;--ds-color-neutral-gray700: #404040;--ds-color-neutral-gray800: #262626;--ds-color-neutral-gray900: #171717;--ds-color-neutral-black: #000000;--ds-alpha-glass: rgba(0, 0, 0, .05);--ds-alpha-glass-dark: rgba(0, 0, 0, .3);--ds-alpha-overlay: rgba(0, 0, 0, .4);--ds-alpha-overlay-light: rgba(255, 255, 255, .1);--ds-font-primary: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--ds-font-secondary: "Noto Serif SC", "Source Han Serif SC", serif;--ds-font-display: "Playfair Display", "Noto Serif SC", serif;--ds-font-size-xs: .75rem;--ds-font-size-sm: .875rem;--ds-font-size-base: 1rem;--ds-font-size-lg: 1.125rem;--ds-font-weight-light: 300;--ds-font-weight-normal: 400;--ds-font-weight-medium: 500;--ds-font-weight-semibold: 600;--ds-font-weight-bold: 700;--ds-space-0: 0;--ds-space-1: .25rem;--ds-space-2: .5rem;--ds-space-3: .75rem;--ds-space-4: 1rem;--ds-space-5: 1.25rem;--ds-space-6: 1.5rem;--ds-space-8: 2rem;--ds-radius-sm: .125rem;--ds-radius-base: .25rem;--ds-radius-md: .375rem;--ds-radius-lg: .5rem;--ds-radius-xl: .75rem;--ds-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--ds-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--ds-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--ds-duration-fast: .15s;--ds-duration-base: .3s;--ds-easing-default: cubic-bezier(.4, 0, .2, 1);--ds-blur-base: 8px}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--ds-font-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#ffffff0d}::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#ffffff80}::selection{background:#fff3;color:#fff;text-shadow:0 0 10px rgba(0,0,0,.5)}.glass-card{overflow:hidden}.glass-card:hover{transform:translateY(-4px);box-shadow:0 10px 20px #0000001a}.logo:hover{opacity:.7}@media(max-width:768px){.home-page{font-size:14px}nav{padding:0 1rem!important;height:60px!important}section{padding:4rem 1rem!important}}@media(max-width:1024px){section>div{flex-direction:column!important}}.glass-card,.logo,.btn-primary,.btn-secondary,.btn-ghost,.btn-gold{will-change:transform}button:focus-visible,a:focus-visible{outline:2px solid rgba(0,0,0,.3);outline-offset:2px}@media print{nav,.home-page{display:none}}
