.vp-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:1000}.vp-modal{background:var(--bg-secondary, #1e1e2e);border:1px solid var(--border, #3a3a55);border-radius:8px;display:flex;flex-direction:column;width:min(90vw,135vh);max-height:90vh;overflow:hidden;box-shadow:0 24px 80px #0009}.vp-header{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid var(--border, #3a3a55);flex-shrink:0}.vp-title{font-size:12px;font-weight:600;color:var(--text-primary, #e0e0f0);letter-spacing:.03em}.vp-controls{display:flex;align-items:center;gap:4px;flex:1}.vp-btn{display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--text-secondary, #8888aa);padding:4px 6px;border-radius:4px;font-size:11px;line-height:1;transition:background .1s,color .1s}.vp-btn:hover{background:var(--bg-tertiary, #353550);color:var(--text-primary, #e0e0f0)}.vp-btn.active{color:var(--accent, #7c6af7)}.vp-frame-count{font-size:11px;color:var(--text-secondary, #8888aa);font-variant-numeric:tabular-nums;padding:0 4px}.vp-close{margin-left:auto}.vp-stage{flex:1;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#2a2a3e;padding:16px}.vp-status{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:40px 24px;min-height:160px}.vp-status-loading{font-size:13px;color:var(--text-secondary, #8888aa)}.vp-status-error{font-size:13px;font-weight:600;color:#e06c75}.vp-status-detail{font-size:11px;color:var(--text-secondary, #8888aa)}.vp-svg{width:100%;height:100%;display:block}.npd-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:10000;display:flex;align-items:center;justify-content:center}.npd-dialog{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:24px;width:340px;box-shadow:0 8px 32px #00000080}.npd-title{font-size:14px;font-weight:600;color:var(--text-primary);margin:0 0 16px}.npd-section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);margin:12px 0 6px}.npd-section-label:first-of-type{margin-top:0}.npd-presets{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.npd-preset{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:4px;color:var(--text-secondary);font-size:11px;padding:6px 8px;cursor:pointer;text-align:center;transition:background .1s,border-color .1s,color .1s}.npd-preset:hover{background:var(--bg-primary);color:var(--text-primary)}.npd-preset.active{background:var(--accent);border-color:var(--accent);color:#fff}.npd-custom-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.npd-custom-toggle{flex-shrink:0}.npd-custom-inputs{display:flex;align-items:center;gap:6px;flex:1}.npd-custom-field{display:flex;align-items:center;gap:4px;flex:1}.npd-custom-field span{font-size:10px;color:var(--text-secondary);flex-shrink:0}.npd-custom-field input{width:100%;background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;color:var(--text-primary);font-size:11px;padding:4px 6px;outline:none}.npd-custom-field input:focus{border-color:var(--accent)}.npd-x{font-size:11px;color:var(--text-secondary);flex-shrink:0}.npd-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.npd-btn-cancel,.npd-btn-create{border-radius:4px;font-size:12px;padding:7px 14px;cursor:pointer;transition:background .1s}.npd-btn-cancel{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-secondary)}.npd-btn-cancel:hover{background:var(--bg-primary);color:var(--text-primary)}.npd-btn-create{background:var(--accent);border:1px solid var(--accent);color:#fff;font-weight:500}.npd-btn-create:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.fd-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:10000;display:flex;align-items:center;justify-content:center}.fd-dialog{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:24px;width:380px;box-shadow:0 8px 32px #00000080}.fd-title{font-size:14px;font-weight:600;color:var(--text-primary);margin:0 0 16px}.fd-label{display:flex;flex-direction:column;gap:6px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);margin-bottom:12px}.fd-input{background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;color:var(--text-primary);font-size:12px;padding:6px 8px;outline:none;width:100%;box-sizing:border-box}.fd-input:focus{border-color:var(--accent)}.fd-input:disabled{opacity:.5}.fd-type-group{display:flex;gap:6px}.fd-type-btn{flex:1;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:4px;color:var(--text-secondary);font-size:11px;padding:6px 8px;cursor:pointer;text-align:center;transition:background .1s,border-color .1s,color .1s}.fd-type-btn:hover{background:var(--bg-primary);color:var(--text-primary)}.fd-type-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.fd-type-btn:disabled{opacity:.5;cursor:not-allowed}.fd-textarea{background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;color:var(--text-primary);font-size:12px;padding:6px 8px;outline:none;width:100%;box-sizing:border-box;resize:vertical;font-family:inherit;line-height:1.5}.fd-textarea:focus{border-color:var(--accent)}.fd-textarea:disabled{opacity:.5}.fd-error{font-size:11px;color:#e05c5c;margin:0 0 10px}.fd-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.fd-btn-cancel,.fd-btn-submit{border-radius:4px;font-size:12px;padding:7px 14px;cursor:pointer;transition:background .1s}.fd-btn-cancel{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-secondary)}.fd-btn-cancel:hover:not(:disabled){background:var(--bg-primary);color:var(--text-primary)}.fd-btn-submit{background:var(--accent);border:1px solid var(--accent);color:#fff;font-weight:500}.fd-btn-submit:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.fd-btn-submit:disabled{opacity:.4;cursor:not-allowed}.fd-btn-cancel:disabled{opacity:.4;cursor:not-allowed}.fd-success{display:flex;flex-direction:column;gap:8px}.fd-success-msg{font-size:13px;color:var(--text-primary);margin:0}.fd-success-hint{font-size:11px;color:var(--text-secondary);margin:0}.toolbar{display:flex;align-items:center;gap:16px;padding:6px 12px;background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0}.tool-group{display:flex;align-items:center;gap:4px}.tool-group+.tool-group{padding-left:12px;border-left:1px solid var(--border)}.shapes-dropdown{position:relative;display:inline-flex;gap:0}.shapes-dropdown-tool,.shapes-dropdown-toggle{display:inline-flex;align-items:center;justify-content:center}.shapes-dropdown-toggle{padding-left:2px;padding-right:2px}.shapes-dropdown-chevron{opacity:.6}.shapes-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:100;min-width:160px;padding:4px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;box-shadow:0 4px 12px #00000040;display:flex;flex-direction:column;gap:2px}.shapes-dropdown-item{display:flex;align-items:center;gap:8px;padding:6px 8px;background:transparent;border:none;border-radius:3px;cursor:pointer;color:inherit;text-align:left;font:inherit;width:100%}.shapes-dropdown-item:hover{background:var(--bg-hover, rgba(255, 255, 255, .08))}.shapes-dropdown-item.active{background:var(--bg-active, rgba(255, 255, 255, .12))}.shapes-dropdown-icon{display:inline-flex;align-items:center;justify-content:center;width:16px}.shapes-dropdown-label{flex:1;font-size:12px}.shapes-dropdown-shortcut{font-size:11px;opacity:.6;font-family:var(--font-mono, monospace)}.polygon-sides-stepper{display:inline-flex;align-items:center;gap:6px;margin-left:8px;height:24px}.polygon-sides-stepper-label{font-size:11px;letter-spacing:.02em;opacity:.65;-webkit-user-select:none;user-select:none}.polygon-sides-stepper-control{display:inline-flex;align-items:stretch;height:22px;border:1px solid var(--border);border-radius:4px;background:var(--bg-primary, rgba(255, 255, 255, .04));overflow:hidden}.polygon-sides-stepper-control:focus-within{border-color:var(--accent, #6c8aff);box-shadow:0 0 0 1px var(--accent, #6c8aff)}.polygon-sides-stepper-button{display:inline-flex;align-items:center;justify-content:center;width:20px;padding:0;background:transparent;border:none;border-radius:0;color:inherit;cursor:pointer;opacity:.75;transition:background .12s ease,opacity .12s ease}.polygon-sides-stepper-button:hover:not(:disabled){background:var(--bg-hover, rgba(255, 255, 255, .08));opacity:1}.polygon-sides-stepper-button:active:not(:disabled){background:var(--bg-active, rgba(255, 255, 255, .14))}.polygon-sides-stepper-button:disabled{opacity:.3;cursor:not-allowed}.polygon-sides-stepper-input{width:26px;background:transparent;border:none;border-left:1px solid var(--border);border-right:1px solid var(--border);outline:none;color:inherit;font:inherit;font-size:12px;font-variant-numeric:tabular-nums;text-align:center;padding:0;-moz-appearance:textfield}.polygon-sides-stepper-input::-webkit-outer-spin-button,.polygon-sides-stepper-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.layers-panel{width:200px;background:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0}.layers-panel-header{display:flex;align-items:center;padding:4px 8px 4px 10px;border-bottom:1px solid var(--border);flex-shrink:0}.layers-panel-header h3{flex:1;margin:0;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;opacity:.6}.layers-list{flex:1;overflow-y:auto}.layer-item{display:flex;align-items:center;gap:4px;padding:6px 8px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s}.layer-item:hover{background:var(--bg-tertiary)}.layer-item.active{background:var(--accent)}.layer-btn{background:none;border:none;padding:2px 4px;font-size:12px;min-width:20px}.layer-btn:hover{background:#ffffff1a}.layer-name{flex:1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-name-input{flex:1;font-size:12px;background:var(--bg-primary);border:1px solid var(--accent);color:inherit;padding:0 4px;height:20px;border-radius:2px;outline:none;min-width:0}.layer-collapse{font-size:10px;opacity:.7}.group-indent{display:inline-block;width:20px;flex-shrink:0}.layer-delete{opacity:.5;font-size:16px}.layer-delete:hover{opacity:1;color:var(--danger)}.layer-elements{background:#00000026}.element-item{display:flex;align-items:center;gap:6px;padding:4px 8px;cursor:pointer;font-size:11px;border-bottom:1px solid rgba(255,255,255,.04);transition:background .1s}.element-item:hover{background:var(--bg-tertiary)}.element-item.selected{background:var(--accent)}.element-item.hidden,.element-item.locked{opacity:.45}.element-icon{font-size:11px;opacity:.7;flex-shrink:0;width:16px;text-align:center}.element-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-actions{padding:8px;border-top:1px solid var(--border)}.panel-actions button{width:100%}.layer-group.dragging>.layer-item,.element-item.dragging{opacity:.4}.layer-group.drop-target>.layer-item{outline:1px solid var(--accent);outline-offset:-1px}.layer-group.locked .element-item{opacity:.45}.drag-overlay{background:var(--bg-tertiary);border:1px solid var(--accent);border-radius:4px;padding:4px 8px;font-size:12px;display:flex;align-items:center;gap:6px;opacity:.9;pointer-events:none;white-space:nowrap;box-shadow:0 4px 12px #0006}.stage-toolbar{position:absolute;top:0;right:0;display:flex;flex-direction:column;gap:12px;padding:8px 4px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px}.stage-toolbar-group{display:grid;grid-template-columns:1fr 1fr;gap:4px;justify-items:center}.stage-toolbar-label{grid-column:1 / -1;font-size:9px;text-transform:uppercase;color:var(--text-secondary);letter-spacing:.3px}.stage-toolbar button{width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:4px}.stage-toolbar button.active{background:var(--accent, #6c63ff);color:#fff}.stage-toolbar-input{grid-column:1 / -1;width:48px;padding:2px 4px;font-size:11px;background:var(--bg-primary, #1e1e2e);color:var(--text-primary, #ccc);border:1px solid var(--border);border-radius:3px;text-align:center;justify-self:center}.connector-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:900;display:flex;align-items:center;justify-content:center}.connector-dialog{background:var(--bg-secondary, #2a2a3e);border:1px solid var(--border, #3a3a55);border-radius:10px;box-shadow:0 8px 32px #00000080;max-width:80vw;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.connector-dialog-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border, #3a3a55);flex-shrink:0}.connector-dialog-title{font-size:13px;font-weight:600;color:var(--text-primary, #e0e0f0);display:flex;align-items:center;gap:8px}.connector-dialog-title svg{opacity:.7}.connector-dialog-subtitle{font-size:11px;color:var(--text-secondary, #a0a0c0);font-weight:400}.connector-dialog-done{padding:4px 14px;font-size:12px;font-weight:500;border:none;border-radius:5px;background:#f59e0b;color:#1a1a2e;cursor:pointer;transition:opacity .15s}.connector-dialog-done:hover{opacity:.85}.connector-dialog-body{flex:1;overflow:auto;padding:16px}.connector-dialog-svg{display:block;margin:0 auto}.connector-dialog-hint{text-align:center;font-size:11px;color:var(--text-secondary, #a0a0c0);margin-top:12px}.connector-dialog-connections{border-top:1px solid var(--border, #3a3a55);padding:8px 16px;flex-shrink:0;max-height:140px;overflow-y:auto}.connector-dialog-connections-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary, #a0a0c0);margin-bottom:6px}.connector-dialog-conn-row{display:flex;align-items:center;gap:6px;padding:3px 0;font-size:11px;color:var(--text-primary, #e0e0f0)}.connector-dialog-conn-row .conn-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.connector-dialog-conn-row .conn-arrow{color:var(--text-secondary, #a0a0c0);flex-shrink:0}.connector-dialog-conn-row .conn-mode-btn{border:none;background:none;font-size:10px;font-weight:600;padding:2px 6px;border-radius:3px;cursor:pointer;flex-shrink:0}.connector-dialog-conn-row .conn-mode-btn.follow{color:#f59e0b;background:#f59e0b26}.connector-dialog-conn-row .conn-mode-btn.mirror{color:#a855f7;background:#a855f726}.connector-dialog-conn-row .conn-mode-btn:hover{opacity:.8}.connector-dialog-conn-row .conn-remove-btn{border:none;background:none;color:var(--danger, #e74c3c);font-size:11px;cursor:pointer;padding:2px 4px;border-radius:3px;flex-shrink:0;opacity:.6}.connector-dialog-conn-row .conn-remove-btn:hover{opacity:1;background:#e74c3c26}.canvas-wrapper{flex:1;position:relative;overflow:hidden}.canvas-area{width:100%;height:100%;display:block;background:#2a2a3e;overflow:auto;padding:20px;scrollbar-width:none}.canvas-area::-webkit-scrollbar{display:none}.canvas-area.connector-mode{box-shadow:inset 0 0 0 2px #f59e0b}.connector-mode-badge{position:absolute;top:8px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:6px;background:#f59e0b;color:#1a1a2e;border-radius:4px;padding:4px 10px;font-size:11px;font-weight:600;letter-spacing:.03em;z-index:20;pointer-events:none;white-space:nowrap}.canvas-container{position:relative;border-radius:4px;overflow:visible;line-height:0;margin:auto}.workspace{cursor:crosshair;display:block}.zoom-indicator{position:absolute;bottom:8px;right:8px;background:#0009;color:#fff;border:none;border-radius:4px;padding:4px 8px;font-size:11px;cursor:pointer;z-index:10}.zoom-indicator:hover{background:#000c}.grid-switcher{position:absolute;top:8px;left:50%;transform:translate(-50%);display:flex;gap:2px;background:#0009;border-radius:4px;padding:3px;z-index:10}.grid-switcher button{display:flex;align-items:center;justify-content:center;width:22px;height:22px;background:transparent;border:none;border-radius:3px;color:#ffffff80;cursor:pointer;padding:0}.grid-switcher button:hover{color:#fff;background:#ffffff1a}.grid-switcher button.active{color:#fff;background:#fff3}.connector-popup{position:fixed;background:var(--bg-secondary, #2a2a3e);border:1px solid var(--border, #3a3a55);border-radius:6px;padding:4px;z-index:1000;box-shadow:0 4px 12px #0006;min-width:148px}.connector-popup-label{padding:4px 10px 6px;font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary, #a0a0c0)}.connector-popup-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:5px 10px;font-size:12px;border:none;background:none;color:var(--text-primary, #e0e0f0);cursor:pointer;border-radius:3px}.connector-popup-item:hover{background:var(--bg-tertiary, #353550)}.connector-popup-item.active{background:var(--bg-tertiary, #353550);font-weight:600}.connector-popup-item.danger{color:var(--danger, #e74c3c)}.connector-popup-swatch{width:8px;height:8px;border-radius:50%;flex-shrink:0}.connector-popup-separator{height:1px;background:var(--border, #3a3a55);margin:4px 0}.grid-switcher-divider{width:1px;height:16px;background:#fff3;margin:3px 1px;align-self:center}.color-picker{display:flex;flex-direction:column;gap:4px}.color-picker-main{display:flex;align-items:center;gap:4px}.color-swatch{width:24px;height:24px;border-radius:4px;border:1px solid var(--border);cursor:pointer;flex-shrink:0;transition:border-color .15s,box-shadow .15s;position:relative;background:repeating-conic-gradient(#888,#888 25%,#555 0%,#555 50%) 0 0 / 8px 8px;overflow:hidden}.color-swatch:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:var(--swatch-bg, var(--swatch-color, #000))}.color-swatch:hover{border-color:var(--text-secondary)}.color-swatch.open{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.color-hex-input{flex:1;min-width:0;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:4px;padding:3px 6px;font-size:11px;font-family:monospace}.color-hex-input:focus{outline:none;border-color:var(--accent)}.color-copy-btn{width:24px;height:24px;padding:0;display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0;border-radius:4px;background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border);cursor:pointer}.color-copy-btn:hover{background:var(--accent-hover);color:var(--text-primary)}.color-recent{display:flex;gap:3px;flex-wrap:wrap}.color-recent-swatch{width:16px;height:16px;border-radius:3px;border:1px solid var(--border);cursor:pointer;transition:transform .1s;position:relative;background:repeating-conic-gradient(#888,#888 25%,#555 0%,#555 50%) 0 0 / 6px 6px;overflow:hidden}.color-recent-swatch:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:var(--swatch-color, #000)}.color-recent-swatch:hover{transform:scale(1.2);border-color:var(--text-secondary)}.color-popup{position:fixed;z-index:1000;width:220px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 20px #00000080;overflow:hidden;-webkit-user-select:none;user-select:none;max-height:calc(100vh - 12px);display:flex;flex-direction:column}.color-popup-tabs{display:flex;border-bottom:1px solid var(--border)}.color-popup-tab{flex:1;padding:7px 4px;font-size:11px;font-family:inherit;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--text-secondary);cursor:pointer;transition:color .15s,border-color .15s}.color-popup-tab:hover:not(.active){color:var(--text-primary);background:var(--bg-tertiary)}.color-popup-tab.active{color:var(--text-primary);border-bottom-color:var(--accent)}.fill-type-toggle-popup{display:flex;gap:3px}.fill-type-btn-popup{flex:1;height:22px;padding:0;font-size:11px;border-radius:4px;background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border);cursor:pointer;transition:background .15s,color .15s,border-color .15s;font-family:inherit}.fill-type-btn-popup:hover:not(.active){color:var(--text-primary);background:var(--accent-hover)}.fill-type-btn-popup.active{background:var(--accent);color:#fff;border-color:var(--accent)}.gradient-bar-popup-wrap{display:flex;flex-direction:column;gap:4px}.gradient-bar-popup{position:relative;height:18px;border-radius:4px;border:1px solid var(--border);cursor:crosshair;overflow:visible}.gradient-bar-meta{display:flex;align-items:center;justify-content:space-between}.gradient-stop-pos-label{font-size:10px;color:var(--text-secondary);font-family:monospace}.gradient-stop-remove{width:20px;height:20px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;border-radius:3px;background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border);cursor:pointer;line-height:1;font-family:inherit}.gradient-stop-remove:hover:not(:disabled){background:#c0392b;color:#fff;border-color:#c0392b}.gradient-stop-remove:disabled{opacity:.3;cursor:not-allowed}.gradient-angle-row{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-secondary)}.gradient-angle-row input{width:52px;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:4px;padding:3px 4px;font-size:11px;font-family:inherit;text-align:center;-moz-appearance:textfield}.gradient-angle-row input::-webkit-inner-spin-button,.gradient-angle-row input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.gradient-angle-row input:focus{outline:none;border-color:var(--accent)}.gradient-angle-unit{font-size:11px}.gradient-bar-popup .gradient-stop-handle{position:absolute;top:50%;width:12px;height:18px;border-radius:3px;border:2px solid #fff;box-shadow:0 0 0 1px #00000080,0 1px 4px #00000080;transform:translate(-50%,-50%);cursor:ew-resize;background:transparent}.gradient-bar-popup .gradient-stop-handle.selected{box-shadow:0 0 0 2px var(--accent),0 1px 4px #00000080}.color-picker-tab-content{padding:10px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;overflow-x:hidden}.color-preview-bar{width:100%;height:22px;border-radius:4px;border:1px solid rgba(255,255,255,.08);flex-shrink:0}.color-sv-area{width:100%;height:120px;border-radius:4px;position:relative;cursor:crosshair;flex-shrink:0}.color-sv-thumb{position:absolute;width:12px;height:12px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #00000080,0 1px 4px #0009;transform:translate(-50%,-50%);pointer-events:none}.color-hue-slider{width:100%;height:14px;border-radius:7px;position:relative;cursor:pointer;flex-shrink:0;background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.color-hue-thumb{position:absolute;top:50%;width:16px;height:16px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #00000080,0 1px 4px #0009;transform:translate(-50%,-50%);pointer-events:none;background:transparent}.color-alpha-slider{width:100%;height:14px;border-radius:7px;position:relative;cursor:pointer;flex-shrink:0}.color-alpha-thumb{position:absolute;top:50%;width:16px;height:16px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #00000080,0 1px 4px #0009;transform:translate(-50%,-50%);pointer-events:none;background:transparent}.color-alpha-input{width:36px;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:4px;padding:3px 4px;font-size:11px;font-family:inherit;text-align:center;flex-shrink:0;-moz-appearance:textfield}.color-alpha-input::-webkit-inner-spin-button,.color-alpha-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.color-alpha-input:focus{outline:none;border-color:var(--accent)}.color-hsl-row{display:flex;gap:6px}.color-hsl-field{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1}.color-hsl-field input{width:100%;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:4px;padding:3px 4px;font-size:11px;font-family:inherit;text-align:center;-moz-appearance:textfield}.color-hsl-field input::-webkit-inner-spin-button,.color-hsl-field input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.color-hsl-field input:focus{outline:none;border-color:var(--accent)}.color-hsl-field span{font-size:10px;color:var(--text-secondary);letter-spacing:.3px}.color-hex-row{display:flex;align-items:center;gap:4px}.color-hex-prefix{font-size:12px;color:var(--text-secondary);font-family:monospace;flex-shrink:0}.color-hex-popup-input{flex:1;min-width:0;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:4px;padding:3px 6px;font-size:11px;font-family:monospace}.color-hex-popup-input:focus{outline:none;border-color:var(--accent)}.color-popup-section{display:flex;flex-direction:column;gap:4px}.color-popup-label{font-size:10px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.color-swatches-tab-content{padding:10px;display:flex;flex-direction:column;gap:10px;max-height:300px;overflow-y:auto}.color-swatches-tab-content::-webkit-scrollbar{width:4px}.color-swatches-tab-content::-webkit-scrollbar-track{background:transparent}.color-swatches-tab-content::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.color-palette-section{display:flex;flex-direction:column;gap:5px}.color-palette-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:3px}.color-palette-swatch{aspect-ratio:1;border-radius:3px;border:1px solid rgba(255,255,255,.06);cursor:pointer;transition:transform .1s,border-color .1s;position:relative}.color-palette-swatch:hover{transform:scale(1.18);border-color:var(--text-secondary);z-index:1}.color-palette-swatch.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.fill-stroke-row{display:flex;align-items:flex-start;gap:6px;margin-bottom:4px}.fill-toggle-btn{width:14px;height:14px;flex-shrink:0;border-radius:50%;border:1.5px solid var(--border);background:transparent;cursor:pointer;padding:0;margin-top:5px;position:relative;transition:background .15s,border-color .15s,opacity .15s}.fill-toggle-btn.on{background:var(--accent, #4f8ef5);border-color:var(--accent, #4f8ef5)}.fill-toggle-btn.on:after{content:"";position:absolute;top:2px;right:2px;bottom:2px;left:2px;border-radius:50%;background:#fff}.fill-toggle-btn.off{border-color:var(--text-secondary)}.fill-toggle-btn.mixed{background:linear-gradient(135deg,var(--accent, #4f8ef5) 50%,transparent 50%);border-color:var(--accent, #4f8ef5)}.fill-toggle-btn:hover{border-color:var(--text-primary)}.fill-stroke-picker{flex:1;min-width:0}.fill-stroke-picker.muted{opacity:.4;pointer-events:none}.stroke-options{display:flex;flex-direction:column;gap:4px;padding-left:22px;margin-bottom:4px}.stroke-opt-row{display:flex;align-items:center;gap:6px}.stroke-opt-row>span{font-size:11px;color:var(--text-secondary);min-width:34px;flex-shrink:0}.stroke-opt-row input[type=number]{width:52px}.stroke-opt-btns{display:flex;gap:2px}.stroke-icon-btn{width:28px;height:24px;padding:0;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;color:var(--text-secondary);cursor:pointer;transition:background .1s,color .1s,border-color .1s;flex-shrink:0}.stroke-icon-btn:hover{background:var(--bg-hover, #3a3a3a);color:var(--text-primary)}.stroke-icon-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.appearance-opacity{margin-top:4px}.appearance-blend-mode{margin-top:2px}.appearance-blend-mode select{flex:1;min-width:0;height:24px;font-size:11px;background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border);border-radius:4px;padding:0 4px;cursor:pointer}.appearance-blend-mode select:focus{outline:none;border-color:var(--accent, #4f8ef5)}.vertex-content{display:flex;flex-direction:column;gap:10px}.vertex-handle-groups{display:flex;flex-direction:column;gap:8px}.vertex-group-label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-secondary);opacity:.7;margin-bottom:3px}.properties-panel{width:240px;background:var(--bg-secondary);border-left:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto}.hint{padding:16px 12px;color:var(--text-secondary);font-size:12px;text-align:center}.props-content{padding:8px 0}.prop-section{padding:8px 12px;border-bottom:1px solid var(--border)}.prop-section-label{display:block;font-size:11px;text-transform:uppercase;color:var(--text-secondary);margin-bottom:6px;letter-spacing:.3px}.prop-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.prop-field{display:flex;flex-direction:column;gap:2px}.prop-field span{font-size:11px;color:var(--text-secondary)}.prop-field-label-row,.prop-inline-label-row{display:flex;align-items:center;gap:4px}.prop-keyframe-btn{width:16px;height:16px;padding:0;border:1px solid var(--border);border-radius:3px;background:var(--bg-primary);color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.prop-keyframe-btn:hover{color:var(--warning);border-color:var(--warning)}.prop-field input[type=number]{width:100%}.prop-field input[type=color]{width:100%;height:24px}.prop-field-full{grid-column:1 / -1;display:flex;flex-direction:column;gap:2px}.prop-field-full>span{font-size:11px;color:var(--text-secondary)}.prop-btn{padding:5px 8px;font-size:11px;background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;color:var(--text-primary);cursor:pointer;transition:background .1s}.prop-btn:hover{background:var(--bg-hover, #3a3a3a)}.prop-select{width:100%;padding:4px 6px;font-size:11px;background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;color:var(--text-primary);cursor:pointer}.prop-rec-banner{margin:8px 12px;padding:6px 10px;font-size:11px;background:color-mix(in srgb,#e74c3c 18%,transparent);border:1px solid color-mix(in srgb,#e74c3c 50%,transparent);border-radius:4px;color:var(--text-primary);display:flex;align-items:center;gap:6px}.prop-rec-banner .prop-rec-dot{width:8px;height:8px;border-radius:50%;background:#e74c3c;flex-shrink:0;animation:prop-rec-pulse 1.5s ease-in-out infinite}@keyframes prop-rec-pulse{0%,to{opacity:.5}50%{opacity:1}}.timeline{background:var(--bg-secondary);border-top:1px solid var(--border);height:100%;display:flex;flex-direction:column}.timeline-controls{display:flex;align-items:center;gap:5px;padding:5px 10px;border-bottom:1px solid var(--border)}.timeline-controls label{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text-secondary)}.toolbar-btn{padding:4px 5px;display:flex;align-items:center;justify-content:center}.toolbar-divider{width:1px;height:16px;background:var(--border);flex-shrink:0;margin:0 2px}.keyframe-btn{display:flex;align-items:center;gap:2px;padding:4px 6px;opacity:1;transition:opacity .15s,background .15s}.keyframe-btn:disabled{opacity:.35;cursor:default}.frame-display{font-size:12px;color:var(--text-secondary);font-variant-numeric:tabular-nums;font-family:monospace;display:inline-block;min-width:88px;text-align:right}.frame-display-num{color:var(--text-secondary);opacity:.6;font-size:10px;margin-left:4px;display:inline-block;min-width:32px;text-align:left}.playback-toggle{display:flex;align-items:center;justify-content:center;background:none;border:1px solid var(--border);border-radius:4px;padding:3px;cursor:pointer;color:var(--text-secondary);transition:all .15s}.playback-toggle:hover{background:var(--bg-tertiary)}.playback-toggle.active{background:var(--accent);border-color:var(--accent);color:#fff}.toolbar-right{display:flex;align-items:center;gap:5px;margin-left:auto}.timeline-zoom-control{display:flex;align-items:center;gap:4px;color:var(--text-secondary)}.timeline-zoom-control input[type=range]{width:80px;height:4px;accent-color:var(--accent);cursor:pointer}.timeline-tracks-area{display:flex;flex:1;min-height:0;overflow-y:auto}.track-labels{width:220px;flex-shrink:0;border-right:1px solid var(--border);overflow-y:hidden;padding-top:23px}.track-label{height:28px;display:flex;align-items:center;gap:2px;padding:0 4px;font-size:11px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s}.track-label:hover{background:var(--bg-tertiary)}.track-label.empty{color:var(--text-secondary);font-style:italic;padding:0 8px}.track-label.muted{opacity:.5}.track-label.selected{background:#6c63ff26}.track-label.selected .track-label-name{color:var(--accent);font-weight:600}.track-label.shape-header{background:color-mix(in srgb,var(--bg-tertiary) 65%,transparent);font-weight:600}.track-label-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.track-value-input{width:62px;height:19px;flex-shrink:0;border:1px solid var(--border);border-radius:3px;background:var(--bg-primary);color:var(--text-primary);font-size:10px;font-variant-numeric:tabular-nums;padding:0 4px}.track-value-input:focus{outline:none;border-color:var(--accent)}.track-value-input[type=number]{text-align:right}.track-btn{width:18px;height:18px;border:none;border-radius:3px;font-size:9px;font-weight:700;cursor:pointer;background:var(--bg-tertiary);color:var(--text-secondary);padding:0;flex-shrink:0;transition:all .1s}.track-btn:hover{background:var(--border)}.track-btn.active{background:var(--accent);color:#fff}.timeline-scroll{flex:1;overflow-x:auto;overflow-y:auto;position:relative}.timeline-ruler-wrapper{position:sticky;top:0;z-index:10;flex-shrink:0}.tag-lane{height:14px;position:relative;background:var(--bg-secondary);border-bottom:1px solid var(--border);overflow:hidden}.tag-band{position:absolute;top:1px;height:12px;border-radius:3px;border:1px solid;cursor:grab;display:flex;align-items:center;overflow:hidden;transition:filter .1s;box-sizing:border-box;min-width:4px;-webkit-user-select:none;user-select:none}.tag-band:hover{filter:brightness(1.2)}.tag-band.active{box-shadow:0 0 0 1.5px currentColor;filter:brightness(1.15)}.tag-band.dragging{cursor:grabbing;opacity:.85;transition:none}.tag-resize-handle{position:absolute;top:0;width:6px;height:100%;cursor:ew-resize;flex-shrink:0;z-index:1}.tag-resize-handle.left{left:0}.tag-resize-handle.right{right:0}.tag-band-label{font-size:9px;font-weight:600;padding:0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.02em;line-height:1;pointer-events:none}.frame-ruler{height:22px;position:relative;background:var(--bg-tertiary);border-bottom:1px solid var(--border);cursor:pointer}.tag-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0006}.tag-dialog{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:16px;min-width:260px;display:flex;flex-direction:column;gap:10px;box-shadow:0 8px 32px #0006}.tag-dialog-title{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:2px}.tag-dialog-row{display:flex;gap:8px}.tag-dialog-field{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--text-secondary);flex:1}.tag-dialog-field input[type=text],.tag-dialog-field input[type=number]{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:4px;color:var(--text-primary);font-size:12px;padding:4px 7px;width:100%;box-sizing:border-box}.tag-color-swatches{display:flex;gap:5px;align-items:center;flex-wrap:wrap;margin-top:2px}.tag-color-swatch{width:18px;height:18px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;flex-shrink:0}.tag-color-swatch.selected{border-color:var(--text-primary)}.tag-color-swatches input[type=color]{width:18px;height:18px;border-radius:50%;border:none;cursor:pointer;padding:0;background:none;flex-shrink:0}.tag-dialog-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:4px}.tag-dialog-btn{padding:5px 14px;border-radius:5px;font-size:12px;border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer}.tag-dialog-btn.primary{background:var(--accent, #6c63ff);border-color:var(--accent, #6c63ff);color:#fff}.tag-dialog-btn.primary:disabled{opacity:.4;cursor:not-allowed}.frame-tick{position:absolute;top:0;height:100%;border-right:1px solid var(--border)}.frame-tick.major{border-right-color:var(--text-secondary)}.frame-number{position:absolute;top:2px;left:2px;font-size:9px;color:var(--text-secondary)}.timeline-marker{position:absolute;top:0;z-index:3;pointer-events:none}.marker-flag{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:8px solid #2ecc71;margin-left:-5px}.tracks-body{position:relative}.track-row{height:28px;position:relative;border-bottom:1px solid var(--border)}.track-row.muted{opacity:.4}.track-row.selected{background:#6c63ff14}.track-row.shape-header-row{background:color-mix(in srgb,var(--bg-tertiary) 45%,transparent)}.tween-bar{position:absolute;top:11px;height:6px;border-radius:3px;opacity:.5;cursor:pointer;transition:opacity .1s,box-shadow .1s}.tween-bar:hover{opacity:.8;box-shadow:0 0 4px #ffffff26}.tween-linear{background:#3498db}.tween-ease-in{background:#2ecc71}.tween-ease-out{background:#e67e22}.tween-ease-in-out{background:#9b59b6}.keyframe-hit-area{position:absolute;top:0;width:20px;height:28px;cursor:pointer;z-index:1;display:flex;align-items:center;justify-content:center}.keyframe-diamond{width:12px;height:12px;background:var(--warning);transform:rotate(45deg);border:1.5px solid var(--accent);transition:transform .1s,background .1s,box-shadow .1s,border-color .1s;pointer-events:none}.keyframe-hit-area:hover .keyframe-diamond{border-color:#fff;transform:rotate(45deg) scale(1.2)}.keyframe-diamond.at-current-frame{border-color:#fff;box-shadow:0 0 6px #ffffff80}.keyframe-diamond.selected{background:var(--accent);border-color:#fff;box-shadow:0 0 8px #6c63ffb3}.keyframe-hit-area:hover .keyframe-diamond.selected{box-shadow:0 0 12px #6c63fff2}.keyframe-diamond.dragging{background:#f1c40f;transform:rotate(45deg) scale(1.15);box-shadow:0 0 8px #f1c40f99}.keyframe-diamond.drag-ghost{opacity:.25;border-style:dashed}.playhead{position:absolute;width:1px;background:var(--danger);pointer-events:none;z-index:11}.playhead-handle{position:absolute;top:0;width:21px;height:18px;transform:translate(-50%);background:var(--danger);border-radius:3px 3px 0 0;cursor:ew-resize;pointer-events:auto;display:flex;align-items:center;justify-content:center;clip-path:polygon(0 0,100% 0,100% 65%,50% 100%,0 65%);z-index:1}.playhead-frame-label{font-size:8px;color:#fff;font-weight:600;margin-top:-2px;pointer-events:none;-webkit-user-select:none;user-select:none}.context-menu{position:fixed;background:var(--bg-secondary);border:1px solid var(--border);border-radius:6px;padding:4px;z-index:1000;box-shadow:0 4px 12px #0000004d;min-width:160px}.context-menu-title{font-size:10px;color:var(--text-secondary);padding:2px 8px 4px;border-bottom:1px solid var(--border);margin-bottom:2px}.context-menu-separator{height:1px;background:var(--border);margin:4px 0}.context-menu-item{display:block;width:100%;text-align:left;padding:5px 10px;font-size:12px;border:none;background:none;color:var(--text-primary);cursor:pointer;border-radius:3px}.context-menu-item:hover{background:var(--bg-tertiary)}.context-menu-item.active{background:var(--accent);color:#fff}.context-menu-item.danger{color:var(--danger)}.context-menu-item.danger:hover{background:#e74c3c26}.context-menu-item:disabled{opacity:.4;cursor:default}.context-menu-item:disabled:hover{background:none}.context-menu-item--icon{display:flex;align-items:center;gap:8px}.context-menu-radius{display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:12px;color:var(--text-secondary);border-top:1px solid var(--border);margin-top:2px}.context-menu-radius input{width:48px;padding:2px 4px;font-size:11px;background:var(--bg-primary, #1e1e2e);color:var(--text-primary, #ccc);border:1px solid var(--border);border-radius:3px;text-align:center}.track-label.group-header{background:var(--bg-tertiary);font-weight:600;font-size:11px;color:var(--text-secondary);border-bottom:1px solid var(--border)}.track-label.group-header:hover{background:var(--border)}.track-label.group-header.selected .track-label-name{color:var(--accent)}.group-collapse-btn{width:16px;height:16px;background:none;border:none;padding:0;cursor:pointer;color:var(--text-secondary);flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:transform .15s;border-radius:3px}.group-collapse-btn:hover{background:var(--border);color:var(--text-primary)}.group-collapse-btn.collapsed{transform:rotate(-90deg)}.group-header-row{background:#ffffff05;border-bottom:1px solid var(--border)}.kf-drag-select-box{position:absolute;border:1px solid var(--accent);background:#6c63ff1a;pointer-events:none;z-index:10}.context-menu-easing-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;padding:4px 4px 2px}.easing-quick-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 2px;background:none;border:1px solid transparent;border-radius:4px;cursor:pointer;color:var(--text-secondary);transition:background .1s,border-color .1s,color .1s}.easing-quick-btn:hover{background:var(--bg-tertiary);border-color:var(--border);color:var(--text-primary)}.easing-quick-btn.active{background:#6c63ff26;border-color:var(--accent);color:var(--accent)}.easing-quick-label{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42px;text-align:center}.easing-more-btn{font-size:11px;color:var(--text-secondary)!important}.tween-custom{background:linear-gradient(90deg,#e74c3c,#9b59b6)}.easing-picker{position:fixed;z-index:1100;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0006;width:276px;display:flex;flex-direction:column;overflow:hidden}.easing-picker-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 6px;border-bottom:1px solid var(--border)}.easing-picker-title{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.easing-picker-close{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:16px;line-height:1;padding:0 2px;border-radius:3px;transition:color .1s,background .1s}.easing-picker-close:hover{color:var(--text-primary);background:var(--bg-tertiary)}.easing-picker-preview{padding:10px 10px 4px;display:flex;flex-direction:column;align-items:center;gap:4px}.easing-picker-preview-svg{display:block;border-radius:4px;background:#0003}.easing-picker-preview-label{font-size:10px;color:var(--text-secondary);text-align:center;min-height:14px}.easing-picker-groups{padding:4px 8px;display:flex;flex-direction:column;gap:6px}.easing-picker-group{display:flex;flex-direction:column;gap:3px}.easing-picker-group-label{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);padding:0 2px}.easing-picker-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:3px}.easing-preset-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 2px;background:none;border:1px solid transparent;border-radius:4px;cursor:pointer;color:var(--text-secondary);transition:background .1s,border-color .1s,color .1s}.easing-preset-btn:hover{background:var(--bg-tertiary);border-color:var(--border);color:var(--text-primary)}.easing-preset-btn.active{background:#6c63ff26;border-color:var(--accent);color:var(--accent)}.easing-preset-label{font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:36px;text-align:center;line-height:1.2}.easing-picker-custom{padding:6px 8px 10px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:6px}.easing-custom-inputs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.easing-custom-field{display:flex;flex-direction:column;gap:2px}.easing-custom-field span{font-size:9px;color:var(--text-secondary);text-align:center}.easing-custom-field input{width:100%;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:3px;color:var(--text-primary);font-size:10px;padding:3px 4px;text-align:center;outline:none;box-sizing:border-box}.easing-custom-field input:focus{border-color:var(--accent)}.easing-custom-apply{padding:5px 10px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:4px;color:var(--text-primary);font-size:11px;cursor:pointer;transition:background .1s,border-color .1s;text-align:center}.easing-custom-apply:hover{background:var(--border)}.easing-custom-apply.active{background:#6c63ff33;border-color:var(--accent);color:var(--accent)}.toast-container{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none;align-items:center}.toast{padding:9px 16px;border-radius:6px;font-size:13px;color:#fff;pointer-events:all;cursor:pointer;animation:toast-in .2s ease;white-space:nowrap;box-shadow:0 2px 8px #0006}.toast-success{background:var(--success)}.toast-error{background:var(--danger)}.toast-info{background:var(--accent)}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.cp-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;display:flex;align-items:flex-start;justify-content:center;padding-top:15vh}.cp-panel{width:480px;max-width:calc(100vw - 32px);background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 32px #0009;overflow:hidden}.cp-input-row{padding:12px;border-bottom:1px solid var(--border)}.cp-input{width:100%;background:var(--bg-primary);border:1px solid var(--border);border-radius:6px;padding:8px 12px;color:var(--text-primary);font-size:14px;outline:none;box-sizing:border-box}.cp-input:focus{border-color:var(--accent)}.cp-list{max-height:320px;overflow-y:auto;padding:4px}.cp-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:6px;cursor:pointer;gap:8px}.cp-item.active,.cp-item:hover{background:var(--bg-tertiary)}.cp-item-name{color:var(--text-primary);font-size:13px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cp-item-badge{color:var(--text-secondary);font-size:11px;background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;padding:1px 6px;flex-shrink:0}.cp-empty{padding:20px 12px;text-align:center;color:var(--text-secondary);font-size:13px}.ksd-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;display:flex;align-items:flex-start;justify-content:center;padding:10vh 16px 24px;background:#00000047}.ksd-dialog{width:min(760px,100%);max-height:min(720px,82vh);display:flex;flex-direction:column;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 40px #0000008c;overflow:hidden}.ksd-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px 14px;border-bottom:1px solid var(--border)}.ksd-header h2{margin:0;color:var(--text-primary);font-size:18px;line-height:1.2;font-weight:650}.ksd-header p{margin:5px 0 0;color:var(--text-secondary);font-size:12px}.ksd-close{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.ksd-search-row{padding:12px 20px;border-bottom:1px solid var(--border)}.ksd-search{width:100%;box-sizing:border-box;background:var(--bg-primary);border:1px solid var(--border);border-radius:6px;padding:8px 11px;color:var(--text-primary);font-size:13px;outline:none}.ksd-search:focus{border-color:var(--accent)}.ksd-content{overflow-y:auto;padding:16px 20px 20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 22px}.ksd-group h3{margin:0 0 8px;color:var(--text-primary);font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.04em}.ksd-list{display:grid;gap:1px;border:1px solid var(--border);border-radius:8px;overflow:hidden}.ksd-row{min-height:36px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 9px;background:var(--bg-primary)}.ksd-row+.ksd-row{border-top:1px solid var(--border)}.ksd-action{min-width:0;color:var(--text-primary);font-size:12px;line-height:1.35}.ksd-keys{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:4px;flex-shrink:0}.ksd-keys kbd{min-height:20px;display:inline-flex;align-items:center;border:1px solid var(--border);border-bottom-color:#fff3;border-radius:4px;padding:1px 6px;background:var(--bg-tertiary);color:var(--text-primary);font-family:inherit;font-size:11px;line-height:1;white-space:nowrap}.ksd-empty{grid-column:1 / -1;padding:28px 12px;text-align:center;color:var(--text-secondary);font-size:13px}@media(max-width:720px){.ksd-backdrop{padding-top:8vh}.ksd-content{grid-template-columns:1fr}.ksd-row{align-items:flex-start;flex-direction:column}.ksd-keys{justify-content:flex-start}}.fpp-container{position:fixed;bottom:24px;right:24px;width:280px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;overflow:hidden;box-shadow:0 8px 24px #00000080;z-index:200;-webkit-user-select:none;user-select:none}.fpp-header{display:flex;align-items:center;gap:4px;padding:0 6px 0 10px;height:32px;background:var(--bg-tertiary);border-bottom:1px solid var(--border);cursor:grab}.fpp-header:active{cursor:grabbing}.fpp-title{font-size:11px;font-weight:600;color:var(--text-secondary);flex:1;letter-spacing:.04em;text-transform:uppercase}.fpp-controls{display:flex;align-items:center;gap:2px}.fpp-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;background:transparent;border:none;border-radius:4px;color:var(--text-secondary);cursor:pointer;padding:0;flex-shrink:0}.fpp-btn:hover{background:var(--bg-primary);color:var(--text-primary)}.fpp-btn.active{color:var(--accent)}.fpp-frame{font-size:10px;color:var(--text-secondary);min-width:36px;text-align:center;font-variant-numeric:tabular-nums}.fpp-close{margin-left:2px}.fpp-stage{width:100%;background:#fff;overflow:hidden}.app{display:flex;flex-direction:column;height:100vh}.main-area{display:flex;flex:1;overflow:hidden}.timeline-resize-handle{height:4px;flex-shrink:0;cursor:row-resize;background:var(--border);transition:background .15s}.timeline-resize-handle:hover{background:var(--accent)}*{margin:0;padding:0;box-sizing:border-box}:root{--bg-primary: #1e1e2e;--bg-secondary: #2a2a3e;--bg-tertiary: #353550;--text-primary: #e0e0f0;--text-secondary: #a0a0c0;--accent: #6c63ff;--accent-hover: #7b73ff;--border: #3a3a55;--danger: #e74c3c;--success: #2ecc71;--warning: #f39c12}html,body,#root{height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-primary);color:var(--text-primary);font-size:13px}button{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);padding:4px 10px;border-radius:4px;cursor:pointer;font-size:12px;transition:background .15s}button:hover{background:var(--accent-hover)}button.active{background:var(--accent);border-color:var(--accent)}input[type=number]{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);padding:3px 6px;border-radius:4px;width:60px;font-size:12px}input[type=color]{width:28px;height:28px;border:1px solid var(--border);border-radius:4px;cursor:pointer;padding:2px;background:var(--bg-tertiary)}input[type=text],select{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);padding:3px 6px;border-radius:4px;font-size:12px}h3{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);padding:8px 12px;border-bottom:1px solid var(--border)}
