:root{--color-bg-primary: #0d0d0f;--color-bg-secondary: #111113;--color-bg-tertiary: #18181b;--color-bg-surface: #1e1e22;--color-border: #2a2a2e;--color-bg-base: #111113;--color-bg-deep: #0d0d0f;--color-bg-overlay: #2a2a2e;--color-text-primary: #e0e0e0;--color-text-secondary: #999999;--color-text-dim: #666666;--color-text-muted: #888888;--color-text-base: #e0e0e0;--color-text-subtle: #666666;--color-text-inverse: #0d0d0f;--color-accent: #7aa2f7;--color-accent-teal: #73daca;--color-accent-soft: rgba(122, 162, 247, .15);--color-error: #f7768e;--color-success: #9ece6a;--color-warning: #e0af68;--color-info: #7dcfff;--color-purple: #bb9af7;--color-danger: #f7768e;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-xl: 0 20px 60px rgba(0, 0, 0, .6);--font-mono: "JetBrains Mono", "Cascadia Code", "Fira Code", monospace;--font-sans: "Inter", "Segoe UI", system-ui, sans-serif;--font-size-xs: 10px;--font-size-sm: 12px;--font-size-base: 13px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 20px;--transition-fast: .1s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--z-base: 1;--z-dropdown: 100;--z-sticky: 200;--z-modal: 1000;--z-overlay: 2000;--z-toast: 9999}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:6px 14px;border-radius:var(--radius-md);border:1px solid transparent;font-size:var(--font-size-sm);font-family:inherit;cursor:pointer;transition:var(--transition-fast);white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.4;cursor:not-allowed}.btn--primary{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent)}.btn--primary:hover:not(:disabled){background:#7aa2f740}.btn--ghost{background:transparent;border-color:var(--color-bg-overlay);color:var(--color-text-muted)}.btn--ghost:hover:not(:disabled){border-color:var(--color-text-muted);color:var(--color-text-base)}.btn--danger{background:#f7768e1a;border-color:var(--color-danger);color:var(--color-danger)}.btn--danger:hover:not(:disabled){background:#f7768e33}.btn--success{background:#9ece6a1a;border-color:var(--color-success);color:var(--color-success)}.btn--success:hover:not(:disabled){background:#9ece6a33}.btn--icon{padding:4px 8px;min-width:28px}.btn--sm{padding:3px 10px;font-size:var(--font-size-xs)}.form-input,.param-input,.form-textarea{width:100%;padding:6px 10px;border-radius:var(--radius-sm);background:var(--color-bg-deep);border:1px solid var(--color-bg-overlay);color:var(--color-text-base);font-size:var(--font-size-sm);font-family:inherit;transition:border-color var(--transition-fast)}.form-input:focus,.param-input:focus,.form-textarea:focus{outline:none;border-color:var(--color-accent)}.form-input::placeholder,.param-input::placeholder,.form-textarea::placeholder{color:var(--color-text-subtle)}.form-input:disabled,.param-input:disabled,.form-textarea:disabled{opacity:.5;cursor:not-allowed}.form-textarea{resize:vertical;min-height:60px;font-family:var(--font-mono);font-size:11px}.form-label{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:4px}.form-group{display:flex;flex-direction:column;gap:4px}.form-error{font-size:var(--font-size-xs);color:var(--color-danger)}.node-body{display:flex;flex-direction:column;gap:8px;padding:8px}.param-row{display:flex;flex-direction:column;gap:3px}.param-label{font-size:10px;color:var(--color-text-subtle);text-transform:uppercase;letter-spacing:.5px}.param-input{font-size:11px;padding:4px 8px}.cdk-overlay-dark-backdrop{background:#0009}.cdk-overlay-container{z-index:var(--z-modal)}.app-dialog{background:var(--color-bg-base);border:1px solid var(--color-bg-overlay);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-xl);color:var(--color-text-base);font-family:var(--font-sans);min-width:320px}.app-dialog .dialog-title{font-size:var(--font-size-md);font-weight:600;margin:0 0 16px}.app-dialog .dialog-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.transparent-dialog{background:transparent;border:none;box-shadow:none;padding:0}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.node-executing{outline:2px solid #eab308;outline-offset:2px;animation:exec-pulse 1s infinite}.node-success{outline:2px solid #22c55e;outline-offset:2px}.node-error{outline:2px solid #ef4444;outline-offset:2px}.node-skipped{outline:2px solid #555;outline-offset:2px;opacity:.6}@keyframes exec-pulse{0%,to{outline-color:#eab308;box-shadow:0 0 8px #eab30866}50%{outline-color:#eab30888;box-shadow:0 0 2px #eab30833}}.warning-trigger .f-connection-point[data-port-id^=trigger-]{background:#f59e0b}.unreachable-node{opacity:.6}.error-node{animation:error-pulse 2s ease-in-out infinite}@keyframes error-pulse{0%,to{outline-color:#f59e0b}50%{outline-color:#f59e0b80}}.port-reject-flash{animation:port-reject-flash .5s ease-out}@keyframes port-reject-flash{0%{background:#ef4444;box-shadow:0 0 8px #ef4444}to{background:inherit;box-shadow:none}}.json-warning-line{background:#f59e0b14!important;border-left:3px solid #f59e0b!important}.json-warning-glyph{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ctext x='2' y='13' font-size='12'%3E%E2%9A%A0%3C/text%3E%3C/svg%3E") center center/14px no-repeat}.incompatible-flash-handle{background:#ef4444!important;border-color:#ef4444!important;animation:flash-pulse .5s ease-out}@keyframes flash-pulse{0%{transform:scale(1.5)}to{transform:scale(1)}}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{font-family:var(--font-sans);font-size:var(--font-size-base);background:var(--color-bg-base);color:var(--color-text-base);line-height:1.5;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--color-bg-deep)}::-webkit-scrollbar-thumb{background:var(--color-bg-overlay);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-subtle)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}::selection{background:#7aa2f74d;color:var(--color-text-base)}@keyframes fadeInAnim{0%{opacity:0}to{opacity:1}}@keyframes slideUpAnim{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleInAnim{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulseGlowAnim{0%{box-shadow:0 0 0 0 var(--pulse-color, rgba(122, 162, 247, .4))}50%{box-shadow:0 0 8px 4px var(--pulse-color, rgba(122, 162, 247, .4))}to{box-shadow:0 0 0 0 var(--pulse-color, rgba(122, 162, 247, .4))}}@keyframes screenFadeIn{0%{opacity:0}to{opacity:1}}@keyframes buttonStaggerIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes cursorBlink{0%,to{opacity:1}50%{opacity:0}}.anim-fade-in{animation:fadeInAnim .3s ease-out both}.anim-slide-up{animation:slideUpAnim .2s ease-out both}.anim-scale-in{animation:scaleInAnim .15s ease-out both}.anim-screen-in{animation:screenFadeIn .35s ease-out both}.anim-stagger-btn{animation:buttonStaggerIn .3s ease-out both}.app-dialog{background:#1a1b2e;border:1px solid #414868;border-radius:10px;padding:20px;box-shadow:0 20px 60px #0009;color:#c0caf5;font-family:inherit;min-width:320px}.dialog-title{font-size:15px;font-weight:600;margin:0 0 16px;color:#c0caf5}.dialog-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.btn{padding:8px 16px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;border:none;outline:none}.btn--primary{background:#7aa2f7;color:#0d0e14}.btn--primary:hover:not(:disabled){background:#89b4fa}.btn--primary:disabled{opacity:.5;cursor:not-allowed}.btn--ghost{background:transparent;color:#7982a9;border:1px solid #414868}.btn--ghost:hover:not(:disabled){background:#ffffff0d;color:#c0caf5}.btn--danger{background:#f7768e;color:#0d0e14}.btn--danger:hover:not(:disabled){background:#f88ba1}.btn--sm{padding:6px 12px;font-size:12px}f-selection-area{border:1px dashed rgba(255,255,255,.5)!important;background:#6495ed1a!important;pointer-events:none!important;box-sizing:border-box!important}.f-connection svg path{stroke-width:2px!important}.f-connection circle[f-connection-drag-handle-end],.f-connection circle[f-connection-drag-handle-start]{display:none!important}.f-connection[data-connection-type] path[fConnectionSelection]{stroke:transparent!important;stroke-width:20px!important;pointer-events:stroke!important}.f-connection.f-selected svg path:not([fConnectionSelection]){animation:edge-pulse 1.2s ease-in-out infinite!important;stroke-width:3px!important;filter:drop-shadow(0 0 3px currentColor)!important}.f-connection[data-connection-type=trigger]{--f-connection-handle-fill: #888888}.f-connection[data-connection-type=trigger] svg path{stroke:#888!important}.f-connection[data-connection-type=trigger].f-selected svg path:not([fConnectionSelection]){stroke:silver!important}.f-connection[data-connection-type=data]{--f-connection-handle-fill: #ffb86c}.f-connection[data-connection-type=data] svg path{stroke:#ffb86c!important;stroke-dasharray:6 4!important}.f-connection[data-connection-type=data].f-selected svg path:not([fConnectionSelection]){stroke:#ffcc8f!important;stroke-dasharray:none!important}.f-connection[data-connection-type=error]{--f-connection-handle-fill: #ef4444}.f-connection[data-connection-type=error] svg path{stroke:#ef4444!important;stroke-dasharray:6 3!important;opacity:.5!important}.f-connection[data-connection-type=error].f-selected svg path:not([fConnectionSelection]){opacity:1!important;stroke:#ff6b6b!important}.f-connection[data-connection-type=slot]{--f-connection-handle-fill: #888888}.f-connection[data-connection-type=slot] svg path{stroke:#888!important}.f-connection[data-connection-type=default] svg path{stroke:#565f89!important}@keyframes edge-pulse{0%,to{stroke-width:2.5px;opacity:1}50%{stroke-width:4px;opacity:.7}}.ghost-edge svg path{stroke:#22c55e!important;stroke-width:2px!important;stroke-dasharray:6 3!important;opacity:.5!important;animation:ghost-dash 1s linear infinite!important}.ghost-edge circle[f-connection-drag-handle-end],.ghost-edge circle[f-connection-drag-handle-start]{display:none!important}.ghost-edge path[fConnectionSelection]{pointer-events:none!important}@keyframes ghost-dash{to{stroke-dashoffset:-9}}.edge-label--data{font-size:10px;font-weight:600;font-family:JetBrains Mono,Fira Code,monospace;color:#ffb86c;background:#ffb86c14;padding:2px 6px;border-radius:3px;pointer-events:none;white-space:nowrap;z-index:5}.edge-icon--error{width:16px;height:16px;border-radius:50%;background:#ef4444;color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:help;pointer-events:all;z-index:5;line-height:1}.f-connection-dragging .wn-handle{box-shadow:0 0 0 3px #7aa2f766;transform:scale(1.3)!important}f-minimap{position:absolute!important;bottom:32px;right:20px;width:160px!important;height:100px!important;background:#111113;border:1px solid #2a2a2e;border-radius:6px;overflow:hidden;z-index:100}f-minimap rect.f-minimap-view{fill:#7aa2f71f!important;stroke:#7aa2f780!important;stroke-width:1.5!important}f-minimap rect.minimap-green{fill:#9ece6a!important}f-minimap rect.minimap-red{fill:#f7768e!important}f-minimap rect.minimap-orange{fill:#ff9e64!important}f-minimap rect.minimap-purple{fill:#bb9af7!important}f-minimap rect.minimap-yellow{fill:#e0af68!important}f-minimap rect.minimap-teal{fill:#73daca!important}f-minimap rect.minimap-blue{fill:#7aa2f7!important}f-minimap rect.minimap-cyan{fill:#06b6d4!important}f-minimap rect.minimap-lightblue{fill:#7dcfff!important}f-minimap rect.minimap-violet{fill:#7c3aed!important}.wn-handle{position:absolute!important;z-index:10!important;cursor:crosshair!important;transition:transform .12s!important}.wn-handle:hover{transform:scale(1.3)!important}.wn-handle--top{width:12px!important;height:12px!important;border-radius:50%!important;background:#1a1b26!important;border:2px solid #565f89!important;top:-6px!important;left:50%!important;transform:translate(-50%)!important}.wn-handle--top:hover{transform:translate(-50%) scale(1.3)!important}.wn-handle--bottom{width:12px!important;height:12px!important;border-radius:50%!important;background:#1a1b26!important;border:2px solid #565f89!important;bottom:-6px!important;left:50%!important;transform:translate(-50%)!important}.wn-handle--bottom:hover{transform:translate(-50%) scale(1.3)!important}.wn-handle--left{width:10px!important;height:10px!important;border-radius:3px!important;background:#1a1b26!important;border:2px solid #e0af68!important;left:-5px!important;top:50%!important;transform:translateY(-50%)!important}.wn-handle--left:hover{transform:translateY(-50%) scale(1.3)!important}.wn-handle--right{width:10px!important;height:10px!important;border-radius:3px!important;background:#1a1b26!important;border:2px solid #e0af68!important;right:-5px!important;top:50%!important;transform:translateY(-50%)!important}.wn-handle--right:hover{transform:translateY(-50%) scale(1.3)!important}.wn-handle--bottom-left{width:12px!important;height:12px!important;border-radius:50%!important;background:#1a1b26!important;border:2px solid #9ece6a!important;bottom:-6px!important;left:33.33%!important;transform:translate(-50%)!important;position:absolute!important;z-index:10!important;cursor:crosshair!important}.wn-handle--bottom-left:hover{transform:translate(-50%) scale(1.3)!important;background:#9ece6a!important}.wn-handle--bottom-right{width:12px!important;height:12px!important;border-radius:50%!important;background:#1a1b26!important;border:2px solid #f7768e!important;bottom:-6px!important;left:66.66%!important;transform:translate(-50%)!important;position:absolute!important;z-index:10!important;cursor:crosshair!important}.wn-handle--bottom-right:hover{transform:translate(-50%) scale(1.3)!important;background:#f7768e!important}
