.camera-controls{position:fixed;top:20px;right:20px;z-index:10;display:flex;gap:8px;pointer-events:all}.camera-controls button{background:#000000b3;color:#fff;border:1px solid rgba(255,255,255,.2);padding:8px 12px;border-radius:4px;cursor:pointer;font-size:12px;font-weight:500;transition:all .2s;white-space:nowrap}.camera-controls button:hover:not(:disabled){background:#ffffff1a;border-color:#fff6}.camera-controls button:disabled{opacity:.5;cursor:not-allowed}.empty-state{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;pointer-events:none;opacity:0;transition:opacity .4s ease;z-index:5}.empty-state--visible{opacity:1}.empty-state__icon{font-size:48px;color:#ffffff1f;animation:empty-pulse 3s ease-in-out infinite}@keyframes empty-pulse{0%,to{opacity:.4;transform:scale(1)}50%{opacity:.7;transform:scale(1.05)}}.empty-state__heading{font-size:18px;font-weight:600;color:#fff6;margin:0}.empty-state__body{font-size:14px;color:#ffffff4d;margin:0}.empty-state__body code{font-family:SF Mono,Menlo,monospace;background:#ffffff14;padding:1px 5px;border-radius:3px}.empty-state__hint{font-size:12px;color:#fff3;margin:0}.library-entry{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;cursor:pointer;transition:background .15s ease;position:relative;-webkit-user-select:none;user-select:none}.library-entry:hover{background:#ffffff14}.library-entry:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}.library-entry--active{background:#3b82f633;border-left:3px solid #3b82f6}.library-entry--active:hover{background:#3b82f640}.library-entry__thumb{width:36px;height:36px;flex-shrink:0;border-radius:4px;background:#ffffff0f;display:flex;align-items:center;justify-content:center;color:#ffffff59;font-size:16px}.library-entry__name{flex:1;min-width:0;font-size:13px;color:#ffffffd9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.library-entry--active .library-entry__name{color:#fff;font-weight:500}.library-entry__remove{opacity:0;flex-shrink:0;width:24px;height:24px;border:none;background:transparent;color:#fff6;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:14px;transition:opacity .15s,background .15s,color .15s;padding:0}.library-entry:hover .library-entry__remove,.library-entry__remove:focus-visible{opacity:1}.library-entry__remove:hover{background:#ef444433;color:#ef4444}.library-entry__remove:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}.sidebar{position:fixed;top:0;left:0;height:100vh;width:var(--sidebar-width, 240px);background:var(--color-surface);border-right:1px solid var(--color-border);z-index:20;display:flex;flex-direction:column;transition:width .25s ease,opacity .25s ease;overflow:hidden}.sidebar--collapsed{width:var(--sidebar-width-collapsed, 48px)}.sidebar__toggle{flex-shrink:0;width:100%;height:44px;border:none;background:transparent;color:#ffffffb3;cursor:pointer;display:flex;align-items:center;justify-content:flex-end;padding:0 14px;font-size:16px;transition:background .15s,color .15s}.sidebar--collapsed .sidebar__toggle{justify-content:center;padding:0}.sidebar__toggle:hover{background:var(--color-surface-hover);color:#fff}.sidebar__toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.sidebar__toggle-icon{transition:transform .25s ease;display:inline-block}.sidebar--collapsed .sidebar__toggle-icon{transform:rotate(180deg)}.sidebar__content{flex:1;display:flex;flex-direction:column;overflow:hidden;opacity:1;transition:opacity .2s ease}.sidebar--collapsed .sidebar__content{opacity:0;pointer-events:none}.sidebar__import-btn{flex-shrink:0;margin:8px 10px 12px;padding:10px 14px;background:#06c;color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;text-align:center;transition:background .15s;letter-spacing:.01em}.sidebar__import-btn:hover:not(:disabled){background:#0052a3}.sidebar__import-btn:disabled{background:#333;color:#666;cursor:not-allowed}.sidebar__import-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.sidebar__label{padding:0 12px 6px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted)}.sidebar__list{flex:1;overflow-y:auto;overflow-x:hidden;padding:0 4px 12px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.15) transparent}.sidebar__list::-webkit-scrollbar{width:5px}.sidebar__list::-webkit-scrollbar-track{background:transparent}.sidebar__list::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:4px}.sidebar__drop-zone{margin:16px 8px;padding:20px 12px;border:1px dashed rgba(255,255,255,.15);border-radius:8px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;transition:border-color .2s,background .2s}.sidebar--drag-over .sidebar__drop-zone{border-color:var(--color-accent, #3b82f6);background:#3b82f60f}.sidebar__drop-icon{font-size:22px;color:#fff3}.sidebar__drop-text{font-size:12px;color:#ffffff4d;margin:0}.sidebar__drop-subtext{font-size:11px;color:#fff3;margin:0}.sidebar__file-input{display:none}.sidebar--drag-over{border-right-color:#06c}.sidebar--drag-over .sidebar__import-btn{background:#004999;box-shadow:0 0 0 2px #06c6}.animation-dropdown{display:flex;flex-direction:column;gap:2px;min-width:160px;max-width:200px}.animation-dropdown__label{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#fff6;padding-left:2px}.animation-dropdown__select{background:#ffffff14;color:#e0e0e0;border:1px solid rgba(255,255,255,.12);border-radius:4px;padding:6px 28px 6px 8px;font-size:12px;font-family:inherit;cursor:pointer;outline:none;transition:border-color .15s,background .15s;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23888' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.animation-dropdown__select:hover:not(:disabled){border-color:#ffffff40;background:#ffffff1f}.animation-dropdown__select:focus-visible{border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f64d}.animation-dropdown__select:disabled{opacity:.4;cursor:not-allowed}.animation-dropdown__select option{background:#1a1a24;color:#e0e0e0}.playback-controls{display:flex;align-items:center;gap:4px}.playback-controls__btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.12);border-radius:6px;background:#ffffff0f;color:#e0e0e0;font-size:14px;cursor:pointer;transition:background .15s,border-color .15s,transform .1s}.playback-controls__btn:hover:not(:disabled){background:#ffffff24;border-color:var(--color-border-strong)}.playback-controls__btn:active:not(:disabled){transform:scale(.95)}.playback-controls__btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.playback-controls__btn:disabled{opacity:.35;cursor:not-allowed}.playback-controls__btn--play,.playback-controls__btn--resume{color:var(--color-success)}.playback-controls__btn--pause{color:var(--color-warning)}.timeline-control{flex:1;display:flex;align-items:center;gap:10px;min-width:120px}.timeline-control__slider{flex:1;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;cursor:pointer;outline:none}.timeline-control__slider::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(to right,#3b82f6 0%,#3b82f6 var(--progress, 0%),rgba(255,255,255,.15) var(--progress, 0%),rgba(255,255,255,.15) 100%)}.timeline-control__slider::-moz-range-track{height:4px;border-radius:2px;background:#ffffff26;border:none}.timeline-control__slider::-moz-range-progress{height:4px;border-radius:2px;background:#3b82f6}.timeline-control__slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:#e0e0e0;border:2px solid #3b82f6;margin-top:-5px;cursor:pointer;transition:background .15s,transform .1s}.timeline-control__slider::-webkit-slider-thumb:hover{background:#fff;transform:scale(1.15)}.timeline-control__slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#e0e0e0;border:2px solid #3b82f6;cursor:pointer;transition:background .15s,transform .1s}.timeline-control__slider::-moz-range-thumb:hover{background:#fff;transform:scale(1.15)}.timeline-control__slider:disabled{opacity:.35;cursor:not-allowed}.timeline-control__slider:disabled::-webkit-slider-thumb{cursor:not-allowed}.timeline-control__slider:disabled::-moz-range-thumb{cursor:not-allowed}.timeline-control__slider:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px #3b82f666}.timeline-control__slider:focus-visible::-moz-range-thumb{box-shadow:0 0 0 3px #3b82f666}.timeline-control__time{flex-shrink:0;font-size:11px;font-family:SF Mono,Menlo,Monaco,Consolas,monospace;color:#fff9;white-space:nowrap;min-width:95px;text-align:right}.timeline-control__separator{margin:0 2px;color:#ffffff4d}.timeline-control__current{color:#fffc}.speed-control{display:flex;gap:1px;background:#ffffff0f;border-radius:5px;overflow:hidden;border:1px solid rgba(255,255,255,.1)}.speed-control__btn{padding:5px 8px;background:transparent;border:none;color:#ffffff8c;font-size:11px;font-family:SF Mono,Menlo,Monaco,Consolas,monospace;font-weight:500;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.speed-control__btn:hover:not(:disabled):not(.speed-control__btn--active){background:#ffffff14;color:#fffc}.speed-control__btn--active{background:#3b82f6;color:#fff;font-weight:600}.speed-control__btn:focus-visible{outline:2px solid #3b82f6;outline-offset:-1px;z-index:1}.speed-control__btn:disabled{opacity:.35;cursor:not-allowed}.loop-toggle{display:flex;align-items:center;gap:4px;padding:5px 10px;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:5px;color:#ffffffb3;font-size:11px;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}.loop-toggle:hover:not(:disabled){background:#ffffff1a;border-color:#fff3}.loop-toggle:focus-visible{outline:2px solid #3b82f6;outline-offset:1px}.loop-toggle:disabled{opacity:.35;cursor:not-allowed}.loop-toggle__icon{font-size:12px;line-height:1}.loop-toggle__label{font-weight:500}.control-bar{position:fixed;bottom:0;left:var(--sidebar-width, 0px);width:calc(100% - var(--sidebar-width, 0px));height:var(--control-bar-height, 56px);background:var(--color-surface);border-top:1px solid var(--color-border);z-index:30;display:flex;align-items:center;gap:16px;padding:0 16px;transform:translateY(100%);transition:transform .3s ease,left .25s ease,width .25s ease}.control-bar--visible{transform:translateY(0)}.control-bar__no-anim{flex:1;text-align:center;font-size:12px;color:#ffffff59;font-style:italic}.loading-spinner-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#0000008c;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:50;opacity:0;pointer-events:none;transition:opacity .3s ease}.loading-spinner-overlay--visible{opacity:1;pointer-events:auto}.loading-spinner__ring{width:48px;height:48px;border:3px solid rgba(255,255,255,.15);border-top-color:var(--color-accent);border-radius:50%;animation:spinner-rotate 1s linear infinite}@keyframes spinner-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-spinner__text{margin-top:16px;color:#ffffffbf;font-size:14px;font-weight:500;letter-spacing:.02em}.error-banner{position:fixed;top:0;left:50%;transform:translate(-50%) translateY(-100%);z-index:60;min-width:320px;max-width:560px;display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:0 0 8px 8px;font-size:13px;line-height:1.4;box-shadow:0 4px 20px #0006;transition:transform .3s ease-out;pointer-events:auto}.error-banner--visible{transform:translate(-50%) translateY(0)}.error-banner--model{background:var(--color-danger);color:#fff}.error-banner--animation{background:#ea580c;color:#fff}.error-banner--info{background:#d97706;color:#fff}.error-banner__icon{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;border-radius:50%;background:#fff3}.error-banner__message{flex:1;min-width:0;word-break:break-word}.error-banner__close{flex-shrink:0;width:24px;height:24px;border:none;background:#ffffff26;color:#fff;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:14px;padding:0;transition:background .15s}.error-banner__close:hover{background:#ffffff4d}.error-banner__close:focus-visible{outline:2px solid var(--color-text-primary);outline-offset:1px}.app-layout{width:100%;height:100%;position:relative;background:#0a0a0f}:root{--sidebar-width: 240px;--sidebar-width-collapsed: 48px;--control-bar-height: 56px;--color-accent: #3b82f6;--color-accent-hover: #2563eb;--color-success: #4ade80;--color-warning: #facc15;--color-danger: #dc2626;--color-info: #d97706;--color-text-primary: rgba(255, 255, 255, .9);--color-text-secondary: rgba(255, 255, 255, .6);--color-text-muted: rgba(255, 255, 255, .35);--color-surface: rgba(15, 15, 20, .95);--color-surface-hover: rgba(255, 255, 255, .06);--color-surface-active: rgba(255, 255, 255, .1);--color-border: rgba(255, 255, 255, .08);--color-border-strong: rgba(255, 255, 255, .2)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#000;overflow:hidden;width:100vw;height:100vh}html,body,#root{width:100%;height:100%}
