:root{--brand-primary:#4f46e5;--brand-secondary:#7c3aed;--brand-accent:#9333ea;--brand-gradient:linear-gradient(135deg, #4f46e5 0%, #7c3aed 50%, #9333ea 100%);--brand-gradient-hover:linear-gradient(135deg, #4338ca 0%, #6d28d9 50%, #7e22ce 100%);--brand-glow:0 0 20px #4f46e566;--bg-base:#f8fafc;--bg-surface:#fff;--bg-elevated:#f1f5f9;--bg-overlay:#fffffff2;--bg-card:#ffffffb3;--bg-hover:#4f46e50f;--bg-active:#4f46e51f;--glass-bg:#fff9;--glass-border:#4f46e526;--glass-blur:blur(20px);--text-primary:#0f172a;--text-secondary:#475569;--text-tertiary:#64748b;--text-disabled:#94a3b8;--text-accent:#4f46e5;--border-subtle:#0f172a14;--border-default:#0f172a26;--border-strong:#0f172a40;--border-accent:#4f46e566;--success:#10b981;--success-bg:#10b9811a;--warning:#f59e0b;--warning-bg:#f59e0b1a;--error:#ef4444;--error-bg:#ef44441a;--info:#3b82f6;--info-bg:#3b82f61a;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;--space-2xl:32px;--space-3xl:48px;--space-4xl:64px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:20px;--radius-full:9999px;--font-sans:"Inter", "Noto Sans SC", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--text-xs:11px;--text-sm:13px;--text-base:14px;--text-md:15px;--text-lg:17px;--text-xl:20px;--text-2xl:24px;--text-3xl:30px;--text-4xl:36px;--text-5xl:48px;--shadow-sm:0 1px 2px #0f172a0d;--shadow-md:0 4px 12px #0f172a14;--shadow-lg:0 8px 24px #0f172a1f;--shadow-xl:0 16px 48px #0f172a29;--shadow-glow:0 0 30px #4f46e54d;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1);--transition-spring:.5s cubic-bezier(.34, 1.56, .64, 1);--z-base:0;--z-dropdown:100;--z-sticky:200;--z-overlay:300;--z-modal:400;--z-tooltip:500;--z-toast:600;--topbar-height:56px;--sidebar-width:260px;--inspector-width:320px;--promptbar-height:80px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;font-size:14px}body{font-family:var(--font-sans);background:var(--bg-base);color:var(--text-primary);min-height:100vh;line-height:1.6;overflow:hidden}#app{width:100vw;height:100vh;position:relative;overflow:hidden}a{color:var(--text-accent);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--brand-primary)}img{max-width:100%;display:block}button{font-family:var(--font-sans);cursor:pointer;color:var(--text-primary);background:0 0;border:none;outline:none}input,textarea,select{font-family:var(--font-sans);background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none}input:focus,textarea:focus,select:focus{border-color:var(--brand-primary);box-shadow:0 0 0 3px #6366f126}::placeholder{color:var(--text-tertiary)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#94a3b833;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#94a3b859}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-xs{gap:var(--space-xs)}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.gap-xl{gap:var(--space-xl)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.w-full{width:100%}.h-full{height:100%}.relative{position:relative}.absolute{position:absolute}.overflow-hidden{overflow:hidden}.text-center{text-align:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.pointer-events-none{pointer-events:none}.select-none{-webkit-user-select:none;user-select:none}.cursor-pointer{cursor:pointer}.btn{justify-content:center;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-size:var(--text-sm);transition:all var(--transition-fast);cursor:pointer;white-space:nowrap;font-weight:500;display:inline-flex;position:relative;overflow:hidden}.btn-primary{background:var(--brand-gradient);color:#fff;box-shadow:var(--shadow-sm), 0 0 20px #6366f133}.btn-primary:hover{background:var(--brand-gradient-hover);box-shadow:var(--shadow-md), var(--brand-glow);transform:translateY(-1px)}.btn-primary:active{box-shadow:var(--shadow-sm);transform:translateY(0)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.btn-primary.loading{pointer-events:none}.btn-primary.loading:after{content:"";border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.6s linear infinite spin}.btn-secondary{background:var(--bg-elevated);border:1px solid var(--border-default);color:var(--text-primary)}.btn-secondary:hover{background:var(--bg-hover);border-color:var(--border-accent)}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-icon{border-radius:var(--radius-md);width:36px;height:36px;color:var(--text-secondary);transition:all var(--transition-fast);background:0 0;justify-content:center;align-items:center;padding:0;display:inline-flex}.btn-icon:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-lg{padding:var(--space-md) var(--space-xl);font-size:var(--text-md);border-radius:var(--radius-lg)}.badge{border-radius:var(--radius-full);font-size:var(--text-xs);align-items:center;padding:2px 8px;font-weight:500;display:inline-flex}.badge-success{background:var(--success-bg);color:var(--success)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge-error{background:var(--error-bg);color:var(--error)}.badge-info{background:var(--info-bg);color:var(--info)}.badge-brand{color:var(--text-accent);background:#6366f126}.card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);transition:all var(--transition-base)}.card:hover{border-color:var(--border-default);box-shadow:var(--shadow-md)}.chip{align-items:center;gap:var(--space-xs);border-radius:var(--radius-full);font-size:var(--text-xs);background:var(--bg-elevated);border:1px solid var(--border-subtle);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);padding:4px 12px;font-weight:500;display:inline-flex}.chip:hover{background:var(--bg-hover);border-color:var(--border-accent);color:var(--text-primary)}.chip.active{border-color:var(--brand-primary);color:var(--text-accent);background:#6366f126}.tooltip{position:relative}.tooltip:after{content:attr(data-tip);background:var(--bg-elevated);border:1px solid var(--border-default);color:var(--text-primary);border-radius:var(--radius-sm);font-size:var(--text-xs);white-space:nowrap;opacity:0;pointer-events:none;transition:all var(--transition-fast);z-index:var(--z-tooltip);padding:4px 10px;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)scale(.9)}.tooltip:hover:after{opacity:1;transform:translate(-50%)scale(1)}.divider{background:var(--border-subtle);height:1px;margin:var(--space-md) 0}.divider-vertical{background:var(--border-subtle);width:1px;height:20px;margin:0 var(--space-sm)}.avatar{border-radius:var(--radius-full);background:var(--brand-gradient);width:32px;height:32px;font-size:var(--text-xs);color:#fff;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.avatar-sm{width:24px;height:24px;font-size:10px}.avatar-lg{width:40px;height:40px;font-size:var(--text-sm)}.tab-group{background:var(--bg-elevated);border-radius:var(--radius-md);gap:2px;padding:3px;display:flex}.tab-item{border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;padding:6px 16px;font-weight:500}.tab-item:hover{color:var(--text-primary);background:#ffffff0d}.tab-item.active{color:#fff;background:var(--brand-gradient);box-shadow:var(--shadow-sm)}.slider-container{align-items:center;gap:var(--space-sm);display:flex}.slider-container input[type=range]{appearance:none;background:var(--bg-elevated);border:none;border-radius:2px;flex:1;height:4px;padding:0}.slider-container input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--brand-primary);cursor:pointer;border-radius:50%;width:14px;height:14px;box-shadow:0 0 6px #6366f166}.slider-container .slider-value{font-size:var(--text-xs);color:var(--text-secondary);text-align:right;min-width:30px}.progress-bar{background:var(--bg-elevated);border-radius:2px;height:4px;overflow:hidden}.progress-bar .progress-fill{background:var(--brand-gradient);height:100%;transition:width var(--transition-base);border-radius:2px}.empty-state{padding:var(--space-4xl) var(--space-xl);text-align:center;justify-content:center;align-items:center;gap:var(--space-lg);flex-direction:column;display:flex}.empty-state .empty-icon{border-radius:var(--radius-xl);background:var(--bg-elevated);justify-content:center;align-items:center;width:64px;height:64px;font-size:28px;display:flex}.empty-state .empty-title{font-size:var(--text-lg);color:var(--text-primary);font-weight:600}.empty-state .empty-desc{font-size:var(--text-sm);color:var(--text-tertiary);max-width:300px}.glass-panel{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-lg)}.context-menu{z-index:var(--z-dropdown);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-xs);min-width:180px;box-shadow:var(--shadow-xl);animation:fadeInScale var(--transition-fast) ease-out;position:fixed}.context-menu-item{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);display:flex}.context-menu-item:hover{background:var(--bg-hover);color:var(--text-primary)}.context-menu-item .menu-shortcut{font-size:var(--text-xs);color:var(--text-tertiary);margin-left:auto}.context-menu-divider{background:var(--border-subtle);height:1px;margin:var(--space-xs) var(--space-sm)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideInLeft{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes slideInUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes glow{0%,to{box-shadow:0 0 20px #6366f133}50%{box-shadow:0 0 30px #6366f166}}@keyframes ripple{to{opacity:0;transform:scale(4)}}.animate-fade-in{animation:fadeIn var(--transition-base) ease-out}.animate-fade-in-up{animation:fadeInUp var(--transition-slow) ease-out}.animate-slide-in-right{animation:slideInRight var(--transition-slow) ease-out}.animate-slide-in-left{animation:slideInLeft var(--transition-slow) ease-out}.animate-slide-in-up{animation:slideInUp var(--transition-slow) ease-out}.animate-pulse{animation:2s ease-in-out infinite pulse}.animate-float{animation:3s ease-in-out infinite float}.animate-glow{animation:2s ease-in-out infinite glow}.stagger-1{animation-delay:50ms;animation-fill-mode:both}.stagger-2{animation-delay:.1s;animation-fill-mode:both}.stagger-3{animation-delay:.15s;animation-fill-mode:both}.stagger-4{animation-delay:.2s;animation-fill-mode:both}.stagger-5{animation-delay:.25s;animation-fill-mode:both}.stagger-6{animation-delay:.3s;animation-fill-mode:both}.stagger-7{animation-delay:.35s;animation-fill-mode:both}.stagger-8{animation-delay:.4s;animation-fill-mode:both}.canvas-grid-bg{cursor:grab}.canvas-grid-bg:active{cursor:grabbing}.frame-upload-zone{transition:border-color .2s,background .2s}.frame-upload-zone:hover{border-color:var(--brand-primary)!important;background:var(--bg-hover)!important}.prompt-drawer select{color:var(--text-primary);cursor:pointer;background:0 0;border:none;outline:none;padding:2px 4px;font-size:11px}.prompt-drawer select:focus{box-shadow:none;border:none}.animate-spin{animation:1s linear infinite spin}
