@particle-academy/fancy-flow 0.41.0 → 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConfigFieldRenderer-4xK9hzvd.d.cts → ConfigFieldRenderer-BHQDZer6.d.ts} +10 -2
- package/dist/{ConfigFieldRenderer-D2TejNY1.d.ts → ConfigFieldRenderer-LotNHeG8.d.cts} +10 -2
- package/dist/{chunk-UX65ML3J.js → chunk-55KQS3LK.js} +25 -2
- package/dist/chunk-55KQS3LK.js.map +1 -0
- package/dist/{chunk-WOO4B7M5.js → chunk-T3VQX3XB.js} +3 -3
- package/dist/{chunk-WOO4B7M5.js.map → chunk-T3VQX3XB.js.map} +1 -1
- package/dist/engine.d.cts +3 -3
- package/dist/engine.d.ts +3 -3
- package/dist/fields/react-fancy.d.cts +3 -3
- package/dist/fields/react-fancy.d.ts +3 -3
- package/dist/index.cjs +351 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +126 -7
- package/dist/index.d.ts +126 -7
- package/dist/index.js +318 -22
- package/dist/index.js.map +1 -1
- package/dist/registry/index.d.cts +3 -3
- package/dist/registry/index.d.ts +3 -3
- package/dist/{registry-BNyT66SS.d.cts → registry-C9KMVpn7.d.cts} +1 -1
- package/dist/{registry-CS7kjMto.d.ts → registry-FGCBprcn.d.ts} +1 -1
- package/dist/registry.cjs +23 -0
- package/dist/registry.cjs.map +1 -1
- package/dist/registry.js +1 -1
- package/dist/screens.js +3 -3
- package/dist/styles.css +96 -0
- package/dist/styles.css.map +1 -1
- package/dist/{types-cAdD1Og2.d.cts → types-B78Rm69S.d.cts} +81 -2
- package/dist/{types-Cf75IbxY.d.ts → types-JViq8reb.d.ts} +81 -2
- package/dist/ux.d.cts +1 -1
- package/dist/ux.d.ts +1 -1
- package/package.json +2 -1
- package/dist/chunk-UX65ML3J.js.map +0 -1
package/dist/registry.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ANY_PORT_TYPE, BUILTIN_KINDS, DEFAULT_MAX_DEPTH, RegistryNode, buildNodeTypes, createConnectionValidator, declaredRoutes, defaultPortCompatibility, llmRouterExecutor as llmBranchExecutor, llmRouterExecutor, registerBuiltinKinds, resolveFallbackPort, subflowExecutor, subflowMode, subflowPorts } from './chunk-
|
|
1
|
+
export { ANY_PORT_TYPE, BUILTIN_KINDS, DEFAULT_MAX_DEPTH, RegistryNode, buildNodeTypes, createConnectionValidator, declaredRoutes, defaultPortCompatibility, llmRouterExecutor as llmBranchExecutor, llmRouterExecutor, registerBuiltinKinds, resolveFallbackPort, subflowExecutor, subflowMode, subflowPorts } from './chunk-55KQS3LK.js';
|
|
2
2
|
import './chunk-OWENS2H5.js';
|
|
3
3
|
export { LEGACY_PAUSE_PREFIXES, PAUSE_PREFIX, decodePause, encodePause, isPause, pauseForHuman } from './chunk-UEOE6B52.js';
|
|
4
4
|
export { capabilityStatus, getLlmClient, getWorkflowResolver, isResolutionFailure, registerLlmClient, registerWorkflowResolver } from './chunk-USL4FMFU.js';
|
package/dist/screens.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { FlowViewer } from './chunk-
|
|
2
|
-
export { FlowViewer } from './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
import { FlowViewer } from './chunk-T3VQX3XB.js';
|
|
2
|
+
export { FlowViewer } from './chunk-T3VQX3XB.js';
|
|
3
|
+
import './chunk-55KQS3LK.js';
|
|
4
4
|
import './chunk-OWENS2H5.js';
|
|
5
5
|
import './chunk-UEOE6B52.js';
|
|
6
6
|
import './chunk-USL4FMFU.js';
|
package/dist/styles.css
CHANGED
|
@@ -1893,4 +1893,100 @@ svg.react-flow__connectionline {
|
|
|
1893
1893
|
background: #a855f722;
|
|
1894
1894
|
color: #c084fc;
|
|
1895
1895
|
}
|
|
1896
|
+
.ff-expression {
|
|
1897
|
+
position: relative;
|
|
1898
|
+
}
|
|
1899
|
+
.ff-expression__bar {
|
|
1900
|
+
display: flex;
|
|
1901
|
+
align-items: center;
|
|
1902
|
+
gap: 8px;
|
|
1903
|
+
margin-top: 3px;
|
|
1904
|
+
}
|
|
1905
|
+
.ff-expression__helpbtn {
|
|
1906
|
+
background: none;
|
|
1907
|
+
border: none;
|
|
1908
|
+
padding: 0;
|
|
1909
|
+
cursor: pointer;
|
|
1910
|
+
font-family: var(--ff-font-mono, ui-monospace, monospace);
|
|
1911
|
+
font-size: 10px;
|
|
1912
|
+
color: var(--ff-accent);
|
|
1913
|
+
text-decoration: underline dotted;
|
|
1914
|
+
}
|
|
1915
|
+
.ff-expression__hint {
|
|
1916
|
+
font-size: 10px;
|
|
1917
|
+
color: var(--ff-fg-3);
|
|
1918
|
+
}
|
|
1919
|
+
.ff-expression__hint code {
|
|
1920
|
+
font-family: var(--ff-font-mono, ui-monospace, monospace);
|
|
1921
|
+
}
|
|
1922
|
+
.ff-expression__menu {
|
|
1923
|
+
position: absolute;
|
|
1924
|
+
z-index: 20;
|
|
1925
|
+
left: 0;
|
|
1926
|
+
right: 0;
|
|
1927
|
+
margin: 2px 0 0;
|
|
1928
|
+
padding: 4px;
|
|
1929
|
+
list-style: none;
|
|
1930
|
+
max-height: 208px;
|
|
1931
|
+
overflow-y: auto;
|
|
1932
|
+
background: var(--ff-bg-1);
|
|
1933
|
+
border: 1px solid var(--ff-border-1);
|
|
1934
|
+
border-radius: 6px;
|
|
1935
|
+
box-shadow: 0 8px 24px rgb(0 0 0 / 18%);
|
|
1936
|
+
}
|
|
1937
|
+
.ff-expression__option {
|
|
1938
|
+
display: flex;
|
|
1939
|
+
flex-direction: column;
|
|
1940
|
+
gap: 1px;
|
|
1941
|
+
width: 100%;
|
|
1942
|
+
padding: 5px 7px;
|
|
1943
|
+
border: none;
|
|
1944
|
+
border-radius: 4px;
|
|
1945
|
+
background: none;
|
|
1946
|
+
text-align: left;
|
|
1947
|
+
cursor: pointer;
|
|
1948
|
+
}
|
|
1949
|
+
.ff-expression__option:hover,
|
|
1950
|
+
.ff-expression__option.is-active {
|
|
1951
|
+
background: var(--ff-bg-2);
|
|
1952
|
+
}
|
|
1953
|
+
.ff-expression__path {
|
|
1954
|
+
font-family: var(--ff-font-mono, ui-monospace, monospace);
|
|
1955
|
+
font-size: 11px;
|
|
1956
|
+
color: var(--ff-fg-1);
|
|
1957
|
+
}
|
|
1958
|
+
.ff-expression__source {
|
|
1959
|
+
font-size: 10px;
|
|
1960
|
+
color: var(--ff-accent);
|
|
1961
|
+
}
|
|
1962
|
+
.ff-expression__desc {
|
|
1963
|
+
font-size: 10px;
|
|
1964
|
+
color: var(--ff-fg-3);
|
|
1965
|
+
}
|
|
1966
|
+
.ff-expression__help {
|
|
1967
|
+
margin-top: 4px;
|
|
1968
|
+
padding: 7px 8px;
|
|
1969
|
+
background: var(--ff-bg-2);
|
|
1970
|
+
border: 1px solid var(--ff-border-1);
|
|
1971
|
+
border-radius: 6px;
|
|
1972
|
+
font-size: 10px;
|
|
1973
|
+
color: var(--ff-fg-2);
|
|
1974
|
+
}
|
|
1975
|
+
.ff-expression__help dl {
|
|
1976
|
+
margin: 0;
|
|
1977
|
+
display: grid;
|
|
1978
|
+
gap: 4px;
|
|
1979
|
+
}
|
|
1980
|
+
.ff-expression__help dt code {
|
|
1981
|
+
font-family: var(--ff-font-mono, ui-monospace, monospace);
|
|
1982
|
+
color: var(--ff-fg-1);
|
|
1983
|
+
}
|
|
1984
|
+
.ff-expression__help dd {
|
|
1985
|
+
margin: 0 0 0 2px;
|
|
1986
|
+
color: var(--ff-fg-3);
|
|
1987
|
+
}
|
|
1988
|
+
.ff-expression__note {
|
|
1989
|
+
margin: 6px 0 0;
|
|
1990
|
+
color: var(--ff-fg-3);
|
|
1991
|
+
}
|
|
1896
1992
|
/*# sourceMappingURL=styles.css.map */
|
package/dist/styles.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/@xyflow/react/dist/style.css","../src/styles.css"],"sourcesContent":["/* this gets exported as style.css and can be used for the default theming */\n/* these are the necessary styles for React/Svelte Flow, they get used by base.css and style.css */\n.react-flow {\n direction: ltr;\n\n --xy-edge-stroke-default: #b1b1b7;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #555;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);\n\n --xy-minimap-background-color-default: #fff;\n --xy-minimap-mask-background-color-default: rgba(240, 240, 240, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #e2e2e2;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: transparent;\n --xy-background-pattern-dots-color-default: #91919a;\n --xy-background-pattern-lines-color-default: #eee;\n --xy-background-pattern-cross-color-default: #e2e2e2;\n background-color: var(--xy-background-color, var(--xy-background-color-default));\n --xy-node-color-default: inherit;\n --xy-node-border-default: 1px solid #1a192b;\n --xy-node-background-color-default: #fff;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;\n --xy-node-border-radius-default: 3px;\n\n --xy-handle-background-color-default: #1a192b;\n --xy-handle-border-color-default: #fff;\n\n --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);\n\n --xy-controls-button-background-color-default: #fefefe;\n --xy-controls-button-background-color-hover-default: #f4f4f4;\n --xy-controls-button-color-default: inherit;\n --xy-controls-button-color-hover-default: inherit;\n --xy-controls-button-border-color-default: #eee;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #ffffff;\n --xy-edge-label-color-default: inherit;\n --xy-resize-background-color-default: #3367d9;\n}\n.react-flow.dark {\n --xy-edge-stroke-default: #3e3e3e;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #727272;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(150, 150, 150, 0.25);\n\n --xy-minimap-background-color-default: #141414;\n --xy-minimap-mask-background-color-default: rgba(60, 60, 60, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #2b2b2b;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: #141414;\n --xy-background-pattern-dots-color-default: #777;\n --xy-background-pattern-lines-color-default: #777;\n --xy-background-pattern-cross-color-default: #777;\n --xy-node-color-default: #f8f8f8;\n --xy-node-border-default: 1px solid #3c3c3c;\n --xy-node-background-color-default: #1e1e1e;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;\n\n --xy-handle-background-color-default: #bebebe;\n --xy-handle-border-color-default: #1e1e1e;\n\n --xy-selection-background-color-default: rgba(200, 200, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(200, 200, 220, 0.8);\n\n --xy-controls-button-background-color-default: #2b2b2b;\n --xy-controls-button-background-color-hover-default: #3e3e3e;\n --xy-controls-button-color-default: #f8f8f8;\n --xy-controls-button-color-hover-default: #fff;\n --xy-controls-button-border-color-default: #5b5b5b;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #141414;\n --xy-edge-label-color-default: #f8f8f8;\n}\n.react-flow__background {\n background-color: var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));\n pointer-events: none;\n z-index: -1;\n}\n.react-flow__container {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n}\n.react-flow__pane {\n z-index: 1;\n touch-action: none;\n}\n.react-flow__pane.draggable {\n cursor: grab;\n }\n.react-flow__pane.dragging {\n cursor: grabbing;\n }\n.react-flow__pane.selection {\n cursor: pointer;\n }\n.react-flow__viewport {\n transform-origin: 0 0;\n z-index: 2;\n pointer-events: none;\n}\n.react-flow__renderer {\n z-index: 4;\n}\n.react-flow__selection {\n z-index: 6;\n}\n.react-flow__nodesselection-rect:focus,\n.react-flow__nodesselection-rect:focus-visible {\n outline: none;\n}\n.react-flow__edge-path {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));\n fill: none;\n}\n.react-flow__connection-path {\n stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));\n stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));\n fill: none;\n}\n.react-flow .react-flow__edges {\n position: absolute;\n}\n.react-flow .react-flow__edges svg {\n overflow: visible;\n position: absolute;\n pointer-events: none;\n }\n.react-flow__edge {\n pointer-events: visibleStroke;\n}\n.react-flow__edge.selectable {\n cursor: pointer;\n }\n.react-flow__edge.animated path {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\n.react-flow__edge.animated path.react-flow__edge-interaction {\n stroke-dasharray: none;\n animation: none;\n }\n.react-flow__edge.inactive {\n pointer-events: none;\n }\n.react-flow__edge.selected,\n .react-flow__edge:focus,\n .react-flow__edge:focus-visible {\n outline: none;\n }\n.react-flow__edge.selected .react-flow__edge-path,\n .react-flow__edge.selectable:focus .react-flow__edge-path,\n .react-flow__edge.selectable:focus-visible .react-flow__edge-path {\n stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));\n }\n.react-flow__edge-textwrapper {\n pointer-events: all;\n }\n.react-flow__edge .react-flow__edge-text {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n/* Arrowhead marker styles - use CSS custom properties as default */\n.react-flow__arrowhead polyline {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n}\n.react-flow__arrowhead polyline.arrowclosed {\n fill: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n}\n.react-flow__connection {\n pointer-events: none;\n}\n.react-flow__connection .animated {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\nsvg.react-flow__connectionline {\n z-index: 1001;\n overflow: visible;\n position: absolute;\n}\n.react-flow__nodes {\n pointer-events: none;\n transform-origin: 0 0;\n}\n.react-flow__node {\n position: absolute;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n pointer-events: all;\n transform-origin: 0 0;\n box-sizing: border-box;\n cursor: default;\n}\n.react-flow__node.selectable {\n cursor: pointer;\n }\n.react-flow__node.draggable {\n cursor: grab;\n pointer-events: all;\n }\n.react-flow__node.draggable.dragging {\n cursor: grabbing;\n }\n.react-flow__nodesselection {\n z-index: 3;\n transform-origin: left top;\n pointer-events: none;\n}\n.react-flow__nodesselection-rect {\n position: absolute;\n pointer-events: all;\n cursor: grab;\n }\n.react-flow__handle {\n position: absolute;\n pointer-events: none;\n min-width: 5px;\n min-height: 5px;\n width: 6px;\n height: 6px;\n background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));\n border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));\n border-radius: 100%;\n}\n.react-flow__handle.connectingfrom {\n pointer-events: all;\n }\n.react-flow__handle.connectionindicator {\n pointer-events: all;\n cursor: crosshair;\n }\n.react-flow__handle-bottom {\n top: auto;\n left: 50%;\n bottom: 0;\n transform: translate(-50%, 50%);\n }\n.react-flow__handle-top {\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-left {\n top: 50%;\n left: 0;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-right {\n top: 50%;\n right: 0;\n transform: translate(50%, -50%);\n }\n.react-flow__edgeupdater {\n cursor: move;\n pointer-events: all;\n}\n.react-flow__pane.selection .react-flow__panel {\n pointer-events: none;\n}\n.react-flow__panel {\n position: absolute;\n z-index: 5;\n margin: 15px;\n}\n.react-flow__panel.top {\n top: 0;\n }\n.react-flow__panel.bottom {\n bottom: 0;\n }\n.react-flow__panel.top.center, .react-flow__panel.bottom.center {\n left: 50%;\n transform: translateX(-15px) translateX(-50%);\n }\n.react-flow__panel.left {\n left: 0;\n }\n.react-flow__panel.right {\n right: 0;\n }\n.react-flow__panel.left.center, .react-flow__panel.right.center {\n top: 50%;\n transform: translateY(-15px) translateY(-50%);\n }\n.react-flow__attribution {\n font-size: 10px;\n background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));\n padding: 2px 3px;\n margin: 0;\n}\n.react-flow__attribution a {\n text-decoration: none;\n color: #999;\n }\n@keyframes dashdraw {\n from {\n stroke-dashoffset: 10;\n }\n}\n.react-flow__edgelabel-renderer {\n position: absolute;\n width: 100%;\n height: 100%;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n left: 0;\n top: 0;\n}\n.react-flow__viewport-portal {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.react-flow__minimap {\n background: var(\n --xy-minimap-background-color-props,\n var(--xy-minimap-background-color, var(--xy-minimap-background-color-default))\n );\n}\n.react-flow__minimap-svg {\n display: block;\n }\n.react-flow__minimap-mask {\n fill: var(\n --xy-minimap-mask-background-color-props,\n var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default))\n );\n stroke: var(\n --xy-minimap-mask-stroke-color-props,\n var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-mask-stroke-width-props,\n var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default))\n );\n }\n.react-flow__minimap-node {\n fill: var(\n --xy-minimap-node-background-color-props,\n var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default))\n );\n stroke: var(\n --xy-minimap-node-stroke-color-props,\n var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-node-stroke-width-props,\n var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default))\n );\n }\n.react-flow__background-pattern.dots {\n fill: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default))\n );\n }\n.react-flow__background-pattern.lines {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default))\n );\n }\n.react-flow__background-pattern.cross {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default))\n );\n }\n.react-flow__controls {\n display: flex;\n flex-direction: column;\n box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));\n}\n.react-flow__controls.horizontal {\n flex-direction: row;\n }\n.react-flow__controls-button {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 26px;\n width: 26px;\n padding: 4px;\n border: none;\n background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));\n border-bottom: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n color: var(\n --xy-controls-button-color-props,\n var(--xy-controls-button-color, var(--xy-controls-button-color-default))\n );\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n.react-flow__controls-button svg {\n width: 100%;\n max-width: 12px;\n max-height: 12px;\n fill: currentColor;\n }\n.react-flow__edge.updating .react-flow__edge-path {\n stroke: #777;\n }\n.react-flow__edge-text {\n font-size: 10px;\n }\n.react-flow__node.selectable:focus,\n .react-flow__node.selectable:focus-visible {\n outline: none;\n }\n.react-flow__node-input,\n.react-flow__node-default,\n.react-flow__node-output,\n.react-flow__node-group {\n padding: 10px;\n border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));\n width: 150px;\n font-size: 12px;\n color: var(--xy-node-color, var(--xy-node-color-default));\n text-align: center;\n border: var(--xy-node-border, var(--xy-node-border-default));\n background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));\n}\n.react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {\n box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));\n }\n.react-flow__node-input.selectable.selected,\n .react-flow__node-input.selectable:focus,\n .react-flow__node-input.selectable:focus-visible,\n .react-flow__node-default.selectable.selected,\n .react-flow__node-default.selectable:focus,\n .react-flow__node-default.selectable:focus-visible,\n .react-flow__node-output.selectable.selected,\n .react-flow__node-output.selectable:focus,\n .react-flow__node-output.selectable:focus-visible,\n .react-flow__node-group.selectable.selected,\n .react-flow__node-group.selectable:focus,\n .react-flow__node-group.selectable:focus-visible {\n box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));\n }\n.react-flow__node-group {\n background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));\n}\n.react-flow__nodesselection-rect,\n.react-flow__selection {\n background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));\n border: var(--xy-selection-border, var(--xy-selection-border-default));\n}\n.react-flow__nodesselection-rect:focus,\n .react-flow__nodesselection-rect:focus-visible,\n .react-flow__selection:focus,\n .react-flow__selection:focus-visible {\n outline: none;\n }\n.react-flow__controls-button:hover {\n background: var(\n --xy-controls-button-background-color-hover-props,\n var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default))\n );\n color: var(\n --xy-controls-button-color-hover-props,\n var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default))\n );\n }\n.react-flow__controls-button:disabled {\n pointer-events: none;\n }\n.react-flow__controls-button:disabled svg {\n fill-opacity: 0.4;\n }\n.react-flow__controls-button:last-child {\n border-bottom: none;\n }\n.react-flow__controls.horizontal .react-flow__controls-button {\n border-bottom: none;\n border-right: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n }\n.react-flow__controls.horizontal .react-flow__controls-button:last-child {\n border-right: none;\n }\n.react-flow__resize-control {\n position: absolute;\n}\n.react-flow__resize-control.left,\n.react-flow__resize-control.right {\n cursor: ew-resize;\n}\n.react-flow__resize-control.top,\n.react-flow__resize-control.bottom {\n cursor: ns-resize;\n}\n.react-flow__resize-control.top.left,\n.react-flow__resize-control.bottom.right {\n cursor: nwse-resize;\n}\n.react-flow__resize-control.bottom.left,\n.react-flow__resize-control.top.right {\n cursor: nesw-resize;\n}\n/* handle styles */\n.react-flow__resize-control.handle {\n width: 5px;\n height: 5px;\n border: 1px solid #fff;\n border-radius: 1px;\n background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n translate: -50% -50%;\n}\n.react-flow__resize-control.handle.left {\n left: 0;\n top: 50%;\n}\n.react-flow__resize-control.handle.right {\n left: 100%;\n top: 50%;\n}\n.react-flow__resize-control.handle.top {\n left: 50%;\n top: 0;\n}\n.react-flow__resize-control.handle.bottom {\n left: 50%;\n top: 100%;\n}\n.react-flow__resize-control.handle.top.left {\n left: 0;\n}\n.react-flow__resize-control.handle.bottom.left {\n left: 0;\n}\n.react-flow__resize-control.handle.top.right {\n left: 100%;\n}\n.react-flow__resize-control.handle.bottom.right {\n left: 100%;\n}\n/* line styles */\n.react-flow__resize-control.line {\n border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n border-width: 0;\n border-style: solid;\n}\n.react-flow__resize-control.line.left,\n.react-flow__resize-control.line.right {\n width: 1px;\n transform: translate(-50%, 0);\n top: 0;\n height: 100%;\n}\n.react-flow__resize-control.line.left {\n left: 0;\n border-left-width: 1px;\n}\n.react-flow__resize-control.line.right {\n left: 100%;\n border-right-width: 1px;\n}\n.react-flow__resize-control.line.top,\n.react-flow__resize-control.line.bottom {\n height: 1px;\n transform: translate(0, -50%);\n left: 0;\n width: 100%;\n}\n.react-flow__resize-control.line.top {\n top: 0;\n border-top-width: 1px;\n}\n.react-flow__resize-control.line.bottom {\n border-bottom-width: 1px;\n top: 100%;\n}\n.react-flow__edge-textbg {\n fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));\n}\n.react-flow__edge-text {\n fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));\n}\n","/* @particle-academy/fancy-flow styles.\n Themeable: every surface, text, border, and accent resolves from a `--ff-*`\n custom-property layer defined on the component roots below. Override any of\n them on `.ff-editor` (or any ancestor, e.g. `:root`) to retheme the editor\n without fighting specificity — e.g.\n .ff-editor { --ff-accent: #ec4899; --ff-radius: 16px; }\n Dark mode honors both a `.dark` / `[data-theme=\"dark\"]` ancestor (Tailwind\n class strategy, what `colorMode` stamps) and the OS `prefers-color-scheme`,\n with a `.ff-canvas--light` opt-out for the OS path. */\n\n/* React Flow base layout CSS — bundled in so consumers import only this one\n stylesheet. Without it `.react-flow__node` isn't absolutely positioned and the\n pane/viewport transforms don't work, so the canvas renders blank. */\n@import \"@xyflow/react/dist/style.css\";\n\n/* ─── Theme tokens — LIGHT (defaults) ──────────────────────────────────────\n Defined on every component root so both composed (`<FlowEditor>`) and\n standalone (`<NodePalette>`, `<NodeConfigPanel>`, `<FlowRunFeed>`, `<FlowCanvas>`)\n usage inherits them. Nodes inherit from `.ff-canvas`. */\n.ff-editor, .ff-canvas, .ff-palette, .ff-panel, .ff-run-feed, .ff-prompt {\n --ff-font: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n --ff-mono: ui-monospace, \"SF Mono\", \"JetBrains Mono\", Menlo, Consolas, monospace;\n\n --ff-surface: #ffffff; /* raised: cards, nodes, inputs */\n --ff-surface-2: #f4f4f5; /* recessed: palette, panel, run feed, toolbar */\n --ff-surface-3: #fafafa; /* nested: repeater rows, hover */\n --ff-canvas-bg: #ffffff;\n --ff-canvas-dot: rgba(9, 9, 11, 0.09);\n --ff-node-bg: #ffffff;\n\n --ff-fg: #18181b;\n --ff-fg-muted: #52525b;\n --ff-fg-subtle: #71717a;\n --ff-fg-faint: #a1a1aa;\n\n --ff-border: #e4e4e7;\n --ff-border-strong: #d4d4d8;\n --ff-edge: #9ca3af;\n\n --ff-accent: #8b5cf6; /* selection, focus, brand */\n --ff-accent-soft: rgba(139, 92, 246, 0.12);\n --ff-accent-ring: rgba(139, 92, 246, 0.22);\n\n --ff-run: #10b981;\n --ff-run-hover: #059669;\n --ff-danger: #ef4444;\n --ff-warn: #d97706;\n --ff-warn-soft: rgba(245, 158, 11, 0.15);\n\n --ff-feed-node: #7c3aed; /* node id + status lines in the run feed */\n --ff-feed-ok: #059669;\n\n --ff-radius: 12px; /* shells, cards */\n --ff-radius-md: 8px; /* buttons, nodes */\n --ff-radius-sm: 6px; /* inputs, chips */\n\n --ff-shadow-sm: 0 1px 2px rgba(0,0,0,.05);\n --ff-shadow-md: 0 1px 2px rgba(0,0,0,.04), 0 4px 12px rgba(0,0,0,.06);\n --ff-shadow-lg: 0 10px 20px -6px rgba(0,0,0,.12), 0 4px 8px -6px rgba(0,0,0,.08);\n}\n\n/* ─── Theme tokens — DARK ──────────────────────────────────────────────── */\n/* Both a DESCENDANT of a dark root and the element itself.\n `FlowCanvas` puts `dark` on its own root when a colour mode resolves, and the\n descendant-only form could never match that — so the class the component sets\n on itself, and which a comment there claims drives these tokens, did nothing.\n A host that marks <html class=\"dark\"> still matches the first two. */\n.dark :is(.ff-editor, .ff-canvas, .ff-palette, .ff-panel, .ff-run-feed, .ff-prompt),\n[data-theme=\"dark\"] :is(.ff-editor, .ff-canvas, .ff-palette, .ff-panel, .ff-run-feed, .ff-prompt),\n.dark:is(.ff-editor, .ff-canvas, .ff-palette, .ff-panel, .ff-run-feed, .ff-prompt),\n[data-theme=\"dark\"]:is(.ff-editor, .ff-canvas, .ff-palette, .ff-panel, .ff-run-feed, .ff-prompt) {\n --ff-surface: #1c1c22;\n --ff-surface-2: #141419;\n --ff-surface-3: #27272a;\n --ff-canvas-bg: #0a0a0c;\n --ff-canvas-dot: rgba(255, 255, 255, 0.10);\n --ff-node-bg: #1c1c22;\n\n --ff-fg: #fafafa;\n --ff-fg-muted: #d4d4d8;\n --ff-fg-subtle: #a1a1aa;\n --ff-fg-faint: #71717a;\n\n --ff-border: #3f3f46;\n --ff-border-strong: #52525b;\n --ff-edge: #71717a;\n\n --ff-accent: #a78bfa;\n --ff-accent-soft: rgba(167, 139, 250, 0.16);\n --ff-accent-ring: rgba(167, 139, 250, 0.30);\n\n --ff-warn: #fb923c;\n --ff-warn-soft: rgba(251, 146, 60, 0.16);\n --ff-feed-node: #c4b5fd;\n --ff-feed-ok: #34d399;\n\n --ff-shadow-md: 0 1px 2px rgba(0,0,0,.4), 0 6px 16px rgba(0,0,0,.5);\n --ff-shadow-lg: 0 12px 28px -8px rgba(0,0,0,.6), 0 4px 10px -6px rgba(0,0,0,.5);\n}\n@media (prefers-color-scheme: dark) {\n :is(.ff-editor, .ff-canvas, .ff-palette, .ff-panel, .ff-run-feed, .ff-prompt):not(.ff-canvas--light):not(.ff-canvas--light *) {\n --ff-surface: #1c1c22;\n --ff-surface-2: #141419;\n --ff-surface-3: #27272a;\n --ff-canvas-bg: #0a0a0c;\n --ff-canvas-dot: rgba(255, 255, 255, 0.10);\n --ff-node-bg: #1c1c22;\n --ff-fg: #fafafa;\n --ff-fg-muted: #d4d4d8;\n --ff-fg-subtle: #a1a1aa;\n --ff-fg-faint: #71717a;\n --ff-border: #3f3f46;\n --ff-border-strong: #52525b;\n --ff-edge: #71717a;\n --ff-accent: #a78bfa;\n --ff-accent-soft: rgba(167, 139, 250, 0.16);\n --ff-accent-ring: rgba(167, 139, 250, 0.30);\n --ff-warn: #fb923c;\n --ff-warn-soft: rgba(251, 146, 60, 0.16);\n --ff-feed-node: #c4b5fd;\n --ff-feed-ok: #34d399;\n --ff-shadow-md: 0 1px 2px rgba(0,0,0,.4), 0 6px 16px rgba(0,0,0,.5);\n --ff-shadow-lg: 0 12px 28px -8px rgba(0,0,0,.6), 0 4px 10px -6px rgba(0,0,0,.5);\n }\n}\n\n/* ─── Canvas (standalone <FlowCanvas>) ─────────────────────────────────── */\n.ff-canvas {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--ff-border);\n border-radius: var(--ff-radius);\n overflow: hidden;\n background: var(--ff-canvas-bg);\n}\n.ff-canvas__toolbar {\n border-bottom: 1px solid var(--ff-border);\n padding: 8px 10px;\n display: flex; gap: 6px; align-items: center; flex-wrap: wrap;\n background: var(--ff-surface-2);\n color: var(--ff-fg-muted);\n font-family: var(--ff-font);\n font-size: 12px;\n}\n.ff-canvas__surface { flex: 1; min-height: 0; position: relative; background: var(--ff-canvas-bg); }\n\n/* xyflow background grid color via theme token */\n.react-flow__background pattern circle { fill: var(--ff-canvas-dot); }\n\n/* ─── Nodes ────────────────────────────────────────────────────────────── */\n.ff-node {\n min-width: 200px;\n max-width: 280px;\n background: var(--ff-node-bg);\n border: 1px solid var(--ff-border-strong);\n border-radius: var(--ff-radius-md);\n font-family: var(--ff-font);\n font-size: 12px;\n color: var(--ff-fg);\n box-shadow: var(--ff-shadow-md);\n transition: box-shadow 200ms, border-color 200ms;\n overflow: hidden;\n}\n.ff-node:hover { border-color: var(--ff-border); box-shadow: var(--ff-shadow-lg); }\n.ff-node--selected {\n border-color: var(--ff-accent);\n box-shadow: 0 0 0 3px var(--ff-accent-ring), var(--ff-shadow-lg);\n}\n\n.ff-node__header {\n display: flex; align-items: center; gap: 8px;\n padding: 7px 10px;\n color: #fff;\n font-weight: 600;\n}\n.ff-node__icon { font-size: 14px; line-height: 1; }\n.ff-node__tag {\n font-size: 10px;\n letter-spacing: 0.06em;\n font-weight: 700;\n opacity: 0.9;\n text-transform: uppercase;\n}\n.ff-node__label { flex: 1; font-size: 13px; }\n.ff-node__desc { margin: 0; padding: 8px 10px 0; font-size: 11px; color: var(--ff-fg-subtle); }\n.ff-node__body { padding: 8px 10px 10px; }\n.ff-node__status-text { margin: 0; padding: 4px 10px 8px; font-size: 11px; color: var(--ff-fg-subtle); }\n.ff-node--status-error .ff-node__status-text { color: var(--ff-danger); }\n\n.ff-node--status-running { animation: ff-pulse 1.4s ease-in-out infinite; }\n@keyframes ff-pulse {\n 0%, 100% { box-shadow: 0 0 0 0 var(--ff-accent-ring), var(--ff-shadow-md); }\n 50% { box-shadow: 0 0 0 6px transparent, var(--ff-shadow-md); }\n}\n\n/* Status dot in the header */\n.ff-node__dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(255,255,255,0.5); }\n.ff-node__dot--queued { background: #fbbf24; }\n.ff-node__dot--running { background: #fde68a; box-shadow: 0 0 6px #fde68a; }\n.ff-node__dot--done { background: #34d399; }\n.ff-node__dot--error { background: #f87171; }\n\n/* Subgraph metadata row */\n.ff-subgraph__meta { display: flex; justify-content: space-between; font-size: 11px; color: var(--ff-fg-subtle); }\n\n/* Node summary inside the card */\n.ff-node__summary { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; }\n.ff-node__summary li { display: flex; gap: 6px; font-size: 11px; }\n.ff-node__summary-key { color: var(--ff-fg-subtle); }\n.ff-node__summary-value { font-family: var(--ff-mono); }\n.ff-node__summary-more { color: var(--ff-fg-subtle); font-size: 10px; }\n.ff-node__body-empty { font-size: 11px; color: var(--ff-fg-faint); font-style: italic; }\n\n/* Reactive output (G12) — a node's live computed value. */\n.ff-node__output {\n margin: 0; padding: 4px 10px 8px;\n font-size: 11px; font-family: var(--ff-mono);\n color: var(--ff-feed-ok);\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n\n/* xyflow wraps every custom node in a `.react-flow__node-{type}` div with\n default chrome. Our kit ships its own via `.ff-node`, so strip xyflow's. */\n.react-flow__node-trigger,\n.react-flow__node-action,\n.react-flow__node-decision,\n.react-flow__node-output,\n.react-flow__node-note,\n.react-flow__node-subgraph {\n background: transparent !important;\n border: none !important;\n padding: 0 !important;\n box-shadow: none !important;\n border-radius: 0 !important;\n}\n\n/* xyflow handle */\n.react-flow__handle {\n width: 10px; height: 10px;\n background: var(--ff-surface);\n border: 2px solid var(--ff-border-strong);\n border-radius: 50%;\n}\n.react-flow__handle:hover { background: var(--ff-accent); border-color: var(--ff-accent); }\n\n/* xyflow edges */\n.react-flow__edge-path { stroke: var(--ff-edge); }\n.react-flow__connection-path { stroke: var(--ff-accent); stroke-width: 2; }\n\n/* xyflow controls — themed via tokens (bump specificity + !important to beat\n xyflow's own stylesheet). */\n.react-flow__controls { background: transparent; box-shadow: none; }\n.react-flow__controls .react-flow__controls-button {\n background: var(--ff-surface) !important;\n border-color: var(--ff-border) !important;\n border-bottom-color: var(--ff-border) !important;\n color: var(--ff-fg) !important;\n border-radius: var(--ff-radius-sm);\n}\n.react-flow__controls .react-flow__controls-button:hover { background: var(--ff-surface-3) !important; }\n.react-flow__controls .react-flow__controls-button svg,\n.react-flow__controls .react-flow__controls-button svg path,\n.react-flow__controls .react-flow__controls-button svg polyline,\n.react-flow__controls .react-flow__controls-button svg polygon {\n fill: currentColor !important;\n stroke: currentColor !important;\n}\n\n/* NodeResizer chrome */\n.react-flow__resize-control.line { border-color: var(--ff-accent-ring); }\n.react-flow__resize-control.handle { width: 8px; height: 8px; border-radius: 2px; border: 1px solid var(--ff-surface); background: var(--ff-accent); }\n\n/* ─── Swimlanes (G6) ───────────────────────────────────────────────────── */\n.ff-lane {\n width: 100%; height: 100%; box-sizing: border-box;\n background: var(--ff-accent-soft);\n border: 1px dashed var(--ff-border-strong);\n border-radius: var(--ff-radius-md);\n overflow: hidden;\n}\n.ff-lane--selected { border-style: solid; border-color: var(--ff-accent); }\n.ff-lane__header {\n display: flex; align-items: center;\n height: 22px; padding: 0 8px;\n color: #fff; font-size: 11px; font-weight: 600;\n font-family: var(--ff-font);\n border-radius: 7px 7px 0 0;\n}\n.ff-lane__title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\n/* ─── Notes (annotation) — sticky-note, visual-only ────────────────────── */\n.ff-note {\n width: 100%; height: 100%; box-sizing: border-box;\n padding: 8px 10px;\n border: 1px solid transparent;\n border-radius: var(--ff-radius-md);\n font-family: var(--ff-font);\n box-shadow: var(--ff-shadow-sm);\n overflow: hidden;\n display: flex; flex-direction: column; gap: 4px;\n}\n.ff-note--selected { box-shadow: 0 0 0 2px currentColor; }\n.ff-note__title { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; }\n.ff-note__body {\n flex: 1; min-height: 0;\n font-size: 12px; line-height: 1.5;\n color: var(--ff-fg-muted);\n white-space: pre-wrap; overflow: auto;\n}\n.ff-note__placeholder { color: var(--ff-fg-faint); font-style: italic; }\n.ff-note__input {\n flex: 1; min-height: 0; width: 100%;\n resize: none; border: none; outline: none; background: transparent;\n font: inherit; font-size: 12px; line-height: 1.5; color: inherit;\n}\n\n/* ─── Run controls ─────────────────────────────────────────────────────── */\n.ff-run-controls { display: flex; gap: 6px; }\n.ff-run-controls__btn {\n border: 1px solid var(--ff-border); border-radius: var(--ff-radius-sm);\n padding: 6px 12px;\n font: inherit; font-size: 12px; font-weight: 500;\n cursor: pointer;\n background: var(--ff-surface); color: var(--ff-fg);\n transition: background 150ms, border-color 150ms;\n}\n.ff-run-controls__btn:hover:not(:disabled) { background: var(--ff-surface-3); }\n.ff-run-controls__btn--run { background: var(--ff-run); border-color: var(--ff-run-hover); color: #fff; }\n.ff-run-controls__btn--run:hover:not(:disabled) { background: var(--ff-run-hover); }\n.ff-run-controls__btn--cancel { background: var(--ff-danger); border-color: var(--ff-danger); color: #fff; }\n.ff-run-controls__btn:disabled { opacity: 0.5; cursor: default; }\n\n/* ─── Run feed (header + scrolling body) ───────────────────────────────── */\n.ff-run-feed {\n display: flex; flex-direction: column;\n font-family: var(--ff-mono);\n background: var(--ff-surface-2);\n color: var(--ff-fg);\n border: 1px solid var(--ff-border);\n border-radius: var(--ff-radius-md);\n overflow: hidden;\n max-height: 260px;\n}\n.ff-run-feed__header {\n display: flex; align-items: center; gap: 8px;\n padding: 7px 12px;\n border-bottom: 1px solid var(--ff-border);\n font-family: var(--ff-font);\n font-size: 11.5px; font-weight: 600; color: var(--ff-fg-muted);\n flex-shrink: 0;\n}\n.ff-run-feed__title { color: var(--ff-accent); font-family: var(--ff-mono); }\n.ff-run-feed__badge {\n font-family: var(--ff-font); font-size: 10px; font-weight: 600;\n color: var(--ff-warn); background: var(--ff-warn-soft);\n padding: 1px 8px; border-radius: 999px;\n}\n.ff-run-feed__count { margin-left: auto; font-family: var(--ff-mono); font-size: 10.5px; color: var(--ff-fg-faint); }\n.ff-run-feed__body { flex: 1; min-height: 0; overflow: auto; padding: 8px 12px; font-size: 11px; line-height: 1.7; }\n.ff-run-feed__empty { color: var(--ff-fg-subtle); margin: 0; }\n.ff-run-feed__row { display: flex; gap: 9px; padding: 1px 0; white-space: pre-wrap; word-break: break-word; }\n.ff-run-feed__time { color: var(--ff-fg-faint); flex-shrink: 0; }\n.ff-run-feed__node { color: var(--ff-feed-node); flex-shrink: 0; }\n.ff-run-feed__text { flex: 1; min-width: 0; }\n.ff-run-feed__row--error .ff-run-feed__text { color: var(--ff-danger); }\n.ff-run-feed__row--warn .ff-run-feed__text { color: var(--ff-warn); }\n.ff-run-feed__row--status .ff-run-feed__text { color: var(--ff-feed-node); }\n\n/* ─── FlowEditor — unified shell ───────────────────────────────────────── */\n.ff-editor {\n display: grid;\n grid-template-columns: 216px 1fr 300px;\n gap: 0;\n font-family: var(--ff-font);\n background: var(--ff-surface);\n border: 1px solid var(--ff-border);\n border-radius: var(--ff-radius);\n overflow: hidden;\n box-shadow: var(--ff-shadow-md);\n}\n.ff-editor__main { display: flex; flex-direction: column; min-width: 0; min-height: 0; position: relative; background: var(--ff-canvas-bg); }\n/* The canvas fills the middle column seamlessly — the shell owns the frame. */\n.ff-editor__main .ff-canvas { flex: 1; min-height: 0; border: none; border-radius: 0; }\n.ff-editor__empty {\n position: absolute; inset: 0; display: grid; place-items: center;\n padding: 24px; text-align: center; pointer-events: none;\n}\n.ff-editor__empty > * { pointer-events: auto; }\n\n.ff-editor__palette { border: none; border-right: 1px solid var(--ff-border); border-radius: 0; background: var(--ff-surface-2); }\n.ff-editor__panel-wrap {\n display: flex; flex-direction: column; min-height: 0;\n border-left: 1px solid var(--ff-border);\n background: var(--ff-surface-2);\n}\n.ff-editor__panel { flex: 1; min-height: 0; border: none; border-radius: 0; background: transparent; }\n.ff-editor__panel-footer { flex-shrink: 0; display: flex; flex-wrap: wrap; gap: 6px; padding: 0 12px 12px; }\n.ff-editor__feed { flex-shrink: 0; height: 168px; max-height: none; border: none; border-top: 1px solid var(--ff-border); border-radius: 0; }\n\n/* Node right-click menu — fixed so the canvas' overflow can't clip it. */\n.ff-editor__ctx {\n position: fixed; z-index: 50; min-width: 150px; padding: 4px;\n display: flex; flex-direction: column;\n background: var(--ff-surface); border: 1px solid var(--ff-border-strong); border-radius: var(--ff-radius-md);\n box-shadow: var(--ff-shadow-lg);\n}\n.ff-editor__ctx-item {\n border: 0; background: transparent; cursor: pointer; text-align: left;\n padding: 6px 10px; border-radius: 5px; font-size: 12.5px; color: inherit;\n}\n.ff-editor__ctx-item:hover { background: var(--ff-surface-3); }\n.ff-editor__ctx-item--danger { color: var(--ff-danger); }\n\n.ff-editor__sep { width: 1px; align-self: stretch; background: var(--ff-border); margin: 0 3px; }\n.ff-editor__btn {\n display: inline-flex; align-items: center; gap: 6px;\n border: 1px solid var(--ff-border); background: var(--ff-surface); cursor: pointer;\n border-radius: var(--ff-radius-sm); padding: 5px 11px;\n color: var(--ff-fg-muted); font-size: 12px; font-weight: 500;\n transition: background 150ms, color 150ms;\n}\n.ff-editor__btn:hover:not(:disabled) { background: var(--ff-surface-3); color: var(--ff-fg); }\n.ff-editor__btn:disabled { opacity: 0.45; cursor: not-allowed; }\n.ff-editor__count { margin-left: auto; font-family: var(--ff-mono); font-size: 11px; color: var(--ff-fg-faint); }\n\n/* ─── NodePalette ──────────────────────────────────────────────────────── */\n.ff-palette {\n display: flex; flex-direction: column;\n background: var(--ff-surface-2);\n border: 1px solid var(--ff-border);\n border-radius: var(--ff-radius);\n overflow: hidden;\n font-size: 13px;\n color: var(--ff-fg);\n}\n.ff-palette__search { padding: 10px; border-bottom: 1px solid var(--ff-border); }\n.ff-palette__search-input {\n width: 100%; padding: 7px 10px;\n border: 1px solid var(--ff-border); border-radius: var(--ff-radius-sm);\n background: var(--ff-surface); color: inherit; font: inherit; font-size: 12.5px;\n outline: none; transition: border-color 150ms, box-shadow 150ms;\n}\n.ff-palette__search-input:focus { border-color: var(--ff-accent); box-shadow: 0 0 0 3px var(--ff-accent-soft); }\n.ff-palette__list { flex: 1; overflow: auto; padding: 8px; }\n.ff-palette__group { padding: 2px 0; }\n.ff-palette__group-label {\n font-size: 9.5px; letter-spacing: 0.07em; text-transform: uppercase;\n color: var(--ff-fg-faint); font-weight: 700;\n padding: 11px 8px 6px;\n}\n.ff-palette__row {\n width: 100%;\n display: flex; align-items: flex-start; gap: 9px;\n padding: 8px; border: 1px solid transparent; background: transparent; cursor: grab;\n border-radius: var(--ff-radius-md);\n text-align: left; color: inherit; font: inherit;\n transition: background 130ms, border-color 130ms;\n}\n.ff-palette__row:hover { background: var(--ff-surface-3); border-color: var(--ff-border); }\n.ff-palette__row:active { cursor: grabbing; }\n.ff-palette__row-dot {\n flex-shrink: 0; width: 24px; height: 24px;\n border-radius: 7px;\n display: inline-flex; align-items: center; justify-content: center;\n color: white; font-size: 14px;\n}\n.ff-palette__row-text { display: flex; flex-direction: column; min-width: 0; }\n.ff-palette__row-label { font-size: 12.5px; font-weight: 600; line-height: 1.2; }\n.ff-palette__row-desc {\n font-size: 10.5px; color: var(--ff-fg-faint); line-height: 1.35; margin-top: 2px;\n overflow: hidden; text-overflow: ellipsis;\n display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical;\n}\n\n/* ─── NodeConfigPanel ──────────────────────────────────────────────────── */\n.ff-panel {\n background: var(--ff-surface-2);\n border: 1px solid var(--ff-border);\n border-radius: var(--ff-radius);\n padding: 14px;\n display: flex; flex-direction: column; gap: 12px;\n overflow: auto;\n font-size: 13px;\n color: var(--ff-fg);\n}\n.ff-panel--empty { align-items: center; justify-content: center; }\n.ff-panel__empty { font-size: 12px; color: var(--ff-fg-faint); text-align: center; }\n.ff-panel__header { display: flex; align-items: center; gap: 10px; }\n.ff-panel__head-icon {\n flex-shrink: 0; width: 28px; height: 28px; border-radius: var(--ff-radius-sm);\n display: grid; place-items: center; color: #fff; font-size: 15px;\n}\n.ff-panel__head-text { display: flex; flex-direction: column; min-width: 0; gap: 1px; }\n.ff-panel__head-kind { font-size: 9.5px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ff-fg-faint); }\n.ff-panel__head-name { font-size: 13.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n/* legacy tag (kept for back-compat with hand-composed panels) */\n.ff-panel__kind-tag {\n align-self: flex-start;\n font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase;\n background: var(--ff-accent-soft); color: var(--ff-accent);\n padding: 2px 8px; border-radius: 999px;\n}\n.ff-panel__kind-desc { margin: 0; font-size: 12px; color: var(--ff-fg-subtle); line-height: 1.5; }\n.ff-panel__divider { border: 0; border-top: 1px solid var(--ff-border); margin: 2px 0; }\n\n.ff-panel__actions { margin-top: auto; padding-top: 12px; }\n.ff-panel__delete {\n width: 100%; padding: 8px 10px;\n font-size: 13px; font-weight: 500;\n color: var(--ff-danger); background: transparent;\n border: 1px solid var(--ff-danger); border-radius: var(--ff-radius-sm);\n cursor: pointer; opacity: 0.85; transition: opacity 150ms, background 150ms;\n}\n.ff-panel__delete:hover { opacity: 1; background: rgba(239, 68, 68, 0.08); }\n.ff-panel__field { display: flex; flex-direction: column; gap: 5px; }\n.ff-panel__label { font-size: 12px; font-weight: 600; color: var(--ff-fg-muted); }\n.ff-panel__hint { font-size: 11px; color: var(--ff-fg-faint); margin: 0; line-height: 1.4; }\n.ff-panel__required { color: var(--ff-danger); }\n.ff-panel__input {\n width: 100%; padding: 7px 10px;\n border: 1px solid var(--ff-border); border-radius: var(--ff-radius-sm);\n background: var(--ff-surface); color: inherit; font: inherit; font-size: 12.5px;\n box-sizing: border-box; outline: none;\n transition: border-color 150ms, box-shadow 150ms;\n}\n.ff-panel__input:focus { border-color: var(--ff-accent); box-shadow: 0 0 0 3px var(--ff-accent-soft); }\n.ff-panel__input--textarea { font-family: inherit; resize: vertical; line-height: 1.5; }\n.ff-panel__input--expression,\n.ff-panel__input--json { font-family: var(--ff-mono); font-size: 11.5px; }\n.ff-panel__switch { display: inline-flex; align-items: center; cursor: pointer; }\n.ff-panel__switch input { display: none; }\n.ff-panel__switch-slider { width: 32px; height: 18px; background: var(--ff-border-strong); border-radius: 999px; position: relative; transition: background 200ms; }\n.ff-panel__switch-slider::before { content: \"\"; position: absolute; left: 2px; top: 2px; width: 14px; height: 14px; background: #fff; border-radius: 50%; transition: left 200ms; }\n.ff-panel__switch input:checked + .ff-panel__switch-slider { background: var(--ff-accent); }\n.ff-panel__switch input:checked + .ff-panel__switch-slider::before { left: 16px; }\n.ff-panel__issues { margin-top: 4px; }\n.ff-panel__issue { font-size: 11px; color: var(--ff-warn); margin: 2px 0; }\n/* A parse error sits directly under the field it belongs to, not in the panel's\n issue list at the bottom — an error about the box you are typing in is\n useless three scroll-lengths away from it. */\n.ff-panel__issue--field { margin-top: 4px; }\n\n/* Repeater / key-value config fields */\n.ff-repeater { display: flex; flex-direction: column; gap: 8px; }\n.ff-repeater__empty { font-size: 11px; color: var(--ff-fg-subtle); margin: 0; font-style: italic; }\n.ff-repeater__row {\n display: flex; flex-direction: column; gap: 6px;\n border: 1px solid var(--ff-border); border-radius: var(--ff-radius-sm); padding: 10px; background: var(--ff-surface);\n}\n.ff-repeater__row-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }\n.ff-repeater__row-title { font-size: 11px; font-weight: 600; color: var(--ff-fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ff-repeater__row-actions { display: flex; gap: 2px; flex-shrink: 0; }\n.ff-repeater__btn { border: 1px solid transparent; background: transparent; cursor: pointer; border-radius: 4px; font-size: 11px; line-height: 1; padding: 3px 5px; color: var(--ff-fg-subtle); }\n.ff-repeater__btn:hover:not(:disabled) { background: var(--ff-surface-3); color: var(--ff-fg); }\n.ff-repeater__btn:disabled { opacity: .35; cursor: not-allowed; }\n.ff-repeater__btn--danger:hover:not(:disabled) { background: rgba(239,68,68,0.12); color: var(--ff-danger); }\n.ff-repeater__cell { display: flex; flex-direction: column; gap: 3px; }\n.ff-panel__label--sub { font-size: 11px; color: var(--ff-fg-subtle); font-weight: 400; }\n.ff-repeater__add {\n align-self: flex-start; border: 1px dashed var(--ff-border-strong); background: transparent;\n border-radius: var(--ff-radius-sm); padding: 6px 11px; font-size: 11px; color: var(--ff-fg-muted); cursor: pointer;\n}\n.ff-repeater__add:hover:not(:disabled) { border-color: var(--ff-accent); color: var(--ff-accent); }\n.ff-repeater__add:disabled { opacity: .4; cursor: not-allowed; }\n\n.ff-keyvalue { display: flex; flex-direction: column; gap: 6px; }\n.ff-keyvalue__head,\n.ff-keyvalue__row { display: grid; grid-template-columns: 1fr 1fr auto; gap: 6px; align-items: center; }\n.ff-keyvalue__head { font-size: 10px; text-transform: uppercase; letter-spacing: .04em; color: var(--ff-fg-faint); }\n.ff-panel__hint--missing { color: var(--ff-warn); font-style: italic; }\n\n/* Edge label editor */\n.ff-editor__edge-label { padding: 6px; min-width: 200px; }\n.ff-editor__edge-label .ff-panel__input { width: 100%; }\n\n/* Rich user input preview */\n.ff-rich-preview { display: flex; flex-direction: column; gap: 6px; }\n.ff-rich-preview__frame { border: 1px solid var(--ff-border); border-radius: var(--ff-radius-sm); overflow: hidden; max-height: 180px; background: var(--ff-surface); }\n.ff-rich-preview__unavailable { border: 1px dashed var(--ff-border-strong); border-radius: var(--ff-radius-sm); padding: 10px; font-size: 11px; color: var(--ff-fg-subtle); line-height: 1.5; }\n.ff-rich-preview__unavailable code { font-size: 10px; background: var(--ff-surface-3); padding: 1px 4px; border-radius: 3px; }\n.ff-rich-preview__title { font-size: 11px; font-weight: 600; color: var(--ff-fg-muted); }\n\n/* Resizable nodes (G11) */\n.ff-node--resizable { max-width: none; width: 100%; height: 100%; }\n\n/* ─── In-editor human-input modal ──────────────────────────────────────── */\n.ff-prompt-overlay {\n position: absolute; inset: 0; z-index: 20;\n display: grid; place-items: center; padding: 16px;\n background: rgba(9, 9, 11, 0.5);\n backdrop-filter: blur(2px);\n}\n.ff-prompt {\n width: 100%; max-width: 420px; max-height: 100%; overflow: auto;\n padding: 18px;\n border-radius: var(--ff-radius);\n background: var(--ff-surface);\n border: 1px solid var(--ff-border);\n box-shadow: var(--ff-shadow-lg);\n font-family: var(--ff-font);\n color: var(--ff-fg);\n}\n.ff-prompt__title { font-size: 14px; font-weight: 600; color: var(--ff-fg); margin-bottom: 10px; }\n.ff-prompt__desc { font-size: 13px; line-height: 1.5; color: var(--ff-fg-subtle); margin-bottom: 12px; }\n.ff-prompt__fields { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }\n.ff-prompt__field { display: flex; flex-direction: column; gap: 5px; }\n.ff-prompt__label { font-size: 12px; font-weight: 500; color: var(--ff-fg-muted); }\n.ff-prompt__req { color: var(--ff-danger); }\n.ff-prompt__input {\n width: 100%; box-sizing: border-box; padding: 8px 10px;\n font-size: 13px; border-radius: var(--ff-radius-sm);\n border: 1px solid var(--ff-border); background: var(--ff-surface); color: var(--ff-fg);\n outline: none; transition: border-color 150ms, box-shadow 150ms;\n}\n.ff-prompt__input:focus { border-color: var(--ff-accent); box-shadow: 0 0 0 3px var(--ff-accent-soft); }\n.ff-prompt__switch { width: 16px; height: 16px; }\n.ff-prompt__actions { display: flex; justify-content: flex-end; gap: 8px; }\n.ff-prompt__btn { padding: 8px 14px; font-size: 13px; font-weight: 500; border-radius: var(--ff-radius-sm); border: 1px solid transparent; cursor: pointer; }\n.ff-prompt__btn--ghost { background: transparent; border-color: var(--ff-border-strong); color: var(--ff-fg-muted); }\n.ff-prompt__btn--ghost:hover { background: var(--ff-surface-3); }\n.ff-prompt__btn--primary { background: var(--ff-accent); color: #fff; }\n.ff-prompt__btn--primary:disabled { opacity: 0.5; cursor: not-allowed; }\n.ff-prompt__btn--danger { background: transparent; border-color: var(--ff-danger); color: var(--ff-danger); }\n\n/* Alignment guide lines (G15) */\n.ff-helper-line { background: var(--ff-accent); }\n\n/* ─── Responsive ───────────────────────────────────────────────────────── */\n@media (max-width: 1024px) {\n .ff-editor { grid-template-columns: 190px 1fr; }\n .ff-editor__panel-wrap { display: none; }\n}\n@media (max-width: 720px) {\n .ff-editor { grid-template-columns: 1fr; }\n .ff-editor__palette { display: none; }\n}\n\n/* ─── FlowViewer ─────────────────────────────────────────────────────────────\n Read-only rendering of a workflow. Every colour here reads from the same\n --ff-* token layer the editor uses, so a consumer that themed the editor gets\n a themed viewer for free and does not restyle the same surface twice.\n ──────────────────────────────────────────────────────────────────────────── */\n.ff-viewer { color: var(--ff-fg, inherit); }\n\n.ff-viewer--empty {\n display: grid;\n place-items: center;\n padding: 2rem 1rem;\n border: 1px dashed var(--ff-border, #3f3f46);\n border-radius: var(--ff-radius, 12px);\n}\n.ff-viewer__empty { font-size: 13px; color: var(--ff-fg-muted, #a1a1aa); }\n\n.ff-viewer__list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }\n\n.ff-viewer__row {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n width: 100%;\n padding: 10px 12px;\n text-align: left;\n background: var(--ff-surface, transparent);\n border: 1px solid var(--ff-border, #3f3f46);\n border-radius: var(--ff-radius, 10px);\n}\n.ff-viewer__row--interactive { cursor: pointer; transition: border-color .15s ease, background-color .15s ease; }\n.ff-viewer__row--interactive:hover { border-color: var(--ff-accent, #8b5cf6); }\n.ff-viewer__row--selected { border-color: var(--ff-accent, #8b5cf6); }\n\n.ff-viewer__index {\n flex: none;\n display: grid;\n place-items: center;\n width: 22px; height: 22px;\n border-radius: 999px;\n font-size: 11px; font-weight: 700; font-variant-numeric: tabular-nums;\n color: #fff;\n}\n\n/* min-width:0 is what lets the long-title truncation below actually engage —\n a flex child defaults to min-width:auto, i.e. its min-content width. */\n.ff-viewer__body { display: grid; gap: 2px; min-width: 0; flex: 1 1 auto; }\n.ff-viewer__title { font-size: 13px; font-weight: 600; line-height: 1.3; }\n.ff-viewer__desc {\n font-size: 12px; line-height: 1.4;\n color: var(--ff-fg-muted, #a1a1aa);\n overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;\n}\n\n.ff-viewer__status {\n flex: none;\n padding: 2px 8px;\n border-radius: 999px;\n font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em;\n}\n.ff-viewer__status--ok { background: #10b98122; color: #34d399; }\n.ff-viewer__status--running { background: #3b82f622; color: #60a5fa; }\n.ff-viewer__status--failed { background: #ef444422; color: #f87171; }\n.ff-viewer__status--skipped { background: #71717a22; color: #a1a1aa; }\n.ff-viewer__status--pending { background: #a855f722; color: #c084fc; }\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/@xyflow/react/dist/style.css","../src/styles.css"],"sourcesContent":["/* this gets exported as style.css and can be used for the default theming */\n/* these are the necessary styles for React/Svelte Flow, they get used by base.css and style.css */\n.react-flow {\n direction: ltr;\n\n --xy-edge-stroke-default: #b1b1b7;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #555;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);\n\n --xy-minimap-background-color-default: #fff;\n --xy-minimap-mask-background-color-default: rgba(240, 240, 240, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #e2e2e2;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: transparent;\n --xy-background-pattern-dots-color-default: #91919a;\n --xy-background-pattern-lines-color-default: #eee;\n --xy-background-pattern-cross-color-default: #e2e2e2;\n background-color: var(--xy-background-color, var(--xy-background-color-default));\n --xy-node-color-default: inherit;\n --xy-node-border-default: 1px solid #1a192b;\n --xy-node-background-color-default: #fff;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;\n --xy-node-border-radius-default: 3px;\n\n --xy-handle-background-color-default: #1a192b;\n --xy-handle-border-color-default: #fff;\n\n --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);\n\n --xy-controls-button-background-color-default: #fefefe;\n --xy-controls-button-background-color-hover-default: #f4f4f4;\n --xy-controls-button-color-default: inherit;\n --xy-controls-button-color-hover-default: inherit;\n --xy-controls-button-border-color-default: #eee;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #ffffff;\n --xy-edge-label-color-default: inherit;\n --xy-resize-background-color-default: #3367d9;\n}\n.react-flow.dark {\n --xy-edge-stroke-default: #3e3e3e;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #727272;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(150, 150, 150, 0.25);\n\n --xy-minimap-background-color-default: #141414;\n --xy-minimap-mask-background-color-default: rgba(60, 60, 60, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #2b2b2b;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: #141414;\n --xy-background-pattern-dots-color-default: #777;\n --xy-background-pattern-lines-color-default: #777;\n --xy-background-pattern-cross-color-default: #777;\n --xy-node-color-default: #f8f8f8;\n --xy-node-border-default: 1px solid #3c3c3c;\n --xy-node-background-color-default: #1e1e1e;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;\n\n --xy-handle-background-color-default: #bebebe;\n --xy-handle-border-color-default: #1e1e1e;\n\n --xy-selection-background-color-default: rgba(200, 200, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(200, 200, 220, 0.8);\n\n --xy-controls-button-background-color-default: #2b2b2b;\n --xy-controls-button-background-color-hover-default: #3e3e3e;\n --xy-controls-button-color-default: #f8f8f8;\n --xy-controls-button-color-hover-default: #fff;\n --xy-controls-button-border-color-default: #5b5b5b;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #141414;\n --xy-edge-label-color-default: #f8f8f8;\n}\n.react-flow__background {\n background-color: var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));\n pointer-events: none;\n z-index: -1;\n}\n.react-flow__container {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n}\n.react-flow__pane {\n z-index: 1;\n touch-action: none;\n}\n.react-flow__pane.draggable {\n cursor: grab;\n }\n.react-flow__pane.dragging {\n cursor: grabbing;\n }\n.react-flow__pane.selection {\n cursor: pointer;\n }\n.react-flow__viewport {\n transform-origin: 0 0;\n z-index: 2;\n pointer-events: none;\n}\n.react-flow__renderer {\n z-index: 4;\n}\n.react-flow__selection {\n z-index: 6;\n}\n.react-flow__nodesselection-rect:focus,\n.react-flow__nodesselection-rect:focus-visible {\n outline: none;\n}\n.react-flow__edge-path {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));\n fill: none;\n}\n.react-flow__connection-path {\n stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));\n stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));\n fill: none;\n}\n.react-flow .react-flow__edges {\n position: absolute;\n}\n.react-flow .react-flow__edges svg {\n overflow: visible;\n position: absolute;\n pointer-events: none;\n }\n.react-flow__edge {\n pointer-events: visibleStroke;\n}\n.react-flow__edge.selectable {\n cursor: pointer;\n }\n.react-flow__edge.animated path {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\n.react-flow__edge.animated path.react-flow__edge-interaction {\n stroke-dasharray: none;\n animation: none;\n }\n.react-flow__edge.inactive {\n pointer-events: none;\n }\n.react-flow__edge.selected,\n .react-flow__edge:focus,\n .react-flow__edge:focus-visible {\n outline: none;\n }\n.react-flow__edge.selected .react-flow__edge-path,\n .react-flow__edge.selectable:focus .react-flow__edge-path,\n .react-flow__edge.selectable:focus-visible .react-flow__edge-path {\n stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));\n }\n.react-flow__edge-textwrapper {\n pointer-events: all;\n }\n.react-flow__edge .react-flow__edge-text {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n/* Arrowhead marker styles - use CSS custom properties as default */\n.react-flow__arrowhead polyline {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n}\n.react-flow__arrowhead polyline.arrowclosed {\n fill: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n}\n.react-flow__connection {\n pointer-events: none;\n}\n.react-flow__connection .animated {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\nsvg.react-flow__connectionline {\n z-index: 1001;\n overflow: visible;\n position: absolute;\n}\n.react-flow__nodes {\n pointer-events: none;\n transform-origin: 0 0;\n}\n.react-flow__node {\n position: absolute;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n pointer-events: all;\n transform-origin: 0 0;\n box-sizing: border-box;\n cursor: default;\n}\n.react-flow__node.selectable {\n cursor: pointer;\n }\n.react-flow__node.draggable {\n cursor: grab;\n pointer-events: all;\n }\n.react-flow__node.draggable.dragging {\n cursor: grabbing;\n }\n.react-flow__nodesselection {\n z-index: 3;\n transform-origin: left top;\n pointer-events: none;\n}\n.react-flow__nodesselection-rect {\n position: absolute;\n pointer-events: all;\n cursor: grab;\n }\n.react-flow__handle {\n position: absolute;\n pointer-events: none;\n min-width: 5px;\n min-height: 5px;\n width: 6px;\n height: 6px;\n background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));\n border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));\n border-radius: 100%;\n}\n.react-flow__handle.connectingfrom {\n pointer-events: all;\n }\n.react-flow__handle.connectionindicator {\n pointer-events: all;\n cursor: crosshair;\n }\n.react-flow__handle-bottom {\n top: auto;\n left: 50%;\n bottom: 0;\n transform: translate(-50%, 50%);\n }\n.react-flow__handle-top {\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-left {\n top: 50%;\n left: 0;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-right {\n top: 50%;\n right: 0;\n transform: translate(50%, -50%);\n }\n.react-flow__edgeupdater {\n cursor: move;\n pointer-events: all;\n}\n.react-flow__pane.selection .react-flow__panel {\n pointer-events: none;\n}\n.react-flow__panel {\n position: absolute;\n z-index: 5;\n margin: 15px;\n}\n.react-flow__panel.top {\n top: 0;\n }\n.react-flow__panel.bottom {\n bottom: 0;\n }\n.react-flow__panel.top.center, .react-flow__panel.bottom.center {\n left: 50%;\n transform: translateX(-15px) translateX(-50%);\n }\n.react-flow__panel.left {\n left: 0;\n }\n.react-flow__panel.right {\n right: 0;\n }\n.react-flow__panel.left.center, .react-flow__panel.right.center {\n top: 50%;\n transform: translateY(-15px) translateY(-50%);\n }\n.react-flow__attribution {\n font-size: 10px;\n background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));\n padding: 2px 3px;\n margin: 0;\n}\n.react-flow__attribution a {\n text-decoration: none;\n color: #999;\n }\n@keyframes dashdraw {\n from {\n stroke-dashoffset: 10;\n }\n}\n.react-flow__edgelabel-renderer {\n position: absolute;\n width: 100%;\n height: 100%;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n left: 0;\n top: 0;\n}\n.react-flow__viewport-portal {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.react-flow__minimap {\n background: var(\n --xy-minimap-background-color-props,\n var(--xy-minimap-background-color, var(--xy-minimap-background-color-default))\n );\n}\n.react-flow__minimap-svg {\n display: block;\n }\n.react-flow__minimap-mask {\n fill: var(\n --xy-minimap-mask-background-color-props,\n var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default))\n );\n stroke: var(\n --xy-minimap-mask-stroke-color-props,\n var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-mask-stroke-width-props,\n var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default))\n );\n }\n.react-flow__minimap-node {\n fill: var(\n --xy-minimap-node-background-color-props,\n var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default))\n );\n stroke: var(\n --xy-minimap-node-stroke-color-props,\n var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-node-stroke-width-props,\n var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default))\n );\n }\n.react-flow__background-pattern.dots {\n fill: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default))\n );\n }\n.react-flow__background-pattern.lines {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default))\n );\n }\n.react-flow__background-pattern.cross {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default))\n );\n }\n.react-flow__controls {\n display: flex;\n flex-direction: column;\n box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));\n}\n.react-flow__controls.horizontal {\n flex-direction: row;\n }\n.react-flow__controls-button {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 26px;\n width: 26px;\n padding: 4px;\n border: none;\n background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));\n border-bottom: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n color: var(\n --xy-controls-button-color-props,\n var(--xy-controls-button-color, var(--xy-controls-button-color-default))\n );\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n.react-flow__controls-button svg {\n width: 100%;\n max-width: 12px;\n max-height: 12px;\n fill: currentColor;\n }\n.react-flow__edge.updating .react-flow__edge-path {\n stroke: #777;\n }\n.react-flow__edge-text {\n font-size: 10px;\n }\n.react-flow__node.selectable:focus,\n .react-flow__node.selectable:focus-visible {\n outline: none;\n }\n.react-flow__node-input,\n.react-flow__node-default,\n.react-flow__node-output,\n.react-flow__node-group {\n padding: 10px;\n border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));\n width: 150px;\n font-size: 12px;\n color: var(--xy-node-color, var(--xy-node-color-default));\n text-align: center;\n border: var(--xy-node-border, var(--xy-node-border-default));\n background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));\n}\n.react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {\n box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));\n }\n.react-flow__node-input.selectable.selected,\n .react-flow__node-input.selectable:focus,\n .react-flow__node-input.selectable:focus-visible,\n .react-flow__node-default.selectable.selected,\n .react-flow__node-default.selectable:focus,\n .react-flow__node-default.selectable:focus-visible,\n .react-flow__node-output.selectable.selected,\n .react-flow__node-output.selectable:focus,\n .react-flow__node-output.selectable:focus-visible,\n .react-flow__node-group.selectable.selected,\n .react-flow__node-group.selectable:focus,\n .react-flow__node-group.selectable:focus-visible {\n box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));\n }\n.react-flow__node-group {\n background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));\n}\n.react-flow__nodesselection-rect,\n.react-flow__selection {\n background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));\n border: var(--xy-selection-border, var(--xy-selection-border-default));\n}\n.react-flow__nodesselection-rect:focus,\n .react-flow__nodesselection-rect:focus-visible,\n .react-flow__selection:focus,\n .react-flow__selection:focus-visible {\n outline: none;\n }\n.react-flow__controls-button:hover {\n background: var(\n --xy-controls-button-background-color-hover-props,\n var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default))\n );\n color: var(\n --xy-controls-button-color-hover-props,\n var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default))\n );\n }\n.react-flow__controls-button:disabled {\n pointer-events: none;\n }\n.react-flow__controls-button:disabled svg {\n fill-opacity: 0.4;\n }\n.react-flow__controls-button:last-child {\n border-bottom: none;\n }\n.react-flow__controls.horizontal .react-flow__controls-button {\n border-bottom: none;\n border-right: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n }\n.react-flow__controls.horizontal .react-flow__controls-button:last-child {\n border-right: none;\n }\n.react-flow__resize-control {\n position: absolute;\n}\n.react-flow__resize-control.left,\n.react-flow__resize-control.right {\n cursor: ew-resize;\n}\n.react-flow__resize-control.top,\n.react-flow__resize-control.bottom {\n cursor: ns-resize;\n}\n.react-flow__resize-control.top.left,\n.react-flow__resize-control.bottom.right {\n cursor: nwse-resize;\n}\n.react-flow__resize-control.bottom.left,\n.react-flow__resize-control.top.right {\n cursor: nesw-resize;\n}\n/* handle styles */\n.react-flow__resize-control.handle {\n width: 5px;\n height: 5px;\n border: 1px solid #fff;\n border-radius: 1px;\n background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n translate: -50% -50%;\n}\n.react-flow__resize-control.handle.left {\n left: 0;\n top: 50%;\n}\n.react-flow__resize-control.handle.right {\n left: 100%;\n top: 50%;\n}\n.react-flow__resize-control.handle.top {\n left: 50%;\n top: 0;\n}\n.react-flow__resize-control.handle.bottom {\n left: 50%;\n top: 100%;\n}\n.react-flow__resize-control.handle.top.left {\n left: 0;\n}\n.react-flow__resize-control.handle.bottom.left {\n left: 0;\n}\n.react-flow__resize-control.handle.top.right {\n left: 100%;\n}\n.react-flow__resize-control.handle.bottom.right {\n left: 100%;\n}\n/* line styles */\n.react-flow__resize-control.line {\n border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n border-width: 0;\n border-style: solid;\n}\n.react-flow__resize-control.line.left,\n.react-flow__resize-control.line.right {\n width: 1px;\n transform: translate(-50%, 0);\n top: 0;\n height: 100%;\n}\n.react-flow__resize-control.line.left {\n left: 0;\n border-left-width: 1px;\n}\n.react-flow__resize-control.line.right {\n left: 100%;\n border-right-width: 1px;\n}\n.react-flow__resize-control.line.top,\n.react-flow__resize-control.line.bottom {\n height: 1px;\n transform: translate(0, -50%);\n left: 0;\n width: 100%;\n}\n.react-flow__resize-control.line.top {\n top: 0;\n border-top-width: 1px;\n}\n.react-flow__resize-control.line.bottom {\n border-bottom-width: 1px;\n top: 100%;\n}\n.react-flow__edge-textbg {\n fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));\n}\n.react-flow__edge-text {\n fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));\n}\n","/* @particle-academy/fancy-flow styles.\n Themeable: every surface, text, border, and accent resolves from a `--ff-*`\n custom-property layer defined on the component roots below. Override any of\n them on `.ff-editor` (or any ancestor, e.g. `:root`) to retheme the editor\n without fighting specificity — e.g.\n .ff-editor { --ff-accent: #ec4899; --ff-radius: 16px; }\n Dark mode honors both a `.dark` / `[data-theme=\"dark\"]` ancestor (Tailwind\n class strategy, what `colorMode` stamps) and the OS `prefers-color-scheme`,\n with a `.ff-canvas--light` opt-out for the OS path. */\n\n/* React Flow base layout CSS — bundled in so consumers import only this one\n stylesheet. Without it `.react-flow__node` isn't absolutely positioned and the\n pane/viewport transforms don't work, so the canvas renders blank. */\n@import \"@xyflow/react/dist/style.css\";\n\n/* ─── Theme tokens — LIGHT (defaults) ──────────────────────────────────────\n Defined on every component root so both composed (`<FlowEditor>`) and\n standalone (`<NodePalette>`, `<NodeConfigPanel>`, `<FlowRunFeed>`, `<FlowCanvas>`)\n usage inherits them. Nodes inherit from `.ff-canvas`. */\n.ff-editor, .ff-canvas, .ff-palette, .ff-panel, .ff-run-feed, .ff-prompt {\n --ff-font: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n --ff-mono: ui-monospace, \"SF Mono\", \"JetBrains Mono\", Menlo, Consolas, monospace;\n\n --ff-surface: #ffffff; /* raised: cards, nodes, inputs */\n --ff-surface-2: #f4f4f5; /* recessed: palette, panel, run feed, toolbar */\n --ff-surface-3: #fafafa; /* nested: repeater rows, hover */\n --ff-canvas-bg: #ffffff;\n --ff-canvas-dot: rgba(9, 9, 11, 0.09);\n --ff-node-bg: #ffffff;\n\n --ff-fg: #18181b;\n --ff-fg-muted: #52525b;\n --ff-fg-subtle: #71717a;\n --ff-fg-faint: #a1a1aa;\n\n --ff-border: #e4e4e7;\n --ff-border-strong: #d4d4d8;\n --ff-edge: #9ca3af;\n\n --ff-accent: #8b5cf6; /* selection, focus, brand */\n --ff-accent-soft: rgba(139, 92, 246, 0.12);\n --ff-accent-ring: rgba(139, 92, 246, 0.22);\n\n --ff-run: #10b981;\n --ff-run-hover: #059669;\n --ff-danger: #ef4444;\n --ff-warn: #d97706;\n --ff-warn-soft: rgba(245, 158, 11, 0.15);\n\n --ff-feed-node: #7c3aed; /* node id + status lines in the run feed */\n --ff-feed-ok: #059669;\n\n --ff-radius: 12px; /* shells, cards */\n --ff-radius-md: 8px; /* buttons, nodes */\n --ff-radius-sm: 6px; /* inputs, chips */\n\n --ff-shadow-sm: 0 1px 2px rgba(0,0,0,.05);\n --ff-shadow-md: 0 1px 2px rgba(0,0,0,.04), 0 4px 12px rgba(0,0,0,.06);\n --ff-shadow-lg: 0 10px 20px -6px rgba(0,0,0,.12), 0 4px 8px -6px rgba(0,0,0,.08);\n}\n\n/* ─── Theme tokens — DARK ──────────────────────────────────────────────── */\n/* Both a DESCENDANT of a dark root and the element itself.\n `FlowCanvas` puts `dark` on its own root when a colour mode resolves, and the\n descendant-only form could never match that — so the class the component sets\n on itself, and which a comment there claims drives these tokens, did nothing.\n A host that marks <html class=\"dark\"> still matches the first two. */\n.dark :is(.ff-editor, .ff-canvas, .ff-palette, .ff-panel, .ff-run-feed, .ff-prompt),\n[data-theme=\"dark\"] :is(.ff-editor, .ff-canvas, .ff-palette, .ff-panel, .ff-run-feed, .ff-prompt),\n.dark:is(.ff-editor, .ff-canvas, .ff-palette, .ff-panel, .ff-run-feed, .ff-prompt),\n[data-theme=\"dark\"]:is(.ff-editor, .ff-canvas, .ff-palette, .ff-panel, .ff-run-feed, .ff-prompt) {\n --ff-surface: #1c1c22;\n --ff-surface-2: #141419;\n --ff-surface-3: #27272a;\n --ff-canvas-bg: #0a0a0c;\n --ff-canvas-dot: rgba(255, 255, 255, 0.10);\n --ff-node-bg: #1c1c22;\n\n --ff-fg: #fafafa;\n --ff-fg-muted: #d4d4d8;\n --ff-fg-subtle: #a1a1aa;\n --ff-fg-faint: #71717a;\n\n --ff-border: #3f3f46;\n --ff-border-strong: #52525b;\n --ff-edge: #71717a;\n\n --ff-accent: #a78bfa;\n --ff-accent-soft: rgba(167, 139, 250, 0.16);\n --ff-accent-ring: rgba(167, 139, 250, 0.30);\n\n --ff-warn: #fb923c;\n --ff-warn-soft: rgba(251, 146, 60, 0.16);\n --ff-feed-node: #c4b5fd;\n --ff-feed-ok: #34d399;\n\n --ff-shadow-md: 0 1px 2px rgba(0,0,0,.4), 0 6px 16px rgba(0,0,0,.5);\n --ff-shadow-lg: 0 12px 28px -8px rgba(0,0,0,.6), 0 4px 10px -6px rgba(0,0,0,.5);\n}\n@media (prefers-color-scheme: dark) {\n :is(.ff-editor, .ff-canvas, .ff-palette, .ff-panel, .ff-run-feed, .ff-prompt):not(.ff-canvas--light):not(.ff-canvas--light *) {\n --ff-surface: #1c1c22;\n --ff-surface-2: #141419;\n --ff-surface-3: #27272a;\n --ff-canvas-bg: #0a0a0c;\n --ff-canvas-dot: rgba(255, 255, 255, 0.10);\n --ff-node-bg: #1c1c22;\n --ff-fg: #fafafa;\n --ff-fg-muted: #d4d4d8;\n --ff-fg-subtle: #a1a1aa;\n --ff-fg-faint: #71717a;\n --ff-border: #3f3f46;\n --ff-border-strong: #52525b;\n --ff-edge: #71717a;\n --ff-accent: #a78bfa;\n --ff-accent-soft: rgba(167, 139, 250, 0.16);\n --ff-accent-ring: rgba(167, 139, 250, 0.30);\n --ff-warn: #fb923c;\n --ff-warn-soft: rgba(251, 146, 60, 0.16);\n --ff-feed-node: #c4b5fd;\n --ff-feed-ok: #34d399;\n --ff-shadow-md: 0 1px 2px rgba(0,0,0,.4), 0 6px 16px rgba(0,0,0,.5);\n --ff-shadow-lg: 0 12px 28px -8px rgba(0,0,0,.6), 0 4px 10px -6px rgba(0,0,0,.5);\n }\n}\n\n/* ─── Canvas (standalone <FlowCanvas>) ─────────────────────────────────── */\n.ff-canvas {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--ff-border);\n border-radius: var(--ff-radius);\n overflow: hidden;\n background: var(--ff-canvas-bg);\n}\n.ff-canvas__toolbar {\n border-bottom: 1px solid var(--ff-border);\n padding: 8px 10px;\n display: flex; gap: 6px; align-items: center; flex-wrap: wrap;\n background: var(--ff-surface-2);\n color: var(--ff-fg-muted);\n font-family: var(--ff-font);\n font-size: 12px;\n}\n.ff-canvas__surface { flex: 1; min-height: 0; position: relative; background: var(--ff-canvas-bg); }\n\n/* xyflow background grid color via theme token */\n.react-flow__background pattern circle { fill: var(--ff-canvas-dot); }\n\n/* ─── Nodes ────────────────────────────────────────────────────────────── */\n.ff-node {\n min-width: 200px;\n max-width: 280px;\n background: var(--ff-node-bg);\n border: 1px solid var(--ff-border-strong);\n border-radius: var(--ff-radius-md);\n font-family: var(--ff-font);\n font-size: 12px;\n color: var(--ff-fg);\n box-shadow: var(--ff-shadow-md);\n transition: box-shadow 200ms, border-color 200ms;\n overflow: hidden;\n}\n.ff-node:hover { border-color: var(--ff-border); box-shadow: var(--ff-shadow-lg); }\n.ff-node--selected {\n border-color: var(--ff-accent);\n box-shadow: 0 0 0 3px var(--ff-accent-ring), var(--ff-shadow-lg);\n}\n\n.ff-node__header {\n display: flex; align-items: center; gap: 8px;\n padding: 7px 10px;\n color: #fff;\n font-weight: 600;\n}\n.ff-node__icon { font-size: 14px; line-height: 1; }\n.ff-node__tag {\n font-size: 10px;\n letter-spacing: 0.06em;\n font-weight: 700;\n opacity: 0.9;\n text-transform: uppercase;\n}\n.ff-node__label { flex: 1; font-size: 13px; }\n.ff-node__desc { margin: 0; padding: 8px 10px 0; font-size: 11px; color: var(--ff-fg-subtle); }\n.ff-node__body { padding: 8px 10px 10px; }\n.ff-node__status-text { margin: 0; padding: 4px 10px 8px; font-size: 11px; color: var(--ff-fg-subtle); }\n.ff-node--status-error .ff-node__status-text { color: var(--ff-danger); }\n\n.ff-node--status-running { animation: ff-pulse 1.4s ease-in-out infinite; }\n@keyframes ff-pulse {\n 0%, 100% { box-shadow: 0 0 0 0 var(--ff-accent-ring), var(--ff-shadow-md); }\n 50% { box-shadow: 0 0 0 6px transparent, var(--ff-shadow-md); }\n}\n\n/* Status dot in the header */\n.ff-node__dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(255,255,255,0.5); }\n.ff-node__dot--queued { background: #fbbf24; }\n.ff-node__dot--running { background: #fde68a; box-shadow: 0 0 6px #fde68a; }\n.ff-node__dot--done { background: #34d399; }\n.ff-node__dot--error { background: #f87171; }\n\n/* Subgraph metadata row */\n.ff-subgraph__meta { display: flex; justify-content: space-between; font-size: 11px; color: var(--ff-fg-subtle); }\n\n/* Node summary inside the card */\n.ff-node__summary { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; }\n.ff-node__summary li { display: flex; gap: 6px; font-size: 11px; }\n.ff-node__summary-key { color: var(--ff-fg-subtle); }\n.ff-node__summary-value { font-family: var(--ff-mono); }\n.ff-node__summary-more { color: var(--ff-fg-subtle); font-size: 10px; }\n.ff-node__body-empty { font-size: 11px; color: var(--ff-fg-faint); font-style: italic; }\n\n/* Reactive output (G12) — a node's live computed value. */\n.ff-node__output {\n margin: 0; padding: 4px 10px 8px;\n font-size: 11px; font-family: var(--ff-mono);\n color: var(--ff-feed-ok);\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n\n/* xyflow wraps every custom node in a `.react-flow__node-{type}` div with\n default chrome. Our kit ships its own via `.ff-node`, so strip xyflow's. */\n.react-flow__node-trigger,\n.react-flow__node-action,\n.react-flow__node-decision,\n.react-flow__node-output,\n.react-flow__node-note,\n.react-flow__node-subgraph {\n background: transparent !important;\n border: none !important;\n padding: 0 !important;\n box-shadow: none !important;\n border-radius: 0 !important;\n}\n\n/* xyflow handle */\n.react-flow__handle {\n width: 10px; height: 10px;\n background: var(--ff-surface);\n border: 2px solid var(--ff-border-strong);\n border-radius: 50%;\n}\n.react-flow__handle:hover { background: var(--ff-accent); border-color: var(--ff-accent); }\n\n/* xyflow edges */\n.react-flow__edge-path { stroke: var(--ff-edge); }\n.react-flow__connection-path { stroke: var(--ff-accent); stroke-width: 2; }\n\n/* xyflow controls — themed via tokens (bump specificity + !important to beat\n xyflow's own stylesheet). */\n.react-flow__controls { background: transparent; box-shadow: none; }\n.react-flow__controls .react-flow__controls-button {\n background: var(--ff-surface) !important;\n border-color: var(--ff-border) !important;\n border-bottom-color: var(--ff-border) !important;\n color: var(--ff-fg) !important;\n border-radius: var(--ff-radius-sm);\n}\n.react-flow__controls .react-flow__controls-button:hover { background: var(--ff-surface-3) !important; }\n.react-flow__controls .react-flow__controls-button svg,\n.react-flow__controls .react-flow__controls-button svg path,\n.react-flow__controls .react-flow__controls-button svg polyline,\n.react-flow__controls .react-flow__controls-button svg polygon {\n fill: currentColor !important;\n stroke: currentColor !important;\n}\n\n/* NodeResizer chrome */\n.react-flow__resize-control.line { border-color: var(--ff-accent-ring); }\n.react-flow__resize-control.handle { width: 8px; height: 8px; border-radius: 2px; border: 1px solid var(--ff-surface); background: var(--ff-accent); }\n\n/* ─── Swimlanes (G6) ───────────────────────────────────────────────────── */\n.ff-lane {\n width: 100%; height: 100%; box-sizing: border-box;\n background: var(--ff-accent-soft);\n border: 1px dashed var(--ff-border-strong);\n border-radius: var(--ff-radius-md);\n overflow: hidden;\n}\n.ff-lane--selected { border-style: solid; border-color: var(--ff-accent); }\n.ff-lane__header {\n display: flex; align-items: center;\n height: 22px; padding: 0 8px;\n color: #fff; font-size: 11px; font-weight: 600;\n font-family: var(--ff-font);\n border-radius: 7px 7px 0 0;\n}\n.ff-lane__title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\n/* ─── Notes (annotation) — sticky-note, visual-only ────────────────────── */\n.ff-note {\n width: 100%; height: 100%; box-sizing: border-box;\n padding: 8px 10px;\n border: 1px solid transparent;\n border-radius: var(--ff-radius-md);\n font-family: var(--ff-font);\n box-shadow: var(--ff-shadow-sm);\n overflow: hidden;\n display: flex; flex-direction: column; gap: 4px;\n}\n.ff-note--selected { box-shadow: 0 0 0 2px currentColor; }\n.ff-note__title { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; }\n.ff-note__body {\n flex: 1; min-height: 0;\n font-size: 12px; line-height: 1.5;\n color: var(--ff-fg-muted);\n white-space: pre-wrap; overflow: auto;\n}\n.ff-note__placeholder { color: var(--ff-fg-faint); font-style: italic; }\n.ff-note__input {\n flex: 1; min-height: 0; width: 100%;\n resize: none; border: none; outline: none; background: transparent;\n font: inherit; font-size: 12px; line-height: 1.5; color: inherit;\n}\n\n/* ─── Run controls ─────────────────────────────────────────────────────── */\n.ff-run-controls { display: flex; gap: 6px; }\n.ff-run-controls__btn {\n border: 1px solid var(--ff-border); border-radius: var(--ff-radius-sm);\n padding: 6px 12px;\n font: inherit; font-size: 12px; font-weight: 500;\n cursor: pointer;\n background: var(--ff-surface); color: var(--ff-fg);\n transition: background 150ms, border-color 150ms;\n}\n.ff-run-controls__btn:hover:not(:disabled) { background: var(--ff-surface-3); }\n.ff-run-controls__btn--run { background: var(--ff-run); border-color: var(--ff-run-hover); color: #fff; }\n.ff-run-controls__btn--run:hover:not(:disabled) { background: var(--ff-run-hover); }\n.ff-run-controls__btn--cancel { background: var(--ff-danger); border-color: var(--ff-danger); color: #fff; }\n.ff-run-controls__btn:disabled { opacity: 0.5; cursor: default; }\n\n/* ─── Run feed (header + scrolling body) ───────────────────────────────── */\n.ff-run-feed {\n display: flex; flex-direction: column;\n font-family: var(--ff-mono);\n background: var(--ff-surface-2);\n color: var(--ff-fg);\n border: 1px solid var(--ff-border);\n border-radius: var(--ff-radius-md);\n overflow: hidden;\n max-height: 260px;\n}\n.ff-run-feed__header {\n display: flex; align-items: center; gap: 8px;\n padding: 7px 12px;\n border-bottom: 1px solid var(--ff-border);\n font-family: var(--ff-font);\n font-size: 11.5px; font-weight: 600; color: var(--ff-fg-muted);\n flex-shrink: 0;\n}\n.ff-run-feed__title { color: var(--ff-accent); font-family: var(--ff-mono); }\n.ff-run-feed__badge {\n font-family: var(--ff-font); font-size: 10px; font-weight: 600;\n color: var(--ff-warn); background: var(--ff-warn-soft);\n padding: 1px 8px; border-radius: 999px;\n}\n.ff-run-feed__count { margin-left: auto; font-family: var(--ff-mono); font-size: 10.5px; color: var(--ff-fg-faint); }\n.ff-run-feed__body { flex: 1; min-height: 0; overflow: auto; padding: 8px 12px; font-size: 11px; line-height: 1.7; }\n.ff-run-feed__empty { color: var(--ff-fg-subtle); margin: 0; }\n.ff-run-feed__row { display: flex; gap: 9px; padding: 1px 0; white-space: pre-wrap; word-break: break-word; }\n.ff-run-feed__time { color: var(--ff-fg-faint); flex-shrink: 0; }\n.ff-run-feed__node { color: var(--ff-feed-node); flex-shrink: 0; }\n.ff-run-feed__text { flex: 1; min-width: 0; }\n.ff-run-feed__row--error .ff-run-feed__text { color: var(--ff-danger); }\n.ff-run-feed__row--warn .ff-run-feed__text { color: var(--ff-warn); }\n.ff-run-feed__row--status .ff-run-feed__text { color: var(--ff-feed-node); }\n\n/* ─── FlowEditor — unified shell ───────────────────────────────────────── */\n.ff-editor {\n display: grid;\n grid-template-columns: 216px 1fr 300px;\n gap: 0;\n font-family: var(--ff-font);\n background: var(--ff-surface);\n border: 1px solid var(--ff-border);\n border-radius: var(--ff-radius);\n overflow: hidden;\n box-shadow: var(--ff-shadow-md);\n}\n.ff-editor__main { display: flex; flex-direction: column; min-width: 0; min-height: 0; position: relative; background: var(--ff-canvas-bg); }\n/* The canvas fills the middle column seamlessly — the shell owns the frame. */\n.ff-editor__main .ff-canvas { flex: 1; min-height: 0; border: none; border-radius: 0; }\n.ff-editor__empty {\n position: absolute; inset: 0; display: grid; place-items: center;\n padding: 24px; text-align: center; pointer-events: none;\n}\n.ff-editor__empty > * { pointer-events: auto; }\n\n.ff-editor__palette { border: none; border-right: 1px solid var(--ff-border); border-radius: 0; background: var(--ff-surface-2); }\n.ff-editor__panel-wrap {\n display: flex; flex-direction: column; min-height: 0;\n border-left: 1px solid var(--ff-border);\n background: var(--ff-surface-2);\n}\n.ff-editor__panel { flex: 1; min-height: 0; border: none; border-radius: 0; background: transparent; }\n.ff-editor__panel-footer { flex-shrink: 0; display: flex; flex-wrap: wrap; gap: 6px; padding: 0 12px 12px; }\n.ff-editor__feed { flex-shrink: 0; height: 168px; max-height: none; border: none; border-top: 1px solid var(--ff-border); border-radius: 0; }\n\n/* Node right-click menu — fixed so the canvas' overflow can't clip it. */\n.ff-editor__ctx {\n position: fixed; z-index: 50; min-width: 150px; padding: 4px;\n display: flex; flex-direction: column;\n background: var(--ff-surface); border: 1px solid var(--ff-border-strong); border-radius: var(--ff-radius-md);\n box-shadow: var(--ff-shadow-lg);\n}\n.ff-editor__ctx-item {\n border: 0; background: transparent; cursor: pointer; text-align: left;\n padding: 6px 10px; border-radius: 5px; font-size: 12.5px; color: inherit;\n}\n.ff-editor__ctx-item:hover { background: var(--ff-surface-3); }\n.ff-editor__ctx-item--danger { color: var(--ff-danger); }\n\n.ff-editor__sep { width: 1px; align-self: stretch; background: var(--ff-border); margin: 0 3px; }\n.ff-editor__btn {\n display: inline-flex; align-items: center; gap: 6px;\n border: 1px solid var(--ff-border); background: var(--ff-surface); cursor: pointer;\n border-radius: var(--ff-radius-sm); padding: 5px 11px;\n color: var(--ff-fg-muted); font-size: 12px; font-weight: 500;\n transition: background 150ms, color 150ms;\n}\n.ff-editor__btn:hover:not(:disabled) { background: var(--ff-surface-3); color: var(--ff-fg); }\n.ff-editor__btn:disabled { opacity: 0.45; cursor: not-allowed; }\n.ff-editor__count { margin-left: auto; font-family: var(--ff-mono); font-size: 11px; color: var(--ff-fg-faint); }\n\n/* ─── NodePalette ──────────────────────────────────────────────────────── */\n.ff-palette {\n display: flex; flex-direction: column;\n background: var(--ff-surface-2);\n border: 1px solid var(--ff-border);\n border-radius: var(--ff-radius);\n overflow: hidden;\n font-size: 13px;\n color: var(--ff-fg);\n}\n.ff-palette__search { padding: 10px; border-bottom: 1px solid var(--ff-border); }\n.ff-palette__search-input {\n width: 100%; padding: 7px 10px;\n border: 1px solid var(--ff-border); border-radius: var(--ff-radius-sm);\n background: var(--ff-surface); color: inherit; font: inherit; font-size: 12.5px;\n outline: none; transition: border-color 150ms, box-shadow 150ms;\n}\n.ff-palette__search-input:focus { border-color: var(--ff-accent); box-shadow: 0 0 0 3px var(--ff-accent-soft); }\n.ff-palette__list { flex: 1; overflow: auto; padding: 8px; }\n.ff-palette__group { padding: 2px 0; }\n.ff-palette__group-label {\n font-size: 9.5px; letter-spacing: 0.07em; text-transform: uppercase;\n color: var(--ff-fg-faint); font-weight: 700;\n padding: 11px 8px 6px;\n}\n.ff-palette__row {\n width: 100%;\n display: flex; align-items: flex-start; gap: 9px;\n padding: 8px; border: 1px solid transparent; background: transparent; cursor: grab;\n border-radius: var(--ff-radius-md);\n text-align: left; color: inherit; font: inherit;\n transition: background 130ms, border-color 130ms;\n}\n.ff-palette__row:hover { background: var(--ff-surface-3); border-color: var(--ff-border); }\n.ff-palette__row:active { cursor: grabbing; }\n.ff-palette__row-dot {\n flex-shrink: 0; width: 24px; height: 24px;\n border-radius: 7px;\n display: inline-flex; align-items: center; justify-content: center;\n color: white; font-size: 14px;\n}\n.ff-palette__row-text { display: flex; flex-direction: column; min-width: 0; }\n.ff-palette__row-label { font-size: 12.5px; font-weight: 600; line-height: 1.2; }\n.ff-palette__row-desc {\n font-size: 10.5px; color: var(--ff-fg-faint); line-height: 1.35; margin-top: 2px;\n overflow: hidden; text-overflow: ellipsis;\n display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical;\n}\n\n/* ─── NodeConfigPanel ──────────────────────────────────────────────────── */\n.ff-panel {\n background: var(--ff-surface-2);\n border: 1px solid var(--ff-border);\n border-radius: var(--ff-radius);\n padding: 14px;\n display: flex; flex-direction: column; gap: 12px;\n overflow: auto;\n font-size: 13px;\n color: var(--ff-fg);\n}\n.ff-panel--empty { align-items: center; justify-content: center; }\n.ff-panel__empty { font-size: 12px; color: var(--ff-fg-faint); text-align: center; }\n.ff-panel__header { display: flex; align-items: center; gap: 10px; }\n.ff-panel__head-icon {\n flex-shrink: 0; width: 28px; height: 28px; border-radius: var(--ff-radius-sm);\n display: grid; place-items: center; color: #fff; font-size: 15px;\n}\n.ff-panel__head-text { display: flex; flex-direction: column; min-width: 0; gap: 1px; }\n.ff-panel__head-kind { font-size: 9.5px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ff-fg-faint); }\n.ff-panel__head-name { font-size: 13.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n/* legacy tag (kept for back-compat with hand-composed panels) */\n.ff-panel__kind-tag {\n align-self: flex-start;\n font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase;\n background: var(--ff-accent-soft); color: var(--ff-accent);\n padding: 2px 8px; border-radius: 999px;\n}\n.ff-panel__kind-desc { margin: 0; font-size: 12px; color: var(--ff-fg-subtle); line-height: 1.5; }\n.ff-panel__divider { border: 0; border-top: 1px solid var(--ff-border); margin: 2px 0; }\n\n.ff-panel__actions { margin-top: auto; padding-top: 12px; }\n.ff-panel__delete {\n width: 100%; padding: 8px 10px;\n font-size: 13px; font-weight: 500;\n color: var(--ff-danger); background: transparent;\n border: 1px solid var(--ff-danger); border-radius: var(--ff-radius-sm);\n cursor: pointer; opacity: 0.85; transition: opacity 150ms, background 150ms;\n}\n.ff-panel__delete:hover { opacity: 1; background: rgba(239, 68, 68, 0.08); }\n.ff-panel__field { display: flex; flex-direction: column; gap: 5px; }\n.ff-panel__label { font-size: 12px; font-weight: 600; color: var(--ff-fg-muted); }\n.ff-panel__hint { font-size: 11px; color: var(--ff-fg-faint); margin: 0; line-height: 1.4; }\n.ff-panel__required { color: var(--ff-danger); }\n.ff-panel__input {\n width: 100%; padding: 7px 10px;\n border: 1px solid var(--ff-border); border-radius: var(--ff-radius-sm);\n background: var(--ff-surface); color: inherit; font: inherit; font-size: 12.5px;\n box-sizing: border-box; outline: none;\n transition: border-color 150ms, box-shadow 150ms;\n}\n.ff-panel__input:focus { border-color: var(--ff-accent); box-shadow: 0 0 0 3px var(--ff-accent-soft); }\n.ff-panel__input--textarea { font-family: inherit; resize: vertical; line-height: 1.5; }\n.ff-panel__input--expression,\n.ff-panel__input--json { font-family: var(--ff-mono); font-size: 11.5px; }\n.ff-panel__switch { display: inline-flex; align-items: center; cursor: pointer; }\n.ff-panel__switch input { display: none; }\n.ff-panel__switch-slider { width: 32px; height: 18px; background: var(--ff-border-strong); border-radius: 999px; position: relative; transition: background 200ms; }\n.ff-panel__switch-slider::before { content: \"\"; position: absolute; left: 2px; top: 2px; width: 14px; height: 14px; background: #fff; border-radius: 50%; transition: left 200ms; }\n.ff-panel__switch input:checked + .ff-panel__switch-slider { background: var(--ff-accent); }\n.ff-panel__switch input:checked + .ff-panel__switch-slider::before { left: 16px; }\n.ff-panel__issues { margin-top: 4px; }\n.ff-panel__issue { font-size: 11px; color: var(--ff-warn); margin: 2px 0; }\n/* A parse error sits directly under the field it belongs to, not in the panel's\n issue list at the bottom — an error about the box you are typing in is\n useless three scroll-lengths away from it. */\n.ff-panel__issue--field { margin-top: 4px; }\n\n/* Repeater / key-value config fields */\n.ff-repeater { display: flex; flex-direction: column; gap: 8px; }\n.ff-repeater__empty { font-size: 11px; color: var(--ff-fg-subtle); margin: 0; font-style: italic; }\n.ff-repeater__row {\n display: flex; flex-direction: column; gap: 6px;\n border: 1px solid var(--ff-border); border-radius: var(--ff-radius-sm); padding: 10px; background: var(--ff-surface);\n}\n.ff-repeater__row-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }\n.ff-repeater__row-title { font-size: 11px; font-weight: 600; color: var(--ff-fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ff-repeater__row-actions { display: flex; gap: 2px; flex-shrink: 0; }\n.ff-repeater__btn { border: 1px solid transparent; background: transparent; cursor: pointer; border-radius: 4px; font-size: 11px; line-height: 1; padding: 3px 5px; color: var(--ff-fg-subtle); }\n.ff-repeater__btn:hover:not(:disabled) { background: var(--ff-surface-3); color: var(--ff-fg); }\n.ff-repeater__btn:disabled { opacity: .35; cursor: not-allowed; }\n.ff-repeater__btn--danger:hover:not(:disabled) { background: rgba(239,68,68,0.12); color: var(--ff-danger); }\n.ff-repeater__cell { display: flex; flex-direction: column; gap: 3px; }\n.ff-panel__label--sub { font-size: 11px; color: var(--ff-fg-subtle); font-weight: 400; }\n.ff-repeater__add {\n align-self: flex-start; border: 1px dashed var(--ff-border-strong); background: transparent;\n border-radius: var(--ff-radius-sm); padding: 6px 11px; font-size: 11px; color: var(--ff-fg-muted); cursor: pointer;\n}\n.ff-repeater__add:hover:not(:disabled) { border-color: var(--ff-accent); color: var(--ff-accent); }\n.ff-repeater__add:disabled { opacity: .4; cursor: not-allowed; }\n\n.ff-keyvalue { display: flex; flex-direction: column; gap: 6px; }\n.ff-keyvalue__head,\n.ff-keyvalue__row { display: grid; grid-template-columns: 1fr 1fr auto; gap: 6px; align-items: center; }\n.ff-keyvalue__head { font-size: 10px; text-transform: uppercase; letter-spacing: .04em; color: var(--ff-fg-faint); }\n.ff-panel__hint--missing { color: var(--ff-warn); font-style: italic; }\n\n/* Edge label editor */\n.ff-editor__edge-label { padding: 6px; min-width: 200px; }\n.ff-editor__edge-label .ff-panel__input { width: 100%; }\n\n/* Rich user input preview */\n.ff-rich-preview { display: flex; flex-direction: column; gap: 6px; }\n.ff-rich-preview__frame { border: 1px solid var(--ff-border); border-radius: var(--ff-radius-sm); overflow: hidden; max-height: 180px; background: var(--ff-surface); }\n.ff-rich-preview__unavailable { border: 1px dashed var(--ff-border-strong); border-radius: var(--ff-radius-sm); padding: 10px; font-size: 11px; color: var(--ff-fg-subtle); line-height: 1.5; }\n.ff-rich-preview__unavailable code { font-size: 10px; background: var(--ff-surface-3); padding: 1px 4px; border-radius: 3px; }\n.ff-rich-preview__title { font-size: 11px; font-weight: 600; color: var(--ff-fg-muted); }\n\n/* Resizable nodes (G11) */\n.ff-node--resizable { max-width: none; width: 100%; height: 100%; }\n\n/* ─── In-editor human-input modal ──────────────────────────────────────── */\n.ff-prompt-overlay {\n position: absolute; inset: 0; z-index: 20;\n display: grid; place-items: center; padding: 16px;\n background: rgba(9, 9, 11, 0.5);\n backdrop-filter: blur(2px);\n}\n.ff-prompt {\n width: 100%; max-width: 420px; max-height: 100%; overflow: auto;\n padding: 18px;\n border-radius: var(--ff-radius);\n background: var(--ff-surface);\n border: 1px solid var(--ff-border);\n box-shadow: var(--ff-shadow-lg);\n font-family: var(--ff-font);\n color: var(--ff-fg);\n}\n.ff-prompt__title { font-size: 14px; font-weight: 600; color: var(--ff-fg); margin-bottom: 10px; }\n.ff-prompt__desc { font-size: 13px; line-height: 1.5; color: var(--ff-fg-subtle); margin-bottom: 12px; }\n.ff-prompt__fields { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }\n.ff-prompt__field { display: flex; flex-direction: column; gap: 5px; }\n.ff-prompt__label { font-size: 12px; font-weight: 500; color: var(--ff-fg-muted); }\n.ff-prompt__req { color: var(--ff-danger); }\n.ff-prompt__input {\n width: 100%; box-sizing: border-box; padding: 8px 10px;\n font-size: 13px; border-radius: var(--ff-radius-sm);\n border: 1px solid var(--ff-border); background: var(--ff-surface); color: var(--ff-fg);\n outline: none; transition: border-color 150ms, box-shadow 150ms;\n}\n.ff-prompt__input:focus { border-color: var(--ff-accent); box-shadow: 0 0 0 3px var(--ff-accent-soft); }\n.ff-prompt__switch { width: 16px; height: 16px; }\n.ff-prompt__actions { display: flex; justify-content: flex-end; gap: 8px; }\n.ff-prompt__btn { padding: 8px 14px; font-size: 13px; font-weight: 500; border-radius: var(--ff-radius-sm); border: 1px solid transparent; cursor: pointer; }\n.ff-prompt__btn--ghost { background: transparent; border-color: var(--ff-border-strong); color: var(--ff-fg-muted); }\n.ff-prompt__btn--ghost:hover { background: var(--ff-surface-3); }\n.ff-prompt__btn--primary { background: var(--ff-accent); color: #fff; }\n.ff-prompt__btn--primary:disabled { opacity: 0.5; cursor: not-allowed; }\n.ff-prompt__btn--danger { background: transparent; border-color: var(--ff-danger); color: var(--ff-danger); }\n\n/* Alignment guide lines (G15) */\n.ff-helper-line { background: var(--ff-accent); }\n\n/* ─── Responsive ───────────────────────────────────────────────────────── */\n@media (max-width: 1024px) {\n .ff-editor { grid-template-columns: 190px 1fr; }\n .ff-editor__panel-wrap { display: none; }\n}\n@media (max-width: 720px) {\n .ff-editor { grid-template-columns: 1fr; }\n .ff-editor__palette { display: none; }\n}\n\n/* ─── FlowViewer ─────────────────────────────────────────────────────────────\n Read-only rendering of a workflow. Every colour here reads from the same\n --ff-* token layer the editor uses, so a consumer that themed the editor gets\n a themed viewer for free and does not restyle the same surface twice.\n ──────────────────────────────────────────────────────────────────────────── */\n.ff-viewer { color: var(--ff-fg, inherit); }\n\n.ff-viewer--empty {\n display: grid;\n place-items: center;\n padding: 2rem 1rem;\n border: 1px dashed var(--ff-border, #3f3f46);\n border-radius: var(--ff-radius, 12px);\n}\n.ff-viewer__empty { font-size: 13px; color: var(--ff-fg-muted, #a1a1aa); }\n\n.ff-viewer__list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }\n\n.ff-viewer__row {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n width: 100%;\n padding: 10px 12px;\n text-align: left;\n background: var(--ff-surface, transparent);\n border: 1px solid var(--ff-border, #3f3f46);\n border-radius: var(--ff-radius, 10px);\n}\n.ff-viewer__row--interactive { cursor: pointer; transition: border-color .15s ease, background-color .15s ease; }\n.ff-viewer__row--interactive:hover { border-color: var(--ff-accent, #8b5cf6); }\n.ff-viewer__row--selected { border-color: var(--ff-accent, #8b5cf6); }\n\n.ff-viewer__index {\n flex: none;\n display: grid;\n place-items: center;\n width: 22px; height: 22px;\n border-radius: 999px;\n font-size: 11px; font-weight: 700; font-variant-numeric: tabular-nums;\n color: #fff;\n}\n\n/* min-width:0 is what lets the long-title truncation below actually engage —\n a flex child defaults to min-width:auto, i.e. its min-content width. */\n.ff-viewer__body { display: grid; gap: 2px; min-width: 0; flex: 1 1 auto; }\n.ff-viewer__title { font-size: 13px; font-weight: 600; line-height: 1.3; }\n.ff-viewer__desc {\n font-size: 12px; line-height: 1.4;\n color: var(--ff-fg-muted, #a1a1aa);\n overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;\n}\n\n.ff-viewer__status {\n flex: none;\n padding: 2px 8px;\n border-radius: 999px;\n font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em;\n}\n.ff-viewer__status--ok { background: #10b98122; color: #34d399; }\n.ff-viewer__status--running { background: #3b82f622; color: #60a5fa; }\n.ff-viewer__status--failed { background: #ef444422; color: #f87171; }\n.ff-viewer__status--skipped { background: #71717a22; color: #a1a1aa; }\n.ff-viewer__status--pending { background: #a855f722; color: #c084fc; }\n\n/* ── Expression field: {{ }} autocomplete + reference help (issue #5) ─────── */\n.ff-expression { position: relative; }\n.ff-expression__bar {\n display: flex; align-items: center; gap: 8px; margin-top: 3px;\n}\n.ff-expression__helpbtn {\n background: none; border: none; padding: 0; cursor: pointer;\n font-family: var(--ff-font-mono, ui-monospace, monospace);\n font-size: 10px; color: var(--ff-accent); text-decoration: underline dotted;\n}\n.ff-expression__hint { font-size: 10px; color: var(--ff-fg-3); }\n.ff-expression__hint code { font-family: var(--ff-font-mono, ui-monospace, monospace); }\n\n/* The menu overlays whatever follows the field, so a picker opening near the\n bottom of the panel does not push the rest of the form down as you type. */\n.ff-expression__menu {\n position: absolute; z-index: 20; left: 0; right: 0;\n margin: 2px 0 0; padding: 4px; list-style: none;\n max-height: 208px; overflow-y: auto;\n background: var(--ff-bg-1); border: 1px solid var(--ff-border-1);\n border-radius: 6px; box-shadow: 0 8px 24px rgb(0 0 0 / 18%);\n}\n.ff-expression__option {\n display: flex; flex-direction: column; gap: 1px; width: 100%;\n padding: 5px 7px; border: none; border-radius: 4px;\n background: none; text-align: left; cursor: pointer;\n}\n.ff-expression__option:hover,\n.ff-expression__option.is-active { background: var(--ff-bg-2); }\n.ff-expression__path {\n font-family: var(--ff-font-mono, ui-monospace, monospace);\n font-size: 11px; color: var(--ff-fg-1);\n}\n.ff-expression__source { font-size: 10px; color: var(--ff-accent); }\n.ff-expression__desc { font-size: 10px; color: var(--ff-fg-3); }\n\n.ff-expression__help {\n margin-top: 4px; padding: 7px 8px;\n background: var(--ff-bg-2); border: 1px solid var(--ff-border-1);\n border-radius: 6px; font-size: 10px; color: var(--ff-fg-2);\n}\n.ff-expression__help dl { margin: 0; display: grid; gap: 4px; }\n.ff-expression__help dt code {\n font-family: var(--ff-font-mono, ui-monospace, monospace); color: var(--ff-fg-1);\n}\n.ff-expression__help dd { margin: 0 0 0 2px; color: var(--ff-fg-3); }\n.ff-expression__note { margin: 6px 0 0; color: var(--ff-fg-3); }\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,75 @@
|
|
|
1
1
|
import { ReactNode, ComponentType } from 'react';
|
|
2
|
+
import { F as FlowGraph, b as FlowNode, P as PortDescriptor, N as NodeExecutor } from './types-sOmpCitB.cjs';
|
|
2
3
|
import { NodeProps } from '@xyflow/react';
|
|
3
|
-
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* What a node emits, described well enough for an author to reference it.
|
|
7
|
+
*
|
|
8
|
+
* This is deliberately NOT `outputs` — that is a `PortSpec`, which describes
|
|
9
|
+
* WIRES (port ids and labels). Nothing in the registry described the DATA on
|
|
10
|
+
* those wires, so "what can I write in this field" had no answer to derive
|
|
11
|
+
* from. Hence a second, small declaration.
|
|
12
|
+
*/
|
|
13
|
+
type OutputField = {
|
|
14
|
+
/** Dot-path relative to the emitted value: `text`, `user.email`. */
|
|
15
|
+
path: string;
|
|
16
|
+
type?: "string" | "number" | "boolean" | "object" | "array" | "unknown";
|
|
17
|
+
description?: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* A kind's output shape — static, or computed from the node's config.
|
|
21
|
+
*
|
|
22
|
+
* The function form is the important one. A `user_input` step emits exactly the
|
|
23
|
+
* field keys its author defined, and a `transform` emits the keys it was told
|
|
24
|
+
* to build; no static list can know either. A static list would have forced
|
|
25
|
+
* every dynamic kind to declare nothing, which is the case an author most needs
|
|
26
|
+
* help with.
|
|
27
|
+
*/
|
|
28
|
+
type OutputShape<TConfig = Record<string, unknown>> = OutputField[] | ((config: TConfig) => OutputField[]);
|
|
29
|
+
/** One entry in the variable picker. */
|
|
30
|
+
type AvailableVariable = {
|
|
31
|
+
/** Exactly what gets inserted, including the braces. */
|
|
32
|
+
expression: string;
|
|
33
|
+
/** The bare path, for display: `$json.text`. */
|
|
34
|
+
path: string;
|
|
35
|
+
type?: OutputField["type"];
|
|
36
|
+
description?: string;
|
|
37
|
+
/** Label of the upstream node this came from, for disambiguation. */
|
|
38
|
+
source?: string;
|
|
39
|
+
};
|
|
40
|
+
/** Resolve a kind's output shape for a specific node. */
|
|
41
|
+
declare function outputFieldsFor(node: FlowNode): OutputField[];
|
|
42
|
+
/**
|
|
43
|
+
* The variables an author can reference from `nodeId`, in this graph.
|
|
44
|
+
*
|
|
45
|
+
* Only the DIRECT predecessors are consulted, because `in` is the value on the
|
|
46
|
+
* incoming wire. Walking further would offer a grandparent's fields, which
|
|
47
|
+
* resolve to `null` at runtime — a suggestion that silently produces nothing is
|
|
48
|
+
* worse than no suggestion, since the author has no reason to doubt it.
|
|
49
|
+
*
|
|
50
|
+
* Always includes the whole input. That one exists no matter what upstream
|
|
51
|
+
* declared, and it is the escape hatch when a kind has no `outputShape` yet.
|
|
52
|
+
*/
|
|
53
|
+
declare function baseVariables(): AvailableVariable[];
|
|
54
|
+
declare function availableVariables(graph: FlowGraph, nodeId: string): AvailableVariable[];
|
|
55
|
+
/** One documented form of the expression grammar. */
|
|
56
|
+
type ExpressionForm = {
|
|
57
|
+
syntax: string;
|
|
58
|
+
meaning: string;
|
|
59
|
+
};
|
|
60
|
+
type ExpressionGrammarHelp = {
|
|
61
|
+
forms: ExpressionForm[];
|
|
62
|
+
note: string;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* The reference help shown beside an expression field.
|
|
66
|
+
*
|
|
67
|
+
* Every form here is one `Expr::resolvePath` implements — a dot-path and
|
|
68
|
+
* nothing else. It is tempting to document `{{ a && b }}` or `{{ a + b }}`
|
|
69
|
+
* because they look like expressions; the resolver would return `null` for
|
|
70
|
+
* both, and an author following the help would have no way to tell why.
|
|
71
|
+
*/
|
|
72
|
+
declare function describeExpressionGrammar(): ExpressionGrammarHelp;
|
|
4
73
|
|
|
5
74
|
/**
|
|
6
75
|
* The human-pause contract.
|
|
@@ -553,6 +622,16 @@ type NodeKindDefinition<TConfig = Record<string, unknown>, TIn = any, TOut = any
|
|
|
553
622
|
inputs?: PortSpec<TConfig>;
|
|
554
623
|
/** Output ports. Defaults vary by category. See `PortSpec`. */
|
|
555
624
|
outputs?: PortSpec<TConfig>;
|
|
625
|
+
/**
|
|
626
|
+
* What this kind EMITS, described well enough for an author to reference it
|
|
627
|
+
* in a `{{ }}` field. Distinct from `outputs`, which describes wires (port
|
|
628
|
+
* ids), not the data on them — nothing in the registry described the latter,
|
|
629
|
+
* so a variable picker had nothing to read.
|
|
630
|
+
*
|
|
631
|
+
* A function when the honest answer depends on config: a `user_input` step
|
|
632
|
+
* emits the field keys its author defined, which no static list can know.
|
|
633
|
+
*/
|
|
634
|
+
outputShape?: OutputShape<TConfig>;
|
|
556
635
|
/** Optional custom body rendered inside the node card. */
|
|
557
636
|
renderBody?: (ctx: RenderBodyContext<TConfig>) => ReactNode;
|
|
558
637
|
/**
|
|
@@ -636,4 +715,4 @@ type NodeKindDefinition<TConfig = Record<string, unknown>, TIn = any, TOut = any
|
|
|
636
715
|
reactive?: boolean;
|
|
637
716
|
};
|
|
638
717
|
|
|
639
|
-
export { type CapabilityRequirement as C, type DocumentConfigField as D, type ExpressionConfigField as E, type JsonConfigField as J, type KeyValueConfigField as K, LEGACY_PAUSE_PREFIXES as L, type ManifestProblem as M, NODE_MANIFEST_SCHEMA_VERSION as N, type PauseAwaiting as P, type RenderBodyContext as R, type SideEffects as S, type TextConfigField as T, type ConfigField as a, type ManifestValidation as b, type NodeCategory as c, type NodeKindDefinition as d, type NodePackageManifest as e, type NodeRuntimeId as f, type NodeRuntimeSpec as g, PAUSE_PREFIX as h, type PauseSignal as i, type PortSpec as j, checkCapabilities as k, checkRuntimeSupport as l, decodePause as m, encodePause as n, isPause as o, pauseForHuman as p, type CredentialConfigField as q, type NumberConfigField as r, satisfiesRange as s, type RepeaterConfigField as t, type RepeaterRowField as u, validateNodeManifest as v, type SelectConfigField as w, type SwitchConfigField as x, type TextareaConfigField as y };
|
|
718
|
+
export { type AvailableVariable as A, type ExpressionGrammarHelp as B, type CapabilityRequirement as C, type DocumentConfigField as D, type ExpressionConfigField as E, type OutputShape as F, availableVariables as G, baseVariables as H, describeExpressionGrammar as I, type JsonConfigField as J, type KeyValueConfigField as K, LEGACY_PAUSE_PREFIXES as L, type ManifestProblem as M, NODE_MANIFEST_SCHEMA_VERSION as N, type OutputField as O, type PauseAwaiting as P, outputFieldsFor as Q, type RenderBodyContext as R, type SideEffects as S, type TextConfigField as T, type ConfigField as a, type ManifestValidation as b, type NodeCategory as c, type NodeKindDefinition as d, type NodePackageManifest as e, type NodeRuntimeId as f, type NodeRuntimeSpec as g, PAUSE_PREFIX as h, type PauseSignal as i, type PortSpec as j, checkCapabilities as k, checkRuntimeSupport as l, decodePause as m, encodePause as n, isPause as o, pauseForHuman as p, type CredentialConfigField as q, type NumberConfigField as r, satisfiesRange as s, type RepeaterConfigField as t, type RepeaterRowField as u, validateNodeManifest as v, type SelectConfigField as w, type SwitchConfigField as x, type TextareaConfigField as y, type ExpressionForm as z };
|