@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";:root{--bg-app:#0b0c10;--bg-panel:#12131a;--bg-inset:#00000052;--bg-raised:#1a1b26;--bg-hover:#ffffff0f;--bg-active:#c5a88024;--border:#ffffff14;--border-strong:#ffffff29;--text-primary:#f3f4f6;--text-secondary:#9ca3af;--text-muted:#6b7280;--accent:#c5a880;--accent-hover:#d5b890;--accent-contrast:#12131a;--accent-soft:#c5a88029;--selection:#aa3bff;--selection-soft:#aa3bff1a;--danger:#ef4444;--danger-soft:#ef44441f;--success:#10b981;--warning:#f59e0b;--record:#f43f5e;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--font-sans:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", monospace;--panel-width-left:264px;--panel-width-right:312px;--topbar-height:44px;font-family:var(--font-sans);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background-color:var(--bg-app);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{background-color:var(--bg-app);width:100vw;height:100vh;margin:0;padding:0;overflow:hidden}button{font-family:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#fff3}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.app-shell{background:var(--bg-app);flex-direction:column;width:100vw;height:100vh;display:flex}.app-main{flex:1;min-height:0;display:flex}.app-shell.record-mode .top-bar,.app-shell.record-mode .side-panel,.app-shell.record-mode .timeline-panel{display:none}.top-bar{height:var(--topbar-height);background:var(--bg-panel);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 12px;display:flex}.top-bar-brand{align-items:center;gap:8px;display:flex}.top-bar-logo{color:var(--accent)}.top-bar-name{letter-spacing:.3px;font-size:13px;font-weight:700}.top-bar-tag{text-transform:uppercase;letter-spacing:.8px;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:2px 7px;font-size:10px;font-weight:600}.top-bar-actions{align-items:center;gap:6px;display:flex}.top-bar-sep{background:var(--border);width:1px;height:18px;margin:0 4px}.fps-badge{font-family:var(--font-mono);border:1px solid var(--border);color:var(--text-muted);border-radius:999px;margin-right:4px;padding:3px 8px;font-size:10px}.fps-badge--good{color:var(--success);border-color:#10b98159}.fps-badge--ok{color:var(--warning);border-color:#f59e0b59}.fps-badge--bad{color:var(--danger);border-color:#ef444459}.ui-btn{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-primary);cursor:pointer;white-space:nowrap;background:#ffffff0a;justify-content:center;align-items:center;gap:6px;font-size:12px;font-weight:500;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.ui-btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border-strong)}.ui-btn:disabled{opacity:.4;cursor:not-allowed}.ui-btn--md{height:30px;padding:0 12px}.ui-btn--sm{height:24px;padding:0 9px;font-size:11px}.ui-btn--icon{width:28px;height:28px;padding:0}.ui-btn--icon-sm{width:22px;height:22px;padding:0}.ui-btn--ghost{color:var(--text-secondary);background:0 0;border-color:#0000}.ui-btn--ghost:hover:not(:disabled){color:var(--text-primary)}.ui-btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);font-weight:600}.ui-btn--primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.ui-btn--danger{color:var(--danger);background:var(--danger-soft);border-color:#ef44444d}.ui-btn--record{height:30px;color:var(--record);background:#f43f5e1f;border-color:#f43f5e66;padding:0 12px;font-weight:600}.ui-btn--record:hover:not(:disabled){border-color:var(--record);background:#f43f5e38}.ui-btn.is-active{background:var(--bg-active);border-color:var(--accent);color:var(--accent)}.ui-btn--ghost.is-active{background:var(--accent-soft);color:var(--accent);border-color:#0000}.ui-input{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);height:30px;color:var(--text-primary);font-size:12px;font-family:var(--font-sans);outline:none;flex:1;min-width:0;padding:0 10px}.ui-input:focus{border-color:var(--accent)}.ui-kbd{min-width:17px;height:17px;font-family:var(--font-mono);color:var(--text-secondary);border:1px solid var(--border);background:#ffffff12;border-bottom-width:2px;border-radius:4px;justify-content:center;align-items:center;padding:0 5px;font-size:10px;display:inline-flex}.ui-tooltip{background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-primary);z-index:60;align-items:center;gap:7px;max-width:260px;padding:5px 9px;font-size:11px;display:flex;box-shadow:0 6px 24px #00000073}.ui-select-trigger{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);cursor:pointer;font-family:var(--font-sans);justify-content:space-between;align-items:center;gap:8px;display:flex}.ui-select-trigger--md{height:30px;padding:0 10px;font-size:12px}.ui-select-trigger--sm{height:24px;padding:0 8px;font-size:11px}.ui-select-trigger:hover{border-color:var(--border-strong)}.ui-select-trigger[data-popup-open]{border-color:var(--accent)}.ui-select-value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ui-select-icon{color:var(--text-muted);flex-shrink:0;display:flex}.ui-select-positioner{z-index:70}.ui-select-popup{min-width:max(var(--anchor-width), 180px);max-height:min(420px, var(--available-height));background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:4px;overflow-y:auto;box-shadow:0 12px 40px #0000008c}.ui-select-group-label{text-transform:uppercase;letter-spacing:.7px;color:var(--text-muted);padding:7px 8px 3px;font-size:9px;font-weight:600}.ui-select-item{border-radius:var(--radius-sm);cursor:pointer;color:var(--text-primary);outline:none;align-items:center;gap:7px;padding:5px 8px;font-size:12px;display:flex}.ui-select-item[data-highlighted]{background:var(--bg-hover)}.ui-select-item[data-selected]{color:var(--accent)}.ui-select-item-indicator{width:12px;color:var(--accent);flex-shrink:0;display:flex}.ui-select-item-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ui-segmented{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);gap:2px;padding:2px;display:inline-flex}.ui-segment{color:var(--text-secondary);cursor:pointer;font-family:var(--font-sans);background:0 0;border:none;border-radius:4px;font-weight:500;transition:background .15s,color .15s}.ui-segmented--md .ui-segment{height:24px;padding:0 10px;font-size:11px}.ui-segmented--sm .ui-segment{height:20px;padding:0 8px;font-size:10px}.ui-segment:hover{color:var(--text-primary)}.ui-segment[data-pressed]{background:var(--accent-soft);color:var(--accent)}.ui-switch{border:1px solid var(--border);cursor:pointer;background:#ffffff1f;border-radius:999px;flex-shrink:0;width:32px;height:18px;padding:1px;transition:background .15s}.ui-switch[data-checked]{background:var(--accent);border-color:var(--accent)}.ui-switch-thumb{background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;display:block}.ui-switch[data-checked] .ui-switch-thumb{transform:translate(14px)}.ui-nf{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;min-width:0;padding:0 6px 0 0;display:flex}.ui-nf:focus-within{border-color:var(--accent)}.ui-nf-scrub{cursor:ew-resize;touch-action:none;-webkit-user-select:none;user-select:none;padding:4px 4px 4px 7px}.ui-nf-label{font-family:var(--font-mono);color:var(--text-muted);font-size:9px}.ui-nf-scrub:hover .ui-nf-label{color:var(--accent)}.ui-nf-cursor{color:var(--accent);filter:drop-shadow(0 1px 2px #0009);display:flex}.ui-nf-input{width:100%;min-width:0;color:var(--text-primary);font-family:var(--font-mono);background:0 0;border:none;outline:none;padding:4px 0;font-size:10.5px}.ui-slider{align-items:center;width:100%;display:flex}.ui-slider-control{cursor:pointer;touch-action:none;align-items:center;width:100%;height:20px;display:flex;position:relative}.ui-slider-track{background:#ffffff1f;border-radius:2px;width:100%;height:4px;position:relative}.ui-slider-indicator{background:var(--accent);opacity:.55;border-radius:2px;height:100%;position:absolute}.ui-slider-thumb{border:2px solid var(--accent);background:#fff;border-radius:50%;outline:none;width:13px;height:13px;transition:transform .1s;position:absolute}.ui-slider-thumb:hover,.ui-slider-thumb[data-dragging]{transform:scale(1.15)}.ui-menu-positioner{z-index:70}.ui-menu-popup{background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius-md);min-width:190px;padding:4px;box-shadow:0 12px 40px #0000008c}.ui-menu-item{border-radius:var(--radius-sm);cursor:pointer;color:var(--text-primary);outline:none;align-items:center;gap:8px;padding:6px 9px;font-size:12px;display:flex}.ui-menu-item[data-highlighted]{background:var(--bg-hover)}.ui-menu-item.is-danger{color:var(--danger)}.ui-menu-separator{background:var(--border);height:1px;margin:4px 6px}.ui-dialog-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:80;background:#0000008c;position:fixed;inset:0}.ui-dialog{background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-lg);z-index:81;flex-direction:column;width:420px;max-width:calc(100vw - 40px);max-height:calc(100vh - 80px);padding:16px;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 24px 80px #0009}.ui-dialog-header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.ui-dialog-title{margin:0;font-size:14px;font-weight:600}.ui-dialog-description{color:var(--text-secondary);margin:0 0 12px;font-size:11.5px;line-height:1.5}.ui-dialog-body{min-height:0;overflow-y:auto}.ui-toast-viewport{z-index:90;flex-direction:column;gap:8px;width:280px;display:flex;position:fixed;bottom:84px;right:16px}.ui-toast{background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius-md);align-items:flex-start;gap:8px;padding:10px 12px;display:flex;position:relative;box-shadow:0 10px 32px #00000080}.ui-toast[data-type=success]{border-left:3px solid var(--success)}.ui-toast[data-type=error]{border-left:3px solid var(--danger)}.ui-toast-content{flex:1;min-width:0}.ui-toast-title{margin:0;font-size:12px;font-weight:600}.ui-toast-description{color:var(--text-secondary);overflow-wrap:break-word;margin:3px 0 0;font-size:11px}.ui-toast-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:14px;line-height:1}.ui-toast-close:hover{color:var(--text-primary)}.side-panel{background:var(--bg-panel);flex-direction:column;flex-shrink:0;display:flex;overflow-y:auto}.side-panel--left{width:var(--panel-width-left);border-right:1px solid var(--border)}.side-panel--right{width:var(--panel-width-right);border-left:1px solid var(--border)}.panel-section{border-bottom:1px solid var(--border);padding:12px}.panel-section:last-child{border-bottom:none;flex-direction:column;flex:1;min-height:0;display:flex}.panel-section.is-collapsed:last-child{flex:none}.panel-section-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.panel-section-trigger{cursor:pointer;min-width:0;color:inherit;background:0 0;border:none;flex:1;align-items:center;gap:5px;padding:2px 0;display:flex}.panel-section-chevron{color:var(--text-muted);flex-shrink:0;transition:transform .15s}.panel-section-trigger[data-panel-open] .panel-section-chevron{transform:rotate(90deg)}.panel-section-title{text-transform:uppercase;letter-spacing:.7px;color:var(--accent);align-items:center;gap:7px;font-size:10.5px;font-weight:600;display:flex}.panel-section-panel{flex-direction:column;min-height:0;display:flex}.panel-section:last-child .panel-section-panel{flex:1}.panel-section-body{flex-direction:column;flex:1;gap:10px;min-height:0;padding-top:10px;display:flex}.field-row{justify-content:space-between;align-items:center;gap:10px;min-height:24px;display:flex}.field-row-label{color:var(--text-secondary);flex-shrink:0;font-size:11px}.field-row-control{align-items:center;gap:6px;min-width:0;display:flex}.colorway-picker{grid-template-columns:repeat(4,1fr);gap:5px;display:grid}.colorway-btn{border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;background:#ffffff08;flex-direction:column;align-items:center;gap:5px;padding:8px 4px;transition:background .15s,border-color .15s;display:flex}.colorway-btn:hover{background:var(--bg-hover)}.colorway-btn.is-active{background:var(--bg-active);border-color:var(--accent)}.colorway-swatch{border:1px solid #ffffff40;border-radius:50%;width:15px;height:15px}.colorway-name{color:var(--text-primary);text-overflow:ellipsis;max-width:100%;font-size:9px;font-weight:500;overflow:hidden}.video-dropzone{background:var(--bg-inset);border:1px dashed var(--border);border-radius:var(--radius-md);cursor:pointer;color:var(--text-secondary);text-align:center;flex-direction:column;align-items:center;gap:4px;padding:12px 10px;transition:border-color .15s,background .15s;display:flex}.video-dropzone:hover,.video-dropzone.is-drag-over{border-color:var(--accent);background:#c5a8800d}.video-dropzone-text{font-size:11px}.video-dropzone-file{font-family:var(--font-mono);color:var(--accent);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:10px;overflow:hidden}.backdrop-picker{gap:6px;display:flex;position:relative}.backdrop-btn--custom{justify-content:center;align-items:center;display:flex}.backdrop-btn-plus{color:#ffffffbf;text-shadow:0 1px 3px #000c;font-size:13px;line-height:1}.backdrop-btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);cursor:pointer;width:26px;height:26px;padding:0;transition:transform .12s,border-color .12s}.backdrop-btn:hover{transform:scale(1.08)}.backdrop-btn.is-active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.slider-row{grid-template-columns:56px 1fr 40px;align-items:center;gap:8px;display:grid}.slider-row-label{color:var(--text-secondary);font-size:11px}.slider-row-value{font-family:var(--font-mono);color:var(--text-muted);text-align:right;font-size:10px}.env-dropzone{background:var(--bg-inset);border:1px dashed var(--border);border-radius:var(--radius-sm);cursor:pointer;color:var(--text-secondary);align-items:center;gap:7px;padding:7px 9px;transition:border-color .15s,background .15s;display:flex}.env-dropzone:hover,.env-dropzone.is-drag-over{border-color:var(--accent);background:#c5a8800d}.env-dropzone-text{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:10.5px;overflow:hidden}.preset-description{color:var(--text-muted);margin:0;font-size:10.5px;line-height:1.5}.keyframe-list{flex-direction:column;flex:1;gap:7px;min-height:0;padding-right:2px;display:flex;overflow-y:auto}.keyframe-card{border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;text-align:left;color:inherit;font:inherit;background:#ffffff05;flex-direction:column;gap:8px;width:100%;padding:9px;transition:background .15s,border-color .15s;display:flex}.keyframe-card:hover{background:var(--bg-hover)}.keyframe-card.is-selected{border-color:var(--selection);background:var(--selection-soft)}.keyframe-card-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.keyframe-card-id{flex-shrink:0;align-items:center;gap:6px;display:flex}.keyframe-dot{background:var(--accent);border-radius:50%;width:7px;height:7px}.keyframe-card.is-selected .keyframe-dot{background:var(--selection)}.keyframe-name{font-size:11.5px;font-weight:600}.keyframe-card-controls{align-items:center;gap:5px;min-width:0;display:flex}.kf-time{flex-shrink:0;width:62px}.kf-easing{max-width:108px}.kf-editor{border-top:1px solid var(--border);cursor:default;flex-direction:column;gap:6px;padding-top:8px;display:flex}.kf-editor-label{text-transform:uppercase;letter-spacing:.6px;color:var(--text-secondary);justify-content:space-between;align-items:baseline;gap:6px;font-size:9px;font-weight:600;display:flex}.kf-editor-hint{text-transform:none;letter-spacing:0;color:var(--text-muted);font-weight:400}.kf-editor-value{font-family:var(--font-mono);color:var(--accent);text-transform:none;letter-spacing:0}.kf-editor-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.kf-set-view{width:100%;margin-top:2px}.shortcuts-grid{flex-direction:column;gap:14px;display:flex}.shortcuts-group-title{text-transform:uppercase;letter-spacing:.7px;color:var(--accent);margin:0 0 6px;font-size:10px;font-weight:600}.shortcuts-row{justify-content:space-between;align-items:center;gap:12px;padding:4px 0;display:flex}.shortcuts-label{color:var(--text-secondary);font-size:12px}.shortcuts-keys{flex-shrink:0;gap:4px;display:flex}.library-save-row{gap:8px;margin-bottom:12px;display:flex}.library-list{flex-direction:column;gap:6px;max-height:300px;display:flex;overflow-y:auto}.library-empty{color:var(--text-muted);text-align:center;margin:8px 0;font-size:12px}.library-entry{border:1px solid var(--border);border-radius:var(--radius-md);background:#ffffff05;align-items:center;gap:6px;padding:4px;display:flex}.library-entry:hover{background:var(--bg-hover)}.library-entry-main{cursor:pointer;min-width:0;color:inherit;text-align:left;background:0 0;border:none;flex-direction:column;flex:1;align-items:flex-start;gap:2px;padding:4px 6px;display:flex}.library-entry-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:12px;font-weight:600;overflow:hidden}.library-entry-meta{font-size:10px;font-family:var(--font-mono);color:var(--text-muted)}.timeline-panel{background:var(--bg-panel);border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:8px;padding:10px 14px;display:flex}.timeline-row{align-items:center;gap:10px;display:flex}.transport{align-items:center;gap:4px;display:flex}.play-btn{background:var(--accent);width:36px;height:36px;color:var(--accent-contrast);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:transform .15s cubic-bezier(.175,.885,.32,1.275),background .15s;display:flex}.play-btn:hover{background:var(--accent-hover);transform:scale(1.07)}.scrubber{flex:1;min-width:0;padding:6px 0;position:relative}.scrubber-markers{pointer-events:none;position:absolute;inset:0}.scrubber-marker{background:var(--accent);border:1.5px solid var(--bg-panel);cursor:ew-resize;pointer-events:auto;border-radius:50%;width:9px;height:9px;padding:0;transition:transform .12s,box-shadow .12s;position:absolute;top:50%;transform:translate(-50%,-50%)}.scrubber-marker:hover{box-shadow:0 0 8px var(--accent);transform:translate(-50%,-50%)scale(1.35)}.scrubber-marker.is-active{border-color:var(--selection);box-shadow:0 0 8px var(--selection);background:#fff}.time-display{font-family:var(--font-mono);color:var(--text-secondary);white-space:nowrap;flex-shrink:0;font-size:11.5px}.time-display-sep{color:var(--text-muted);margin:0 2px}.video-track{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding-bottom:8px;display:flex}.video-track-slider{flex:1;min-width:0;position:relative}.video-track-mark{background:var(--success);z-index:2;pointer-events:none;border:1.5px solid #fff;border-radius:50%;width:8px;height:8px;position:absolute;top:50%;transform:translate(-50%,-50%)}.video-track-time{font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;font-size:10px}.viewport{flex:1;min-width:0;position:relative;overflow:hidden}.frame-guide{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.frame-guide-box{border:1px solid #ffffff73;position:relative;box-shadow:0 0 0 200vmax #00000073}.frame-guide-label{font-family:var(--font-mono);color:#ffffff8c;font-size:10px;position:absolute;top:6px;left:8px}.record-hint{color:#ffffffd9;pointer-events:none;background:#0000008c;border:1px solid #ffffff26;border-radius:999px;padding:7px 16px;font-size:12px;animation:5s forwards hint-fade;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.record-hint b{color:#fff}@keyframes hint-fade{0%,70%{opacity:1}to{opacity:0}}.export-overlay{pointer-events:none;justify-content:center;align-items:flex-end;padding-bottom:24px;display:flex;position:absolute;inset:0}.export-card{pointer-events:auto;background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius-lg);flex-direction:column;gap:8px;width:300px;padding:12px 14px;display:flex;box-shadow:0 16px 48px #0000008c}.export-title{font-size:12px;font-weight:600}.export-bar{background:#ffffff1a;border-radius:3px;height:5px;overflow:hidden}.export-bar-fill{background:var(--accent);border-radius:3px;height:100%;transition:width .15s}.export-meta{font-family:var(--font-mono);color:var(--text-secondary);justify-content:space-between;align-items:center;font-size:10.5px;display:flex}
