:root{--bg-primary:#fafbfc;--bg-secondary:#f3f4f6;--bg-node:#fff;--accent-primary:#6366f1;--accent-secondary:#10b981;--accent-warning:#f59e0b;--accent-danger:#ef4444;--text-primary:#111827;--text-secondary:#6b7280;--text-muted:#9ca3af;--border-light:#e5e7eb;--border-active:#6366f1;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 2px rgba(0,0,0,.05);--shadow-md:0 4px 6px -1px rgba(0,0,0,.1);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.1)}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:14px;line-height:1.5;color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1{font-size:28px;font-weight:700;letter-spacing:-.02em}h2{font-size:20px;letter-spacing:-.01em}h2,h3{font-weight:600}h3{font-size:16px}h4{font-size:14px;font-weight:600}code,pre{font-family:JetBrains Mono,monospace;font-size:13px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}::selection{background:var(--accent-primary);color:#fff}:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}button{font-family:inherit;cursor:pointer;border:none;background:none}input,select,textarea{font-family:inherit;font-size:inherit}a{color:var(--accent-primary);text-decoration:none}a:hover{text-decoration:underline}.react-flow__node{cursor:-webkit-grab!important;cursor:grab!important}.react-flow__node:active{cursor:-webkit-grabbing!important;cursor:grabbing!important}.react-flow__background{background-color:var(--bg-primary)!important}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes slideIn{0%{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-pulse{animation:pulse 2s ease-in-out infinite}.animate-spin{animation:spin 1s linear infinite}.animate-slide-in{animation:slideIn .25s ease-out}.animate-fade-in{animation:fadeIn .2s ease-out}