:root{--bg-base:#121212;--bg-elevated:#1a1a1a;--bg-surface:#242424;--bg-hover:#2c2c2c;--bg-glass:rgba(26,26,26,.72);--border:#2e2e2e;--border-light:#3d3d3d;--border-accent:rgba(22,93,255,.35);--text-primary:#fff;--text-secondary:#b0b0b0;--text-muted:#707070;--text-inverse:#121212;--accent:#165dff;--accent-hover:#3b7aff;--accent-light:rgba(22,93,255,.12);--accent-glow:rgba(22,93,255,.25);--accent-gold:#d4af37;--accent-gold-light:rgba(212,175,55,.12);--success:#00d48b;--success-bg:rgba(0,212,139,.1);--warning:#ff9f0a;--warning-bg:rgba(255,159,10,.1);--danger:#ff453a;--danger-bg:rgba(255,69,58,.1);--node-text:#94a3b8;--node-script:#165dff;--node-character:#ff9f0a;--node-scene:#00d48b;--node-image:#ec4899;--node-video:#f97316;--node-audio:#06b6d4;--node-storyboard:#a855f7;--node-voice:#14b8a6;--node-analysis:#eab308;--node-compose:#ef4444;--node-prop:#f59e0b;--node-anchor:#475569;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-sm:4px;--radius:8px;--radius-md:10px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--shadow-sm:0 1px 3px rgba(0,0,0,.4),0 1px 2px rgba(0,0,0,.3);--shadow:0 4px 16px rgba(0,0,0,.35),0 1px 4px rgba(0,0,0,.2);--shadow-lg:0 12px 40px rgba(0,0,0,.45),0 4px 12px rgba(0,0,0,.25);--shadow-glow:0 0 20px rgba(22,93,255,.15);--transition-fast:0.12s cubic-bezier(0.4,0,0.2,1);--transition:0.2s cubic-bezier(0.4,0,0.2,1);--transition-slow:0.35s cubic-bezier(0.4,0,0.2,1)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;font-family:Inter,SF Pro Display,PingFang SC,Microsoft YaHei,-apple-system,system-ui,sans-serif;background:var(--bg-base);color:var(--text-primary);font-size:14px;line-height:1.6;letter-spacing:.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv02","cv03","cv04","cv11"}a{color:var(--accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-hover)}button{cursor:pointer;border:none;background:none}button,input,select,textarea{font-family:inherit;font-size:inherit}select{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-2) var(--space-3);outline:none;cursor:pointer}select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}select option{background:var(--bg-elevated,#1e1e1e);color:var(--text-primary,#fff);padding:6px 12px}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.08);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.15)}.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-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.w-full{width:100%}.h-full{height:100%}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.relative{position:relative}.absolute{position:absolute}.inset-0{top:0;right:0;bottom:0;left:0}.z-10{z-index:10}.z-50{z-index:50}.cursor-pointer{cursor:pointer}.select-none{user-select:none}.text-xs{font-size:12px}.text-sm{font-size:13px}.text-base{font-size:14px}.text-lg{font-size:16px}.text-xl{font-size:18px}.text-2xl{font-size:22px}.text-3xl{font-size:28px}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-center{text-align:center}.text-right{text-align:right}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-muted{color:var(--text-muted)}.text-accent{color:var(--accent)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-danger{color:var(--danger)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.p-2{padding:var(--space-2)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-6{padding:var(--space-6)}.p-8{padding:var(--space-8)}.px-2{padding-left:var(--space-2);padding-right:var(--space-2)}.px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.px-6{padding-left:var(--space-6);padding-right:var(--space-6)}.py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.py-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.py-4{padding-top:var(--space-4);padding-bottom:var(--space-4)}.m-0{margin:0}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-2{margin-bottom:var(--space-2)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.ml-auto{margin-left:auto}.mr-2{margin-right:var(--space-2)}.rounded{border-radius:var(--radius)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-full{border-radius:var(--radius-full)}.border{border:1px solid var(--border)}.border-light{border-color:var(--border-light)}.border-accent{border-color:var(--accent)}.bg-base{background:var(--bg-base)}.bg-elevated{background:var(--bg-elevated)}.bg-surface{background:var(--bg-surface)}.bg-hover{background:var(--bg-hover)}.bg-accent{background:var(--accent)}.bg-accent-light{background:var(--accent-light)}.shadow{box-shadow:var(--shadow)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-lg{box-shadow:var(--shadow-lg)}.transition{transition:var(--transition)}.transition-fast{transition:var(--transition-fast)}.hover\:bg-hover:hover{background:var(--bg-hover)}.hover\:border-light:hover{border-color:var(--border-light)}.hover\:text-accent:hover{color:var(--accent)}.hover\:opacity-80:hover{opacity:.8}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-80{opacity:.8}.grid{display:grid}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-3{grid-template-columns:repeat(3,1fr)}.grid-cols-4{grid-template-columns:repeat(4,1fr)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius);font-size:14px;font-weight:500;transition:all var(--transition);white-space:nowrap;cursor:pointer;border:1px solid transparent;letter-spacing:.01em;position:relative;overflow:hidden}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 1px 3px rgba(22,93,255,.3)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);box-shadow:0 4px 14px rgba(22,93,255,.35);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:var(--bg-surface);color:var(--text-primary);border-color:var(--border-light)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent);color:var(--text-primary)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.btn-danger{background:var(--danger);color:#fff;box-shadow:0 1px 3px rgba(255,69,58,.25)}.btn-danger:hover:not(:disabled){background:#ff6961;box-shadow:0 4px 14px rgba(255,69,58,.3)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:12px}.btn-lg{padding:var(--space-3) var(--space-6);font-size:15px}.btn-icon{padding:var(--space-2);width:32px;height:32px}.input{width:100%;padding:var(--space-2) var(--space-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:14px;transition:all var(--transition);outline:none}.input::placeholder{color:var(--text-muted)}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light),var(--shadow-glow);background:var(--bg-elevated)}.input:disabled{opacity:.4;cursor:not-allowed}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.card-hover{transition:all var(--transition);cursor:pointer}.card-hover:hover{border-color:var(--border-light);box-shadow:var(--shadow);transform:translateY(-2px)}.badge{display:inline-flex;align-items:center;padding:2px var(--space-2);border-radius:var(--radius-full);font-size:11px;font-weight:500}.badge-default{background:var(--bg-surface);color:var(--text-secondary)}.badge-accent{background:var(--accent-light);color:var(--accent)}.badge-success{background:var(--success-bg);color:var(--success)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge-danger{background:var(--danger-bg);color:var(--danger)}.divider{height:1px;background:var(--border);margin:var(--space-4) 0}.hidden{display:none!important}.react-flow__node{font-size:13px}.react-flow__background{background-color:var(--bg-base)!important}.react-flow__minimap{background:var(--bg-elevated)!important;border:1px solid var(--border);border-radius:var(--radius)}.react-flow__controls{background:var(--bg-elevated)!important;border:1px solid var(--border)!important;border-radius:var(--radius)!important;box-shadow:var(--shadow-sm)!important}.react-flow__controls-button{background:var(--bg-elevated)!important;border-color:var(--border)!important;color:var(--text-secondary)!important;fill:var(--text-secondary)!important}.react-flow__controls-button:hover{background:var(--bg-hover)!important;fill:var(--text-primary)!important}.glass{background:var(--bg-glass);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);border:1px solid var(--border)}.ring-accent{box-shadow:0 0 0 2px var(--accent-light),0 0 0 4px var(--accent-glow)}table{border-collapse:separate;border-spacing:0}th{font-weight:600;color:var(--text-secondary);text-transform:uppercase;font-size:11px;letter-spacing:.06em}td{color:var(--text-primary)}@keyframes pulse-glow{0%,to{opacity:.6}50%{opacity:1}}.animate-pulse-glow{animation:pulse-glow 2s ease-in-out infinite}