@tom2012/cc-web 2026.5.17-b → 2026.5.18-b
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/README.md +1 -1
- package/backend/dist/routes/tracks.d.ts.map +1 -1
- package/backend/dist/routes/tracks.js +31 -1
- package/backend/dist/routes/tracks.js.map +1 -1
- package/backend/dist/tracks/store.d.ts +3 -0
- package/backend/dist/tracks/store.d.ts.map +1 -1
- package/backend/dist/tracks/store.js +41 -0
- package/backend/dist/tracks/store.js.map +1 -1
- package/frontend/dist/assets/{ChatOverlay-DAgN-E-T.js → ChatOverlay-DPM_F615.js} +1 -1
- package/frontend/dist/assets/{GraphPreview-sveADvuJ.js → GraphPreview-CJhh33L8.js} +2 -2
- package/frontend/dist/assets/{MobilePage-6gsKYCbk.js → MobilePage-Cx9v8Udp.js} +3 -3
- package/frontend/dist/assets/{OfficePreview-BYj9NyEQ.js → OfficePreview-h6zYBZFQ.js} +2 -2
- package/frontend/dist/assets/{PdfPreview-1e1iPu2y.js → PdfPreview-DbYFye7c.js} +1 -1
- package/frontend/dist/assets/{ProjectPage-CsigpH00.js → ProjectPage-DaPmvQ-H.js} +5 -5
- package/frontend/dist/assets/{SettingsPage-BT8wt9ku.js → SettingsPage-BkApTPbw.js} +1 -1
- package/frontend/dist/assets/{SkillHubPage-BH3x0_RI.js → SkillHubPage-BwfU-hel.js} +1 -1
- package/frontend/dist/assets/{TrackEditor-CRhJKFTT.js → TrackEditor-BbM0eHTD.js} +3 -3
- package/frontend/dist/assets/TrackGraphEditor-DzEqAGFN.js +2 -0
- package/frontend/dist/assets/TrackGraphEditor-Fd0xVSp_.css +1 -0
- package/frontend/dist/assets/{chevron-down-B1_H23MM.js → chevron-down-D4Vj-5wB.js} +1 -1
- package/frontend/dist/assets/{cssMode-DFhAGaQl.js → cssMode-5whH06Yl.js} +1 -1
- package/frontend/dist/assets/{editor.main-Dv96_EKG.js → editor.main-CnjJg6pv.js} +7 -7
- package/frontend/dist/assets/{freemarker2-DiQ8RXeI.js → freemarker2-CUgILTtX.js} +1 -1
- package/frontend/dist/assets/{handlebars-lNmPQXYn.js → handlebars-C2avKkbK.js} +1 -1
- package/frontend/dist/assets/{html-CceA8gLw.js → html-ZYUiGgvr.js} +1 -1
- package/frontend/dist/assets/{htmlMode-BUQC-_yi.js → htmlMode-CeliqUBd.js} +1 -1
- package/frontend/dist/assets/{index-DyxMqBaM.js → index-C-2GBtXy.js} +1 -1
- package/frontend/dist/assets/{index-beUqd-be.js → index-CKxFfdqR.js} +1 -1
- package/frontend/dist/assets/index-COjNnvQB.css +1 -0
- package/frontend/dist/assets/{index-7HzPvnim.js → index-DUIOrPha.js} +3 -3
- package/frontend/dist/assets/{index-dHRMoKUn.js → index-DjmvYdMM.js} +1 -1
- package/frontend/dist/assets/{javascript-CQe7I4xs.js → javascript-0VRCllAK.js} +1 -1
- package/frontend/dist/assets/{jsonMode-DIlGP-3O.js → jsonMode-Dwqu43-Y.js} +1 -1
- package/frontend/dist/assets/{jszip.min-BVqCtBEI.js → jszip.min-Bn769Ot7.js} +1 -1
- package/frontend/dist/assets/{liquid-BgWCYgG1.js → liquid-E2ejTVvo.js} +1 -1
- package/frontend/dist/assets/{mdx-toHFH6K_.js → mdx-CqJmnu86.js} +1 -1
- package/frontend/dist/assets/{python-y3adCX0q.js → python-BYNiBUNZ.js} +1 -1
- package/frontend/dist/assets/{razor-h2keUv65.js → razor-2YR0XVnP.js} +1 -1
- package/frontend/dist/assets/{select-Dg8S23zP.js → select-CXSNG3yW.js} +1 -1
- package/frontend/dist/assets/{tsMode-CrPSBUsc.js → tsMode-DrjOLXjA.js} +1 -1
- package/frontend/dist/assets/{typescript-BqiSQ_9M.js → typescript--8YtfOFf.js} +1 -1
- package/frontend/dist/assets/{user-ClsgmXgA.js → user-Chl3LWFq.js} +1 -1
- package/frontend/dist/assets/{xml-DRvmzWvM.js → xml-CGj_sBRG.js} +1 -1
- package/frontend/dist/assets/{yaml-C-SLyX1r.js → yaml-of0AgMN8.js} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/frontend/dist/assets/TrackVisualEditor-DzrpHA4M.js +0 -2
- package/frontend/dist/assets/index-D7pFgty-.css +0 -1
package/frontend/dist/index.html
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
11
11
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
12
12
|
<title>CC Web</title>
|
|
13
|
-
<script type="module" crossorigin src="/assets/index-
|
|
14
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assets/index-DUIOrPha.js"></script>
|
|
14
|
+
<link rel="stylesheet" crossorigin href="/assets/index-COjNnvQB.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
17
17
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/editor.main-Dv96_EKG.js","assets/index-7HzPvnim.js","assets/index-D7pFgty-.css","assets/editor-B5EY1bb8.css","assets/index-dHRMoKUn.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as e,W as t,be as n,j as r,_ as o}from"./index-7HzPvnim.js";import{n as a,a as i,M as s,N as l,b as c}from"./ProjectPage-CsigpH00.js";import"./purify.es-CgRAQgUo.js";import"./ChatOverlay-DAgN-E-T.js";import"./chevron-down-B1_H23MM.js";import"./index-beUqd-be.js";import"./select-Dg8S23zP.js";import"./user-ClsgmXgA.js";function d(e){return"ask_user"===e.type||"fai"===e.type?e.outputVar:"let"===e.type?e.varName:null}function u(e,t){const n=[];for(const r of function(e,t){const n=[];for(let r=0;r<t;r++){const t=e.body[r];t&&("ask_user"===t.type?n.push({name:t.outputVar,source:"ask_user",parts:t.fields.map(e=>e.key)}):"fai"===t.type?n.push({name:t.outputVar,source:"fai",parts:t.outputs.map(e=>e.name)}):"let"===t.type&&n.push({name:t.varName,source:"let",parts:[]}))}return n}(e,t)){n.push(r.name);for(const e of r.parts)n.push(`${r.name}.${e}`)}return n}function p(e,t,n){if(0===n.length)return!1;return u(e,t).includes(n.join("."))}const f=/^[a-zA-Z_][a-zA-Z0-9_]*$/;function h(e){return e.path.join(".")}function g(e){return e.raw}function m(e){return"var"===e.kind?h(e):g(e)}function v(e){return"var"===e.kind?h(e):"lit"===e.kind?g(e):`${m((t=e).left)} ${t.op} ${m(t.right)}`;var t}function b(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}function x(e){return` // @@nid: ${e}`}function y(e){const t=e.inputs.map(e=>`${e.argName}:${e.argType}`).join("|"),n=e.outputs.map(e=>{const t=e.constraints??{},n=[];void 0!==t.min&&void 0!==t.max&&n.push(`range=${t.min}-${t.max}`),void 0!==t.maxLen&&n.push(`maxLen=${t.maxLen}`);const r=n.length?`;${n.join(",")}`:"";return"array"===e.type?`${e.name}:array<${e.innerType??"string"}>${r}`:`${e.name}:${e.type}${r}`}).join("|"),r=JSON.stringify(e.promptTemplate);return{faiName:e.faiName,inputsKey:t,outputsKey:n,promptKey:r}}function w(e,t){return`fai ${e}(${[...t.inputs.map(e=>`${e.argName}: ${e.argType}`),"prompt: prompt"].join(", ")}) -> ${t.outputs.map(e=>{let t=e.type;"array"===e.type&&(t=`array<${e.innerType??"string"}>`);const n=e.constraints??{},r=[];"number"==typeof n.min&&"number"==typeof n.max&&r.push(`${n.min}-${n.max}`),"number"==typeof n.maxLen&&r.push(`maxLen=${n.maxLen}`);const o=r.length?` ${r.join(" ")}`:"";return`${e.name}: ${t}${o}`}).join(", ")} { }`}function N(e,t){const n=[...e.inputs.map(e=>"var"===e.source.kind?h(e.source):g(e.source)),function(e){let t="";for(const n of e)"text"===n.kind?t+=b(n.raw):t+="${"+n.path.join(".")+"}";return`"${t}"`}(e.promptTemplate)].join(", ");return[x(e.id),` let ${e.outputVar} = ${t}(${n})`].join("\n")}function j(e){return"ask_user"===e.type||"fai"===e.type?e.outputVar:"let"===e.type?e.varName:null}function C(e){const t=[];if("fai"===e.type){for(const n of e.inputs)"var"===n.source.kind&&t.push(n.source);for(const n of e.promptTemplate)"ref"===n.kind&&t.push({kind:"var",path:n.path})}else("let"===e.type||"return"===e.type)&&k(e.value,t);return t}function k(e,t){"var"!==e.kind?"triple"===e.kind&&("var"===e.left.kind&&t.push(e.left),"var"===e.right.kind&&t.push(e.right)):t.push(e)}function D(e){const t=[];if(function(e,t){const n=new Map;for(let r=0;r<e.body.length;r++){const o=e.body[r];for(const n of C(o))p(e,r,n.path)||t.push({nodeIndex:r,nodeId:o.id,message:`variable "${n.path.join(".")}" not visible at this position`});const a=j(o);if(a){f.test(a)||t.push({nodeIndex:r,nodeId:o.id,message:`"${a}" is not a valid identifier (use letters/digits/underscore, no leading digit)`});const e=n.get(a);e?t.push({nodeIndex:r,nodeId:o.id,message:`name "${a}" already declared at node #${e.index}`}):n.set(a,{index:r,id:o.id})}if("fai"===o.type){f.test(o.faiName)||t.push({nodeIndex:r,nodeId:o.id,message:`fai name "${o.faiName}" is not a valid identifier`});for(const e of o.inputs)f.test(e.argName)||t.push({nodeIndex:r,nodeId:o.id,message:`fai input argName "${e.argName}" is not a valid identifier`});for(const e of o.outputs)f.test(e.name)||t.push({nodeIndex:r,nodeId:o.id,message:`fai output name "${e.name}" is not a valid identifier`})}if("ask_user"===o.type)for(const e of o.fields)f.test(e.key)||t.push({nodeIndex:r,nodeId:o.id,message:`ask_user field key "${e.key}" is not a valid identifier`})}}(e,t),t.length>0)return{ok:!1,errors:t};const n=[];for(const i of e.body)"fai"===i.type&&n.push(i);const r=function(e){const t=[],n=new Map;for(const r of e){const e=y(r);let o=t.find(t=>{return n=t.shape,r=e,n.faiName===r.faiName&&n.inputsKey===r.inputsKey&&n.outputsKey===r.outputsKey&&n.promptKey===r.promptKey;var n,r});if(!o){let n=e.faiName,a=2;for(;t.some(e=>e.declName===n);)n=`${e.faiName}_${a++}`;o={declName:n,declSource:w(n,r),shape:e},t.push(o)}n.set(r.id,o.declName)}return{decls:t,nodeIdToDeclName:n}}(n),o=[];for(let i=0;i<e.body.length;i++){const n=e.body[i];o.push(E(n,i,t,r))}if(t.length>0)return{ok:!1,errors:t};const a=0===r.decls.length?"":r.decls.map(e=>e.declSource).join("\n\n")+"\n\n";return{ok:!0,source:[s,l,"",a,"func main() -> any {",o.join("\n"),"}","export main",""].join("\n")}}function E(e,t,n,r){if("ask_user"===e.type)return function(e){const t=e.fields.map(e=>{const t=[`key: "${e.key}"`,`label: "${e.label}"`,`type: "${e.type}"`];return"enum"===e.type&&e.variants&&t.push(`variants: [${e.variants.map(e=>`"${e}"`).join(", ")}]`),!1===e.required&&t.push("required: false"),` { ${t.join(", ")} }`});return[x(e.id),` let ${e.outputVar} = __ccweb_ask_user({`," fields: [",t.join(",\n")," ]"," })"].join("\n")}(e);if("let"===e.type)return function(e){return[x(e.id),` let ${e.varName} = ${v(e.value)}`].join("\n")}(e);if("return"===e.type)return function(e){return[x(e.id),` return ${v(e.value)}`].join("\n")}(e);if("fai"===e.type){const o=r.nodeIdToDeclName.get(e.id);return o?N(e,o):(n.push({nodeIndex:t,nodeId:e.id,message:"fai dedupe lost node"}),"")}return n.push({nodeIndex:t,nodeId:e.id,message:"unknown node type"}),` // <unknown ${e.id}>`}const R="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement;function S(e){const t=Object.prototype.toString.call(e);return"[object Window]"===t||"[object global]"===t}function M(e){return"nodeType"in e}function T(e){var t,n;return e?S(e)?e:M(e)&&null!=(t=null==(n=e.ownerDocument)?void 0:n.defaultView)?t:window:window}function $(e){const{Document:t}=T(e);return e instanceof t}function O(e){return!S(e)&&e instanceof T(e).HTMLElement}function A(e){return e instanceof T(e).SVGElement}function I(e){return e?S(e)?e.document:M(e)?$(e)?e:O(e)||A(e)?e.ownerDocument:document:document:document}const L=R?e.useLayoutEffect:e.useEffect;function P(t){const n=e.useRef(t);return L(()=>{n.current=t}),e.useCallback(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return null==n.current?void 0:n.current(...t)},[])}function _(t,n){void 0===n&&(n=[t]);const r=e.useRef(t);return L(()=>{r.current!==t&&(r.current=t)},n),r}function B(t,n){const r=e.useRef();return e.useMemo(()=>{const e=t(r.current);return r.current=e,e},[...n])}function z(t){const n=P(t),r=e.useRef(null),o=e.useCallback(e=>{e!==r.current&&(null==n||n(e,r.current)),r.current=e},[]);return[r,o]}function K(t){const n=e.useRef();return e.useEffect(()=>{n.current=t},[t]),n.current}let V={};function F(t,n){return e.useMemo(()=>{if(n)return n;const e=null==V[t]?0:V[t]+1;return V[t]=e,t+"-"+e},[t,n])}function X(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r.reduce((t,n)=>{const r=Object.entries(n);for(const[o,a]of r){const n=t[o];null!=n&&(t[o]=n+e*a)}return t},{...t})}}const Y=X(1),W=X(-1);function U(e){if(!e)return!1;const{KeyboardEvent:t}=T(e.target);return t&&e instanceof t}function q(e){if(function(e){if(!e)return!1;const{TouchEvent:t}=T(e.target);return t&&e instanceof t}(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return function(e){return"clientX"in e&&"clientY"in e}(e)?{x:e.clientX,y:e.clientY}:null}const J=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[J.Translate.toString(e),J.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),H="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Z(e){return e.matches(H)?e:e.querySelector(H)}const G={display:"none"};function Q(e){let{id:n,value:r}=e;return t.createElement("div",{id:n,style:G},r)}function ee(e){let{id:n,announcement:r,ariaLiveType:o="assertive"}=e;return t.createElement("div",{id:n,style:{position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"},role:"status","aria-live":o,"aria-atomic":!0},r)}const te=e.createContext(null);const ne={draggable:"\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n "},re={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function oe(r){let{announcements:o=re,container:a,hiddenTextDescribedById:i,screenReaderInstructions:s=ne}=r;const{announce:l,announcement:c}=function(){const[t,n]=e.useState("");return{announce:e.useCallback(e=>{null!=e&&n(e)},[]),announcement:t}}(),d=F("DndLiveRegion"),[u,p]=e.useState(!1);if(e.useEffect(()=>{p(!0)},[]),function(t){const n=e.useContext(te);e.useEffect(()=>{if(!n)throw new Error("useDndMonitor must be used within a children of <DndContext>");return n(t)},[t,n])}(e.useMemo(()=>({onDragStart(e){let{active:t}=e;l(o.onDragStart({active:t}))},onDragMove(e){let{active:t,over:n}=e;o.onDragMove&&l(o.onDragMove({active:t,over:n}))},onDragOver(e){let{active:t,over:n}=e;l(o.onDragOver({active:t,over:n}))},onDragEnd(e){let{active:t,over:n}=e;l(o.onDragEnd({active:t,over:n}))},onDragCancel(e){let{active:t,over:n}=e;l(o.onDragCancel({active:t,over:n}))}}),[l,o])),!u)return null;const f=t.createElement(t.Fragment,null,t.createElement(Q,{id:i,value:s.draggable}),t.createElement(ee,{id:d,announcement:c}));return a?n.createPortal(f,a):f}var ae,ie;function se(){}(ie=ae||(ae={})).DragStart="dragStart",ie.DragMove="dragMove",ie.DragEnd="dragEnd",ie.DragCancel="dragCancel",ie.DragOver="dragOver",ie.RegisterDroppable="registerDroppable",ie.SetDroppableDisabled="setDroppableDisabled",ie.UnregisterDroppable="unregisterDroppable";const le=Object.freeze({x:0,y:0});function ce(e,t){const n=q(e);if(!n)return"0 0";return(n.x-t.left)/t.width*100+"% "+(n.y-t.top)/t.height*100+"%"}function de(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function ue(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),o=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),i=o-r,s=a-n;if(r<o&&n<a){const n=t.width*t.height,r=e.width*e.height,o=i*s;return Number((o/(n+r-o)).toFixed(4))}return 0}const pe=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=[];for(const a of r){const{id:e}=a,r=n.get(e);if(r){const n=ue(r,t);n>0&&o.push({id:e,data:{droppableContainer:a,value:n}})}}return o.sort(de)};function fe(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:le}function he(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r.reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}const ge=he(1);function me(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}const ve={ignoreTransform:!1};function be(e,t){void 0===t&&(t=ve);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:t,transformOrigin:r}=T(e).getComputedStyle(e);t&&(n=function(e,t,n){const r=me(t);if(!r)return e;const{scaleX:o,scaleY:a,x:i,y:s}=r,l=e.left-i-(1-o)*parseFloat(n),c=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(" ")+1)),d=o?e.width/o:e.width,u=a?e.height/a:e.height;return{width:d,height:u,top:c,right:l+d,bottom:c+u,left:l}}(n,t,r))}const{top:r,left:o,width:a,height:i,bottom:s,right:l}=n;return{top:r,left:o,width:a,height:i,bottom:s,right:l}}function xe(e){return be(e,{ignoreTransform:!0})}function ye(e,t){const n=[];return e?function r(o){if(null!=t&&n.length>=t)return n;if(!o)return n;if($(o)&&null!=o.scrollingElement&&!n.includes(o.scrollingElement))return n.push(o.scrollingElement),n;if(!O(o)||A(o))return n;if(n.includes(o))return n;const a=T(e).getComputedStyle(o);return o!==e&&function(e,t){void 0===t&&(t=T(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(e=>{const r=t[e];return"string"==typeof r&&n.test(r)})}(o,a)&&n.push(o),function(e,t){return void 0===t&&(t=T(e).getComputedStyle(e)),"fixed"===t.position}(o,a)?n:r(o.parentNode)}(e):n}function we(e){const[t]=ye(e,1);return null!=t?t:null}function Ne(e){return R&&e?S(e)?e:M(e)?$(e)||e===I(e).scrollingElement?window:O(e)?e:null:null:null}function je(e){return S(e)?e.scrollX:e.scrollLeft}function Ce(e){return S(e)?e.scrollY:e.scrollTop}function ke(e){return{x:je(e),y:Ce(e)}}var De,Ee;function Re(e){return!(!R||!e)&&e===document.scrollingElement}function Se(e){const t={x:0,y:0},n=Re(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}(Ee=De||(De={}))[Ee.Forward=1]="Forward",Ee[Ee.Backward=-1]="Backward";const Me={x:.2,y:.2};function Te(e,t,n,r,o){let{top:a,left:i,right:s,bottom:l}=n;void 0===r&&(r=10),void 0===o&&(o=Me);const{isTop:c,isBottom:d,isLeft:u,isRight:p}=Se(e),f={x:0,y:0},h={x:0,y:0},g=t.height*o.y,m=t.width*o.x;return!c&&a<=t.top+g?(f.y=De.Backward,h.y=r*Math.abs((t.top+g-a)/g)):!d&&l>=t.bottom-g&&(f.y=De.Forward,h.y=r*Math.abs((t.bottom-g-l)/g)),!p&&s>=t.right-m?(f.x=De.Forward,h.x=r*Math.abs((t.right-m-s)/m)):!u&&i<=t.left+m&&(f.x=De.Backward,h.x=r*Math.abs((t.left+m-i)/m)),{direction:f,speed:h}}function $e(e){if(e===document.scrollingElement){const{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}const{top:t,left:n,right:r,bottom:o}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:o,width:e.clientWidth,height:e.clientHeight}}function Oe(e){return e.reduce((e,t)=>Y(e,ke(t)),le)}function Ae(e,t){if(void 0===t&&(t=be),!e)return;const{top:n,left:r,bottom:o,right:a}=t(e);we(e)&&(o<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const Ie=[["x",["left","right"],function(e){return e.reduce((e,t)=>e+je(t),0)}],["y",["top","bottom"],function(e){return e.reduce((e,t)=>e+Ce(t),0)}]];class Le{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const n=ye(t),r=Oe(n);this.rect={...e},this.width=e.width,this.height=e.height;for(const[o,a,i]of Ie)for(const e of a)Object.defineProperty(this,e,{get:()=>{const t=i(n),a=r[o]-t;return this.rect[e]+a},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class Pe{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>{var t;return null==(t=this.target)?void 0:t.removeEventListener(...e)})},this.target=e}add(e,t,n){var r;null==(r=this.target)||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}}function _e(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return"number"==typeof t?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t&&r>t.y}var Be,ze,Ke,Ve;function Fe(e){e.preventDefault()}function Xe(e){e.stopPropagation()}(ze=Be||(Be={})).Click="click",ze.DragStart="dragstart",ze.Keydown="keydown",ze.ContextMenu="contextmenu",ze.Resize="resize",ze.SelectionChange="selectionchange",ze.VisibilityChange="visibilitychange",(Ve=Ke||(Ke={})).Space="Space",Ve.Down="ArrowDown",Ve.Right="ArrowRight",Ve.Left="ArrowLeft",Ve.Up="ArrowUp",Ve.Esc="Escape",Ve.Enter="Enter",Ve.Tab="Tab";const Ye={start:[Ke.Space,Ke.Enter],cancel:[Ke.Esc],end:[Ke.Space,Ke.Enter,Ke.Tab]},We=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case Ke.Right:return{...n,x:n.x+25};case Ke.Left:return{...n,x:n.x-25};case Ke.Down:return{...n,y:n.y+25};case Ke.Up:return{...n,y:n.y-25}}};class Ue{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:t}}=e;this.props=e,this.listeners=new Pe(I(t)),this.windowListeners=new Pe(T(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Be.Resize,this.handleCancel),this.windowListeners.add(Be.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Be.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&Ae(n),t(le)}handleKeyDown(e){if(U(e)){const{active:t,context:n,options:r}=this.props,{keyboardCodes:o=Ye,coordinateGetter:a=We,scrollBehavior:i="smooth"}=r,{code:s}=e;if(o.end.includes(s))return void this.handleEnd(e);if(o.cancel.includes(s))return void this.handleCancel(e);const{collisionRect:l}=n.current,c=l?{x:l.left,y:l.top}:le;this.referenceCoordinates||(this.referenceCoordinates=c);const d=a(e,{active:t,context:n.current,currentCoordinates:c});if(d){const t=W(d,c),r={x:0,y:0},{scrollableAncestors:o}=n.current;for(const n of o){const o=e.code,{isTop:a,isRight:s,isLeft:l,isBottom:c,maxScroll:u,minScroll:p}=Se(n),f=$e(n),h={x:Math.min(o===Ke.Right?f.right-f.width/2:f.right,Math.max(o===Ke.Right?f.left:f.left+f.width/2,d.x)),y:Math.min(o===Ke.Down?f.bottom-f.height/2:f.bottom,Math.max(o===Ke.Down?f.top:f.top+f.height/2,d.y))},g=o===Ke.Right&&!s||o===Ke.Left&&!l,m=o===Ke.Down&&!c||o===Ke.Up&&!a;if(g&&h.x!==d.x){const e=n.scrollLeft+t.x,a=o===Ke.Right&&e<=u.x||o===Ke.Left&&e>=p.x;if(a&&!t.y)return void n.scrollTo({left:e,behavior:i});r.x=a?n.scrollLeft-e:o===Ke.Right?n.scrollLeft-u.x:n.scrollLeft-p.x,r.x&&n.scrollBy({left:-r.x,behavior:i});break}if(m&&h.y!==d.y){const e=n.scrollTop+t.y,a=o===Ke.Down&&e<=u.y||o===Ke.Up&&e>=p.y;if(a&&!t.x)return void n.scrollTo({top:e,behavior:i});r.y=a?n.scrollTop-e:o===Ke.Down?n.scrollTop-u.y:n.scrollTop-p.y,r.y&&n.scrollBy({top:-r.y,behavior:i});break}}this.handleMove(e,Y(W(d,this.referenceCoordinates),r))}}}handleMove(e,t){const{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){const{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){const{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}function qe(e){return Boolean(e&&"distance"in e)}function Je(e){return Boolean(e&&"delay"in e)}Ue.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=Ye,onActivation:o}=t,{active:a}=n;const{code:i}=e.nativeEvent;if(r.start.includes(i)){const t=a.activatorNode.current;return(!t||e.target===t)&&(e.preventDefault(),null==o||o({event:e.nativeEvent}),!0)}return!1}}];class He{constructor(e,t,n){var r;void 0===n&&(n=function(e){const{EventTarget:t}=T(e);return e instanceof t?e:I(e)}(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;const{event:o}=e,{target:a}=o;this.props=e,this.events=t,this.document=I(a),this.documentListeners=new Pe(this.document),this.listeners=new Pe(n),this.windowListeners=new Pe(T(a)),this.initialCoordinates=null!=(r=q(o))?r:le,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(Be.Resize,this.handleCancel),this.windowListeners.add(Be.DragStart,Fe),this.windowListeners.add(Be.VisibilityChange,this.handleCancel),this.windowListeners.add(Be.ContextMenu,Fe),this.documentListeners.add(Be.Keydown,this.handleKeydown),t){if(null!=n&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Je(t))return this.timeoutId=setTimeout(this.handleStart,t.delay),void this.handlePending(t);if(qe(t))return void this.handlePending(t)}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),null!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){const{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){const{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(Be.Click,Xe,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Be.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){var t;const{activated:n,initialCoordinates:r,props:o}=this,{onMove:a,options:{activationConstraint:i}}=o;if(!r)return;const s=null!=(t=q(e))?t:le,l=W(r,s);if(!n&&i){if(qe(i)){if(null!=i.tolerance&&_e(l,i.tolerance))return this.handleCancel();if(_e(l,i.distance))return this.handleStart()}return Je(i)&&_e(l,i.tolerance)?this.handleCancel():void this.handlePending(i,l)}e.cancelable&&e.preventDefault(),a(s)}handleEnd(){const{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){const{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===Ke.Esc&&this.handleCancel()}removeTextSelection(){var e;null==(e=this.document.getSelection())||e.removeAllRanges()}}const Ze={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class Ge extends He{constructor(e){const{event:t}=e,n=I(t.target);super(e,Ze,n)}}Ge.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!(!n.isPrimary||0!==n.button)&&(null==r||r({event:n}),!0)}}];const Qe={move:{name:"mousemove"},end:{name:"mouseup"}};var et,tt;(tt=et||(et={}))[tt.RightClick=2]="RightClick";(class extends He{constructor(e){super(e,Qe,I(e.event.target))}}).activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button!==et.RightClick&&(null==r||r({event:n}),!0)}}];const nt={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};var rt,ot,at,it;function st(t){let{acceleration:n,activator:r=rt.Pointer,canScroll:o,draggingRect:a,enabled:i,interval:s=5,order:l=at.TreeOrder,pointerCoordinates:c,scrollableAncestors:d,scrollableAncestorRects:u,delta:p,threshold:f}=t;const h=function(e){let{delta:t,disabled:n}=e;const r=K(t);return B(e=>{if(n||!r||!e)return lt;const o={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[De.Backward]:e.x[De.Backward]||-1===o.x,[De.Forward]:e.x[De.Forward]||1===o.x},y:{[De.Backward]:e.y[De.Backward]||-1===o.y,[De.Forward]:e.y[De.Forward]||1===o.y}}},[n,t,r])}({delta:p,disabled:!i}),[g,m]=function(){const t=e.useRef(null);return[e.useCallback((e,n)=>{t.current=setInterval(e,n)},[]),e.useCallback(()=>{null!==t.current&&(clearInterval(t.current),t.current=null)},[])]}(),v=e.useRef({x:0,y:0}),b=e.useRef({x:0,y:0}),x=e.useMemo(()=>{switch(r){case rt.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case rt.DraggableRect:return a}},[r,a,c]),y=e.useRef(null),w=e.useCallback(()=>{const e=y.current;if(!e)return;const t=v.current.x*b.current.x,n=v.current.y*b.current.y;e.scrollBy(t,n)},[]),N=e.useMemo(()=>l===at.TreeOrder?[...d].reverse():d,[l,d]);e.useEffect(()=>{if(i&&d.length&&x){for(const e of N){if(!1===(null==o?void 0:o(e)))continue;const t=d.indexOf(e),r=u[t];if(!r)continue;const{direction:a,speed:i}=Te(e,r,x,n,f);for(const e of["x","y"])h[e][a[e]]||(i[e]=0,a[e]=0);if(i.x>0||i.y>0)return m(),y.current=e,g(w,s),v.current=i,void(b.current=a)}v.current={x:0,y:0},b.current={x:0,y:0},m()}else m()},[n,w,o,m,i,s,JSON.stringify(x),JSON.stringify(h),g,d,N,u,JSON.stringify(f)])}(class extends He{constructor(e){super(e,nt)}static setup(){return window.addEventListener(nt.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(nt.move.name,e)};function e(){}}}).activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:o}=n;return!(o.length>1)&&(null==r||r({event:n}),!0)}}],(ot=rt||(rt={}))[ot.Pointer=0]="Pointer",ot[ot.DraggableRect=1]="DraggableRect",(it=at||(at={}))[it.TreeOrder=0]="TreeOrder",it[it.ReversedTreeOrder=1]="ReversedTreeOrder";const lt={x:{[De.Backward]:!1,[De.Forward]:!1},y:{[De.Backward]:!1,[De.Forward]:!1}};var ct,dt,ut;(dt=ct||(ct={}))[dt.Always=0]="Always",dt[dt.BeforeDragging=1]="BeforeDragging",dt[dt.WhileDragging=2]="WhileDragging",(ut||(ut={})).Optimized="optimized";const pt=new Map;function ft(e,t){return B(n=>e?n||("function"==typeof t?t(e):e):null,[t,e])}function ht(t){let{callback:n,disabled:r}=t;const o=P(n),a=e.useMemo(()=>{if(r||"undefined"==typeof window||void 0===window.ResizeObserver)return;const{ResizeObserver:e}=window;return new e(o)},[r]);return e.useEffect(()=>()=>null==a?void 0:a.disconnect(),[a]),a}function gt(e){return new Le(be(e),e)}function mt(t,n,r){void 0===n&&(n=gt);const[o,a]=e.useState(null);function i(){a(e=>{if(!t)return null;var o;if(!1===t.isConnected)return null!=(o=null!=e?e:r)?o:null;const a=n(t);return JSON.stringify(e)===JSON.stringify(a)?e:a})}const s=function(t){let{callback:n,disabled:r}=t;const o=P(n),a=e.useMemo(()=>{if(r||"undefined"==typeof window||void 0===window.MutationObserver)return;const{MutationObserver:e}=window;return new e(o)},[o,r]);return e.useEffect(()=>()=>null==a?void 0:a.disconnect(),[a]),a}({callback(e){if(t)for(const n of e){const{type:e,target:r}=n;if("childList"===e&&r instanceof HTMLElement&&r.contains(t)){i();break}}}}),l=ht({callback:i});return L(()=>{i(),t?(null==l||l.observe(t),null==s||s.observe(document.body,{childList:!0,subtree:!0})):(null==l||l.disconnect(),null==s||s.disconnect())},[t]),o}const vt=[];function bt(t,n){void 0===n&&(n=[]);const r=e.useRef(null);return e.useEffect(()=>{r.current=null},n),e.useEffect(()=>{const e=t!==le;e&&!r.current&&(r.current=t),!e&&r.current&&(r.current=null)},[t]),r.current?W(t,r.current):le}function xt(t){return e.useMemo(()=>t?function(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}(t):null,[t])}const yt=[];function wt(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return O(t)?t:e}const Nt=[{sensor:Ge,options:{}},{sensor:Ue,options:{}}],jt={current:{}},Ct={draggable:{measure:xe},droppable:{measure:xe,strategy:ct.WhileDragging,frequency:ut.Optimized},dragOverlay:{measure:be}};class kt extends Map{get(e){var t;return null!=e&&null!=(t=super.get(e))?t:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){var t,n;return null!=(t=null==(n=this.get(e))?void 0:n.node.current)?t:void 0}}const Dt={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new kt,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:se},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Ct,measureDroppableContainers:se,windowRect:null,measuringScheduled:!1},Et={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:se,draggableNodes:new Map,over:null,measureDroppableContainers:se},Rt=e.createContext(Et),St=e.createContext(Dt);function Mt(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new kt}}}function Tt(e,t){switch(t.type){case ae.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case ae.DragMove:return null==e.draggable.active?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case ae.DragEnd:case ae.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case ae.RegisterDroppable:{const{element:n}=t,{id:r}=n,o=new kt(e.droppable.containers);return o.set(r,n),{...e,droppable:{...e.droppable,containers:o}}}case ae.SetDroppableDisabled:{const{id:n,key:r,disabled:o}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;const i=new kt(e.droppable.containers);return i.set(n,{...a,disabled:o}),{...e,droppable:{...e.droppable,containers:i}}}case ae.UnregisterDroppable:{const{id:n,key:r}=t,o=e.droppable.containers.get(n);if(!o||r!==o.key)return e;const a=new kt(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function $t(t){let{disabled:n}=t;const{active:r,activatorEvent:o,draggableNodes:a}=e.useContext(Rt),i=K(o),s=K(null==r?void 0:r.id);return e.useEffect(()=>{if(!n&&!o&&i&&null!=s){if(!U(i))return;if(document.activeElement===i.target)return;const e=a.get(s);if(!e)return;const{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(const e of[t.current,n.current]){if(!e)continue;const t=Z(e);if(t){t.focus();break}}})}},[o,n,a,s,i]),null}function Ot(e,t){let{transform:n,...r}=t;return null!=e&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}const At=e.createContext({...le,scaleX:1,scaleY:1});var It,Lt;(Lt=It||(It={}))[Lt.Uninitialized=0]="Uninitialized",Lt[Lt.Initializing=1]="Initializing",Lt[Lt.Initialized=2]="Initialized";const Pt=e.memo(function(r){var o,a,i,s;let{id:l,accessibility:c,autoScroll:d=!0,children:u,sensors:p=Nt,collisionDetection:f=pe,measuring:h,modifiers:g,...m}=r;const v=e.useReducer(Tt,void 0,Mt),[b,x]=v,[y,w]=function(){const[t]=e.useState(()=>new Set),n=e.useCallback(e=>(t.add(e),()=>t.delete(e)),[t]);return[e.useCallback(e=>{let{type:n,event:r}=e;t.forEach(e=>{var t;return null==(t=e[n])?void 0:t.call(e,r)})},[t]),n]}(),[N,j]=e.useState(It.Uninitialized),C=N===It.Initialized,{draggable:{active:k,nodes:D,translate:E},droppable:{containers:S}}=b,M=null!=k?D.get(k):null,$=e.useRef({initial:null,translated:null}),A=e.useMemo(()=>{var e;return null!=k?{id:k,data:null!=(e=null==M?void 0:M.data)?e:jt,rect:$}:null},[k,M]),I=e.useRef(null),[P,K]=e.useState(null),[V,X]=e.useState(null),W=_(m,Object.values(m)),U=F("DndDescribedBy",l),J=e.useMemo(()=>S.getEnabled(),[S]),H=(Z=h,e.useMemo(()=>({draggable:{...Ct.draggable,...null==Z?void 0:Z.draggable},droppable:{...Ct.droppable,...null==Z?void 0:Z.droppable},dragOverlay:{...Ct.dragOverlay,...null==Z?void 0:Z.dragOverlay}}),[null==Z?void 0:Z.draggable,null==Z?void 0:Z.droppable,null==Z?void 0:Z.dragOverlay]));var Z;const{droppableRects:G,measureDroppableContainers:Q,measuringScheduled:ee}=function(t,n){let{dragging:r,dependencies:o,config:a}=n;const[i,s]=e.useState(null),{frequency:l,measure:c,strategy:d}=a,u=e.useRef(t),p=function(){switch(d){case ct.Always:return!1;case ct.BeforeDragging:return r;default:return!r}}(),f=_(p),h=e.useCallback(function(e){void 0===e&&(e=[]),f.current||s(t=>null===t?e:t.concat(e.filter(e=>!t.includes(e))))},[f]),g=e.useRef(null),m=B(e=>{if(p&&!r)return pt;if(!e||e===pt||u.current!==t||null!=i){const e=new Map;for(let n of t){if(!n)continue;if(i&&i.length>0&&!i.includes(n.id)&&n.rect.current){e.set(n.id,n.rect.current);continue}const t=n.node.current,r=t?new Le(c(t),t):null;n.rect.current=r,r&&e.set(n.id,r)}return e}return e},[t,i,r,p,c]);return e.useEffect(()=>{u.current=t},[t]),e.useEffect(()=>{p||h()},[r,p]),e.useEffect(()=>{i&&i.length>0&&s(null)},[JSON.stringify(i)]),e.useEffect(()=>{p||"number"!=typeof l||null!==g.current||(g.current=setTimeout(()=>{h(),g.current=null},l))},[l,p,h,...o]),{droppableRects:m,measureDroppableContainers:h,measuringScheduled:null!=i}}(J,{dragging:C,dependencies:[E.x,E.y],config:H.droppable}),ne=function(e,t){const n=null!=t?e.get(t):void 0,r=n?n.node.current:null;return B(e=>{var n;return null==t?null:null!=(n=null!=r?r:e)?n:null},[r,t])}(D,k),re=e.useMemo(()=>V?q(V):null,[V]),ie=function(){const e=!1===(null==P?void 0:P.autoScrollEnabled),t="object"==typeof d?!1===d.enabled:!1===d,n=C&&!e&&!t;if("object"==typeof d)return{...d,enabled:n};return{enabled:n}}(),se=function(e,t){return ft(e,t)}(ne,H.draggable.measure);!function(t){let{activeNode:n,measure:r,initialRect:o,config:a=!0}=t;const i=e.useRef(!1),{x:s,y:l}="boolean"==typeof a?{x:a,y:a}:a;L(()=>{if(!s&&!l||!n)return void(i.current=!1);if(i.current||!o)return;const e=null==n?void 0:n.node.current;if(!e||!1===e.isConnected)return;const t=fe(r(e),o);if(s||(t.x=0),l||(t.y=0),i.current=!0,Math.abs(t.x)>0||Math.abs(t.y)>0){const n=we(e);n&&n.scrollBy({top:t.y,left:t.x})}},[n,s,l,o,r])}({activeNode:null!=k?D.get(k):null,config:ie.layoutShiftCompensation,initialRect:se,measure:H.draggable.measure});const ce=mt(ne,H.draggable.measure,se),de=mt(ne?ne.parentElement:null),ue=e.useRef({activatorEvent:null,active:null,activeNode:ne,collisionRect:null,collisions:null,droppableRects:G,draggableNodes:D,draggingNode:null,draggingNodeRect:null,droppableContainers:S,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),he=S.getNodeFor(null==(o=ue.current.over)?void 0:o.id),me=function(t){let{measure:n}=t;const[r,o]=e.useState(null),a=ht({callback:e.useCallback(e=>{for(const{target:t}of e)if(O(t)){o(e=>{const r=n(t);return e?{...e,width:r.width,height:r.height}:r});break}},[n])}),i=e.useCallback(e=>{const t=wt(e);null==a||a.disconnect(),t&&(null==a||a.observe(t)),o(t?n(t):null)},[n,a]),[s,l]=z(i);return e.useMemo(()=>({nodeRef:s,rect:r,setRef:l}),[r,s,l])}({measure:H.dragOverlay.measure}),ve=null!=(a=me.nodeRef.current)?a:ne,xe=C?null!=(i=me.rect)?i:ce:null,je=Boolean(me.nodeRef.current&&me.rect),Ce=fe(De=je?null:ce,ft(De));var De;const Ee=xt(ve?T(ve):null),Se=function(t){const n=e.useRef(t),r=B(e=>t?e&&e!==vt&&t&&n.current&&t.parentNode===n.current.parentNode?e:ye(t):vt,[t]);return e.useEffect(()=>{n.current=t},[t]),r}(C?null!=he?he:ne:null),Me=function(t,n){void 0===n&&(n=be);const[r]=t,o=xt(r?T(r):null),[a,i]=e.useState(yt);function s(){i(()=>t.length?t.map(e=>Re(e)?o:new Le(n(e),e)):yt)}const l=ht({callback:s});return L(()=>{null==l||l.disconnect(),s(),t.forEach(e=>null==l?void 0:l.observe(e))},[t]),a}(Se),Te=Ot(g,{transform:{x:E.x-Ce.x,y:E.y-Ce.y,scaleX:1,scaleY:1},activatorEvent:V,active:A,activeNodeRect:ce,containerNodeRect:de,draggingNodeRect:xe,over:ue.current.over,overlayNodeRect:me.rect,scrollableAncestors:Se,scrollableAncestorRects:Me,windowRect:Ee}),$e=re?Y(re,E):null,Ae=function(t){const[n,r]=e.useState(null),o=e.useRef(t),a=e.useCallback(e=>{const t=Ne(e.target);t&&r(e=>e?(e.set(t,ke(t)),new Map(e)):null)},[]);return e.useEffect(()=>{const e=o.current;if(t!==e){n(e);const i=t.map(e=>{const t=Ne(e);return t?(t.addEventListener("scroll",a,{passive:!0}),[t,ke(t)]):null}).filter(e=>null!=e);r(i.length?new Map(i):null),o.current=t}return()=>{n(t),n(e)};function n(e){e.forEach(e=>{const t=Ne(e);null==t||t.removeEventListener("scroll",a)})}},[a,t]),e.useMemo(()=>t.length?n?Array.from(n.values()).reduce((e,t)=>Y(e,t),le):Oe(t):le,[t,n])}(Se),Ie=bt(Ae),Pe=bt(Ae,[ce]),_e=Y(Te,Ie),Be=xe?ge(xe,Te):null,ze=A&&Be?f({active:A,collisionRect:Be,droppableRects:G,droppableContainers:J,pointerCoordinates:$e}):null,Ke=function(e,t){if(!e||0===e.length)return null;const[n]=e;return n[t]}(ze,"id"),[Ve,Fe]=e.useState(null),Xe=function(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}(je?Te:Y(Te,Pe),null!=(s=null==Ve?void 0:Ve.rect)?s:null,ce),Ye=e.useRef(null),We=e.useCallback((e,t)=>{let{sensor:r,options:o}=t;if(null==I.current)return;const a=D.get(I.current);if(!a)return;const i=e.nativeEvent,s=new r({active:I.current,activeNode:a,event:i,options:o,context:ue,onAbort(e){if(!D.get(e))return;const{onDragAbort:t}=W.current,n={id:e};null==t||t(n),y({type:"onDragAbort",event:n})},onPending(e,t,n,r){if(!D.get(e))return;const{onDragPending:o}=W.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};null==o||o(a),y({type:"onDragPending",event:a})},onStart(e){const t=I.current;if(null==t)return;const r=D.get(t);if(!r)return;const{onDragStart:o}=W.current,a={activatorEvent:i,active:{id:t,data:r.data,rect:$}};n.unstable_batchedUpdates(()=>{null==o||o(a),j(It.Initializing),x({type:ae.DragStart,initialCoordinates:e,active:t}),y({type:"onDragStart",event:a}),K(Ye.current),X(i)})},onMove(e){x({type:ae.DragMove,coordinates:e})},onEnd:l(ae.DragEnd),onCancel:l(ae.DragCancel)});function l(e){return async function(){const{active:t,collisions:r,over:o,scrollAdjustedTranslate:a}=ue.current;let s=null;if(t&&a){const{cancelDrop:n}=W.current;if(s={activatorEvent:i,active:t,collisions:r,delta:a,over:o},e===ae.DragEnd&&"function"==typeof n){await Promise.resolve(n(s))&&(e=ae.DragCancel)}}I.current=null,n.unstable_batchedUpdates(()=>{x({type:e}),j(It.Uninitialized),Fe(null),K(null),X(null),Ye.current=null;const t=e===ae.DragEnd?"onDragEnd":"onDragCancel";if(s){const e=W.current[t];null==e||e(s),y({type:t,event:s})}})}}Ye.current=s},[D]),Ue=function(t,n){return e.useMemo(()=>t.reduce((e,t)=>{const{sensor:r}=t;return[...e,...r.activators.map(e=>({eventName:e.eventName,handler:n(e.handler,t)}))]},[]),[t,n])}(p,e.useCallback((e,t)=>(n,r)=>{const o=n.nativeEvent,a=D.get(r);if(null!==I.current||!a||o.dndKit||o.defaultPrevented)return;const i={active:a};!0===e(n,t.options,i)&&(o.dndKit={capturedBy:t.sensor},I.current=r,We(n,t))},[D,We]));!function(t){e.useEffect(()=>{if(!R)return;const e=t.map(e=>{let{sensor:t}=e;return null==t.setup?void 0:t.setup()});return()=>{for(const t of e)null==t||t()}},t.map(e=>{let{sensor:t}=e;return t}))}(p),L(()=>{ce&&N===It.Initializing&&j(It.Initialized)},[ce,N]),e.useEffect(()=>{const{onDragMove:e}=W.current,{active:t,activatorEvent:r,collisions:o,over:a}=ue.current;if(!t||!r)return;const i={active:t,activatorEvent:r,collisions:o,delta:{x:_e.x,y:_e.y},over:a};n.unstable_batchedUpdates(()=>{null==e||e(i),y({type:"onDragMove",event:i})})},[_e.x,_e.y]),e.useEffect(()=>{const{active:e,activatorEvent:t,collisions:r,droppableContainers:o,scrollAdjustedTranslate:a}=ue.current;if(!e||null==I.current||!t||!a)return;const{onDragOver:i}=W.current,s=o.get(Ke),l=s&&s.rect.current?{id:s.id,rect:s.rect.current,data:s.data,disabled:s.disabled}:null,c={active:e,activatorEvent:t,collisions:r,delta:{x:a.x,y:a.y},over:l};n.unstable_batchedUpdates(()=>{Fe(l),null==i||i(c),y({type:"onDragOver",event:c})})},[Ke]),L(()=>{ue.current={activatorEvent:V,active:A,activeNode:ne,collisionRect:Be,collisions:ze,droppableRects:G,draggableNodes:D,draggingNode:ve,draggingNodeRect:xe,droppableContainers:S,over:Ve,scrollableAncestors:Se,scrollAdjustedTranslate:_e},$.current={initial:xe,translated:Be}},[A,ne,ze,Be,D,ve,xe,G,S,Ve,Se,_e]),st({...ie,delta:E,draggingRect:Be,pointerCoordinates:$e,scrollableAncestors:Se,scrollableAncestorRects:Me});const qe=e.useMemo(()=>({active:A,activeNode:ne,activeNodeRect:ce,activatorEvent:V,collisions:ze,containerNodeRect:de,dragOverlay:me,draggableNodes:D,droppableContainers:S,droppableRects:G,over:Ve,measureDroppableContainers:Q,scrollableAncestors:Se,scrollableAncestorRects:Me,measuringConfiguration:H,measuringScheduled:ee,windowRect:Ee}),[A,ne,ce,V,ze,de,me,D,S,G,Ve,Q,Se,Me,H,ee,Ee]),Je=e.useMemo(()=>({activatorEvent:V,activators:Ue,active:A,activeNodeRect:ce,ariaDescribedById:{draggable:U},dispatch:x,draggableNodes:D,over:Ve,measureDroppableContainers:Q}),[V,Ue,A,ce,x,U,D,Ve,Q]);return t.createElement(te.Provider,{value:w},t.createElement(Rt.Provider,{value:Je},t.createElement(St.Provider,{value:qe},t.createElement(At.Provider,{value:Xe},u)),t.createElement($t,{disabled:!1===(null==c?void 0:c.restoreFocus)})),t.createElement(oe,{...c,hiddenTextDescribedById:U}))}),_t=e.createContext(null),Bt="button";function zt(t){let{id:n,data:r,disabled:o=!1,attributes:a}=t;const i=F("Draggable"),{activators:s,activatorEvent:l,active:c,activeNodeRect:d,ariaDescribedById:u,draggableNodes:p,over:f}=e.useContext(Rt),{role:h=Bt,roleDescription:g="draggable",tabIndex:m=0}=null!=a?a:{},v=(null==c?void 0:c.id)===n,b=e.useContext(v?At:_t),[x,y]=z(),[w,N]=z(),j=function(t,n){return e.useMemo(()=>t.reduce((e,t)=>{let{eventName:r,handler:o}=t;return e[r]=e=>{o(e,n)},e},{}),[t,n])}(s,n),C=_(r);L(()=>(p.set(n,{id:n,key:i,node:x,activatorNode:w,data:C}),()=>{const e=p.get(n);e&&e.key===i&&p.delete(n)}),[p,n]);return{active:c,activatorEvent:l,activeNodeRect:d,attributes:e.useMemo(()=>({role:h,tabIndex:m,"aria-disabled":o,"aria-pressed":!(!v||h!==Bt)||void 0,"aria-roledescription":g,"aria-describedby":u.draggable}),[o,h,m,v,g,u.draggable]),isDragging:v,listeners:o?void 0:j,node:x,over:f,setNodeRef:y,setActivatorNodeRef:N,transform:b}}const Kt={timeout:25};function Vt(t){let{data:n,disabled:r=!1,id:o,resizeObserverConfig:a}=t;const i=F("Droppable"),{active:s,dispatch:l,over:c,measureDroppableContainers:d}=e.useContext(Rt),u=e.useRef({disabled:r}),p=e.useRef(!1),f=e.useRef(null),h=e.useRef(null),{disabled:g,updateMeasurementsFor:m,timeout:v}={...Kt,...a},b=_(null!=m?m:o),x=ht({callback:e.useCallback(()=>{p.current?(null!=h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{d(Array.isArray(b.current)?b.current:[b.current]),h.current=null},v)):p.current=!0},[v]),disabled:g||!s}),y=e.useCallback((e,t)=>{x&&(t&&(x.unobserve(t),p.current=!1),e&&x.observe(e))},[x]),[w,N]=z(y),j=_(n);return e.useEffect(()=>{x&&w.current&&(x.disconnect(),p.current=!1,x.observe(w.current))},[w,x]),e.useEffect(()=>(l({type:ae.RegisterDroppable,element:{id:o,key:i,disabled:r,node:w,rect:f,data:j}}),()=>l({type:ae.UnregisterDroppable,key:i,id:o})),[o]),e.useEffect(()=>{r!==u.current.disabled&&(l({type:ae.SetDroppableDisabled,id:o,key:i,disabled:r}),u.current.disabled=r)},[o,i,r,l]),{active:s,rect:f,isOver:(null==c?void 0:c.id)===o,node:w,over:c,setNodeRef:N}}function Ft(n){let{animation:r,children:o}=n;const[a,i]=e.useState(null),[s,l]=e.useState(null),c=K(o);return o||a||!c||i(c),L(()=>{if(!s)return;const e=null==a?void 0:a.key,t=null==a?void 0:a.props.id;null!=e&&null!=t?Promise.resolve(r(t,s)).then(()=>{i(null)}):i(null)},[r,a,s]),t.createElement(t.Fragment,null,o,a?e.cloneElement(a,{ref:l}):null)}const Xt={x:0,y:0,scaleX:1,scaleY:1};function Yt(e){let{children:n}=e;return t.createElement(Rt.Provider,{value:Et},t.createElement(At.Provider,{value:Xt},n))}const Wt={position:"fixed",touchAction:"none"},Ut=e=>U(e)?"transform 250ms ease":void 0,qt=e.forwardRef((e,n)=>{let{as:r,activatorEvent:o,adjustScale:a,children:i,className:s,rect:l,style:c,transform:d,transition:u=Ut}=e;if(!l)return null;const p=a?d:{...d,scaleX:1,scaleY:1},f={...Wt,width:l.width,height:l.height,top:l.top,left:l.left,transform:J.Transform.toString(p),transformOrigin:a&&o?ce(o,l):void 0,transition:"function"==typeof u?u(o):u,...c};return t.createElement(r,{className:s,style:f,ref:n},i)}),Jt={duration:250,easing:"ease",keyframes:e=>{let{transform:{initial:t,final:n}}=e;return[{transform:J.Transform.toString(t)},{transform:J.Transform.toString(n)}]},sideEffects:(e=>t=>{let{active:n,dragOverlay:r}=t;const o={},{styles:a,className:i}=e;if(null!=a&&a.active)for(const[e,s]of Object.entries(a.active))void 0!==s&&(o[e]=n.node.style.getPropertyValue(e),n.node.style.setProperty(e,s));if(null!=a&&a.dragOverlay)for(const[e,s]of Object.entries(a.dragOverlay))void 0!==s&&r.node.style.setProperty(e,s);return null!=i&&i.active&&n.node.classList.add(i.active),null!=i&&i.dragOverlay&&r.node.classList.add(i.dragOverlay),function(){for(const[e,t]of Object.entries(o))n.node.style.setProperty(e,t);null!=i&&i.active&&n.node.classList.remove(i.active)}})({styles:{active:{opacity:"0"}}})};function Ht(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:o}=e;return P((e,a)=>{if(null===t)return;const i=n.get(e);if(!i)return;const s=i.node.current;if(!s)return;const l=wt(a);if(!l)return;const{transform:c}=T(a).getComputedStyle(a),d=me(c);if(!d)return;const u="function"==typeof t?t:function(e){const{duration:t,easing:n,sideEffects:r,keyframes:o}={...Jt,...e};return e=>{let{active:a,dragOverlay:i,transform:s,...l}=e;if(!t)return;const c={x:i.rect.left-a.rect.left,y:i.rect.top-a.rect.top},d={scaleX:1!==s.scaleX?a.rect.width*s.scaleX/i.rect.width:1,scaleY:1!==s.scaleY?a.rect.height*s.scaleY/i.rect.height:1},u={x:s.x-c.x,y:s.y-c.y,...d},p=o({...l,active:a,dragOverlay:i,transform:{initial:s,final:u}}),[f]=p,h=p[p.length-1];if(JSON.stringify(f)===JSON.stringify(h))return;const g=null==r?void 0:r({active:a,dragOverlay:i,...l}),m=i.node.animate(p,{duration:t,easing:n,fill:"forwards"});return new Promise(e=>{m.onfinish=()=>{null==g||g(),e()}})}}(t);return Ae(s,o.draggable.measure),u({active:{id:e,data:i.data,node:s,rect:o.draggable.measure(s)},draggableNodes:n,dragOverlay:{node:a,rect:o.dragOverlay.measure(l)},droppableContainers:r,measuringConfiguration:o,transform:d})})}let Zt=0;const Gt=t.memo(n=>{let{adjustScale:r=!1,children:o,dropAnimation:a,style:i,transition:s,modifiers:l,wrapperElement:c="div",className:d,zIndex:u=999}=n;const{activatorEvent:p,active:f,activeNodeRect:h,containerNodeRect:g,draggableNodes:m,droppableContainers:v,dragOverlay:b,over:x,measuringConfiguration:y,scrollableAncestors:w,scrollableAncestorRects:N,windowRect:j}=e.useContext(St),C=e.useContext(At),k=(D=null==f?void 0:f.id,e.useMemo(()=>{if(null!=D)return Zt++,Zt},[D]));var D;const E=Ot(l,{activatorEvent:p,active:f,activeNodeRect:h,containerNodeRect:g,draggingNodeRect:b.rect,over:x,overlayNodeRect:b.rect,scrollableAncestors:w,scrollableAncestorRects:N,transform:C,windowRect:j}),R=ft(h),S=Ht({config:a,draggableNodes:m,droppableContainers:v,measuringConfiguration:y}),M=R?b.setRef:void 0;return t.createElement(Yt,null,t.createElement(Ft,{animation:S},f&&k?t.createElement(qt,{key:k,id:f.id,ref:M,as:c,activatorEvent:p,adjustScale:r,className:d,transition:s,rect:R,style:{zIndex:u,...i},transform:E},o):null))}),Qt={ask_user:{icon:"💬",label:"问用户",color:"bg-pink-50 border-pink-300"},fai:{icon:"🤖",label:"AI 调用",color:"bg-orange-50 border-orange-300"},let:{icon:"📦",label:"命名变量",color:"bg-gray-50 border-gray-300"},return:{icon:"⬅️",label:"返回",color:"bg-purple-50 border-purple-300"}};function en(e){return"var"===e.kind?"@"+e.path.join("."):"lit"===e.kind?e.raw:"(triple)"}function tn({node:e,index:t,selected:n,onSelect:o,onDuplicate:a,onRemove:i}){const s=Qt[e.type],{attributes:l,listeners:c,setNodeRef:d,isDragging:u}=zt({id:`node:${e.id}`,data:{kind:"reorder",sourceIndex:t,nodeId:e.id}}),{setNodeRef:p,isOver:f}=Vt({id:`drop-before:${e.id}`,data:{kind:"drop-before",index:t}});let h="";return"ask_user"===e.type?h=`${e.outputVar} ← { ${e.fields.map(e=>e.key).join(", ")} }`:"fai"===e.type?h=`${e.outputVar} ← ${e.faiName}(${e.inputs.length} args)`:"let"===e.type?h=`${e.varName} = ${en(e.value)}`:"return"===e.type&&(h=`return ${en(e.value)}`),r.jsxs("div",{ref:p,className:"relative",children:[f&&r.jsx("div",{className:"absolute left-0 right-0 -top-1 h-0.5 bg-blue-500 z-10"}),r.jsxs("div",{ref:d,...l,...c,onClick:e=>{e.stopPropagation(),o()},className:["border rounded-lg p-3 cursor-pointer transition-all",s.color,n?"ring-2 ring-blue-500 shadow":"hover:shadow-sm",u?"opacity-50":""].join(" "),children:[r.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[r.jsx("span",{className:"text-xl",children:s.icon}),r.jsx("span",{className:"font-medium",children:s.label}),r.jsxs("div",{className:"ml-auto flex gap-1",children:[r.jsx("button",{type:"button",onClick:e=>{e.stopPropagation(),a()},className:"text-xs text-gray-500 hover:text-gray-800 px-1",children:"复制"}),r.jsx("button",{type:"button",onClick:e=>{e.stopPropagation(),i()},className:"text-xs text-red-500 hover:text-red-700 px-1",children:"删除"})]})]}),r.jsx("div",{className:"text-sm font-mono text-gray-700",children:h})]})]})}const nn={ask_user:"💬 问用户",fai:"🤖 AI 调用",let:"📦 命名变量",return:"⬅️ 返回"};function rn({graph:t,dispatch:n,selectedId:o,onSelect:a}){const[i,s]=e.useState(null),l=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.useMemo(()=>[...n].filter(e=>null!=e),[...n])}((d=Ge,u={activationConstraint:{distance:8}},e.useMemo(()=>({sensor:d,options:null!=u?u:{}}),[d,u])));var d,u;return r.jsxs(Pt,{sensors:l,onDragStart:e=>{const t=e.active.data.current;"create"===(null==t?void 0:t.kind)&&t.nodeType?s({kind:"create",label:nn[t.nodeType]}):"reorder"===(null==t?void 0:t.kind)&&s({kind:"reorder",label:"移动节点"})},onDragEnd:function(e){s(null);const{active:r,over:o}=e;if(!o)return;const a=r.data.current,i=o.data.current;if(a&&i){if("create"===a.kind&&"drop-before"===i.kind){const e=a.nodeType?c[a.nodeType]:void 0;e&&n({type:"add",node:e(),index:i.index??0})}if("create"===a.kind&&"drop-end"===i.kind){const e=a.nodeType?c[a.nodeType]:void 0;e&&n({type:"add",node:e(),index:t.body.length})}if("reorder"===a.kind&&"drop-before"===i.kind){const e=a.sourceIndex;if("number"!=typeof e)return;let t=i.index??0;e<t&&(t-=1),e!==t&&n({type:"move",from:e,to:t})}if("reorder"===a.kind&&"drop-end"===i.kind){const e=a.sourceIndex;if("number"!=typeof e)return;const r=t.body.length-1;e!==r&&n({type:"move",from:e,to:r})}}},onDragCancel:()=>s(null),children:[r.jsxs("main",{className:"flex-1 overflow-y-auto p-6",onClick:()=>a(null),children:[r.jsx("h1",{className:"text-xl font-semibold mb-4",children:t.trackName}),r.jsxs("div",{className:"flex flex-col gap-2",children:[0===t.body.length&&r.jsx(on,{}),t.body.map((e,t)=>r.jsx(tn,{node:e,index:t,selected:o===e.id,onSelect:()=>a(e.id),onDuplicate:()=>n({type:"duplicate",index:t}),onRemove:()=>n({type:"remove",index:t})},e.id)),t.body.length>0&&r.jsx(an,{})]})]}),r.jsx(Gt,{children:i&&r.jsx("div",{className:"px-3 py-2 bg-white border-2 border-blue-400 rounded shadow text-sm",children:i.label})})]})}function on(){const{setNodeRef:e,isOver:t}=Vt({id:"drop-end-empty",data:{kind:"drop-end"}});return r.jsx("div",{ref:e,className:["border-2 border-dashed rounded-lg p-12 text-center text-gray-400",t?"border-blue-500 bg-blue-50":"border-gray-300"].join(" "),children:"从左侧拖一个节点过来开始搭建"})}function an(){const{setNodeRef:e,isOver:t}=Vt({id:"drop-end",data:{kind:"drop-end"}});return r.jsx("div",{ref:e,className:["border-2 border-dashed rounded-lg p-4 text-center text-gray-400 text-sm",t?"border-blue-500 bg-blue-50":"border-gray-200"].join(" "),children:"拖节点到这里追加"})}const sn=[{type:"ask_user",icon:"💬",label:"问用户"},{type:"fai",icon:"🤖",label:"AI 调用"},{type:"let",icon:"📦",label:"命名变量"},{type:"return",icon:"⬅️",label:"返回"}];function ln({type:e,icon:t,label:n}){const{attributes:o,listeners:a,setNodeRef:i,isDragging:s}=zt({id:`palette:${e}`,data:{kind:"create",nodeType:e}});return r.jsxs("div",{ref:i,...o,...a,className:["flex items-center gap-2 p-2 rounded border border-gray-300 bg-white cursor-grab","hover:border-blue-400 hover:shadow-sm transition-all select-none",s?"opacity-50":""].join(" "),children:[r.jsx("span",{className:"text-xl",children:t}),r.jsx("span",{className:"text-sm",children:n})]})}function cn(){return r.jsxs("aside",{className:"flex flex-col gap-2 w-40 p-3 border-r border-gray-200 bg-gray-50 overflow-y-auto flex-shrink-0",children:[r.jsx("div",{className:"text-xs uppercase text-gray-500 mb-1 px-1",children:"节点"}),sn.map(e=>r.jsx(ln,{...e},e.type))]})}const dn=/^[a-zA-Z_][a-zA-Z0-9_]*$/;function un({value:t,onChange:n,className:o,placeholder:a}){const[i,s]=e.useState(!1),l=dn.test(t),c=i&&!l&&t.length>0;return r.jsxs("div",{className:"inline-flex flex-col gap-0.5",children:[r.jsx("input",{type:"text",value:t,onChange:e=>n(e.target.value),onBlur:()=>s(!0),placeholder:a,className:["px-2 py-0.5 rounded border text-sm font-mono",c?"border-red-500":"border-gray-300",o??""].join(" ")}),c&&r.jsx("span",{className:"text-[10px] text-red-600 leading-none",children:"只能用字母/数字/下划线,首字符不能是数字"})]})}function pn({node:e,onChange:t}){function n(n,r){const o=e.fields.map((e,t)=>t===n?{...e,...r}:e);t({fields:o})}return r.jsxs("div",{className:"p-4 flex flex-col gap-4",children:[r.jsxs("label",{className:"flex items-center gap-2",children:[r.jsx("span",{className:"text-sm text-gray-600",children:"变量名:"}),r.jsx(un,{value:e.outputVar,onChange:e=>t({outputVar:e}),className:"flex-1"})]}),r.jsxs("div",{children:[r.jsx("div",{className:"text-sm text-gray-600 mb-1",children:"字段:"}),e.fields.map((o,a)=>r.jsxs("div",{className:"border border-gray-200 rounded p-2 mb-2 flex flex-col gap-1 text-sm",children:[r.jsxs("label",{className:"flex items-center gap-2",children:[r.jsx("span",{className:"w-12 text-gray-500",children:"key"}),r.jsx(un,{value:o.key,onChange:e=>n(a,{key:e}),className:"font-mono flex-1"})]}),r.jsxs("label",{className:"flex items-center gap-2",children:[r.jsx("span",{className:"w-12 text-gray-500",children:"label"}),r.jsx("input",{value:o.label,onChange:e=>n(a,{label:e.target.value}),className:"px-2 py-0.5 rounded border border-gray-300 flex-1"})]}),r.jsxs("label",{className:"flex items-center gap-2",children:[r.jsx("span",{className:"w-12 text-gray-500",children:"type"}),r.jsxs("select",{value:o.type,onChange:e=>{const t=e.target.value;n(a,"enum"===t?{type:t}:{type:t,variants:void 0})},className:"px-2 py-0.5 rounded border border-gray-300",children:[r.jsx("option",{value:"text",children:"text"}),r.jsx("option",{value:"number",children:"number"}),r.jsx("option",{value:"bool",children:"bool"}),r.jsx("option",{value:"enum",children:"enum"})]})]}),"enum"===o.type&&r.jsxs("label",{className:"flex items-center gap-2",children:[r.jsx("span",{className:"w-12 text-gray-500",children:"variants"}),r.jsx("input",{value:(o.variants??[]).join(","),onChange:e=>n(a,{variants:e.target.value.split(",").map(e=>e.trim()).filter(Boolean)}),placeholder:"a,b,c",className:"px-2 py-0.5 rounded border border-gray-300 font-mono flex-1"})]}),r.jsxs("label",{className:"flex items-center gap-2",children:[r.jsx("span",{className:"w-12 text-gray-500",children:"required"}),r.jsx("input",{type:"checkbox",checked:!1!==o.required,onChange:e=>n(a,{required:e.target.checked})})]}),r.jsx("button",{type:"button",onClick:()=>{return n=a,void t({fields:e.fields.filter((e,t)=>t!==n)});var n},className:"text-red-600 text-xs self-end",children:"删除该字段"})]},o.id)),r.jsx("button",{type:"button",onClick:function(){const n=new Set(e.fields.map(e=>e.key));let r=e.fields.length+1;for(;n.has("field_"+r);)r++;t({fields:[...e.fields,{id:i(),key:"field_"+r,label:"",type:"text",required:!0}]})},className:"text-blue-600 text-sm",children:"+ 添加字段"})]})]})}function fn({value:t,candidates:n,placeholder:o,onChange:a}){const[i,s]=e.useState(!1),[l,c]=e.useState(""),[d,u]=e.useState(!1),p=e.useRef(null),f=e.useRef(!1);function h(e){if(f.current=!0,e.startsWith("@")){if(e.endsWith("."))return void(f.current=!1);const t=e.slice(1).split(".").filter(e=>e.length>0);if(t.length>0)return a({kind:"var",path:t}),void s(!1)}a({kind:"lit",raw:e}),s(!1)}e.useEffect(()=>{i&&("var"===t.kind?c("@"+t.path.join(".")):c(t.raw),setTimeout(()=>{var e;return null==(e=p.current)?void 0:e.focus()},0))},[i,t]);const g=n.filter(e=>e.toLowerCase().includes(l.slice(1).toLowerCase()));return i?r.jsxs("div",{className:"relative inline-block",children:[r.jsx("input",{ref:p,type:"text",value:l,placeholder:o,onChange:e=>{c(e.target.value),u(e.target.value.startsWith("@"))},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),h(l)),"Escape"===e.key&&(e.preventDefault(),f.current=!0,s(!1))},onBlur:()=>setTimeout(()=>{f.current?f.current=!1:h(l)},100),className:"px-2 py-0.5 rounded border border-blue-400 text-sm font-mono outline-none w-48"}),d&&g.length>0&&r.jsx("ul",{className:"absolute top-full left-0 mt-1 bg-white border border-gray-300 rounded shadow text-sm z-10 max-h-48 overflow-auto",children:g.slice(0,10).map(e=>r.jsxs("li",{className:"px-2 py-1 hover:bg-blue-50 cursor-pointer font-mono",onMouseDown:()=>h("@"+e),children:["@",e]},e))})]}):"var"===t.kind?r.jsxs("button",{type:"button",onClick:()=>s(!0),className:"inline-flex items-center gap-1 px-2 py-0.5 rounded bg-blue-100 text-blue-800 border border-blue-300 text-sm font-mono",children:["@",t.path.join(".")]}):r.jsx("button",{type:"button",onClick:()=>s(!0),className:"px-2 py-0.5 rounded border border-gray-300 text-sm font-mono text-gray-700 hover:bg-gray-50",children:t.raw||r.jsx("span",{className:"italic text-gray-400",children:o??"(空)"})})}function hn({segments:e,candidates:t}){if(0===e.length)return r.jsx("div",{className:"text-xs italic text-gray-400",children:"(空 prompt)"});const n=new Set(t);return r.jsx("div",{className:"text-sm font-mono leading-relaxed border border-gray-200 rounded p-2 bg-gray-50",children:e.map((e,t)=>{if("text"===e.kind)return r.jsx("span",{className:"whitespace-pre-wrap",children:e.raw},t);const o=e.path.join("."),a=n.has(o),i=a?"bg-blue-100 text-blue-800 border border-blue-300":"bg-red-100 text-red-800 border border-red-300";return r.jsxs("span",{className:`inline-flex items-center px-1.5 py-0.5 mx-0.5 rounded ${i}`,title:a?"":`引用未找到: ${o}`,children:["@",o]},t)})})}function gn({node:e,candidates:t,onChange:n}){function o(t,r){n({inputs:e.inputs.map((e,n)=>n===t?{...e,...r}:e)})}function a(t,r){n({outputs:e.outputs.map((e,n)=>n===t?{...e,...r}:e)})}const s=e.promptTemplate.map(e=>"text"===e.kind?e.raw:`@{${e.path.join(".")}}`).join("");return r.jsxs("div",{className:"p-4 flex flex-col gap-4 text-sm",children:[r.jsxs("label",{className:"flex items-center gap-2",children:[r.jsx("span",{className:"text-gray-600 w-20",children:"fai 名:"}),r.jsx(un,{value:e.faiName,onChange:e=>n({faiName:e}),className:"flex-1"})]}),r.jsxs("label",{className:"flex items-center gap-2",children:[r.jsx("span",{className:"text-gray-600 w-20",children:"输出变量名:"}),r.jsx(un,{value:e.outputVar,onChange:e=>n({outputVar:e}),className:"flex-1"})]}),r.jsxs("div",{children:[r.jsx("div",{className:"text-gray-600 mb-1",children:"输入:"}),e.inputs.map((a,i)=>r.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[r.jsx(un,{value:a.argName,onChange:e=>o(i,{argName:e}),className:"w-28"}),r.jsxs("select",{value:a.argType,onChange:e=>o(i,{argType:e.target.value}),className:"px-2 py-0.5 rounded border border-gray-300",children:[r.jsx("option",{value:"string",children:"string"}),r.jsx("option",{value:"number",children:"number"}),r.jsx("option",{value:"bool",children:"bool"}),r.jsx("option",{value:"prompt",children:"prompt"})]}),r.jsx("span",{children:"="}),r.jsx(fn,{value:a.source,candidates:t,onChange:e=>o(i,{source:e})}),r.jsx("button",{type:"button",onClick:()=>{return t=i,void n({inputs:e.inputs.filter((e,n)=>n!==t)});var t},className:"text-red-600 text-xs ml-auto",children:"×"})]},a.id)),r.jsx("button",{type:"button",onClick:function(){const t=new Set(e.inputs.map(e=>e.argName));let r=e.inputs.length+1;for(;t.has("arg"+r);)r++;n({inputs:[...e.inputs,{id:i(),argName:"arg"+r,argType:"string",source:{kind:"lit",raw:'""'}}]})},className:"text-blue-600 text-xs",children:"+ 添加输入"})]}),r.jsxs("div",{children:[r.jsx("div",{className:"text-gray-600 mb-1",children:"输出 (schema):"}),e.outputs.map((t,o)=>r.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[r.jsx(un,{value:t.name,onChange:e=>a(o,{name:e}),className:"w-28"}),r.jsxs("select",{value:t.type,onChange:e=>a(o,{type:e.target.value}),className:"px-2 py-0.5 rounded border border-gray-300",children:[r.jsx("option",{value:"string",children:"string"}),r.jsx("option",{value:"int",children:"int"}),r.jsx("option",{value:"number",children:"number"}),r.jsx("option",{value:"bool",children:"bool"}),r.jsx("option",{value:"array",children:"array"})]}),"array"===t.type&&r.jsxs("select",{value:t.innerType??"string",onChange:e=>a(o,{innerType:e.target.value}),className:"px-2 py-0.5 rounded border border-gray-300",children:[r.jsx("option",{value:"string",children:"array<string>"}),r.jsx("option",{value:"int",children:"array<int>"}),r.jsx("option",{value:"number",children:"array<number>"}),r.jsx("option",{value:"bool",children:"array<bool>"})]}),r.jsx("button",{type:"button",onClick:()=>{return t=o,void n({outputs:e.outputs.filter((e,n)=>n!==t)});var t},className:"text-red-600 text-xs ml-auto",children:"×"})]},t.id)),r.jsx("button",{type:"button",onClick:function(){const t=new Set(e.outputs.map(e=>e.name));let r=e.outputs.length+1;for(;t.has("out"+r);)r++;n({outputs:[...e.outputs,{id:i(),name:"out"+r,type:"string"}]})},className:"text-blue-600 text-xs",children:"+ 添加输出"})]}),r.jsxs("div",{children:[r.jsxs("div",{className:"text-gray-600 mb-1",children:["Prompt(用 @","{var.path}"," 引用上文变量):"]}),r.jsx("textarea",{value:s,onChange:e=>function(e){const t=[];let r=0;for(;r<e.length;){const n=e.indexOf("@{",r);if(-1===n){t.push({kind:"text",raw:e.slice(r)});break}n>r&&t.push({kind:"text",raw:e.slice(r,n)});const o=e.indexOf("}",n+2);if(-1===o){t.push({kind:"text",raw:e.slice(n)});break}const a=e.slice(n+2,o).split(".").filter(e=>e.length>0);a.length>0?t.push({kind:"ref",path:a}):t.push({kind:"text",raw:e.slice(n,o+1)}),r=o+1}n({promptTemplate:t})}(e.target.value),rows:5,className:"w-full px-2 py-1 rounded border border-gray-300 font-mono text-sm"}),r.jsxs("div",{className:"mt-1",children:[r.jsx("div",{className:"text-xs text-gray-500 mb-1",children:"实际 AI 看到的内容预览:"}),r.jsx(hn,{segments:e.promptTemplate,candidates:t})]}),r.jsxs("div",{className:"text-xs text-gray-500 mt-1",children:["可用变量: ",t.slice(0,8).map(e=>`@{${e}}`).join(" · "),t.length>8?` 等 ${t.length} 个`:""]})]})]})}function mn({node:e,candidates:t,onChange:n}){const o=e.value;return"triple"===o.kind?r.jsx("div",{className:"p-4 text-sm text-red-600",children:"M1 不支持 TripleSlot 值。请等 M2 三格拼装器实装。"}):r.jsxs("div",{className:"p-4 flex flex-col gap-3 text-sm",children:[r.jsxs("label",{className:"flex items-center gap-2",children:[r.jsx("span",{className:"text-gray-600 w-16",children:"变量名:"}),r.jsx(un,{value:e.varName,onChange:e=>n({varName:e}),className:"flex-1"})]}),r.jsxs("label",{className:"flex items-center gap-2",children:[r.jsx("span",{className:"text-gray-600 w-16",children:"值:"}),r.jsx(fn,{value:o,candidates:t,placeholder:'@变量 或字面量(如 "hello" / 42 / true)',onChange:e=>n({value:e})})]}),r.jsx("div",{className:"text-xs text-gray-500",children:"提示:M1 暂不支持 a + b 这种表达式。需要时先用 fai 节点中转,或等 M2 三格拼装器。"})]})}function vn({node:e,candidates:t,onChange:n}){const o=e.value;return"triple"===o.kind?r.jsx("div",{className:"p-4 text-sm text-red-600",children:"M1 不支持 TripleSlot 值。等 M2 三格拼装器。"}):r.jsx("div",{className:"p-4 flex flex-col gap-3 text-sm",children:r.jsxs("label",{className:"flex items-center gap-2",children:[r.jsx("span",{className:"text-gray-600 w-16",children:"返回值:"}),r.jsx(fn,{value:o,candidates:t,placeholder:'@变量 或字面量(如 { foo: 1 } / "hello" / null)',onChange:e=>n({value:e})})]})})}function bn({node:e,candidates:t,onChange:n,onClose:o}){return e?r.jsxs("aside",{className:"flex flex-col w-96 border-l border-gray-200 bg-white overflow-hidden flex-shrink-0",children:[r.jsxs("header",{className:"flex items-center justify-between p-3 border-b border-gray-200 bg-gray-50 flex-shrink-0",children:[r.jsx("span",{className:"font-medium text-sm",children:"编辑节点"}),r.jsx("button",{type:"button",onClick:o,className:"text-gray-500 hover:text-gray-800 text-lg leading-none",children:"×"})]}),r.jsxs("div",{className:"flex-1 overflow-y-auto",children:["ask_user"===e.type&&r.jsx(pn,{node:e,onChange:n}),"fai"===e.type&&r.jsx(gn,{node:e,candidates:t,onChange:n}),"let"===e.type&&r.jsx(mn,{node:e,candidates:t,onChange:n}),"return"===e.type&&r.jsx(vn,{node:e,candidates:t,onChange:n})]})]}):null}const xn=e.lazy(async()=>{const[e,t]=await Promise.all([o(()=>import("./editor.main-Dv96_EKG.js").then(e=>e.e),__vite__mapDeps([0,1,2,3])),o(()=>import("./index-dHRMoKUn.js"),__vite__mapDeps([4,1,2]))]),n=e.default??e;return t.loader.config({monaco:n}),{default:t.default}});function yn({open:t,source:n,errors:o,onClose:a}){return t?r.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",onClick:a,children:r.jsxs("div",{className:"bg-white rounded-lg w-3/4 h-3/4 flex flex-col",onClick:e=>e.stopPropagation(),children:[r.jsxs("header",{className:"flex items-center justify-between p-3 border-b border-gray-200",children:[r.jsx("span",{className:"font-medium",children:"预览 .tr(只读)"}),r.jsx("button",{onClick:a,className:"text-gray-500 hover:text-gray-800 text-lg leading-none",children:"×"})]}),o&&o.length>0&&r.jsxs("div",{className:"bg-red-50 border-b border-red-200 p-2 text-sm text-red-700",children:[r.jsxs("div",{className:"font-medium mb-1",children:["codegen 报错(",o.length,"):"]}),o.slice(0,5).map((e,t)=>r.jsxs("div",{className:"font-mono text-xs",children:["节点 #",e.nodeIndex,": ",e.message]},t))]}),r.jsx("div",{className:"flex-1 overflow-hidden",children:r.jsx(e.Suspense,{fallback:r.jsx("div",{className:"p-4 text-sm text-gray-500",children:"加载预览中..."}),children:r.jsx(xn,{height:"100%",value:n,language:"javascript",options:{readOnly:!0,minimap:{enabled:!1},fontSize:13}})})})]})}):null}function wn(e,t){return function(e,t){switch(t.type){case"add":{const n=Math.max(0,Math.min(t.index,e.body.length)),r=[...e.body];return r.splice(n,0,t.node),{...e,body:r}}case"remove":{const n=e.body.filter((e,n)=>n!==t.index);return{...e,body:n}}case"move":{const n=[...e.body],[r]=n.splice(t.from,1);return r?(n.splice(t.to,0,r),{...e,body:n}):e}case"duplicate":{const n=e.body[t.index];if(!n)return e;let r=JSON.parse(JSON.stringify(n));r.id=a(),"ask_user"===r.type&&(r.fields=r.fields.map(e=>({...e,id:i()}))),"fai"===r.type&&(r.inputs=r.inputs.map(e=>({...e,id:i()})),r.outputs=r.outputs.map(e=>({...e,id:i()})));const o=d(r);if(o){const t=new Set(e.body.map(d).filter(e=>null!==e));let n=o,a=2;for(;t.has(n);)n=`${o}_${a++}`;n!==o&&(r=function(e,t){return"ask_user"===e.type||"fai"===e.type?{...e,outputVar:t}:"let"===e.type?{...e,varName:t}:e}(r,n))}const s=[...e.body];return s.splice(t.index+1,0,r),{...e,body:s}}case"update":{const n=e.body.map((e,n)=>n===t.index?{...e,...t.patch}:e);return{...e,body:n}}}}(e,t)}function Nn({initialGraph:t,trackName:n,onSave:o,onRequestClose:a,onDirtyChange:i}){const[s,l]=e.useReducer(wn,t??function(e){return{version:1,trackName:e,body:[]}}(n)),[c,d]=e.useState(null),[p,f]=e.useState(!1),[h,g]=e.useState(null),[m,v]=e.useState(!1),b=e.useRef(!1),x=e.useCallback(e=>{l(e),b.current||(b.current=!0,null==i||i(!0))},[i]),y=null===c?-1:s.body.findIndex(e=>e.id===c),w=y>=0?s.body[y]:null,N=e.useMemo(()=>u(s,y>=0?y:s.body.length),[s,y]);const j=e.useMemo(()=>D(s),[s]),C=j.ok?j.source:"// codegen 错误:\n"+(j.errors??[]).map(e=>`// #${e.nodeIndex}: ${e.message}`).join("\n");return r.jsxs("div",{className:"flex flex-col h-full w-full bg-gray-50",children:[r.jsxs("header",{className:"flex items-center gap-3 p-3 border-b border-gray-200 bg-white flex-shrink-0",children:[r.jsx("button",{onClick:a,className:"px-3 py-1 text-sm rounded border border-gray-300 hover:bg-gray-50",children:"← 返回列表"}),r.jsx("span",{className:"text-lg font-medium",children:n}),r.jsx("span",{className:"text-xs text-gray-400",children:"节点图模式"}),r.jsxs("div",{className:"ml-auto flex gap-2",children:[r.jsx("button",{onClick:()=>f(!0),className:"px-3 py-1 text-sm rounded border border-gray-300 hover:bg-gray-50",children:"预览代码"}),r.jsx("button",{onClick:async function(){var e;g(null);const t=D(s);if(!t.ok||!t.source){const n=(null==(e=t.errors)?void 0:e.length)??0;return g(`codegen 报 ${n} 个错。点"预览代码"查看详情。`),void f(!0)}v(!0);try{await o(t.source),b.current=!1,null==i||i(!1)}catch(n){g(n instanceof Error?n.message:String(n))}finally{v(!1)}},disabled:m,className:"px-3 py-1 text-sm rounded bg-blue-600 text-white hover:bg-blue-700 disabled:opacity-50",children:m?"保存中...":"保存"})]}),h&&r.jsx("div",{className:"ml-3 text-xs text-red-600 max-w-md truncate",title:h,children:h})]}),r.jsxs("div",{className:"flex flex-row flex-1 overflow-hidden",children:[r.jsx(cn,{}),r.jsx(rn,{graph:s,dispatch:x,selectedId:c,onSelect:d}),r.jsx(bn,{node:w,candidates:N,onChange:function(e){y<0||x({type:"update",index:y,patch:e})},onClose:()=>d(null)})]}),r.jsx(yn,{open:p,source:C,errors:j.ok?void 0:j.errors,onClose:()=>f(!1)})]})}export{Nn as TrackVisualEditor};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 240 10% 3.9%;--card: 0 0% 100%;--card-foreground: 240 10% 3.9%;--popover: 0 0% 100%;--popover-foreground: 240 10% 3.9%;--primary: 240 5.9% 10%;--primary-foreground: 0 0% 98%;--secondary: 240 4.8% 95.9%;--secondary-foreground: 240 5.9% 10%;--muted: 240 4.8% 95.9%;--muted-foreground: 240 3.8% 46.1%;--accent: 240 4.8% 95.9%;--accent-foreground: 240 5.9% 10%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 0 0% 98%;--border: 240 5.9% 90%;--input: 240 5.9% 90%;--ring: 240 5.9% 10%;--radius: .5rem;--chart-1: 12 76% 61%;--chart-2: 173 58% 39%;--chart-3: 197 37% 24%;--chart-4: 43 74% 66%;--chart-5: 27 87% 67%}.dark{--background: 240 10% 3.9%;--foreground: 0 0% 98%;--card: 240 10% 3.9%;--card-foreground: 0 0% 98%;--popover: 240 10% 3.9%;--popover-foreground: 0 0% 98%;--primary: 0 0% 98%;--primary-foreground: 240 5.9% 10%;--secondary: 240 3.7% 15.9%;--secondary-foreground: 0 0% 98%;--muted: 240 3.7% 15.9%;--muted-foreground: 240 5% 64.9%;--accent: 240 3.7% 15.9%;--accent-foreground: 0 0% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 0 0% 98%;--border: 240 3.7% 15.9%;--input: 240 3.7% 15.9%;--ring: 240 4.9% 83.9%;--chart-1: 220 70% 50%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media (min-width: 1400px){.container{max-width:1400px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: rgb(17 24 39 / 10%);--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-top:.8888889em;margin-bottom:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;margin-top:0;margin-bottom:.8em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;margin-top:1.6em;margin-bottom:.8em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;margin-top:1.5555556em;margin-bottom:.4444444em;line-height:1.5555556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.4285714em;margin-bottom:.5714286em;line-height:1.4285714}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;border-radius:.3125rem;padding-top:.1428571em;padding-inline-end:.3571429em;padding-bottom:.1428571em;padding-inline-start:.3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.6666667;margin-top:1.6666667em;margin-bottom:1.6666667em;border-radius:.25rem;padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;margin-bottom:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-inline-start:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.8571429em;margin-bottom:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.-bottom-0\.5{bottom:-.125rem}.-top-1{top:-.25rem}.bottom-0{bottom:0}.bottom-7{bottom:1.75rem}.left-0{left:0}.left-1\.5{left:.375rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-2\.5{right:.625rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-14{top:3.5rem}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-1\.5{margin-top:.375rem;margin-bottom:.375rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-auto{margin-right:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-6{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:6}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-3\/4{height:75%}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[24px\]{height:24px}.h-\[60vh\]{height:60vh}.h-\[80vh\]{height:80vh}.h-\[90vh\]{height:90vh}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-10{max-height:2.5rem}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-64{max-height:16rem}.max-h-96{max-height:24rem}.max-h-\[200px\]{max-height:200px}.max-h-\[240px\]{max-height:240px}.max-h-\[55vh\]{max-height:55vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-full{max-height:100%}.min-h-0{min-height:0px}.min-h-\[120px\]{min-height:120px}.min-h-\[12px\]{min-height:12px}.min-h-\[200px\]{min-height:200px}.min-h-\[32px\]{min-height:32px}.min-h-\[5\.25rem\]{min-height:5.25rem}.min-h-\[80px\]{min-height:80px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[1px\]{width:1px}.w-\[44px\]{width:44px}.w-\[700px\]{width:700px}.w-\[72vw\]{width:72vw}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0px}.min-w-\[10rem\]{min-width:10rem}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[36px\]{min-width:36px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[300px\]{max-width:300px}.max-w-\[7rem\]{max-width:7rem}.max-w-\[85\%\]{max-width:85%}.max-w-\[90\%\]{max-width:90%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-se-resize{cursor:se-resize}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.resize-none{resize:none}.resize-y{resize:vertical}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.self-end{align-self:flex-end}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-bl-md{border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-bl-sm{border-bottom-left-radius:calc(var(--radius) - 4px)}.rounded-br-md{border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-br-sm{border-bottom-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-500\/30{border-color:#f59e0b4d}.border-amber-500\/40{border-color:#f59e0b66}.border-black\/10{border-color:#0000001a}.border-blue-300{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-blue-500\/20{border-color:#3b82f633}.border-blue-500\/30{border-color:#3b82f64d}.border-blue-500\/40{border-color:#3b82f666}.border-blue-500\/50{border-color:#3b82f680}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-border\/60{border-color:hsl(var(--border) / .6)}.border-destructive{border-color:hsl(var(--destructive))}.border-destructive\/30{border-color:hsl(var(--destructive) / .3)}.border-emerald-500\/40{border-color:#10b98166}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-green-500\/20{border-color:#22c55e33}.border-green-500\/50{border-color:#22c55e80}.border-input{border-color:hsl(var(--input))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/40{border-color:hsl(var(--muted-foreground) / .4)}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-300{--tw-border-opacity: 1;border-color:rgb(253 186 116 / var(--tw-border-opacity, 1))}.border-pink-300{--tw-border-opacity: 1;border-color:rgb(249 168 212 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/15{border-color:hsl(var(--primary) / .15)}.border-primary\/25{border-color:hsl(var(--primary) / .25)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/40{border-color:hsl(var(--primary) / .4)}.border-purple-300{--tw-border-opacity: 1;border-color:rgb(216 180 254 / var(--tw-border-opacity, 1))}.border-purple-500\/30{border-color:#a855f74d}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/40{border-color:#ef444466}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-500\/20{border-color:#eab30833}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-accent{background-color:hsl(var(--accent))}.bg-accent\/30{background-color:hsl(var(--accent) / .3)}.bg-accent\/40{background-color:hsl(var(--accent) / .4)}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/40{background-color:hsl(var(--background) / .4)}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/55{background-color:hsl(var(--background) / .55)}.bg-background\/60{background-color:hsl(var(--background) / .6)}.bg-background\/85{background-color:hsl(var(--background) / .85)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black\/5{background-color:#0000000d}.bg-black\/50{background-color:#00000080}.bg-black\/60{background-color:#0009}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-500\/10{background-color:#3b82f61a}.bg-blue-500\/15{background-color:#3b82f626}.bg-blue-500\/20{background-color:#3b82f633}.bg-blue-500\/5{background-color:#3b82f60d}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-current{background-color:currentColor}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive) / .1)}.bg-emerald-500\/15{background-color:#10b98126}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-green-400\/5{background-color:#4ade800d}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-500\/10{background-color:#22c55e1a}.bg-green-500\/15{background-color:#22c55e26}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground{background-color:hsl(var(--muted-foreground))}.bg-muted-foreground\/10{background-color:hsl(var(--muted-foreground) / .1)}.bg-muted-foreground\/40{background-color:hsl(var(--muted-foreground) / .4)}.bg-muted-foreground\/5{background-color:hsl(var(--muted-foreground) / .05)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/40{background-color:hsl(var(--muted) / .4)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-pink-50{--tw-bg-opacity: 1;background-color:rgb(253 242 248 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/15{background-color:hsl(var(--primary) / .15)}.bg-primary\/40{background-color:hsl(var(--primary) / .4)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-400{--tw-bg-opacity: 1;background-color:rgb(192 132 252 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-purple-500\/10{background-color:#a855f71a}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-400\/5{background-color:#f871710d}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/20{background-color:#ef444433}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-400{--tw-bg-opacity: 1;background-color:rgb(250 204 21 / var(--tw-bg-opacity, 1))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/10{background-color:#eab3081a}.bg-zinc-400{--tw-bg-opacity: 1;background-color:rgb(161 161 170 / var(--tw-bg-opacity, 1))}.fill-foreground{fill:hsl(var(--foreground))}.fill-muted-foreground\/60{fill:hsl(var(--muted-foreground) / .6)}.stroke-muted-foreground\/40{stroke:hsl(var(--muted-foreground) / .4)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[3px\]{padding-top:3px;padding-bottom:3px}.py-px{padding-top:1px;padding-bottom:1px}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-2{padding-bottom:.5rem}.pb-\[env\(safe-area-inset-bottom\)\]{padding-bottom:env(safe-area-inset-bottom)}.pl-1\.5{padding-left:.375rem}.pl-3{padding-left:.75rem}.pl-5{padding-left:1.25rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-14{padding-right:3.5rem}.pr-2{padding-right:.5rem}.pr-7{padding-right:1.75rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.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)}.leading-7{line-height:1.75rem}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-normal{letter-spacing:0em}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-400\/80{color:#60a5facc}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-cyan-500{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/80{color:hsl(var(--foreground) / .8)}.text-foreground\/90{color:hsl(var(--foreground) / .9)}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-inherit{color:inherit}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/30{color:hsl(var(--muted-foreground) / .3)}.text-muted-foreground\/40{color:hsl(var(--muted-foreground) / .4)}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.text-muted-foreground\/80{color:hsl(var(--muted-foreground) / .8)}.text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-pink-500{--tw-text-opacity: 1;color:rgb(236 72 153 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/80{color:hsl(var(--primary) / .8)}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-400\/70{color:#f87171b3}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-sky-400{--tw-text-opacity: 1;color:rgb(56 189 248 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.line-through{text-decoration-line:line-through}.underline-offset-4{text-underline-offset:4px}.accent-primary{accent-color:hsl(var(--primary))}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-inset{--tw-ring-inset: inset}.ring-accent{--tw-ring-color: hsl(var(--accent))}.ring-blue-500{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.ring-green-500\/40{--tw-ring-color: rgb(34 197 94 / .4)}.ring-primary\/30{--tw-ring-color: hsl(var(--primary) / .3)}.ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.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{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-blur-md{--tw-backdrop-blur: blur(12px);-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)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-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,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:hsl(var(--border));border-radius:9999px;border:1px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground) / .4);background-clip:content-box}::-webkit-scrollbar-corner{background:transparent}*{scrollbar-width:thin;scrollbar-color:hsl(var(--border)) transparent}@keyframes indeterminate{0%{transform:translate(-100%);width:40%}50%{transform:translate(100%);width:60%}to{transform:translate(-100%);width:40%}}@keyframes typing-dot{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-4px);opacity:1}}@keyframes gradient-spin{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.card-active-glow{background:linear-gradient(270deg,#3b82f6,#8b5cf6,#ec4899,#f59e0b,#10b981,#3b82f6);background-size:400% 400%;animation:gradient-spin 2.5s ease infinite;padding:2px;border-radius:calc(var(--radius) + 2px)}.card-active-glow>*{background:linear-gradient(270deg,#dbeafe,#ede9fe,#fce7f3,#fef3c7,#d1fae5,#dbeafe);background-size:400% 400%;animation:gradient-spin 2.5s ease infinite;border-radius:var(--radius);overflow:hidden}.dark .card-active-glow>*{background:linear-gradient(270deg,#1e293b,#1e1b4b,#2d1b3d,#2d2305,#0d2818,#1e293b);background-size:400% 400%;animation:gradient-spin 2.5s ease infinite;border-radius:var(--radius);overflow:hidden}.dark\:prose-invert:is(.dark *){--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground\/40::-moz-placeholder{color:hsl(var(--muted-foreground) / .4)}.placeholder\:text-muted-foreground\/40::placeholder{color:hsl(var(--muted-foreground) / .4)}.placeholder\:text-muted-foreground\/50::-moz-placeholder{color:hsl(var(--muted-foreground) / .5)}.placeholder\:text-muted-foreground\/50::placeholder{color:hsl(var(--muted-foreground) / .5)}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-400:hover{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.hover\:border-border\/80:hover{border-color:hsl(var(--border) / .8)}.hover\:border-muted-foreground\/30:hover{border-color:hsl(var(--muted-foreground) / .3)}.hover\:border-muted-foreground\/40:hover{border-color:hsl(var(--muted-foreground) / .4)}.hover\:border-transparent:hover{border-color:transparent}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-accent\/60:hover{background-color:hsl(var(--accent) / .6)}.hover\:bg-background\/60:hover{background-color:hsl(var(--background) / .6)}.hover\:bg-black\/10:hover{background-color:#0000001a}.hover\:bg-blue-50:hover{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-500:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-500\/20:hover{background-color:#3b82f633}.hover\:bg-blue-500\/60:hover{background-color:#3b82f699}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-destructive\/10:hover{background-color:hsl(var(--destructive) / .1)}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive) / .8)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-emerald-500\/10:hover{background-color:#10b9811a}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-green-500\/15:hover{background-color:#22c55e26}.hover\:bg-green-500\/20:hover{background-color:#22c55e33}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted-foreground\/10:hover{background-color:hsl(var(--muted-foreground) / .1)}.hover\:bg-muted\/30:hover{background-color:hsl(var(--muted) / .3)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-muted\/80:hover{background-color:hsl(var(--muted) / .8)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-red-500\/20:hover{background-color:#ef444433}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-blue-400:hover{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-destructive-foreground:hover{color:hsl(var(--destructive-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.hover\:text-green-400:hover{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-sm:hover{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-border:focus{border-color:hsl(var(--border))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-red-500\/10:focus{background-color:#ef44441a}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-red-500:focus{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-ring\/30:focus{--tw-ring-color: hsl(var(--ring) / .3)}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:bg-muted-foreground\/10:focus-visible{background-color:hsl(var(--muted-foreground) / .1)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:bg-accent:active{background-color:hsl(var(--accent))}.active\:bg-blue-500\/10:active{background-color:#3b82f61a}.active\:bg-blue-500\/80:active{background-color:#3b82f6cc}.active\:text-blue-400:active{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.active\:text-foreground:active{color:hsl(var(--foreground))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.disabled\:hover\:text-muted-foreground:hover:disabled{color:hsl(var(--muted-foreground))}.group:hover .group-hover\:opacity-100{opacity:1}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[orientation\=horizontal\]\:inline-flex[data-orientation=horizontal]{display:inline-flex}.data-\[state\=inactive\]\:hidden[data-state=inactive]{display:none}.data-\[orientation\=horizontal\]\:h-10[data-orientation=horizontal]{height:2.5rem}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[orientation\=horizontal\]\:items-center[data-orientation=horizontal],.data-\[orientation\=vertical\]\:items-center[data-orientation=vertical]{align-items:center}.data-\[orientation\=vertical\]\:justify-start[data-orientation=vertical]{justify-content:flex-start}.data-\[orientation\=horizontal\]\:justify-center[data-orientation=horizontal]{justify-content:center}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[orientation\=horizontal\]\:px-3[data-orientation=horizontal]{padding-left:.75rem;padding-right:.75rem}.data-\[orientation\=horizontal\]\:py-1\.5[data-orientation=horizontal]{padding-top:.375rem;padding-bottom:.375rem}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.prose-code\:text-foreground :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){color:hsl(var(--foreground))}.prose-pre\:border :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-pre\:border-border :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){border-color:hsl(var(--border))}.prose-pre\:bg-muted :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:hsl(var(--muted))}.dark\:border-blue-500\/25:is(.dark *){border-color:#3b82f640}.dark\:border-white\/15:is(.dark *){border-color:#ffffff26}.dark\:bg-blue-500\/15:is(.dark *){background-color:#3b82f626}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.dark\:bg-muted-foreground\/10:is(.dark *){background-color:hsl(var(--muted-foreground) / .1)}.dark\:bg-white\/10:is(.dark *){background-color:#ffffff1a}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-400:is(.dark *){--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.dark\:text-emerald-400:is(.dark *){--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.dark\:text-pink-400:is(.dark *){--tw-text-opacity: 1;color:rgb(244 114 182 / var(--tw-text-opacity, 1))}.dark\:text-purple-300:is(.dark *){--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity, 1))}.dark\:text-purple-400:is(.dark *){--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-blue-500\/25:hover:is(.dark *){background-color:#3b82f640}.dark\:hover\:bg-muted-foreground\/20:hover:is(.dark *){background-color:hsl(var(--muted-foreground) / .2)}.dark\:hover\:bg-white\/20:hover:is(.dark *){background-color:#fff3}@media (min-width: 640px){.sm\:inline{display:inline}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-xl{border-radius:.75rem}.sm\:text-left{text-align:left}}@media (min-width: 768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:opacity-0{opacity:0}.md\:focus-visible\:opacity-100:focus-visible{opacity:1}.group:hover .md\:group-hover\:opacity-100{opacity:1}}@media (min-width: 1024px){.lg\:block{display:block}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.\[\&\>div\]\:\!block>div{display:block!important}.\[\&\>div\]\:\!w-full>div{width:100%!important}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&_a\]\:text-blue-400 a{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.\[\&_code\]\:rounded code{border-radius:.25rem}.\[\&_code\]\:px-1 code{padding-left:.25rem;padding-right:.25rem}.\[\&_code\]\:text-xs code{font-size:.75rem;line-height:1rem}.\[\&_h1\]\:text-base h1{font-size:1rem;line-height:1.5rem}.\[\&_h2\]\:text-sm h2,.\[\&_h3\]\:text-sm h3{font-size:.875rem;line-height:1.25rem}.\[\&_hr\]\:my-2 hr{margin-top:.5rem;margin-bottom:.5rem}.\[\&_ol\]\:my-1 ol,.\[\&_p\]\:my-1 p,.\[\&_pre\]\:my-1 pre{margin-top:.25rem;margin-bottom:.25rem}.\[\&_pre\]\:max-w-full pre{max-width:100%}.\[\&_pre\]\:overflow-x-auto pre{overflow-x:auto}.\[\&_pre\]\:rounded pre{border-radius:.25rem}.\[\&_pre\]\:p-2 pre{padding:.5rem}.\[\&_pre\]\:text-xs pre,.\[\&_table\]\:text-xs table{font-size:.75rem;line-height:1rem}.\[\&_ul\]\:my-1 ul{margin-top:.25rem;margin-bottom:.25rem}
|