@coralai/sps-cli 0.65.48 → 0.65.49
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/CHANGELOG.md +5 -0
- package/dist/console-assets/assets/{ShowcasePage-FkklfWaz.js → ShowcasePage-D5wOjBDH.js} +1 -1
- package/dist/console-assets/assets/{index-HIZPEqOI.js → index-BUGHZCVW.js} +2 -2
- package/dist/console-assets/assets/index-DEAu8kry.css +1 -0
- package/dist/console-assets/index.html +2 -2
- package/package.json +1 -1
- package/dist/console-assets/assets/index-CVBXrpA8.css +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as st,r as Te,j as u,u as _n,S as fs,P as hs,C as ps,E as ms,L as Yt,A as gn,a as yn}from"./index-
|
|
1
|
+
import{c as st,r as Te,j as u,u as _n,S as fs,P as hs,C as ps,E as ms,L as Yt,A as gn,a as yn}from"./index-BUGHZCVW.js";/**
|
|
2
2
|
* @license lucide-react v0.544.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ShowcasePage-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ShowcasePage-D5wOjBDH.js","assets/ShowcasePage-EkuegwaP.css"])))=>i.map(i=>d[i]);
|
|
2
2
|
var Xz=Object.defineProperty;var dN=e=>{throw TypeError(e)};var Qz=(e,t,n)=>t in e?Xz(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var fN=(e,t,n)=>Qz(e,typeof t!="symbol"?t+"":t,n),bb=(e,t,n)=>t.has(e)||dN("Cannot "+n);var J=(e,t,n)=>(bb(e,t,"read from private field"),n?n.call(e):t.get(e)),it=(e,t,n)=>t.has(e)?dN("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),qe=(e,t,n,i)=>(bb(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n),Et=(e,t,n)=>(bb(e,t,"access private method"),n);var Bh=(e,t,n,i)=>({set _(s){qe(e,t,s,n)},get _(){return J(e,t,i)}});(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(s){if(s.ep)return;s.ep=!0;const r=n(s);fetch(s.href,r)}})();function of(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var xb={exports:{}},Zu={};/**
|
|
3
3
|
* @license React
|
|
4
4
|
* react-jsx-runtime.production.js
|
|
@@ -842,4 +842,4 @@ description: ...
|
|
|
842
842
|
`)),p=f.reduce((m,y)=>m.concat(...y),[]);return[f,p]}return[[],[]]},[e]);return _.useEffect(()=>{const u=(t==null?void 0:t.target)??cA,f=(t==null?void 0:t.actInsideInputWithModifier)??!0;if(e!==null){const p=b=>{var w,k;if(s.current=b.ctrlKey||b.metaKey||b.shiftKey||b.altKey,(!s.current||s.current&&!f)&&HI(b))return!1;const v=dA(b.code,c);if(r.current.add(b[v]),uA(o,r.current,!1)){const C=((k=(w=b.composedPath)==null?void 0:w.call(b))==null?void 0:k[0])||b.target,S=(C==null?void 0:C.nodeName)==="BUTTON"||(C==null?void 0:C.nodeName)==="A";t.preventDefault!==!1&&(s.current||!S)&&b.preventDefault(),i(!0)}},m=b=>{const x=dA(b.code,c);uA(o,r.current,!0)?(i(!1),r.current.clear()):r.current.delete(b[x]),b.key==="Meta"&&r.current.clear(),s.current=!1},y=()=>{r.current.clear(),i(!1)};return u==null||u.addEventListener("keydown",p),u==null||u.addEventListener("keyup",m),window.addEventListener("blur",y),window.addEventListener("contextmenu",y),()=>{u==null||u.removeEventListener("keydown",p),u==null||u.removeEventListener("keyup",m),window.removeEventListener("blur",y),window.removeEventListener("contextmenu",y)}}},[e,i]),n}function uA(e,t,n){return e.filter(i=>n||i.length===t.size).some(i=>i.every(s=>t.has(s)))}function dA(e,t){return t.includes(e)?"code":"key"}const Fce=()=>{const e=Nn();return _.useMemo(()=>({zoomIn:async t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1.2,t):!1},zoomOut:async t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,t):!1},zoomTo:async(t,n)=>{const{panZoom:i}=e.getState();return i?i.scaleTo(t,n):!1},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{const{transform:[i,s,r],panZoom:o}=e.getState();return o?(await o.setViewport({x:t.x??i,y:t.y??s,zoom:t.zoom??r},n),!0):!1},getViewport:()=>{const[t,n,i]=e.getState().transform;return{x:t,y:n,zoom:i}},setCenter:async(t,n,i)=>e.getState().setCenter(t,n,i),fitBounds:async(t,n)=>{const{width:i,height:s,minZoom:r,maxZoom:o,panZoom:c}=e.getState(),u=Cw(t,i,s,r,o,(n==null?void 0:n.padding)??.1);return c?(await c.setViewport(u,{duration:n==null?void 0:n.duration,ease:n==null?void 0:n.ease,interpolate:n==null?void 0:n.interpolate}),!0):!1},screenToFlowPosition:(t,n={})=>{const{transform:i,snapGrid:s,snapToGrid:r,domNode:o}=e.getState();if(!o)return t;const{x:c,y:u}=o.getBoundingClientRect(),f={x:t.x-c,y:t.y-u},p=n.snapGrid??s,m=n.snapToGrid??r;return jf(f,i,m,p)},flowToScreenPosition:t=>{const{transform:n,domNode:i}=e.getState();if(!i)return t;const{x:s,y:r}=i.getBoundingClientRect(),o=Yc(t,n);return{x:o.x+s,y:o.y+r}}}),[])};function hP(e,t){const n=[],i=new Map,s=[];for(const r of e)if(r.type==="add"){s.push(r);continue}else if(r.type==="remove"||r.type==="replace")i.set(r.id,[r]);else{const o=i.get(r.id);o?o.push(r):i.set(r.id,[r])}for(const r of t){const o=i.get(r.id);if(!o){n.push(r);continue}if(o[0].type==="remove")continue;if(o[0].type==="replace"){n.push({...o[0].item});continue}const c={...r};for(const u of o)$ce(u,c);n.push(c)}return s.length&&s.forEach(r=>{r.index!==void 0?n.splice(r.index,0,{...r.item}):n.push({...r.item})}),n}function $ce(e,t){switch(e.type){case"select":{t.selected=e.selected;break}case"position":{typeof e.position<"u"&&(t.position=e.position),typeof e.dragging<"u"&&(t.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(t.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(t.resizing=e.resizing);break}}}function pP(e,t){return hP(e,t)}function mP(e,t){return hP(e,t)}function Uo(e,t){return{id:e,type:"select",selected:t}}function bc(e,t=new Set,n=!1){const i=[];for(const[s,r]of e){const o=t.has(s);!(r.selected===void 0&&!o)&&r.selected!==o&&(n&&(r.selected=o),i.push(Uo(r.id,o)))}return i}function fA({items:e=[],lookup:t}){var s;const n=[],i=new Map(e.map(r=>[r.id,r]));for(const[r,o]of e.entries()){const c=t.get(o.id),u=((s=c==null?void 0:c.internals)==null?void 0:s.userNode)??c;u!==void 0&&u!==o&&n.push({id:o.id,item:o,type:"replace"}),u===void 0&&n.push({item:o,type:"add",index:r})}for(const[r]of t)i.get(r)===void 0&&n.push({id:r,type:"remove"});return n}function hA(e){return{id:e.id,type:"remove"}}const gP=UI();function yP(e,t,n={}){return Tle(e,t,{...n,onError:n.onError??gP})}function qce(e,t,n,i={shouldReplaceId:!0}){return Ale(e,t,n,{...i,onError:i.onError??gP})}const pA=e=>ple(e),Hce=e=>LI(e);function bP(e){return _.forwardRef(e)}const Vce=typeof window<"u"?_.useLayoutEffect:_.useEffect;function mA(e){const[t,n]=_.useState(BigInt(0)),[i]=_.useState(()=>Kce(()=>n(s=>s+BigInt(1))));return Vce(()=>{const s=i.get();s.length&&(e(s),i.reset())},[t]),i}function Kce(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}const xP=_.createContext(null);function Gce({children:e}){const t=Nn(),n=_.useCallback(c=>{const{nodes:u=[],setNodes:f,hasDefaultNodes:p,onNodesChange:m,nodeLookup:y,fitViewQueued:b,onNodesChangeMiddlewareMap:x}=t.getState();let v=u;for(const k of c)v=typeof k=="function"?k(v):k;let w=fA({items:v,lookup:y});for(const k of x.values())w=k(w);p&&f(v),w.length>0?m==null||m(w):b&&window.requestAnimationFrame(()=>{const{fitViewQueued:k,nodes:C,setNodes:S}=t.getState();k&&S(C)})},[]),i=mA(n),s=_.useCallback(c=>{const{edges:u=[],setEdges:f,hasDefaultEdges:p,onEdgesChange:m,edgeLookup:y}=t.getState();let b=u;for(const x of c)b=typeof x=="function"?x(b):x;p?f(b):m&&m(fA({items:b,lookup:y}))},[]),r=mA(s),o=_.useMemo(()=>({nodeQueue:i,edgeQueue:r}),[]);return d.jsx(xP.Provider,{value:o,children:e})}function Wce(){const e=_.useContext(xP);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const Yce=e=>!!e.panZoom;function yg(){const e=Fce(),t=Nn(),n=Wce(),i=Bt(Yce),s=_.useMemo(()=>{const r=m=>t.getState().nodeLookup.get(m),o=m=>{n.nodeQueue.push(m)},c=m=>{n.edgeQueue.push(m)},u=m=>{var k,C;const{nodeLookup:y,nodeOrigin:b}=t.getState(),x=pA(m)?m:y.get(m.id),v=x.parentId?$I(x.position,x.measured,x.parentId,y,b):x.position,w={...x,position:v,width:((k=x.measured)==null?void 0:k.width)??x.width,height:((C=x.measured)==null?void 0:C.height)??x.height};return Zd(w)},f=(m,y,b={replace:!1})=>{o(x=>x.map(v=>{if(v.id===m){const w=typeof y=="function"?y(v):y;return b.replace&&pA(w)?w:{...v,...w}}return v}))},p=(m,y,b={replace:!1})=>{c(x=>x.map(v=>{if(v.id===m){const w=typeof y=="function"?y(v):y;return b.replace&&Hce(w)?w:{...v,...w}}return v}))};return{getNodes:()=>t.getState().nodes.map(m=>({...m})),getNode:m=>{var y;return(y=r(m))==null?void 0:y.internals.userNode},getInternalNode:r,getEdges:()=>{const{edges:m=[]}=t.getState();return m.map(y=>({...y}))},getEdge:m=>t.getState().edgeLookup.get(m),setNodes:o,setEdges:c,addNodes:m=>{const y=Array.isArray(m)?m:[m];n.nodeQueue.push(b=>[...b,...y])},addEdges:m=>{const y=Array.isArray(m)?m:[m];n.edgeQueue.push(b=>[...b,...y])},toObject:()=>{const{nodes:m=[],edges:y=[],transform:b}=t.getState(),[x,v,w]=b;return{nodes:m.map(k=>({...k})),edges:y.map(k=>({...k})),viewport:{x,y:v,zoom:w}}},deleteElements:async({nodes:m=[],edges:y=[]})=>{const{nodes:b,edges:x,onNodesDelete:v,onEdgesDelete:w,triggerNodeChanges:k,triggerEdgeChanges:C,onDelete:S,onBeforeDelete:T}=t.getState(),{nodes:A,edges:j}=await xle({nodesToRemove:m,edgesToRemove:y,nodes:b,edges:x,onBeforeDelete:T}),M=j.length>0,D=A.length>0;if(M){const P=j.map(hA);w==null||w(j),C(P)}if(D){const P=A.map(hA);v==null||v(A),k(P)}return(D||M)&&(S==null||S({nodes:A,edges:j})),{deletedNodes:A,deletedEdges:j}},getIntersectingNodes:(m,y=!0,b)=>{const x=BT(m),v=x?m:u(m),w=b!==void 0;return v?(b||t.getState().nodes).filter(k=>{const C=t.getState().nodeLookup.get(k.id);if(C&&!x&&(k.id===m.id||!C.internals.positionAbsolute))return!1;const S=Zd(w?k:C),T=Tm(S,v);return y&&T>0||T>=S.width*S.height||T>=v.width*v.height}):[]},isNodeIntersecting:(m,y,b=!0)=>{const v=BT(m)?m:u(m);if(!v)return!1;const w=Tm(v,y);return b&&w>0||w>=y.width*y.height||w>=v.width*v.height},updateNode:f,updateNodeData:(m,y,b={replace:!1})=>{f(m,x=>{const v=typeof y=="function"?y(x):y;return b.replace?{...x,data:v}:{...x,data:{...x.data,...v}}},b)},updateEdge:p,updateEdgeData:(m,y,b={replace:!1})=>{p(m,x=>{const v=typeof y=="function"?y(x):y;return b.replace?{...x,data:v}:{...x,data:{...x.data,...v}}},b)},getNodesBounds:m=>{const{nodeLookup:y,nodeOrigin:b}=t.getState();return mle(m,{nodeLookup:y,nodeOrigin:b})},getHandleConnections:({type:m,id:y,nodeId:b})=>{var x;return Array.from(((x=t.getState().connectionLookup.get(`${b}-${m}${y?`-${y}`:""}`))==null?void 0:x.values())??[])},getNodeConnections:({type:m,handleId:y,nodeId:b})=>{var x;return Array.from(((x=t.getState().connectionLookup.get(`${b}${m?y?`-${m}-${y}`:`-${m}`:""}`))==null?void 0:x.values())??[])},fitView:async m=>{const y=t.getState().fitViewResolver??Ele();return t.setState({fitViewQueued:!0,fitViewOptions:m,fitViewResolver:y}),n.nodeQueue.push(b=>[...b]),y.promise}}},[]);return _.useMemo(()=>({...s,...e,viewportInitialized:i}),[i])}const gA=e=>e.selected,Xce=typeof window<"u"?window:void 0;function Qce({deleteKeyCode:e,multiSelectionKeyCode:t}){const n=Nn(),{deleteElements:i}=yg(),s=ef(e,{actInsideInputWithModifier:!1}),r=ef(t,{target:Xce});_.useEffect(()=>{if(s){const{edges:o,nodes:c}=n.getState();i({nodes:c.filter(gA),edges:o.filter(gA)}),n.setState({nodesSelectionActive:!1})}},[s]),_.useEffect(()=>{n.setState({multiSelectionActive:r})},[r])}function Zce(e){const t=Nn();_.useEffect(()=>{const n=()=>{var s,r,o,c;if(!e.current||!(((r=(s=e.current).checkVisibility)==null?void 0:r.call(s))??!0))return!1;const i=Tw(e.current);(i.height===0||i.width===0)&&((c=(o=t.getState()).onError)==null||c.call(o,"004",ls.error004())),t.setState({width:i.width||500,height:i.height||500})};if(e.current){n(),window.addEventListener("resize",n);const i=new ResizeObserver(()=>n());return i.observe(e.current),()=>{window.removeEventListener("resize",n),i&&e.current&&i.unobserve(e.current)}}},[])}const bg={position:"absolute",width:"100%",height:"100%",top:0,left:0},Jce=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function eue({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:i=!1,panOnScrollSpeed:s=.5,panOnScrollMode:r=ol.Free,zoomOnDoubleClick:o=!0,panOnDrag:c=!0,defaultViewport:u,translateExtent:f,minZoom:p,maxZoom:m,zoomActivationKeyCode:y,preventScrolling:b=!0,children:x,noWheelClassName:v,noPanClassName:w,onViewportChange:k,isControlledViewport:C,paneClickDistance:S,selectionOnDrag:T}){const A=Nn(),j=_.useRef(null),{userSelectionActive:M,lib:D,connectionInProgress:P}=Bt(Jce,Sn),I=ef(y),B=_.useRef();Zce(j);const q=_.useCallback(G=>{k==null||k({x:G[0],y:G[1],zoom:G[2]}),C||A.setState({transform:G})},[k,C]);return _.useEffect(()=>{if(j.current){B.current=rce({domNode:j.current,minZoom:p,maxZoom:m,translateExtent:f,viewport:u,onDraggingChange:z=>A.setState(W=>W.paneDragging===z?W:{paneDragging:z}),onPanZoomStart:(z,W)=>{const{onViewportChangeStart:X,onMoveStart:K}=A.getState();K==null||K(z,W),X==null||X(W)},onPanZoom:(z,W)=>{const{onViewportChange:X,onMove:K}=A.getState();K==null||K(z,W),X==null||X(W)},onPanZoomEnd:(z,W)=>{const{onViewportChangeEnd:X,onMoveEnd:K}=A.getState();K==null||K(z,W),X==null||X(W)}});const{x:G,y:R,zoom:O}=B.current.getViewport();return A.setState({panZoom:B.current,transform:[G,R,O],domNode:j.current.closest(".react-flow")}),()=>{var z;(z=B.current)==null||z.destroy()}}},[]),_.useEffect(()=>{var G;(G=B.current)==null||G.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:i,panOnScrollSpeed:s,panOnScrollMode:r,zoomOnDoubleClick:o,panOnDrag:c,zoomActivationKeyPressed:I,preventScrolling:b,noPanClassName:w,userSelectionActive:M,noWheelClassName:v,lib:D,onTransformChange:q,connectionInProgress:P,selectionOnDrag:T,paneClickDistance:S})},[e,t,n,i,s,r,o,c,I,b,w,M,v,D,q,P,T,S]),d.jsx("div",{className:"react-flow__renderer",ref:j,style:bg,children:x})}const tue=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function nue(){const{userSelectionActive:e,userSelectionRect:t}=Bt(tue,Sn);return e&&t?d.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}const Hx=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},iue=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function sue({isSelecting:e,selectionKeyPressed:t,selectionMode:n=Qd.Full,panOnDrag:i,autoPanOnSelection:s,paneClickDistance:r,selectionOnDrag:o,onSelectionStart:c,onSelectionEnd:u,onPaneClick:f,onPaneContextMenu:p,onPaneScroll:m,onPaneMouseEnter:y,onPaneMouseMove:b,onPaneMouseLeave:x,children:v}){const w=_.useRef(0),k=Nn(),{userSelectionActive:C,elementsSelectable:S,dragging:T,panBy:A,autoPanSpeed:j}=Bt(iue,Sn),M=S&&(e||C),D=_.useRef(null),P=_.useRef(),I=_.useRef(new Set),B=_.useRef(new Set),q=_.useRef(!1),G=_.useRef(!1),R=_.useRef({x:0,y:0}),O=_.useRef(!1),z=oe=>{if(G.current||q.current||k.getState().connection.inProgress){G.current=!1,q.current=!1;return}f==null||f(oe),k.getState().resetSelectedElements(),k.setState({nodesSelectionActive:!1})},W=oe=>{if(Array.isArray(i)&&(i!=null&&i.includes(2))){oe.preventDefault();return}p==null||p(oe)},X=m?oe=>m(oe):void 0,K=oe=>{G.current&&(oe.stopPropagation(),G.current=!1)},U=oe=>{var Ue,Oe;const{domNode:pe,transform:re}=k.getState();if(P.current=pe==null?void 0:pe.getBoundingClientRect(),!P.current)return;const ee=oe.target===D.current;if(!ee&&!!oe.target.closest(".nokey")||!e||!(o&&ee||t)||oe.button!==0||!oe.isPrimary)return;(Oe=(Ue=oe.target)==null?void 0:Ue.setPointerCapture)==null||Oe.call(Ue,oe.pointerId),G.current=!1;const{x:Ie,y:ae}=Qs(oe.nativeEvent,P.current),ke=jf({x:Ie,y:ae},re);k.setState({userSelectionRect:{width:0,height:0,startX:ke.x,startY:ke.y,x:Ie,y:ae}}),ee||(oe.stopPropagation(),oe.preventDefault())};function F(oe,pe){const{userSelectionRect:re}=k.getState();if(!re)return;const{transform:ee,nodeLookup:ge,edgeLookup:Ce,connectionLookup:Ie,triggerNodeChanges:ae,triggerEdgeChanges:ke,defaultEdgeOptions:Ue}=k.getState(),Oe={x:re.startX,y:re.startY},{x:ht,y:tt}=Yc(Oe,ee),jt={startX:Oe.x,startY:Oe.y,x:oe<ht?oe:ht,y:pe<tt?pe:tt,width:Math.abs(oe-ht),height:Math.abs(pe-tt)},Nt=I.current,pt=B.current;I.current=new Set(Nw(ge,jt,ee,n===Qd.Partial,!0).map(We=>We.id)),B.current=new Set;const Me=(Ue==null?void 0:Ue.selectable)??!0;for(const We of I.current){const ne=Ie.get(We);if(ne)for(const{edgeId:ve}of ne.values()){const Re=Ce.get(ve);Re&&(Re.selectable??Me)&&B.current.add(ve)}}if(!UT(Nt,I.current)){const We=bc(ge,I.current,!0);ae(We)}if(!UT(pt,B.current)){const We=bc(Ce,B.current);ke(We)}k.setState({userSelectionRect:jt,userSelectionActive:!0,nodesSelectionActive:!1})}function Y(){if(!s||!P.current)return;const[oe,pe]=_w(R.current,P.current,j);A({x:oe,y:pe}).then(re=>{if(!G.current||!re){w.current=requestAnimationFrame(Y);return}const{x:ee,y:ge}=R.current;F(ee,ge),w.current=requestAnimationFrame(Y)})}const $=()=>{cancelAnimationFrame(w.current),w.current=0,O.current=!1};_.useEffect(()=>()=>$(),[]);const ie=oe=>{const{userSelectionRect:pe,transform:re,resetSelectedElements:ee}=k.getState();if(!P.current||!pe)return;const{x:ge,y:Ce}=Qs(oe.nativeEvent,P.current);R.current={x:ge,y:Ce};const Ie=Yc({x:pe.startX,y:pe.startY},re);if(!G.current){const ae=t?0:r;if(Math.hypot(ge-Ie.x,Ce-Ie.y)<=ae)return;ee(),c==null||c(oe)}G.current=!0,O.current||(Y(),O.current=!0),F(ge,Ce)},be=oe=>{var pe,re;if(!M){oe.target===D.current&&k.getState().connection.inProgress&&(q.current=!0);return}oe.button===0&&((re=(pe=oe.target)==null?void 0:pe.releasePointerCapture)==null||re.call(pe,oe.pointerId),!C&&oe.target===D.current&&k.getState().userSelectionRect&&(z==null||z(oe)),k.setState({userSelectionActive:!1,userSelectionRect:null}),G.current&&(u==null||u(oe),k.setState({nodesSelectionActive:I.current.size>0})),$())},ce=oe=>{var pe,re;(re=(pe=oe.target)==null?void 0:pe.releasePointerCapture)==null||re.call(pe,oe.pointerId),$()},Ne=i===!0||Array.isArray(i)&&i.includes(0);return d.jsxs("div",{className:Wn(["react-flow__pane",{draggable:Ne,dragging:T,selection:e}]),onClick:M?void 0:Hx(z,D),onContextMenu:Hx(W,D),onWheel:Hx(X,D),onPointerEnter:M?void 0:y,onPointerMove:M?ie:b,onPointerUp:be,onPointerCancel:M?ce:void 0,onPointerDownCapture:M?U:void 0,onClickCapture:M?K:void 0,onPointerLeave:x,ref:D,style:bg,children:[v,d.jsx(nue,{})]})}function jv({id:e,store:t,unselect:n=!1,nodeRef:i}){const{addSelectedNodes:s,unselectNodesAndEdges:r,multiSelectionActive:o,nodeLookup:c,onError:u}=t.getState(),f=c.get(e);if(!f){u==null||u("012",ls.error012(e));return}t.setState({nodesSelectionActive:!1}),f.selected?(n||f.selected&&o)&&(r({nodes:[f],edges:[]}),requestAnimationFrame(()=>{var p;return(p=i==null?void 0:i.current)==null?void 0:p.blur()})):s([e])}function vP({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:i,nodeId:s,isSelectable:r,nodeClickDistance:o}){const c=Nn(),[u,f]=_.useState(!1),p=_.useRef();return _.useEffect(()=>{p.current=Vle({getStoreItems:()=>c.getState(),onNodeMouseDown:m=>{jv({id:m,store:c,nodeRef:e})},onDragStart:()=>{f(!0)},onDragStop:()=>{f(!1)}})},[]),_.useEffect(()=>{if(!(t||!e.current||!p.current))return p.current.update({noDragClassName:n,handleSelector:i,domNode:e.current,isSelectable:r,nodeId:s,nodeClickDistance:o}),()=>{var m;(m=p.current)==null||m.destroy()}},[n,i,t,r,e,s,o]),u}const rue=e=>t=>t.selected&&(t.draggable||e&&typeof t.draggable>"u");function wP(){const e=Nn();return _.useCallback(n=>{const{nodeExtent:i,snapToGrid:s,snapGrid:r,nodesDraggable:o,onError:c,updateNodePositions:u,nodeLookup:f,nodeOrigin:p}=e.getState(),m=new Map,y=rue(o),b=s?r[0]:5,x=s?r[1]:5,v=n.direction.x*b*n.factor,w=n.direction.y*x*n.factor;for(const[,k]of f){if(!y(k))continue;let C={x:k.internals.positionAbsolute.x+v,y:k.internals.positionAbsolute.y+w};s&&(C=Af(C,r));const{position:S,positionAbsolute:T}=II({nodeId:k.id,nextPosition:C,nodeLookup:f,nodeExtent:i,nodeOrigin:p,onError:c});k.position=S,k.internals.positionAbsolute=T,m.set(k.id,k)}u(m)},[])}const Ow=_.createContext(null),aue=Ow.Provider;Ow.Consumer;const EP=()=>_.useContext(Ow),oue=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),kP=_.createContext(null);function lue({children:e}){const t=Bt(oue,Sn);return d.jsx(kP.Provider,{value:t,children:e})}function cue(){const e=_.useContext(kP);if(!e)throw new Error("useHandleConfig must be used within a HandleConfigProvider");return e}const uue={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},due=(e,t,n)=>i=>{const{connectionClickStartHandle:s,connectionMode:r,connection:o}=i,{fromHandle:c,toHandle:u,isValid:f}=o;if(!c&&!s)return uue;const p=(u==null?void 0:u.nodeId)===e&&(u==null?void 0:u.id)===t&&(u==null?void 0:u.type)===n;return{connectingFrom:(c==null?void 0:c.nodeId)===e&&(c==null?void 0:c.id)===t&&(c==null?void 0:c.type)===n,connectingTo:p,clickConnecting:(s==null?void 0:s.nodeId)===e&&(s==null?void 0:s.id)===t&&(s==null?void 0:s.type)===n,isPossibleEndHandle:r===Gc.Strict?(c==null?void 0:c.type)!==n:e!==(c==null?void 0:c.nodeId)||t!==(c==null?void 0:c.id),connectionInProcess:!!c,clickConnectionInProcess:!!s,valid:p&&f}};function fue({type:e="source",position:t=et.Top,isValidConnection:n,isConnectable:i=!0,isConnectableStart:s=!0,isConnectableEnd:r=!0,id:o,onConnect:c,children:u,className:f,onMouseDown:p,onTouchStart:m,...y},b){var O,z;const x=o||null,v=e==="target",w=Nn(),k=EP(),{connectOnClick:C,noPanClassName:S,rfId:T}=cue(),{connectingFrom:A,connectingTo:j,clickConnecting:M,isPossibleEndHandle:D,connectionInProcess:P,clickConnectionInProcess:I,valid:B}=Bt(due(k,x,e),Sn);k||(z=(O=w.getState()).onError)==null||z.call(O,"010",ls.error010());const q=W=>{const{defaultEdgeOptions:X,onConnect:K,hasDefaultEdges:U}=w.getState(),F={...X,...W};if(U){const{edges:Y,setEdges:$,onError:ie}=w.getState();$(yP(F,Y,{onError:ie}))}K==null||K(F),c==null||c(F)},G=W=>{if(!k)return;const X=VI(W.nativeEvent);if(s&&(X&&W.button===0||!X)){const K=w.getState();Av.onPointerDown(W.nativeEvent,{handleDomNode:W.currentTarget,autoPanOnConnect:K.autoPanOnConnect,connectionMode:K.connectionMode,connectionRadius:K.connectionRadius,domNode:K.domNode,nodeLookup:K.nodeLookup,lib:K.lib,isTarget:v,handleId:x,nodeId:k,flowId:K.rfId,panBy:K.panBy,cancelConnection:K.cancelConnection,onConnectStart:K.onConnectStart,onConnectEnd:(...U)=>{var F,Y;return(Y=(F=w.getState()).onConnectEnd)==null?void 0:Y.call(F,...U)},updateConnection:K.updateConnection,onConnect:q,isValidConnection:n||((...U)=>{var F,Y;return((Y=(F=w.getState()).isValidConnection)==null?void 0:Y.call(F,...U))??!0}),getTransform:()=>w.getState().transform,getFromHandle:()=>w.getState().connection.fromHandle,autoPanSpeed:K.autoPanSpeed,dragThreshold:K.connectionDragThreshold})}X?p==null||p(W):m==null||m(W)},R=W=>{const{onClickConnectStart:X,onClickConnectEnd:K,connectionClickStartHandle:U,connectionMode:F,isValidConnection:Y,lib:$,rfId:ie,nodeLookup:be,connection:ce}=w.getState();if(!k||!U&&!s)return;if(!U){X==null||X(W.nativeEvent,{nodeId:k,handleId:x,handleType:e}),w.setState({connectionClickStartHandle:{nodeId:k,type:e,id:x}});return}const Ne=qI(W.target),oe=n||Y,{connection:pe,isValid:re}=Av.isValid(W.nativeEvent,{handle:{nodeId:k,id:x,type:e},connectionMode:F,fromNodeId:U.nodeId,fromHandleId:U.id||null,fromType:U.type,isValidConnection:oe,flowId:ie,doc:Ne,lib:$,nodeLookup:be});re&&pe&&q(pe);const ee=structuredClone(ce);delete ee.inProgress,ee.toPosition=ee.toHandle?ee.toHandle.position:null,K==null||K(W,ee),w.setState({connectionClickStartHandle:null})};return d.jsx("div",{"data-handleid":x,"data-nodeid":k,"data-handlepos":t,"data-id":`${T}-${k}-${x}-${e}`,className:Wn(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",S,f,{source:!v,target:v,connectable:i,connectablestart:s,connectableend:r,clickconnecting:M,connectingfrom:A,connectingto:j,valid:B,connectionindicator:i&&(!P||D)&&(P||I?r:s)}]),onMouseDown:G,onTouchStart:G,onClick:C?R:void 0,ref:b,...y,children:u})}const no=_.memo(bP(fue));function hue({data:e,isConnectable:t,sourcePosition:n=et.Bottom}){return d.jsxs(d.Fragment,{children:[e==null?void 0:e.label,d.jsx(no,{type:"source",position:n,isConnectable:t})]})}function pue({data:e,isConnectable:t,targetPosition:n=et.Top,sourcePosition:i=et.Bottom}){return d.jsxs(d.Fragment,{children:[d.jsx(no,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,d.jsx(no,{type:"source",position:i,isConnectable:t})]})}function mue(){return null}function gue({data:e,isConnectable:t,targetPosition:n=et.Top}){return d.jsxs(d.Fragment,{children:[d.jsx(no,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label]})}const Am={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},yA={input:hue,default:pue,output:gue,group:mue};function yue(e){var t,n,i,s;return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??((t=e.style)==null?void 0:t.width),height:e.height??e.initialHeight??((n=e.style)==null?void 0:n.height)}:{width:e.width??((i=e.style)==null?void 0:i.width),height:e.height??((s=e.style)==null?void 0:s.height)}}const bue=e=>{const{width:t,height:n,x:i,y:s}=Tf(e.nodeLookup,{filter:r=>!!r.selected});return{width:Xs(t)?t:null,height:Xs(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${i}px,${s}px)`}};function xue({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const i=Nn(),{width:s,height:r,transformString:o,userSelectionActive:c}=Bt(bue,Sn),u=wP(),f=_.useRef(null);_.useEffect(()=>{var b;n||(b=f.current)==null||b.focus({preventScroll:!0})},[n]);const p=!c&&s!==null&&r!==null;if(vP({nodeRef:f,disabled:!p}),!p)return null;const m=e?b=>{const x=i.getState().nodes.filter(v=>v.selected);e(b,x)}:void 0,y=b=>{Object.prototype.hasOwnProperty.call(Am,b.key)&&(b.preventDefault(),u({direction:Am[b.key],factor:b.shiftKey?4:1}))};return d.jsx("div",{className:Wn(["react-flow__nodesselection","react-flow__container",t]),style:{transform:o},children:d.jsx("div",{ref:f,className:"react-flow__nodesselection-rect",onContextMenu:m,tabIndex:n?void 0:-1,onKeyDown:n?void 0:y,style:{width:s,height:r}})})}const bA=typeof window<"u"?window:void 0,vue=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function SP({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:i,onPaneMouseLeave:s,onPaneContextMenu:r,onPaneScroll:o,paneClickDistance:c,deleteKeyCode:u,selectionKeyCode:f,selectionOnDrag:p,selectionMode:m,onSelectionStart:y,onSelectionEnd:b,multiSelectionKeyCode:x,panActivationKeyCode:v,zoomActivationKeyCode:w,elementsSelectable:k,zoomOnScroll:C,zoomOnPinch:S,panOnScroll:T,panOnScrollSpeed:A,panOnScrollMode:j,zoomOnDoubleClick:M,panOnDrag:D,autoPanOnSelection:P,defaultViewport:I,translateExtent:B,minZoom:q,maxZoom:G,preventScrolling:R,onSelectionContextMenu:O,noWheelClassName:z,noPanClassName:W,disableKeyboardA11y:X,onViewportChange:K,isControlledViewport:U}){const{nodesSelectionActive:F,userSelectionActive:Y}=Bt(vue,Sn),$=ef(f,{target:bA}),ie=ef(v,{target:bA}),be=ie||D,ce=ie||T,Ne=p&&be!==!0,oe=$||Y||Ne;return Qce({deleteKeyCode:u,multiSelectionKeyCode:x}),d.jsx(eue,{onPaneContextMenu:r,elementsSelectable:k,zoomOnScroll:C,zoomOnPinch:S,panOnScroll:ce,panOnScrollSpeed:A,panOnScrollMode:j,zoomOnDoubleClick:M,panOnDrag:!$&&be,defaultViewport:I,translateExtent:B,minZoom:q,maxZoom:G,zoomActivationKeyCode:w,preventScrolling:R,noWheelClassName:z,noPanClassName:W,onViewportChange:K,isControlledViewport:U,paneClickDistance:c,selectionOnDrag:Ne,children:d.jsxs(sue,{onSelectionStart:y,onSelectionEnd:b,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:i,onPaneMouseLeave:s,onPaneContextMenu:r,onPaneScroll:o,panOnDrag:be,autoPanOnSelection:P,isSelecting:!!oe,selectionMode:m,selectionKeyPressed:$,paneClickDistance:c,selectionOnDrag:Ne,children:[e,F&&d.jsx(xue,{onSelectionContextMenu:O,noPanClassName:W,disableKeyboardA11y:X})]})})}SP.displayName="FlowRenderer";const wue=_.memo(SP),Eue=e=>t=>e?Nw(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(n=>n.id):Array.from(t.nodeLookup.keys());function kue(e){return Bt(_.useCallback(Eue(e),[e]),Sn)}const Sue=e=>e.updateNodeInternals;function Nue(){const e=Bt(Sue),[t]=_.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(n=>{const i=new Map;n.forEach(s=>{const r=s.target.getAttribute("data-id");i.set(r,{id:r,nodeElement:s.target,force:!0})}),e(i)}));return _.useEffect(()=>()=>{t==null||t.disconnect()},[t]),t}function _ue({node:e,nodeType:t,hasDimensions:n,resizeObserver:i}){const s=Nn(),r=_.useRef(null),o=_.useRef(null),c=_.useRef(e.sourcePosition),u=_.useRef(e.targetPosition),f=_.useRef(t),p=n&&!!e.internals.handleBounds;return _.useEffect(()=>{r.current&&!e.hidden&&(!p||o.current!==r.current)&&(o.current&&(i==null||i.unobserve(o.current)),i==null||i.observe(r.current),o.current=r.current)},[p,e.hidden]),_.useEffect(()=>()=>{o.current&&(i==null||i.unobserve(o.current),o.current=null)},[]),_.useEffect(()=>{if(r.current){const m=f.current!==t,y=c.current!==e.sourcePosition,b=u.current!==e.targetPosition;(m||y||b)&&(f.current=t,c.current=e.sourcePosition,u.current=e.targetPosition,s.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:r.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),r}function Cue({id:e,onClick:t,onMouseEnter:n,onMouseMove:i,onMouseLeave:s,onContextMenu:r,onDoubleClick:o,nodesDraggable:c,elementsSelectable:u,nodesConnectable:f,nodesFocusable:p,resizeObserver:m,noDragClassName:y,noPanClassName:b,disableKeyboardA11y:x,rfId:v,nodeTypes:w,nodeClickDistance:k,onError:C}){const{node:S,internals:T,isParent:A}=Bt(oe=>{const pe=oe.nodeLookup.get(e),re=oe.parentLookup.has(e);return{node:pe,internals:pe.internals,isParent:re}},Sn);let j=S.type||"default",M=(w==null?void 0:w[j])||yA[j];M===void 0&&(C==null||C("003",ls.error003(j)),j="default",M=(w==null?void 0:w.default)||yA.default);const D=!!(S.draggable||c&&typeof S.draggable>"u"),P=!!(S.selectable||u&&typeof S.selectable>"u"),I=!!(S.connectable||f&&typeof S.connectable>"u"),B=!!(S.focusable||p&&typeof S.focusable>"u"),q=Nn(),G=FI(S),R=_ue({node:S,nodeType:j,hasDimensions:G,resizeObserver:m}),O=vP({nodeRef:R,disabled:S.hidden||!D,noDragClassName:y,handleSelector:S.dragHandle,nodeId:e,isSelectable:P,nodeClickDistance:k}),z=wP();if(S.hidden)return null;const W=pa(S),X=yue(S),K=P||D||t||n||i||s,U=n?oe=>n(oe,{...T.userNode}):void 0,F=i?oe=>i(oe,{...T.userNode}):void 0,Y=s?oe=>s(oe,{...T.userNode}):void 0,$=r?oe=>r(oe,{...T.userNode}):void 0,ie=o?oe=>o(oe,{...T.userNode}):void 0,be=oe=>{const{selectNodesOnDrag:pe,nodeDragThreshold:re}=q.getState();P&&(!pe||!D||re>0)&&jv({id:e,store:q,nodeRef:R}),t&&t(oe,{...T.userNode})},ce=oe=>{if(!(HI(oe.nativeEvent)||x)){if(MI.includes(oe.key)&&P){const pe=oe.key==="Escape";jv({id:e,store:q,unselect:pe,nodeRef:R})}else if(D&&S.selected&&Object.prototype.hasOwnProperty.call(Am,oe.key)){oe.preventDefault();const{ariaLabelConfig:pe}=q.getState();q.setState({ariaLiveMessage:pe["node.a11yDescription.ariaLiveMessage"]({direction:oe.key.replace("Arrow","").toLowerCase(),x:~~T.positionAbsolute.x,y:~~T.positionAbsolute.y})}),z({direction:Am[oe.key],factor:oe.shiftKey?4:1})}}},Ne=()=>{var Ie;if(x||!((Ie=R.current)!=null&&Ie.matches(":focus-visible")))return;const{transform:oe,width:pe,height:re,autoPanOnNodeFocus:ee,setCenter:ge}=q.getState();if(!ee)return;Nw(new Map([[e,S]]),{x:0,y:0,width:pe,height:re},oe,!0).length>0||ge(S.position.x+W.width/2,S.position.y+W.height/2,{zoom:oe[2]})};return d.jsx("div",{className:Wn(["react-flow__node",`react-flow__node-${j}`,{[b]:D},S.className,{selected:S.selected,selectable:P,parent:A,draggable:D,dragging:O}]),ref:R,style:{zIndex:T.z,transform:`translate(${T.positionAbsolute.x}px,${T.positionAbsolute.y}px)`,pointerEvents:K?"all":"none",visibility:G?"visible":"hidden",...S.style,...X},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:U,onMouseMove:F,onMouseLeave:Y,onContextMenu:$,onClick:be,onDoubleClick:ie,onKeyDown:B?ce:void 0,tabIndex:B?0:void 0,onFocus:B?Ne:void 0,role:S.ariaRole??(B?"group":void 0),"aria-roledescription":"node","aria-describedby":x?void 0:`${uP}-${v}`,"aria-label":S.ariaLabel,...S.domAttributes,children:d.jsx(aue,{value:e,children:d.jsx(M,{id:e,data:S.data,type:j,positionAbsoluteX:T.positionAbsolute.x,positionAbsoluteY:T.positionAbsolute.y,selected:S.selected??!1,selectable:P,draggable:D,deletable:S.deletable??!0,isConnectable:I,sourcePosition:S.sourcePosition,targetPosition:S.targetPosition,dragging:O,dragHandle:S.dragHandle,zIndex:T.z,parentId:S.parentId,...W})})})}var Tue=_.memo(Cue);const Aue=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function NP(e){const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:i,elementsSelectable:s,onError:r}=Bt(Aue,Sn),o=kue(e.onlyRenderVisibleElements),c=Nue();return d.jsx("div",{className:"react-flow__nodes",style:bg,children:o.map(u=>d.jsx(Tue,{id:u,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:c,nodesDraggable:t,nodesConnectable:n,nodesFocusable:i,elementsSelectable:s,nodeClickDistance:e.nodeClickDistance,onError:r},u))})}NP.displayName="NodeRenderer";const jue=_.memo(NP);function Mue(e){return Bt(_.useCallback(n=>{if(!e)return n.edges.map(s=>s.id);const i=[];if(n.width&&n.height)for(const s of n.edges){const r=n.nodeLookup.get(s.source),o=n.nodeLookup.get(s.target);r&&o&&_le({sourceNode:r,targetNode:o,width:n.width,height:n.height,transform:n.transform})&&i.push(s.id)}return i},[e]),Sn)}const Rue=({color:e="none",strokeWidth:t=1})=>{const n={strokeWidth:t,...e&&{stroke:e}};return d.jsx("polyline",{className:"arrow",style:n,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},Due=({color:e="none",strokeWidth:t=1})=>{const n={strokeWidth:t,...e&&{stroke:e,fill:e}};return d.jsx("polyline",{className:"arrowclosed",style:n,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},xA={[_m.Arrow]:Rue,[_m.ArrowClosed]:Due};function Oue(e){const t=Nn();return _.useMemo(()=>{var s,r;return Object.prototype.hasOwnProperty.call(xA,e)?xA[e]:((r=(s=t.getState()).onError)==null||r.call(s,"009",ls.error009(e)),null)},[e])}const Lue=({id:e,type:t,color:n,width:i=12.5,height:s=12.5,markerUnits:r="strokeWidth",strokeWidth:o,orient:c="auto-start-reverse"})=>{const u=Oue(t);return u?d.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${i}`,markerHeight:`${s}`,viewBox:"-10 -10 20 20",markerUnits:r,orient:c,refX:"0",refY:"0",children:d.jsx(u,{color:n,strokeWidth:o})}):null},_P=({defaultColor:e,rfId:t})=>{const n=Bt(r=>r.edges),i=Bt(r=>r.defaultEdgeOptions),s=_.useMemo(()=>Ole(n,{id:t,defaultColor:e,defaultMarkerStart:i==null?void 0:i.markerStart,defaultMarkerEnd:i==null?void 0:i.markerEnd}),[n,i,t,e]);return s.length?d.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:d.jsx("defs",{children:s.map(r=>d.jsx(Lue,{id:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient},r.id))})}):null};_P.displayName="MarkerDefinitions";var Iue=_.memo(_P);function CP({x:e,y:t,label:n,labelStyle:i,labelShowBg:s=!0,labelBgStyle:r,labelBgPadding:o=[2,4],labelBgBorderRadius:c=2,children:u,className:f,...p}){const[m,y]=_.useState({x:1,y:0,width:0,height:0}),b=Wn(["react-flow__edge-textwrapper",f]),x=_.useRef(null);return _.useEffect(()=>{if(x.current){const v=x.current.getBBox();y({x:v.x,y:v.y,width:v.width,height:v.height})}},[n]),n?d.jsxs("g",{transform:`translate(${e-m.width/2} ${t-m.height/2})`,className:b,visibility:m.width?"visible":"hidden",...p,children:[s&&d.jsx("rect",{width:m.width+2*o[0],x:-o[0],y:-o[1],height:m.height+2*o[1],className:"react-flow__edge-textbg",style:r,rx:c,ry:c}),d.jsx("text",{className:"react-flow__edge-text",y:m.height/2,dy:"0.3em",ref:x,style:i,children:n}),u]}):null}CP.displayName="EdgeText";const Pue=_.memo(CP);function xg({path:e,labelX:t,labelY:n,label:i,labelStyle:s,labelShowBg:r,labelBgStyle:o,labelBgPadding:c,labelBgBorderRadius:u,interactionWidth:f=20,...p}){return d.jsxs(d.Fragment,{children:[d.jsx("path",{...p,d:e,fill:"none",className:Wn(["react-flow__edge-path",p.className])}),f?d.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:f,className:"react-flow__edge-interaction"}):null,i&&Xs(t)&&Xs(n)?d.jsx(Pue,{x:t,y:n,label:i,labelStyle:s,labelShowBg:r,labelBgStyle:o,labelBgPadding:c,labelBgBorderRadius:u}):null]})}function vA({pos:e,x1:t,y1:n,x2:i,y2:s}){return e===et.Left||e===et.Right?[.5*(t+i),n]:[t,.5*(n+s)]}function TP({sourceX:e,sourceY:t,sourcePosition:n=et.Bottom,targetX:i,targetY:s,targetPosition:r=et.Top}){const[o,c]=vA({pos:n,x1:e,y1:t,x2:i,y2:s}),[u,f]=vA({pos:r,x1:i,y1:s,x2:e,y2:t}),[p,m,y,b]=KI({sourceX:e,sourceY:t,targetX:i,targetY:s,sourceControlX:o,sourceControlY:c,targetControlX:u,targetControlY:f});return[`M${e},${t} C${o},${c} ${u},${f} ${i},${s}`,p,m,y,b]}function AP(e){return _.memo(({id:t,sourceX:n,sourceY:i,targetX:s,targetY:r,sourcePosition:o,targetPosition:c,label:u,labelStyle:f,labelShowBg:p,labelBgStyle:m,labelBgPadding:y,labelBgBorderRadius:b,style:x,markerEnd:v,markerStart:w,interactionWidth:k})=>{const[C,S,T]=TP({sourceX:n,sourceY:i,sourcePosition:o,targetX:s,targetY:r,targetPosition:c}),A=e.isInternal?void 0:t;return d.jsx(xg,{id:A,path:C,labelX:S,labelY:T,label:u,labelStyle:f,labelShowBg:p,labelBgStyle:m,labelBgPadding:y,labelBgBorderRadius:b,style:x,markerEnd:v,markerStart:w,interactionWidth:k})})}const zue=AP({isInternal:!1}),jP=AP({isInternal:!0});zue.displayName="SimpleBezierEdge";jP.displayName="SimpleBezierEdgeInternal";function MP(e){return _.memo(({id:t,sourceX:n,sourceY:i,targetX:s,targetY:r,label:o,labelStyle:c,labelShowBg:u,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:m,style:y,sourcePosition:b=et.Bottom,targetPosition:x=et.Top,markerEnd:v,markerStart:w,pathOptions:k,interactionWidth:C})=>{const[S,T,A]=_v({sourceX:n,sourceY:i,sourcePosition:b,targetX:s,targetY:r,targetPosition:x,borderRadius:k==null?void 0:k.borderRadius,offset:k==null?void 0:k.offset,stepPosition:k==null?void 0:k.stepPosition}),j=e.isInternal?void 0:t;return d.jsx(xg,{id:j,path:S,labelX:T,labelY:A,label:o,labelStyle:c,labelShowBg:u,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:m,style:y,markerEnd:v,markerStart:w,interactionWidth:C})})}const RP=MP({isInternal:!1}),DP=MP({isInternal:!0});RP.displayName="SmoothStepEdge";DP.displayName="SmoothStepEdgeInternal";function OP(e){return _.memo(({id:t,...n})=>{var s;const i=e.isInternal?void 0:t;return d.jsx(RP,{...n,id:i,pathOptions:_.useMemo(()=>{var r;return{borderRadius:0,offset:(r=n.pathOptions)==null?void 0:r.offset}},[(s=n.pathOptions)==null?void 0:s.offset])})})}const Bue=OP({isInternal:!1}),LP=OP({isInternal:!0});Bue.displayName="StepEdge";LP.displayName="StepEdgeInternal";function IP(e){return _.memo(({id:t,sourceX:n,sourceY:i,targetX:s,targetY:r,label:o,labelStyle:c,labelShowBg:u,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:m,style:y,markerEnd:b,markerStart:x,interactionWidth:v})=>{const[w,k,C]=XI({sourceX:n,sourceY:i,targetX:s,targetY:r}),S=e.isInternal?void 0:t;return d.jsx(xg,{id:S,path:w,labelX:k,labelY:C,label:o,labelStyle:c,labelShowBg:u,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:m,style:y,markerEnd:b,markerStart:x,interactionWidth:v})})}const Uue=IP({isInternal:!1}),PP=IP({isInternal:!0});Uue.displayName="StraightEdge";PP.displayName="StraightEdgeInternal";function zP(e){return _.memo(({id:t,sourceX:n,sourceY:i,targetX:s,targetY:r,sourcePosition:o=et.Bottom,targetPosition:c=et.Top,label:u,labelStyle:f,labelShowBg:p,labelBgStyle:m,labelBgPadding:y,labelBgBorderRadius:b,style:x,markerEnd:v,markerStart:w,pathOptions:k,interactionWidth:C})=>{const[S,T,A]=GI({sourceX:n,sourceY:i,sourcePosition:o,targetX:s,targetY:r,targetPosition:c,curvature:k==null?void 0:k.curvature}),j=e.isInternal?void 0:t;return d.jsx(xg,{id:j,path:S,labelX:T,labelY:A,label:u,labelStyle:f,labelShowBg:p,labelBgStyle:m,labelBgPadding:y,labelBgBorderRadius:b,style:x,markerEnd:v,markerStart:w,interactionWidth:C})})}const Fue=zP({isInternal:!1}),BP=zP({isInternal:!0});Fue.displayName="BezierEdge";BP.displayName="BezierEdgeInternal";const wA={default:BP,straight:PP,step:LP,smoothstep:DP,simplebezier:jP},EA={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},$ue=(e,t,n)=>n===et.Left?e-t:n===et.Right?e+t:e,que=(e,t,n)=>n===et.Top?e-t:n===et.Bottom?e+t:e,kA="react-flow__edgeupdater";function SA({position:e,centerX:t,centerY:n,radius:i=10,onMouseDown:s,onMouseEnter:r,onMouseOut:o,type:c}){return d.jsx("circle",{onMouseDown:s,onMouseEnter:r,onMouseOut:o,className:Wn([kA,`${kA}-${c}`]),cx:$ue(t,i,e),cy:que(n,i,e),r:i,stroke:"transparent",fill:"transparent"})}function Hue({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:i,sourceY:s,targetX:r,targetY:o,sourcePosition:c,targetPosition:u,onReconnect:f,onReconnectStart:p,onReconnectEnd:m,setReconnecting:y,setUpdateHover:b}){const x=Nn(),v=(T,A)=>{if(T.button!==0)return;const{autoPanOnConnect:j,domNode:M,connectionMode:D,connectionRadius:P,lib:I,onConnectStart:B,cancelConnection:q,nodeLookup:G,rfId:R,panBy:O,updateConnection:z}=x.getState(),W=A.type==="target",X=(F,Y)=>{y(!1),m==null||m(F,n,A.type,Y)},K=F=>f==null?void 0:f(n,F),U=(F,Y)=>{y(!0),p==null||p(T,n,A.type),B==null||B(F,Y)};Av.onPointerDown(T.nativeEvent,{autoPanOnConnect:j,connectionMode:D,connectionRadius:P,domNode:M,handleId:A.id,nodeId:A.nodeId,nodeLookup:G,isTarget:W,edgeUpdaterType:A.type,lib:I,flowId:R,cancelConnection:q,panBy:O,isValidConnection:(...F)=>{var Y,$;return(($=(Y=x.getState()).isValidConnection)==null?void 0:$.call(Y,...F))??!0},onConnect:K,onConnectStart:U,onConnectEnd:(...F)=>{var Y,$;return($=(Y=x.getState()).onConnectEnd)==null?void 0:$.call(Y,...F)},onReconnectEnd:X,updateConnection:z,getTransform:()=>x.getState().transform,getFromHandle:()=>x.getState().connection.fromHandle,dragThreshold:x.getState().connectionDragThreshold,handleDomNode:T.currentTarget})},w=T=>v(T,{nodeId:n.target,id:n.targetHandle??null,type:"target"}),k=T=>v(T,{nodeId:n.source,id:n.sourceHandle??null,type:"source"}),C=()=>b(!0),S=()=>b(!1);return d.jsxs(d.Fragment,{children:[(e===!0||e==="source")&&d.jsx(SA,{position:c,centerX:i,centerY:s,radius:t,onMouseDown:w,onMouseEnter:C,onMouseOut:S,type:"source"}),(e===!0||e==="target")&&d.jsx(SA,{position:u,centerX:r,centerY:o,radius:t,onMouseDown:k,onMouseEnter:C,onMouseOut:S,type:"target"})]})}function Vue({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:i,onClick:s,onDoubleClick:r,onContextMenu:o,onMouseEnter:c,onMouseMove:u,onMouseLeave:f,reconnectRadius:p,onReconnect:m,onReconnectStart:y,onReconnectEnd:b,rfId:x,edgeTypes:v,noPanClassName:w,onError:k,disableKeyboardA11y:C}){let S=Bt(ge=>ge.edgeLookup.get(e));const T=Bt(ge=>ge.defaultEdgeOptions);S=T?{...T,...S}:S;let A=S.type||"default",j=(v==null?void 0:v[A])||wA[A];j===void 0&&(k==null||k("011",ls.error011(A)),A="default",j=(v==null?void 0:v.default)||wA.default);const M=!!(S.focusable||t&&typeof S.focusable>"u"),D=typeof m<"u"&&(S.reconnectable||n&&typeof S.reconnectable>"u"),P=!!(S.selectable||i&&typeof S.selectable>"u"),I=_.useRef(null),[B,q]=_.useState(!1),[G,R]=_.useState(!1),O=Nn(),{zIndex:z=S.zIndex,sourceX:W,sourceY:X,targetX:K,targetY:U,sourcePosition:F,targetPosition:Y}=Bt(_.useCallback(ge=>{const Ce=ge.nodeLookup.get(S.source),Ie=ge.nodeLookup.get(S.target);if(!Ce||!Ie)return EA;const ae=Dle({id:e,sourceNode:Ce,targetNode:Ie,sourceHandle:S.sourceHandle||null,targetHandle:S.targetHandle||null,connectionMode:ge.connectionMode,onError:k}),ke=Nle({selected:S.selected,zIndex:S.zIndex,sourceNode:Ce,targetNode:Ie,elevateOnSelect:ge.elevateEdgesOnSelect,zIndexMode:ge.zIndexMode});return{...ae||EA,zIndex:ke}},[S.source,S.target,S.sourceHandle,S.targetHandle,S.selected,S.zIndex]),Sn),$=_.useMemo(()=>S.markerStart?`url('#${Cv(S.markerStart,x)}')`:void 0,[S.markerStart,x]),ie=_.useMemo(()=>S.markerEnd?`url('#${Cv(S.markerEnd,x)}')`:void 0,[S.markerEnd,x]);if(S.hidden||W===null||X===null||K===null||U===null)return null;const be=ge=>{var ke;const{addSelectedEdges:Ce,unselectNodesAndEdges:Ie,multiSelectionActive:ae}=O.getState();P&&(O.setState({nodesSelectionActive:!1}),S.selected&&ae?(Ie({nodes:[],edges:[S]}),(ke=I.current)==null||ke.blur()):Ce([e])),s&&s(ge,S)},ce=r?ge=>{r(ge,{...S})}:void 0,Ne=o?ge=>{o(ge,{...S})}:void 0,oe=c?ge=>{c(ge,{...S})}:void 0,pe=u?ge=>{u(ge,{...S})}:void 0,re=f?ge=>{f(ge,{...S})}:void 0,ee=ge=>{var Ce;if(!C&&MI.includes(ge.key)&&P){const{unselectNodesAndEdges:Ie,addSelectedEdges:ae}=O.getState();ge.key==="Escape"?((Ce=I.current)==null||Ce.blur(),Ie({edges:[S]})):ae([e])}};return d.jsx("svg",{style:{zIndex:z},children:d.jsxs("g",{className:Wn(["react-flow__edge",`react-flow__edge-${A}`,S.className,w,{selected:S.selected,animated:S.animated,inactive:!P&&!s,updating:B,selectable:P}]),onClick:be,onDoubleClick:ce,onContextMenu:Ne,onMouseEnter:oe,onMouseMove:pe,onMouseLeave:re,onKeyDown:M?ee:void 0,tabIndex:M?0:void 0,role:S.ariaRole??(M?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":S.ariaLabel===null?void 0:S.ariaLabel||`Edge from ${S.source} to ${S.target}`,"aria-describedby":M?`${dP}-${x}`:void 0,ref:I,...S.domAttributes,children:[!G&&d.jsx(j,{id:e,source:S.source,target:S.target,type:S.type,selected:S.selected,animated:S.animated,selectable:P,deletable:S.deletable??!0,label:S.label,labelStyle:S.labelStyle,labelShowBg:S.labelShowBg,labelBgStyle:S.labelBgStyle,labelBgPadding:S.labelBgPadding,labelBgBorderRadius:S.labelBgBorderRadius,sourceX:W,sourceY:X,targetX:K,targetY:U,sourcePosition:F,targetPosition:Y,data:S.data,style:S.style,sourceHandleId:S.sourceHandle,targetHandleId:S.targetHandle,markerStart:$,markerEnd:ie,pathOptions:"pathOptions"in S?S.pathOptions:void 0,interactionWidth:S.interactionWidth}),D&&d.jsx(Hue,{edge:S,isReconnectable:D,reconnectRadius:p,onReconnect:m,onReconnectStart:y,onReconnectEnd:b,sourceX:W,sourceY:X,targetX:K,targetY:U,sourcePosition:F,targetPosition:Y,setUpdateHover:q,setReconnecting:R})]})})}var Kue=_.memo(Vue);const Gue=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function UP({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:i,noPanClassName:s,onReconnect:r,onEdgeContextMenu:o,onEdgeMouseEnter:c,onEdgeMouseMove:u,onEdgeMouseLeave:f,onEdgeClick:p,reconnectRadius:m,onEdgeDoubleClick:y,onReconnectStart:b,onReconnectEnd:x,disableKeyboardA11y:v}){const{edgesFocusable:w,edgesReconnectable:k,elementsSelectable:C,onError:S}=Bt(Gue,Sn),T=Mue(t);return d.jsxs("div",{className:"react-flow__edges",children:[d.jsx(Iue,{defaultColor:e,rfId:n}),T.map(A=>d.jsx(Kue,{id:A,edgesFocusable:w,edgesReconnectable:k,elementsSelectable:C,noPanClassName:s,onReconnect:r,onContextMenu:o,onMouseEnter:c,onMouseMove:u,onMouseLeave:f,onClick:p,reconnectRadius:m,onDoubleClick:y,onReconnectStart:b,onReconnectEnd:x,rfId:n,onError:S,edgeTypes:i,disableKeyboardA11y:v},A))]})}UP.displayName="EdgeRenderer";const Wue=_.memo(UP),Yue=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function Xue({children:e}){const t=Bt(Yue);return d.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:t},children:e})}function Que(e){const t=yg(),n=_.useRef(!1);_.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const Zue=e=>{var t;return(t=e.panZoom)==null?void 0:t.syncViewport};function Jue(e){const t=Bt(Zue),n=Nn();return _.useEffect(()=>{e&&(t==null||t(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function ede(e){return e.connection.inProgress?{...e.connection,to:jf(e.connection.to,e.transform)}:{...e.connection}}function tde(e){return ede}function nde(e){const t=tde();return Bt(t,Sn)}const ide=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function sde({containerStyle:e,style:t,type:n,component:i}){const{nodesConnectable:s,width:r,height:o,isValid:c,inProgress:u}=Bt(ide,Sn);return!(r&&s&&u)?null:d.jsx("svg",{style:e,width:r,height:o,className:"react-flow__connectionline react-flow__container",children:d.jsx("g",{className:Wn(["react-flow__connection",OI(c)]),children:d.jsx(FP,{style:t,type:n,CustomComponent:i,isValid:c})})})}const FP=({style:e,type:t=Va.Bezier,CustomComponent:n,isValid:i})=>{const{inProgress:s,from:r,fromNode:o,fromHandle:c,fromPosition:u,to:f,toNode:p,toHandle:m,toPosition:y,pointer:b}=nde();if(!s)return;if(n)return d.jsx(n,{connectionLineType:t,connectionLineStyle:e,fromNode:o,fromHandle:c,fromX:r.x,fromY:r.y,toX:f.x,toY:f.y,fromPosition:u,toPosition:y,connectionStatus:OI(i),toNode:p,toHandle:m,pointer:b});let x="";const v={sourceX:r.x,sourceY:r.y,sourcePosition:u,targetX:f.x,targetY:f.y,targetPosition:y};switch(t){case Va.Bezier:[x]=GI(v);break;case Va.SimpleBezier:[x]=TP(v);break;case Va.Step:[x]=_v({...v,borderRadius:0});break;case Va.SmoothStep:[x]=_v(v);break;default:[x]=XI(v)}return d.jsx("path",{d:x,fill:"none",className:"react-flow__connection-path",style:e})};FP.displayName="ConnectionLine";const rde={};function NA(e=rde){_.useRef(e),Nn(),_.useEffect(()=>{},[e])}function ade(){Nn(),_.useRef(!1),_.useEffect(()=>{},[])}function $P({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:i,onEdgeClick:s,onNodeDoubleClick:r,onEdgeDoubleClick:o,onNodeMouseEnter:c,onNodeMouseMove:u,onNodeMouseLeave:f,onNodeContextMenu:p,onSelectionContextMenu:m,onSelectionStart:y,onSelectionEnd:b,connectionLineType:x,connectionLineStyle:v,connectionLineComponent:w,connectionLineContainerStyle:k,selectionKeyCode:C,selectionOnDrag:S,selectionMode:T,multiSelectionKeyCode:A,panActivationKeyCode:j,zoomActivationKeyCode:M,deleteKeyCode:D,onlyRenderVisibleElements:P,elementsSelectable:I,defaultViewport:B,translateExtent:q,minZoom:G,maxZoom:R,preventScrolling:O,defaultMarkerColor:z,zoomOnScroll:W,zoomOnPinch:X,panOnScroll:K,panOnScrollSpeed:U,panOnScrollMode:F,zoomOnDoubleClick:Y,panOnDrag:$,autoPanOnSelection:ie,onPaneClick:be,onPaneMouseEnter:ce,onPaneMouseMove:Ne,onPaneMouseLeave:oe,onPaneScroll:pe,onPaneContextMenu:re,paneClickDistance:ee,nodeClickDistance:ge,onEdgeContextMenu:Ce,onEdgeMouseEnter:Ie,onEdgeMouseMove:ae,onEdgeMouseLeave:ke,reconnectRadius:Ue,onReconnect:Oe,onReconnectStart:ht,onReconnectEnd:tt,noDragClassName:jt,noWheelClassName:Nt,noPanClassName:pt,disableKeyboardA11y:Me,nodeExtent:We,rfId:ne,viewport:ve,onViewportChange:Re}){return NA(e),NA(t),ade(),Que(n),Jue(ve),d.jsx(wue,{onPaneClick:be,onPaneMouseEnter:ce,onPaneMouseMove:Ne,onPaneMouseLeave:oe,onPaneContextMenu:re,onPaneScroll:pe,paneClickDistance:ee,deleteKeyCode:D,selectionKeyCode:C,selectionOnDrag:S,selectionMode:T,onSelectionStart:y,onSelectionEnd:b,multiSelectionKeyCode:A,panActivationKeyCode:j,zoomActivationKeyCode:M,elementsSelectable:I,zoomOnScroll:W,zoomOnPinch:X,zoomOnDoubleClick:Y,panOnScroll:K,panOnScrollSpeed:U,panOnScrollMode:F,panOnDrag:$,autoPanOnSelection:ie,defaultViewport:B,translateExtent:q,minZoom:G,maxZoom:R,onSelectionContextMenu:m,preventScrolling:O,noDragClassName:jt,noWheelClassName:Nt,noPanClassName:pt,disableKeyboardA11y:Me,onViewportChange:Re,isControlledViewport:!!ve,children:d.jsxs(Xue,{children:[d.jsx(Wue,{edgeTypes:t,onEdgeClick:s,onEdgeDoubleClick:o,onReconnect:Oe,onReconnectStart:ht,onReconnectEnd:tt,onlyRenderVisibleElements:P,onEdgeContextMenu:Ce,onEdgeMouseEnter:Ie,onEdgeMouseMove:ae,onEdgeMouseLeave:ke,reconnectRadius:Ue,defaultMarkerColor:z,noPanClassName:pt,disableKeyboardA11y:Me,rfId:ne}),d.jsx(sde,{style:v,type:x,component:w,containerStyle:k}),d.jsx("div",{className:"react-flow__edgelabel-renderer"}),d.jsx(jue,{nodeTypes:e,onNodeClick:i,onNodeDoubleClick:r,onNodeMouseEnter:c,onNodeMouseMove:u,onNodeMouseLeave:f,onNodeContextMenu:p,nodeClickDistance:ge,onlyRenderVisibleElements:P,noPanClassName:pt,noDragClassName:jt,disableKeyboardA11y:Me,nodeExtent:We,rfId:ne}),d.jsx("div",{className:"react-flow__viewport-portal"})]})})}$P.displayName="GraphView";const ode=_.memo($P),lde=UI(),_A=({nodes:e,edges:t,defaultNodes:n,defaultEdges:i,width:s,height:r,fitView:o,fitViewOptions:c,minZoom:u=.5,maxZoom:f=2,nodeOrigin:p,nodeExtent:m,zIndexMode:y="basic"}={})=>{const b=new Map,x=new Map,v=new Map,w=new Map,k=i??t??[],C=n??e??[],S=p??[0,0],T=m??Xd;JI(v,w,k);const{nodesInitialized:A}=Tv(C,b,x,{nodeOrigin:S,nodeExtent:T,zIndexMode:y});let j=[0,0,1];if(o&&s&&r){const M=Tf(b,{filter:B=>!!((B.width||B.initialWidth)&&(B.height||B.initialHeight))}),{x:D,y:P,zoom:I}=Cw(M,s,r,u,f,(c==null?void 0:c.padding)??.1);j=[D,P,I]}return{rfId:"1",width:s??0,height:r??0,transform:j,nodes:C,nodesInitialized:A,nodeLookup:b,parentLookup:x,edges:k,edgeLookup:w,connectionLookup:v,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:i!==void 0,panZoom:null,minZoom:u,maxZoom:f,translateExtent:Xd,nodeExtent:T,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:Gc.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:S,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:o??!1,fitViewOptions:c,fitViewResolver:null,connection:{...DI},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:lde,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:RI,zIndexMode:y,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},cde=({nodes:e,edges:t,defaultNodes:n,defaultEdges:i,width:s,height:r,fitView:o,fitViewOptions:c,minZoom:u,maxZoom:f,nodeOrigin:p,nodeExtent:m,zIndexMode:y})=>Ece((b,x)=>{async function v(){const{nodeLookup:w,panZoom:k,fitViewOptions:C,fitViewResolver:S,width:T,height:A,minZoom:j,maxZoom:M}=x();k&&(await ble({nodes:w,width:T,height:A,panZoom:k,minZoom:j,maxZoom:M},C),S==null||S.resolve(!0),b({fitViewResolver:null}))}return{..._A({nodes:e,edges:t,width:s,height:r,fitView:o,fitViewOptions:c,minZoom:u,maxZoom:f,nodeOrigin:p,nodeExtent:m,defaultNodes:n,defaultEdges:i,zIndexMode:y}),setNodes:w=>{const{nodeLookup:k,parentLookup:C,nodeOrigin:S,elevateNodesOnSelect:T,fitViewQueued:A,zIndexMode:j,nodesSelectionActive:M}=x(),{nodesInitialized:D,hasSelectedNodes:P}=Tv(w,k,C,{nodeOrigin:S,nodeExtent:m,elevateNodesOnSelect:T,checkEquality:!0,zIndexMode:j}),I=M&&P;A&&D?(v(),b({nodes:w,nodesInitialized:D,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:I})):b({nodes:w,nodesInitialized:D,nodesSelectionActive:I})},setEdges:w=>{const{connectionLookup:k,edgeLookup:C}=x();JI(k,C,w),b({edges:w})},setDefaultNodesAndEdges:(w,k)=>{if(w){const{setNodes:C}=x();C(w),b({hasDefaultNodes:!0})}if(k){const{setEdges:C}=x();C(k),b({hasDefaultEdges:!0})}},updateNodeInternals:w=>{const{triggerNodeChanges:k,nodeLookup:C,parentLookup:S,domNode:T,nodeOrigin:A,nodeExtent:j,debug:M,fitViewQueued:D,zIndexMode:P}=x(),{changes:I,updatedInternals:B}=Fle(w,C,S,T,A,j,P);B&&(Ple(C,S,{nodeOrigin:A,nodeExtent:j,zIndexMode:P}),D?(v(),b({fitViewQueued:!1,fitViewOptions:void 0})):b({}),(I==null?void 0:I.length)>0&&(M&&console.log("React Flow: trigger node changes",I),k==null||k(I)))},updateNodePositions:(w,k=!1)=>{const C=[];let S=[];const{nodeLookup:T,triggerNodeChanges:A,connection:j,updateConnection:M,onNodesChangeMiddlewareMap:D}=x();for(const[P,I]of w){const B=T.get(P),q=!!(B!=null&&B.expandParent&&(B!=null&&B.parentId)&&(I!=null&&I.position)),G={id:P,type:"position",position:q?{x:Math.max(0,I.position.x),y:Math.max(0,I.position.y)}:I.position,dragging:k};if(B&&j.inProgress&&j.fromNode.id===B.id){const R=yl(B,j.fromHandle,et.Left,!0);M({...j,from:R})}q&&B.parentId&&C.push({id:P,parentId:B.parentId,rect:{...I.internals.positionAbsolute,width:I.measured.width??0,height:I.measured.height??0}}),S.push(G)}if(C.length>0){const{parentLookup:P,nodeOrigin:I}=x(),B=Dw(C,T,P,I);S.push(...B)}for(const P of D.values())S=P(S);A(S)},triggerNodeChanges:w=>{const{onNodesChange:k,setNodes:C,nodes:S,hasDefaultNodes:T,debug:A}=x();if(w!=null&&w.length){if(T){const j=pP(w,S);C(j)}A&&console.log("React Flow: trigger node changes",w),k==null||k(w)}},triggerEdgeChanges:w=>{const{onEdgesChange:k,setEdges:C,edges:S,hasDefaultEdges:T,debug:A}=x();if(w!=null&&w.length){if(T){const j=mP(w,S);C(j)}A&&console.log("React Flow: trigger edge changes",w),k==null||k(w)}},addSelectedNodes:w=>{const{multiSelectionActive:k,edgeLookup:C,nodeLookup:S,triggerNodeChanges:T,triggerEdgeChanges:A}=x();if(k){const j=w.map(M=>Uo(M,!0));T(j);return}T(bc(S,new Set([...w]),!0)),A(bc(C))},addSelectedEdges:w=>{const{multiSelectionActive:k,edgeLookup:C,nodeLookup:S,triggerNodeChanges:T,triggerEdgeChanges:A}=x();if(k){const j=w.map(M=>Uo(M,!0));A(j);return}A(bc(C,new Set([...w]))),T(bc(S,new Set,!0))},unselectNodesAndEdges:({nodes:w,edges:k}={})=>{const{edges:C,nodes:S,nodeLookup:T,triggerNodeChanges:A,triggerEdgeChanges:j}=x(),M=w||S,D=k||C,P=[];for(const B of M){if(!B.selected)continue;const q=T.get(B.id);q&&(q.selected=!1),P.push(Uo(B.id,!1))}const I=[];for(const B of D)B.selected&&I.push(Uo(B.id,!1));A(P),j(I)},setMinZoom:w=>{const{panZoom:k,maxZoom:C}=x();k==null||k.setScaleExtent([w,C]),b({minZoom:w})},setMaxZoom:w=>{const{panZoom:k,minZoom:C}=x();k==null||k.setScaleExtent([C,w]),b({maxZoom:w})},setTranslateExtent:w=>{var k;(k=x().panZoom)==null||k.setTranslateExtent(w),b({translateExtent:w})},resetSelectedElements:()=>{const{edges:w,nodes:k,triggerNodeChanges:C,triggerEdgeChanges:S,elementsSelectable:T}=x();if(!T)return;const A=k.reduce((M,D)=>D.selected?[...M,Uo(D.id,!1)]:M,[]),j=w.reduce((M,D)=>D.selected?[...M,Uo(D.id,!1)]:M,[]);C(A),S(j)},setNodeExtent:w=>{const{nodes:k,nodeLookup:C,parentLookup:S,nodeOrigin:T,elevateNodesOnSelect:A,nodeExtent:j,zIndexMode:M}=x();w[0][0]===j[0][0]&&w[0][1]===j[0][1]&&w[1][0]===j[1][0]&&w[1][1]===j[1][1]||(Tv(k,C,S,{nodeOrigin:T,nodeExtent:w,elevateNodesOnSelect:A,checkEquality:!1,zIndexMode:M}),b({nodeExtent:w}))},panBy:w=>{const{transform:k,width:C,height:S,panZoom:T,translateExtent:A}=x();return $le({delta:w,panZoom:T,transform:k,translateExtent:A,width:C,height:S})},setCenter:async(w,k,C)=>{const{width:S,height:T,maxZoom:A,panZoom:j}=x();if(!j)return!1;const M=typeof(C==null?void 0:C.zoom)<"u"?C.zoom:A;return await j.setViewport({x:S/2-w*M,y:T/2-k*M,zoom:M},{duration:C==null?void 0:C.duration,ease:C==null?void 0:C.ease,interpolate:C==null?void 0:C.interpolate}),!0},cancelConnection:()=>{b({connection:{...DI}})},updateConnection:w=>{b({connection:w})},reset:()=>b({..._A()})}},Object.is);function qP({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:i,initialWidth:s,initialHeight:r,initialMinZoom:o,initialMaxZoom:c,initialFitViewOptions:u,fitView:f,nodeOrigin:p,nodeExtent:m,zIndexMode:y,children:b}){const[x]=_.useState(()=>cde({nodes:e,edges:t,defaultNodes:n,defaultEdges:i,width:s,height:r,fitView:f,minZoom:o,maxZoom:c,fitViewOptions:u,nodeOrigin:p,nodeExtent:m,zIndexMode:y}));return d.jsx(kce,{value:x,children:d.jsx(Gce,{children:d.jsx(lue,{children:b})})})}function ude({children:e,nodes:t,edges:n,defaultNodes:i,defaultEdges:s,width:r,height:o,fitView:c,fitViewOptions:u,minZoom:f,maxZoom:p,nodeOrigin:m,nodeExtent:y,zIndexMode:b}){return _.useContext(mg)?d.jsx(d.Fragment,{children:e}):d.jsx(qP,{initialNodes:t,initialEdges:n,defaultNodes:i,defaultEdges:s,initialWidth:r,initialHeight:o,fitView:c,initialFitViewOptions:u,initialMinZoom:f,initialMaxZoom:p,nodeOrigin:m,nodeExtent:y,zIndexMode:b,children:e})}const dde={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function fde({nodes:e,edges:t,defaultNodes:n,defaultEdges:i,className:s,nodeTypes:r,edgeTypes:o,onNodeClick:c,onEdgeClick:u,onInit:f,onMove:p,onMoveStart:m,onMoveEnd:y,onConnect:b,onConnectStart:x,onConnectEnd:v,onClickConnectStart:w,onClickConnectEnd:k,onNodeMouseEnter:C,onNodeMouseMove:S,onNodeMouseLeave:T,onNodeContextMenu:A,onNodeDoubleClick:j,onNodeDragStart:M,onNodeDrag:D,onNodeDragStop:P,onNodesDelete:I,onEdgesDelete:B,onDelete:q,onSelectionChange:G,onSelectionDragStart:R,onSelectionDrag:O,onSelectionDragStop:z,onSelectionContextMenu:W,onSelectionStart:X,onSelectionEnd:K,onBeforeDelete:U,connectionMode:F,connectionLineType:Y=Va.Bezier,connectionLineStyle:$,connectionLineComponent:ie,connectionLineContainerStyle:be,deleteKeyCode:ce="Backspace",selectionKeyCode:Ne="Shift",selectionOnDrag:oe=!1,selectionMode:pe=Qd.Full,panActivationKeyCode:re="Space",multiSelectionKeyCode:ee=Jd()?"Meta":"Control",zoomActivationKeyCode:ge=Jd()?"Meta":"Control",snapToGrid:Ce,snapGrid:Ie,onlyRenderVisibleElements:ae=!1,selectNodesOnDrag:ke,nodesDraggable:Ue,autoPanOnNodeFocus:Oe,nodesConnectable:ht,nodesFocusable:tt,nodeOrigin:jt=fP,edgesFocusable:Nt,edgesReconnectable:pt,elementsSelectable:Me=!0,defaultViewport:We=Ice,minZoom:ne=.5,maxZoom:ve=2,translateExtent:Re=Xd,preventScrolling:ye=!0,nodeExtent:Je,defaultMarkerColor:It="#b1b1b7",zoomOnScroll:Wt=!0,zoomOnPinch:he=!0,panOnScroll:le=!1,panOnScrollSpeed:Te=.5,panOnScrollMode:Ae=ol.Free,zoomOnDoubleClick:Qe=!0,panOnDrag:st=!0,onPaneClick:$e,onPaneMouseEnter:nt,onPaneMouseMove:qt,onPaneMouseLeave:Xt,onPaneScroll:Dt,onPaneContextMenu:Q,paneClickDistance:we=1,nodeClickDistance:Pe=0,children:ct,onReconnect:Qt,onReconnectStart:Ht,onReconnectEnd:He,onEdgeContextMenu:Fe,onEdgeDoubleClick:rt,onEdgeMouseEnter:hn,onEdgeMouseMove:on,onEdgeMouseLeave:ki,reconnectRadius:cs=10,onNodesChange:us,onEdgesChange:Di,noDragClassName:pn="nodrag",noWheelClassName:In="nowheel",noPanClassName:Yn="nopan",fitView:Ds,fitViewOptions:jr,connectOnClick:Os,attributionPosition:Mr,proOptions:ds,defaultEdgeOptions:Rr,elevateNodesOnSelect:Xn=!0,elevateEdgesOnSelect:Ki=!1,disableKeyboardA11y:Si=!1,autoPanOnConnect:fs,autoPanOnNodeDrag:vn,autoPanOnSelection:Dr=!0,autoPanSpeed:Qn,connectionRadius:jn,isValidConnection:je,onError:Ye,style:xt,id:Pt,nodeDragThreshold:gn,connectionDragThreshold:Un,viewport:ci,onViewportChange:ti,width:Vt,height:ni,colorMode:Or="light",debug:ii,onScroll:si,ariaLabelConfig:Ls,zIndexMode:ma="basic",...ri},Gi){const yi=Pt||"1",Is=Uce(Or),Mn=_.useCallback(rr=>{rr.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),si==null||si(rr)},[si]);return d.jsx("div",{"data-testid":"rf__wrapper",...ri,onScroll:Mn,style:{...xt,...dde},ref:Gi,className:Wn(["react-flow",s,Is]),id:Pt,role:"application",children:d.jsxs(ude,{nodes:e,edges:t,width:Vt,height:ni,fitView:Ds,fitViewOptions:jr,minZoom:ne,maxZoom:ve,nodeOrigin:jt,nodeExtent:Je,zIndexMode:ma,children:[d.jsx(Bce,{nodes:e,edges:t,defaultNodes:n,defaultEdges:i,onConnect:b,onConnectStart:x,onConnectEnd:v,onClickConnectStart:w,onClickConnectEnd:k,nodesDraggable:Ue,autoPanOnNodeFocus:Oe,nodesConnectable:ht,nodesFocusable:tt,edgesFocusable:Nt,edgesReconnectable:pt,elementsSelectable:Me,elevateNodesOnSelect:Xn,elevateEdgesOnSelect:Ki,minZoom:ne,maxZoom:ve,nodeExtent:Je,onNodesChange:us,onEdgesChange:Di,snapToGrid:Ce,snapGrid:Ie,connectionMode:F,translateExtent:Re,connectOnClick:Os,defaultEdgeOptions:Rr,fitView:Ds,fitViewOptions:jr,onNodesDelete:I,onEdgesDelete:B,onDelete:q,onNodeDragStart:M,onNodeDrag:D,onNodeDragStop:P,onSelectionDrag:O,onSelectionDragStart:R,onSelectionDragStop:z,onMove:p,onMoveStart:m,onMoveEnd:y,noPanClassName:Yn,nodeOrigin:jt,rfId:yi,autoPanOnConnect:fs,autoPanOnNodeDrag:vn,autoPanSpeed:Qn,onError:Ye,connectionRadius:jn,isValidConnection:je,selectNodesOnDrag:ke,nodeDragThreshold:gn,connectionDragThreshold:Un,onBeforeDelete:U,debug:ii,ariaLabelConfig:Ls,zIndexMode:ma}),d.jsx(ode,{onInit:f,onNodeClick:c,onEdgeClick:u,onNodeMouseEnter:C,onNodeMouseMove:S,onNodeMouseLeave:T,onNodeContextMenu:A,onNodeDoubleClick:j,nodeTypes:r,edgeTypes:o,connectionLineType:Y,connectionLineStyle:$,connectionLineComponent:ie,connectionLineContainerStyle:be,selectionKeyCode:Ne,selectionOnDrag:oe,selectionMode:pe,deleteKeyCode:ce,multiSelectionKeyCode:ee,panActivationKeyCode:re,zoomActivationKeyCode:ge,onlyRenderVisibleElements:ae,defaultViewport:We,translateExtent:Re,minZoom:ne,maxZoom:ve,preventScrolling:ye,zoomOnScroll:Wt,zoomOnPinch:he,zoomOnDoubleClick:Qe,panOnScroll:le,panOnScrollSpeed:Te,panOnScrollMode:Ae,panOnDrag:st,autoPanOnSelection:Dr,onPaneClick:$e,onPaneMouseEnter:nt,onPaneMouseMove:qt,onPaneMouseLeave:Xt,onPaneScroll:Dt,onPaneContextMenu:Q,paneClickDistance:we,nodeClickDistance:Pe,onSelectionContextMenu:W,onSelectionStart:X,onSelectionEnd:K,onReconnect:Qt,onReconnectStart:Ht,onReconnectEnd:He,onEdgeContextMenu:Fe,onEdgeDoubleClick:rt,onEdgeMouseEnter:hn,onEdgeMouseMove:on,onEdgeMouseLeave:ki,reconnectRadius:cs,defaultMarkerColor:It,noDragClassName:pn,noWheelClassName:In,noPanClassName:Yn,rfId:yi,disableKeyboardA11y:Si,nodeExtent:Je,viewport:ci,onViewportChange:ti}),d.jsx(Lce,{onSelectionChange:G}),ct,d.jsx(jce,{proOptions:ds,position:Mr}),d.jsx(Ace,{rfId:yi,disableKeyboardA11y:Si})]})})}var hde=bP(fde);function pde(e){const[t,n]=_.useState(e),i=_.useCallback(s=>n(r=>pP(s,r)),[]);return[t,n,i]}function mde(e){const[t,n]=_.useState(e),i=_.useCallback(s=>n(r=>mP(s,r)),[]);return[t,n,i]}function gde({dimensions:e,lineWidth:t,variant:n,className:i}){return d.jsx("path",{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:Wn(["react-flow__background-pattern",n,i])})}function yde({radius:e,className:t}){return d.jsx("circle",{cx:e,cy:e,r:e,className:Wn(["react-flow__background-pattern","dots",t])})}var la;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(la||(la={}));const bde={[la.Dots]:1,[la.Lines]:1,[la.Cross]:6},xde=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function HP({id:e,variant:t=la.Dots,gap:n=20,size:i,lineWidth:s=1,offset:r=0,color:o,bgColor:c,style:u,className:f,patternClassName:p}){const m=_.useRef(null),{transform:y,patternId:b}=Bt(xde,Sn),x=i||bde[t],v=t===la.Dots,w=t===la.Cross,k=Array.isArray(n)?n:[n,n],C=[k[0]*y[2]||1,k[1]*y[2]||1],S=x*y[2],T=Array.isArray(r)?r:[r,r],A=w?[S,S]:C,j=[T[0]*y[2]||1+A[0]/2,T[1]*y[2]||1+A[1]/2],M=`${b}${e||""}`;return d.jsxs("svg",{className:Wn(["react-flow__background",f]),style:{...u,...bg,"--xy-background-color-props":c,"--xy-background-pattern-color-props":o},ref:m,"data-testid":"rf__background",children:[d.jsx("pattern",{id:M,x:y[0]%C[0],y:y[1]%C[1],width:C[0],height:C[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${j[0]},-${j[1]})`,children:v?d.jsx(yde,{radius:S/2,className:p}):d.jsx(gde,{dimensions:A,lineWidth:s,variant:t,className:p})}),d.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${M})`})]})}HP.displayName="Background";const vde=_.memo(HP);function wde(){return d.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:d.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function Ede(){return d.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:d.jsx("path",{d:"M0 0h32v4.2H0z"})})}function kde(){return d.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:d.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function Sde(){return d.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:d.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function Nde(){return d.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:d.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function xd({children:e,className:t,...n}){return d.jsx("button",{type:"button",className:Wn(["react-flow__controls-button",t]),...n,children:e})}const _de=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function VP({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:i=!0,fitViewOptions:s,onZoomIn:r,onZoomOut:o,onFitView:c,onInteractiveChange:u,className:f,children:p,position:m="bottom-left",orientation:y="vertical","aria-label":b}){const x=Nn(),{isInteractive:v,minZoomReached:w,maxZoomReached:k,ariaLabelConfig:C}=Bt(_de,Sn),{zoomIn:S,zoomOut:T,fitView:A}=yg(),j=()=>{S(),r==null||r()},M=()=>{T(),o==null||o()},D=()=>{A(s),c==null||c()},P=()=>{x.setState({nodesDraggable:!v,nodesConnectable:!v,elementsSelectable:!v}),u==null||u(!v)},I=y==="horizontal"?"horizontal":"vertical";return d.jsxs(gg,{className:Wn(["react-flow__controls",I,f]),position:m,style:e,"data-testid":"rf__controls","aria-label":b??C["controls.ariaLabel"],children:[t&&d.jsxs(d.Fragment,{children:[d.jsx(xd,{onClick:j,className:"react-flow__controls-zoomin",title:C["controls.zoomIn.ariaLabel"],"aria-label":C["controls.zoomIn.ariaLabel"],disabled:k,children:d.jsx(wde,{})}),d.jsx(xd,{onClick:M,className:"react-flow__controls-zoomout",title:C["controls.zoomOut.ariaLabel"],"aria-label":C["controls.zoomOut.ariaLabel"],disabled:w,children:d.jsx(Ede,{})})]}),n&&d.jsx(xd,{className:"react-flow__controls-fitview",onClick:D,title:C["controls.fitView.ariaLabel"],"aria-label":C["controls.fitView.ariaLabel"],children:d.jsx(kde,{})}),i&&d.jsx(xd,{className:"react-flow__controls-interactive",onClick:P,title:C["controls.interactive.ariaLabel"],"aria-label":C["controls.interactive.ariaLabel"],children:v?d.jsx(Nde,{}):d.jsx(Sde,{})}),p]})}VP.displayName="Controls";const Cde=_.memo(VP);function Tde({id:e,x:t,y:n,width:i,height:s,style:r,color:o,strokeColor:c,strokeWidth:u,className:f,borderRadius:p,shapeRendering:m,selected:y,onClick:b}){const{background:x,backgroundColor:v}=r||{},w=o||x||v;return d.jsx("rect",{className:Wn(["react-flow__minimap-node",{selected:y},f]),x:t,y:n,rx:p,ry:p,width:i,height:s,style:{fill:w,stroke:c,strokeWidth:u},shapeRendering:m,onClick:b?k=>b(k,e):void 0})}const Ade=_.memo(Tde),jde=e=>e.nodes.map(t=>t.id),Vx=e=>e instanceof Function?e:()=>e;function Mde({nodeStrokeColor:e,nodeColor:t,nodeClassName:n="",nodeBorderRadius:i=5,nodeStrokeWidth:s,nodeComponent:r=Ade,onClick:o}){const c=Bt(jde,Sn),u=Vx(t),f=Vx(e),p=Vx(n),m=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return d.jsx(d.Fragment,{children:c.map(y=>d.jsx(Dde,{id:y,nodeColorFunc:u,nodeStrokeColorFunc:f,nodeClassNameFunc:p,nodeBorderRadius:i,nodeStrokeWidth:s,NodeComponent:r,onClick:o,shapeRendering:m},y))})}function Rde({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:i,nodeBorderRadius:s,nodeStrokeWidth:r,shapeRendering:o,NodeComponent:c,onClick:u}){const{node:f,x:p,y:m,width:y,height:b}=Bt(x=>{const v=x.nodeLookup.get(e);if(!v)return{node:void 0,x:0,y:0,width:0,height:0};const w=v.internals.userNode,{x:k,y:C}=v.internals.positionAbsolute,{width:S,height:T}=pa(w);return{node:w,x:k,y:C,width:S,height:T}},Sn);return!f||f.hidden||!FI(f)?null:d.jsx(c,{x:p,y:m,width:y,height:b,style:f.style,selected:!!f.selected,className:i(f),color:t(f),borderRadius:s,strokeColor:n(f),strokeWidth:r,shapeRendering:o,onClick:u,id:f.id})}const Dde=_.memo(Rde);var Ode=_.memo(Mde);const Lde=200,Ide=150,Pde=e=>!e.hidden,zde=e=>{const t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?zI(Tf(e.nodeLookup,{filter:Pde}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},Bde="react-flow__minimap-desc";function KP({style:e,className:t,nodeStrokeColor:n,nodeColor:i,nodeClassName:s="",nodeBorderRadius:r=5,nodeStrokeWidth:o,nodeComponent:c,bgColor:u,maskColor:f,maskStrokeColor:p,maskStrokeWidth:m,position:y="bottom-right",onClick:b,onNodeClick:x,pannable:v=!1,zoomable:w=!1,ariaLabel:k,inversePan:C,zoomStep:S=1,offsetScale:T=5}){const A=Nn(),j=_.useRef(null),{boundingRect:M,viewBB:D,rfId:P,panZoom:I,translateExtent:B,flowWidth:q,flowHeight:G,ariaLabelConfig:R}=Bt(zde,Sn),O=(e==null?void 0:e.width)??Lde,z=(e==null?void 0:e.height)??Ide,W=M.width/O,X=M.height/z,K=Math.max(W,X),U=K*O,F=K*z,Y=T*K,$=M.x-(U-M.width)/2-Y,ie=M.y-(F-M.height)/2-Y,be=U+Y*2,ce=F+Y*2,Ne=`${Bde}-${P}`,oe=_.useRef(0),pe=_.useRef();oe.current=K,_.useEffect(()=>{if(j.current&&I)return pe.current=Qle({domNode:j.current,panZoom:I,getTransform:()=>A.getState().transform,getViewScale:()=>oe.current}),()=>{var Ce;(Ce=pe.current)==null||Ce.destroy()}},[I]),_.useEffect(()=>{var Ce;(Ce=pe.current)==null||Ce.update({translateExtent:B,width:q,height:G,inversePan:C,pannable:v,zoomStep:S,zoomable:w})},[v,w,C,S,B,q,G]);const re=b?Ce=>{var ke;const[Ie,ae]=((ke=pe.current)==null?void 0:ke.pointer(Ce))||[0,0];b(Ce,{x:Ie,y:ae})}:void 0,ee=x?_.useCallback((Ce,Ie)=>{const ae=A.getState().nodeLookup.get(Ie).internals.userNode;x(Ce,ae)},[]):void 0,ge=k??R["minimap.ariaLabel"];return d.jsx(gg,{position:y,style:{...e,"--xy-minimap-background-color-props":typeof u=="string"?u:void 0,"--xy-minimap-mask-background-color-props":typeof f=="string"?f:void 0,"--xy-minimap-mask-stroke-color-props":typeof p=="string"?p:void 0,"--xy-minimap-mask-stroke-width-props":typeof m=="number"?m*K:void 0,"--xy-minimap-node-background-color-props":typeof i=="string"?i:void 0,"--xy-minimap-node-stroke-color-props":typeof n=="string"?n:void 0,"--xy-minimap-node-stroke-width-props":typeof o=="number"?o:void 0},className:Wn(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:d.jsxs("svg",{width:O,height:z,viewBox:`${$} ${ie} ${be} ${ce}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":Ne,ref:j,onClick:re,children:[ge&&d.jsx("title",{id:Ne,children:ge}),d.jsx(Ode,{onClick:ee,nodeColor:i,nodeStrokeColor:n,nodeBorderRadius:r,nodeClassName:s,nodeStrokeWidth:o,nodeComponent:c}),d.jsx("path",{className:"react-flow__minimap-mask",d:`M${$-Y},${ie-Y}h${be+Y*2}v${ce+Y*2}h${-be-Y*2}z
|
|
843
843
|
M${D.x},${D.y}h${D.width}v${D.height}h${-D.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}KP.displayName="MiniMap";_.memo(KP);const Ude=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,Fde={[Xc.Line]:"right",[Xc.Handle]:"bottom-right"};function $de({nodeId:e,position:t,variant:n=Xc.Handle,className:i,style:s=void 0,children:r,color:o,minWidth:c=10,minHeight:u=10,maxWidth:f=Number.MAX_VALUE,maxHeight:p=Number.MAX_VALUE,keepAspectRatio:m=!1,resizeDirection:y,autoScale:b=!0,shouldResize:x,onResizeStart:v,onResize:w,onResizeEnd:k}){const C=EP(),S=typeof e=="string"?e:C,T=Nn(),A=_.useRef(null),j=n===Xc.Handle,M=Bt(_.useCallback(Ude(j&&b),[j,b]),Sn),D=_.useRef(null),P=t??Fde[n];_.useEffect(()=>{if(!(!A.current||!S))return D.current||(D.current=uce({domNode:A.current,nodeId:S,getStoreItems:()=>{const{nodeLookup:B,transform:q,snapGrid:G,snapToGrid:R,nodeOrigin:O,domNode:z}=T.getState();return{nodeLookup:B,transform:q,snapGrid:G,snapToGrid:R,nodeOrigin:O,paneDomNode:z}},onChange:(B,q)=>{const{triggerNodeChanges:G,nodeLookup:R,parentLookup:O,nodeOrigin:z}=T.getState(),W=[],X={x:B.x,y:B.y},K=R.get(S);if(K&&K.expandParent&&K.parentId){const U=K.origin??z,F=B.width??K.measured.width??0,Y=B.height??K.measured.height??0,$={id:K.id,parentId:K.parentId,rect:{width:F,height:Y,...$I({x:B.x??K.position.x,y:B.y??K.position.y},{width:F,height:Y},K.parentId,R,U)}},ie=Dw([$],R,O,z);W.push(...ie),X.x=B.x?Math.max(U[0]*F,B.x):void 0,X.y=B.y?Math.max(U[1]*Y,B.y):void 0}if(X.x!==void 0&&X.y!==void 0){const U={id:S,type:"position",position:{...X}};W.push(U)}if(B.width!==void 0&&B.height!==void 0){const F={id:S,type:"dimensions",resizing:!0,setAttributes:y?y==="horizontal"?"width":"height":!0,dimensions:{width:B.width,height:B.height}};W.push(F)}for(const U of q){const F={...U,type:"position"};W.push(F)}G(W)},onEnd:({width:B,height:q})=>{const G={id:S,type:"dimensions",resizing:!1,dimensions:{width:B,height:q}};T.getState().triggerNodeChanges([G])}})),D.current.update({controlPosition:P,boundaries:{minWidth:c,minHeight:u,maxWidth:f,maxHeight:p},keepAspectRatio:m,resizeDirection:y,onResizeStart:v,onResize:w,onResizeEnd:k,shouldResize:x}),()=>{var B;(B=D.current)==null||B.destroy()}},[P,c,u,f,p,m,v,w,k,x]);const I=P.split("-");return d.jsx("div",{className:Wn(["react-flow__resize-control","nodrag",...I,n,i]),ref:A,style:{...s,scale:M,...o&&{[j?"backgroundColor":"borderColor"]:o}},children:r})}_.memo($de);function qde(e){return St(`/api/projects/${encodeURIComponent(e)}/flow`)}function Hde(e,t){return Om(`/api/projects/${encodeURIComponent(e)}/flow`,t)}const Mv={done:"var(--color-running)",doing:"var(--color-running)",todo:"var(--color-text-subtle)",stuck:"var(--color-crashed)"},CA=["var(--color-accent-mint)","var(--color-accent-pink)","var(--color-accent-purple)","var(--color-accent-yellow)","var(--color-running-bg)","var(--color-idle-bg)"];function Vde(e){let t=0;for(let n=0;n<e.length;n+=1)t=t*31+e.charCodeAt(n)>>>0;return CA[t%CA.length]}const xp={width:9,height:9,background:"var(--color-bg)",border:"1px solid var(--color-border-light)"},Kde=_.memo(function({id:t,data:n,selected:i}){const s=n,r=s.skills.split(",").map(o=>o.trim()).filter(Boolean);return d.jsxs("div",{className:`flow-node-glow${i?" is-selected":""}${s.status==="doing"?" is-running":""}`,children:[d.jsx(no,{id:"l",type:"target",position:et.Left,style:xp}),d.jsx(no,{id:"t",type:"target",position:et.Top,style:xp}),d.jsxs("div",{className:"rounded-2xl border border-[var(--color-border-light)] bg-[var(--color-bg-soft)] overflow-hidden cursor-pointer flex flex-col",style:{width:260,height:158,boxShadow:"var(--surface-card-border) 0 0 0 1px inset"},children:[d.jsxs("div",{className:"flex items-center gap-2 px-2.5 py-1.5 border-b border-[var(--color-border-light)]",style:{background:Vde(t)},children:[d.jsxs("span",{className:"font-[family-name:var(--font-mono)] text-xs font-bold text-[var(--color-text)]",children:["#",s.seq]}),d.jsxs("span",{className:"relative shrink-0 ml-auto flex items-center justify-center w-2.5 h-2.5",title:s.status,children:[s.status==="doing"&&d.jsx("span",{className:"absolute inline-flex w-full h-full rounded-full animate-ping opacity-60",style:{background:Mv.doing}}),d.jsx("span",{className:"relative w-2.5 h-2.5 rounded-full",style:{background:Mv[s.status]??"var(--color-text-subtle)"}})]})]}),d.jsxs("div",{className:"px-2.5 py-2 flex-1 min-h-0 overflow-hidden",children:[d.jsx("p",{className:"text-[13px] font-semibold text-[var(--color-text)] leading-snug line-clamp-3",children:s.title||"任务"}),r.length>0&&d.jsx("div",{className:"flex flex-wrap gap-1 mt-2 max-h-[46px] overflow-hidden",children:r.slice(0,6).map(o=>d.jsx("span",{className:"text-[10px] font-[family-name:var(--font-mono)] px-1.5 py-0.5 rounded bg-[var(--surface-code)] text-[var(--color-text)]",children:o},o))})]})]}),d.jsx(no,{id:"r",type:"source",position:et.Right,style:xp}),d.jsx(no,{id:"b",type:"source",position:et.Bottom,style:xp})]})});function Gde(e){if(!e)return"";const t=e.split(`
|
|
844
844
|
`),n=t.findIndex(s=>/^##\s+描述\s*$/.test(s));if(n===-1)return"";let i=t.length;for(let s=n+1;s<t.length;s+=1)if(/^##\s+/.test(t[s]??"")){i=s;break}return t.slice(n+1,i).join(`
|
|
845
|
-
`).trim()}function Wde(e,t){return t.includes("NEEDS-FIX")?"stuck":e==="Done"?"done":e==="Inprogress"?"doing":"todo"}function Yde({project:e,seq:t,onClose:n,onChanged:i,onDelete:s}){var G;const r=Xe(),[o,c]=_.useState(!0),[u,f]=_.useState(!1),[p,m]=_.useState(""),[y,b]=_.useState(""),[x,v]=_.useState(new Set),[w,k]=_.useState(""),[C,S]=_.useState("todo"),[T,A]=_.useState(null),[j,M]=_.useState(""),D=ot({queryKey:["skills-all",e],queryFn:()=>sg(e)}),P=((G=D.data)==null?void 0:G.data)??[];_.useEffect(()=>{const R=O=>{O.key==="Escape"&&n()};return window.addEventListener("keydown",R),()=>window.removeEventListener("keydown",R)},[n]),_.useEffect(()=>{let R=!1;return c(!0),UL(e,t).then(O=>{R||(m(O.title),v(new Set(O.skills??[])),b(Gde(O.body)),k(O.state),S(Wde(O.state,O.labels??[])),A(typeof O.order=="number"?O.order:null))}).catch(()=>{}).finally(()=>{R||c(!1)}),()=>{R=!0}},[e,t]);const I=R=>{v(O=>{const z=new Set(O);return z.has(R)?z.delete(R):z.add(R),z})},B=async()=>{M(""),f(!0);try{await bm(e,t,{title:p.trim()||r("flow.node.default"),description:y,skills:[...x]}),i(),n()}catch(R){M(R instanceof Error?R.message:String(R)),f(!1)}},q=()=>s(t);return d.jsx("div",{role:"dialog","aria-modal":"true",className:"fixed inset-0 z-40 flex items-center justify-center p-4 md:p-6 bg-black/30 overflow-hidden",onClick:n,children:d.jsxs("div",{className:"nb-card w-full max-w-4xl flex flex-col bg-[var(--color-bg)]",style:{maxHeight:"calc(100vh - 48px)"},onClick:R=>R.stopPropagation(),children:[d.jsxs("header",{className:"flex items-start justify-between gap-4 mb-4 flex-shrink-0",children:[d.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[d.jsxs("span",{className:"font-[family-name:var(--font-mono)] font-bold text-xs px-2 py-0.5 bg-[var(--color-accent-purple)] border-2 border-[var(--color-text)] rounded-full",children:["#",t]}),w&&d.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs px-2 py-0.5 border-2 border-[var(--color-text)] rounded-full font-semibold",children:[d.jsx("span",{className:"w-2.5 h-2.5 rounded-full inline-block border border-[var(--color-text)]",style:{background:Mv[C]??"gray"}}),w]}),T!=null&&d.jsx("span",{className:"font-[family-name:var(--font-mono)] text-xs px-2 py-0.5 bg-[var(--color-accent-mint)] border-2 border-[var(--color-text)] rounded-full font-semibold",title:r("flow.lane.orderTip"),children:r("flow.lane.wave",{n:T})})]}),d.jsx("button",{onClick:n,className:"nb-btn nb-btn-mint p-2 flex-shrink-0","aria-label":r("flow.node.close"),type:"button",children:d.jsx(En,{size:14,strokeWidth:3})})]}),o?d.jsxs("div",{className:"flex items-center gap-2 text-sm text-[var(--color-text-muted)] py-10 justify-center",children:[d.jsx(mt,{size:16,className:"animate-spin"})," …"]}):d.jsxs(d.Fragment,{children:[j&&d.jsx("div",{className:"text-sm text-[var(--color-crashed)] mb-3",children:j}),d.jsxs("div",{className:"grid min-h-0 flex-1 grid-cols-1 gap-4 overflow-y-auto pr-1 md:grid-cols-[minmax(0,1fr)_minmax(260px,340px)] md:overflow-hidden md:pr-0",children:[d.jsxs("div",{className:"flex min-h-0 flex-col gap-4 md:overflow-y-auto md:pr-1",children:[d.jsxs("label",{className:"flex flex-col gap-1.5",children:[d.jsx("span",{className:"text-sm font-bold",children:r("flow.node.title")}),d.jsx("input",{className:"nb-input w-full text-base font-semibold",value:p,onChange:R=>m(R.target.value),autoFocus:!0})]}),d.jsxs("label",{className:"flex flex-1 min-h-0 flex-col gap-1.5",children:[d.jsx("span",{className:"text-sm font-bold",children:r("flow.node.desc")}),d.jsx("textarea",{className:"nb-input w-full flex-1 min-h-0",style:{minHeight:200,resize:"vertical"},value:y,onChange:R=>b(R.target.value)})]})]}),d.jsxs("section",{className:"flex min-h-[200px] flex-col gap-2 md:min-h-0 md:overflow-hidden",children:[d.jsx("span",{className:"text-sm font-bold",children:r("flow.node.skills")}),d.jsx("div",{className:"scroll-frame min-h-0 flex-1 rounded-lg border-2 border-[var(--color-border-light)] bg-[var(--color-bg-cream)]",children:d.jsxs("div",{className:"scroll-frame-body h-full p-2",children:[D.isLoading&&d.jsx(mt,{size:14,className:"animate-spin text-[var(--color-text-muted)]"}),P.length>0&&d.jsx("div",{className:"flex flex-wrap gap-2",children:P.map(R=>{const O=x.has(R.name);return d.jsx("button",{type:"button",onClick:()=>I(R.name),className:["max-w-full break-all px-2.5 py-1 text-left text-xs font-[family-name:var(--font-mono)] rounded-full border-2 transition-all",O?"bg-[var(--color-accent-mint)] border-[var(--color-text)] shadow-[2px_2px_0_var(--color-text)] font-bold":"bg-[var(--color-bg)] border-[var(--color-border-light)] hover:border-[var(--color-text)]"].join(" "),"aria-pressed":O,children:R.name},R.name)})})]})}),x.size>0&&d.jsx("p",{className:"max-h-14 overflow-y-auto break-words text-xs text-[var(--color-text-muted)]",children:[...x].join(", ")})]})]}),d.jsxs("div",{className:"flex gap-2 justify-between mt-4 pt-3 border-t-2 border-dashed border-[var(--color-text)] flex-shrink-0",children:[d.jsxs("button",{type:"button",className:"nb-btn nb-btn-danger",onClick:()=>void q(),disabled:u,children:[d.jsx(Rs,{size:14,strokeWidth:2.4})," ",r("flow.node.delete")]}),d.jsxs("button",{type:"button",className:"nb-btn nb-btn-cta",onClick:()=>void B(),disabled:u,children:[u?d.jsx(mt,{size:14,className:"animate-spin"}):null,r("flow.node.save")]})]})]})]})})}const Xde=_.memo(function({data:t}){const n=t;return d.jsxs("div",{className:"relative w-full h-full rounded-2xl border-2 border-dashed border-[var(--color-text)]",children:[d.jsx("div",{className:"absolute inset-0 rounded-2xl",style:{background:n.color,opacity:.16}}),d.jsxs("span",{className:"absolute top-1.5 left-2.5 inline-flex items-center gap-1.5 px-2 py-0.5 text-[11px] font-bold rounded-md border-2 border-[var(--color-text)] bg-[var(--color-bg)] text-[var(--color-text)] whitespace-nowrap max-w-[90%]",children:[d.jsx("span",{className:"truncate",children:n.label}),n.sub&&d.jsx("span",{className:"font-normal text-[var(--color-text-muted)]",children:n.sub})]})]})});function Qde(e){const t=e;if(typeof t.seq=="number")return t.seq;const n=/#(\d+)/.exec(t.output??"");return n?Number(n[1]):null}const Zde={task:Kde,waveBox:Xde},TA="sps.flow.lastProject",AA="sps.flow.mode";function jA(e){return(e.labels??[]).includes("NEEDS-FIX")?"stuck":e.state==="Done"?"done":e.state==="Inprogress"?"doing":"todo"}function Jde(e){return e==="done"?{animated:!1,style:{stroke:"var(--color-running)",strokeWidth:2.5}}:e==="doing"?{animated:!1,className:"arrange-flow-edge-working",style:{stroke:"var(--color-running)",strokeWidth:3,strokeDasharray:"8 6"}}:e==="stuck"?{animated:!1,style:{stroke:"var(--color-crashed)",strokeWidth:2.5,strokeDasharray:"6 4"}}:{animated:!1,style:{stroke:"var(--color-accent-yellow)",strokeWidth:2.5,strokeDasharray:"6 4"}}}const ll=260,cl=158,jm=28,vp=ll+120,Kx=cl+28,MA=16,RA=44,wp=60,Gx=100,DA=["var(--color-accent-mint)","var(--color-accent-pink)","var(--color-accent-yellow)","var(--color-accent-purple)","var(--color-running-bg)","var(--color-idle-bg)"];function dd(e){const t=new Map;for(const n of e){const i=t.get(n.order)??[];i.push(n),t.set(n.order,i)}return[...t.entries()].sort((n,i)=>n[0]-i[0]).map(([,n])=>n.sort((i,s)=>i.seq-s.seq))}function efe(e,t){return Math.abs(e.x-t.x)<ll+jm&&Math.abs(e.y-t.y)<cl+jm}function tfe(e){for(let t=0;t<80;t+=1)for(let n=0;n<8;n+=1){const i={x:60+n*(ll+jm),y:60+t*(cl+jm)};if(!e.some(s=>efe(i,s)))return i}return{x:60,y:60}}function OA(e){return{x:e.position.x+ll/2,y:e.position.y+cl/2}}function nfe(e,t,n){const i=n.x-t.x,s=n.y-t.y,r=i*i+s*s;if(r===0)return Math.hypot(e.x-t.x,e.y-t.y);let o=((e.x-t.x)*i+(e.y-t.y)*s)/r;return o=Math.max(0,Math.min(1,o)),Math.hypot(e.x-(t.x+o*i),e.y-(t.y+o*s))}function ife(){var ye,Je,It,Wt;const e=Xe(),t=tn(),n=bl(),{confirm:i}=Bn(),{screenToFlowPosition:s,fitView:r}=yg(),o=_.useRef([]),[c,u]=_.useState(()=>localStorage.getItem(TA)??""),[f,p]=_.useState(()=>localStorage.getItem(AA)==="lanes"?"lanes":"free"),[m,y]=_.useState(!1),[b,x,v]=pde([]),[w,k,C]=mde([]),[S,T]=_.useState(null),[A,j]=_.useState(null),[M,D]=_.useState(!1),[P,I]=_.useState(""),[B,q]=_.useState(null),[G,R]=_.useState(null),[O,z]=_.useState(0),W=_.useRef({}),X=_.useRef(w);X.current=w;const K=_.useRef(b);K.current=b;const U=_.useRef(null),F=_.useRef(null),Y=_.useRef(new Set),$=_.useRef(""),ie=_.useRef(null);qL(c||null);const be=ot({queryKey:["cards",c],queryFn:()=>BL(c),enabled:!!c,refetchInterval:3e3}),ce=((ye=be.data)==null?void 0:ye.data)??[],oe=((Wt=(It=(Je=ot({queryKey:["projects"],queryFn:fo,refetchInterval:3e3}).data)==null?void 0:Je.data)==null?void 0:It.find(he=>he.name===c))==null?void 0:Wt.pipelineStatus)==="running",pe=_.useMemo(()=>{const he={};for(const le of ce)he[String(le.seq)]=jA(le);return he},[ce]),re=_.useMemo(()=>{if(f!=="lanes")return[];const he=dd(ce),le=[];for(let Te=1;Te<he.length;Te+=1)for(const Ae of he[Te-1]??[])for(const Qe of he[Te]??[])le.push({id:`w${Ae.seq}-${Qe.seq}`,source:String(Ae.seq),target:String(Qe.seq),sourceHandle:"r",targetHandle:"l",animated:!1,selectable:!1,deletable:!1});return le},[f,ce]),ee=_.useMemo(()=>(f==="lanes"?re:w).map(he=>{const le=Jde(pe[he.target]);return he.selected?{...he,...le,style:{...le.style,strokeWidth:6}}:{...he,...le}}),[f,re,w,pe]),ge=_.useCallback(()=>{t.invalidateQueries({queryKey:["cards",c]})},[t,c]),Ce=_.useCallback(()=>{!c||U.current!==c||(ie.current&&clearTimeout(ie.current),ie.current=setTimeout(()=>{Hde(c,{positions:W.current,edges:X.current.map(he=>({id:he.id,source:he.source,target:he.target,sourceHandle:he.sourceHandle??null,targetHandle:he.targetHandle??null}))}).catch(()=>{})},600))},[c]);_.useEffect(()=>{if(U.current=null,T(null),R(null),W.current={},Y.current=new Set,$.current="",x([]),k([]),!c)return;localStorage.setItem(TA,c);let he=!1;return qde(c).then(le=>{he||(W.current=le.positions??{},k((le.edges??[]).map(Te=>({id:Te.id,source:Te.source,target:Te.target,sourceHandle:Te.sourceHandle??void 0,targetHandle:Te.targetHandle??void 0,animated:!1}))))}).catch(()=>{}).finally(()=>{he||(U.current=c,z(le=>le+1))}),()=>{he=!0}},[c,x,k]),_.useEffect(()=>{if(!c||U.current!==c)return;const he=`${f}|`+ce.map($e=>`${$e.seq}:${$e.title}:${$e.state}:${$e.order}:${($e.skills??[]).join("|")}`).join(",");if(he===$.current)return;$.current=he;const le=$e=>({seq:String($e.seq),title:$e.title,skills:($e.skills??[]).join(", "),status:jA($e),label:$e.title,desc:""});if(f==="lanes"){const $e=dd(ce),nt=$e.map((Xt,Dt)=>({id:`wave-${Dt}`,type:"waveBox",position:{x:wp+Dt*vp-MA,y:Gx-RA},data:{label:e("flow.lane.wave",{n:Dt+1}),sub:Xt.length>1?e("flow.lane.parallel",{n:Xt.length}):"",color:DA[Dt%DA.length]},style:{width:ll+MA*2,height:RA+(Xt.length-1)*Kx+cl+14},draggable:!1,selectable:!1,zIndex:0})),qt=$e.flatMap((Xt,Dt)=>Xt.map((Q,we)=>({id:String(Q.seq),type:"task",position:{x:wp+Dt*vp,y:Gx+we*Kx},deletable:!1,zIndex:1,data:le(Q)})));x([...nt,...qt]);return}const Te=new Map(K.current.map($e=>[$e.id,$e.position])),Ae=[];for(const $e of ce){const nt=Te.get(String($e.seq))??W.current[String($e.seq)];nt&&Ae.push(nt)}let Qe=!1;const st=ce.map($e=>{const nt=String($e.seq);let qt=Te.get(nt)??W.current[nt];return qt||(qt=tfe(Ae),Ae.push(qt),Qe=!0),W.current[nt]=qt,{id:nt,type:"task",position:qt,deletable:!1,data:le($e)}});x(st),Qe&&Ce()},[ce,c,f,O,x,Ce,e]),_.useEffect(()=>{if(U.current!==c)return;const he=new Set(ce.map(le=>String(le.seq)));k(le=>{const Te=le.filter(Ae=>he.has(Ae.source)&&he.has(Ae.target));return Te.length!==le.length&&Ce(),Te.length===le.length?le:Te})},[ce,c,k,Ce]),_.useEffect(()=>{if(!c||U.current!==c||f!=="free"||ce.length<2)return;const he=dd(ce),le=[];for(let Qe=1;Qe<he.length;Qe+=1)for(const st of he[Qe-1]??[])for(const $e of he[Qe]??[])le.push({id:`seed-${st.seq}-${$e.seq}`,source:String(st.seq),target:String($e.seq),sourceHandle:"r",targetHandle:"l",animated:!1});const Te=X.current,Ae=F.current!==c;if(F.current=c,Ae&&Te.length===0)le.length>0&&(k(le),Ce());else{const Qe=new Set;for(const nt of Te)Qe.add(nt.source),Qe.add(nt.target);const st=new Set(Te.map(nt=>`${nt.source}->${nt.target}`)),$e=new Set(ce.map(nt=>String(nt.seq)).filter(nt=>!Y.current.has(nt)&&!Qe.has(nt)));if($e.size>0){const nt=le.filter(qt=>($e.has(qt.source)||$e.has(qt.target))&&!st.has(`${qt.source}->${qt.target}`));nt.length>0&&(k([...Te,...nt]),Ce())}}Y.current=new Set(ce.map(Qe=>String(Qe.seq)))},[ce,c,f,O,k,Ce]);const Ie=_.useCallback(he=>{if(v(he),f!=="free")return;let le=!1;for(const Te of he)Te.type==="position"&&Te.position&&(W.current[Te.id]=Te.position,le=!0);le&&Ce()},[v,Ce,f]),ae=_.useCallback(he=>{f==="free"&&(k(le=>yP({...he,animated:!1},le)),Ce())},[k,Ce,f]),ke=_.useCallback(()=>{if(f!=="free"||ce.length===0)return;const he=dd(ce),le={},Te=[];he.forEach((Ae,Qe)=>{if(Ae.forEach((st,$e)=>{le[String(st.seq)]={x:wp+Qe*vp,y:Gx+$e*Kx}}),Qe>0)for(const st of he[Qe-1]??[])for(const $e of Ae)Te.push({id:`seed-${st.seq}-${$e.seq}`,source:String(st.seq),target:String($e.seq),sourceHandle:"r",targetHandle:"l",animated:!1})}),W.current={...W.current,...le},x(Ae=>Ae.map(Qe=>le[Qe.id]?{...Qe,position:le[Qe.id]}:Qe)),k(Te),Ce(),setTimeout(()=>r({padding:.2,duration:300}),60)},[f,ce,x,k,Ce,r]),Ue=_.useCallback(async he=>{if(!await i({title:e("flow.confirm.deleteTitle"),body:e("flow.confirm.deleteBody",{seq:he}),danger:!0,confirm:e("flow.node.delete")}))return;I("");const Te=X.current.filter(Ae=>Ae.source===String(he)||Ae.target===String(he)).map(Ae=>({...Ae}));try{await FL(c,he),o.current.push({seq:he,edges:Te})}catch(Ae){I(Ae instanceof Error?Ae.message:String(Ae))}finally{T(Ae=>Ae===he?null:Ae),j(Ae=>Ae===he?null:Ae),$.current="",z(Ae=>Ae+1),ge()}},[c,i,e,ge]),Oe=_.useCallback(async()=>{const he=o.current.pop();if(he){I("");try{await Xne(c,he.seq),k(le=>{const Te=new Set(le.map(Ae=>Ae.id));return[...le,...he.edges.filter(Ae=>!Te.has(Ae.id))]}),Ce(),ge()}catch(le){I(le instanceof Error?le.message:String(le))}}},[c,k,Ce,ge]),ht=_.useCallback((he,le)=>{var st;if(f!=="free"||le.isValid)return;const Te=le.fromNode;if(!Te||!c)return;const Ae="changedTouches"in he?he.changedTouches[0]:he;if(!Ae)return;const Qe=s({x:Ae.clientX,y:Ae.clientY});q({fromId:Te.id,fromHandle:((st=le.fromHandle)==null?void 0:st.id)??null,clientX:Ae.clientX,clientY:Ae.clientY,flowX:Qe.x,flowY:Qe.y})},[f,c,s]),tt=_.useCallback(async()=>{const he=B;if(q(null),!(!he||!c))try{const le=await hv(c,{title:`${e("flow.node.default")} ${ce.length+1}`,initialState:"Planning"}),Te=Qde(le);if(Te==null)return;const Ae=String(Te);W.current[Ae]={x:he.flowX-ll/2,y:he.flowY-cl/2},k(Qe=>[...Qe,{id:`e-${he.fromId}-${Ae}-drop`,source:he.fromId,target:Ae,sourceHandle:he.fromHandle??void 0,animated:!1}]),Ce(),ge()}catch(le){I(le instanceof Error?le.message:String(le))}},[B,c,ce.length,k,Ce,e,ge]);_.useEffect(()=>{if(!B)return;const he=le=>{le.key==="Escape"&&q(null)};return window.addEventListener("keydown",he),()=>window.removeEventListener("keydown",he)},[B]);const jt=_.useCallback((he,le)=>{f==="free"&&(k(Te=>qce(he,le,Te)),Ce())},[f,k,Ce]);_.useEffect(()=>{const he=le=>{if(le.key!=="Delete"&&le.key!=="Backspace"||A!=null)return;const Te=le.target;Te&&(Te.tagName==="INPUT"||Te.tagName==="TEXTAREA"||Te.isContentEditable)||S!=null&&(le.preventDefault(),Ue(S))};return window.addEventListener("keydown",he),()=>window.removeEventListener("keydown",he)},[S,A,Ue]),_.useEffect(()=>{const he=le=>{if(!(le.metaKey||le.ctrlKey)||le.key!=="z"&&le.key!=="Z"||A!=null)return;const Te=le.target;Te&&(Te.tagName==="INPUT"||Te.tagName==="TEXTAREA"||Te.isContentEditable)||(le.preventDefault(),Oe())};return window.addEventListener("keydown",he),()=>window.removeEventListener("keydown",he)},[A,Oe]);const Nt=_.useCallback(async he=>{if(c){y(!0),I("");try{const le=new Map(ce.map(Te=>[Te.seq,Te.order]));for(let Te=0;Te<he.length;Te+=1)for(const Ae of he[Te]??[])le.get(Ae)!==Te+1&&await bm(c,Ae,{order:Te+1});ge()}catch(le){I(le instanceof Error?le.message:String(le))}finally{y(!1)}}},[c,ce,ge]),pt=_.useCallback(he=>{const le=Number(he.id);if(!Number.isInteger(le))return;const Te=dd(ce).map($e=>$e.map(nt=>nt.seq)),Ae=(he.position.x-wp)/vp,Qe=Math.round(Ae),st=Te.map($e=>$e.filter(nt=>nt!==le));if(Qe>=0&&Qe<Te.length&&Math.abs(Ae-Qe)<=.35)st[Qe].push(le);else{const $e=Math.max(0,Math.min(st.length,Math.ceil(Ae)));st.splice($e,0,[le])}Nt(st.filter($e=>$e.length>0)).finally(()=>{$.current="",z($e=>$e+1)})},[ce,Nt]),Me=_.useCallback((he,le)=>{if(f==="lanes"){pt(le);return}const Te=new Map(K.current.map(nt=>[nt.id,nt])),Ae={x:le.position.x+ll/2,y:le.position.y+cl/2};let Qe=null,st=40;for(const nt of X.current){if(nt.source===le.id||nt.target===le.id)continue;const qt=Te.get(nt.source),Xt=Te.get(nt.target);if(!qt||!Xt)continue;const Dt=nfe(Ae,OA(qt),OA(Xt));Dt<st&&(st=Dt,Qe=nt)}if(!Qe)return;const $e=Qe;k(nt=>[...nt.filter(qt=>qt.id!==$e.id),{id:`e-${$e.source}-${le.id}-${$e.id}`,source:$e.source,target:le.id,animated:!1},{id:`e-${le.id}-${$e.target}-${$e.id}`,source:le.id,target:$e.target,animated:!1}]),Ce()},[f,pt,k,Ce]),We=_.useCallback(he=>{p(he),localStorage.setItem(AA,he)},[]);_.useEffect(()=>{const he=setTimeout(()=>{r({padding:.2,duration:300})},80);return()=>clearTimeout(he)},[f,r]);const ne=async()=>{if(c){I("");try{await hv(c,{title:`${e("flow.node.default")} ${ce.length+1}`,initialState:"Planning"}),ge()}catch(he){I(he instanceof Error?he.message:String(he))}}},ve=async()=>{if(I(""),R(null),!c)return I(e("flow.err.noProject"));if(ce.length===0)return I(e("flow.err.noNodes"));D(!0);try{const he=ce.filter(Ae=>Ae.state==="Planning"),le=he.length;let Te=0;R({phase:"creating",made:Te,total:le});for(const Ae of he)await bm(c,Ae.seq,{state:"Backlog",labels:Array.from(new Set([...Ae.labels??[],"AI-PIPELINE"]))}),Te+=1,R({phase:"creating",made:Te,total:le});R({phase:"starting",made:Te,total:le}),await $L(c),ge(),R({phase:"done",made:Te,total:le})}catch(he){I(he instanceof Error?he.message:String(he))}finally{D(!1)}},Re=be.isLoading&&!!c;return d.jsxs("div",{className:"flex flex-col h-full",children:[d.jsxs("header",{className:"flex items-center gap-3 flex-wrap px-4 py-3 border-b border-[var(--surface-card-border)]",children:[d.jsxs("h1",{className:"text-lg font-[family-name:var(--font-heading)] flex items-center gap-2",children:[d.jsx(HN,{size:18,strokeWidth:2.4}),e("nav.arrange")]}),d.jsx(KL,{current:c,onChange:u}),d.jsxs("div",{className:"flex gap-1",role:"group","aria-label":e("flow.mode.aria"),children:[d.jsxs("button",{type:"button",className:["nb-btn",f==="free"?"nb-btn-primary":""].join(" "),"aria-pressed":f==="free",onClick:()=>We("free"),children:[d.jsx(HN,{size:14,strokeWidth:2.4})," ",e("flow.mode.free")]}),d.jsxs("button",{type:"button",className:["nb-btn",f==="lanes"?"nb-btn-primary":""].join(" "),"aria-pressed":f==="lanes",onClick:()=>We("lanes"),children:[d.jsx(iU,{size:14,strokeWidth:2.4})," ",e("flow.mode.lanes")]})]}),Re&&d.jsx(mt,{size:15,className:"animate-spin text-[var(--color-text-muted)]"}),d.jsxs("button",{type:"button",className:"nb-btn",onClick:()=>void ne(),disabled:!c||Re,children:[d.jsx(Gn,{size:15,strokeWidth:2.4})," ",e("flow.addNode")]}),d.jsxs("button",{type:"button",className:"nb-btn nb-btn-cta ml-auto",onClick:()=>void ve(),disabled:M||oe||Re||!c,title:oe?e("flow.pipelineRunning"):void 0,children:[M||oe?d.jsx(mt,{size:15,className:"animate-spin"}):d.jsx(Dm,{size:15,strokeWidth:2.4}),e(M?"flow.running":oe?"flow.pipelineRunning":"flow.run")]})]}),!c&&d.jsx("div",{className:"px-4 py-2 text-sm text-[var(--color-text-muted)] border-b border-[var(--surface-card-border)]",children:e("flow.pickProject")}),P&&d.jsx("div",{className:"px-4 py-2 text-sm text-[var(--color-crashed)] bg-[var(--color-crashed-bg)] border-b border-[var(--surface-card-border)]",children:P}),G&&d.jsxs("div",{className:"px-4 py-2 text-sm flex items-center gap-3 bg-[var(--surface-input)] border-b border-[var(--surface-card-border)]",children:[G.phase==="creating"&&d.jsxs("span",{children:[e("flow.status.creating")," ",G.made,"/",G.total,"…"]}),G.phase==="starting"&&d.jsx("span",{children:e("flow.status.starting")}),G.phase==="done"&&d.jsxs(d.Fragment,{children:[d.jsxs("span",{className:"text-[var(--color-running)] font-bold",children:["✓ ",e("flow.status.done").replace("{n}",String(G.made))]}),d.jsx("button",{type:"button",className:"nb-btn nb-btn-blue",onClick:()=>n(`/board?project=${encodeURIComponent(c)}`),children:e("flow.goBoard")})]})]}),d.jsx("div",{className:"flex-1 min-h-0 arrange-flow-shell",children:d.jsxs(hde,{nodes:b,edges:ee,nodeTypes:Zde,connectionRadius:160,nodesConnectable:f==="free",edgesReconnectable:f==="free",deleteKeyCode:A!=null?null:["Delete","Backspace"],onNodesChange:Ie,onEdgesChange:he=>{f==="free"&&(C(he),Ce())},onConnect:ae,onConnectEnd:ht,onReconnect:jt,onNodeClick:(he,le)=>{const Te=Number(le.id);Number.isInteger(Te)&&j(Te)},onNodeDragStop:Me,onSelectionChange:({nodes:he})=>{const le=he[0]?Number(he[0].id):null;T(le!=null&&Number.isInteger(le)?le:null)},fitView:!0,children:[d.jsx(vde,{variant:la.Dots,gap:18,size:1}),d.jsx(Cde,{children:f==="free"&&d.jsx(xd,{onClick:ke,title:e("flow.tidy"),"aria-label":e("flow.tidy"),children:d.jsx(Pj,{size:14,strokeWidth:2.4})})})]})}),B&&d.jsx("div",{className:"fixed inset-0 z-30",onClick:()=>q(null),children:d.jsxs("button",{type:"button",className:"nb-btn nb-btn-cta absolute -translate-x-1/2 -translate-y-1/2",style:{left:B.clientX,top:B.clientY},onClick:he=>{he.stopPropagation(),tt()},children:[d.jsx(Gn,{size:14,strokeWidth:2.4})," ",e("flow.pending.create")]})}),m&&d.jsxs("div",{className:"px-4 py-1 text-xs text-[var(--color-text-muted)] border-t border-[var(--surface-card-border)] flex items-center gap-2",children:[d.jsx(mt,{size:12,className:"animate-spin"})," ",e("flow.lane.applying")]}),d.jsx("footer",{className:"px-4 py-2 text-xs text-[var(--color-text-muted)] border-t border-[var(--surface-card-border)]",children:e(f==="free"?"flow.hint":"flow.lane.hint")}),A!=null&&c&&d.jsx(Yde,{project:c,seq:A,onClose:()=>j(null),onChanged:ge,onDelete:he=>void Ue(he)})]})}function sfe(){return d.jsx(qP,{children:d.jsx(ife,{})})}function rfe(){const e=Xe();return d.jsxs("div",{className:"nb-card max-w-2xl mt-12",children:[d.jsx("h1",{className:"font-[family-name:var(--font-heading)] text-4xl font-bold mb-2",children:e("notFound.title")}),d.jsx("p",{className:"text-[var(--color-text-muted)] mb-6",children:e("notFound.body")}),d.jsx(zc,{to:"/",className:"nb-btn nb-btn-mint inline-flex",children:e("notFound.home")})]})}const afe=_.lazy(()=>_B(()=>import("./ShowcasePage-FkklfWaz.js"),__vite__mapDeps([0,1])));function ofe(){return d.jsx(wF,{children:d.jsxs(H5,{children:[d.jsx(oi,{path:"/showcase",element:d.jsx(_.Suspense,{fallback:null,children:d.jsx(afe,{})})}),d.jsxs(oi,{element:d.jsx(WN,{contentMode:"workspace"}),children:[d.jsx(oi,{index:!0,element:d.jsx(bx,{})}),d.jsx(oi,{path:"/projects",element:d.jsx(fT,{})}),d.jsx(oi,{path:"/projects/:name",element:d.jsx(fT,{})}),d.jsx(oi,{path:"/board",element:d.jsx(yie,{})}),d.jsx(oi,{path:"/prompts",element:d.jsx(Mie,{})}),d.jsx(oi,{path:"/chat",element:d.jsx(bx,{})}),d.jsx(oi,{path:"/chat/:sessionId",element:d.jsx(bx,{})}),d.jsx(oi,{path:"/arrange",element:d.jsx(sfe,{})})]}),d.jsxs(oi,{element:d.jsx(WN,{contentMode:"document"}),children:[d.jsx(oi,{path:"/projects/new",element:d.jsx(zL,{})}),d.jsx(oi,{path:"/skills",element:d.jsx(Sie,{})}),d.jsx(oi,{path:"/system",element:d.jsx(Yie,{})}),d.jsx(oi,{path:"/memory",element:d.jsx(ose,{})}),d.jsx(oi,{path:"/plugins",element:d.jsx(wse,{})}),d.jsx(oi,{path:"*",element:d.jsx(rfe,{})})]})]})})}vF();G6();const lfe=new R4({defaultOptions:{queries:{staleTime:3e4,refetchOnWindowFocus:!1}}}),GP=document.getElementById("root");if(!GP)throw new Error("#root not found");o4.createRoot(GP).render(d.jsx(_.StrictMode,{children:d.jsx(P6,{children:d.jsx(D4,{client:lfe,children:d.jsx(mB,{children:d.jsx(oY,{children:d.jsx(ofe,{})})})})})}));export{Tj as A,eU as C,Dj as E,zc as L,Wv as P,f0 as S,LB as a,Be as c,d as j,_ as r,Kj as u};
|
|
845
|
+
`).trim()}function Wde(e,t){return t.includes("NEEDS-FIX")?"stuck":e==="Done"?"done":e==="Inprogress"?"doing":"todo"}function Yde({project:e,seq:t,onClose:n,onChanged:i,onDelete:s}){var G;const r=Xe(),[o,c]=_.useState(!0),[u,f]=_.useState(!1),[p,m]=_.useState(""),[y,b]=_.useState(""),[x,v]=_.useState(new Set),[w,k]=_.useState(""),[C,S]=_.useState("todo"),[T,A]=_.useState(null),[j,M]=_.useState(""),D=ot({queryKey:["skills-all",e],queryFn:()=>sg(e)}),P=((G=D.data)==null?void 0:G.data)??[];_.useEffect(()=>{const R=O=>{O.key==="Escape"&&n()};return window.addEventListener("keydown",R),()=>window.removeEventListener("keydown",R)},[n]),_.useEffect(()=>{let R=!1;return c(!0),UL(e,t).then(O=>{R||(m(O.title),v(new Set(O.skills??[])),b(Gde(O.body)),k(O.state),S(Wde(O.state,O.labels??[])),A(typeof O.order=="number"?O.order:null))}).catch(()=>{}).finally(()=>{R||c(!1)}),()=>{R=!0}},[e,t]);const I=R=>{v(O=>{const z=new Set(O);return z.has(R)?z.delete(R):z.add(R),z})},B=async()=>{M(""),f(!0);try{await bm(e,t,{title:p.trim()||r("flow.node.default"),description:y,skills:[...x]}),i(),n()}catch(R){M(R instanceof Error?R.message:String(R)),f(!1)}},q=()=>s(t);return d.jsx("div",{role:"dialog","aria-modal":"true",className:"fixed inset-0 z-40 flex items-center justify-center p-4 md:p-6 bg-black/30 overflow-hidden",onClick:n,children:d.jsxs("div",{className:"nb-card w-full max-w-4xl flex flex-col bg-[var(--color-bg)]",style:{maxHeight:"calc(100vh - 48px)"},onClick:R=>R.stopPropagation(),children:[d.jsxs("header",{className:"flex items-start justify-between gap-4 mb-4 flex-shrink-0",children:[d.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[d.jsxs("span",{className:"font-[family-name:var(--font-mono)] font-bold text-xs px-2 py-0.5 bg-[var(--color-accent-purple)] border-2 border-[var(--color-text)] rounded-full",children:["#",t]}),w&&d.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs px-2 py-0.5 border-2 border-[var(--color-text)] rounded-full font-semibold",children:[d.jsx("span",{className:"w-2.5 h-2.5 rounded-full inline-block border border-[var(--color-text)]",style:{background:Mv[C]??"gray"}}),w]}),T!=null&&d.jsx("span",{className:"font-[family-name:var(--font-mono)] text-xs px-2 py-0.5 bg-[var(--color-accent-mint)] border-2 border-[var(--color-text)] rounded-full font-semibold",title:r("flow.lane.orderTip"),children:r("flow.lane.wave",{n:T})})]}),d.jsx("button",{onClick:n,className:"nb-btn nb-btn-mint p-2 flex-shrink-0","aria-label":r("flow.node.close"),type:"button",children:d.jsx(En,{size:14,strokeWidth:3})})]}),o?d.jsxs("div",{className:"flex items-center gap-2 text-sm text-[var(--color-text-muted)] py-10 justify-center",children:[d.jsx(mt,{size:16,className:"animate-spin"})," …"]}):d.jsxs(d.Fragment,{children:[j&&d.jsx("div",{className:"text-sm text-[var(--color-crashed)] mb-3",children:j}),d.jsxs("div",{className:"grid min-h-0 flex-1 grid-cols-1 gap-4 overflow-y-auto pr-1 md:grid-cols-[minmax(0,1fr)_minmax(260px,340px)] md:overflow-hidden md:pr-0",children:[d.jsxs("div",{className:"flex min-h-0 flex-col gap-4 md:overflow-y-auto md:pr-1",children:[d.jsxs("label",{className:"flex flex-col gap-1.5",children:[d.jsx("span",{className:"text-sm font-bold",children:r("flow.node.title")}),d.jsx("input",{className:"nb-input w-full text-base font-semibold",value:p,onChange:R=>m(R.target.value),autoFocus:!0})]}),d.jsxs("label",{className:"flex flex-1 min-h-0 flex-col gap-1.5",children:[d.jsx("span",{className:"text-sm font-bold",children:r("flow.node.desc")}),d.jsx("textarea",{className:"nb-input w-full flex-1 min-h-0",style:{minHeight:200,resize:"vertical"},value:y,onChange:R=>b(R.target.value)})]})]}),d.jsxs("section",{className:"flex min-h-[200px] flex-col gap-2 md:min-h-0 md:overflow-hidden",children:[d.jsx("span",{className:"text-sm font-bold",children:r("flow.node.skills")}),d.jsx("div",{className:"scroll-frame min-h-0 flex-1 rounded-lg border-2 border-[var(--color-border-light)] bg-[var(--color-bg-cream)]",children:d.jsxs("div",{className:"scroll-frame-body h-full p-2",children:[D.isLoading&&d.jsx(mt,{size:14,className:"animate-spin text-[var(--color-text-muted)]"}),P.length>0&&d.jsx("div",{className:"flex flex-wrap gap-2",children:P.map(R=>{const O=x.has(R.name);return d.jsx("button",{type:"button",onClick:()=>I(R.name),className:["max-w-full break-all px-2.5 py-1 text-left text-xs font-[family-name:var(--font-mono)] rounded-full border-2 transition-all",O?"bg-[var(--color-accent-mint)] border-[var(--color-text)] shadow-[2px_2px_0_var(--color-text)] font-bold":"bg-[var(--color-bg)] border-[var(--color-border-light)] hover:border-[var(--color-text)]"].join(" "),"aria-pressed":O,children:R.name},R.name)})})]})}),x.size>0&&d.jsx("p",{className:"max-h-14 overflow-y-auto break-words text-xs text-[var(--color-text-muted)]",children:[...x].join(", ")})]})]}),d.jsxs("div",{className:"flex gap-2 justify-between mt-4 pt-3 border-t-2 border-dashed border-[var(--color-text)] flex-shrink-0",children:[d.jsxs("button",{type:"button",className:"nb-btn nb-btn-danger",onClick:()=>void q(),disabled:u,children:[d.jsx(Rs,{size:14,strokeWidth:2.4})," ",r("flow.node.delete")]}),d.jsxs("button",{type:"button",className:"nb-btn nb-btn-cta",onClick:()=>void B(),disabled:u,children:[u?d.jsx(mt,{size:14,className:"animate-spin"}):null,r("flow.node.save")]})]})]})]})})}const Xde=_.memo(function({data:t}){const n=t;return d.jsxs("div",{className:"relative w-full h-full rounded-2xl border-2 border-dashed border-[var(--color-text)]",children:[d.jsx("div",{className:"absolute inset-0 rounded-2xl",style:{background:n.color,opacity:.16}}),d.jsxs("span",{className:"absolute top-1.5 left-2.5 inline-flex items-center gap-1.5 px-2 py-0.5 text-[11px] font-bold rounded-md border-2 border-[var(--color-text)] bg-[var(--color-bg)] text-[var(--color-text)] whitespace-nowrap max-w-[90%]",children:[d.jsx("span",{className:"truncate",children:n.label}),n.sub&&d.jsx("span",{className:"font-normal text-[var(--color-text-muted)]",children:n.sub})]})]})});function Qde(e){const t=e;if(typeof t.seq=="number")return t.seq;const n=/#(\d+)/.exec(t.output??"");return n?Number(n[1]):null}const Zde={task:Kde,waveBox:Xde},TA="sps.flow.lastProject",AA="sps.flow.mode";function jA(e){return(e.labels??[]).includes("NEEDS-FIX")?"stuck":e.state==="Done"?"done":e.state==="Inprogress"?"doing":"todo"}function Jde(e){return e==="done"?{animated:!1,style:{stroke:"var(--color-running)",strokeWidth:2.5}}:e==="doing"?{animated:!1,className:"arrange-flow-edge-working",style:{stroke:"var(--color-running)",strokeWidth:3,strokeDasharray:"8 6"}}:e==="stuck"?{animated:!1,style:{stroke:"var(--color-crashed)",strokeWidth:2.5,strokeDasharray:"6 4"}}:{animated:!1,style:{stroke:"var(--color-accent-yellow)",strokeWidth:2.5,strokeDasharray:"6 4"}}}const ll=260,cl=158,jm=28,vp=ll+120,Kx=cl+28,MA=16,RA=44,wp=60,Gx=100,DA=["var(--color-accent-mint)","var(--color-accent-pink)","var(--color-accent-yellow)","var(--color-accent-purple)","var(--color-running-bg)","var(--color-idle-bg)"];function dd(e){const t=new Map;for(const n of e){const i=t.get(n.order)??[];i.push(n),t.set(n.order,i)}return[...t.entries()].sort((n,i)=>n[0]-i[0]).map(([,n])=>n.sort((i,s)=>i.seq-s.seq))}function efe(e,t){return Math.abs(e.x-t.x)<ll+jm&&Math.abs(e.y-t.y)<cl+jm}function tfe(e){for(let t=0;t<80;t+=1)for(let n=0;n<8;n+=1){const i={x:60+n*(ll+jm),y:60+t*(cl+jm)};if(!e.some(s=>efe(i,s)))return i}return{x:60,y:60}}function OA(e){return{x:e.position.x+ll/2,y:e.position.y+cl/2}}function nfe(e,t,n){const i=n.x-t.x,s=n.y-t.y,r=i*i+s*s;if(r===0)return Math.hypot(e.x-t.x,e.y-t.y);let o=((e.x-t.x)*i+(e.y-t.y)*s)/r;return o=Math.max(0,Math.min(1,o)),Math.hypot(e.x-(t.x+o*i),e.y-(t.y+o*s))}function ife(){var ye,Je,It,Wt;const e=Xe(),t=tn(),n=bl(),{confirm:i}=Bn(),{screenToFlowPosition:s,fitView:r}=yg(),o=_.useRef([]),[c,u]=_.useState(()=>localStorage.getItem(TA)??""),[f,p]=_.useState(()=>localStorage.getItem(AA)==="lanes"?"lanes":"free"),[m,y]=_.useState(!1),[b,x,v]=pde([]),[w,k,C]=mde([]),[S,T]=_.useState(null),[A,j]=_.useState(null),[M,D]=_.useState(!1),[P,I]=_.useState(""),[B,q]=_.useState(null),[G,R]=_.useState(null),[O,z]=_.useState(0),W=_.useRef({}),X=_.useRef(w);X.current=w;const K=_.useRef(b);K.current=b;const U=_.useRef(null),F=_.useRef(null),Y=_.useRef(new Set),$=_.useRef(""),ie=_.useRef(null);qL(c||null);const be=ot({queryKey:["cards",c],queryFn:()=>BL(c),enabled:!!c,refetchInterval:3e3}),ce=((ye=be.data)==null?void 0:ye.data)??[],oe=((Wt=(It=(Je=ot({queryKey:["projects"],queryFn:fo,refetchInterval:3e3}).data)==null?void 0:Je.data)==null?void 0:It.find(he=>he.name===c))==null?void 0:Wt.pipelineStatus)==="running",pe=_.useMemo(()=>{const he={};for(const le of ce)he[String(le.seq)]=jA(le);return he},[ce]),re=_.useMemo(()=>{if(f!=="lanes")return[];const he=dd(ce),le=[];for(let Te=1;Te<he.length;Te+=1)for(const Ae of he[Te-1]??[])for(const Qe of he[Te]??[])le.push({id:`w${Ae.seq}-${Qe.seq}`,source:String(Ae.seq),target:String(Qe.seq),sourceHandle:"r",targetHandle:"l",animated:!1,selectable:!1,deletable:!1});return le},[f,ce]),ee=_.useMemo(()=>(f==="lanes"?re:w).map(he=>{const le=Jde(pe[he.target]);return he.selected?{...he,...le,style:{...le.style,strokeWidth:6}}:{...he,...le}}),[f,re,w,pe]),ge=_.useCallback(()=>{t.invalidateQueries({queryKey:["cards",c]})},[t,c]),Ce=_.useCallback(()=>{!c||U.current!==c||(ie.current&&clearTimeout(ie.current),ie.current=setTimeout(()=>{Hde(c,{positions:W.current,edges:X.current.map(he=>({id:he.id,source:he.source,target:he.target,sourceHandle:he.sourceHandle??null,targetHandle:he.targetHandle??null}))}).catch(()=>{})},600))},[c]);_.useEffect(()=>{if(U.current=null,T(null),R(null),W.current={},Y.current=new Set,$.current="",x([]),k([]),!c)return;localStorage.setItem(TA,c);let he=!1;return qde(c).then(le=>{he||(W.current=le.positions??{},k((le.edges??[]).map(Te=>({id:Te.id,source:Te.source,target:Te.target,sourceHandle:Te.sourceHandle??void 0,targetHandle:Te.targetHandle??void 0,animated:!1}))))}).catch(()=>{}).finally(()=>{he||(U.current=c,z(le=>le+1))}),()=>{he=!0}},[c,x,k]),_.useEffect(()=>{if(!c||U.current!==c)return;const he=`${f}|`+ce.map($e=>`${$e.seq}:${$e.title}:${$e.state}:${$e.order}:${($e.skills??[]).join("|")}`).join(",");if(he===$.current)return;$.current=he;const le=$e=>({seq:String($e.seq),title:$e.title,skills:($e.skills??[]).join(", "),status:jA($e),label:$e.title,desc:""});if(f==="lanes"){const $e=dd(ce),nt=$e.map((Xt,Dt)=>({id:`wave-${Dt}`,type:"waveBox",position:{x:wp+Dt*vp-MA,y:Gx-RA},data:{label:e("flow.lane.wave",{n:Dt+1}),sub:Xt.length>1?e("flow.lane.parallel",{n:Xt.length}):"",color:DA[Dt%DA.length]},style:{width:ll+MA*2,height:RA+(Xt.length-1)*Kx+cl+14},draggable:!1,selectable:!1,zIndex:0})),qt=$e.flatMap((Xt,Dt)=>Xt.map((Q,we)=>({id:String(Q.seq),type:"task",position:{x:wp+Dt*vp,y:Gx+we*Kx},deletable:!1,zIndex:1,data:le(Q)})));x([...nt,...qt]);return}const Te=new Map(K.current.map($e=>[$e.id,$e.position])),Ae=[];for(const $e of ce){const nt=Te.get(String($e.seq))??W.current[String($e.seq)];nt&&Ae.push(nt)}let Qe=!1;const st=ce.map($e=>{const nt=String($e.seq);let qt=Te.get(nt)??W.current[nt];return qt||(qt=tfe(Ae),Ae.push(qt),Qe=!0),W.current[nt]=qt,{id:nt,type:"task",position:qt,deletable:!1,data:le($e)}});x(st),Qe&&Ce()},[ce,c,f,O,x,Ce,e]),_.useEffect(()=>{if(U.current!==c)return;const he=new Set(ce.map(le=>String(le.seq)));k(le=>{const Te=le.filter(Ae=>he.has(Ae.source)&&he.has(Ae.target));return Te.length!==le.length&&Ce(),Te.length===le.length?le:Te})},[ce,c,k,Ce]),_.useEffect(()=>{if(!c||U.current!==c||f!=="free"||ce.length<2)return;const he=dd(ce),le=[];for(let Qe=1;Qe<he.length;Qe+=1)for(const st of he[Qe-1]??[])for(const $e of he[Qe]??[])le.push({id:`seed-${st.seq}-${$e.seq}`,source:String(st.seq),target:String($e.seq),sourceHandle:"r",targetHandle:"l",animated:!1});const Te=X.current,Ae=F.current!==c;if(F.current=c,Ae&&Te.length===0)le.length>0&&(k(le),Ce());else{const Qe=new Set;for(const nt of Te)Qe.add(nt.source),Qe.add(nt.target);const st=new Set(Te.map(nt=>`${nt.source}->${nt.target}`)),$e=new Set(ce.map(nt=>String(nt.seq)).filter(nt=>!Y.current.has(nt)&&!Qe.has(nt)));if($e.size>0){const nt=le.filter(qt=>($e.has(qt.source)||$e.has(qt.target))&&!st.has(`${qt.source}->${qt.target}`));nt.length>0&&(k([...Te,...nt]),Ce())}}Y.current=new Set(ce.map(Qe=>String(Qe.seq)))},[ce,c,f,O,k,Ce]);const Ie=_.useCallback(he=>{if(v(he),f!=="free")return;let le=!1;for(const Te of he)Te.type==="position"&&Te.position&&(W.current[Te.id]=Te.position,le=!0);le&&Ce()},[v,Ce,f]),ae=_.useCallback(he=>{f==="free"&&(k(le=>yP({...he,animated:!1},le)),Ce())},[k,Ce,f]),ke=_.useCallback(()=>{if(f!=="free"||ce.length===0)return;const he=dd(ce),le={},Te=[];he.forEach((Ae,Qe)=>{if(Ae.forEach((st,$e)=>{le[String(st.seq)]={x:wp+Qe*vp,y:Gx+$e*Kx}}),Qe>0)for(const st of he[Qe-1]??[])for(const $e of Ae)Te.push({id:`seed-${st.seq}-${$e.seq}`,source:String(st.seq),target:String($e.seq),sourceHandle:"r",targetHandle:"l",animated:!1})}),W.current={...W.current,...le},x(Ae=>Ae.map(Qe=>le[Qe.id]?{...Qe,position:le[Qe.id]}:Qe)),k(Te),Ce(),setTimeout(()=>r({padding:.2,duration:300}),60)},[f,ce,x,k,Ce,r]),Ue=_.useCallback(async he=>{if(!await i({title:e("flow.confirm.deleteTitle"),body:e("flow.confirm.deleteBody",{seq:he}),danger:!0,confirm:e("flow.node.delete")}))return;I("");const Te=X.current.filter(Ae=>Ae.source===String(he)||Ae.target===String(he)).map(Ae=>({...Ae}));try{await FL(c,he),o.current.push({seq:he,edges:Te})}catch(Ae){I(Ae instanceof Error?Ae.message:String(Ae))}finally{T(Ae=>Ae===he?null:Ae),j(Ae=>Ae===he?null:Ae),$.current="",z(Ae=>Ae+1),ge()}},[c,i,e,ge]),Oe=_.useCallback(async()=>{const he=o.current.pop();if(he){I("");try{await Xne(c,he.seq),k(le=>{const Te=new Set(le.map(Ae=>Ae.id));return[...le,...he.edges.filter(Ae=>!Te.has(Ae.id))]}),Ce(),ge()}catch(le){I(le instanceof Error?le.message:String(le))}}},[c,k,Ce,ge]),ht=_.useCallback((he,le)=>{var st;if(f!=="free"||le.isValid)return;const Te=le.fromNode;if(!Te||!c)return;const Ae="changedTouches"in he?he.changedTouches[0]:he;if(!Ae)return;const Qe=s({x:Ae.clientX,y:Ae.clientY});q({fromId:Te.id,fromHandle:((st=le.fromHandle)==null?void 0:st.id)??null,clientX:Ae.clientX,clientY:Ae.clientY,flowX:Qe.x,flowY:Qe.y})},[f,c,s]),tt=_.useCallback(async()=>{const he=B;if(q(null),!(!he||!c))try{const le=await hv(c,{title:`${e("flow.node.default")} ${ce.length+1}`,initialState:"Planning"}),Te=Qde(le);if(Te==null)return;const Ae=String(Te);W.current[Ae]={x:he.flowX-ll/2,y:he.flowY-cl/2},k(Qe=>[...Qe,{id:`e-${he.fromId}-${Ae}-drop`,source:he.fromId,target:Ae,sourceHandle:he.fromHandle??void 0,animated:!1}]),Ce(),ge()}catch(le){I(le instanceof Error?le.message:String(le))}},[B,c,ce.length,k,Ce,e,ge]);_.useEffect(()=>{if(!B)return;const he=le=>{le.key==="Escape"&&q(null)};return window.addEventListener("keydown",he),()=>window.removeEventListener("keydown",he)},[B]);const jt=_.useCallback((he,le)=>{f==="free"&&(k(Te=>qce(he,le,Te)),Ce())},[f,k,Ce]);_.useEffect(()=>{const he=le=>{if(le.key!=="Delete"&&le.key!=="Backspace"||A!=null)return;const Te=le.target;Te&&(Te.tagName==="INPUT"||Te.tagName==="TEXTAREA"||Te.isContentEditable)||S!=null&&(le.preventDefault(),Ue(S))};return window.addEventListener("keydown",he),()=>window.removeEventListener("keydown",he)},[S,A,Ue]),_.useEffect(()=>{const he=le=>{if(!(le.metaKey||le.ctrlKey)||le.key!=="z"&&le.key!=="Z"||A!=null)return;const Te=le.target;Te&&(Te.tagName==="INPUT"||Te.tagName==="TEXTAREA"||Te.isContentEditable)||(le.preventDefault(),Oe())};return window.addEventListener("keydown",he),()=>window.removeEventListener("keydown",he)},[A,Oe]);const Nt=_.useCallback(async he=>{if(c){y(!0),I("");try{const le=new Map(ce.map(Te=>[Te.seq,Te.order]));for(let Te=0;Te<he.length;Te+=1)for(const Ae of he[Te]??[])le.get(Ae)!==Te+1&&await bm(c,Ae,{order:Te+1});ge()}catch(le){I(le instanceof Error?le.message:String(le))}finally{y(!1)}}},[c,ce,ge]),pt=_.useCallback(he=>{const le=Number(he.id);if(!Number.isInteger(le))return;const Te=dd(ce).map($e=>$e.map(nt=>nt.seq)),Ae=(he.position.x-wp)/vp,Qe=Math.round(Ae),st=Te.map($e=>$e.filter(nt=>nt!==le));if(Qe>=0&&Qe<Te.length&&Math.abs(Ae-Qe)<=.35)st[Qe].push(le);else{const $e=Math.max(0,Math.min(st.length,Math.ceil(Ae)));st.splice($e,0,[le])}Nt(st.filter($e=>$e.length>0)).finally(()=>{$.current="",z($e=>$e+1)})},[ce,Nt]),Me=_.useCallback((he,le)=>{if(f==="lanes"){pt(le);return}const Te=new Map(K.current.map(nt=>[nt.id,nt])),Ae={x:le.position.x+ll/2,y:le.position.y+cl/2};let Qe=null,st=40;for(const nt of X.current){if(nt.source===le.id||nt.target===le.id)continue;const qt=Te.get(nt.source),Xt=Te.get(nt.target);if(!qt||!Xt)continue;const Dt=nfe(Ae,OA(qt),OA(Xt));Dt<st&&(st=Dt,Qe=nt)}if(!Qe)return;const $e=Qe;k(nt=>[...nt.filter(qt=>qt.id!==$e.id),{id:`e-${$e.source}-${le.id}-${$e.id}`,source:$e.source,target:le.id,animated:!1},{id:`e-${le.id}-${$e.target}-${$e.id}`,source:le.id,target:$e.target,animated:!1}]),Ce()},[f,pt,k,Ce]),We=_.useCallback(he=>{p(he),localStorage.setItem(AA,he)},[]);_.useEffect(()=>{const he=setTimeout(()=>{r({padding:.2,duration:300})},80);return()=>clearTimeout(he)},[f,r]);const ne=async()=>{if(c){I("");try{await hv(c,{title:`${e("flow.node.default")} ${ce.length+1}`,initialState:"Planning"}),ge()}catch(he){I(he instanceof Error?he.message:String(he))}}},ve=async()=>{if(I(""),R(null),!c)return I(e("flow.err.noProject"));if(ce.length===0)return I(e("flow.err.noNodes"));D(!0);try{const he=ce.filter(Ae=>Ae.state==="Planning"),le=he.length;let Te=0;R({phase:"creating",made:Te,total:le});for(const Ae of he)await bm(c,Ae.seq,{state:"Backlog",labels:Array.from(new Set([...Ae.labels??[],"AI-PIPELINE"]))}),Te+=1,R({phase:"creating",made:Te,total:le});R({phase:"starting",made:Te,total:le}),await $L(c),ge(),R({phase:"done",made:Te,total:le})}catch(he){I(he instanceof Error?he.message:String(he))}finally{D(!1)}},Re=be.isLoading&&!!c;return d.jsxs("div",{className:"flex flex-col h-full",children:[d.jsxs("header",{className:"flex items-center gap-3 flex-wrap px-4 py-3 border-b border-[var(--surface-card-border)]",children:[d.jsxs("h1",{className:"text-lg font-[family-name:var(--font-heading)] flex items-center gap-2",children:[d.jsx(HN,{size:18,strokeWidth:2.4}),e("nav.arrange")]}),d.jsx(KL,{current:c,onChange:u}),d.jsxs("div",{className:"flex gap-1",role:"group","aria-label":e("flow.mode.aria"),children:[d.jsxs("button",{type:"button",className:["nb-btn",f==="free"?"nb-btn-primary":""].join(" "),"aria-pressed":f==="free",onClick:()=>We("free"),children:[d.jsx(HN,{size:14,strokeWidth:2.4})," ",e("flow.mode.free")]}),d.jsxs("button",{type:"button",className:["nb-btn",f==="lanes"?"nb-btn-primary":""].join(" "),"aria-pressed":f==="lanes",onClick:()=>We("lanes"),children:[d.jsx(iU,{size:14,strokeWidth:2.4})," ",e("flow.mode.lanes")]})]}),Re&&d.jsx(mt,{size:15,className:"animate-spin text-[var(--color-text-muted)]"}),d.jsxs("button",{type:"button",className:"nb-btn",onClick:()=>void ne(),disabled:!c||Re,children:[d.jsx(Gn,{size:15,strokeWidth:2.4})," ",e("flow.addNode")]}),d.jsxs("button",{type:"button",className:"nb-btn nb-btn-cta ml-auto",onClick:()=>void ve(),disabled:M||oe||Re||!c,title:oe?e("flow.pipelineRunning"):void 0,children:[M||oe?d.jsx(mt,{size:15,className:"animate-spin"}):d.jsx(Dm,{size:15,strokeWidth:2.4}),e(M?"flow.running":oe?"flow.pipelineRunning":"flow.run")]})]}),!c&&d.jsx("div",{className:"px-4 py-2 text-sm text-[var(--color-text-muted)] border-b border-[var(--surface-card-border)]",children:e("flow.pickProject")}),P&&d.jsx("div",{className:"px-4 py-2 text-sm text-[var(--color-crashed)] bg-[var(--color-crashed-bg)] border-b border-[var(--surface-card-border)]",children:P}),G&&d.jsxs("div",{className:"px-4 py-2 text-sm flex items-center gap-3 bg-[var(--surface-input)] border-b border-[var(--surface-card-border)]",children:[G.phase==="creating"&&d.jsxs("span",{children:[e("flow.status.creating")," ",G.made,"/",G.total,"…"]}),G.phase==="starting"&&d.jsx("span",{children:e("flow.status.starting")}),G.phase==="done"&&d.jsxs(d.Fragment,{children:[d.jsxs("span",{className:"text-[var(--color-running)] font-bold",children:["✓ ",e("flow.status.done").replace("{n}",String(G.made))]}),d.jsx("button",{type:"button",className:"nb-btn nb-btn-blue",onClick:()=>n(`/board?project=${encodeURIComponent(c)}`),children:e("flow.goBoard")})]})]}),d.jsx("div",{className:"flex-1 min-h-0 arrange-flow-shell",children:d.jsxs(hde,{nodes:b,edges:ee,nodeTypes:Zde,connectionRadius:160,nodesConnectable:f==="free",edgesReconnectable:f==="free",deleteKeyCode:A!=null?null:["Delete","Backspace"],onNodesChange:Ie,onEdgesChange:he=>{f==="free"&&(C(he),Ce())},onConnect:ae,onConnectEnd:ht,onReconnect:jt,onNodeClick:(he,le)=>{const Te=Number(le.id);Number.isInteger(Te)&&j(Te)},onNodeDragStop:Me,onSelectionChange:({nodes:he})=>{const le=he[0]?Number(he[0].id):null;T(le!=null&&Number.isInteger(le)?le:null)},fitView:!0,children:[d.jsx(vde,{variant:la.Dots,gap:18,size:1}),d.jsx(Cde,{children:f==="free"&&d.jsx(xd,{onClick:ke,title:e("flow.tidy"),"aria-label":e("flow.tidy"),children:d.jsx(Pj,{size:14,strokeWidth:2.4})})})]})}),B&&d.jsx("div",{className:"fixed inset-0 z-30",onClick:()=>q(null),children:d.jsxs("button",{type:"button",className:"nb-btn nb-btn-cta absolute -translate-x-1/2 -translate-y-1/2",style:{left:B.clientX,top:B.clientY},onClick:he=>{he.stopPropagation(),tt()},children:[d.jsx(Gn,{size:14,strokeWidth:2.4})," ",e("flow.pending.create")]})}),m&&d.jsxs("div",{className:"px-4 py-1 text-xs text-[var(--color-text-muted)] border-t border-[var(--surface-card-border)] flex items-center gap-2",children:[d.jsx(mt,{size:12,className:"animate-spin"})," ",e("flow.lane.applying")]}),d.jsx("footer",{className:"px-4 py-2 text-xs text-[var(--color-text-muted)] border-t border-[var(--surface-card-border)]",children:e(f==="free"?"flow.hint":"flow.lane.hint")}),A!=null&&c&&d.jsx(Yde,{project:c,seq:A,onClose:()=>j(null),onChanged:ge,onDelete:he=>void Ue(he)})]})}function sfe(){return d.jsx(qP,{children:d.jsx(ife,{})})}function rfe(){const e=Xe();return d.jsxs("div",{className:"nb-card max-w-2xl mt-12",children:[d.jsx("h1",{className:"font-[family-name:var(--font-heading)] text-4xl font-bold mb-2",children:e("notFound.title")}),d.jsx("p",{className:"text-[var(--color-text-muted)] mb-6",children:e("notFound.body")}),d.jsx(zc,{to:"/",className:"nb-btn nb-btn-mint inline-flex",children:e("notFound.home")})]})}const afe=_.lazy(()=>_B(()=>import("./ShowcasePage-D5wOjBDH.js"),__vite__mapDeps([0,1])));function ofe(){return d.jsx(wF,{children:d.jsxs(H5,{children:[d.jsx(oi,{path:"/showcase",element:d.jsx(_.Suspense,{fallback:null,children:d.jsx(afe,{})})}),d.jsxs(oi,{element:d.jsx(WN,{contentMode:"workspace"}),children:[d.jsx(oi,{index:!0,element:d.jsx(bx,{})}),d.jsx(oi,{path:"/projects",element:d.jsx(fT,{})}),d.jsx(oi,{path:"/projects/:name",element:d.jsx(fT,{})}),d.jsx(oi,{path:"/board",element:d.jsx(yie,{})}),d.jsx(oi,{path:"/prompts",element:d.jsx(Mie,{})}),d.jsx(oi,{path:"/chat",element:d.jsx(bx,{})}),d.jsx(oi,{path:"/chat/:sessionId",element:d.jsx(bx,{})}),d.jsx(oi,{path:"/arrange",element:d.jsx(sfe,{})})]}),d.jsxs(oi,{element:d.jsx(WN,{contentMode:"document"}),children:[d.jsx(oi,{path:"/projects/new",element:d.jsx(zL,{})}),d.jsx(oi,{path:"/skills",element:d.jsx(Sie,{})}),d.jsx(oi,{path:"/system",element:d.jsx(Yie,{})}),d.jsx(oi,{path:"/memory",element:d.jsx(ose,{})}),d.jsx(oi,{path:"/plugins",element:d.jsx(wse,{})}),d.jsx(oi,{path:"*",element:d.jsx(rfe,{})})]})]})})}vF();G6();const lfe=new R4({defaultOptions:{queries:{staleTime:3e4,refetchOnWindowFocus:!1}}}),GP=document.getElementById("root");if(!GP)throw new Error("#root not found");o4.createRoot(GP).render(d.jsx(_.StrictMode,{children:d.jsx(P6,{children:d.jsx(D4,{client:lfe,children:d.jsx(mB,{children:d.jsx(oY,{children:d.jsx(ofe,{})})})})})}));export{Tj as A,eU as C,Dj as E,zc as L,Wv as P,f0 as S,LB as a,Be as c,d as j,_ as r,Kj as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.origin-tabs{display:flex;gap:4px;padding:8px 2px 0;flex-wrap:wrap}.origin-tab{border:1px solid var(--surface-card-border);background:transparent;color:var(--color-text-muted);border-radius:12px;font-size:11px;font-weight:600;padding:3px 10px;cursor:pointer;white-space:nowrap;transition:background-color .14s ease,color .14s ease}.origin-tab:hover{background:var(--surface-control-hover);color:var(--color-text)}.origin-tab.is-active{background:var(--menu-active);color:var(--color-text);border-color:transparent}.strands-container{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;pointer-events:none;transition:opacity .9s cubic-bezier(.22,1,.36,1)}.strands-container.strands-active{opacity:1}.strands-canvas{display:block;width:100%;height:100%;background:transparent}@media(prefers-reduced-motion:reduce){.strands-container{transition-duration:.01ms}}.home-intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;pointer-events:none;background:var(--color-bg);transition:background-color .65s ease}.home-intro--fill{background:transparent}.home-intro-orb{position:fixed;left:50%;top:50%;width:132px;height:132px;transform:translate(-50%,-50%) scale(4);transform-origin:center;will-change:transform,opacity;transition:transform 1125ms cubic-bezier(.22,1,.36,1),opacity .48s ease}.home-intro-strands{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;border-radius:50%;overflow:hidden}.home-intro-orb:before{content:"";display:none;position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;border:1px solid rgba(224,236,255,.42);border-radius:50%;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.2),transparent 28%),linear-gradient(145deg,#d2e1ff1a,#8066ff0b 48%,#05091c29);box-shadow:inset 0 1px #ffffff59,inset 0 -18px 42px #3943a01f,0 0 0 1px #719fff14,0 14px 42px #00000052;opacity:0;transition:opacity .31s ease}.home-intro--ring .home-intro-orb:before,.home-intro--move .home-intro-orb:before,.home-intro--fill .home-intro-orb:before{opacity:1;-webkit-backdrop-filter:blur(24px) saturate(150%);backdrop-filter:blur(24px) saturate(150%)}.home-intro-orb:after{content:"";display:none;position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;pointer-events:none;border-radius:50%;background:radial-gradient(circle at 30% 23%,#fff9,#fff0 20%),radial-gradient(circle at 60% 15%,#ffffff38,#fff0 8%),radial-gradient(circle at 73% 76%,#afdcff2e,#fff0 16%);opacity:0;transition:opacity .31s ease}.home-intro--ring .home-intro-orb:after,.home-intro--move .home-intro-orb:after,.home-intro--fill .home-intro-orb:after{opacity:1}.home-intro--ring .home-intro-orb{animation:home-intro-orb-in .3s cubic-bezier(.22,1,.36,1) both}.home-intro--fill .home-intro-orb{opacity:0}@keyframes home-intro-orb-in{0%{opacity:0}to{opacity:1}}.home-intro-ring{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;overflow:visible;opacity:0;filter:drop-shadow(0 0 4px rgba(140,130,255,.4));transition:opacity .15s ease}.home-intro-ring-circle{stroke-dasharray:1;stroke-dashoffset:1;transform-box:fill-box;transform-origin:center;transform:rotate(-90deg)}.home-intro--ring .home-intro-ring{opacity:1}.home-intro--ring .home-intro-ring-circle{animation:home-intro-ring-draw 1.15s cubic-bezier(.5,0,.2,1) forwards}.home-intro--move .home-intro-ring-circle,.home-intro--fill .home-intro-ring-circle{stroke-dashoffset:0}@keyframes home-intro-ring-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.home-intro-lines{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible}.home-intro-draw{stroke-dasharray:1;stroke-dashoffset:1}.home-intro--ring .home-intro-draw{animation:home-intro-line-draw 1.15s cubic-bezier(.5,0,.2,1) forwards}.home-intro--move .home-intro-draw{stroke-dashoffset:0}.home-intro--fill .home-intro-draw{stroke-dashoffset:0;stroke-width:0;transition:stroke-width .7s ease .12s}.home-intro--fill .home-intro-lines{opacity:0;transition:opacity .7s ease .2s}@keyframes home-intro-line-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}:root[data-home-intro] .sidebar-nav-item,:root[data-home-intro] .sidebar-brand,:root[data-home-intro] .sidebar-footer,:root[data-home-intro] .status-bar{opacity:0}:root[data-home-intro] .sidebar-nav-item{transform:translate(-22px)}:root[data-home-intro=fill] .sidebar-brand{opacity:1;transition:opacity .52s ease .12s}:root[data-home-intro=fill] .sidebar-footer{opacity:1;transition:opacity .52s ease .82s}:root[data-home-intro=fill] .status-bar{opacity:1;transition:opacity .56s ease .64s}:root[data-home-intro=fill] .sidebar-nav-item{opacity:1;transform:none;transition:opacity .46s ease,transform .54s cubic-bezier(.22,1,.36,1)}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(1){transition-delay:.26s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(2){transition-delay:.33s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(3){transition-delay:.4s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(4){transition-delay:.47s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(5){transition-delay:.54s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(6){transition-delay:.61s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(7){transition-delay:.68s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(8){transition-delay:.75s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(9){transition-delay:.82s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(10){transition-delay:.89s}.icon-toggle input{width:0;height:0;visibility:hidden;position:absolute}.icon-toggle-btn{border:1px solid var(--color-border-light);background:var(--surface-input);border-radius:10px;height:36px;width:36px;display:flex;justify-content:center;align-items:center;position:relative;cursor:pointer;transition:all .3s}.icon-toggle-btn:active{border-radius:5px}.icon-toggle-ico{position:absolute;display:inline-flex;line-height:0;transition:opacity .3s;color:var(--color-text)}.icon-toggle-ico.on{opacity:0}.icon-toggle-ico.off{opacity:1}.icon-toggle input:checked+.icon-toggle-btn{background:var(--color-accent-purple);border-color:var(--color-text)}.icon-toggle input:checked+.icon-toggle-btn .icon-toggle-ico.on{opacity:1}.icon-toggle input:checked+.icon-toggle-btn .icon-toggle-ico.off{opacity:0}.icon-toggle input:focus-visible+.icon-toggle-btn{outline:2px solid var(--color-text);outline-offset:2px}@media(prefers-reduced-motion:reduce){.icon-toggle-btn,.icon-toggle-ico{transition-duration:.01ms}}.voice-home{--voice-cyan: #61e7ff;--voice-blue: #5b7cff;--voice-violet: #b463ff;--voice-pink: #ff5fa2;--voice-amber: #ffb45e;--voice-mint: #65f2bc;flex:1;height:100%;min-width:0;min-height:0;display:grid;grid-template-rows:minmax(0,1fr)}.home-shell{display:flex;gap:12px;width:100%;height:100%;min-height:0}.home-sessions{flex-shrink:0;width:48px;min-height:0;display:flex;flex-direction:column;transition:width .22s cubic-bezier(.22,1,.36,1)}.home-sessions.is-open{width:260px;padding:12px;border:1px solid var(--surface-card-border);border-radius:16px;background:var(--color-bg-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.home-sessions-rail{width:48px;height:48px;border:1px solid var(--surface-card-border);border-radius:14px;background:var(--color-bg-soft);color:var(--color-text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .15s ease,transform .12s ease}.home-sessions-rail:hover{color:var(--color-text);transform:translate(-1px,-1px)}.home-sessions-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 2px 10px;border-bottom:1px solid var(--surface-card-border)}.home-sessions-title{font-family:var(--font-heading);font-weight:700;font-size:15px;color:var(--color-text)}.home-sessions-head-actions{display:flex;gap:6px}.home-sessions-list{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:2px;margin-top:8px}.home-session-row{display:flex;align-items:center;border-radius:10px;color:var(--color-text-muted);transition:background-color .14s ease,color .14s ease}.home-session-row:hover{background:var(--surface-control-hover);color:var(--color-text)}.home-session-row.is-active{background:var(--menu-active);color:var(--color-text)}.home-session-main{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:8px 10px;border:0;background:transparent;color:inherit;cursor:pointer;text-align:left}.home-session-del{flex-shrink:0;margin-right:4px;padding:5px;border:0;border-radius:8px;background:transparent;color:var(--color-text-subtle);cursor:pointer;opacity:0;transition:opacity .14s ease,color .14s ease,background-color .14s ease}.home-session-row:hover .home-session-del{opacity:1}.home-session-del:hover{color:var(--color-crashed);background:var(--color-crashed-bg)}.home-session-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600}.home-session-meta{flex-shrink:0;font-size:11px;color:var(--color-text-subtle);font-family:var(--font-mono)}.voice-home--intro-hidden .voice-home-header,.voice-home--intro-hidden .voice-conversation{opacity:0}.voice-home--intro-hidden .voice-home-header{transform:translateY(-14px)}.voice-home--intro-reveal .voice-home-header,.voice-home--intro-reveal .voice-conversation{opacity:1;transform:translateY(0);transition:opacity .62s ease .16s,transform .68s cubic-bezier(.22,1,.36,1) .16s}.voice-home--intro-reveal .voice-home-header{transition-delay:.32s}.voice-home-header{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:20px}.voice-home-header h1{margin:0;font-family:var(--font-mono);font-size:28px;font-weight:700;line-height:34px;letter-spacing:.08em}.voice-home-title{min-width:0;text-align:left}.voice-home-header p{margin:2px 0 0;color:var(--color-text-muted);font-size:13px;line-height:20px}.voice-header-actions{display:flex;align-items:center;gap:12px}.voice-header-actions .nb-btn{min-height:32px;gap:7px;padding:5px 10px;font-size:12px;white-space:nowrap}.voice-live-status{display:inline-flex;align-items:center;gap:7px;color:var(--color-text-muted);font-family:var(--font-mono);font-size:10px;text-transform:uppercase;white-space:nowrap}.voice-live-status>span{width:7px;height:7px;border-radius:50%;background:var(--color-idle);box-shadow:0 0 10px var(--color-idle);animation:voice-live-pulse 1.5s ease-in-out infinite}.voice-live-status[data-phase=listening]>span{background:var(--voice-cyan);box-shadow:0 0 14px var(--voice-cyan)}.voice-live-status[data-phase=thinking]>span{background:var(--voice-violet);box-shadow:0 0 16px var(--voice-violet)}.voice-live-status[data-phase=speaking]>span{background:var(--voice-pink);box-shadow:0 0 18px var(--voice-pink)}.voice-convo-header{flex-shrink:0;border-bottom:1px solid var(--surface-card-border)}.voice-convo-title-btn{width:100%;display:flex;align-items:center;gap:8px;padding:10px clamp(14px,3vw,24px);border:0;background:transparent;color:var(--color-text);cursor:pointer;text-align:left}.voice-convo-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-heading);font-weight:700;font-size:15px}.voice-convo-chevron{flex-shrink:0;color:var(--color-text-muted);transition:transform .18s ease}.voice-convo-chevron.is-open{transform:rotate(180deg)}.voice-convo-details{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 12px;margin:0;padding:0 clamp(14px,3vw,24px) 12px;font-family:var(--font-mono);font-size:11px}.voice-convo-details dt{color:var(--color-text-subtle);font-weight:700}.voice-convo-details dd{margin:0;color:var(--color-text-muted);overflow-wrap:anywhere}.voice-artifacts{display:flex;align-items:center;gap:8px;padding:8px clamp(14px,3vw,24px);border-top:1px solid var(--surface-card-border);color:var(--color-text-muted);font-size:12px;overflow:hidden}.voice-artifacts-title{font-weight:700;color:var(--color-text);white-space:nowrap}.voice-artifacts-list{display:flex;gap:6px;min-width:0;overflow-x:auto}.voice-artifacts-chip.is-clickable{cursor:pointer;transition:color .14s ease,border-color .14s ease,transform .12s ease}.voice-artifacts-chip.is-clickable:hover{color:var(--color-text);border-color:var(--color-text);transform:translateY(-1px)}.file-preview-body{flex:1;min-height:0;overflow:auto;margin:0;padding:12px;border-radius:12px;background:var(--color-bg);font-family:var(--font-mono);font-size:12px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}.voice-artifacts-chip{flex-shrink:0;padding:2px 8px;border:1px solid var(--surface-card-border);border-radius:999px;background:var(--surface-input);color:var(--color-text);font-family:var(--font-mono);white-space:nowrap}.voice-conversation{position:relative;min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--surface-card-border);border-radius:20px;background:var(--color-bg-soft);box-shadow:var(--shadow-nb);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:border-color .5s ease}.voice-conversation[data-phase=listening]{border-color:#61e7ff4d}.voice-conversation[data-phase=thinking]{border-color:#b463ff57}.voice-conversation[data-phase=speaking]{border-color:#ff5fa257}.voice-message-stream{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:16px;padding:26px clamp(18px,4vw,46px) 18px;scroll-behavior:smooth}.voice-empty-state{margin:auto;display:flex;align-items:center;gap:8px;color:var(--color-text-subtle)}.voice-empty-state p{margin:0;font-size:13px}.voice-message{width:fit-content;max-width:min(72%,680px);animation:voice-message-enter .22s ease-out both}.voice-message>span{display:block;margin:0 0 5px;color:var(--color-text-muted);font-family:var(--font-mono);font-size:10px;line-height:14px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.voice-message :is(p,.voice-bubble){min-width:48px;margin:0;padding:10px 13px;border:1px solid var(--surface-card-border);border-radius:14px;color:var(--color-text);background:var(--surface-input);font-size:14px;line-height:22px;white-space:pre-wrap;overflow-wrap:anywhere;box-shadow:var(--shadow-nb-sm);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.voice-message .voice-bubble{white-space:normal}.voice-blocks{display:flex;flex-direction:column;gap:8px}.voice-bubble-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:8px}.voice-bubble-actions button{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:8px;border:1px solid var(--surface-card-border);background:var(--surface-input);color:var(--color-text-muted);cursor:pointer;padding:0;transition:transform .1s ease,box-shadow .1s ease,color .1s ease}.voice-bubble-actions button:hover{color:var(--color-text);transform:translate(-1px,-1px);box-shadow:var(--shadow-nb-sm)}.voice-bubble-actions button:active{transform:translate(1px,1px);box-shadow:none}.voice-bubble-actions button[data-active=true]{color:var(--color-bg);background:var(--color-running);border-color:var(--color-running)}.voice-msg-attachments{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.voice-msg-attach{position:relative;width:64px;height:64px;border-radius:10px;border:1px solid var(--surface-card-border);background:var(--surface-input);color:var(--color-text-muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;overflow:hidden;cursor:pointer;text-decoration:none;box-shadow:var(--shadow-nb-sm);transition:transform .1s ease,box-shadow .1s ease}.voice-msg-attach:hover{transform:translate(-1px,-1px);box-shadow:var(--shadow-nb)}.voice-msg-attach img{width:100%;height:100%;object-fit:cover}.voice-msg-attach-ext{font-family:var(--font-mono);font-size:8px;font-weight:700;letter-spacing:.4px;color:var(--color-text)}.voice-message-user{align-self:flex-end;text-align:right}.voice-message-user :is(p,.voice-bubble){background:var(--color-secondary);text-align:left}.voice-message-assistant,.voice-message-error{align-self:flex-start}.voice-message-assistant :is(p,.voice-bubble){background:var(--surface-input)}.voice-message-error :is(p,.voice-bubble){border-color:var(--color-crashed-bg);color:var(--color-crashed);background:var(--color-crashed-bg)}.voice-message[data-streaming=true] p:after,.voice-message-live p:after{content:"";width:1px;height:14px;display:inline-block;margin-left:4px;vertical-align:-2px;background:currentColor;animation:voice-stream-cursor .76s steps(1,end) infinite}.voice-thinking-line{color:var(--color-text-muted);font-size:13px;line-height:1.6;margin:0}.voice-thinking-line i,.voice-message-thinking i{width:20px;height:5px;display:inline-block;margin-left:7px;background:radial-gradient(circle,currentColor 1.5px,transparent 2px) 0 50% / 7px 5px repeat-x;animation:voice-thinking-dots .9s ease-in-out infinite}.voice-dock{min-height:188px;display:grid;place-items:center;align-content:center;gap:5px;padding:10px 18px 14px;border-top:1px solid var(--surface-card-border);background:var(--color-bg-soft);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);position:relative}.voice-input-inner{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;padding:8px 8px 8px 20px}.voice-input-field{width:100%;box-sizing:border-box;padding:9px 52px 9px 0;resize:none;border:0;outline:none;background:transparent;color:var(--color-text);font-family:var(--font-body);font-size:15px;line-height:22px;max-height:66px;overflow-y:hidden}.voice-input-field::placeholder{color:var(--color-text-muted)}.voice-send-btn{position:absolute;right:8px;bottom:8px;width:44px;height:44px;border-radius:50%;border:1px solid var(--surface-card-border);background:var(--color-secondary);color:var(--color-text);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-nb-sm);transition:transform .12s ease,opacity .12s ease,box-shadow .12s ease,background .15s ease}.voice-send-btn:hover:not(:disabled){transform:translate(-1px,-1px)}.voice-send-btn:active:not(:disabled){transform:translate(1px,1px)}.voice-send-btn:disabled{opacity:.5;cursor:default}.voice-send-btn.is-stop{background:var(--color-crashed-bg);color:var(--color-crashed);border-color:var(--color-crashed)}.voice-orb-button{position:relative;transition:transform .2s cubic-bezier(.22,1,.36,1)}.voice-stop-btn{position:absolute;left:100%;top:50%;margin-left:16px;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;background:none;color:var(--color-crashed, #ff6b6b);filter:drop-shadow(0 0 6px var(--color-crashed, #ff6b6b)) drop-shadow(0 0 12px var(--color-crashed, #ff6b6b));transition:filter .16s ease,transform .16s ease;z-index:20}.voice-stop-btn:hover{filter:drop-shadow(0 0 9px var(--color-crashed, #ff6b6b)) drop-shadow(0 0 18px var(--color-crashed, #ff6b6b));transform:translateY(-50%) scale(1.12)}.voice-dock[data-drag=true] .voice-orb-button{transform:scale(1.08)}.voice-dock[data-drag=true]{background:color-mix(in oklch,var(--color-secondary) 30%,var(--color-bg-soft))}.voice-attachments{position:absolute;left:16px;top:50%;transform:translateY(-50%);width:120px;height:120px;z-index:2}.voice-attach-thumb{position:absolute;top:0;right:0;bottom:0;left:0;width:120px;height:120px;border-radius:12px;border:1px solid var(--surface-card-border);background:var(--surface-input);color:var(--color-text-muted);display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:var(--shadow-nb-sm);transition:transform .28s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease}.voice-attach-thumb:nth-child(1){transform:rotate(-5deg) translate(0)}.voice-attach-thumb:nth-child(2){transform:rotate(4deg) translate(3px,2px)}.voice-attach-thumb:nth-child(3){transform:rotate(-3deg) translate(-3px,4px)}.voice-attach-thumb:nth-child(4){transform:rotate(6deg) translate(4px,-2px)}.voice-attach-thumb:nth-child(n+5){transform:rotate(-2deg) translate(-2px,3px)}.voice-attach-thumb:only-child{transform:none}.voice-attachments:hover .voice-attach-thumb:nth-child(1){transform:rotate(0) translate(0)}.voice-attachments:hover .voice-attach-thumb:nth-child(2){transform:rotate(0) translate(92px)}.voice-attachments:hover .voice-attach-thumb:nth-child(3){transform:rotate(0) translate(184px)}.voice-attachments:hover .voice-attach-thumb:nth-child(4){transform:rotate(0) translate(276px)}.voice-attachments:hover .voice-attach-thumb:nth-child(n+5){transform:rotate(0) translate(368px)}.voice-attach-thumb img{width:100%;height:100%;object-fit:cover}.voice-attach-doc{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:100%;height:100%;padding:8px 6px;text-align:center}.voice-attach-ext{font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:.5px;padding:1px 6px;border-radius:6px;border:1px solid var(--surface-card-border);background:var(--color-bg);color:var(--color-text)}.voice-attach-name{width:100%;font-size:10px;line-height:13px;color:var(--color-text);word-break:break-all;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.voice-attach-del{position:absolute;top:6px;left:6px;width:22px;height:22px;border-radius:50%;border:1px solid var(--color-text);background:var(--color-bg);color:var(--color-text);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;box-shadow:var(--shadow-nb-sm)}.voice-attach-del:hover{background:var(--color-crashed-bg);color:var(--color-crashed)}.voice-orb-button{position:relative;width:min(100%,720px);height:142px;padding:0;border:0;color:inherit;background:transparent}.voice-orb-hit{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:132px;height:132px;border:0;border-radius:50%;background:transparent;cursor:pointer;z-index:4}.voice-orb-hit:disabled{cursor:default}:root[data-morphing] .voice-dock,:root[data-morphing] .voice-flow-glass{-webkit-backdrop-filter:none;backdrop-filter:none}.voice-flow-glass[data-glass=on]{background:transparent;border-color:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.voice-flow-glass[data-glass=on]:before,.voice-flow-glass[data-glass=on]:after{display:none}.voice-flow-glass[data-mode=text]{width:min(96%,690px);height:var(--pill-h, 60px);border-radius:30px}.voice-flow-glass[data-mode=text] .strands-container,.voice-flow-glass[data-mode=text] .voice-canvas,.voice-flow-glass[data-mode=text] .voice-orb-icon{opacity:0}.voice-flow-glass{--voice-activity: 0;--voice-scale: 1;position:absolute;z-index:1;left:50%;top:50%;width:132px;height:132px;overflow:hidden;border:1px solid rgba(224,236,255,.42);border-radius:50%;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.2),transparent 28%),linear-gradient(145deg,#d2e1ff1a,#8066ff0b 48%,#05091c29);box-shadow:inset 0 1px #ffffff59,inset 0 -18px 42px #3943a01f,0 0 0 1px #719fff14,0 14px 42px #00000052;-webkit-backdrop-filter:blur(24px) saturate(150%);backdrop-filter:blur(24px) saturate(150%);transform:translate(-50%,-50%) scale(var(--voice-scale));transform-origin:center;will-change:transform;transition:width .8s cubic-bezier(.22,1,.36,1),height .8s cubic-bezier(.22,1,.36,1),border-radius .8s cubic-bezier(.22,1,.36,1),border-color .6s ease,box-shadow .8s ease,background .8s ease}.voice-flow-glass:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;border-radius:inherit;background:radial-gradient(circle at 30% 23%,#fff9,#fff0 20%),radial-gradient(circle at 60% 15%,#ffffff38,#fff0 8%),radial-gradient(circle at 73% 76%,#afdcff2e,#fff0 16%);box-shadow:inset 0 0 24px #ffffff06,inset 0 -14px 26px #0a0e2847}.voice-flow-glass[data-phase=listening]{border-color:#61e7ff8f;box-shadow:inset 0 1px #ffffff6b,inset 0 -18px 40px #2c9dc421,0 0 44px #61e7ff29,0 14px 42px #00000057}.voice-flow-glass[data-phase=thinking]{border-color:#cd9dff94;background:radial-gradient(circle at 28% 20%,rgba(255,255,255,.24),transparent 26%),linear-gradient(145deg,#b463ff1f,#61e7ff0f 48%,#07081933);box-shadow:inset 0 1px #ffffff6b,inset 0 -20px 44px #b463ff21,0 0 52px #b463ff33,0 14px 42px #00000057}.voice-flow-glass[data-phase=speaking]{width:min(92%,400px);height:92px;border-color:#ff9dce94;border-radius:46px;background:linear-gradient(105deg,#61e7ff17,#b463ff1c 42%,#ff5fa21a 72%,#ffb45e14),#07081829;box-shadow:inset 0 1px #fff6,inset 0 -18px 40px #8942bc21,0 0 58px #ff5fa22b,0 14px 44px #0000005c}.voice-canvas{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;transition:opacity .6s ease}.voice-flow-glass[data-phase=idle] .voice-canvas,.voice-flow-glass[data-phase=listening] .voice-canvas,.voice-flow-glass[data-phase=speaking] .voice-canvas{opacity:0}.voice-active-strands{z-index:1}.voice-orb-icon{position:absolute;z-index:4;left:50%;bottom:14px;width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.18);border-radius:50%;color:#f7f9ffe0;background:#0708168f;transform:translate(-50%);transition:opacity .3s ease}.voice-flow-glass[data-phase=thinking] .voice-orb-icon,.voice-flow-glass[data-phase=speaking] .voice-orb-icon{opacity:0}.voice-dock-label,.voice-error{margin:0;font-size:11px;line-height:16px}.voice-dock-label{color:var(--color-text-subtle)}.voice-error{color:#ff9fb4}.voice-debug-backdrop{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#03040cb3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:voice-backdrop-enter .16s ease-out both}.voice-debug-dialog{width:min(94vw,420px);max-height:min(88vh,760px);overflow:hidden;display:grid;grid-template-rows:auto auto minmax(0,1fr);border:1px solid var(--color-border-light);border-radius:8px;background:var(--surface-input);box-shadow:0 24px 80px #0000007a;animation:voice-dialog-enter .18s ease-out both}.voice-debug-header{min-height:50px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px 9px 14px;border-bottom:1px solid var(--color-border-light)}.voice-debug-header>div{display:flex;align-items:center;gap:8px}.voice-debug-header h2{margin:0;font-size:14px;font-weight:600;line-height:20px;letter-spacing:0}.voice-debug-header button{width:30px;height:30px;display:inline-grid;place-items:center;padding:0;border:1px solid var(--color-border-light);border-radius:6px;color:var(--color-text-muted);background:var(--surface-control);cursor:pointer}.voice-debug-header button:hover{color:var(--color-text);border-color:var(--surface-border-hover)}.voice-debug-phases{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:10px 12px;border-bottom:1px solid var(--color-border-light)}.voice-debug-phases button{min-width:0;min-height:32px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:5px 7px;border:1px solid transparent;border-radius:6px;color:var(--color-text-muted);background:transparent;font-size:11px;cursor:pointer}.voice-debug-phases button[aria-pressed=true]{border-color:#b463ff4d;color:var(--color-text);background:#b463ff24}.voice-debug-body{min-height:0;overflow-y:auto;padding:14px}.voice-customizer-group{min-width:0;margin:0;padding:0;border:0}.voice-customizer-group+.voice-customizer-group{margin-top:18px}.voice-customizer-group legend{width:100%;margin:0 0 8px;padding:0;color:var(--color-text-subtle);font-family:var(--font-mono);font-size:10px;font-weight:600;line-height:16px;text-transform:uppercase}.voice-color-control{min-height:38px;display:grid;grid-template-columns:minmax(0,1fr) 32px 74px;align-items:center;gap:8px;padding:4px 0;color:var(--color-text-muted);font-size:12px}.voice-color-control input[type=color]{width:32px;height:28px;padding:2px;border:1px solid var(--color-border-light);border-radius:5px;background:var(--surface-control);cursor:pointer}.voice-color-control code{overflow:hidden;color:var(--color-text-subtle);font-family:var(--font-mono);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.voice-parameter-control{display:grid;grid-template-columns:minmax(0,1fr) 68px;align-items:center;gap:5px 10px;padding:5px 0}.voice-parameter-control>span{overflow:hidden;color:var(--color-text-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.voice-parameter-control input[type=number]{width:68px;height:28px;padding:4px 7px;border:1px solid var(--color-border-light);border-radius:5px;color:var(--color-text);background:var(--surface-control);font-family:var(--font-mono);font-size:11px;text-align:right}.voice-parameter-control input[type=range]{grid-column:1 / -1;width:100%;height:16px;margin:0;accent-color:var(--voice-violet);cursor:pointer}.voice-orb-button:focus-visible,.voice-header-actions button:focus-visible,.voice-debug-dialog button:focus-visible,.voice-debug-dialog input:focus-visible{outline:2px solid var(--color-dusk-violet);outline-offset:2px}@keyframes voice-live-pulse{0%,to{opacity:.45;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}@keyframes voice-stream-cursor{50%{opacity:0}}@keyframes voice-thinking-dots{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(-1px)}}@keyframes voice-message-enter{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes voice-backdrop-enter{0%{opacity:0}to{opacity:1}}@keyframes voice-dialog-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:700px){.voice-home-header{align-items:flex-start}.voice-home-header p,.voice-live-status{display:none}.voice-message{max-width:88%}.voice-message-stream{padding-inline:16px}.voice-dock{min-height:174px;padding-inline:10px}.voice-orb-button{height:132px}.voice-flow-glass{width:122px;height:122px}.voice-flow-glass[data-phase=speaking]{width:min(94%,360px);height:86px}}@media(max-width:440px){.voice-home{gap:8px}.voice-home-header h1{font-size:18px;line-height:26px}.voice-header-actions .nb-btn{font-size:0;gap:0}.voice-header-actions .nb-btn svg{width:16px;height:16px}.voice-debug-phases button{font-size:0}.voice-debug-phases button svg{width:17px;height:17px}.voice-color-control{grid-template-columns:minmax(0,1fr) 32px}.voice-color-control code{display:none}}@media(prefers-reduced-motion:reduce){.voice-live-status>span,.voice-message,.voice-message[data-streaming=true] p:after,.voice-message-live p:after,.voice-thinking-line i,.voice-message-thinking i,.voice-debug-backdrop,.voice-debug-dialog{animation:none}.voice-flow-glass{transition-duration:.01ms}}.voice-toggle-stack{position:absolute;right:14px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;z-index:5}.interaction-dock{border-top:1px solid var(--surface-card-border);background:var(--color-bg-soft);padding:12px 18px;max-height:46vh;overflow-y:auto;display:flex;justify-content:center;align-items:flex-start;animation:interaction-dock-in .16s ease-out}.interaction-dock>*{width:100%;max-width:80rem}.cfg-region{display:flex;flex-direction:column;gap:10px}.cfg-region.is-locked{opacity:.6;pointer-events:none}.cfg-region-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.cfg-region-title{font-family:var(--font-heading);font-weight:700;font-size:15px}.cfg-region-desc{font-size:12px;color:var(--color-text-muted)}.cfg-region-body{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:stretch}.cfg-region-prose{flex:2 1 22rem;display:flex;flex-direction:column;gap:10px}.cfg-region-prose>label{flex:1}.cfg-region-prose textarea{flex:1;min-height:6.5rem}.cfg-region-params{flex:1 1 15rem;display:flex;flex-direction:column;gap:10px}.cfg-region-media{flex:0 1 12rem;display:flex;flex-direction:column;gap:10px}.cfg-region-actions{display:flex;gap:8px;justify-content:flex-end;align-items:center}.cfg-dropzone-wrap{display:flex;flex-direction:column;gap:6px}.cfg-dropzone{display:flex;align-items:center;justify-content:center;aspect-ratio:4 / 3;border:2px dashed var(--surface-card-border);border-radius:12px;background:var(--color-bg);cursor:pointer;overflow:hidden;transition:border-color .12s ease}.cfg-dropzone:hover{border-color:var(--color-text)}.cfg-dropzone[data-filled=true]{border-style:solid}.cfg-dropzone-hint{font-size:12px;color:var(--color-text-muted);padding:0 8px;text-align:center;word-break:break-all}.cfg-dropzone-thumb{width:100%;height:100%;object-fit:cover}.interaction-dock-error{margin-bottom:8px;font-size:12px;color:var(--color-crashed)}@keyframes interaction-dock-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.interaction-dock{animation-duration:.01ms}}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}@property --fn-angle{syntax: "<angle>"; initial-value: 0deg; inherits: false;}.flow-node-glow{position:relative;border-radius:var(--radius-2xl);transition:box-shadow .2s ease-out}.flow-node-glow:before,.flow-node-glow:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s ease-out;padding:2px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;background:conic-gradient(from var(--fn-angle),#c084fc,#f472b6,#38bdf8,#22d3ee,#c084fc)}.flow-node-glow:before{z-index:3}.flow-node-glow:after{filter:blur(7px);z-index:-1}.flow-node-glow.is-running:before{opacity:1;animation:fn-spin 4s linear infinite}.flow-node-glow.is-running:after{opacity:.6;animation:fn-spin 4s linear infinite}.flow-node-glow:hover,.flow-node-glow.is-selected{box-shadow:0 0 0 3px var(--color-accent-purple),0 0 22px 8px color-mix(in srgb,var(--color-accent-purple) 80%,transparent),0 0 44px 16px color-mix(in srgb,var(--color-accent-purple) 45%,transparent)}@keyframes fn-spin{to{--fn-angle: 360deg}}@media(prefers-reduced-motion:reduce){.flow-node-glow:before,.flow-node-glow:after{animation:none!important}}/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:"JetBrains Mono", "SF Mono", Monaco, Consolas, monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:4px;--radius-md:10px;--radius-lg:24px;--radius-xl:24px;--radius-2xl:24px;--radius-3xl:40px;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:oklch(18.3% .032 296);--color-bg-cream:oklch(13.8% .027 296);--color-bg-soft:oklch(72% .1 296/.11);--surface-menu:oklch(24% .03 296);--color-text:oklch(95.2% .015 296);--color-text-muted:oklch(81.8% .04 296);--color-text-subtle:oklch(62.8% .046 296);--color-border-light:oklch(82% .068 296/.28);--color-hairline:oklch(88% .052 296/.48);--color-snow-white:oklch(96.5% .02 296);--color-graphite:#181426;--color-dusk-violet:oklch(59.2% .225 287);--color-primary:oklch(72% .1 296/.12);--color-primary-dark:oklch(72% .1 296/.18);--color-secondary:oklch(86% .05 296/.13);--color-secondary-dark:oklch(86% .05 296/.19);--color-info:oklch(78% .116 252);--color-info-bg:oklch(78% .116 252/.13);--color-accent-mint:oklch(81% .08 160/.16);--color-accent-purple:oklch(59.2% .225 287/.2);--color-accent-yellow:oklch(82% .112 82/.16);--color-accent-pink:oklch(78% .082 330/.14);--color-running:oklch(80.7% .124 155);--color-running-bg:oklch(80.7% .124 155/.13);--color-stuck:oklch(82% .128 82);--color-stuck-bg:oklch(82% .128 82/.14);--color-crashed:oklch(76.5% .15 24);--color-crashed-bg:oklch(76.5% .15 24/.14);--color-idle:oklch(76% .01 296);--color-idle-bg:oklch(76% .01 296/.12);--color-cta:oklch(96.5% .02 296);--color-cta-dark:oklch(88.7% .056 296);--font-heading:"DM Sans", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body:"DM Sans", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--radius-pill:9999px;--shadow-nb-sm:#d6c7ff1f 0 0 0 1px inset;--shadow-nb:#d6c7ff1f 0 0 0 1px inset}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:before,:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#root{min-height:100%}:root{color-scheme:dark;--surface-card-border:oklch(82% .068 296/.18);--surface-border-hover:oklch(88% .052 296/.44);--surface-control:oklch(72% .1 296/.1);--surface-control-hover:oklch(86% .05 296/.16);--surface-control-active:oklch(86% .05 296/.23);--surface-control-selected:oklch(69% .125 287/.22);--surface-drop-target:oklch(86% .05 296/.2);--surface-segmented:oklch(72% .1 296/.08);--surface-segmented-active:oklch(86% .05 296/.17);--surface-code:oklch(86% .05 296/.08);--surface-pre:oklch(11.5% .032 296/.68);--surface-input:oklch(13.5% .03 296/.52);--surface-input-focus:oklch(18.8% .038 296/.74);--surface-modal:oklch(18.3% .032 296/.94);--surface-overlay:oklch(10% .028 296/.62);--surface-table-head:oklch(86% .05 296/.07);--surface-table-row-hover:oklch(86% .05 296/.045);--surface-table-border:oklch(82% .068 296/.12);--surface-progress-track:oklch(86% .05 296/.1);--control-border:var(--color-border-light);--control-border-hover:var(--surface-border-hover);--control-border-active:oklch(88% .052 296/.6);--control-border-selected:oklch(70% .175 287/.64);--control-focus-ring:oklch(74% .135 287/.52);--control-focus-shadow:0 0 0 4px oklch(74% .135 287/.16);--control-disabled-bg:oklch(72% .04 296/.055);--control-disabled-text:oklch(71% .022 296);--control-placeholder:oklch(72% .034 296);--control-select-bg:oklch(14.5% .03 296);--control-option-bg:oklch(16.8% .032 296);--control-option-hover:oklch(24% .045 296);--control-option-selected:oklch(30% .082 287);--selection-bg:oklch(78% .108 287/.86);--selection-text:oklch(13.8% .027 296);--native-accent:oklch(72% .145 287);--button-default-bg:var(--surface-control);--button-default-hover:var(--surface-control-hover);--button-default-active:var(--surface-control-active);--button-primary-bg:var(--color-cta);--button-primary-hover:var(--color-cta-dark);--button-primary-active:oklch(82.6% .064 296);--button-primary-text:var(--color-graphite);--button-danger-border:oklch(76.5% .15 24/.48);--button-danger-hover-bg:oklch(76.5% .15 24/.2);--button-danger-active-bg:oklch(76.5% .15 24/.27);--button-mint-bg:oklch(81% .08 160/.16);--button-mint-hover:oklch(81% .08 160/.24);--button-mint-border:oklch(81% .08 160/.36);--button-blue-bg:oklch(78% .116 252/.15);--button-blue-hover:oklch(78% .116 252/.23);--button-blue-border:oklch(78% .116 252/.36);--button-yellow-bg:oklch(82% .112 82/.17);--button-yellow-hover:oklch(82% .112 82/.25);--button-yellow-border:oklch(82% .112 82/.38);--button-purple-bg:oklch(59.2% .225 287/.18);--button-purple-hover:oklch(59.2% .225 287/.26);--button-purple-border:oklch(72% .145 287/.38);--button-pink-bg:oklch(78% .082 330/.15);--button-pink-hover:oklch(78% .082 330/.23);--button-pink-border:oklch(78% .082 330/.34);--button-accent-text:var(--color-text);--menu-hover:oklch(86% .05 296/.045);--menu-active:linear-gradient(90deg, #7c5af93d, oklch(86% .05 296/.08) 42%, oklch(86% .05 296/.02))}@supports (color:color-mix(in lab,red,red)){:root{--menu-active:linear-gradient(90deg, color-mix(in oklch, var(--color-dusk-violet) 24%, transparent), oklch(86% .05 296/.08) 42%, oklch(86% .05 296/.02))}}:root{--board-planning-bg:linear-gradient(180deg, var(--color-accent-purple), transparent);--board-backlog-bg:linear-gradient(180deg, var(--color-primary), transparent);--board-todo-bg:linear-gradient(180deg, var(--color-accent-yellow), transparent);--board-inprogress-bg:linear-gradient(180deg, var(--color-secondary), transparent);--board-qa-bg:linear-gradient(180deg, var(--color-accent-pink), transparent);--board-done-bg:linear-gradient(180deg, var(--color-running-bg), transparent);--page-gradient:linear-gradient(110deg, var(--color-accent-purple) 0%, var(--color-primary) 34%, transparent 62%), linear-gradient(90deg, transparent 0%, transparent 36%, var(--color-accent-purple) 50%, transparent 66%, transparent 100%);--main-gradient:linear-gradient(180deg, var(--surface-table-head), transparent 24%)}:root[data-theme=light]{color-scheme:light;--color-bg:oklch(99.2% .003 296);--color-bg-cream:oklch(96.9% .01 296);--color-bg-soft:oklch(28% .026 296/.055);--surface-menu:oklch(100% 0 0);--color-text:oklch(20% .01 296);--color-text-muted:oklch(41% .014 296);--color-text-subtle:oklch(55% .014 296);--color-border-light:oklch(20% .01 296/.16);--color-hairline:oklch(20% .01 296/.22);--color-snow-white:#161616;--color-ink-black:#fff;--color-graphite:#fff;--color-primary:oklch(59.2% .225 287/.075);--color-primary-dark:oklch(59.2% .225 287/.11);--color-secondary:oklch(48% .09 252/.08);--color-secondary-dark:oklch(48% .09 252/.12);--color-info:oklch(43% .125 252);--color-info-bg:oklch(43% .125 252/.1);--color-accent-mint:oklch(44% .11 155/.1);--color-accent-purple:oklch(59.2% .225 287/.12);--color-accent-yellow:oklch(49% .105 76/.11);--color-accent-pink:oklch(47% .12 24/.09);--color-running:oklch(42.5% .11 155);--color-running-bg:oklch(42.5% .11 155/.1);--color-stuck:oklch(45% .12 76);--color-stuck-bg:oklch(45% .12 76/.1);--color-crashed:oklch(45% .14 24);--color-crashed-bg:oklch(45% .14 24/.1);--color-idle:oklch(43% .012 296);--color-idle-bg:oklch(20% .01 296/.08);--color-on-status:oklch(99.2% .003 296);--color-cta:#161616;--color-cta-dark:#2a2a2a;--shadow-nb-sm:#00000014 0 0 0 1px inset;--shadow-nb:#00000014 0 0 0 1px inset;--shadow-nb-lg:#00000014 0 0 0 1px inset;--surface-card-border:#1616161a;--surface-border-hover:#1616162e;--surface-control:#1616160e;--surface-control-hover:#16161617;--surface-control-active:#16161621;--surface-control-selected:oklch(59.2% .225 287/.13);--surface-segmented:#1616160f;--surface-segmented-active:#1616161f;--surface-code:#16161612;--surface-pre:#ffffffb8;--surface-input:#ffffffd1;--surface-input-focus:#fffffff5;--surface-modal:#ffffffeb;--surface-overlay:oklch(20% .01 296/.24);--surface-table-head:#1616160e;--surface-table-row-hover:#1616160a;--surface-table-border:#1616161a;--menu-hover:#1616160b;--surface-drop-target:oklch(59.2% .225 287/.16);--surface-progress-track:oklch(20% .01 296/.08);--control-border:oklch(20% .01 296/.16);--control-border-hover:oklch(20% .01 296/.28);--control-border-active:oklch(20% .01 296/.36);--control-border-selected:oklch(52% .19 287/.42);--control-focus-ring:oklch(55% .18 287/.46);--control-focus-shadow:0 0 0 4px oklch(55% .18 287/.13);--control-disabled-bg:oklch(20% .01 296/.045);--control-disabled-text:oklch(58% .01 296);--control-placeholder:oklch(47% .014 296);--control-select-bg:oklch(100% 0 0);--control-option-bg:oklch(99.2% .003 296);--control-option-hover:oklch(94% .014 296);--control-option-selected:oklch(90% .034 287);--selection-bg:oklch(59.2% .225 287/.24);--selection-text:oklch(18% .012 296);--native-accent:oklch(52% .19 287);--button-default-bg:var(--surface-control);--button-default-hover:var(--surface-control-hover);--button-default-active:var(--surface-control-active);--button-primary-bg:var(--color-cta);--button-primary-hover:var(--color-cta-dark);--button-primary-active:oklch(24% .012 296);--button-primary-text:#fff;--button-danger-border:oklch(45% .14 24/.32);--button-danger-hover-bg:oklch(45% .14 24/.14);--button-danger-active-bg:oklch(45% .14 24/.2);--button-mint-bg:oklch(44% .11 155/.1);--button-mint-hover:oklch(44% .11 155/.16);--button-mint-border:oklch(44% .11 155/.24);--button-blue-bg:oklch(43% .125 252/.1);--button-blue-hover:oklch(43% .125 252/.16);--button-blue-border:oklch(43% .125 252/.24);--button-yellow-bg:oklch(45% .12 76/.11);--button-yellow-hover:oklch(45% .12 76/.17);--button-yellow-border:oklch(45% .12 76/.24);--button-purple-bg:oklch(59.2% .225 287/.11);--button-purple-hover:oklch(59.2% .225 287/.17);--button-purple-border:oklch(52% .19 287/.25);--button-pink-bg:oklch(47% .12 24/.1);--button-pink-hover:oklch(47% .12 24/.16);--button-pink-border:oklch(47% .12 24/.22);--button-accent-text:var(--color-text);--menu-active:linear-gradient(90deg, #7c5af926, oklch(20% .01 296/.06) 42%, oklch(20% .01 296/.018))}@supports (color:color-mix(in lab,red,red)){:root[data-theme=light]{--menu-active:linear-gradient(90deg, color-mix(in oklch, var(--color-dusk-violet) 15%, transparent), oklch(20% .01 296/.06) 42%, oklch(20% .01 296/.018))}}:root[data-theme=light]{--board-planning-bg:linear-gradient(180deg, var(--color-accent-purple), transparent);--board-backlog-bg:linear-gradient(180deg, var(--color-primary), transparent);--board-todo-bg:linear-gradient(180deg, var(--color-accent-yellow), transparent);--board-inprogress-bg:linear-gradient(180deg, var(--color-secondary), transparent);--board-qa-bg:linear-gradient(180deg, var(--color-accent-pink), transparent);--board-done-bg:linear-gradient(180deg, var(--color-running-bg), transparent);--page-gradient:linear-gradient(90deg, #fff0 0%, #fff0 38%, #6b62f21a 50%, #fff0 62%, #fff0 100%);--main-gradient:linear-gradient(180deg, #ffffff8f, #fff0 24%)}body{font-family:var(--font-body);color:var(--color-text);background:var(--page-gradient),var(--color-bg-cream);min-height:100vh;font-size:15px;line-height:1.5}::selection{color:var(--selection-text);background:var(--selection-bg)}h1,h2,h3,h4,h5{font-family:var(--font-heading);color:var(--color-text);letter-spacing:0;margin:0;font-weight:500}.app-main-surface{background:var(--main-gradient),transparent}:focus-visible{outline:2px solid var(--control-focus-ring);outline-offset:3px}:where(input,textarea,select){caret-color:var(--native-accent);accent-color:var(--native-accent)}:where(input[type=checkbox],input[type=radio]){accent-color:var(--native-accent)}:where(input[type=checkbox],input[type=radio]):focus-visible{outline:2px solid var(--control-focus-ring);outline-offset:3px;box-shadow:var(--control-focus-shadow)}:where(button,[role=button],a){-webkit-tap-highlight-color:transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border-light);border-radius:var(--radius-pill);background-clip:padding-box;border:2px solid #0000}::-webkit-scrollbar-thumb:hover{background:var(--surface-border-hover)}::-webkit-scrollbar-corner{background:0 0}@media(prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}}@layer components{.app-shell{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.app-sidebar{padding:8px}.sidebar-brand{display:none}.sidebar-brand-logo{object-fit:contain;flex-shrink:0;width:28px;height:28px;display:none}.sidebar-tooltip{z-index:40;border:1px solid var(--control-border);border-radius:var(--radius-md);background:var(--surface-modal);max-width:220px;min-height:30px;box-shadow:var(--shadow-nb-sm);color:var(--color-text);font-family:var(--font-body);opacity:0;pointer-events:none;white-space:nowrap;align-items:center;padding:6px 10px;font-size:12px;font-weight:600;line-height:16px;transition:opacity .12s ease-out,transform .12s ease-out;display:inline-flex;position:absolute;top:50%;left:calc(100% + 10px);transform:translate(-4px,-50%)}.sidebar-tooltip:before{content:"";border-bottom:1px solid var(--control-border);border-left:1px solid var(--control-border);background:var(--surface-modal);width:8px;height:8px;position:absolute;top:50%;left:-5px;transform:translateY(-50%)rotate(45deg)}.sidebar-tooltip-suppressed{opacity:0!important;transform:translate(-4px,-50%)!important}.sidebar-brand-title,.sidebar-nav-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.sidebar-brand-morph{min-width:0;height:28px;line-height:28px;font-family:"SAIBA-45",var(--font-heading),sans-serif;letter-spacing:.02em;color:#0f0;text-align:center;flex:1;font-size:1.5rem;font-weight:400;position:relative}.sidebar-brand-morph span{justify-content:center!important;align-items:center!important;height:100%!important;line-height:1!important;display:flex!important;top:0!important;bottom:0!important}.sidebar-nav{padding-right:8px;overflow:auto hidden}.sidebar-nav-item{gap:8px;padding:8px 12px}@media(min-width:48rem){.app-shell{grid-template-rows:minmax(0,1fr)}.app-shell-sidebar-expanded{grid-template-columns:180px minmax(0,1fr)}.app-shell-sidebar-collapsed{grid-template-columns:76px minmax(0,1fr)}.app-sidebar{padding:16px}.app-shell-sidebar-collapsed .app-sidebar{padding:16px 10px}.sidebar-nav{padding-right:4px;overflow:hidden auto}.sidebar-nav-item{gap:12px;padding:10px 12px 10px 16px}.sidebar-brand{border-radius:var(--radius-md);width:100%;min-width:0;color:var(--color-text);cursor:pointer;font-family:var(--font-heading);text-align:left;background:0 0;border:0;align-items:center;gap:12px;padding:8px 10px;font-size:18px;font-weight:700;line-height:24px;transition:background-color .14s ease-out,color .14s ease-out;display:inline-flex;position:relative}.sidebar-brand:hover{background:var(--menu-hover)}.sidebar-brand:hover .sidebar-tooltip,.sidebar-brand:focus-visible .sidebar-tooltip{opacity:1;transform:translateY(-50%)}.sidebar-brand:active{background:var(--surface-control-active)}.app-shell-sidebar-collapsed .sidebar-brand{justify-content:center;gap:0;padding:8px 0}.app-shell-sidebar-collapsed .sidebar-brand .sidebar-tooltip{left:calc(100% + 16px)}.app-shell-sidebar-collapsed .sidebar-nav{align-items:center;padding-right:0;overflow:visible}.app-shell-sidebar-collapsed .sidebar-brand-title,.app-shell-sidebar-collapsed .sidebar-brand-morph,.app-shell-sidebar-collapsed .sidebar-nav-label{opacity:0;pointer-events:none;width:0;overflow:hidden}.app-shell-sidebar-collapsed .sidebar-brand-logo{display:block}.app-shell-sidebar-collapsed .sidebar-brand-morph{display:none}.app-shell-sidebar-collapsed .app-sidebar .dimension-menu-item{justify-content:center;align-self:center;gap:0;width:44px;min-width:44px;min-height:40px;margin-left:auto;margin-right:auto;padding-left:0;padding-right:0}.app-shell-sidebar-collapsed .app-sidebar .dimension-menu-item:hover .sidebar-tooltip,.app-shell-sidebar-collapsed .app-sidebar .dimension-menu-item:focus-visible .sidebar-tooltip{opacity:1;transform:translateY(-50%)}.app-shell-sidebar-collapsed .app-sidebar .dimension-menu-item:before{left:2px}.app-shell-sidebar-collapsed .sidebar-footer{flex-direction:column;align-items:center;gap:8px}.app-shell-sidebar-collapsed .sidebar-footer .dimension-segmented{flex:none;width:54px;max-width:54px;overflow:hidden}.app-shell-sidebar-collapsed .sidebar-footer .dimension-segment{min-width:0;height:28px;padding-left:0;padding-right:0;font-size:10px;line-height:14px}.app-shell-sidebar-collapsed .sidebar-footer .dimension-segment.h-8{width:24px;height:28px}}.system-page-shell{flex-direction:column;flex:1;gap:16px;width:100%;min-height:0;display:flex}.system-page-header{flex-shrink:0}.system-panel-stack{flex:1;grid-template-rows:auto auto auto;gap:16px;min-height:0;display:grid}@media(min-width:72rem){.system-panel-stack{grid-template-rows:minmax(0,.5fr) minmax(0,2.5fr);grid-template-columns:minmax(240px,4fr) minmax(0,12fr) minmax(280px,4fr);align-items:stretch}.system-panel-version{grid-area:1/1/span 2}.system-panel-env{grid-area:1/2/span 2}.system-panel-doctor{grid-area:1/3/span 2}}.system-panel{flex-direction:column;min-height:0;display:flex;overflow:hidden}.system-panel-env .system-panel-body{flex:1;padding-right:0;display:flex;overflow:hidden}.system-panel-titlebar{flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.system-panel-titlebar h2{min-width:0}.system-panel-body{overscroll-behavior:contain;scrollbar-gutter:stable;min-height:0;padding-right:4px;overflow:auto}.system-diagnostics-list{flex-direction:column;gap:10px;min-width:0;display:flex}.system-diagnostics-item{border:1px solid var(--control-border);border-radius:var(--radius-md);background:var(--surface-input);min-width:0;box-shadow:var(--shadow-nb-sm);overflow:hidden}.system-diagnostics-item-expanded{border-color:var(--control-border-active);background:linear-gradient(180deg,var(--surface-table-head),transparent 120px),var(--surface-input)}.system-diagnostics-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:10px;display:grid}.system-diagnostics-summary{min-width:0;color:var(--color-text);cursor:pointer;text-align:left;background:0 0;border:0;flex-direction:column;align-items:flex-start;gap:3px;display:flex}.system-diagnostics-summary:disabled{cursor:default}.system-diagnostics-summary:focus-visible{border-radius:var(--radius-sm);outline:2px solid var(--control-focus-ring);outline-offset:3px}.system-diagnostics-project-main{align-items:center;gap:7px;min-width:0;max-width:100%;display:flex}.system-diagnostics-project-name{min-width:0;font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700;line-height:18px;overflow:hidden}.system-diagnostics-status,.system-diagnostics-never{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:11px;font-weight:700;line-height:15px;overflow:hidden}.system-diagnostics-status-ok{color:var(--color-running)}.system-diagnostics-status-warn{color:var(--color-stuck)}.system-diagnostics-never{color:var(--color-text-muted);font-weight:600}.system-diagnostics-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:6px;display:flex}.system-diagnostics-detail{border-top:1px solid var(--surface-card-border);min-width:0;padding:10px}.system-diagnostics-checks{min-width:0;font-family:var(--font-mono);flex-direction:column;gap:7px;font-size:12px;line-height:17px;display:flex}.system-diagnostics-check-row{grid-template-columns:14px minmax(86px,.46fr) minmax(0,1fr);align-items:start;gap:8px;min-width:0;display:grid}.system-diagnostics-check-icon{justify-content:center;align-items:center;padding-top:2px;display:inline-flex}.system-diagnostics-info-dot{border-radius:var(--radius-pill);background:var(--color-text-subtle);width:10px;height:10px;margin-top:1px;display:inline-block}.system-diagnostics-check-name{min-width:0;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.system-diagnostics-check-message{overflow-wrap:anywhere;min-width:0;color:var(--color-text-muted);white-space:pre-wrap}@media(max-width:90rem){.system-diagnostics-row{grid-template-columns:1fr;align-items:stretch}.system-diagnostics-actions{justify-content:flex-start}.system-diagnostics-check-row{grid-template-columns:14px minmax(0,1fr)}.system-diagnostics-check-message{grid-column:2}}.nb-card{background:var(--color-bg-soft);border:1px solid var(--surface-card-border);box-shadow:var(--shadow-nb);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:24px;padding:16px}.nb-card-interactive{cursor:pointer;transition:background-color .16s ease-out,border-color .16s ease-out,box-shadow .16s ease-out,transform .16s ease-out}.nb-card-interactive:hover{background:var(--surface-control-hover);border-color:var(--surface-border-hover)}.nb-card-interactive:active{background:var(--surface-control-active);border-color:var(--control-border-active);transform:translateY(1px)}.nb-btn{border:1px solid var(--control-border);border-radius:var(--radius-pill);font-family:var(--font-body);color:var(--color-text);background:var(--button-default-bg);box-shadow:var(--shadow-nb-sm);-webkit-user-select:none;user-select:none;cursor:pointer;-webkit-tap-highlight-color:transparent;align-items:center;gap:8px;padding:8px 14px;font-size:14px;font-weight:500;line-height:20px;transition:background-color .12s ease-out,border-color .12s ease-out,color .12s ease-out,transform .12s ease-out;display:inline-flex}.nb-btn:hover{background:var(--button-default-hover);border-color:var(--control-border-hover)}.nb-btn:active{background:var(--button-default-active);border-color:var(--control-border-active);transform:translateY(1px)}.nb-btn:focus-visible{box-shadow:var(--shadow-nb-sm),var(--control-focus-shadow)}.nb-btn:disabled,.nb-btn:disabled:hover{background:var(--control-disabled-bg);border-color:var(--control-border);color:var(--control-disabled-text);opacity:1;cursor:not-allowed;transform:none}.nb-btn-primary{background:var(--button-primary-bg);border-color:var(--button-primary-bg);color:var(--button-primary-text)}.nb-btn-primary:hover{background:var(--button-primary-hover);border-color:var(--button-primary-hover)}.nb-btn-primary:active{background:var(--button-primary-active);border-color:var(--button-primary-active)}.nb-btn-primary:disabled,.nb-btn-primary:disabled:hover{background:var(--control-disabled-bg);border-color:var(--control-border);color:var(--control-disabled-text)}.nb-btn-mint,.nb-btn-peach,.nb-btn-blue,.nb-btn-yellow,.nb-btn-purple,.nb-btn-lilac{color:var(--button-accent-text)}.nb-btn-mint{background:var(--button-mint-bg);border-color:var(--button-mint-border)}.nb-btn-mint:hover,.nb-btn-mint:active{background:var(--button-mint-hover);border-color:var(--button-mint-border)}.nb-btn-blue{background:var(--button-blue-bg);border-color:var(--button-blue-border)}.nb-btn-blue:hover,.nb-btn-blue:active{background:var(--button-blue-hover);border-color:var(--button-blue-border)}.nb-btn-yellow{background:var(--button-yellow-bg);border-color:var(--button-yellow-border)}.nb-btn-yellow:hover,.nb-btn-yellow:active{background:var(--button-yellow-hover);border-color:var(--button-yellow-border)}.nb-btn-purple,.nb-btn-lilac{background:var(--button-purple-bg);border-color:var(--button-purple-border)}.nb-btn-purple:hover,.nb-btn-purple:active,.nb-btn-lilac:hover,.nb-btn-lilac:active{background:var(--button-purple-hover);border-color:var(--button-purple-border)}.nb-btn-peach{background:var(--button-pink-bg);border-color:var(--button-pink-border)}.nb-btn-peach:hover,.nb-btn-peach:active{background:var(--button-pink-hover);border-color:var(--button-pink-border)}.nb-btn-danger{background:var(--color-crashed-bg);border-color:var(--button-danger-border);color:var(--color-crashed)}.nb-btn-danger:hover{background:var(--button-danger-hover-bg);border-color:var(--button-danger-border)}.nb-btn-danger:active{background:var(--button-danger-active-bg);border-color:var(--button-danger-border)}.nb-input{border:1px solid var(--control-border);background:var(--surface-input);color:var(--color-text);caret-color:var(--native-accent);accent-color:var(--native-accent);font-family:var(--font-body);box-shadow:var(--shadow-nb-sm);border-radius:10px;padding:10px 14px;font-size:14px;font-weight:500;line-height:20px;transition:border-color .12s ease-out,background-color .12s ease-out,box-shadow .12s ease-out}.nb-input:hover:not(:disabled):not([readonly]){border-color:var(--control-border-hover)}.nb-input:focus,.nb-input:focus-visible{border-color:var(--control-border-active);background:var(--surface-input-focus);box-shadow:var(--shadow-nb-sm),var(--control-focus-shadow);outline:none}.nb-input::placeholder{color:var(--control-placeholder);opacity:1}.nb-input:disabled,.nb-input[readonly]{background:var(--control-disabled-bg);color:var(--control-disabled-text);cursor:not-allowed}select.nb-input{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;background-color:var(--control-select-bg)}select.nb-input option{background:var(--control-option-bg);color:var(--color-text)}select.nb-input option:checked{background:var(--control-option-selected);color:var(--color-text)}:where([role=dialog] .nb-card,.nb-card[role=dialog]),.fixed.inset-0 .nb-card{background:var(--surface-modal)!important;border-color:var(--surface-card-border)!important}.fixed.inset-0 :where(.nb-input,input,textarea,select){background-color:var(--surface-input)!important;color:var(--color-text)!important;caret-color:var(--native-accent)!important;accent-color:var(--native-accent)!important}.fixed.inset-0 :where(.nb-input,input,textarea,select):focus{background-color:var(--surface-input-focus)!important}.scroll-frame{background-clip:padding-box;overflow:hidden}.scroll-frame-body{overscroll-behavior:contain;scrollbar-gutter:stable;min-height:0;overflow:auto}.edge-scroll-list{overscroll-behavior:contain;margin-right:-12px;padding-right:12px}.nb-badge{border:1px solid var(--control-border);border-radius:var(--radius-pill);font-family:var(--font-body);color:var(--color-text);background:var(--surface-control);align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:500;line-height:16px;display:inline-flex}.nb-status{border:1px solid var(--control-border);border-radius:var(--radius-pill);font-family:var(--font-body);color:var(--color-text-muted);background:var(--surface-control);align-items:center;gap:5px;padding:4px 10px 4px 9px;font-size:11px;font-weight:500;line-height:16px;display:inline-flex}.nb-status:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px}:where(button,a,.nb-btn,.nb-badge,.nb-status) svg{color:currentColor;flex-shrink:0}.nb-btn-primary svg{color:currentColor}.dimension-segmented{border-radius:var(--radius-pill);background:var(--surface-segmented);border:1px solid var(--control-border);background-clip:padding-box;gap:2px;padding:2px;display:flex;overflow:visible}.dimension-segment{border-radius:var(--radius-pill);min-width:0;color:var(--color-text-muted);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;justify-content:center;align-items:center;transition:background-color .14s ease-out,color .14s ease-out,transform .12s ease-out;display:inline-flex}.dimension-segment:hover{color:var(--color-text);background:var(--surface-control-hover)}.dimension-segment:active{background:var(--surface-control-active);transform:translateY(1px)}.dimension-segment-active{color:var(--color-text);background:var(--surface-control-selected);box-shadow:inset 0 0 0 1px var(--control-border-selected)}.dimension-menu-item{border-radius:var(--radius-md);width:100%;color:var(--color-text-muted);box-shadow:none;-webkit-tap-highlight-color:transparent;background:0 0;border:0;align-items:center;transition:background-color .14s ease-out,color .14s ease-out,transform .12s ease-out;display:flex;position:relative}.dimension-menu-item:before{content:"";border-radius:var(--radius-pill);background:0 0;width:3px;height:calc(100% - 18px);transition:background-color .14s ease-out,box-shadow .14s ease-out;position:absolute;top:50%;left:4px;transform:translateY(-50%)}.dimension-menu-item:hover{color:var(--color-text);background:var(--menu-hover)}.dimension-menu-item:active{background:var(--surface-control-active);transform:translateY(1px)}.dimension-menu-item-active{color:var(--color-text);background:var(--menu-active)}.dimension-menu-item-active:before{background:var(--native-accent);box-shadow:0 0 14px var(--native-accent)}@supports (color:color-mix(in lab,red,red)){.dimension-menu-item-active:before{box-shadow:0 0 14px color-mix(in oklch,var(--native-accent) 48%,transparent)}}.dimension-menu-item svg{color:currentColor}.project-page-layout{flex:1;grid-template-columns:minmax(280px,320px) minmax(0,1fr);gap:20px;min-height:0;display:grid}.project-list-panel{flex-direction:column;gap:12px;height:100%;min-height:0;padding:12px;display:flex;overflow:hidden}.project-list-toolbar{border-bottom:1px solid var(--surface-card-border);flex-direction:column;flex-shrink:0;gap:10px;padding-bottom:10px;display:flex}.project-list-title{font-family:var(--font-heading);text-overflow:ellipsis;white-space:nowrap;font-size:24px;font-weight:700;line-height:30px;overflow:hidden}.project-detail-shell{flex-direction:column;flex:1;gap:16px;width:100%;min-height:0;display:flex}.project-detail-header{flex-direction:column;flex-shrink:0;gap:8px;padding:16px;display:flex}.project-detail-title-row{align-items:center;gap:12px;min-width:0;display:flex}.project-detail-back{flex-shrink:0;padding:6px 12px}.project-detail-title-block{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.project-detail-kicker{min-width:0;color:var(--color-text-muted);align-items:center;gap:8px;font-size:12px;font-weight:600;line-height:16px;display:flex}.project-detail-title{font-family:var(--font-heading);text-overflow:ellipsis;white-space:nowrap;font-size:30px;font-weight:700;line-height:36px;overflow:hidden}.project-detail-board{flex-shrink:0;margin-left:auto}.project-detail-tabs{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.project-detail-tab{border:1px solid var(--control-border);border-radius:var(--radius-pill);background:var(--button-default-bg);min-height:34px;box-shadow:var(--shadow-nb-sm);color:var(--color-text-muted);cursor:pointer;font-family:var(--font-body);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:7px;padding:6px 12px;font-size:13px;font-weight:600;line-height:18px;transition:background-color .12s ease-out,border-color .12s ease-out,color .12s ease-out,transform .12s ease-out;display:inline-flex}.project-detail-tab:hover{border-color:var(--control-border-hover);background:var(--button-default-hover);color:var(--color-text)}.project-detail-tab:active{border-color:var(--control-border-active);background:var(--button-default-active);transform:translateY(1px)}.project-detail-tab:focus-visible{box-shadow:var(--shadow-nb-sm),var(--control-focus-shadow)}.project-detail-tab-active{border-color:var(--button-primary-bg);background:var(--button-primary-bg);color:var(--button-primary-text)}.project-detail-content{flex-direction:column;flex:1;min-height:0;padding-right:4px;display:flex}.project-overview{padding:16px}.project-overview dl{grid-template-columns:minmax(116px,160px) minmax(0,1fr);gap:10px 18px;display:grid}.project-overview-row{display:contents}.project-overview-row dt{color:var(--color-text-muted);font-size:13px;font-weight:700;line-height:20px}.project-overview-row dd{overflow-wrap:anywhere;min-width:0;color:var(--color-text);font-family:var(--font-mono);margin:0;font-size:13px;font-weight:500;line-height:20px}.project-config-card{flex-direction:column;flex:1;min-height:0;padding-bottom:0;display:flex;overflow:hidden}.system-env-settings-editor{border:1px solid var(--surface-card-border);background:var(--color-bg-soft);min-height:0;box-shadow:var(--shadow-nb);border-radius:24px;flex-direction:column;flex:1;display:flex;overflow:hidden}.system-env-settings-editor .project-config-toolbar{border-radius:24px 24px 0 0;margin:0}.system-env-settings-editor .project-config-settings{max-height:none;margin-left:0;margin-right:0}.project-config-toolbar{z-index:8;border-bottom:2px solid #f0edf826;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:16px;margin:-16px -16px 0;padding:16px;display:flex}@supports (color:color-mix(in lab,red,red)){.project-config-toolbar{border-bottom:2px solid color-mix(in oklch,var(--color-text) 15%,transparent)}}.project-config-toolbar{background:var(--surface-table-head);border-radius:24px 24px 0 0}.project-config-path{border:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--surface-code);max-width:min(72vw,760px);font-family:var(--font-mono);text-overflow:ellipsis;vertical-align:middle;white-space:nowrap;padding:4px 8px;font-size:13px;font-weight:600;line-height:18px;display:inline-block;overflow:hidden}.project-config-settings{overscroll-behavior:contain;flex-direction:column;flex:1;gap:14px;min-height:0;margin-left:-16px;margin-right:-16px;padding:16px 0;display:flex;overflow:auto}.project-config-section{border-bottom:1px solid var(--surface-card-border);grid-template-columns:minmax(180px,240px) minmax(0,1fr);gap:18px;margin:0 16px;padding-block:2px 16px;display:grid}.project-config-section:last-child{border-bottom:0;padding-bottom:0}.project-config-section-head{flex-direction:column;gap:5px;min-width:0;display:flex}.project-config-section-head h3{font-size:15px;font-weight:700;line-height:20px}.project-config-section-head p,.project-config-help,.project-config-empty{color:var(--color-text-muted);margin:0;font-size:12px;font-weight:500;line-height:17px}.project-config-grid{grid-template-columns:repeat(2,minmax(220px,1fr));gap:12px;min-width:0;display:grid}.project-config-field{flex-direction:column;gap:7px;min-width:0;display:flex}.project-config-field .nb-input{width:100%;min-width:0}.project-config-field-disabled{opacity:.72}.project-config-directory-control{grid-template-columns:minmax(0,1fr) auto;gap:8px;min-width:0;display:grid}.project-config-directory-control .nb-btn{white-space:nowrap;min-height:42px;padding-inline:12px}.project-config-label{min-width:0;color:var(--color-text);justify-content:space-between;align-items:center;gap:8px;font-size:13px;font-weight:700;line-height:18px;display:flex}.project-config-label span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.project-config-label code{color:var(--color-text-subtle);font-family:var(--font-mono);flex-shrink:0;font-size:10px;font-weight:600}.project-config-toggle-row{border:1px solid var(--control-border);background:var(--surface-input);min-height:42px;box-shadow:var(--shadow-nb-sm);color:var(--color-text);border-radius:10px;align-items:center;gap:10px;padding:10px 12px;font-size:13px;font-weight:700;line-height:18px;display:inline-flex}.project-config-toggle-row input{width:18px;height:18px;margin:0}.project-config-field-disabled .project-config-toggle-row{background:var(--control-disabled-bg);color:var(--control-disabled-text);cursor:not-allowed}.project-config-field-disabled .project-config-toggle-row input{cursor:not-allowed}.project-config-custom-list{flex-direction:column;gap:10px;min-width:0;display:flex}.project-config-custom-row{grid-template-columns:minmax(150px,220px) minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;display:grid}.project-config-custom-row code{border:1px solid var(--control-border);background:var(--surface-code);color:var(--color-text-muted);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;border-radius:10px;padding:9px 10px;font-size:12px;font-weight:600;line-height:18px;overflow:hidden}.project-config-custom-add{margin-top:2px}@media(max-width:1060px){.project-page-layout{grid-template-columns:1fr}.project-list-panel{max-height:360px}}@media(max-width:720px){.project-detail-title-row{flex-wrap:wrap;align-items:stretch}.project-detail-board{justify-content:center;width:100%;margin-left:0}.project-detail-tab{flex:120px}.project-config-toolbar{flex-direction:column;align-items:stretch}.project-config-toolbar>.flex{flex-wrap:wrap}.project-config-path{max-width:100%}.project-config-section{grid-template-columns:1fr;gap:10px}.project-config-grid,.project-config-directory-control{grid-template-columns:1fr}.project-config-directory-control .nb-btn{justify-content:center}.project-config-custom-row{grid-template-columns:1fr}.project-config-custom-row .nb-btn{justify-content:center}.project-overview-row{grid-template-columns:1fr;gap:2px;padding-block:2px;display:grid}.project-overview dl{grid-template-columns:1fr;gap:8px}}.arrange-flow-shell{border:1px solid var(--surface-card-border);border-radius:var(--radius-lg);background:var(--color-bg-soft);box-shadow:var(--shadow-nb)}.arrange-flow-shell .react-flow{background:0 0}.arrange-flow-shell .react-flow__panel.react-flow__controls{flex-direction:column;display:flex;overflow:hidden;border:1px solid var(--control-border)!important;border-radius:var(--radius-md)!important;background:var(--surface-modal)!important;box-shadow:var(--shadow-nb-sm)!important}.arrange-flow-shell .react-flow__controls-button{width:28px;height:28px;transition:background-color .12s ease-out,color .12s ease-out;border:0!important;border-bottom:1px solid var(--control-border)!important;background:var(--surface-control)!important;color:var(--color-text-muted)!important;box-shadow:none!important}.arrange-flow-shell .react-flow__controls-button:last-child{border-bottom:0!important}.arrange-flow-shell .react-flow__controls-button:hover{background:var(--surface-control-hover)!important;color:var(--color-text)!important}.arrange-flow-shell .react-flow__controls-button:active{background:var(--surface-control-active)!important;color:var(--color-text)!important}.arrange-flow-shell .react-flow__controls-button:disabled{cursor:not-allowed;background:var(--control-disabled-bg)!important;color:var(--control-disabled-text)!important}.arrange-flow-shell .react-flow__controls-button svg{fill:currentColor!important;color:currentColor!important}@keyframes arrange-flow-working-edge{to{stroke-dashoffset:-28px}}.arrange-flow-shell .react-flow__edge.arrange-flow-edge-working .react-flow__edge-path{stroke-linecap:round;animation:.9s linear infinite arrange-flow-working-edge}.arrange-flow-shell .react-flow__edge.arrange-flow-edge-working .react-flow__edge-interaction{animation:none}.prose-chat{color:var(--color-text);line-height:1.6}.prose-chat>:first-child{margin-top:0}.prose-chat>:last-child{margin-bottom:0}.prose-chat h1{font-family:var(--font-heading);margin:1em 0 .5em;font-size:1.5rem;font-weight:500}.prose-chat h2{font-family:var(--font-heading);margin:1em 0 .5em;font-size:1.25rem;font-weight:500}.prose-chat h3{font-family:var(--font-heading);margin:.8em 0 .4em;font-size:1.1rem;font-weight:500}.prose-chat h4,.prose-chat h5,.prose-chat h6{font-family:var(--font-heading);margin:.8em 0 .3em;font-weight:500}.prose-chat p{margin:.6em 0}.prose-chat ul,.prose-chat ol{margin:.6em 0;padding-left:1.6em}.prose-chat ul{list-style:outside}.prose-chat ol{list-style:decimal}.prose-chat li,.prose-chat li>ul,.prose-chat li>ol{margin:.2em 0}.prose-chat code{font-family:var(--font-mono);background:var(--surface-code);border:1px solid var(--color-border-light);border-radius:4px;padding:0 4px;font-size:.9em}.prose-chat pre{background:var(--surface-pre);border:1px solid var(--color-border-light);font-family:var(--font-mono);border-radius:10px;margin:.8em 0;padding:12px;font-size:.85em;line-height:1.45;overflow-x:auto}.prose-chat pre code{font-size:inherit;background:0 0;border:0;padding:0}.prose-chat blockquote{border-left:1px solid var(--color-hairline);color:var(--color-text-muted);margin:.8em 0;padding-left:1em}.prose-chat table{border-collapse:collapse;border:1px solid var(--color-border-light);border-radius:10px;margin:.8em 0;overflow:hidden}.prose-chat th,.prose-chat td{border:1px solid var(--color-border-light);text-align:left;padding:6px 10px}.prose-chat th{background:var(--surface-table-head);font-weight:500}.prose-chat a{color:var(--color-text);text-underline-offset:2px;-webkit-text-decoration:underline #cdbcff6b;text-decoration:underline #cdbcff6b}.prose-chat a:hover{color:var(--color-cta);-webkit-text-decoration-color:var(--color-cta);text-decoration-color:var(--color-cta)}.prose-chat hr{border:0;border-top:1px solid var(--color-border-light);margin:1em 0}.hljs{color:var(--color-text);background:0 0}.hljs-comment,.hljs-quote{color:var(--color-text-subtle)}.hljs-keyword,.hljs-selector-tag,.hljs-built_in{color:var(--color-text)}.hljs-string,.hljs-title,.hljs-name,.hljs-number,.hljs-literal{color:var(--color-text-muted)}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-full{top:100%}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.col-span-full{grid-column:1/-1}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.m-1{margin:calc(var(--spacing) * 1)}.m-auto{margin:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-8{margin-block:calc(var(--spacing) * 8)}.-mt-0\.5{margin-top:calc(var(--spacing) * -.5)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-20{height:calc(var(--spacing) * 20)}.h-96{height:calc(var(--spacing) * 96)}.h-\[70vh\]{height:70vh}.h-\[calc\(100vh-2rem\)\]{height:calc(100vh - 2rem)}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-14{max-height:calc(var(--spacing) * 14)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[28rem\]{max-height:28rem}.max-h-\[46px\]{max-height:46px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[88vh\]{max-height:88vh}.max-h-\[calc\(100vh-2rem\)\]{max-height:calc(100vh - 2rem)}.max-h-\[calc\(100vh-3rem\)\]{max-height:calc(100vh - 3rem)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[46px\]{min-height:46px}.min-h-\[120px\]{min-height:120px}.min-h-\[200px\]{min-height:200px}.min-h-\[240px\]{min-height:240px}.min-h-\[280px\]{min-height:280px}.min-h-\[420px\]{min-height:420px}.min-h-full{min-height:100%}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/3{width:66.6667%}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-52{width:calc(var(--spacing) * 52)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\[min\(92vw\,520px\)\]{width:min(92vw,520px)}.w-\[min\(92vw\,640px\)\]{width:min(92vw,640px)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[90\%\]{max-width:90%}.max-w-\[480px\]{max-width:480px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[90px\]{min-width:90px}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[220px\]{min-width:220px}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-y{resize:vertical}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-cols-\[minmax\(240px\,1fr\)\]{grid-auto-columns:minmax(240px,1fr)}.grid-flow-col{grid-auto-flow:column}.auto-rows-\[82px\]{grid-auto-rows:82px}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[100px_60px_1fr\]{grid-template-columns:100px 60px 1fr}.grid-cols-\[130px_minmax\(140px\,1\.2fr\)_minmax\(140px\,1\.5fr\)_80px_110px_90px_90px_100px\]{grid-template-columns:130px minmax(140px,1.2fr) minmax(140px,1.5fr) 80px 110px 90px 90px 100px}.grid-cols-\[180px_120px_minmax\(100px\,1fr\)_minmax\(160px\,2fr\)\]{grid-template-columns:180px 120px minmax(100px,1fr) minmax(160px,2fr)}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[repeat\(auto-fill\,minmax\(170px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(280px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.grid-cols-\[repeat\(auto-fit\,minmax\(15rem\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}.grid-rows-\[1fr_auto\]{grid-template-rows:1fr auto}.grid-rows-\[36px_minmax\(0\,1fr\)\]{grid-template-rows:36px minmax(0,1fr)}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-2\.5{column-gap:calc(var(--spacing) * 2.5)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}:where(.divide-y-2>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(2px * var(--tw-divide-y-reverse));border-bottom-width:calc(2px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[var\(--color-text\)\]\/20>:not(:last-child)){border-color:#f0edf833}@supports (color:color-mix(in lab,red,red)){:where(.divide-\[var\(--color-text\)\]\/20>:not(:last-child)){border-color:color-mix(in oklab,var(--color-text) 20%,transparent)}}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-\[2px\]{border-style:var(--tw-border-style);border-width:2px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-t-\[1\.5px\]{border-top-style:var(--tw-border-style);border-top-width:1.5px}.border-t-\[3px\]{border-top-style:var(--tw-border-style);border-top-width:3px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-\[3px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:3px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--color-border-light\)\]{border-color:var(--color-border-light)}.border-\[var\(--color-crashed\)\]{border-color:var(--color-crashed)}.border-\[var\(--color-crashed-bg\)\]{border-color:var(--color-crashed-bg)}.border-\[var\(--color-info-bg\)\]{border-color:var(--color-info-bg)}.border-\[var\(--color-running\)\]{border-color:var(--color-running)}.border-\[var\(--color-stuck\)\]{border-color:var(--color-stuck)}.border-\[var\(--color-stuck-bg\)\]{border-color:var(--color-stuck-bg)}.border-\[var\(--color-text\)\]{border-color:var(--color-text)}.border-\[var\(--color-text\)\]\/10{border-color:#f0edf81a}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-text\)\]\/10{border-color:color-mix(in oklab,var(--color-text) 10%,transparent)}}.border-\[var\(--color-text\)\]\/15{border-color:#f0edf826}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-text\)\]\/15{border-color:color-mix(in oklab,var(--color-text) 15%,transparent)}}.border-\[var\(--control-border\)\]{border-color:var(--control-border)}.border-\[var\(--control-border-selected\)\]{border-color:var(--control-border-selected)}.border-\[var\(--surface-card-border\)\]{border-color:var(--surface-card-border)}.bg-\[rgba\(45\,55\,72\,0\.4\)\]{background-color:#2d374866}.bg-\[rgba\(45\,55\,72\,0\.5\)\]{background-color:#2d374880}.bg-\[rgba\(45\,55\,72\,0\.6\)\]{background-color:#2d374899}.bg-\[var\(--color-accent-mint\)\]{background-color:var(--color-accent-mint)}.bg-\[var\(--color-accent-pink\)\]{background-color:var(--color-accent-pink)}.bg-\[var\(--color-accent-purple\)\]{background-color:var(--color-accent-purple)}.bg-\[var\(--color-accent-yellow\)\]{background-color:var(--color-accent-yellow)}.bg-\[var\(--color-bg\)\]{background-color:var(--color-bg)}.bg-\[var\(--color-bg-cream\)\]{background-color:var(--color-bg-cream)}.bg-\[var\(--color-bg-soft\)\]{background-color:var(--color-bg-soft)}.bg-\[var\(--color-border-light\)\]{background-color:var(--color-border-light)}.bg-\[var\(--color-crashed-bg\)\]{background-color:var(--color-crashed-bg)}.bg-\[var\(--color-cta\)\]{background-color:var(--color-cta)}.bg-\[var\(--color-info-bg\)\]{background-color:var(--color-info-bg)}.bg-\[var\(--color-primary\)\]{background-color:var(--color-primary)}.bg-\[var\(--color-running\)\]{background-color:var(--color-running)}.bg-\[var\(--color-running-bg\)\]{background-color:var(--color-running-bg)}.bg-\[var\(--color-secondary\)\]{background-color:var(--color-secondary)}.bg-\[var\(--color-snow-white\)\]{background-color:var(--color-snow-white)}.bg-\[var\(--color-stuck-bg\)\]{background-color:var(--color-stuck-bg)}.bg-\[var\(--color-text\)\]{background-color:var(--color-text)}.bg-\[var\(--surface-code\)\]{background-color:var(--surface-code)}.bg-\[var\(--surface-control\)\]{background-color:var(--surface-control)}.bg-\[var\(--surface-control-selected\)\]{background-color:var(--surface-control-selected)}.bg-\[var\(--surface-input\)\]{background-color:var(--surface-input)}.bg-\[var\(--surface-menu\)\]{background-color:var(--surface-menu)}.bg-\[var\(--surface-progress-track\)\]{background-color:var(--surface-progress-track)}.bg-\[var\(--surface-table-head\)\]{background-color:var(--surface-table-head)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-\[family-name\:var\(--font-body\)\]{font-family:var(--font-body)}.font-\[family-name\:var\(--font-heading\)\]{font-family:var(--font-heading)}.font-\[family-name\:var\(--font-mono\)\],.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-\[22px\]{--tw-leading:22px;line-height:22px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--color-bg\)\]{color:var(--color-bg)}.text-\[var\(--color-crashed\)\]{color:var(--color-crashed)}.text-\[var\(--color-graphite\)\]{color:var(--color-graphite)}.text-\[var\(--color-info\)\]{color:var(--color-info)}.text-\[var\(--color-running\)\]{color:var(--color-running)}.text-\[var\(--color-stuck\)\]{color:var(--color-stuck)}.text-\[var\(--color-text\)\]{color:var(--color-text)}.text-\[var\(--color-text\)\]\/40{color:#f0edf866}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/40{color:color-mix(in oklab,var(--color-text) 40%,transparent)}}.text-\[var\(--color-text\)\]\/45{color:#f0edf873}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/45{color:color-mix(in oklab,var(--color-text) 45%,transparent)}}.text-\[var\(--color-text\)\]\/50{color:#f0edf880}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/50{color:color-mix(in oklab,var(--color-text) 50%,transparent)}}.text-\[var\(--color-text\)\]\/60{color:#f0edf899}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/60{color:color-mix(in oklab,var(--color-text) 60%,transparent)}}.text-\[var\(--color-text\)\]\/70{color:#f0edf8b3}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/70{color:color-mix(in oklab,var(--color-text) 70%,transparent)}}.text-\[var\(--color-text-muted\)\]{color:var(--color-text-muted)}.text-\[var\(--color-text-subtle\)\]{color:var(--color-text-subtle)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.decoration-2{text-decoration-thickness:2px}.underline-offset-2{text-underline-offset:2px}.accent-\[var\(--color-cta\)\]{accent-color:var(--color-cta)}.opacity-15{opacity:.15}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[1px_1px_0_var\(--color-text\)\]{--tw-shadow:1px 1px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[2px_2px_0_var\(--color-text\)\]{--tw-shadow:2px 2px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[6px_6px_0_var\(--color-text\)\]{--tw-shadow:6px 6px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[var\(--shadow-nb-sm\)\]{--tw-shadow:var(--shadow-nb-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-nb{--tw-shadow:var(--tw-shadow-color,#d6c7ff1f) 0 0 0 1px inset;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.\[filter\:url\(\#threshold\)_blur\(0\.6px\)\]{filter:url(#threshold)blur(.6px)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,background-color\,border-color\]{transition-property:transform,background-color,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-\[180ms\]{--tw-duration:.18s;transition-duration:.18s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.hover\:border-\[var\(--color-text\)\]:hover{border-color:var(--color-text)}.hover\:border-\[var\(--surface-border-hover\)\]:hover{border-color:var(--surface-border-hover)}.hover\:bg-\[var\(--color-accent-mint\)\]:hover{background-color:var(--color-accent-mint)}.hover\:bg-\[var\(--surface-control-hover\)\]:hover{background-color:var(--surface-control-hover)}.hover\:text-\[var\(--color-crashed\)\]:hover{color:var(--color-crashed)}.hover\:text-\[var\(--color-text\)\]:hover{color:var(--color-text)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.hover\:shadow-\[3px_3px_0_var\(--color-text\)\]:hover{--tw-shadow:3px 3px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[var\(--color-text\)\]:focus-visible{--tw-ring-color:var(--color-text)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-\[-4px\]:focus-visible{outline-offset:-4px}.focus-visible\:outline-\[var\(--control-focus-ring\)\]:focus-visible{outline-color:var(--control-focus-ring)}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-1{grid-column-start:1}.md\:col-start-2{grid-column-start:2}.md\:row-start-1{grid-row-start:1}.md\:mt-2{margin-top:calc(var(--spacing) * 2)}.md\:min-h-0{min-height:calc(var(--spacing) * 0)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[220px_1fr\]{grid-template-columns:220px 1fr}.md\:grid-cols-\[minmax\(0\,1fr\)_minmax\(260px\,340px\)\]{grid-template-columns:minmax(0,1fr) minmax(260px,340px)}.md\:grid-cols-\[minmax\(0\,1fr\)_minmax\(280px\,380px\)\]{grid-template-columns:minmax(0,1fr) minmax(280px,380px)}.md\:flex-col{flex-direction:column}.md\:gap-0\.5{gap:calc(var(--spacing) * .5)}.md\:overflow-hidden{overflow:hidden}.md\:overflow-y-auto{overflow-y:auto}.md\:border-r-\[3px\]{border-right-style:var(--tw-border-style);border-right-width:3px}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:pt-3{padding-top:calc(var(--spacing) * 3)}.md\:pr-0{padding-right:calc(var(--spacing) * 0)}.md\:pr-1{padding-right:calc(var(--spacing) * 1)}}@media(min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.font-bold,.font-semibold{font-weight:500!important}.bg-white{color:var(--color-text);background-color:var(--color-bg-soft)!important}.bg-surface-input{background:var(--surface-input)!important}.bg-color-bg-soft{background:var(--color-bg-soft)!important}.bg-color-bg-soft-button{color:var(--color-text);background-color:var(--color-bg-soft)!important}.overflow-auto,.overflow-y-auto,.overflow-x-auto{overscroll-behavior:contain;scrollbar-color:#cdbcff61 transparent;scrollbar-gutter:stable}.overflow-auto,.overflow-y-auto{min-height:0}.overflow-x-auto{min-width:0}.bg-green-600{background-color:var(--color-running)!important}.bg-gray-400{background-color:var(--color-text-subtle)!important}[class*="border-[var(--color-text)]"],[class*="border-[var(--color-border-light)]"]{border-color:var(--color-border-light)!important}[class*=border-dashed]{border-style:solid!important;border-color:var(--surface-card-border)!important}[class*="border-[3px]"],[class*="border-[2px]"],[class~=border-2]{border-width:1px!important}[class*="border-t-[3px]"],[class*="border-t-[2px]"],[class*=border-t-2]{border-top-width:1px!important}[class*="border-r-[3px]"],[class*="border-r-[2px]"],[class*=border-r-2]{border-right-width:1px!important}[class*="border-b-[3px]"],[class*="border-b-[2px]"],[class*=border-b-2]{border-bottom-width:1px!important}[class*="border-l-[3px]"],[class*="border-l-[2px]"],[class*=border-l-2]{border-left-width:1px!important}[class*="shadow-["]{box-shadow:var(--shadow-nb-sm)!important}:where(input,textarea,select)[class*=border-]:not([class~=border-0]){background-color:var(--surface-input)!important;color:var(--color-text)!important;box-shadow:none!important}:where(input,textarea,select)[class*=border-]:not([class~=border-0]):focus{background-color:var(--surface-input-focus)!important}[class*="bg-black/30"],[class*="bg-[rgba(45,55,72"]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:var(--surface-overlay)!important}:where(table){color:var(--color-text)}:where(thead),:where(thead tr),:where(table th){background-color:var(--surface-table-head)!important;color:var(--color-text)!important}:where(table) :where(th,td),:where(tbody tr){border-color:var(--surface-table-border)!important}:where(tbody tr:hover){background-color:var(--surface-table-row-hover)}:where(button,a)[class*=rounded-xl],:where(button,a)[class*=rounded-lg],:where(button,a)[class*=rounded-md]{border-radius:var(--radius-pill)!important}:where(button,a)[class*="bg-[var(--color-accent-mint)]"],:where(button,a)[class*="bg-[var(--color-accent-yellow)]"],:where(button,a)[class*="bg-[var(--color-accent-purple)]"],:where(button,a)[class*="bg-[var(--color-accent-pink)]"]{color:var(--color-text)!important}}@font-face{font-family:SAIBA-45;src:url(/fonts/saiba-45.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}.slide-switch{cursor:pointer;flex:none;display:inline-flex;position:relative}.slide-switch input{opacity:0;width:0;height:0;position:absolute}.slide-switch-track{border-radius:var(--radius-pill);background:var(--surface-segmented);border:1px solid var(--control-border);background-clip:padding-box;align-items:center;gap:2px;padding:2px;display:inline-flex;position:relative}.slide-switch-cell{z-index:1;width:34px;height:28px;color:var(--color-text-muted);letter-spacing:.02em;font-size:12px;font-weight:600;line-height:1;font-family:var(--font-mono);justify-content:center;align-items:center;transition:color .16s ease-out;display:inline-flex;position:relative}.slide-switch-thumb{z-index:0;border-radius:var(--radius-pill);background:var(--surface-control-selected);width:34px;height:calc(100% - 4px);box-shadow:inset 0 0 0 1px var(--control-border-selected);transition:transform .24s cubic-bezier(.4,0,.2,1);position:absolute;top:2px;left:2px}.slide-switch input:checked~.slide-switch-track .slide-switch-thumb{transform:translate(36px)}.slide-switch input:not(:checked)~.slide-switch-track .slide-switch-a,.slide-switch input:checked~.slide-switch-track .slide-switch-b{color:var(--color-text)}.slide-switch input:focus-visible~.slide-switch-track{outline:2px solid var(--color-cta);outline-offset:2px}.app-shell-sidebar-collapsed .slide-switch-cell{width:24px;height:24px;font-size:10px}.app-shell-sidebar-collapsed .slide-switch-thumb{width:24px}.app-shell-sidebar-collapsed .slide-switch input:checked~.slide-switch-track .slide-switch-thumb{transform:translate(26px)}.slide-tabs{border:2px solid var(--control-border);background:var(--surface-segmented);border-radius:30px;align-items:stretch;width:100%;padding:4px;display:flex;position:relative;overflow:hidden}.slide-tabs-bg{background:var(--surface-control-selected);box-shadow:inset 0 0 0 1px var(--control-border-selected);z-index:0;pointer-events:none;border-radius:30px;transition:transform .42s cubic-bezier(.175,.885,.32,1.275),width .42s cubic-bezier(.175,.885,.32,1.275);position:absolute;top:4px;bottom:4px;left:0}.slide-tabs-label{z-index:1;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--color-text-muted);background:0 0;border:none;border-radius:30px;flex:1 1 0;justify-content:center;align-items:center;gap:5px;padding:5px 8px;font-size:13px;font-weight:500;line-height:1.2;transition:color .3s;display:inline-flex;position:relative;overflow:hidden}.slide-tabs-label.is-active{color:var(--color-text);font-weight:700}.slide-tabs-label:hover:not(.is-active){color:var(--color-text)}.sticky-thead th{z-index:20;background:var(--color-bg-cream);position:sticky;top:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
9
9
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
10
10
|
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-BUGHZCVW.js"></script>
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DEAu8kry.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.origin-tabs{display:flex;gap:4px;padding:8px 2px 0;flex-wrap:wrap}.origin-tab{border:1px solid var(--surface-card-border);background:transparent;color:var(--color-text-muted);border-radius:12px;font-size:11px;font-weight:600;padding:3px 10px;cursor:pointer;white-space:nowrap;transition:background-color .14s ease,color .14s ease}.origin-tab:hover{background:var(--surface-control-hover);color:var(--color-text)}.origin-tab.is-active{background:var(--menu-active);color:var(--color-text);border-color:transparent}.strands-container{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;pointer-events:none;transition:opacity .9s cubic-bezier(.22,1,.36,1)}.strands-container.strands-active{opacity:1}.strands-canvas{display:block;width:100%;height:100%;background:transparent}@media(prefers-reduced-motion:reduce){.strands-container{transition-duration:.01ms}}.home-intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;pointer-events:none;background:var(--color-bg);transition:background-color .65s ease}.home-intro--fill{background:transparent}.home-intro-orb{position:fixed;left:50%;top:50%;width:132px;height:132px;transform:translate(-50%,-50%) scale(4);transform-origin:center;will-change:transform,opacity}.home-intro-strands{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;border-radius:50%;overflow:hidden}.home-intro-orb:before{content:"";display:none;position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;border:1px solid rgba(224,236,255,.42);border-radius:50%;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.2),transparent 28%),linear-gradient(145deg,#d2e1ff1a,#8066ff0b 48%,#05091c29);box-shadow:inset 0 1px #ffffff59,inset 0 -18px 42px #3943a01f,0 0 0 1px #719fff14,0 14px 42px #00000052;opacity:0;transition:opacity .31s ease}.home-intro--ring .home-intro-orb:before,.home-intro--move .home-intro-orb:before,.home-intro--fill .home-intro-orb:before{opacity:1;-webkit-backdrop-filter:blur(24px) saturate(150%);backdrop-filter:blur(24px) saturate(150%)}.home-intro-orb:after{content:"";display:none;position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;pointer-events:none;border-radius:50%;background:radial-gradient(circle at 30% 23%,#fff9,#fff0 20%),radial-gradient(circle at 60% 15%,#ffffff38,#fff0 8%),radial-gradient(circle at 73% 76%,#afdcff2e,#fff0 16%);opacity:0;transition:opacity .31s ease}.home-intro--ring .home-intro-orb:after,.home-intro--move .home-intro-orb:after,.home-intro--fill .home-intro-orb:after{opacity:1}.home-intro--ring .home-intro-orb{animation:home-intro-orb-in .3s cubic-bezier(.22,1,.36,1) both}.home-intro--move .home-intro-orb,.home-intro--fill .home-intro-orb{transition:transform 1125ms cubic-bezier(.22,1,.36,1),opacity .48s ease}.home-intro--fill .home-intro-orb{opacity:0}@keyframes home-intro-orb-in{0%{opacity:0;transform:translate(-50%,-50%) scale(3.4)}to{opacity:1;transform:translate(-50%,-50%) scale(4)}}.home-intro-ring{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;overflow:visible;opacity:0;filter:drop-shadow(0 0 4px rgba(140,130,255,.4));transition:opacity .15s ease}.home-intro-ring-circle{stroke-dasharray:1;stroke-dashoffset:1;transform-box:fill-box;transform-origin:center}.home-intro--ring .home-intro-ring{opacity:1}.home-intro--ring .home-intro-ring-circle{animation:home-intro-ring-draw 1.25s cubic-bezier(.32,.9,.3,1) forwards,home-intro-ring-spin 1.25s linear}.home-intro--move .home-intro-ring-circle,.home-intro--fill .home-intro-ring-circle{stroke-dashoffset:0}@keyframes home-intro-ring-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes home-intro-ring-spin{0%{transform:rotate(-90deg)}to{transform:rotate(270deg)}}.home-intro-lines{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible}.home-intro-draw{stroke-dasharray:1;stroke-dashoffset:1}.home-intro--ring .home-intro-draw{animation:home-intro-line-draw .62s cubic-bezier(.5,0,.2,1) forwards}.home-intro--move .home-intro-draw{stroke-dashoffset:0}.home-intro--fill .home-intro-draw{stroke-dashoffset:0;stroke-width:0;transition:stroke-width .7s ease .12s}.home-intro--fill .home-intro-lines{opacity:0;transition:opacity .7s ease .2s}@keyframes home-intro-line-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}:root[data-home-intro] .sidebar-nav-item,:root[data-home-intro] .sidebar-brand,:root[data-home-intro] .sidebar-footer,:root[data-home-intro] .status-bar{opacity:0}:root[data-home-intro] .sidebar-nav-item{transform:translate(-22px)}:root[data-home-intro=fill] .sidebar-brand{opacity:1;transition:opacity .52s ease .12s}:root[data-home-intro=fill] .sidebar-footer{opacity:1;transition:opacity .52s ease .82s}:root[data-home-intro=fill] .status-bar{opacity:1;transition:opacity .56s ease .64s}:root[data-home-intro=fill] .sidebar-nav-item{opacity:1;transform:none;transition:opacity .46s ease,transform .54s cubic-bezier(.22,1,.36,1)}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(1){transition-delay:.26s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(2){transition-delay:.33s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(3){transition-delay:.4s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(4){transition-delay:.47s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(5){transition-delay:.54s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(6){transition-delay:.61s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(7){transition-delay:.68s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(8){transition-delay:.75s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(9){transition-delay:.82s}:root[data-home-intro=fill] .sidebar-nav-item:nth-child(10){transition-delay:.89s}.icon-toggle input{width:0;height:0;visibility:hidden;position:absolute}.icon-toggle-btn{border:1px solid var(--color-border-light);background:var(--surface-input);border-radius:10px;height:36px;width:36px;display:flex;justify-content:center;align-items:center;position:relative;cursor:pointer;transition:all .3s}.icon-toggle-btn:active{border-radius:5px}.icon-toggle-ico{position:absolute;display:inline-flex;line-height:0;transition:opacity .3s;color:var(--color-text)}.icon-toggle-ico.on{opacity:0}.icon-toggle-ico.off{opacity:1}.icon-toggle input:checked+.icon-toggle-btn{background:var(--color-accent-purple);border-color:var(--color-text)}.icon-toggle input:checked+.icon-toggle-btn .icon-toggle-ico.on{opacity:1}.icon-toggle input:checked+.icon-toggle-btn .icon-toggle-ico.off{opacity:0}.icon-toggle input:focus-visible+.icon-toggle-btn{outline:2px solid var(--color-text);outline-offset:2px}@media(prefers-reduced-motion:reduce){.icon-toggle-btn,.icon-toggle-ico{transition-duration:.01ms}}.voice-home{--voice-cyan: #61e7ff;--voice-blue: #5b7cff;--voice-violet: #b463ff;--voice-pink: #ff5fa2;--voice-amber: #ffb45e;--voice-mint: #65f2bc;flex:1;height:100%;min-width:0;min-height:0;display:grid;grid-template-rows:minmax(0,1fr)}.home-shell{display:flex;gap:12px;width:100%;height:100%;min-height:0}.home-sessions{flex-shrink:0;width:48px;min-height:0;display:flex;flex-direction:column;transition:width .22s cubic-bezier(.22,1,.36,1)}.home-sessions.is-open{width:260px;padding:12px;border:1px solid var(--surface-card-border);border-radius:16px;background:var(--color-bg-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.home-sessions-rail{width:48px;height:48px;border:1px solid var(--surface-card-border);border-radius:14px;background:var(--color-bg-soft);color:var(--color-text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .15s ease,transform .12s ease}.home-sessions-rail:hover{color:var(--color-text);transform:translate(-1px,-1px)}.home-sessions-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 2px 10px;border-bottom:1px solid var(--surface-card-border)}.home-sessions-title{font-family:var(--font-heading);font-weight:700;font-size:15px;color:var(--color-text)}.home-sessions-head-actions{display:flex;gap:6px}.home-sessions-list{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:2px;margin-top:8px}.home-session-row{display:flex;align-items:center;border-radius:10px;color:var(--color-text-muted);transition:background-color .14s ease,color .14s ease}.home-session-row:hover{background:var(--surface-control-hover);color:var(--color-text)}.home-session-row.is-active{background:var(--menu-active);color:var(--color-text)}.home-session-main{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:8px 10px;border:0;background:transparent;color:inherit;cursor:pointer;text-align:left}.home-session-del{flex-shrink:0;margin-right:4px;padding:5px;border:0;border-radius:8px;background:transparent;color:var(--color-text-subtle);cursor:pointer;opacity:0;transition:opacity .14s ease,color .14s ease,background-color .14s ease}.home-session-row:hover .home-session-del{opacity:1}.home-session-del:hover{color:var(--color-crashed);background:var(--color-crashed-bg)}.home-session-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600}.home-session-meta{flex-shrink:0;font-size:11px;color:var(--color-text-subtle);font-family:var(--font-mono)}.voice-home--intro-hidden .voice-home-header,.voice-home--intro-hidden .voice-conversation{opacity:0}.voice-home--intro-hidden .voice-home-header{transform:translateY(-14px)}.voice-home--intro-reveal .voice-home-header,.voice-home--intro-reveal .voice-conversation{opacity:1;transform:translateY(0);transition:opacity .62s ease .16s,transform .68s cubic-bezier(.22,1,.36,1) .16s}.voice-home--intro-reveal .voice-home-header{transition-delay:.32s}.voice-home-header{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:20px}.voice-home-header h1{margin:0;font-family:var(--font-mono);font-size:28px;font-weight:700;line-height:34px;letter-spacing:.08em}.voice-home-title{min-width:0;text-align:left}.voice-home-header p{margin:2px 0 0;color:var(--color-text-muted);font-size:13px;line-height:20px}.voice-header-actions{display:flex;align-items:center;gap:12px}.voice-header-actions .nb-btn{min-height:32px;gap:7px;padding:5px 10px;font-size:12px;white-space:nowrap}.voice-live-status{display:inline-flex;align-items:center;gap:7px;color:var(--color-text-muted);font-family:var(--font-mono);font-size:10px;text-transform:uppercase;white-space:nowrap}.voice-live-status>span{width:7px;height:7px;border-radius:50%;background:var(--color-idle);box-shadow:0 0 10px var(--color-idle);animation:voice-live-pulse 1.5s ease-in-out infinite}.voice-live-status[data-phase=listening]>span{background:var(--voice-cyan);box-shadow:0 0 14px var(--voice-cyan)}.voice-live-status[data-phase=thinking]>span{background:var(--voice-violet);box-shadow:0 0 16px var(--voice-violet)}.voice-live-status[data-phase=speaking]>span{background:var(--voice-pink);box-shadow:0 0 18px var(--voice-pink)}.voice-convo-header{flex-shrink:0;border-bottom:1px solid var(--surface-card-border)}.voice-convo-title-btn{width:100%;display:flex;align-items:center;gap:8px;padding:10px clamp(14px,3vw,24px);border:0;background:transparent;color:var(--color-text);cursor:pointer;text-align:left}.voice-convo-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-heading);font-weight:700;font-size:15px}.voice-convo-chevron{flex-shrink:0;color:var(--color-text-muted);transition:transform .18s ease}.voice-convo-chevron.is-open{transform:rotate(180deg)}.voice-convo-details{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 12px;margin:0;padding:0 clamp(14px,3vw,24px) 12px;font-family:var(--font-mono);font-size:11px}.voice-convo-details dt{color:var(--color-text-subtle);font-weight:700}.voice-convo-details dd{margin:0;color:var(--color-text-muted);overflow-wrap:anywhere}.voice-artifacts{display:flex;align-items:center;gap:8px;padding:8px clamp(14px,3vw,24px);border-top:1px solid var(--surface-card-border);color:var(--color-text-muted);font-size:12px;overflow:hidden}.voice-artifacts-title{font-weight:700;color:var(--color-text);white-space:nowrap}.voice-artifacts-list{display:flex;gap:6px;min-width:0;overflow-x:auto}.voice-artifacts-chip.is-clickable{cursor:pointer;transition:color .14s ease,border-color .14s ease,transform .12s ease}.voice-artifacts-chip.is-clickable:hover{color:var(--color-text);border-color:var(--color-text);transform:translateY(-1px)}.file-preview-body{flex:1;min-height:0;overflow:auto;margin:0;padding:12px;border-radius:12px;background:var(--color-bg);font-family:var(--font-mono);font-size:12px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}.voice-artifacts-chip{flex-shrink:0;padding:2px 8px;border:1px solid var(--surface-card-border);border-radius:999px;background:var(--surface-input);color:var(--color-text);font-family:var(--font-mono);white-space:nowrap}.voice-conversation{position:relative;min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--surface-card-border);border-radius:20px;background:var(--color-bg-soft);box-shadow:var(--shadow-nb);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:border-color .5s ease}.voice-conversation[data-phase=listening]{border-color:#61e7ff4d}.voice-conversation[data-phase=thinking]{border-color:#b463ff57}.voice-conversation[data-phase=speaking]{border-color:#ff5fa257}.voice-message-stream{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:16px;padding:26px clamp(18px,4vw,46px) 18px;scroll-behavior:smooth}.voice-empty-state{margin:auto;display:flex;align-items:center;gap:8px;color:var(--color-text-subtle)}.voice-empty-state p{margin:0;font-size:13px}.voice-message{width:fit-content;max-width:min(72%,680px);animation:voice-message-enter .22s ease-out both}.voice-message>span{display:block;margin:0 0 5px;color:var(--color-text-muted);font-family:var(--font-mono);font-size:10px;line-height:14px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.voice-message :is(p,.voice-bubble){min-width:48px;margin:0;padding:10px 13px;border:1px solid var(--surface-card-border);border-radius:14px;color:var(--color-text);background:var(--surface-input);font-size:14px;line-height:22px;white-space:pre-wrap;overflow-wrap:anywhere;box-shadow:var(--shadow-nb-sm);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.voice-message .voice-bubble{white-space:normal}.voice-blocks{display:flex;flex-direction:column;gap:8px}.voice-bubble-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:8px}.voice-bubble-actions button{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:8px;border:1px solid var(--surface-card-border);background:var(--surface-input);color:var(--color-text-muted);cursor:pointer;padding:0;transition:transform .1s ease,box-shadow .1s ease,color .1s ease}.voice-bubble-actions button:hover{color:var(--color-text);transform:translate(-1px,-1px);box-shadow:var(--shadow-nb-sm)}.voice-bubble-actions button:active{transform:translate(1px,1px);box-shadow:none}.voice-bubble-actions button[data-active=true]{color:var(--color-bg);background:var(--color-running);border-color:var(--color-running)}.voice-msg-attachments{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.voice-msg-attach{position:relative;width:64px;height:64px;border-radius:10px;border:1px solid var(--surface-card-border);background:var(--surface-input);color:var(--color-text-muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;overflow:hidden;cursor:pointer;text-decoration:none;box-shadow:var(--shadow-nb-sm);transition:transform .1s ease,box-shadow .1s ease}.voice-msg-attach:hover{transform:translate(-1px,-1px);box-shadow:var(--shadow-nb)}.voice-msg-attach img{width:100%;height:100%;object-fit:cover}.voice-msg-attach-ext{font-family:var(--font-mono);font-size:8px;font-weight:700;letter-spacing:.4px;color:var(--color-text)}.voice-message-user{align-self:flex-end;text-align:right}.voice-message-user :is(p,.voice-bubble){background:var(--color-secondary);text-align:left}.voice-message-assistant,.voice-message-error{align-self:flex-start}.voice-message-assistant :is(p,.voice-bubble){background:var(--surface-input)}.voice-message-error :is(p,.voice-bubble){border-color:var(--color-crashed-bg);color:var(--color-crashed);background:var(--color-crashed-bg)}.voice-message[data-streaming=true] p:after,.voice-message-live p:after{content:"";width:1px;height:14px;display:inline-block;margin-left:4px;vertical-align:-2px;background:currentColor;animation:voice-stream-cursor .76s steps(1,end) infinite}.voice-thinking-line{color:var(--color-text-muted);font-size:13px;line-height:1.6;margin:0}.voice-thinking-line i,.voice-message-thinking i{width:20px;height:5px;display:inline-block;margin-left:7px;background:radial-gradient(circle,currentColor 1.5px,transparent 2px) 0 50% / 7px 5px repeat-x;animation:voice-thinking-dots .9s ease-in-out infinite}.voice-dock{min-height:188px;display:grid;place-items:center;align-content:center;gap:5px;padding:10px 18px 14px;border-top:1px solid var(--surface-card-border);background:var(--color-bg-soft);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);position:relative}.voice-input-inner{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;padding:8px 8px 8px 20px}.voice-input-field{width:100%;box-sizing:border-box;padding:9px 52px 9px 0;resize:none;border:0;outline:none;background:transparent;color:var(--color-text);font-family:var(--font-body);font-size:15px;line-height:22px;max-height:66px;overflow-y:hidden}.voice-input-field::placeholder{color:var(--color-text-muted)}.voice-send-btn{position:absolute;right:8px;bottom:8px;width:44px;height:44px;border-radius:50%;border:1px solid var(--surface-card-border);background:var(--color-secondary);color:var(--color-text);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-nb-sm);transition:transform .12s ease,opacity .12s ease,box-shadow .12s ease,background .15s ease}.voice-send-btn:hover:not(:disabled){transform:translate(-1px,-1px)}.voice-send-btn:active:not(:disabled){transform:translate(1px,1px)}.voice-send-btn:disabled{opacity:.5;cursor:default}.voice-send-btn.is-stop{background:var(--color-crashed-bg);color:var(--color-crashed);border-color:var(--color-crashed)}.voice-orb-button{position:relative;transition:transform .2s cubic-bezier(.22,1,.36,1)}.voice-stop-btn{position:absolute;left:100%;top:50%;margin-left:16px;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;background:none;color:var(--color-crashed, #ff6b6b);filter:drop-shadow(0 0 6px var(--color-crashed, #ff6b6b)) drop-shadow(0 0 12px var(--color-crashed, #ff6b6b));transition:filter .16s ease,transform .16s ease;z-index:20}.voice-stop-btn:hover{filter:drop-shadow(0 0 9px var(--color-crashed, #ff6b6b)) drop-shadow(0 0 18px var(--color-crashed, #ff6b6b));transform:translateY(-50%) scale(1.12)}.voice-dock[data-drag=true] .voice-orb-button{transform:scale(1.08)}.voice-dock[data-drag=true]{background:color-mix(in oklch,var(--color-secondary) 30%,var(--color-bg-soft))}.voice-attachments{position:absolute;left:16px;top:50%;transform:translateY(-50%);width:120px;height:120px;z-index:2}.voice-attach-thumb{position:absolute;top:0;right:0;bottom:0;left:0;width:120px;height:120px;border-radius:12px;border:1px solid var(--surface-card-border);background:var(--surface-input);color:var(--color-text-muted);display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:var(--shadow-nb-sm);transition:transform .28s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease}.voice-attach-thumb:nth-child(1){transform:rotate(-5deg) translate(0)}.voice-attach-thumb:nth-child(2){transform:rotate(4deg) translate(3px,2px)}.voice-attach-thumb:nth-child(3){transform:rotate(-3deg) translate(-3px,4px)}.voice-attach-thumb:nth-child(4){transform:rotate(6deg) translate(4px,-2px)}.voice-attach-thumb:nth-child(n+5){transform:rotate(-2deg) translate(-2px,3px)}.voice-attach-thumb:only-child{transform:none}.voice-attachments:hover .voice-attach-thumb:nth-child(1){transform:rotate(0) translate(0)}.voice-attachments:hover .voice-attach-thumb:nth-child(2){transform:rotate(0) translate(92px)}.voice-attachments:hover .voice-attach-thumb:nth-child(3){transform:rotate(0) translate(184px)}.voice-attachments:hover .voice-attach-thumb:nth-child(4){transform:rotate(0) translate(276px)}.voice-attachments:hover .voice-attach-thumb:nth-child(n+5){transform:rotate(0) translate(368px)}.voice-attach-thumb img{width:100%;height:100%;object-fit:cover}.voice-attach-doc{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:100%;height:100%;padding:8px 6px;text-align:center}.voice-attach-ext{font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:.5px;padding:1px 6px;border-radius:6px;border:1px solid var(--surface-card-border);background:var(--color-bg);color:var(--color-text)}.voice-attach-name{width:100%;font-size:10px;line-height:13px;color:var(--color-text);word-break:break-all;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.voice-attach-del{position:absolute;top:6px;left:6px;width:22px;height:22px;border-radius:50%;border:1px solid var(--color-text);background:var(--color-bg);color:var(--color-text);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;box-shadow:var(--shadow-nb-sm)}.voice-attach-del:hover{background:var(--color-crashed-bg);color:var(--color-crashed)}.voice-orb-button{position:relative;width:min(100%,720px);height:142px;padding:0;border:0;color:inherit;background:transparent}.voice-orb-hit{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:132px;height:132px;border:0;border-radius:50%;background:transparent;cursor:pointer;z-index:4}.voice-orb-hit:disabled{cursor:default}:root[data-morphing] .voice-dock,:root[data-morphing] .voice-flow-glass{-webkit-backdrop-filter:none;backdrop-filter:none}.voice-flow-glass[data-glass=on]{background:transparent;border-color:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.voice-flow-glass[data-glass=on]:before,.voice-flow-glass[data-glass=on]:after{display:none}.voice-flow-glass[data-mode=text]{width:min(96%,690px);height:var(--pill-h, 60px);border-radius:30px}.voice-flow-glass[data-mode=text] .strands-container,.voice-flow-glass[data-mode=text] .voice-canvas,.voice-flow-glass[data-mode=text] .voice-orb-icon{opacity:0}.voice-flow-glass{--voice-activity: 0;--voice-scale: 1;position:absolute;z-index:1;left:50%;top:50%;width:132px;height:132px;overflow:hidden;border:1px solid rgba(224,236,255,.42);border-radius:50%;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.2),transparent 28%),linear-gradient(145deg,#d2e1ff1a,#8066ff0b 48%,#05091c29);box-shadow:inset 0 1px #ffffff59,inset 0 -18px 42px #3943a01f,0 0 0 1px #719fff14,0 14px 42px #00000052;-webkit-backdrop-filter:blur(24px) saturate(150%);backdrop-filter:blur(24px) saturate(150%);transform:translate(-50%,-50%) scale(var(--voice-scale));transform-origin:center;will-change:transform;transition:width .8s cubic-bezier(.22,1,.36,1),height .8s cubic-bezier(.22,1,.36,1),border-radius .8s cubic-bezier(.22,1,.36,1),border-color .6s ease,box-shadow .8s ease,background .8s ease}.voice-flow-glass:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;border-radius:inherit;background:radial-gradient(circle at 30% 23%,#fff9,#fff0 20%),radial-gradient(circle at 60% 15%,#ffffff38,#fff0 8%),radial-gradient(circle at 73% 76%,#afdcff2e,#fff0 16%);box-shadow:inset 0 0 24px #ffffff06,inset 0 -14px 26px #0a0e2847}.voice-flow-glass[data-phase=listening]{border-color:#61e7ff8f;box-shadow:inset 0 1px #ffffff6b,inset 0 -18px 40px #2c9dc421,0 0 44px #61e7ff29,0 14px 42px #00000057}.voice-flow-glass[data-phase=thinking]{border-color:#cd9dff94;background:radial-gradient(circle at 28% 20%,rgba(255,255,255,.24),transparent 26%),linear-gradient(145deg,#b463ff1f,#61e7ff0f 48%,#07081933);box-shadow:inset 0 1px #ffffff6b,inset 0 -20px 44px #b463ff21,0 0 52px #b463ff33,0 14px 42px #00000057}.voice-flow-glass[data-phase=speaking]{width:min(92%,400px);height:92px;border-color:#ff9dce94;border-radius:46px;background:linear-gradient(105deg,#61e7ff17,#b463ff1c 42%,#ff5fa21a 72%,#ffb45e14),#07081829;box-shadow:inset 0 1px #fff6,inset 0 -18px 40px #8942bc21,0 0 58px #ff5fa22b,0 14px 44px #0000005c}.voice-canvas{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;transition:opacity .6s ease}.voice-flow-glass[data-phase=idle] .voice-canvas,.voice-flow-glass[data-phase=listening] .voice-canvas,.voice-flow-glass[data-phase=speaking] .voice-canvas{opacity:0}.voice-active-strands{z-index:1}.voice-orb-icon{position:absolute;z-index:4;left:50%;bottom:14px;width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.18);border-radius:50%;color:#f7f9ffe0;background:#0708168f;transform:translate(-50%);transition:opacity .3s ease}.voice-flow-glass[data-phase=thinking] .voice-orb-icon,.voice-flow-glass[data-phase=speaking] .voice-orb-icon{opacity:0}.voice-dock-label,.voice-error{margin:0;font-size:11px;line-height:16px}.voice-dock-label{color:var(--color-text-subtle)}.voice-error{color:#ff9fb4}.voice-debug-backdrop{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#03040cb3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:voice-backdrop-enter .16s ease-out both}.voice-debug-dialog{width:min(94vw,420px);max-height:min(88vh,760px);overflow:hidden;display:grid;grid-template-rows:auto auto minmax(0,1fr);border:1px solid var(--color-border-light);border-radius:8px;background:var(--surface-input);box-shadow:0 24px 80px #0000007a;animation:voice-dialog-enter .18s ease-out both}.voice-debug-header{min-height:50px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px 9px 14px;border-bottom:1px solid var(--color-border-light)}.voice-debug-header>div{display:flex;align-items:center;gap:8px}.voice-debug-header h2{margin:0;font-size:14px;font-weight:600;line-height:20px;letter-spacing:0}.voice-debug-header button{width:30px;height:30px;display:inline-grid;place-items:center;padding:0;border:1px solid var(--color-border-light);border-radius:6px;color:var(--color-text-muted);background:var(--surface-control);cursor:pointer}.voice-debug-header button:hover{color:var(--color-text);border-color:var(--surface-border-hover)}.voice-debug-phases{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:10px 12px;border-bottom:1px solid var(--color-border-light)}.voice-debug-phases button{min-width:0;min-height:32px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:5px 7px;border:1px solid transparent;border-radius:6px;color:var(--color-text-muted);background:transparent;font-size:11px;cursor:pointer}.voice-debug-phases button[aria-pressed=true]{border-color:#b463ff4d;color:var(--color-text);background:#b463ff24}.voice-debug-body{min-height:0;overflow-y:auto;padding:14px}.voice-customizer-group{min-width:0;margin:0;padding:0;border:0}.voice-customizer-group+.voice-customizer-group{margin-top:18px}.voice-customizer-group legend{width:100%;margin:0 0 8px;padding:0;color:var(--color-text-subtle);font-family:var(--font-mono);font-size:10px;font-weight:600;line-height:16px;text-transform:uppercase}.voice-color-control{min-height:38px;display:grid;grid-template-columns:minmax(0,1fr) 32px 74px;align-items:center;gap:8px;padding:4px 0;color:var(--color-text-muted);font-size:12px}.voice-color-control input[type=color]{width:32px;height:28px;padding:2px;border:1px solid var(--color-border-light);border-radius:5px;background:var(--surface-control);cursor:pointer}.voice-color-control code{overflow:hidden;color:var(--color-text-subtle);font-family:var(--font-mono);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.voice-parameter-control{display:grid;grid-template-columns:minmax(0,1fr) 68px;align-items:center;gap:5px 10px;padding:5px 0}.voice-parameter-control>span{overflow:hidden;color:var(--color-text-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.voice-parameter-control input[type=number]{width:68px;height:28px;padding:4px 7px;border:1px solid var(--color-border-light);border-radius:5px;color:var(--color-text);background:var(--surface-control);font-family:var(--font-mono);font-size:11px;text-align:right}.voice-parameter-control input[type=range]{grid-column:1 / -1;width:100%;height:16px;margin:0;accent-color:var(--voice-violet);cursor:pointer}.voice-orb-button:focus-visible,.voice-header-actions button:focus-visible,.voice-debug-dialog button:focus-visible,.voice-debug-dialog input:focus-visible{outline:2px solid var(--color-dusk-violet);outline-offset:2px}@keyframes voice-live-pulse{0%,to{opacity:.45;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}@keyframes voice-stream-cursor{50%{opacity:0}}@keyframes voice-thinking-dots{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(-1px)}}@keyframes voice-message-enter{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes voice-backdrop-enter{0%{opacity:0}to{opacity:1}}@keyframes voice-dialog-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:700px){.voice-home-header{align-items:flex-start}.voice-home-header p,.voice-live-status{display:none}.voice-message{max-width:88%}.voice-message-stream{padding-inline:16px}.voice-dock{min-height:174px;padding-inline:10px}.voice-orb-button{height:132px}.voice-flow-glass{width:122px;height:122px}.voice-flow-glass[data-phase=speaking]{width:min(94%,360px);height:86px}}@media(max-width:440px){.voice-home{gap:8px}.voice-home-header h1{font-size:18px;line-height:26px}.voice-header-actions .nb-btn{font-size:0;gap:0}.voice-header-actions .nb-btn svg{width:16px;height:16px}.voice-debug-phases button{font-size:0}.voice-debug-phases button svg{width:17px;height:17px}.voice-color-control{grid-template-columns:minmax(0,1fr) 32px}.voice-color-control code{display:none}}@media(prefers-reduced-motion:reduce){.voice-live-status>span,.voice-message,.voice-message[data-streaming=true] p:after,.voice-message-live p:after,.voice-thinking-line i,.voice-message-thinking i,.voice-debug-backdrop,.voice-debug-dialog{animation:none}.voice-flow-glass{transition-duration:.01ms}}.voice-toggle-stack{position:absolute;right:14px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;z-index:5}.interaction-dock{border-top:1px solid var(--surface-card-border);background:var(--color-bg-soft);padding:12px 18px;max-height:46vh;overflow-y:auto;display:flex;justify-content:center;align-items:flex-start;animation:interaction-dock-in .16s ease-out}.interaction-dock>*{width:100%;max-width:80rem}.cfg-region{display:flex;flex-direction:column;gap:10px}.cfg-region.is-locked{opacity:.6;pointer-events:none}.cfg-region-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.cfg-region-title{font-family:var(--font-heading);font-weight:700;font-size:15px}.cfg-region-desc{font-size:12px;color:var(--color-text-muted)}.cfg-region-body{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:stretch}.cfg-region-prose{flex:2 1 22rem;display:flex;flex-direction:column;gap:10px}.cfg-region-prose>label{flex:1}.cfg-region-prose textarea{flex:1;min-height:6.5rem}.cfg-region-params{flex:1 1 15rem;display:flex;flex-direction:column;gap:10px}.cfg-region-media{flex:0 1 12rem;display:flex;flex-direction:column;gap:10px}.cfg-region-actions{display:flex;gap:8px;justify-content:flex-end;align-items:center}.cfg-dropzone-wrap{display:flex;flex-direction:column;gap:6px}.cfg-dropzone{display:flex;align-items:center;justify-content:center;aspect-ratio:4 / 3;border:2px dashed var(--surface-card-border);border-radius:12px;background:var(--color-bg);cursor:pointer;overflow:hidden;transition:border-color .12s ease}.cfg-dropzone:hover{border-color:var(--color-text)}.cfg-dropzone[data-filled=true]{border-style:solid}.cfg-dropzone-hint{font-size:12px;color:var(--color-text-muted);padding:0 8px;text-align:center;word-break:break-all}.cfg-dropzone-thumb{width:100%;height:100%;object-fit:cover}.interaction-dock-error{margin-bottom:8px;font-size:12px;color:var(--color-crashed)}@keyframes interaction-dock-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.interaction-dock{animation-duration:.01ms}}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}@property --fn-angle{syntax: "<angle>"; initial-value: 0deg; inherits: false;}.flow-node-glow{position:relative;border-radius:var(--radius-2xl);transition:box-shadow .2s ease-out}.flow-node-glow:before,.flow-node-glow:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s ease-out;padding:2px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;background:conic-gradient(from var(--fn-angle),#c084fc,#f472b6,#38bdf8,#22d3ee,#c084fc)}.flow-node-glow:before{z-index:3}.flow-node-glow:after{filter:blur(7px);z-index:-1}.flow-node-glow.is-running:before{opacity:1;animation:fn-spin 4s linear infinite}.flow-node-glow.is-running:after{opacity:.6;animation:fn-spin 4s linear infinite}.flow-node-glow:hover,.flow-node-glow.is-selected{box-shadow:0 0 0 3px var(--color-accent-purple),0 0 22px 8px color-mix(in srgb,var(--color-accent-purple) 80%,transparent),0 0 44px 16px color-mix(in srgb,var(--color-accent-purple) 45%,transparent)}@keyframes fn-spin{to{--fn-angle: 360deg}}@media(prefers-reduced-motion:reduce){.flow-node-glow:before,.flow-node-glow:after{animation:none!important}}/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:"JetBrains Mono", "SF Mono", Monaco, Consolas, monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:4px;--radius-md:10px;--radius-lg:24px;--radius-xl:24px;--radius-2xl:24px;--radius-3xl:40px;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:oklch(18.3% .032 296);--color-bg-cream:oklch(13.8% .027 296);--color-bg-soft:oklch(72% .1 296/.11);--surface-menu:oklch(24% .03 296);--color-text:oklch(95.2% .015 296);--color-text-muted:oklch(81.8% .04 296);--color-text-subtle:oklch(62.8% .046 296);--color-border-light:oklch(82% .068 296/.28);--color-hairline:oklch(88% .052 296/.48);--color-snow-white:oklch(96.5% .02 296);--color-graphite:#181426;--color-dusk-violet:oklch(59.2% .225 287);--color-primary:oklch(72% .1 296/.12);--color-primary-dark:oklch(72% .1 296/.18);--color-secondary:oklch(86% .05 296/.13);--color-secondary-dark:oklch(86% .05 296/.19);--color-info:oklch(78% .116 252);--color-info-bg:oklch(78% .116 252/.13);--color-accent-mint:oklch(81% .08 160/.16);--color-accent-purple:oklch(59.2% .225 287/.2);--color-accent-yellow:oklch(82% .112 82/.16);--color-accent-pink:oklch(78% .082 330/.14);--color-running:oklch(80.7% .124 155);--color-running-bg:oklch(80.7% .124 155/.13);--color-stuck:oklch(82% .128 82);--color-stuck-bg:oklch(82% .128 82/.14);--color-crashed:oklch(76.5% .15 24);--color-crashed-bg:oklch(76.5% .15 24/.14);--color-idle:oklch(76% .01 296);--color-idle-bg:oklch(76% .01 296/.12);--color-cta:oklch(96.5% .02 296);--color-cta-dark:oklch(88.7% .056 296);--font-heading:"DM Sans", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body:"DM Sans", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--radius-pill:9999px;--shadow-nb-sm:#d6c7ff1f 0 0 0 1px inset;--shadow-nb:#d6c7ff1f 0 0 0 1px inset}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:before,:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#root{min-height:100%}:root{color-scheme:dark;--surface-card-border:oklch(82% .068 296/.18);--surface-border-hover:oklch(88% .052 296/.44);--surface-control:oklch(72% .1 296/.1);--surface-control-hover:oklch(86% .05 296/.16);--surface-control-active:oklch(86% .05 296/.23);--surface-control-selected:oklch(69% .125 287/.22);--surface-drop-target:oklch(86% .05 296/.2);--surface-segmented:oklch(72% .1 296/.08);--surface-segmented-active:oklch(86% .05 296/.17);--surface-code:oklch(86% .05 296/.08);--surface-pre:oklch(11.5% .032 296/.68);--surface-input:oklch(13.5% .03 296/.52);--surface-input-focus:oklch(18.8% .038 296/.74);--surface-modal:oklch(18.3% .032 296/.94);--surface-overlay:oklch(10% .028 296/.62);--surface-table-head:oklch(86% .05 296/.07);--surface-table-row-hover:oklch(86% .05 296/.045);--surface-table-border:oklch(82% .068 296/.12);--surface-progress-track:oklch(86% .05 296/.1);--control-border:var(--color-border-light);--control-border-hover:var(--surface-border-hover);--control-border-active:oklch(88% .052 296/.6);--control-border-selected:oklch(70% .175 287/.64);--control-focus-ring:oklch(74% .135 287/.52);--control-focus-shadow:0 0 0 4px oklch(74% .135 287/.16);--control-disabled-bg:oklch(72% .04 296/.055);--control-disabled-text:oklch(71% .022 296);--control-placeholder:oklch(72% .034 296);--control-select-bg:oklch(14.5% .03 296);--control-option-bg:oklch(16.8% .032 296);--control-option-hover:oklch(24% .045 296);--control-option-selected:oklch(30% .082 287);--selection-bg:oklch(78% .108 287/.86);--selection-text:oklch(13.8% .027 296);--native-accent:oklch(72% .145 287);--button-default-bg:var(--surface-control);--button-default-hover:var(--surface-control-hover);--button-default-active:var(--surface-control-active);--button-primary-bg:var(--color-cta);--button-primary-hover:var(--color-cta-dark);--button-primary-active:oklch(82.6% .064 296);--button-primary-text:var(--color-graphite);--button-danger-border:oklch(76.5% .15 24/.48);--button-danger-hover-bg:oklch(76.5% .15 24/.2);--button-danger-active-bg:oklch(76.5% .15 24/.27);--button-mint-bg:oklch(81% .08 160/.16);--button-mint-hover:oklch(81% .08 160/.24);--button-mint-border:oklch(81% .08 160/.36);--button-blue-bg:oklch(78% .116 252/.15);--button-blue-hover:oklch(78% .116 252/.23);--button-blue-border:oklch(78% .116 252/.36);--button-yellow-bg:oklch(82% .112 82/.17);--button-yellow-hover:oklch(82% .112 82/.25);--button-yellow-border:oklch(82% .112 82/.38);--button-purple-bg:oklch(59.2% .225 287/.18);--button-purple-hover:oklch(59.2% .225 287/.26);--button-purple-border:oklch(72% .145 287/.38);--button-pink-bg:oklch(78% .082 330/.15);--button-pink-hover:oklch(78% .082 330/.23);--button-pink-border:oklch(78% .082 330/.34);--button-accent-text:var(--color-text);--menu-hover:oklch(86% .05 296/.045);--menu-active:linear-gradient(90deg, #7c5af93d, oklch(86% .05 296/.08) 42%, oklch(86% .05 296/.02))}@supports (color:color-mix(in lab,red,red)){:root{--menu-active:linear-gradient(90deg, color-mix(in oklch, var(--color-dusk-violet) 24%, transparent), oklch(86% .05 296/.08) 42%, oklch(86% .05 296/.02))}}:root{--board-planning-bg:linear-gradient(180deg, var(--color-accent-purple), transparent);--board-backlog-bg:linear-gradient(180deg, var(--color-primary), transparent);--board-todo-bg:linear-gradient(180deg, var(--color-accent-yellow), transparent);--board-inprogress-bg:linear-gradient(180deg, var(--color-secondary), transparent);--board-qa-bg:linear-gradient(180deg, var(--color-accent-pink), transparent);--board-done-bg:linear-gradient(180deg, var(--color-running-bg), transparent);--page-gradient:linear-gradient(110deg, var(--color-accent-purple) 0%, var(--color-primary) 34%, transparent 62%), linear-gradient(90deg, transparent 0%, transparent 36%, var(--color-accent-purple) 50%, transparent 66%, transparent 100%);--main-gradient:linear-gradient(180deg, var(--surface-table-head), transparent 24%)}:root[data-theme=light]{color-scheme:light;--color-bg:oklch(99.2% .003 296);--color-bg-cream:oklch(96.9% .01 296);--color-bg-soft:oklch(28% .026 296/.055);--surface-menu:oklch(100% 0 0);--color-text:oklch(20% .01 296);--color-text-muted:oklch(41% .014 296);--color-text-subtle:oklch(55% .014 296);--color-border-light:oklch(20% .01 296/.16);--color-hairline:oklch(20% .01 296/.22);--color-snow-white:#161616;--color-ink-black:#fff;--color-graphite:#fff;--color-primary:oklch(59.2% .225 287/.075);--color-primary-dark:oklch(59.2% .225 287/.11);--color-secondary:oklch(48% .09 252/.08);--color-secondary-dark:oklch(48% .09 252/.12);--color-info:oklch(43% .125 252);--color-info-bg:oklch(43% .125 252/.1);--color-accent-mint:oklch(44% .11 155/.1);--color-accent-purple:oklch(59.2% .225 287/.12);--color-accent-yellow:oklch(49% .105 76/.11);--color-accent-pink:oklch(47% .12 24/.09);--color-running:oklch(42.5% .11 155);--color-running-bg:oklch(42.5% .11 155/.1);--color-stuck:oklch(45% .12 76);--color-stuck-bg:oklch(45% .12 76/.1);--color-crashed:oklch(45% .14 24);--color-crashed-bg:oklch(45% .14 24/.1);--color-idle:oklch(43% .012 296);--color-idle-bg:oklch(20% .01 296/.08);--color-on-status:oklch(99.2% .003 296);--color-cta:#161616;--color-cta-dark:#2a2a2a;--shadow-nb-sm:#00000014 0 0 0 1px inset;--shadow-nb:#00000014 0 0 0 1px inset;--shadow-nb-lg:#00000014 0 0 0 1px inset;--surface-card-border:#1616161a;--surface-border-hover:#1616162e;--surface-control:#1616160e;--surface-control-hover:#16161617;--surface-control-active:#16161621;--surface-control-selected:oklch(59.2% .225 287/.13);--surface-segmented:#1616160f;--surface-segmented-active:#1616161f;--surface-code:#16161612;--surface-pre:#ffffffb8;--surface-input:#ffffffd1;--surface-input-focus:#fffffff5;--surface-modal:#ffffffeb;--surface-overlay:oklch(20% .01 296/.24);--surface-table-head:#1616160e;--surface-table-row-hover:#1616160a;--surface-table-border:#1616161a;--menu-hover:#1616160b;--surface-drop-target:oklch(59.2% .225 287/.16);--surface-progress-track:oklch(20% .01 296/.08);--control-border:oklch(20% .01 296/.16);--control-border-hover:oklch(20% .01 296/.28);--control-border-active:oklch(20% .01 296/.36);--control-border-selected:oklch(52% .19 287/.42);--control-focus-ring:oklch(55% .18 287/.46);--control-focus-shadow:0 0 0 4px oklch(55% .18 287/.13);--control-disabled-bg:oklch(20% .01 296/.045);--control-disabled-text:oklch(58% .01 296);--control-placeholder:oklch(47% .014 296);--control-select-bg:oklch(100% 0 0);--control-option-bg:oklch(99.2% .003 296);--control-option-hover:oklch(94% .014 296);--control-option-selected:oklch(90% .034 287);--selection-bg:oklch(59.2% .225 287/.24);--selection-text:oklch(18% .012 296);--native-accent:oklch(52% .19 287);--button-default-bg:var(--surface-control);--button-default-hover:var(--surface-control-hover);--button-default-active:var(--surface-control-active);--button-primary-bg:var(--color-cta);--button-primary-hover:var(--color-cta-dark);--button-primary-active:oklch(24% .012 296);--button-primary-text:#fff;--button-danger-border:oklch(45% .14 24/.32);--button-danger-hover-bg:oklch(45% .14 24/.14);--button-danger-active-bg:oklch(45% .14 24/.2);--button-mint-bg:oklch(44% .11 155/.1);--button-mint-hover:oklch(44% .11 155/.16);--button-mint-border:oklch(44% .11 155/.24);--button-blue-bg:oklch(43% .125 252/.1);--button-blue-hover:oklch(43% .125 252/.16);--button-blue-border:oklch(43% .125 252/.24);--button-yellow-bg:oklch(45% .12 76/.11);--button-yellow-hover:oklch(45% .12 76/.17);--button-yellow-border:oklch(45% .12 76/.24);--button-purple-bg:oklch(59.2% .225 287/.11);--button-purple-hover:oklch(59.2% .225 287/.17);--button-purple-border:oklch(52% .19 287/.25);--button-pink-bg:oklch(47% .12 24/.1);--button-pink-hover:oklch(47% .12 24/.16);--button-pink-border:oklch(47% .12 24/.22);--button-accent-text:var(--color-text);--menu-active:linear-gradient(90deg, #7c5af926, oklch(20% .01 296/.06) 42%, oklch(20% .01 296/.018))}@supports (color:color-mix(in lab,red,red)){:root[data-theme=light]{--menu-active:linear-gradient(90deg, color-mix(in oklch, var(--color-dusk-violet) 15%, transparent), oklch(20% .01 296/.06) 42%, oklch(20% .01 296/.018))}}:root[data-theme=light]{--board-planning-bg:linear-gradient(180deg, var(--color-accent-purple), transparent);--board-backlog-bg:linear-gradient(180deg, var(--color-primary), transparent);--board-todo-bg:linear-gradient(180deg, var(--color-accent-yellow), transparent);--board-inprogress-bg:linear-gradient(180deg, var(--color-secondary), transparent);--board-qa-bg:linear-gradient(180deg, var(--color-accent-pink), transparent);--board-done-bg:linear-gradient(180deg, var(--color-running-bg), transparent);--page-gradient:linear-gradient(90deg, #fff0 0%, #fff0 38%, #6b62f21a 50%, #fff0 62%, #fff0 100%);--main-gradient:linear-gradient(180deg, #ffffff8f, #fff0 24%)}body{font-family:var(--font-body);color:var(--color-text);background:var(--page-gradient),var(--color-bg-cream);min-height:100vh;font-size:15px;line-height:1.5}::selection{color:var(--selection-text);background:var(--selection-bg)}h1,h2,h3,h4,h5{font-family:var(--font-heading);color:var(--color-text);letter-spacing:0;margin:0;font-weight:500}.app-main-surface{background:var(--main-gradient),transparent}:focus-visible{outline:2px solid var(--control-focus-ring);outline-offset:3px}:where(input,textarea,select){caret-color:var(--native-accent);accent-color:var(--native-accent)}:where(input[type=checkbox],input[type=radio]){accent-color:var(--native-accent)}:where(input[type=checkbox],input[type=radio]):focus-visible{outline:2px solid var(--control-focus-ring);outline-offset:3px;box-shadow:var(--control-focus-shadow)}:where(button,[role=button],a){-webkit-tap-highlight-color:transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border-light);border-radius:var(--radius-pill);background-clip:padding-box;border:2px solid #0000}::-webkit-scrollbar-thumb:hover{background:var(--surface-border-hover)}::-webkit-scrollbar-corner{background:0 0}@media(prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}}@layer components{.app-shell{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.app-sidebar{padding:8px}.sidebar-brand{display:none}.sidebar-brand-logo{object-fit:contain;flex-shrink:0;width:28px;height:28px;display:none}.sidebar-tooltip{z-index:40;border:1px solid var(--control-border);border-radius:var(--radius-md);background:var(--surface-modal);max-width:220px;min-height:30px;box-shadow:var(--shadow-nb-sm);color:var(--color-text);font-family:var(--font-body);opacity:0;pointer-events:none;white-space:nowrap;align-items:center;padding:6px 10px;font-size:12px;font-weight:600;line-height:16px;transition:opacity .12s ease-out,transform .12s ease-out;display:inline-flex;position:absolute;top:50%;left:calc(100% + 10px);transform:translate(-4px,-50%)}.sidebar-tooltip:before{content:"";border-bottom:1px solid var(--control-border);border-left:1px solid var(--control-border);background:var(--surface-modal);width:8px;height:8px;position:absolute;top:50%;left:-5px;transform:translateY(-50%)rotate(45deg)}.sidebar-tooltip-suppressed{opacity:0!important;transform:translate(-4px,-50%)!important}.sidebar-brand-title,.sidebar-nav-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.sidebar-brand-morph{min-width:0;height:28px;line-height:28px;font-family:"SAIBA-45",var(--font-heading),sans-serif;letter-spacing:.02em;color:#0f0;text-align:center;flex:1;font-size:1.5rem;font-weight:400;position:relative}.sidebar-brand-morph span{justify-content:center!important;align-items:center!important;height:100%!important;line-height:1!important;display:flex!important;top:0!important;bottom:0!important}.sidebar-nav{padding-right:8px;overflow:auto hidden}.sidebar-nav-item{gap:8px;padding:8px 12px}@media(min-width:48rem){.app-shell{grid-template-rows:minmax(0,1fr)}.app-shell-sidebar-expanded{grid-template-columns:180px minmax(0,1fr)}.app-shell-sidebar-collapsed{grid-template-columns:76px minmax(0,1fr)}.app-sidebar{padding:16px}.app-shell-sidebar-collapsed .app-sidebar{padding:16px 10px}.sidebar-nav{padding-right:4px;overflow:hidden auto}.sidebar-nav-item{gap:12px;padding:10px 12px 10px 16px}.sidebar-brand{border-radius:var(--radius-md);width:100%;min-width:0;color:var(--color-text);cursor:pointer;font-family:var(--font-heading);text-align:left;background:0 0;border:0;align-items:center;gap:12px;padding:8px 10px;font-size:18px;font-weight:700;line-height:24px;transition:background-color .14s ease-out,color .14s ease-out;display:inline-flex;position:relative}.sidebar-brand:hover{background:var(--menu-hover)}.sidebar-brand:hover .sidebar-tooltip,.sidebar-brand:focus-visible .sidebar-tooltip{opacity:1;transform:translateY(-50%)}.sidebar-brand:active{background:var(--surface-control-active)}.app-shell-sidebar-collapsed .sidebar-brand{justify-content:center;gap:0;padding:8px 0}.app-shell-sidebar-collapsed .sidebar-brand .sidebar-tooltip{left:calc(100% + 16px)}.app-shell-sidebar-collapsed .sidebar-nav{align-items:center;padding-right:0;overflow:visible}.app-shell-sidebar-collapsed .sidebar-brand-title,.app-shell-sidebar-collapsed .sidebar-brand-morph,.app-shell-sidebar-collapsed .sidebar-nav-label{opacity:0;pointer-events:none;width:0;overflow:hidden}.app-shell-sidebar-collapsed .sidebar-brand-logo{display:block}.app-shell-sidebar-collapsed .sidebar-brand-morph{display:none}.app-shell-sidebar-collapsed .app-sidebar .dimension-menu-item{justify-content:center;align-self:center;gap:0;width:44px;min-width:44px;min-height:40px;margin-left:auto;margin-right:auto;padding-left:0;padding-right:0}.app-shell-sidebar-collapsed .app-sidebar .dimension-menu-item:hover .sidebar-tooltip,.app-shell-sidebar-collapsed .app-sidebar .dimension-menu-item:focus-visible .sidebar-tooltip{opacity:1;transform:translateY(-50%)}.app-shell-sidebar-collapsed .app-sidebar .dimension-menu-item:before{left:2px}.app-shell-sidebar-collapsed .sidebar-footer{flex-direction:column;align-items:center;gap:8px}.app-shell-sidebar-collapsed .sidebar-footer .dimension-segmented{flex:none;width:54px;max-width:54px;overflow:hidden}.app-shell-sidebar-collapsed .sidebar-footer .dimension-segment{min-width:0;height:28px;padding-left:0;padding-right:0;font-size:10px;line-height:14px}.app-shell-sidebar-collapsed .sidebar-footer .dimension-segment.h-8{width:24px;height:28px}}.system-page-shell{flex-direction:column;flex:1;gap:16px;width:100%;min-height:0;display:flex}.system-page-header{flex-shrink:0}.system-panel-stack{flex:1;grid-template-rows:auto auto auto;gap:16px;min-height:0;display:grid}@media(min-width:72rem){.system-panel-stack{grid-template-rows:minmax(0,.5fr) minmax(0,2.5fr);grid-template-columns:minmax(240px,4fr) minmax(0,12fr) minmax(280px,4fr);align-items:stretch}.system-panel-version{grid-area:1/1/span 2}.system-panel-env{grid-area:1/2/span 2}.system-panel-doctor{grid-area:1/3/span 2}}.system-panel{flex-direction:column;min-height:0;display:flex;overflow:hidden}.system-panel-env .system-panel-body{flex:1;padding-right:0;display:flex;overflow:hidden}.system-panel-titlebar{flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.system-panel-titlebar h2{min-width:0}.system-panel-body{overscroll-behavior:contain;scrollbar-gutter:stable;min-height:0;padding-right:4px;overflow:auto}.system-diagnostics-list{flex-direction:column;gap:10px;min-width:0;display:flex}.system-diagnostics-item{border:1px solid var(--control-border);border-radius:var(--radius-md);background:var(--surface-input);min-width:0;box-shadow:var(--shadow-nb-sm);overflow:hidden}.system-diagnostics-item-expanded{border-color:var(--control-border-active);background:linear-gradient(180deg,var(--surface-table-head),transparent 120px),var(--surface-input)}.system-diagnostics-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:10px;display:grid}.system-diagnostics-summary{min-width:0;color:var(--color-text);cursor:pointer;text-align:left;background:0 0;border:0;flex-direction:column;align-items:flex-start;gap:3px;display:flex}.system-diagnostics-summary:disabled{cursor:default}.system-diagnostics-summary:focus-visible{border-radius:var(--radius-sm);outline:2px solid var(--control-focus-ring);outline-offset:3px}.system-diagnostics-project-main{align-items:center;gap:7px;min-width:0;max-width:100%;display:flex}.system-diagnostics-project-name{min-width:0;font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700;line-height:18px;overflow:hidden}.system-diagnostics-status,.system-diagnostics-never{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:11px;font-weight:700;line-height:15px;overflow:hidden}.system-diagnostics-status-ok{color:var(--color-running)}.system-diagnostics-status-warn{color:var(--color-stuck)}.system-diagnostics-never{color:var(--color-text-muted);font-weight:600}.system-diagnostics-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:6px;display:flex}.system-diagnostics-detail{border-top:1px solid var(--surface-card-border);min-width:0;padding:10px}.system-diagnostics-checks{min-width:0;font-family:var(--font-mono);flex-direction:column;gap:7px;font-size:12px;line-height:17px;display:flex}.system-diagnostics-check-row{grid-template-columns:14px minmax(86px,.46fr) minmax(0,1fr);align-items:start;gap:8px;min-width:0;display:grid}.system-diagnostics-check-icon{justify-content:center;align-items:center;padding-top:2px;display:inline-flex}.system-diagnostics-info-dot{border-radius:var(--radius-pill);background:var(--color-text-subtle);width:10px;height:10px;margin-top:1px;display:inline-block}.system-diagnostics-check-name{min-width:0;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.system-diagnostics-check-message{overflow-wrap:anywhere;min-width:0;color:var(--color-text-muted);white-space:pre-wrap}@media(max-width:90rem){.system-diagnostics-row{grid-template-columns:1fr;align-items:stretch}.system-diagnostics-actions{justify-content:flex-start}.system-diagnostics-check-row{grid-template-columns:14px minmax(0,1fr)}.system-diagnostics-check-message{grid-column:2}}.nb-card{background:var(--color-bg-soft);border:1px solid var(--surface-card-border);box-shadow:var(--shadow-nb);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:24px;padding:16px}.nb-card-interactive{cursor:pointer;transition:background-color .16s ease-out,border-color .16s ease-out,box-shadow .16s ease-out,transform .16s ease-out}.nb-card-interactive:hover{background:var(--surface-control-hover);border-color:var(--surface-border-hover)}.nb-card-interactive:active{background:var(--surface-control-active);border-color:var(--control-border-active);transform:translateY(1px)}.nb-btn{border:1px solid var(--control-border);border-radius:var(--radius-pill);font-family:var(--font-body);color:var(--color-text);background:var(--button-default-bg);box-shadow:var(--shadow-nb-sm);-webkit-user-select:none;user-select:none;cursor:pointer;-webkit-tap-highlight-color:transparent;align-items:center;gap:8px;padding:8px 14px;font-size:14px;font-weight:500;line-height:20px;transition:background-color .12s ease-out,border-color .12s ease-out,color .12s ease-out,transform .12s ease-out;display:inline-flex}.nb-btn:hover{background:var(--button-default-hover);border-color:var(--control-border-hover)}.nb-btn:active{background:var(--button-default-active);border-color:var(--control-border-active);transform:translateY(1px)}.nb-btn:focus-visible{box-shadow:var(--shadow-nb-sm),var(--control-focus-shadow)}.nb-btn:disabled,.nb-btn:disabled:hover{background:var(--control-disabled-bg);border-color:var(--control-border);color:var(--control-disabled-text);opacity:1;cursor:not-allowed;transform:none}.nb-btn-primary{background:var(--button-primary-bg);border-color:var(--button-primary-bg);color:var(--button-primary-text)}.nb-btn-primary:hover{background:var(--button-primary-hover);border-color:var(--button-primary-hover)}.nb-btn-primary:active{background:var(--button-primary-active);border-color:var(--button-primary-active)}.nb-btn-primary:disabled,.nb-btn-primary:disabled:hover{background:var(--control-disabled-bg);border-color:var(--control-border);color:var(--control-disabled-text)}.nb-btn-mint,.nb-btn-peach,.nb-btn-blue,.nb-btn-yellow,.nb-btn-purple,.nb-btn-lilac{color:var(--button-accent-text)}.nb-btn-mint{background:var(--button-mint-bg);border-color:var(--button-mint-border)}.nb-btn-mint:hover,.nb-btn-mint:active{background:var(--button-mint-hover);border-color:var(--button-mint-border)}.nb-btn-blue{background:var(--button-blue-bg);border-color:var(--button-blue-border)}.nb-btn-blue:hover,.nb-btn-blue:active{background:var(--button-blue-hover);border-color:var(--button-blue-border)}.nb-btn-yellow{background:var(--button-yellow-bg);border-color:var(--button-yellow-border)}.nb-btn-yellow:hover,.nb-btn-yellow:active{background:var(--button-yellow-hover);border-color:var(--button-yellow-border)}.nb-btn-purple,.nb-btn-lilac{background:var(--button-purple-bg);border-color:var(--button-purple-border)}.nb-btn-purple:hover,.nb-btn-purple:active,.nb-btn-lilac:hover,.nb-btn-lilac:active{background:var(--button-purple-hover);border-color:var(--button-purple-border)}.nb-btn-peach{background:var(--button-pink-bg);border-color:var(--button-pink-border)}.nb-btn-peach:hover,.nb-btn-peach:active{background:var(--button-pink-hover);border-color:var(--button-pink-border)}.nb-btn-danger{background:var(--color-crashed-bg);border-color:var(--button-danger-border);color:var(--color-crashed)}.nb-btn-danger:hover{background:var(--button-danger-hover-bg);border-color:var(--button-danger-border)}.nb-btn-danger:active{background:var(--button-danger-active-bg);border-color:var(--button-danger-border)}.nb-input{border:1px solid var(--control-border);background:var(--surface-input);color:var(--color-text);caret-color:var(--native-accent);accent-color:var(--native-accent);font-family:var(--font-body);box-shadow:var(--shadow-nb-sm);border-radius:10px;padding:10px 14px;font-size:14px;font-weight:500;line-height:20px;transition:border-color .12s ease-out,background-color .12s ease-out,box-shadow .12s ease-out}.nb-input:hover:not(:disabled):not([readonly]){border-color:var(--control-border-hover)}.nb-input:focus,.nb-input:focus-visible{border-color:var(--control-border-active);background:var(--surface-input-focus);box-shadow:var(--shadow-nb-sm),var(--control-focus-shadow);outline:none}.nb-input::placeholder{color:var(--control-placeholder);opacity:1}.nb-input:disabled,.nb-input[readonly]{background:var(--control-disabled-bg);color:var(--control-disabled-text);cursor:not-allowed}select.nb-input{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;background-color:var(--control-select-bg)}select.nb-input option{background:var(--control-option-bg);color:var(--color-text)}select.nb-input option:checked{background:var(--control-option-selected);color:var(--color-text)}:where([role=dialog] .nb-card,.nb-card[role=dialog]),.fixed.inset-0 .nb-card{background:var(--surface-modal)!important;border-color:var(--surface-card-border)!important}.fixed.inset-0 :where(.nb-input,input,textarea,select){background-color:var(--surface-input)!important;color:var(--color-text)!important;caret-color:var(--native-accent)!important;accent-color:var(--native-accent)!important}.fixed.inset-0 :where(.nb-input,input,textarea,select):focus{background-color:var(--surface-input-focus)!important}.scroll-frame{background-clip:padding-box;overflow:hidden}.scroll-frame-body{overscroll-behavior:contain;scrollbar-gutter:stable;min-height:0;overflow:auto}.edge-scroll-list{overscroll-behavior:contain;margin-right:-12px;padding-right:12px}.nb-badge{border:1px solid var(--control-border);border-radius:var(--radius-pill);font-family:var(--font-body);color:var(--color-text);background:var(--surface-control);align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:500;line-height:16px;display:inline-flex}.nb-status{border:1px solid var(--control-border);border-radius:var(--radius-pill);font-family:var(--font-body);color:var(--color-text-muted);background:var(--surface-control);align-items:center;gap:5px;padding:4px 10px 4px 9px;font-size:11px;font-weight:500;line-height:16px;display:inline-flex}.nb-status:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px}:where(button,a,.nb-btn,.nb-badge,.nb-status) svg{color:currentColor;flex-shrink:0}.nb-btn-primary svg{color:currentColor}.dimension-segmented{border-radius:var(--radius-pill);background:var(--surface-segmented);border:1px solid var(--control-border);background-clip:padding-box;gap:2px;padding:2px;display:flex;overflow:visible}.dimension-segment{border-radius:var(--radius-pill);min-width:0;color:var(--color-text-muted);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;justify-content:center;align-items:center;transition:background-color .14s ease-out,color .14s ease-out,transform .12s ease-out;display:inline-flex}.dimension-segment:hover{color:var(--color-text);background:var(--surface-control-hover)}.dimension-segment:active{background:var(--surface-control-active);transform:translateY(1px)}.dimension-segment-active{color:var(--color-text);background:var(--surface-control-selected);box-shadow:inset 0 0 0 1px var(--control-border-selected)}.dimension-menu-item{border-radius:var(--radius-md);width:100%;color:var(--color-text-muted);box-shadow:none;-webkit-tap-highlight-color:transparent;background:0 0;border:0;align-items:center;transition:background-color .14s ease-out,color .14s ease-out,transform .12s ease-out;display:flex;position:relative}.dimension-menu-item:before{content:"";border-radius:var(--radius-pill);background:0 0;width:3px;height:calc(100% - 18px);transition:background-color .14s ease-out,box-shadow .14s ease-out;position:absolute;top:50%;left:4px;transform:translateY(-50%)}.dimension-menu-item:hover{color:var(--color-text);background:var(--menu-hover)}.dimension-menu-item:active{background:var(--surface-control-active);transform:translateY(1px)}.dimension-menu-item-active{color:var(--color-text);background:var(--menu-active)}.dimension-menu-item-active:before{background:var(--native-accent);box-shadow:0 0 14px var(--native-accent)}@supports (color:color-mix(in lab,red,red)){.dimension-menu-item-active:before{box-shadow:0 0 14px color-mix(in oklch,var(--native-accent) 48%,transparent)}}.dimension-menu-item svg{color:currentColor}.project-page-layout{flex:1;grid-template-columns:minmax(280px,320px) minmax(0,1fr);gap:20px;min-height:0;display:grid}.project-list-panel{flex-direction:column;gap:12px;height:100%;min-height:0;padding:12px;display:flex;overflow:hidden}.project-list-toolbar{border-bottom:1px solid var(--surface-card-border);flex-direction:column;flex-shrink:0;gap:10px;padding-bottom:10px;display:flex}.project-list-title{font-family:var(--font-heading);text-overflow:ellipsis;white-space:nowrap;font-size:24px;font-weight:700;line-height:30px;overflow:hidden}.project-detail-shell{flex-direction:column;flex:1;gap:16px;width:100%;min-height:0;display:flex}.project-detail-header{flex-direction:column;flex-shrink:0;gap:8px;padding:16px;display:flex}.project-detail-title-row{align-items:center;gap:12px;min-width:0;display:flex}.project-detail-back{flex-shrink:0;padding:6px 12px}.project-detail-title-block{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.project-detail-kicker{min-width:0;color:var(--color-text-muted);align-items:center;gap:8px;font-size:12px;font-weight:600;line-height:16px;display:flex}.project-detail-title{font-family:var(--font-heading);text-overflow:ellipsis;white-space:nowrap;font-size:30px;font-weight:700;line-height:36px;overflow:hidden}.project-detail-board{flex-shrink:0;margin-left:auto}.project-detail-tabs{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.project-detail-tab{border:1px solid var(--control-border);border-radius:var(--radius-pill);background:var(--button-default-bg);min-height:34px;box-shadow:var(--shadow-nb-sm);color:var(--color-text-muted);cursor:pointer;font-family:var(--font-body);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:7px;padding:6px 12px;font-size:13px;font-weight:600;line-height:18px;transition:background-color .12s ease-out,border-color .12s ease-out,color .12s ease-out,transform .12s ease-out;display:inline-flex}.project-detail-tab:hover{border-color:var(--control-border-hover);background:var(--button-default-hover);color:var(--color-text)}.project-detail-tab:active{border-color:var(--control-border-active);background:var(--button-default-active);transform:translateY(1px)}.project-detail-tab:focus-visible{box-shadow:var(--shadow-nb-sm),var(--control-focus-shadow)}.project-detail-tab-active{border-color:var(--button-primary-bg);background:var(--button-primary-bg);color:var(--button-primary-text)}.project-detail-content{flex-direction:column;flex:1;min-height:0;padding-right:4px;display:flex}.project-overview{padding:16px}.project-overview dl{grid-template-columns:minmax(116px,160px) minmax(0,1fr);gap:10px 18px;display:grid}.project-overview-row{display:contents}.project-overview-row dt{color:var(--color-text-muted);font-size:13px;font-weight:700;line-height:20px}.project-overview-row dd{overflow-wrap:anywhere;min-width:0;color:var(--color-text);font-family:var(--font-mono);margin:0;font-size:13px;font-weight:500;line-height:20px}.project-config-card{flex-direction:column;flex:1;min-height:0;padding-bottom:0;display:flex;overflow:hidden}.system-env-settings-editor{border:1px solid var(--surface-card-border);background:var(--color-bg-soft);min-height:0;box-shadow:var(--shadow-nb);border-radius:24px;flex-direction:column;flex:1;display:flex;overflow:hidden}.system-env-settings-editor .project-config-toolbar{border-radius:24px 24px 0 0;margin:0}.system-env-settings-editor .project-config-settings{max-height:none;margin-left:0;margin-right:0}.project-config-toolbar{z-index:8;border-bottom:2px solid #f0edf826;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:16px;margin:-16px -16px 0;padding:16px;display:flex}@supports (color:color-mix(in lab,red,red)){.project-config-toolbar{border-bottom:2px solid color-mix(in oklch,var(--color-text) 15%,transparent)}}.project-config-toolbar{background:var(--surface-table-head);border-radius:24px 24px 0 0}.project-config-path{border:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--surface-code);max-width:min(72vw,760px);font-family:var(--font-mono);text-overflow:ellipsis;vertical-align:middle;white-space:nowrap;padding:4px 8px;font-size:13px;font-weight:600;line-height:18px;display:inline-block;overflow:hidden}.project-config-settings{overscroll-behavior:contain;flex-direction:column;flex:1;gap:14px;min-height:0;margin-left:-16px;margin-right:-16px;padding:16px 0;display:flex;overflow:auto}.project-config-section{border-bottom:1px solid var(--surface-card-border);grid-template-columns:minmax(180px,240px) minmax(0,1fr);gap:18px;margin:0 16px;padding-block:2px 16px;display:grid}.project-config-section:last-child{border-bottom:0;padding-bottom:0}.project-config-section-head{flex-direction:column;gap:5px;min-width:0;display:flex}.project-config-section-head h3{font-size:15px;font-weight:700;line-height:20px}.project-config-section-head p,.project-config-help,.project-config-empty{color:var(--color-text-muted);margin:0;font-size:12px;font-weight:500;line-height:17px}.project-config-grid{grid-template-columns:repeat(2,minmax(220px,1fr));gap:12px;min-width:0;display:grid}.project-config-field{flex-direction:column;gap:7px;min-width:0;display:flex}.project-config-field .nb-input{width:100%;min-width:0}.project-config-field-disabled{opacity:.72}.project-config-directory-control{grid-template-columns:minmax(0,1fr) auto;gap:8px;min-width:0;display:grid}.project-config-directory-control .nb-btn{white-space:nowrap;min-height:42px;padding-inline:12px}.project-config-label{min-width:0;color:var(--color-text);justify-content:space-between;align-items:center;gap:8px;font-size:13px;font-weight:700;line-height:18px;display:flex}.project-config-label span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.project-config-label code{color:var(--color-text-subtle);font-family:var(--font-mono);flex-shrink:0;font-size:10px;font-weight:600}.project-config-toggle-row{border:1px solid var(--control-border);background:var(--surface-input);min-height:42px;box-shadow:var(--shadow-nb-sm);color:var(--color-text);border-radius:10px;align-items:center;gap:10px;padding:10px 12px;font-size:13px;font-weight:700;line-height:18px;display:inline-flex}.project-config-toggle-row input{width:18px;height:18px;margin:0}.project-config-field-disabled .project-config-toggle-row{background:var(--control-disabled-bg);color:var(--control-disabled-text);cursor:not-allowed}.project-config-field-disabled .project-config-toggle-row input{cursor:not-allowed}.project-config-custom-list{flex-direction:column;gap:10px;min-width:0;display:flex}.project-config-custom-row{grid-template-columns:minmax(150px,220px) minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;display:grid}.project-config-custom-row code{border:1px solid var(--control-border);background:var(--surface-code);color:var(--color-text-muted);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;border-radius:10px;padding:9px 10px;font-size:12px;font-weight:600;line-height:18px;overflow:hidden}.project-config-custom-add{margin-top:2px}@media(max-width:1060px){.project-page-layout{grid-template-columns:1fr}.project-list-panel{max-height:360px}}@media(max-width:720px){.project-detail-title-row{flex-wrap:wrap;align-items:stretch}.project-detail-board{justify-content:center;width:100%;margin-left:0}.project-detail-tab{flex:120px}.project-config-toolbar{flex-direction:column;align-items:stretch}.project-config-toolbar>.flex{flex-wrap:wrap}.project-config-path{max-width:100%}.project-config-section{grid-template-columns:1fr;gap:10px}.project-config-grid,.project-config-directory-control{grid-template-columns:1fr}.project-config-directory-control .nb-btn{justify-content:center}.project-config-custom-row{grid-template-columns:1fr}.project-config-custom-row .nb-btn{justify-content:center}.project-overview-row{grid-template-columns:1fr;gap:2px;padding-block:2px;display:grid}.project-overview dl{grid-template-columns:1fr;gap:8px}}.arrange-flow-shell{border:1px solid var(--surface-card-border);border-radius:var(--radius-lg);background:var(--color-bg-soft);box-shadow:var(--shadow-nb)}.arrange-flow-shell .react-flow{background:0 0}.arrange-flow-shell .react-flow__panel.react-flow__controls{flex-direction:column;display:flex;overflow:hidden;border:1px solid var(--control-border)!important;border-radius:var(--radius-md)!important;background:var(--surface-modal)!important;box-shadow:var(--shadow-nb-sm)!important}.arrange-flow-shell .react-flow__controls-button{width:28px;height:28px;transition:background-color .12s ease-out,color .12s ease-out;border:0!important;border-bottom:1px solid var(--control-border)!important;background:var(--surface-control)!important;color:var(--color-text-muted)!important;box-shadow:none!important}.arrange-flow-shell .react-flow__controls-button:last-child{border-bottom:0!important}.arrange-flow-shell .react-flow__controls-button:hover{background:var(--surface-control-hover)!important;color:var(--color-text)!important}.arrange-flow-shell .react-flow__controls-button:active{background:var(--surface-control-active)!important;color:var(--color-text)!important}.arrange-flow-shell .react-flow__controls-button:disabled{cursor:not-allowed;background:var(--control-disabled-bg)!important;color:var(--control-disabled-text)!important}.arrange-flow-shell .react-flow__controls-button svg{fill:currentColor!important;color:currentColor!important}@keyframes arrange-flow-working-edge{to{stroke-dashoffset:-28px}}.arrange-flow-shell .react-flow__edge.arrange-flow-edge-working .react-flow__edge-path{stroke-linecap:round;animation:.9s linear infinite arrange-flow-working-edge}.arrange-flow-shell .react-flow__edge.arrange-flow-edge-working .react-flow__edge-interaction{animation:none}.prose-chat{color:var(--color-text);line-height:1.6}.prose-chat>:first-child{margin-top:0}.prose-chat>:last-child{margin-bottom:0}.prose-chat h1{font-family:var(--font-heading);margin:1em 0 .5em;font-size:1.5rem;font-weight:500}.prose-chat h2{font-family:var(--font-heading);margin:1em 0 .5em;font-size:1.25rem;font-weight:500}.prose-chat h3{font-family:var(--font-heading);margin:.8em 0 .4em;font-size:1.1rem;font-weight:500}.prose-chat h4,.prose-chat h5,.prose-chat h6{font-family:var(--font-heading);margin:.8em 0 .3em;font-weight:500}.prose-chat p{margin:.6em 0}.prose-chat ul,.prose-chat ol{margin:.6em 0;padding-left:1.6em}.prose-chat ul{list-style:outside}.prose-chat ol{list-style:decimal}.prose-chat li,.prose-chat li>ul,.prose-chat li>ol{margin:.2em 0}.prose-chat code{font-family:var(--font-mono);background:var(--surface-code);border:1px solid var(--color-border-light);border-radius:4px;padding:0 4px;font-size:.9em}.prose-chat pre{background:var(--surface-pre);border:1px solid var(--color-border-light);font-family:var(--font-mono);border-radius:10px;margin:.8em 0;padding:12px;font-size:.85em;line-height:1.45;overflow-x:auto}.prose-chat pre code{font-size:inherit;background:0 0;border:0;padding:0}.prose-chat blockquote{border-left:1px solid var(--color-hairline);color:var(--color-text-muted);margin:.8em 0;padding-left:1em}.prose-chat table{border-collapse:collapse;border:1px solid var(--color-border-light);border-radius:10px;margin:.8em 0;overflow:hidden}.prose-chat th,.prose-chat td{border:1px solid var(--color-border-light);text-align:left;padding:6px 10px}.prose-chat th{background:var(--surface-table-head);font-weight:500}.prose-chat a{color:var(--color-text);text-underline-offset:2px;-webkit-text-decoration:underline #cdbcff6b;text-decoration:underline #cdbcff6b}.prose-chat a:hover{color:var(--color-cta);-webkit-text-decoration-color:var(--color-cta);text-decoration-color:var(--color-cta)}.prose-chat hr{border:0;border-top:1px solid var(--color-border-light);margin:1em 0}.hljs{color:var(--color-text);background:0 0}.hljs-comment,.hljs-quote{color:var(--color-text-subtle)}.hljs-keyword,.hljs-selector-tag,.hljs-built_in{color:var(--color-text)}.hljs-string,.hljs-title,.hljs-name,.hljs-number,.hljs-literal{color:var(--color-text-muted)}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-full{top:100%}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.col-span-full{grid-column:1/-1}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.m-1{margin:calc(var(--spacing) * 1)}.m-auto{margin:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-8{margin-block:calc(var(--spacing) * 8)}.-mt-0\.5{margin-top:calc(var(--spacing) * -.5)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-20{height:calc(var(--spacing) * 20)}.h-96{height:calc(var(--spacing) * 96)}.h-\[70vh\]{height:70vh}.h-\[calc\(100vh-2rem\)\]{height:calc(100vh - 2rem)}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-14{max-height:calc(var(--spacing) * 14)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[28rem\]{max-height:28rem}.max-h-\[46px\]{max-height:46px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[88vh\]{max-height:88vh}.max-h-\[calc\(100vh-2rem\)\]{max-height:calc(100vh - 2rem)}.max-h-\[calc\(100vh-3rem\)\]{max-height:calc(100vh - 3rem)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[46px\]{min-height:46px}.min-h-\[120px\]{min-height:120px}.min-h-\[200px\]{min-height:200px}.min-h-\[240px\]{min-height:240px}.min-h-\[280px\]{min-height:280px}.min-h-\[420px\]{min-height:420px}.min-h-full{min-height:100%}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/3{width:66.6667%}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-52{width:calc(var(--spacing) * 52)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\[min\(92vw\,520px\)\]{width:min(92vw,520px)}.w-\[min\(92vw\,640px\)\]{width:min(92vw,640px)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[90\%\]{max-width:90%}.max-w-\[480px\]{max-width:480px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[90px\]{min-width:90px}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[220px\]{min-width:220px}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-y{resize:vertical}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-cols-\[minmax\(240px\,1fr\)\]{grid-auto-columns:minmax(240px,1fr)}.grid-flow-col{grid-auto-flow:column}.auto-rows-\[82px\]{grid-auto-rows:82px}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[100px_60px_1fr\]{grid-template-columns:100px 60px 1fr}.grid-cols-\[130px_minmax\(140px\,1\.2fr\)_minmax\(140px\,1\.5fr\)_80px_110px_90px_90px_100px\]{grid-template-columns:130px minmax(140px,1.2fr) minmax(140px,1.5fr) 80px 110px 90px 90px 100px}.grid-cols-\[180px_120px_minmax\(100px\,1fr\)_minmax\(160px\,2fr\)\]{grid-template-columns:180px 120px minmax(100px,1fr) minmax(160px,2fr)}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[repeat\(auto-fill\,minmax\(170px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(280px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.grid-cols-\[repeat\(auto-fit\,minmax\(15rem\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}.grid-rows-\[1fr_auto\]{grid-template-rows:1fr auto}.grid-rows-\[36px_minmax\(0\,1fr\)\]{grid-template-rows:36px minmax(0,1fr)}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-2\.5{column-gap:calc(var(--spacing) * 2.5)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}:where(.divide-y-2>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(2px * var(--tw-divide-y-reverse));border-bottom-width:calc(2px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[var\(--color-text\)\]\/20>:not(:last-child)){border-color:#f0edf833}@supports (color:color-mix(in lab,red,red)){:where(.divide-\[var\(--color-text\)\]\/20>:not(:last-child)){border-color:color-mix(in oklab,var(--color-text) 20%,transparent)}}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-\[2px\]{border-style:var(--tw-border-style);border-width:2px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-t-\[1\.5px\]{border-top-style:var(--tw-border-style);border-top-width:1.5px}.border-t-\[3px\]{border-top-style:var(--tw-border-style);border-top-width:3px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-\[3px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:3px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--color-border-light\)\]{border-color:var(--color-border-light)}.border-\[var\(--color-crashed\)\]{border-color:var(--color-crashed)}.border-\[var\(--color-crashed-bg\)\]{border-color:var(--color-crashed-bg)}.border-\[var\(--color-info-bg\)\]{border-color:var(--color-info-bg)}.border-\[var\(--color-running\)\]{border-color:var(--color-running)}.border-\[var\(--color-stuck\)\]{border-color:var(--color-stuck)}.border-\[var\(--color-stuck-bg\)\]{border-color:var(--color-stuck-bg)}.border-\[var\(--color-text\)\]{border-color:var(--color-text)}.border-\[var\(--color-text\)\]\/10{border-color:#f0edf81a}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-text\)\]\/10{border-color:color-mix(in oklab,var(--color-text) 10%,transparent)}}.border-\[var\(--color-text\)\]\/15{border-color:#f0edf826}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-text\)\]\/15{border-color:color-mix(in oklab,var(--color-text) 15%,transparent)}}.border-\[var\(--control-border\)\]{border-color:var(--control-border)}.border-\[var\(--control-border-selected\)\]{border-color:var(--control-border-selected)}.border-\[var\(--surface-card-border\)\]{border-color:var(--surface-card-border)}.bg-\[rgba\(45\,55\,72\,0\.4\)\]{background-color:#2d374866}.bg-\[rgba\(45\,55\,72\,0\.5\)\]{background-color:#2d374880}.bg-\[rgba\(45\,55\,72\,0\.6\)\]{background-color:#2d374899}.bg-\[var\(--color-accent-mint\)\]{background-color:var(--color-accent-mint)}.bg-\[var\(--color-accent-pink\)\]{background-color:var(--color-accent-pink)}.bg-\[var\(--color-accent-purple\)\]{background-color:var(--color-accent-purple)}.bg-\[var\(--color-accent-yellow\)\]{background-color:var(--color-accent-yellow)}.bg-\[var\(--color-bg\)\]{background-color:var(--color-bg)}.bg-\[var\(--color-bg-cream\)\]{background-color:var(--color-bg-cream)}.bg-\[var\(--color-bg-soft\)\]{background-color:var(--color-bg-soft)}.bg-\[var\(--color-border-light\)\]{background-color:var(--color-border-light)}.bg-\[var\(--color-crashed-bg\)\]{background-color:var(--color-crashed-bg)}.bg-\[var\(--color-cta\)\]{background-color:var(--color-cta)}.bg-\[var\(--color-info-bg\)\]{background-color:var(--color-info-bg)}.bg-\[var\(--color-primary\)\]{background-color:var(--color-primary)}.bg-\[var\(--color-running\)\]{background-color:var(--color-running)}.bg-\[var\(--color-running-bg\)\]{background-color:var(--color-running-bg)}.bg-\[var\(--color-secondary\)\]{background-color:var(--color-secondary)}.bg-\[var\(--color-snow-white\)\]{background-color:var(--color-snow-white)}.bg-\[var\(--color-stuck-bg\)\]{background-color:var(--color-stuck-bg)}.bg-\[var\(--color-text\)\]{background-color:var(--color-text)}.bg-\[var\(--surface-code\)\]{background-color:var(--surface-code)}.bg-\[var\(--surface-control\)\]{background-color:var(--surface-control)}.bg-\[var\(--surface-control-selected\)\]{background-color:var(--surface-control-selected)}.bg-\[var\(--surface-input\)\]{background-color:var(--surface-input)}.bg-\[var\(--surface-menu\)\]{background-color:var(--surface-menu)}.bg-\[var\(--surface-progress-track\)\]{background-color:var(--surface-progress-track)}.bg-\[var\(--surface-table-head\)\]{background-color:var(--surface-table-head)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-\[family-name\:var\(--font-body\)\]{font-family:var(--font-body)}.font-\[family-name\:var\(--font-heading\)\]{font-family:var(--font-heading)}.font-\[family-name\:var\(--font-mono\)\],.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-\[22px\]{--tw-leading:22px;line-height:22px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--color-bg\)\]{color:var(--color-bg)}.text-\[var\(--color-crashed\)\]{color:var(--color-crashed)}.text-\[var\(--color-graphite\)\]{color:var(--color-graphite)}.text-\[var\(--color-info\)\]{color:var(--color-info)}.text-\[var\(--color-running\)\]{color:var(--color-running)}.text-\[var\(--color-stuck\)\]{color:var(--color-stuck)}.text-\[var\(--color-text\)\]{color:var(--color-text)}.text-\[var\(--color-text\)\]\/40{color:#f0edf866}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/40{color:color-mix(in oklab,var(--color-text) 40%,transparent)}}.text-\[var\(--color-text\)\]\/45{color:#f0edf873}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/45{color:color-mix(in oklab,var(--color-text) 45%,transparent)}}.text-\[var\(--color-text\)\]\/50{color:#f0edf880}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/50{color:color-mix(in oklab,var(--color-text) 50%,transparent)}}.text-\[var\(--color-text\)\]\/60{color:#f0edf899}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/60{color:color-mix(in oklab,var(--color-text) 60%,transparent)}}.text-\[var\(--color-text\)\]\/70{color:#f0edf8b3}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/70{color:color-mix(in oklab,var(--color-text) 70%,transparent)}}.text-\[var\(--color-text-muted\)\]{color:var(--color-text-muted)}.text-\[var\(--color-text-subtle\)\]{color:var(--color-text-subtle)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.decoration-2{text-decoration-thickness:2px}.underline-offset-2{text-underline-offset:2px}.accent-\[var\(--color-cta\)\]{accent-color:var(--color-cta)}.opacity-15{opacity:.15}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[1px_1px_0_var\(--color-text\)\]{--tw-shadow:1px 1px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[2px_2px_0_var\(--color-text\)\]{--tw-shadow:2px 2px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[6px_6px_0_var\(--color-text\)\]{--tw-shadow:6px 6px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[var\(--shadow-nb-sm\)\]{--tw-shadow:var(--shadow-nb-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-nb{--tw-shadow:var(--tw-shadow-color,#d6c7ff1f) 0 0 0 1px inset;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.\[filter\:url\(\#threshold\)_blur\(0\.6px\)\]{filter:url(#threshold)blur(.6px)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,background-color\,border-color\]{transition-property:transform,background-color,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-\[180ms\]{--tw-duration:.18s;transition-duration:.18s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.hover\:border-\[var\(--color-text\)\]:hover{border-color:var(--color-text)}.hover\:border-\[var\(--surface-border-hover\)\]:hover{border-color:var(--surface-border-hover)}.hover\:bg-\[var\(--color-accent-mint\)\]:hover{background-color:var(--color-accent-mint)}.hover\:bg-\[var\(--surface-control-hover\)\]:hover{background-color:var(--surface-control-hover)}.hover\:text-\[var\(--color-crashed\)\]:hover{color:var(--color-crashed)}.hover\:text-\[var\(--color-text\)\]:hover{color:var(--color-text)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.hover\:shadow-\[3px_3px_0_var\(--color-text\)\]:hover{--tw-shadow:3px 3px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[var\(--color-text\)\]:focus-visible{--tw-ring-color:var(--color-text)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-\[-4px\]:focus-visible{outline-offset:-4px}.focus-visible\:outline-\[var\(--control-focus-ring\)\]:focus-visible{outline-color:var(--control-focus-ring)}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-1{grid-column-start:1}.md\:col-start-2{grid-column-start:2}.md\:row-start-1{grid-row-start:1}.md\:mt-2{margin-top:calc(var(--spacing) * 2)}.md\:min-h-0{min-height:calc(var(--spacing) * 0)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[220px_1fr\]{grid-template-columns:220px 1fr}.md\:grid-cols-\[minmax\(0\,1fr\)_minmax\(260px\,340px\)\]{grid-template-columns:minmax(0,1fr) minmax(260px,340px)}.md\:grid-cols-\[minmax\(0\,1fr\)_minmax\(280px\,380px\)\]{grid-template-columns:minmax(0,1fr) minmax(280px,380px)}.md\:flex-col{flex-direction:column}.md\:gap-0\.5{gap:calc(var(--spacing) * .5)}.md\:overflow-hidden{overflow:hidden}.md\:overflow-y-auto{overflow-y:auto}.md\:border-r-\[3px\]{border-right-style:var(--tw-border-style);border-right-width:3px}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:pt-3{padding-top:calc(var(--spacing) * 3)}.md\:pr-0{padding-right:calc(var(--spacing) * 0)}.md\:pr-1{padding-right:calc(var(--spacing) * 1)}}@media(min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.font-bold,.font-semibold{font-weight:500!important}.bg-white{color:var(--color-text);background-color:var(--color-bg-soft)!important}.bg-surface-input{background:var(--surface-input)!important}.bg-color-bg-soft{background:var(--color-bg-soft)!important}.bg-color-bg-soft-button{color:var(--color-text);background-color:var(--color-bg-soft)!important}.overflow-auto,.overflow-y-auto,.overflow-x-auto{overscroll-behavior:contain;scrollbar-color:#cdbcff61 transparent;scrollbar-gutter:stable}.overflow-auto,.overflow-y-auto{min-height:0}.overflow-x-auto{min-width:0}.bg-green-600{background-color:var(--color-running)!important}.bg-gray-400{background-color:var(--color-text-subtle)!important}[class*="border-[var(--color-text)]"],[class*="border-[var(--color-border-light)]"]{border-color:var(--color-border-light)!important}[class*=border-dashed]{border-style:solid!important;border-color:var(--surface-card-border)!important}[class*="border-[3px]"],[class*="border-[2px]"],[class~=border-2]{border-width:1px!important}[class*="border-t-[3px]"],[class*="border-t-[2px]"],[class*=border-t-2]{border-top-width:1px!important}[class*="border-r-[3px]"],[class*="border-r-[2px]"],[class*=border-r-2]{border-right-width:1px!important}[class*="border-b-[3px]"],[class*="border-b-[2px]"],[class*=border-b-2]{border-bottom-width:1px!important}[class*="border-l-[3px]"],[class*="border-l-[2px]"],[class*=border-l-2]{border-left-width:1px!important}[class*="shadow-["]{box-shadow:var(--shadow-nb-sm)!important}:where(input,textarea,select)[class*=border-]:not([class~=border-0]){background-color:var(--surface-input)!important;color:var(--color-text)!important;box-shadow:none!important}:where(input,textarea,select)[class*=border-]:not([class~=border-0]):focus{background-color:var(--surface-input-focus)!important}[class*="bg-black/30"],[class*="bg-[rgba(45,55,72"]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:var(--surface-overlay)!important}:where(table){color:var(--color-text)}:where(thead),:where(thead tr),:where(table th){background-color:var(--surface-table-head)!important;color:var(--color-text)!important}:where(table) :where(th,td),:where(tbody tr){border-color:var(--surface-table-border)!important}:where(tbody tr:hover){background-color:var(--surface-table-row-hover)}:where(button,a)[class*=rounded-xl],:where(button,a)[class*=rounded-lg],:where(button,a)[class*=rounded-md]{border-radius:var(--radius-pill)!important}:where(button,a)[class*="bg-[var(--color-accent-mint)]"],:where(button,a)[class*="bg-[var(--color-accent-yellow)]"],:where(button,a)[class*="bg-[var(--color-accent-purple)]"],:where(button,a)[class*="bg-[var(--color-accent-pink)]"]{color:var(--color-text)!important}}@font-face{font-family:SAIBA-45;src:url(/fonts/saiba-45.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}.slide-switch{cursor:pointer;flex:none;display:inline-flex;position:relative}.slide-switch input{opacity:0;width:0;height:0;position:absolute}.slide-switch-track{border-radius:var(--radius-pill);background:var(--surface-segmented);border:1px solid var(--control-border);background-clip:padding-box;align-items:center;gap:2px;padding:2px;display:inline-flex;position:relative}.slide-switch-cell{z-index:1;width:34px;height:28px;color:var(--color-text-muted);letter-spacing:.02em;font-size:12px;font-weight:600;line-height:1;font-family:var(--font-mono);justify-content:center;align-items:center;transition:color .16s ease-out;display:inline-flex;position:relative}.slide-switch-thumb{z-index:0;border-radius:var(--radius-pill);background:var(--surface-control-selected);width:34px;height:calc(100% - 4px);box-shadow:inset 0 0 0 1px var(--control-border-selected);transition:transform .24s cubic-bezier(.4,0,.2,1);position:absolute;top:2px;left:2px}.slide-switch input:checked~.slide-switch-track .slide-switch-thumb{transform:translate(36px)}.slide-switch input:not(:checked)~.slide-switch-track .slide-switch-a,.slide-switch input:checked~.slide-switch-track .slide-switch-b{color:var(--color-text)}.slide-switch input:focus-visible~.slide-switch-track{outline:2px solid var(--color-cta);outline-offset:2px}.app-shell-sidebar-collapsed .slide-switch-cell{width:24px;height:24px;font-size:10px}.app-shell-sidebar-collapsed .slide-switch-thumb{width:24px}.app-shell-sidebar-collapsed .slide-switch input:checked~.slide-switch-track .slide-switch-thumb{transform:translate(26px)}.slide-tabs{border:2px solid var(--control-border);background:var(--surface-segmented);border-radius:30px;align-items:stretch;width:100%;padding:4px;display:flex;position:relative;overflow:hidden}.slide-tabs-bg{background:var(--surface-control-selected);box-shadow:inset 0 0 0 1px var(--control-border-selected);z-index:0;pointer-events:none;border-radius:30px;transition:transform .42s cubic-bezier(.175,.885,.32,1.275),width .42s cubic-bezier(.175,.885,.32,1.275);position:absolute;top:4px;bottom:4px;left:0}.slide-tabs-label{z-index:1;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--color-text-muted);background:0 0;border:none;border-radius:30px;flex:1 1 0;justify-content:center;align-items:center;gap:5px;padding:5px 8px;font-size:13px;font-weight:500;line-height:1.2;transition:color .3s;display:inline-flex;position:relative;overflow:hidden}.slide-tabs-label.is-active{color:var(--color-text);font-weight:700}.slide-tabs-label:hover:not(.is-active){color:var(--color-text)}.sticky-thead th{z-index:20;background:var(--color-bg-cream);position:sticky;top:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}
|