@keyframes dcpop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes dcpopover{0%{opacity:0;transform:translateY(-4px) scale(.97)}to{opacity:1;transform:none}}@keyframes dcfade{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@keyframes dcpanel{0%{opacity:0;transform:translateX(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.editor-shell *{animation-duration:.001ms!important}}.editor-shell .rf-connecting-from-source .react-flow__node:not([data-id^=__block__]):not(:has(.react-flow__handle.connectingfrom)) .react-flow__handle.target>span,.editor-shell .rf-connecting-from-target .react-flow__node:not([data-id^=__block__]):not(:has(.react-flow__handle.connectingfrom)) .react-flow__handle.source>span{box-shadow:0 0 0 3px rgba(90,158,240,.22),0 0 11px rgba(90,158,240,.55)!important}.editor-shell .rf-connecting-from-source .react-flow__node:has(.react-flow__handle.connectingfrom) .react-flow__handle,.editor-shell .rf-connecting-from-target .react-flow__node:has(.react-flow__handle.connectingfrom) .react-flow__handle{opacity:.45}.editor-shell .react-flow__handle.connectingto.valid>span{border-color:var(--success)!important;box-shadow:0 0 0 2px var(--bg-canvas-cold),0 0 0 4px color-mix(in srgb,var(--success) 45%,transparent),0 0 12px color-mix(in srgb,var(--success) 60%,transparent)!important}.editor-shell .mono,.editor-shell .tabular-nums,.editor-shell code,.editor-shell pre{font-family:var(--font-mono);font-feature-settings:"zero"}.editor-shell .esh-hover-raise{transition:background-color var(--motion-instant) var(--ease-out)}.editor-shell .esh-hover-raise:focus-visible,.editor-shell .esh-hover-raise:hover{background-color:var(--bg-card-hover-cold,rgba(255,255,255,.064))}.editor-shell .esh-hover-text{transition:color var(--motion-instant) var(--ease-out)}.editor-shell .esh-hover-text:focus-visible,.editor-shell .esh-hover-text:hover{color:var(--text-strong-cold,#f3f5f9)}.editor-shell .esh-hover-border{transition:border-color var(--motion-instant) var(--ease-out)}.editor-shell .esh-hover-border:focus-visible,.editor-shell .esh-hover-border:hover{border-color:var(--border-strong-cold,rgba(255,255,255,.16))}:where(.editor-shell) :where(button){transition-property:background-color,color,border-color,box-shadow,opacity,transform;transition-duration:var(--motion-base);transition-timing-function:var(--ease-standard)}:where(.editor-shell) :where(input,textarea){transition-property:border-color,box-shadow,background-color;transition-duration:var(--motion-base);transition-timing-function:var(--ease-standard)}@media (prefers-reduced-motion:reduce){:where(.editor-shell) :where(button,input,textarea){transition-duration:.001ms}}.editor-shell kbd{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 4px;font-family:var(--font-mono);font-size:10px;font-weight:500;color:var(--text-muted);background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:5px;line-height:1}.editor-shell .flowmatic-node{transition:box-shadow var(--motion-fast) var(--ease-out),transform var(--motion-instant) var(--ease-out),border-color var(--motion-fast) var(--ease-out);backdrop-filter:none}.editor-shell .react-flow__node:has(.flowmatic-node):focus-visible{outline:none;box-shadow:none}.editor-shell .react-flow__node:focus-visible .flowmatic-node{outline:2px solid var(--node-accent,var(--border-focus));outline-offset:-1px;box-shadow:var(--lift-2)!important}@media (forced-colors:active){.editor-shell .react-flow__node:focus-visible .flowmatic-node{outline:2px solid CanvasText!important;outline-offset:-1px!important}}.editor-shell .react-flow__handle{width:13px;height:13px;border-radius:50%;background:var(--node-bg-cold);border:2px solid var(--port-any);transition:transform var(--motion-fast) var(--ease-emphasized),box-shadow var(--motion-fast) var(--ease-out),border-color var(--motion-fast) var(--ease-out)}.editor-shell .react-flow__handle.connectionindicator{cursor:crosshair}.editor-shell .react-flow__edge-path{stroke-width:2;stroke-linecap:round;transition:stroke var(--motion-fast) var(--ease-out),stroke-width var(--motion-fast) var(--ease-out),opacity var(--motion-fast) var(--ease-out)}.editor-shell .react-flow__edge.selected .react-flow__edge-path,.editor-shell .react-flow__edge:hover .react-flow__edge-path{stroke:var(--accent-brand-text);stroke-width:2.6}.editor-shell .edge-ins-i,.editor-shell .react-flow__edge .edge-insert-btn{background:var(--accent-brand)!important;border:2px solid var(--canvas-bg)!important;color:var(--on-brand)!important;box-shadow:var(--lift-2)!important}.editor-shell .btn-primary,.editor-shell button[data-testid=test-node]{background:var(--accent-brand)!important;border:none!important;color:var(--on-brand)!important;box-shadow:var(--lift-1),inset 0 1px 0 rgba(255,255,255,.18)!important}.editor-shell .btn-primary:hover:not(:disabled),.editor-shell button[data-testid=test-node]:hover:not(:disabled){filter:brightness(.88)}.editor-shell .tab-active{color:var(--text-strong)!important;background:var(--bg-card-hover)!important;box-shadow:inset 0 0 0 1px var(--border-subtle)}.editor-shell .field-label{font-size:11.5px;font-weight:600;color:var(--text-default)}.editor-shell .req-star,.editor-shell .required-mark{color:var(--accent-brand-text);font-size:10px}.editor-shell .chip-var,.editor-shell .var-chip{font-family:var(--font-mono);font-size:10.5px;color:var(--accent-brand-text);background:var(--accent-brand-soft);border:1px solid var(--accent-brand-ring)}.editor-shell aside[data-workshop]{background:var(--bg-panel-solid,var(--bg-app))!important}.editor-shell .react-flow__background{background-color:transparent;-webkit-mask-image:radial-gradient(ellipse 120% 115% at 50% 45%,black 72%,rgba(0,0,0,.35) 100%);mask-image:radial-gradient(ellipse 120% 115% at 50% 45%,black 72%,rgba(0,0,0,.35) 100%)}.editor-shell .react-flow__controls,.editor-shell .react-flow__controls-button{border-radius:11px!important;background:var(--bg-card)!important;border:1px solid var(--border-subtle)!important;box-shadow:var(--lift-1)!important;backdrop-filter:blur(12px)}.editor-shell .react-flow__controls-button:hover{color:var(--text-strong);background:var(--bg-card-hover)!important}.editor-shell ::-webkit-scrollbar{width:10px;height:10px}.editor-shell ::-webkit-scrollbar-track{background:transparent}.editor-shell ::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);border-radius:99px;border:3px solid transparent;background-clip:padding-box}.editor-shell ::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.18);background-clip:padding-box}.editor-shell .pill{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.01em}.editor-shell .command-palette,.editor-shell [data-node-search]{background:var(--bg-panel-solid)!important;border:1px solid var(--border-strong,var(--border-subtle))!important;box-shadow:var(--lift-4)!important;border-radius:16px!important}.editor-shell .eyebrow{font-size:10px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--text-subtle)}.editor-shell .divider-v{width:1px;height:18px;background:var(--border-subtle);margin:0 2px}.editor-shell .react-flow{background:transparent;isolation:isolate}.editor-shell .react-flow:after,.editor-shell [data-editor-workspace]>.fm-canvas-fx:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;opacity:.022;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}.editor-shell .fm-canvas-host[data-external-backdrop=true] .react-flow:after{content:none}.editor-shell .react-flow__edge.selected .react-flow__edge-path{stroke-dasharray:7 5;--dash-span:12px;animation:dash-march var(--motion-slow) linear infinite}.editor-shell .react-flow__handle:hover>span{transform:scale(1.22);background:color-mix(in srgb,var(--port-accent,var(--pin-any)) 14%,var(--bg-panel-solid));box-shadow:0 0 0 2px var(--bg-canvas-cold),0 0 0 5px color-mix(in srgb,var(--port-accent,var(--pin-any)) 16%,transparent)}.editor-shell .react-flow__minimap{border-radius:var(--radius-card)!important;overflow:hidden;border:1px solid var(--border-cold)!important;background:var(--bg-float-solid-cold)!important;box-shadow:var(--lift-2)!important;margin-bottom:56px}.editor-shell .react-flow__nodesselection-rect,.editor-shell .react-flow__selection{background:rgb(var(--brand-rgb)/.06);border:1.5px dashed rgb(var(--brand-rgb)/.45);border-radius:8px}.editor-shell .esh-embed-body{container-type:inline-size;container-name:esh-embed}@container esh-embed (min-width: 300px){.editor-shell .esh-embed-grid-title{grid-template-columns:minmax(0,1fr) 112px}}@container esh-embed (min-width: 420px){.editor-shell .esh-embed-grid-pair{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)}}@container esh-embed (min-width: 600px){.editor-shell .esh-embed-grid-media{grid-template-columns:repeat(2,minmax(0,1fr))}}.editor-shell .rf-moving .react-flow__viewport{will-change:transform}.editor-shell .rf-moving .react-flow__viewport *,.editor-shell .rf-moving .react-flow__viewport :after,.editor-shell .rf-moving .react-flow__viewport :before{animation-play-state:paused!important}.fm-issue-chip-anchor{position:absolute;top:0;right:0;z-index:6;display:inline-flex;transform-origin:100% 50%;transform:translateY(-50%) scale(var(--issue-chip-scale,1))}.fm-canvas-fx-layer{position:absolute;left:0;top:0;background-repeat:repeat;will-change:transform}.fm-canvas-fx-dots{background-image:radial-gradient(circle at center,var(--canvas-dot,rgba(255,255,255,.075)) 0 1.1px,transparent 1.45px)}.fm-canvas-fx-breathe{animation:fm-fx-breathe 9s ease-in-out infinite alternate}@keyframes fm-fx-breathe{0%{opacity:.68}to{opacity:1}}.fm-canvas-fx-spot{position:absolute;left:0;top:0;width:560px;height:560px;border-radius:50%;background:radial-gradient(closest-side,var(--canvas-spotlight,rgba(255,255,255,.03)),transparent);opacity:0;transition:opacity .42s var(--ease-out);will-change:transform,opacity}.fm-edge-flow path{fill:none;stroke-linecap:round}.fm-edge-flow-stream{stroke-width:1.6;stroke-dasharray:1.5 13;vector-effect:non-scaling-stroke;animation:fm-flow-stream 1.7s linear infinite}@keyframes fm-flow-stream{to{stroke-dashoffset:-29}}.fm-edge-flow-packet{stroke-width:4;animation:fm-flow-packet 1.267s linear infinite}.fm-edge-flow-halo{stroke-width:10}@keyframes fm-flow-packet{to{stroke-dashoffset:-33.3333}}.editor-shell .react-flow__node.ai-node-enter>*,.editor-shell .react-flow__node.fm-node-enter>*{animation:fm-node-enter .64s cubic-bezier(.16,1,.3,1) backwards;animation-delay:var(--fm-enter-delay,0s)}@keyframes fm-node-enter{0%{opacity:0;clip-path:inset(40% 10% 40% 10% round 14px)}40%{opacity:1}to{opacity:1;clip-path:inset(-56px -56px -56px -56px round 14px)}}.editor-shell .react-flow__node.ai-node-enter .flowmatic-node:after,.editor-shell .react-flow__node.fm-node-enter .flowmatic-node:after{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;border:1.5px solid var(--node-accent,var(--brand-400));box-shadow:0 0 24px -2px color-mix(in srgb,var(--node-accent,var(--brand-400)) 60%,transparent);opacity:0;animation:fm-node-enter-ring .9s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--fm-enter-delay, 0s) + .14s)}@keyframes fm-node-enter-ring{0%{opacity:.95;transform:scale(.97)}to{opacity:0;transform:scale(1.07)}}.editor-shell .fm-edge-draw{stroke-dasharray:1;stroke-dashoffset:1;opacity:0;animation:fm-edge-draw .64s cubic-bezier(.4,0,.2,1) forwards;animation-delay:var(--fm-enter-delay,0s)}@keyframes fm-edge-draw{0%{stroke-dashoffset:1;opacity:1}62%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:0;opacity:0}}.editor-shell .fm-edge-enter{animation:fm-edge-settle .34s ease-out backwards;animation-delay:calc(var(--fm-enter-delay, 0s) + .36s)}@keyframes fm-edge-settle{0%{opacity:0}to{opacity:1}}@property --fm-orbit{syntax:"<angle>";inherits:false;initial-value:0deg}.editor-shell .flowmatic-node[data-run-status=running]:after{content:"";position:absolute;inset:-3px;border-radius:calc(14px + 3px);padding:2px;pointer-events:none;background:conic-gradient(from var(--fm-orbit),transparent 0deg,color-mix(in srgb,var(--node-accent,var(--brand-400)) 20%,transparent) 40deg,var(--node-accent,var(--brand-400)) 110deg,transparent 130deg,transparent 1turn);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);animation:fm-run-orbit 1.4s linear infinite}@keyframes fm-run-orbit{to{--fm-orbit:360deg}}.editor-shell .flowmatic-node[data-run-status=running]{animation:fm-run-arrive .52s cubic-bezier(.16,1,.3,1)}@keyframes fm-run-arrive{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--node-accent,var(--brand-400)) 70%,transparent)}to{box-shadow:0 0 0 12px transparent}}.editor-shell .fm-motion-off .react-flow__viewport :after,.editor-shell .fm-motion-off .react-flow__viewport :before,.editor-shell .fm-motion-off .react-flow__viewport :not(.animate-spin){animation:none!important}.editor-shell .fm-motion-off .fm-canvas-fx-breathe{animation:none}@media (prefers-reduced-motion:reduce){.editor-shell .fm-edge-enter,.editor-shell .react-flow__node .flowmatic-node:after,.editor-shell .react-flow__node.ai-node-enter>*,.editor-shell .react-flow__node.fm-node-enter>*,.fm-canvas-fx-breathe{animation:none!important}.editor-shell .fm-edge-draw,.fm-edge-flow{display:none}}