wizards 0.2.3 → 0.2.5

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.
Files changed (48) hide show
  1. package/apps/runtime/dist/db/client.js +24 -3
  2. package/apps/runtime/dist/index.js +6 -0
  3. package/apps/runtime/dist/routes/api.js +13 -2
  4. package/apps/runtime/dist/routes/studio.js +11 -3
  5. package/apps/runtime/dist/services/cloud.js +84 -3
  6. package/apps/runtime/dist/services/files.js +50 -1
  7. package/apps/runtime/dist/services/profile.js +18 -3
  8. package/apps/runtime/dist/services/spaces.js +91 -85
  9. package/apps/runtime/dist/update.js +3 -3
  10. package/apps/web/dist/assets/Account-BKribBzW.js +1 -0
  11. package/apps/web/dist/assets/{ChangelogDialog-CbZBUMRu.js → ChangelogDialog-CYQC4l57.js} +1 -1
  12. package/apps/web/dist/assets/{ChatPanel-zurtfj6A.js → ChatPanel-Cnd_dfF2.js} +1 -1
  13. package/apps/web/dist/assets/{CreditsDialog-BewZHZTR.js → CreditsDialog-7nLXWFvP.js} +1 -1
  14. package/apps/web/dist/assets/EditorPage-BjFAF_4T.js +2 -0
  15. package/apps/web/dist/assets/{FlowPreview-DHrhPps0.js → FlowPreview-BT4i-qIF.js} +1 -1
  16. package/apps/web/dist/assets/HomePage-F04N9Y1Q.js +1 -0
  17. package/apps/web/dist/assets/{ImportWizard-CKjVJMaG.js → ImportWizard-Cg0l6q88.js} +1 -1
  18. package/apps/web/dist/assets/{LocalRuntime-Brkvbzzg.js → LocalRuntime-BoVnl1ga.js} +2 -2
  19. package/apps/web/dist/assets/NewWizardPage-DumPEWtE.js +2 -0
  20. package/apps/web/dist/assets/{PublicRunner-Bn1g6HG9.js → PublicRunner-CllgpTeL.js} +1 -1
  21. package/apps/web/dist/assets/{RunnerView-CO1Nk3jn.js → RunnerView-adkYnOSi.js} +1 -1
  22. package/apps/web/dist/assets/SettingsPage-7EG_dMSP.js +2 -0
  23. package/apps/web/dist/assets/{SetupPage-BvLwZH9i.js → SetupPage-BzZMf7Oz.js} +1 -1
  24. package/apps/web/dist/assets/{SharePage-CDESJ11B.js → SharePage-CONXJnOU.js} +1 -1
  25. package/apps/web/dist/assets/{api-9sHuNTkp.js → api-BC3K8Na8.js} +1 -1
  26. package/apps/web/dist/assets/changelog-C0GmxRP2.js +1 -0
  27. package/apps/web/dist/assets/cloud-off-D--dZLDw.js +1 -0
  28. package/apps/web/dist/assets/index-CJ3iuK8-.js +10 -0
  29. package/apps/web/dist/assets/index-mpjxO44v.css +1 -0
  30. package/apps/web/dist/assets/{meta-B4mZqEso.js → meta-BeYxDfVN.js} +1 -1
  31. package/apps/web/dist/assets/{outputs-boPx5ngv.js → outputs-DLmQMIUm.js} +1 -1
  32. package/apps/web/dist/assets/{session-CJGuo1Tv.js → session-_w8H5O_d.js} +1 -1
  33. package/apps/web/dist/assets/type-DnfgUhpM.js +1 -0
  34. package/apps/web/dist/assets/ui-Cj3EzOCA.js +1 -0
  35. package/apps/web/dist/assets/upload-DNRENWzQ.js +1 -0
  36. package/apps/web/dist/index.html +6 -5
  37. package/apps/web/dist/mcp/flow.html +2 -2
  38. package/package.json +1 -1
  39. package/apps/web/dist/assets/EditorPage-B7ZOoW5h.js +0 -2
  40. package/apps/web/dist/assets/HomePage-CBvWxXsq.js +0 -1
  41. package/apps/web/dist/assets/NewWizardPage-B3XePMlp.js +0 -2
  42. package/apps/web/dist/assets/SettingsPage-BIY4kHZl.js +0 -2
  43. package/apps/web/dist/assets/changelog-Cto0j5-V.js +0 -1
  44. package/apps/web/dist/assets/index-CIwJmOjo.css +0 -1
  45. package/apps/web/dist/assets/index-VsRgvimv.js +0 -10
  46. package/apps/web/dist/assets/type-BMJpS6_D.js +0 -1
  47. package/apps/web/dist/assets/ui-iTYHqwvY.js +0 -1
  48. package/apps/web/dist/assets/upload--J5bZhEM.js +0 -1
@@ -1,2 +0,0 @@
1
- import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{O as r,S as i,c as a,d as o,i as s,j as c,k as l,n as u,nt as d,w as f}from"./api-9sHuNTkp.js";import{d as p,l as m,o as h,s as g,t as _}from"./session-CJGuo1Tv.js";import{t as v}from"./createLucideIcon-q3MZMmnf.js";import{n as y,t as ee}from"./plug-CLjyCoHB.js";import{t as te}from"./arrow-right-6FyN3e7D.js";import{D as b,E as ne,S as x,T as re,r as ie,w as ae,x as oe,y as S}from"./outputs-boPx5ngv.js";import{t as C}from"./check-CUpby_J9.js";import{n as w,r as se,t as ce}from"./wand-sparkles-CKxArWPY.js";import{a as le,r as ue,t as de}from"./ChatPanel-zurtfj6A.js";import{a as fe,i as pe,n as me,r as he,t as ge}from"./type-BMJpS6_D.js";import{n as _e,t as T}from"./plus-Du-Jx8aI.js";import{t as E}from"./external-link-MAL7vJYj.js";import{n as ve}from"./mic-Bvz4mA2j.js";import{p as ye}from"./definition-DndaH5Ow.js";import{t as be}from"./upload--J5bZhEM.js";import{_ as D,a as xe,c as O,d as k,f as Se,h as A,i as j,m as M,n as N,o as P,p as Ce,r as F,s as I,t as L,u as we,y as R}from"./ui-iTYHqwvY.js";import{a as Te,c as Ee,i as De,o as Oe,r as ke,s as Ae,u as je}from"./index-VsRgvimv.js";import{o as z,r as B,t as Me}from"./LocalRuntime-Brkvbzzg.js";import{ProjectSwitcher as Ne}from"./HomePage-CBvWxXsq.js";var Pe={name:`calendar`,size:24,node:[[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}],[`path`,{d:`M3 9h18`,key:`1pudct`}]]};Pe.node;var Fe=v(Pe),Ie={name:`cloud`,size:24,node:[[`path`,{d:`M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z`,key:`p7xjir`}]]};Ie.node;var Le=v(Ie),Re={name:`file-spreadsheet`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M8 13h2`,key:`yr2amv`}],[`path`,{d:`M14 13h2`,key:`un5t4a`}],[`path`,{d:`M8 17h2`,key:`2yhykz`}],[`path`,{d:`M14 17h2`,key:`10kma7`}]]};Re.node;var ze=v(Re),Be={name:`hard-drive`,size:24,node:[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]};Be.node;var Ve=v(Be),He={name:`hash`,size:24,node:[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`,key:`4lhtct`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`,key:`vyu0kd`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`,key:`1ggp8o`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`,key:`weycgp`}]]};He.node;var Ue=v(He),We={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};We.node;var Ge=v(We),Ke={name:`layout-grid`,size:24,node:[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]};Ke.node;var qe=v(Ke),Je={name:`list`,size:24,node:[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]};Je.node;var Ye=v(Je),Xe={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};Xe.node;var Ze=v(Xe),Qe={name:`music`,size:24,node:[[`path`,{d:`M9 18V5l12-2v13`,key:`1jmyc2`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`circle`,{cx:`18`,cy:`16`,r:`3`,key:`1hluhg`}]]};Qe.node;var $e=v(Qe),et={name:`phone`,size:24,node:[[`path`,{d:`M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384`,key:`9njp5v`}]]};et.node;var tt=v(et),nt={name:`rotate-cw`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]};nt.node;var rt=v(nt),it={name:`text-align-start`,size:24,node:[[`path`,{d:`M21 5H3`,key:`1fi0y6`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M17 19H3`,key:`z6ezky`}]],aliases:[`text`,`align-left`]};it.node;var at=v(it),ot={name:`toggle-left`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`3`,key:`u3jwor`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`7`,key:`g7kal2`}]]};ot.node;var st=v(ot),ct={name:`wrench`,size:24,node:[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]};ct.node;var lt=v(ct),V=e(t(),1),H=e(n(),1);function U({title:e,hint:t,save:n,action:r,locked:i,children:a}){return(0,H.jsxs)(`section`,{className:`flex flex-col gap-2.5`,children:[(0,H.jsxs)(`div`,{className:`flex items-start justify-between gap-4 px-1`,children:[(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsx)(`h2`,{className:`font-display font-semibold text-lg leading-tight`,children:e}),n?.state===`saving`?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-[12px] text-ink-3`,children:[(0,H.jsx)(k,{className:`size-3`}),` `,R(`project.saving`)]}):n?.state===`saved`?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[12px] text-moss`,children:[(0,H.jsx)(C,{className:`size-3.5`}),` `,R(`settings.saved`)]}):null]}),t?(0,H.jsx)(`p`,{className:`mt-1 text-[14px] text-ink-3 leading-snug`,children:t}):null]}),r?(0,H.jsx)(`div`,{className:`shrink-0`,children:r}):null]}),(0,H.jsxs)(N,{className:`p-5`,children:[i?(0,H.jsx)(`fieldset`,{disabled:!0,className:`min-w-0`,children:a}):a,n?.state===`error`&&n.error?(0,H.jsx)(`p`,{className:`mt-4 text-[14px] text-rose`,children:n.error}):null]})]})}function ut({children:e,layout:t,onToggle:n}){return(0,H.jsxs)(`div`,{className:`mb-3 flex items-start gap-2`,children:[(0,H.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,H.jsx)(`div`,{className:`w-56 max-w-full transition-[width] duration-200 focus-within:w-full has-[input:not(:placeholder-shown)]:w-full`,children:e})}),(0,H.jsx)(P,{label:R(t===`list`?`project.viewCards`:`project.viewList`),onClick:n,children:t===`list`?(0,H.jsx)(qe,{className:`size-4`}):(0,H.jsx)(Ye,{className:`size-4`})})]})}function dt({value:e,onChange:t,onEnter:n,placeholder:r,busy:i}){return(0,H.jsxs)(`div`,{className:`relative`,children:[(0,H.jsx)(he,{className:`-translate-y-1/2 pointer-events-none absolute top-1/2 left-3 size-4 text-ink-4`}),(0,H.jsx)(`input`,{type:`search`,value:e,placeholder:r,onChange:e=>t(e.target.value),onKeyDown:e=>e.key===`Enter`&&n?.(),className:`h-9 w-full rounded-lg border border-input bg-card pr-3 pl-9 text-[14px] text-ink outline-none transition placeholder:text-ink-4 focus:border-focus focus:ring-4 focus:ring-focus-glow`}),i?(0,H.jsx)(k,{className:`-translate-y-1/2 absolute top-1/2 right-3 size-4 text-ink-3`}):null]})}function W({onFiles:e,accept:t,multiple:n=!0,className:r,children:i}){return(0,H.jsxs)(`label`,{onDragOver:e=>{e.preventDefault(),e.currentTarget.dataset.over=`1`},onDragLeave:e=>{delete e.currentTarget.dataset.over},onDrop:t=>{t.preventDefault(),delete t.currentTarget.dataset.over;let r=Array.from(t.dataTransfer.files);r.length&&e(n?r:r.slice(0,1))},className:A(`flex cursor-pointer items-center justify-center gap-2 rounded-lg border border-input border-dashed text-[14px] text-ink-3 transition focus-within:border-focus focus-within:ring-4 focus-within:ring-focus-glow hover:border-ink-4 hover:text-ink data-[over]:border-focus data-[over]:bg-paper-2 data-[over]:text-ink`,r),children:[i,(0,H.jsx)(`input`,{className:`sr-only`,type:`file`,accept:t,multiple:n,onChange:t=>{let n=Array.from(t.target.files??[]);t.target.value=``,n.length&&e(n)}})]})}function ft(){let e=Ee(),[t,n]=(0,V.useState)(null),[r,i]=(0,V.useState)(null),a=async e=>{n(e??`*`),i(null);try{await Ae(e)}catch(e){i(e.message)}finally{n(null)}};return(0,H.jsxs)(U,{title:R(`plugins.title`),hint:e.canReload?R(`plugins.hint`):R(`plugins.hintManaged`),action:e.canReload?(0,H.jsx)(L,{variant:`secondary`,busy:t===`*`,onClick:()=>void a(),children:R(`plugins.rescan`)}):null,children:[(0,H.jsxs)(`ul`,{className:`divide-y divide-border-soft`,children:[e.plugins.map(n=>{let r=e.failed[n.id];return(0,H.jsxs)(`li`,{className:`flex items-start gap-4 py-4 first:pt-0 last:pb-0`,children:[(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2.5 gap-y-1`,children:[(0,H.jsx)(`span`,{className:`font-medium text-[15px]`,children:n.name}),n.name===n.id?null:(0,H.jsxs)(`span`,{className:`font-mono text-[12px] text-ink-4`,children:[n.id,` · `,n.version]})]}),n.description?(0,H.jsx)(`p`,{className:`mt-0.5 text-[14px] text-ink-3`,children:n.description}):null,n.tools.length?(0,H.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5 text-[12px] text-ink-3`,children:[R(`plugins.tools`),n.tools.map(e=>(0,H.jsx)(F,{children:e.id},e.id))]}):null,n.error?(0,H.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:R(`plugins.serverFailed`,{error:n.error})}):null,r?(0,H.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:R(`plugins.studioFailed`,{error:r})}):null]}),e.canReload?(0,H.jsx)(P,{label:R(`plugins.reload`),disabled:t!==null,onClick:()=>void a(n.id),children:(0,H.jsx)(rt,{className:t===n.id?`size-4 animate-spin`:`size-4`})}):null]},n.id)}),e.problems.map(e=>(0,H.jsxs)(`li`,{className:`py-4 first:pt-0 last:pb-0`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2.5 gap-y-1`,children:[(0,H.jsx)(F,{tone:`warn`,children:R(`plugins.problems`)}),(0,H.jsx)(`span`,{className:`break-all font-mono text-[12px] text-ink-3`,children:e.path})]}),(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:e.message})]},e.path))]}),r?(0,H.jsx)(`p`,{className:`mt-4 text-[13px] text-rose`,children:r}):null]})}var pt=e=>[`project-files`,e];function mt(e){return c({queryKey:pt(e),queryFn:()=>u.get(`/api/studio/projects/${e}/files`),refetchInterval:e=>e.state.data?.files.some(e=>e.status===`pending`)?2e3:!1})}function G(e,t){return a(`/api/studio/projects/${e}/files/${t}/content`)}function K(e,t=!1){let n=d(),[r,i]=(0,V.useState)(!1),[a,o]=(0,V.useState)(null),s=()=>n.invalidateQueries({queryKey:pt(e)}),c=async e=>{o(null);try{await e()}catch(e){o(e.message)}finally{await s()}};return{busy:r,error:a,readOnly:t,upload:async(t,n)=>{i(!0),await c(async()=>{for(let r of n)await u.upload(`/api/studio/projects/${e}/files?kind=${t}`,r),await s()}),i(!1)},describe:(t,n)=>c(()=>u.patch(`/api/studio/projects/${e}/files/${t}`,{description:n})),remove:t=>c(()=>u.del(`/api/studio/projects/${e}/files/${t}`)),reindex:t=>c(()=>u.post(`/api/studio/projects/${e}/files/${t}/reindex`)),order:(t,n)=>c(()=>u.put(`/api/studio/projects/${e}/files/order`,{kind:t,ids:n}))}}function ht(e,t){let n=`wz.layout.${e}`,[r,i]=(0,V.useState)(()=>{try{let e=localStorage.getItem(n);return e===`list`||e===`cards`?e:t}catch{return t}});return[r,()=>i(e=>{let t=e===`list`?`cards`:`list`;try{localStorage.setItem(n,t)}catch{}return t})]}function q(e,t,n=700){let[r,i]=(0,V.useState)(`idle`),[a,o]=(0,V.useState)(null),s=JSON.stringify(e),c=(0,V.useRef)(s),l=(0,V.useRef)({value:e,json:s,save:t});l.current={value:e,json:s,save:t};let u=(0,V.useRef)(Promise.resolve()),d=(0,V.useCallback)(()=>{let e=l.current;e.json!==c.current&&(c.current=e.json,i(`saving`),u.current=u.current.then(async()=>{try{await e.save(e.value),o(null),i(`saved`)}catch(e){c.current=``,o(e.message),i(`error`)}}))},[]);return(0,V.useEffect)(()=>{if(s===c.current)return;let e=setTimeout(d,n);return()=>clearTimeout(e)},[s,n,d]),(0,V.useEffect)(()=>d,[d]),{state:r,error:a}}function gt(e){return e<1e6?`${Math.max(1,Math.round(e/1e3))} KB`:`${(e/1e6).toFixed(1)} MB`}var _t=`mt-1.5 text-[13px] text-ink-3`;function vt(e){let t=d(),[n,r]=(0,V.useState)(!1),i=p({mutationFn:e=>u.post(`/api/studio/account/link`,e),onSuccess:({url:e})=>{B(e),r(!0)}});return(0,V.useEffect)(()=>{if(!n)return;let e=setInterval(()=>void t.invalidateQueries({queryKey:[`me`]}),2e3),i=setTimeout(()=>r(!1),3e5);return()=>{clearInterval(e),clearTimeout(i)}},[n,t]),(0,V.useEffect)(()=>{e&&r(!1)},[e]),{link:i,waiting:n}}function yt({link:e,waiting:t}){return e.isError?(0,H.jsx)(`p`,{className:`text-[13px] text-rose`,children:R(`local.accountFailed`)}):t?(0,H.jsxs)(`p`,{className:`flex items-center gap-2 text-[13px] text-ink-3`,children:[(0,H.jsx)(k,{className:`size-3.5`}),` `,R(`local.accountWaiting`)]}):null}function bt(){let e=vt(!1),{link:t}=e,[n,r]=(0,V.useState)(``);return(0,H.jsxs)(`div`,{className:`flex flex-col divide-y divide-border-soft`,children:[(0,H.jsxs)(`div`,{className:`flex items-start gap-4 py-5 first:pt-0 last:pb-0`,children:[(0,H.jsx)(`div`,{className:`flex size-11 shrink-0 items-center justify-center rounded-full bg-paper-2 text-ink-2`,children:(0,H.jsx)(Ve,{className:`size-5`})}),(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(`div`,{className:`font-medium text-[15px]`,children:R(`account.local`)}),(0,H.jsx)(`p`,{className:`mt-1 text-[14px] text-ink-3 leading-relaxed`,children:R(`account.localText`)})]})]}),z.account?(0,H.jsxs)(`div`,{className:`flex flex-col gap-4 py-5 last:pb-0`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`font-medium text-[15px]`,children:R(`account.with`)}),(0,H.jsxs)(`ul`,{className:`mt-2 flex flex-col gap-2 text-[14px] text-ink-2 leading-snug`,children:[(0,H.jsxs)(`li`,{className:`flex items-start gap-2.5`,children:[(0,H.jsx)(fe,{className:`mt-0.5 size-4 shrink-0 text-amber`}),R(`account.withCredits`)]}),(0,H.jsxs)(`li`,{className:`flex items-start gap-2.5`,children:[(0,H.jsx)(Le,{className:`mt-0.5 size-4 shrink-0 text-cobalt`}),R(`account.withCloud`)]})]})]}),(0,H.jsx)(`div`,{children:(0,H.jsx)(L,{busy:t.isPending&&!t.variables?.signup,onClick:()=>t.mutate({}),children:R(`account.signIn`)})})]}):null,z.account?(0,H.jsxs)(`form`,{className:`flex flex-col gap-3 py-5 last:pb-0`,onSubmit:e=>{e.preventDefault(),t.mutate({signup:!0,code:n.trim()||void 0})},children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`font-medium text-[15px]`,children:R(`account.new`)}),(0,H.jsx)(`p`,{className:`mt-1 text-[14px] text-ink-3 leading-relaxed`,children:R(`account.newHint`)})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(I,{value:n,maxLength:64,autoComplete:`off`,spellCheck:!1,placeholder:R(`account.code`),"aria-label":R(`account.code`),onChange:e=>r(e.target.value),className:`w-56 font-mono text-[14px]`}),(0,H.jsx)(L,{type:`submit`,variant:`secondary`,className:`h-11`,busy:t.isPending&&!!t.variables?.signup,children:R(`account.create`)})]}),(0,H.jsx)(yt,{...e})]}):null]})}var xt={start:`account.kind.start`,monthly:`account.kind.monthly`,gift:`account.kind.gift`};function St(e){try{return new URL(e).host}catch{return e}}function Ct({account:e}){let t=d(),n=vt(e.signedIn),r=p({mutationFn:()=>u.del(`/api/studio/account`),onSuccess:()=>t.invalidateQueries({queryKey:[`me`]})}),i=new Intl.DateTimeFormat(D,{dateStyle:`medium`});return(0,H.jsxs)(`div`,{className:`flex flex-col divide-y divide-border-soft`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-3 py-5 first:pt-0`,children:[(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`truncate font-medium text-[15px]`,children:e.name||e.email}),e.signedIn?(0,H.jsx)(F,{tone:`live`,children:R(`account.linked`)}):null]}),(0,H.jsx)(`div`,{className:`truncate text-[14px] text-ink-3`,children:e.email})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,H.jsxs)(L,{variant:`secondary`,onClick:()=>B(e.url),children:[R(`setup.openAccount`),` `,(0,H.jsx)(E,{className:`size-4`})]}),(0,H.jsxs)(L,{variant:`ghost`,busy:r.isPending,onClick:()=>r.mutate(),children:[(0,H.jsx)(je,{className:`size-4`}),` `,R(`nav.logout`)]})]})]}),e.signedIn?null:(0,H.jsxs)(`div`,{className:`flex flex-col gap-3 py-5`,children:[(0,H.jsx)(`p`,{className:`text-[14px] text-ink-2`,children:R(`local.accountExpired`)}),(0,H.jsx)(`div`,{children:(0,H.jsx)(L,{busy:n.link.isPending,onClick:()=>n.link.mutate({}),children:R(`account.signInAgain`)})}),(0,H.jsx)(yt,{...n})]}),e.credits===null?null:(0,H.jsxs)(`div`,{className:`py-5`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-3`,children:[(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`div`,{className:`text-[13px] text-ink-3`,children:R(`account.credits`)}),(0,H.jsx)(`div`,{className:`font-display font-semibold text-[22px] tabular-nums leading-tight`,children:R(`nav.credits`,{n:Math.floor(e.credits).toLocaleString()})})]}),(0,H.jsxs)(L,{variant:`secondary`,onClick:()=>B(`${e.url}/billing`),children:[R(`account.topUp`),` `,(0,H.jsx)(E,{className:`size-4`})]})]}),e.expiring.length?(0,H.jsx)(`ul`,{className:`mt-3 flex flex-col gap-1 text-[13px] text-ink-3 tabular-nums`,children:e.expiring.map(e=>(0,H.jsxs)(`li`,{children:[R(`account.expires`,{n:Math.floor(e.credits).toLocaleString(),date:i.format(new Date(e.expiresAt))}),xt[e.kind]?(0,H.jsxs)(`span`,{className:`text-ink-4`,children:[` · `,R(xt[e.kind])]}):null]},`${e.kind}:${e.expiresAt}`))}):null]}),(0,H.jsxs)(`div`,{className:`flex items-start gap-2.5 py-5 text-[14px] text-ink-2 leading-snug last:pb-0`,children:[(0,H.jsx)(Le,{className:`mt-0.5 size-4 shrink-0 text-cobalt`}),(0,H.jsx)(`p`,{children:R(`account.cloud`,{host:St(e.cloudUrl)})})]})]})}function wt({me:e}){let t=d(),n=e.mode===`managed`,[r,i]=(0,V.useState)(e.profile),a=e=>i(t=>({...t,...e})),o=q(r,async e=>{await u.put(`/api/studio/profile`,e),await t.invalidateQueries({queryKey:[`me`]})});return(0,H.jsxs)(`div`,{className:`flex flex-col gap-9`,children:[(0,H.jsx)(U,{title:R(`account.title`),hint:R(`account.hint`),save:o,children:(0,H.jsxs)(`div`,{className:`flex flex-col gap-6 sm:flex-row sm:gap-8`,children:[(0,H.jsxs)(`div`,{className:`flex shrink-0 flex-col items-center gap-2 sm:w-32`,children:[(0,H.jsx)(`div`,{className:`flex size-20 items-center justify-center overflow-hidden rounded-full bg-ember-tint font-semibold text-[28px] text-ember-strong ring-1 ring-border-soft`,children:e.user.image?(0,H.jsx)(`img`,{src:e.user.image,alt:``,className:`size-full object-cover`}):_(r.name)||`?`}),(0,H.jsx)(`p`,{className:`text-center text-[12px] text-ink-3 leading-snug`,children:R(`account.initials`)})]}),(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-5`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`account.name`)}),(0,H.jsx)(I,{value:r.name,maxLength:80,disabled:n,onChange:e=>a({name:e.target.value})}),(0,H.jsx)(`p`,{className:_t,children:R(n?`account.fromAccount`:`account.nameHint`)})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`account.about`)}),(0,H.jsx)(M,{minRows:3,maxLength:2e3,value:r.about,onChange:e=>a({about:e.target.value})}),(0,H.jsx)(`p`,{className:_t,children:R(`account.aboutHint`)})]}),(0,H.jsxs)(`div`,{className:`grid gap-5 sm:grid-cols-2`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`account.email`)}),(0,H.jsx)(I,{type:`email`,value:r.email,maxLength:200,disabled:n,onChange:e=>a({email:e.target.value})})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`account.phone`)}),(0,H.jsx)(I,{type:`tel`,value:r.phone,maxLength:40,onChange:e=>a({phone:e.target.value})})]})]})]})]})}),(0,H.jsx)(U,{title:R(`account.connection`),hint:R(`account.connectionHint`),children:n?(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`truncate font-medium text-[15px]`,children:e.user.name}),(0,H.jsx)(F,{tone:`live`,children:R(`account.linked`)})]}),(0,H.jsx)(`div`,{className:`truncate text-[14px] text-ink-3`,children:e.user.email})]}),e.manageUrl?(0,H.jsxs)(L,{variant:`secondary`,onClick:()=>B(`${e.manageUrl}/account`),children:[R(`setup.openAccount`),` `,(0,H.jsx)(E,{className:`size-4`})]}):null]}):e.account?(0,H.jsx)(Ct,{account:e.account}):(0,H.jsx)(bt,{})}),(0,H.jsx)(U,{title:R(`account.look`),hint:R(`account.lookHint`),children:(0,H.jsxs)(`div`,{className:`flex flex-col divide-y divide-border-soft`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4 pb-4`,children:[(0,H.jsx)(`span`,{className:`font-medium text-[14px]`,children:R(`nav.language`)}),(0,H.jsx)(Te,{tone:`surface`})]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4 pt-4`,children:[(0,H.jsx)(`span`,{className:`font-medium text-[14px]`,children:R(`nav.theme`)}),(0,H.jsx)(ke,{})]})]})})]})}function Tt({connector:e}){let[t,n]=(0,V.useState)(!1);return(0,H.jsxs)(`div`,{className:`rounded-lg bg-paper ring-1 ring-border-soft`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-3 px-3 py-2 text-left`,children:[(0,H.jsx)(`span`,{className:A(`size-2 shrink-0 rounded-full`,e.usable?`bg-moss`:`bg-ink-4`)}),(0,H.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-[13px]`,children:[e.name,` `,(0,H.jsx)(`span`,{className:`font-mono text-[11px] text-ink-4`,children:e.id})]}),(0,H.jsx)(`span`,{className:`shrink-0 text-[12px] text-ink-3`,children:e.usable?R(`connectors.actions`,{n:e.actions.length,r:e.actions.filter(e=>e.group===`read`).length}):R(`connectors.notSetUp`)})]}),t?(0,H.jsxs)(`div`,{className:`border-border-soft border-t px-3 py-2 text-[12px]`,children:[e.missingSetup?(0,H.jsxs)(`p`,{className:`mb-1 text-ink-3`,children:[R(`connectors.setup`),` `,(0,H.jsx)(`span`,{className:`font-mono text-ink-2`,children:e.missingSetup})]}):null,(0,H.jsx)(`p`,{className:`text-ink-4`,children:e.actions.map(e=>e.group===`read`?e.id:`${e.id} (${R(`connectors.group.${e.group}`)})`).join(` · `)})]}):null]})}var Et={none:`connectors.authNone`,oauth2:`connectors.authOauth`,api_key:`connectors.authKey`};function Dt({projectId:e,connector:t,readOnly:n}){let r=d(),[i,a]=(0,V.useState)(!1),o=()=>r.invalidateQueries({queryKey:[`connectors`,e]}),s=`/api/studio/projects/${e}/connectors/${t.id}`,c=p({mutationFn:()=>u.post(`${s}/refresh`),onSuccess:o}),l=p({mutationFn:()=>u.del(s),onSuccess:o}),f=t.actions.filter(e=>e.group===`read`).length;return(0,H.jsxs)(`div`,{className:`rounded-lg bg-paper ring-1 ring-border-soft`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-3 p-3`,children:[(0,H.jsx)(`div`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-paper-2 text-ink-2`,children:(0,H.jsx)(ee,{className:`size-4`})}),(0,H.jsxs)(`button`,{type:`button`,onClick:()=>a(e=>!e),className:`min-w-0 flex-1 text-left`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`truncate font-medium text-[14px]`,children:t.name}),(0,H.jsx)(`span`,{className:`font-mono text-[11px] text-ink-4`,children:t.id})]}),(0,H.jsxs)(`div`,{className:`truncate text-[12px] text-ink-3`,children:[t.domain,` · `,t.sourceKind===`mcp`?`MCP`:`OpenAPI`,` ·`,` `,R(Et[t.auth]),` ·`,` `,t.toolsPending?R(`connectors.pending`):R(`connectors.actions`,{n:t.actions.length,r:f})]})]}),n?null:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(P,{label:R(`connectors.refresh`),onClick:()=>c.mutate(),children:c.isPending?(0,H.jsx)(k,{className:`size-4`}):(0,H.jsx)(ye,{className:`size-4`})}),(0,H.jsx)(P,{label:R(`connectors.remove`),className:`hover:text-rose`,onClick:()=>confirm(`${t.name}: ${R(`connectors.remove`)}?`)&&l.mutate(),children:(0,H.jsx)(S,{className:`size-4`})})]})]}),t.needsOAuthClient?(0,H.jsx)(`p`,{className:`border-border-soft border-t px-3 py-2 text-[12px] text-rose`,children:R(`connectors.needsClient`)}):null,c.error??l.error?(0,H.jsx)(`p`,{className:`border-border-soft border-t px-3 py-2 text-[12px] text-rose`,children:(c.error??l.error).message}):null,i&&t.actions.length?(0,H.jsx)(`ul`,{className:`max-h-64 overflow-y-auto border-border-soft border-t px-3 py-2`,children:t.actions.map(e=>(0,H.jsxs)(`li`,{className:`flex items-baseline gap-2 py-1 text-[12px]`,children:[(0,H.jsx)(`span`,{className:A(`w-14 shrink-0 text-[11px] uppercase tracking-wide`,e.group===`read`?`text-moss`:e.group===`write`?`text-ink-3`:`text-rose`),children:R(`connectors.group.${e.group}`)}),(0,H.jsx)(`span`,{className:`shrink-0 font-mono text-ink-2`,children:e.id}),(0,H.jsx)(`span`,{className:`min-w-0 truncate text-ink-4`,children:e.summary})]},e.id))}):null]})}function Ot({projectId:e,domain:t,source:n,taken:r,onDone:i}){let a=d(),[o,s]=(0,V.useState)({id:``,secret:``}),[c,l]=(0,V.useState)(!1),f=r.includes(n.suggestedId),m=p({mutationFn:()=>u.post(`/api/studio/projects/${e}/connectors`,{domain:t,sourceKind:n.sourceKind,sourceUrl:n.sourceUrl,id:n.suggestedId,toolPrefix:n.suggestedToolPrefix,...n.name?{name:n.name}:{},...o.id&&o.secret?{oauthClientId:o.id,oauthClientSecret:o.secret}:{}}),onSuccess:async t=>{await a.invalidateQueries({queryKey:[`connectors`,e]}),i(t.warnings)}});return(0,H.jsxs)(`div`,{className:`rounded-lg bg-card p-3 ring-1 ring-border-soft`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsx)(F,{tone:n.sourceKind===`mcp`?`ember`:`neutral`,children:n.sourceKind===`mcp`?`MCP`:`OpenAPI`}),(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`div`,{className:`truncate text-[13px]`,children:n.name??n.suggestedId}),(0,H.jsx)(`div`,{className:`truncate font-mono text-[11px] text-ink-4`,children:n.sourceUrl})]}),n.blocked||f?null:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>l(e=>!e),className:`text-[12px] text-ink-3 hover:text-ink`,children:R(`connectors.ownClient`)}),(0,H.jsx)(L,{size:`sm`,busy:m.isPending,onClick:()=>m.mutate(),children:R(`connectors.import`)})]})]}),n.blocked?(0,H.jsx)(`p`,{className:`mt-2 text-[12px] text-ink-3`,children:n.blocked}):null,f?(0,H.jsx)(`p`,{className:`mt-2 text-[12px] text-ink-3`,children:R(`connectors.exists`)}):null,c?(0,H.jsxs)(`div`,{className:`mt-3 grid gap-2 sm:grid-cols-2`,children:[(0,H.jsx)(I,{placeholder:`OAuth Client-ID`,value:o.id,onChange:e=>s(t=>({...t,id:e.target.value}))}),(0,H.jsx)(I,{type:`password`,autoComplete:`off`,placeholder:`OAuth Client-Secret`,value:o.secret,onChange:e=>s(t=>({...t,secret:e.target.value}))})]}):null,m.error?(0,H.jsx)(`p`,{className:`mt-2 text-[12px] text-rose`,children:m.error.message}):null]})}function kt({projectId:e,readOnly:t}){let[n,r]=(0,V.useState)(``),[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(null),[l,d]=(0,V.useState)([]),f=c({queryKey:[`connectors`,e],queryFn:()=>u.get(`/api/studio/projects/${e}/connectors`)}),m=p({mutationFn:()=>u.post(`/api/studio/connectors/search`,{query:n}),onSuccess:e=>{a(e),s(null),d([])}}),h=p({mutationFn:e=>u.get(`/api/studio/connectors/registry/${encodeURIComponent(e)}`),onSuccess:s}),g=f.data??[],_=g.filter(e=>e.sourceKind===`builtin`&&(z.unsetConnectors||e.usable)),v=g.filter(e=>e.sourceKind!==`builtin`);return(0,H.jsxs)(N,{className:`p-6`,children:[(0,H.jsx)(`h2`,{className:`font-display font-semibold text-lg`,children:R(`connectors.title`)}),(0,H.jsx)(`p`,{className:`mt-1 mb-5 text-[14px] text-ink-3`,children:R(`connectors.hint`)}),_.length?(0,H.jsx)(`div`,{className:`mb-5 grid gap-1.5 sm:grid-cols-2`,children:_.map(e=>(0,H.jsx)(Tt,{connector:e},e.id))}):null,(0,H.jsx)(`h3`,{className:`mb-2 font-medium text-[12px] text-ink-3 uppercase tracking-[0.07em]`,children:R(`connectors.imported`)}),v.length?(0,H.jsx)(`div`,{className:`mb-4 flex flex-col gap-2`,children:v.map(n=>(0,H.jsx)(Dt,{projectId:e,connector:n,readOnly:t},n.id))}):null,t?v.length?null:(0,H.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:R(`connectors.noneImported`)}):(0,H.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),n.trim()&&m.mutate()},children:[(0,H.jsx)(I,{value:n,placeholder:R(`connectors.search`),onChange:e=>r(e.target.value)}),(0,H.jsxs)(L,{type:`submit`,variant:`secondary`,busy:m.isPending,children:[(0,H.jsx)(he,{className:`size-4`}),` `,R(`connectors.find`)]})]}),m.error?(0,H.jsx)(`p`,{className:`mt-3 text-[13px] text-rose`,children:m.error.message}):null,i&&!o?(0,H.jsxs)(`div`,{className:`mt-3 flex flex-col gap-1`,children:[i.length?null:(0,H.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:R(`connectors.none`)}),i.map(e=>(0,H.jsxs)(`button`,{type:`button`,disabled:!e.kinds.length,onClick:()=>h.mutate(e.domain),className:`flex items-center gap-3 rounded-lg px-3 py-2 text-left transition hover:bg-paper-2 disabled:opacity-50`,children:[(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`div`,{className:`truncate text-[14px]`,children:e.domain}),(0,H.jsx)(`div`,{className:`truncate text-[12px] text-ink-3`,children:e.description})]}),(0,H.jsx)(`span`,{className:`text-[11px] text-ink-4 uppercase`,children:e.kinds.join(` · `)}),(0,H.jsx)(se,{className:`-rotate-90 size-4 text-ink-4`})]},e.domain)),h.isPending?(0,H.jsx)(k,{className:`mx-auto mt-2 size-4 text-ink-4`}):null,h.error?(0,H.jsx)(`p`,{className:`text-[13px] text-rose`,children:h.error.message}):null]}):null,o?(0,H.jsxs)(`div`,{className:`mt-4 flex flex-col gap-2`,children:[(0,H.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,H.jsx)(`div`,{className:`font-medium text-[14px]`,children:o.domain}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>s(null),className:`text-[12px] text-ink-3 hover:text-ink`,children:R(`run.back`)})]}),o.summary?(0,H.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:o.summary}):null,o.sources.map(t=>(0,H.jsx)(Ot,{projectId:e,domain:o.domain,source:t,taken:g.map(e=>e.id),onDone:d},`${t.sourceKind}:${t.sourceUrl}`)),o.credentials.filter(e=>e.setup||e.url).map(e=>(0,H.jsxs)(`p`,{className:`text-[12px] text-ink-3`,children:[(0,H.jsxs)(`span`,{className:`text-ink-2`,children:[e.label,`:`]}),` `,e.setup,` `,e.url?(0,H.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`text-ember underline`,children:e.url}):null]},e.label)),l.map(e=>(0,H.jsx)(`p`,{className:`text-[12px] text-ink-3`,children:e},e))]}):null]})}var J=`engenty-wizards`,At=`ENGENTY_WIZARDS_KEY`,jt=[{id:`claude-desktop`,name:`Claude Desktop`,widgets:!0},{id:`claude-code`,name:`Claude Code`,widgets:!1},{id:`codex`,name:`Codex · ChatGPT app`,widgets:!1},{id:`cursor`,name:`Cursor`,widgets:!0},{id:`vscode`,name:`VS Code (Copilot)`,widgets:!0},{id:`windsurf`,name:`Windsurf`,widgets:!1},{id:`gemini`,name:`Gemini CLI`,widgets:!1},{id:`goose`,name:`Goose`,widgets:!0},{id:`openclaw`,name:`OpenClaw`,widgets:!1},{id:`lm-studio`,name:`LM Studio`,widgets:!1},{id:`claude-ai`,name:`claude.ai`,widgets:!0,oauth:!0},{id:`chatgpt`,name:`ChatGPT`,widgets:!0,oauth:!0}];function Y({text:e}){let[t,n]=(0,V.useState)(!1);return(0,H.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg bg-paper-2 p-3`,children:[(0,H.jsx)(`code`,{className:`min-w-0 flex-1 whitespace-pre-wrap break-all font-mono text-[12px] leading-relaxed`,children:e}),(0,H.jsx)(P,{label:R(t?`settings.copied`:`settings.copy`),onClick:async()=>{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1500)},children:t?(0,H.jsx)(C,{className:`size-4`}):(0,H.jsx)(_e,{className:`size-4`})})]})}function Mt(e){try{let t=new URL(e);return t.protocol===`https:`&&!/(^|\.)localhost$/.test(t.hostname)&&!/^(127\.|10\.|192\.168\.|\[::1\])/.test(t.hostname)}catch{return!1}}function X({children:e}){return(0,H.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:e})}function Z({title:e,children:t}){return(0,H.jsxs)(`section`,{className:`flex flex-col gap-2.5 border-border-soft border-t pt-5 first:border-t-0 first:pt-0`,children:[(0,H.jsx)(`h3`,{className:`font-medium text-[15px]`,children:e}),t]})}function Q(e,t){return JSON.stringify({[e]:{[J]:t}},null,2)}function Nt({id:e,url:t,apiKey:n}){let r=n?`Authorization: Bearer ${n}`:null,i=n?{headers:{Authorization:`Bearer ${n}`}}:{};switch(e){case`claude-code`:{let e=t.replace(/\/api\/mcp$/,`/api/claude-plugin`);return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.terminal`)}),(0,H.jsx)(Y,{text:`claude mcp add --transport http --scope user ${J} ${t}${r?` --header "${r}"`:``}`}),!n&&Mt(t)?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.ccPlugin`)}),(0,H.jsx)(Y,{text:`claude plugin marketplace add ${e}/marketplace.json`}),(0,H.jsx)(Y,{text:`claude plugin install ${J}@engenty`})]}):null]})}case`codex`:return n?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.codexKey`)}),(0,H.jsx)(Y,{text:`echo 'export ${At}=${n}' >> ~/.zshrc && source ~/.zshrc`}),(0,H.jsx)(Y,{text:`codex mcp add ${J} --url ${t} --bearer-token-env-var ${At}`})]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.terminal`)}),(0,H.jsx)(Y,{text:`codex mcp add ${J} --url ${t}`}),(0,H.jsx)(Y,{text:`codex mcp login ${J}`})]});case`gemini`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.terminal`)}),(0,H.jsx)(Y,{text:`gemini mcp add --scope user --transport http ${J} ${t}${r?` -H "${r}"`:``}`})]});case`cursor`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.file`,{file:`~/.cursor/mcp.json`})}),(0,H.jsx)(Y,{text:Q(`mcpServers`,{url:t,...i})})]});case`vscode`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.vscode`)}),(0,H.jsx)(Y,{text:Q(`servers`,{type:`http`,url:t,...i})})]});case`windsurf`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.file`,{file:`~/.codeium/windsurf/mcp_config.json`})}),(0,H.jsx)(Y,{text:Q(`mcpServers`,{serverUrl:t,...i})})]});case`lm-studio`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.file`,{file:`~/.lmstudio/mcp.json`})}),(0,H.jsx)(Y,{text:Q(`mcpServers`,{url:t,...i})})]});case`claude-desktop`:case`claude-ai`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.claudeAi`)}),(0,H.jsx)(Y,{text:t})]});case`chatgpt`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.chatgpt`)}),(0,H.jsx)(Y,{text:t})]});default:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.generic`)}),(0,H.jsx)(Y,{text:t}),r?(0,H.jsx)(Y,{text:r}):null]})}}function Pt(){let e=d(),t=c({queryKey:[`api-keys`],queryFn:()=>u.get(`/api/studio/api-keys`)}),n=p({mutationFn:e=>u.del(`/api/studio/api-keys/${e}`),onSuccess:()=>e.invalidateQueries({queryKey:[`api-keys`]})});return t.data?.length?(0,H.jsxs)(`section`,{children:[(0,H.jsx)(`h2`,{className:`font-display font-semibold text-lg`,children:R(`mcp.keys`)}),(0,H.jsx)(`p`,{className:`mt-1 mb-4 text-[14px] text-ink-3`,children:R(`mcp.keysHint`)}),(0,H.jsx)(N,{className:`flex flex-col gap-2 p-3`,children:t.data.map(e=>(0,H.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg px-3 py-2`,children:[(0,H.jsx)(Ge,{className:`size-4 shrink-0 text-ink-4`}),(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`div`,{className:`truncate text-[14px]`,children:e.name}),(0,H.jsxs)(`div`,{className:`font-mono text-[11px] text-ink-4`,children:[e.start,`… ·`,` `,e.lastRequest?R(`settings.lastUsed`,{when:new Date(e.lastRequest).toLocaleString()}):R(`settings.neverUsed`)]})]}),(0,H.jsx)(P,{label:R(`settings.revoke`),onClick:()=>n.mutate(e.id),className:`hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})})]},e.id))})]}):null}function Ft({state:e,title:t,children:n}){return(0,H.jsxs)(`li`,{className:`grid grid-cols-[22px_minmax(0,1fr)] gap-x-3`,children:[(0,H.jsx)(`span`,{className:A(`mt-0.5 grid size-[22px] place-items-center rounded-full`,e===`done`&&`bg-moss text-white`,e===`now`&&`bg-amber-tint text-ink-2`,e===`later`&&`bg-paper-2 ring-1 ring-border-soft`),children:e===`done`?(0,H.jsx)(C,{className:`size-3.5`,strokeWidth:3}):e===`now`?(0,H.jsx)(k,{className:`size-3`}):null}),(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2 pb-4`,children:[(0,H.jsx)(`span`,{className:A(`text-[14px]`,e===`later`?`text-ink-3`:`font-medium`),children:t}),e===`now`?n:null]})]})}function It({widgets:e}){return(0,H.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,H.jsxs)(`div`,{className:`rounded-xl bg-paper p-4 ring-1 ring-border-soft`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 font-medium text-[14px]`,children:[(0,H.jsx)(lt,{className:`size-4 text-ember-strong`}),` MCP`]}),(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`integrate.kindMcp`)})]}),(0,H.jsxs)(`div`,{className:A(`rounded-xl p-4 ring-1`,e?`bg-paper ring-border-soft`:`bg-paper-2/60 ring-border-soft/60`),children:[(0,H.jsxs)(`div`,{className:A(`flex items-center gap-2 font-medium text-[14px]`,e?null:`text-ink-3`),children:[(0,H.jsx)(y,{className:A(`size-4`,e?`text-ember-strong`:`text-ink-4`)}),` MCP App`]}),(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(e?`integrate.kindApp`:`integrate.kindAppNo`)})]})]})}function Lt({selected:e,title:t,note:n,tone:r,widgets:i,disabled:a,onPick:o}){return(0,H.jsxs)(`button`,{type:`button`,disabled:a,onClick:o,"aria-pressed":e,className:A(`group flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-left transition`,e?`bg-card shadow-soft ring-1 ring-border-soft`:`hover:bg-accent`,a&&`cursor-default opacity-55 hover:bg-transparent`),children:[(0,H.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,H.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`truncate font-medium text-[14px]`,children:t}),i?(0,H.jsx)(`span`,{title:`MCP App`,className:`rounded bg-ember-tint px-1 font-semibold text-[10px] text-ember-strong leading-4`,children:`APP`}):null]}),n?(0,H.jsxs)(`span`,{className:A(`flex items-center gap-1 text-[12px]`,r===`done`?`text-moss`:r===`ok`?`text-ink-2`:`text-ink-4`),children:[r===`done`?(0,H.jsx)(C,{className:`size-3`,strokeWidth:3}):null,n]}):null]}),a?null:(0,H.jsx)(te,{className:A(`size-3.5 shrink-0 transition`,e?`text-ink-3`:`text-ink-4 opacity-0 group-hover:opacity-100`)})]})}function Rt({at:e,done:t}){let n=[R(`setup.stage.connect`),R(`setup.stage.test`),R(`setup.stage.done`)];return(0,H.jsx)(`ol`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 font-medium text-[11px] uppercase tracking-[0.14em]`,children:n.map((n,r)=>{let i=t||r<e;return(0,H.jsxs)(`li`,{"aria-current":!i&&r===e?`step`:void 0,className:A(`flex items-center gap-1`,i?`text-moss`:r===e?`text-ember-strong`:`text-ink-4`),children:[i?(0,H.jsx)(C,{className:`size-3`,strokeWidth:3}):null,n]},n)})})}function zt({client:e,local:t,seen:n,managed:r,url:i}){let a=d(),o=Mt(i),s=!r&&!!t&&!e.oauth,[c,l]=(0,V.useState)(s&&t?.installed!==!1?`here`:`address`),[f,m]=(0,V.useState)(null),[h,g]=(0,V.useState)(),_=p({mutationFn:t=>u.post(`/api/studio/local/apps/${e.id}`,{connect:t}),onSuccess:e=>m(e),onError:e=>m({ok:!1,message:e.message}),onSettled:()=>a.invalidateQueries({queryKey:[`local-apps`]})}),v=p({mutationFn:()=>u.post(`/api/studio/api-keys`,{name:e.name.slice(0,32)}),onSuccess:async e=>{g(e.key),await a.invalidateQueries({queryKey:[`api-keys`]})}}),y=e.oauth===!0||e.id===`claude-desktop`,ee=c===`address`&&y&&!(r&&o),te=c===`here`?!!t?.connected:r||!!h,b=!!n?.toolAt,ne=b?2:te||n?1:0,x=e=>(0,H.jsx)(Y,{text:e});return(0,H.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(Rt,{at:ne,done:b}),(0,H.jsx)(`h2`,{className:`mt-1.5 font-display font-semibold text-[26px] leading-tight tracking-tight`,children:e.name}),(0,H.jsx)(`p`,{className:`mt-1 text-[14px] text-ink-3`,children:e.widgets?R(`integrate.leadApp`):R(`integrate.leadMcp`)})]}),(0,H.jsx)(It,{widgets:e.widgets}),(0,H.jsxs)(N,{className:`flex flex-col gap-6 p-6`,children:[s||!e.oauth?(0,H.jsx)(Z,{title:R(`integrate.where`),children:(0,H.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[`here`,`address`].map(e=>{let t=e===`here`&&!s;return(0,H.jsxs)(`button`,{type:`button`,disabled:t,onClick:()=>l(e),"aria-pressed":c===e,className:A(`flex items-start gap-3 rounded-xl p-3.5 text-left ring-1 transition`,c===e?`bg-ember-tint/50 ring-ember-strong/40`:`ring-border-soft hover:bg-accent`,t&&`cursor-not-allowed opacity-50 hover:bg-transparent`),children:[e===`here`?(0,H.jsx)(Ze,{className:`mt-0.5 size-4 shrink-0 text-ink-3`}):(0,H.jsx)(pe,{className:`mt-0.5 size-4 shrink-0 text-ink-3`}),(0,H.jsxs)(`span`,{className:`min-w-0`,children:[(0,H.jsx)(`span`,{className:`block font-medium text-[14px]`,children:R(e===`here`?`integrate.here`:`integrate.address`)}),(0,H.jsx)(`span`,{className:`block text-[12px] text-ink-3`,children:R(e===`here`?r?`integrate.hereManaged`:`integrate.hereHint`:`integrate.addressHint`)})]})]},e)})})}):null,ee?(0,H.jsx)(Z,{title:R(`mcp.notHere`),children:(0,H.jsx)(X,{children:R(r?`mcp.needsPublic`:`integrate.oauthLocal`)})}):c===`here`?(0,H.jsxs)(Z,{title:R(`integrate.connectTitle`),children:[t?.installed===!1&&!t.connected?(0,H.jsx)(X,{children:R(`integrate.notInstalled`,{app:e.name})}):null,t?.connected?(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,H.jsxs)(`span`,{className:`flex items-center gap-2 text-[14px] text-ink-2`,children:[(0,H.jsx)(C,{className:`size-4 text-moss`}),R(`integrate.connected`,{app:e.name})]}),(0,H.jsx)(L,{size:`sm`,variant:`ghost`,busy:_.isPending&&_.variables===!1,onClick:()=>_.mutate(!1),children:R(`mcp.appsDisconnect`)})]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.connectHint`,{app:e.name})}),(0,H.jsx)(`div`,{children:(0,H.jsxs)(L,{busy:_.isPending,onClick:()=>_.mutate(!0),children:[(0,H.jsx)(T,{className:`size-4`}),` `,R(`integrate.connect`,{app:e.name})]})})]}),f&&!f.ok?(0,H.jsx)(`p`,{className:`text-[13px] text-rose`,children:f.message}):null,f?.snippet?(0,H.jsx)(Y,{text:f.snippet}):null,t?.where?(0,H.jsx)(`p`,{className:`font-mono text-[11px] text-ink-4`,children:t.where}):null]}):(0,H.jsxs)(H.Fragment,{children:[r||y?null:(0,H.jsx)(Z,{title:R(`mcp.keyTitle`),children:h?(0,H.jsxs)(`p`,{className:`flex items-center gap-2 text-[14px] text-ink-2`,children:[(0,H.jsx)(C,{className:`size-4 text-moss`}),` `,R(`mcp.keyReady`)]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.keyHint`)}),(0,H.jsx)(`div`,{children:(0,H.jsxs)(L,{variant:`secondary`,busy:v.isPending,onClick:()=>v.mutate(),children:[(0,H.jsx)(T,{className:`size-4`}),` `,R(`mcp.keyCreate`,{client:e.name})]})})]})}),(0,H.jsxs)(Z,{title:R(`mcp.add`),children:[r||h||y?(0,H.jsx)(Nt,{id:e.id,url:i,apiKey:h}):(0,H.jsx)(X,{children:R(`mcp.keyFirst`)}),r?(0,H.jsx)(X,{children:R(`mcp.oauth`)}):null,(0,H.jsx)(`p`,{className:`text-[12px] text-ink-4`,children:R(o?`mcp.addressPublic`:`mcp.addressLocal`)})]})]}),ee?null:(0,H.jsxs)(Z,{title:R(`integrate.test`),children:[(0,H.jsxs)(`ol`,{className:`flex flex-col`,children:[(0,H.jsx)(Ft,{state:n?`done`:te?`now`:`later`,title:R(`integrate.seen`,{app:e.name}),children:(0,H.jsx)(X,{children:R(c===`here`?`integrate.restart`:`integrate.reload`,{app:e.name})})}),(0,H.jsxs)(Ft,{state:n?.toolAt?`done`:n?`now`:`later`,title:R(`integrate.tool`),children:[(0,H.jsx)(X,{children:R(`integrate.askHint`,{app:e.name})}),x(R(`integrate.askTool`))]}),e.widgets?(0,H.jsxs)(Ft,{state:n?.widgetAt?`done`:n?.toolAt?`now`:`later`,title:R(`integrate.widget`),children:[(0,H.jsx)(X,{children:R(`integrate.widgetHint`)}),x(R(`integrate.askWidget`))]}):null]}),b?(0,H.jsxs)(`p`,{className:`flex items-center gap-2 font-medium text-[14px] text-moss`,children:[(0,H.jsx)(C,{className:`size-4`,strokeWidth:3}),R(`integrate.works`,{app:e.name})]}):null]})]})]})}function Bt(){let e=m(),t=e.data?.mode===`managed`,n=c({queryKey:[`local-apps`],queryFn:()=>u.get(`/api/studio/local/apps`),enabled:e.data?.mode===`local`}),r=c({queryKey:[`integrations-seen`],queryFn:()=>u.get(`/api/studio/integrations/seen`),refetchInterval:2500}),[i,a]=(0,V.useState)(null);if(!e.data||!t&&!n.data)return null;let o=e.data.mcpUrl??``,s=e=>n.data?.find(t=>t.id===e),l=e=>r.data?.[e],d=e=>{let t=s(e);return t?.installed||t?.connected?0:1},f=[...jt].sort((e,t)=>d(e.id)-d(t.id)),p=f.find(e=>e.id===i)??f[0],h=e=>{let t=s(e);return l(e)?.toolAt?{note:R(`integrate.stateWorks`),tone:`done`}:t?.connected?{note:R(`integrate.stateConnected`),tone:`ok`}:t?.installed?{note:R(`integrate.stateInstalled`),tone:`dim`}:{}};return(0,H.jsxs)(`div`,{className:`flex flex-col gap-10`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h2`,{className:`font-display font-semibold text-[22px] tracking-tight`,children:R(`integrate.title`)}),(0,H.jsx)(`p`,{className:`mt-1 max-w-2xl text-[14px] text-ink-2`,children:R(`integrate.lead`)})]}),(0,H.jsxs)(`div`,{className:`grid gap-8 lg:grid-cols-[16rem_minmax(0,1fr)]`,children:[(0,H.jsxs)(`nav`,{className:`flex flex-col gap-5 lg:sticky lg:top-24 lg:self-start`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`p`,{className:`mb-1.5 px-3 font-medium text-[11px] text-ink-4 uppercase tracking-[0.14em]`,children:R(`integrate.groupApps`)}),(0,H.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:f.map(e=>(0,H.jsx)(Lt,{selected:e.id===p.id,title:e.name,widgets:e.widgets,onPick:()=>a(e.id),...h(e.id)},e.id))})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`p`,{className:`mb-1.5 px-3 font-medium text-[11px] text-ink-4 uppercase tracking-[0.14em]`,children:R(`integrate.groupShare`)}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,H.jsx)(Lt,{selected:!1,disabled:!0,title:R(`integrate.shareLink`),note:R(`integrate.soon`)}),(0,H.jsx)(Lt,{selected:!1,disabled:!0,title:R(`integrate.shareSite`),note:R(`integrate.soon`)})]})]})]}),(0,H.jsx)(zt,{client:p,local:s(p.id),seen:l(p.id),managed:t,url:o},p.id)]}),t?null:(0,H.jsx)(Pt,{}),(0,H.jsxs)(`p`,{className:`flex items-start gap-2 text-[13px] text-ink-3`,children:[(0,H.jsx)(re,{className:`mt-0.5 size-3.5 shrink-0`}),R(`mcp.notReverse`)]})]})}function Vt(e){return R(e.origin===`local`?`readonly.project`:`readonly.server`)}function Ht({children:e}){return(0,H.jsxs)(`div`,{className:`flex items-start gap-3 rounded-xl bg-paper-2 px-4 py-3 text-[14px] text-ink-2 leading-relaxed`,children:[(0,H.jsx)(le,{className:`mt-0.5 size-4 shrink-0 text-ink-3`}),(0,H.jsx)(`p`,{className:`min-w-0`,children:e})]})}function Ut(e){return e.type.startsWith(`image/`)&&/logo/i.test(e.name)?`logo`:/^(image|video|audio)\//.test(e.type)?`asset`:`document`}function Wt(e,t){let n=d(),[r,i]=(0,V.useState)([]),[a,o]=(0,V.useState)(`idle`),[c,l]=(0,V.useState)(null),[f,p]=(0,V.useState)(null),[m,h]=(0,V.useState)(null),g=(0,V.useRef)(null),_=()=>(g.current??=(async()=>{await Promise.all([n.invalidateQueries({queryKey:[`projects`]}),n.invalidateQueries({queryKey:[`project-files`,e]})]),t(),g.current=null})(),g.current);return{messages:r,phase:a,activity:f,startedAt:m,error:c,send:async(t,c=[])=>{if(!(t.trim()||c.length)||a!==`idle`)return!1;if(l(null),o(`thinking`),h(Date.now()),c.length){try{for(let t of c)await u.upload(`/api/studio/projects/${e}/files?kind=${Ut(t)}`,t)}catch(e){return l(e.message),o(`idle`),h(null),await _(),!1}await _();let n=`${R(`editor.attached`)}: ${c.map(e=>e.name).join(`, `)}`;t=t.trim()?`${t}\n\n${n}`:n}let d=r.map(({role:e,content:t})=>({role:e,content:t})).slice(-12),f=`p-${Date.now()}`;i(e=>[...e,{id:`u-${Date.now()}`,role:`user`,content:t,previews:ue(c)},{id:f,role:`assistant`,content:``,pending:!0}]),p(null);let m=!1;try{await s(`/api/studio/projects/${e}/assist`,{message:t,history:d},(e,t)=>{if(e===`text`){let e=JSON.parse(t);i(t=>t.map(t=>t.id===f?{...t,content:t.content+e}:t))}else if(e===`activity`)p(JSON.parse(t));else if(e===`changed`)o(`building`),_();else if(e===`done`){m=!0;let e=JSON.parse(t);i(t=>t.map(t=>t.id===f?{...t,content:e.reply,changed:e.changed,pending:!1}:t))}else e===`error`&&(m=!0,l(JSON.parse(t).message))}),m||l(R(`editor.chatBroken`))}catch(e){l(e.message)}finally{p(null),h(null),i(e=>e.filter(e=>!(e.id===f&&!e.content)).map(e=>({...e,pending:!1}))),o(`idle`),await g.current,await _(),await n.invalidateQueries({queryKey:[`me`]})}return!0}}}function Gt(){return(0,H.jsxs)(`div`,{className:`sm:pr-36`,children:[(0,H.jsx)(`h2`,{className:`font-display font-semibold text-[20px] leading-tight tracking-tight`,children:R(`project.assistantTitle`)}),(0,H.jsx)(`p`,{className:`mt-1.5 max-w-2xl text-[15px] text-ink-2 leading-relaxed`,children:R(`project.assistantHello`)})]})}var Kt=72,qt=720;function Jt({projectId:e,onChanged:t}){let n=Wt(e,t),r=(0,V.useRef)(null),[i,a]=(0,V.useState)(null);return(0,V.useEffect)(()=>{let e=()=>{let e=r.current?.getBoundingClientRect();e&&a(t=>{if(e.bottom>=Kt)return null;let n=Math.min(e.width,qt),r=e.left+(e.width-n)/2;return t&&t.left===r&&t.width===n?t:{left:r,width:n,height:t?.height??e.height}})};return e(),window.addEventListener(`scroll`,e,{passive:!0}),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`scroll`,e),window.removeEventListener(`resize`,e)}},[]),(0,H.jsxs)(`div`,{ref:r,style:i?{minHeight:i.height}:void 0,children:[(0,H.jsxs)(`div`,{className:`mb-2 flex items-center gap-1.5 px-1 font-medium text-[12px] text-ember-strong uppercase tracking-[0.07em]`,children:[(0,H.jsx)(oe,{className:`size-3.5`}),` `,R(`project.assistant`)]}),(0,H.jsxs)(`div`,{className:`relative`,children:[!i&&n.messages.length===0?(0,H.jsx)(`div`,{className:`absolute -top-14 right-10 z-10 max-sm:hidden`,children:(0,H.jsx)(o,{kind:`round`,size:104})}):null,(0,H.jsx)(`div`,{className:A(`flex flex-col overflow-hidden bg-card`,i?`fixed bottom-4 z-30 max-h-[70dvh] animate-dock rounded-2xl shadow-overlay ring-1 ring-border`:`max-h-[520px] rounded-xl bg-linear-to-br from-ember-tint via-card to-card shadow-soft ring-1 ring-ember-veil`),style:i?{left:i.left,width:i.width}:void 0,children:(0,H.jsx)(de,{chat:n,avatar:`round`,compact:!!i,intro:(0,H.jsx)(Gt,{}),placeholder:R(`project.assistantComposer`),changedLabel:R(`project.assistantChanged`)})})]})]})}var Yt=[`text`,`longtext`,`number`,`date`,`url`,`email`,`phone`,`boolean`],Xt=/^(\d{4}-\d{2}-\d{2}|\d{1,2}\.\s?\d{1,2}\.\s?\d{4})$/,Zt=/^[+-]?\d{1,3}([.,\s']?\d{3})*([.,]\d+)?$/,Qt=/^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/,$t=/^(https?:\/\/|www\.)\S+$/i,en=/^\+?[\d\s()/.-]{7,20}$/,tn=/^(ja|nein|yes|no|true|false)$/i;function nn(e){let t=e.trim();return t?t.includes(`
2
- `)||t.length>140?`longtext`:tn.test(t)?`boolean`:Qt.test(t)?`email`:$t.test(t)?`url`:Xt.test(t)?`date`:Zt.test(t)&&!/^(\+|0\d)/.test(t)?`number`:en.test(t)&&t.replace(/\D/g,``).length>=7?`phone`:`text`:`text`}function rn(e,t=[]){let n=e.toLowerCase().replace(/ä/g,`ae`).replace(/ö/g,`oe`).replace(/ü/g,`ue`).replace(/ß/g,`ss`).normalize(`NFD`).replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``).slice(0,40)||`fakt`,r=n;for(let e=2;t.includes(r);e++)r=`${n}_${e}`;return r}var an=[{key:`adresse`,de:`Adresse`,en:`Address`},{key:`plz`,de:`PLZ`,en:`Postcode`},{key:`ort`,de:`Ort`,en:`City`},{key:`uid`,de:`UID`,en:`VAT id`},{key:`telefon`,de:`Telefon`,en:`Phone`},{key:`e_mail`,de:`E-Mail`,en:`Email`},{key:`website`,de:`Website`,en:`Website`},{key:`iban`,de:`IBAN`,en:`IBAN`}],on={facts:100,colors:12,files:{logo:8,asset:100,document:50},bytes:{logo:5e6,asset:15e6,video:8e7,document:3e7}},sn=/^#[0-9a-fA-F]{6}$/;function cn({onAdd:e,onClose:t}){let[n,r]=(0,V.useState)(`#e0531b`),[i,a]=(0,V.useState)(``),o=sn.test(n);return(0,H.jsx)(j,{open:!0,onClose:t,title:R(`project.colorAddTitle`),children:(0,H.jsxs)(`form`,{onSubmit:r=>{r.preventDefault(),o&&(e({name:i.trim(),value:n.toLowerCase()}),t())},className:`flex flex-col gap-5`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`project.colorValue`)}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(Se,{value:o?n:`#888888`,onChange:e=>r(e.target.value)}),(0,H.jsx)(I,{value:n,placeholder:`#e0531b`,spellCheck:!1,onChange:e=>r(e.target.value.trim()),className:`font-mono text-[14px]`})]})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`project.colorUseLabel`)}),(0,H.jsx)(I,{autoFocus:!0,value:i,maxLength:120,placeholder:R(`project.colorName`),onChange:e=>a(e.target.value)}),(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`project.colorUse`)})]}),(0,H.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,H.jsx)(L,{variant:`ghost`,onClick:t,children:R(`common.cancel`)}),(0,H.jsx)(L,{type:`submit`,disabled:!o,children:R(`project.add`)})]})]})})}function ln({colors:e,save:t,readOnly:n}){let r=(0,V.useRef)(0),[i,a]=(0,V.useState)(()=>e.map(e=>({...e,id:`c${r.current++}`}))),[o,s]=(0,V.useState)(!1),c=q(i.filter(e=>sn.test(e.value)).map(({name:e,value:t})=>({name:e.trim(),value:t})),t),l=(e,t)=>a(n=>n.map(n=>n.id===e?{...n,...t}:n));return(0,H.jsxs)(U,{title:R(`project.colors`),hint:R(`project.colorsHint`),save:c,locked:n,children:[(0,H.jsx)(`div`,{className:`flex flex-col gap-2`,children:i.map((e,t)=>(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(Se,{value:sn.test(e.value)?e.value:`#888888`,onChange:t=>l(e.id,{value:t.target.value})}),(0,H.jsx)(I,{value:e.name,placeholder:R(`project.colorName`),maxLength:120,onChange:t=>l(e.id,{name:t.target.value}),className:`min-w-0 flex-1`}),(0,H.jsx)(I,{value:e.value,placeholder:`#e0531b`,spellCheck:!1,onChange:t=>l(e.id,{value:t.target.value.trim()}),className:`w-28 font-mono text-[13px]`}),(0,H.jsxs)(`div`,{className:`flex w-24 shrink-0 items-center justify-end max-sm:w-auto`,children:[t===0?(0,H.jsx)(`span`,{className:`mr-1 max-sm:hidden`,children:(0,H.jsx)(F,{tone:`ember`,children:R(`project.colorAccent`)})}):n?null:(0,H.jsx)(P,{label:R(`project.colorFirst`),onClick:()=>a(t=>[e,...t.filter(t=>t.id!==e.id)]),children:(0,H.jsx)(b,{className:`size-4`})}),n?null:(0,H.jsx)(P,{label:R(`project.remove`),onClick:()=>a(t=>t.filter(t=>t.id!==e.id)),className:`hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})})]})]},e.id))}),i.length&&!n?(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`project.colorUse`)}):null,i.length<on.colors&&!n?(0,H.jsxs)(L,{variant:`secondary`,size:`sm`,className:i.length?`mt-3`:void 0,onClick:()=>s(!0),children:[(0,H.jsx)(T,{className:`size-4`}),` `,R(`project.colorAdd`)]}):null,o?(0,H.jsx)(cn,{onClose:()=>s(!1),onAdd:e=>a(t=>[...t,{...e,id:`c${r.current++}`}])}):null]})}var un={backgroundImage:`repeating-conic-gradient(#c9c9c9 0% 25%, #dedede 0% 50%)`,backgroundSize:`16px 16px`};function $({file:e,actions:t}){let[n,r]=(0,V.useState)(e.description),i=(0,V.useRef)(e.description),a=(0,V.useRef)(null);(0,V.useEffect)(()=>{e.description!==i.current&&(r(t=>t===i.current?e.description:t),i.current=e.description)},[e.description]),(0,V.useLayoutEffect)(()=>{let e=a.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)},[n]);let o=e.status===`pending`&&!n;return t.readOnly?n?(0,H.jsx)(`p`,{className:`text-[13px] text-ink-2 leading-snug`,children:n}):null:(0,H.jsx)(`textarea`,{ref:a,rows:1,value:n,maxLength:600,placeholder:R(o?`project.describing`:`project.description`),onChange:e=>r(e.target.value),onBlur:()=>{n.trim()!==e.description&&(i.current=n.trim(),t.describe(e.id,n.trim()))},className:`-mx-1 block w-[calc(100%+0.5rem)] resize-none overflow-hidden rounded-md bg-transparent px-1 py-0.5 text-[13px] text-ink-2 leading-snug outline-none transition placeholder:text-ink-4 hover:bg-paper-2 focus:bg-card focus:text-ink focus:ring-1 focus:ring-border`})}function dn(e,t){confirm(R(`project.removeConfirm`,{name:e.name}))&&t.remove(e.id)}function fn({projectId:e,file:t,small:n}){let r=G(e,t.id);return t.mime.startsWith(`image/`)?(0,H.jsx)(`img`,{src:r,alt:``,loading:`lazy`,className:A(`size-full`,t.kind===`logo`?`object-contain p-3`:`object-cover`)}):t.mime.startsWith(`video/`)?(0,H.jsx)(`video`,{src:`${r}#t=0.1`,preload:`metadata`,controls:!n,className:`size-full object-cover`}):(0,H.jsx)(`div`,{className:`flex size-full items-center justify-center text-ink-3`,children:t.mime.startsWith(`audio/`)?(0,H.jsx)($e,{className:n?`size-5`:`size-7`}):(0,H.jsx)(ne,{className:n?`size-5`:`size-7`})})}function pn({projectId:e,kind:t,files:n,actions:r,accept:i,addLabel:a,onPreview:o}){return(0,H.jsxs)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(184px,1fr))] gap-3`,children:[n.map((i,a)=>(0,H.jsxs)(`div`,{className:`group relative flex flex-col gap-1.5 rounded-lg bg-paper p-2 pb-2.5 ring-1 ring-border-soft`,children:[t===`logo`&&a===0?(0,H.jsx)(`span`,{className:`absolute -top-3 left-3 z-10 rounded-full ring-2 ring-card`,children:(0,H.jsx)(F,{tone:`ember`,children:R(`project.logoMain`)})}):null,(0,H.jsxs)(`div`,{className:`relative h-28 overflow-hidden rounded-md bg-paper-2`,style:t===`logo`?un:void 0,children:[o&&i.mime.startsWith(`image/`)?(0,H.jsx)(`button`,{type:`button`,"aria-label":`${R(`project.preview`)}: ${i.name}`,onClick:()=>o(i),className:`block size-full cursor-zoom-in`,children:(0,H.jsx)(fn,{projectId:e,file:i})}):(0,H.jsx)(fn,{projectId:e,file:i}),(0,H.jsxs)(`div`,{className:`absolute top-1 right-1 flex gap-1 opacity-0 transition focus-within:opacity-100 group-hover:opacity-100 coarse:opacity-100`,children:[o?(0,H.jsx)(P,{label:R(`project.preview`),onClick:()=>o(i),className:`size-8 bg-card shadow-soft`,children:(0,H.jsx)(w,{className:`size-4`})}):null,t===`logo`&&a>0&&!r.readOnly?(0,H.jsx)(P,{label:R(`project.logoMakeMain`),onClick:()=>r.order(`logo`,[i.id,...n.filter(e=>e.id!==i.id).map(e=>e.id)]),className:`size-8 bg-card shadow-soft`,children:(0,H.jsx)(me,{className:`size-4`})}):null,r.readOnly?null:(0,H.jsx)(P,{label:R(`project.remove`),onClick:()=>dn(i,r),className:`size-8 bg-card shadow-soft hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})})]})]}),t===`asset`?(0,H.jsx)(`div`,{className:`truncate px-0.5 text-[12px] text-ink-3`,title:i.name,children:i.name}):null,(0,H.jsx)($,{file:i,actions:r})]},i.id)),a&&!r.readOnly?(0,H.jsxs)(W,{accept:i,multiple:!1,onFiles:e=>r.upload(t,e),className:`min-h-28 flex-col p-3`,children:[r.busy?(0,H.jsx)(k,{className:`size-5`}):(0,H.jsx)(T,{className:`size-5`}),a]}):null]})}function mn({projectId:e,data:t,readOnly:n}){let r=K(e,n);return(0,H.jsxs)(U,{title:R(`project.logos`),hint:R(`project.logosHint`),children:[(0,H.jsx)(pn,{projectId:e,kind:`logo`,files:t.files.filter(e=>e.kind===`logo`),actions:r,accept:`image/*`,addLabel:R(`project.logoAdd`)}),r.error?(0,H.jsx)(`p`,{className:`mt-3 text-[14px] text-rose`,children:r.error}):null]})}var hn=e=>[(e.name.includes(`.`)?e.name.split(`.`).pop():e.mime.split(`/`).pop())?.toUpperCase().slice(0,5),gt(e.size)].filter(Boolean).join(` · `);function gn({projectId:e,file:t,actions:n,onClose:r}){let i=G(e,t.id);return(0,H.jsxs)(j,{open:!0,onClose:r,wide:`page`,title:t.name,children:[(0,H.jsxs)(`div`,{className:`-mt-2 mb-4 flex items-center justify-between gap-3`,children:[(0,H.jsx)(`span`,{className:`text-[13px] text-ink-3`,children:hn(t)}),(0,H.jsx)(`a`,{href:i,target:`_blank`,rel:`noreferrer`,"aria-label":R(`project.openOriginal`),title:R(`project.openOriginal`),className:`inline-flex size-9 items-center justify-center rounded-full text-ink-3 transition hover:bg-accent hover:text-ink`,children:(0,H.jsx)(E,{className:`size-4`})})]}),t.mime.startsWith(`image/`)?(0,H.jsx)(`div`,{className:`overflow-hidden rounded-lg`,style:un,children:(0,H.jsx)(`img`,{src:i,alt:``,className:`mx-auto max-h-[68dvh] object-contain`})}):t.mime.startsWith(`video/`)?(0,H.jsx)(`video`,{src:i,controls:!0,className:`max-h-[68dvh] w-full rounded-lg bg-black`}):(0,H.jsx)(`audio`,{src:i,controls:!0,className:`w-full`}),(0,H.jsx)(`div`,{className:`mt-4`,children:(0,H.jsx)($,{file:t,actions:n})})]})}function _n({projectId:e,file:t,actions:n,onPreview:r}){return(0,H.jsxs)(`li`,{className:`flex items-start gap-3 rounded-lg bg-paper p-2 ring-1 ring-border-soft`,children:[(0,H.jsx)(`button`,{type:`button`,"aria-label":`${R(`project.preview`)}: ${t.name}`,onClick:r,className:`size-14 shrink-0 cursor-zoom-in overflow-hidden rounded-md bg-paper-2`,children:(0,H.jsx)(fn,{projectId:e,file:t,small:!0})}),(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1 py-0.5`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-3`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:r,title:t.name,className:`min-w-0 truncate font-medium text-[14px] hover:underline`,children:t.name}),(0,H.jsx)(`span`,{className:`text-[12px] text-ink-3`,children:hn(t)})]}),(0,H.jsx)($,{file:t,actions:n})]}),(0,H.jsxs)(`div`,{className:`flex shrink-0 items-start`,children:[(0,H.jsx)(P,{label:R(`project.preview`),onClick:r,children:(0,H.jsx)(w,{className:`size-4`})}),n.readOnly?null:(0,H.jsx)(P,{label:R(`project.remove`),onClick:()=>dn(t,n),className:`hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})})]})]})}function vn({projectId:e,data:t,readOnly:n}){let r=K(e,n),[i,a]=ht(`assets`,`cards`),[o,s]=(0,V.useState)(``),[c,l]=(0,V.useState)(null),u=t.files.filter(e=>e.kind===`asset`),d=u.find(e=>e.id===c),f=o.trim().toLowerCase(),p=f?u.filter(e=>`${e.name} ${e.description}`.toLowerCase().includes(f)):u;return(0,H.jsxs)(U,{title:R(`project.assets`),hint:R(`project.assetsHint`),children:[u.length?(0,H.jsx)(ut,{layout:i,onToggle:a,children:(0,H.jsx)(dt,{value:o,onChange:s,placeholder:R(`project.assetSearch`)})}):null,p.length?(0,H.jsx)(`div`,{className:`mb-3`,children:i===`cards`?(0,H.jsx)(pn,{projectId:e,kind:`asset`,files:p,actions:r,onPreview:e=>l(e.id)}):(0,H.jsx)(`ul`,{className:`flex flex-col gap-2`,children:p.map(t=>(0,H.jsx)(_n,{projectId:e,file:t,actions:r,onPreview:()=>l(t.id)},t.id))})}):null,n?u.length?null:(0,H.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:R(`project.staysLocal`)}):(0,H.jsxs)(W,{accept:`image/*,video/*,audio/*`,onFiles:e=>r.upload(`asset`,e),className:`h-16 w-full`,children:[r.busy?(0,H.jsx)(k,{className:`size-4`}):(0,H.jsx)(be,{className:`size-4`}),R(`project.drop`),` `,(0,H.jsx)(`span`,{className:`underline`,children:R(`project.assetAdd`)})]}),r.error?(0,H.jsx)(`p`,{className:`mt-3 text-[14px] text-rose`,children:r.error}):null,d?(0,H.jsx)(gn,{projectId:e,file:d,actions:r,onClose:()=>l(null)}):null]})}function yn(e,t,n){return c({queryKey:[`project-file-text`,t.id,t.chars,n],queryFn:()=>u.get(`/api/studio/projects/${e}/files/${t.id}/text?limit=${n}`),enabled:t.status===`ready`,staleTime:6e4})}function bn(e){return((e.name.includes(`.`)?e.name.split(`.`).pop():``)||e.mime.split(`/`).pop()||``).toUpperCase().slice(0,5)}var xn=e=>[bn(e),e.pages?R(`project.pages`,{n:e.pages}):null,gt(e.size)].filter(Boolean).join(` · `);function Sn({file:e}){return e.status===`pending`?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-[12px] text-ink-3`,children:[(0,H.jsx)(k,{className:`size-3`}),` `,R(`project.reading`)]}):e.status===`failed`?(0,H.jsx)(`span`,{className:`text-[12px] text-rose`,children:e.error}):e.indexed?(0,H.jsx)(F,{tone:`live`,children:e.indexed===`embeddings`?R(`project.indexed`):R(`project.indexedKeywords`)}):(0,H.jsx)(F,{tone:`warn`,children:R(`project.notIndexed`)})}function Cn({file:e,actions:t,onPreview:n}){return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(P,{label:R(`project.preview`),onClick:n,children:(0,H.jsx)(w,{className:`size-4`})}),e.status!==`pending`&&!t.readOnly?(0,H.jsx)(P,{label:R(`project.reindex`),onClick:()=>t.reindex(e.id),children:(0,H.jsx)(ye,{className:`size-4`})}):null,t.readOnly?null:(0,H.jsx)(P,{label:R(`project.remove`),onClick:()=>dn(e,t),className:`hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})})]})}function wn({file:e,actions:t,onPreview:n}){let r=/sheet|csv|excel/.test(e.mime);return(0,H.jsxs)(`li`,{className:`flex gap-3 rounded-lg bg-paper p-3 ring-1 ring-border-soft`,children:[(0,H.jsx)(`div`,{className:`mt-0.5 text-ink-3`,children:r?(0,H.jsx)(ze,{className:`size-5`}):(0,H.jsx)(ve,{className:`size-5`})}),(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1.5`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:n,title:e.name,className:`min-w-0 truncate font-medium text-[14px] hover:underline`,children:e.name}),(0,H.jsx)(`span`,{className:`text-[12px] text-ink-3`,children:xn(e)}),(0,H.jsx)(Sn,{file:e})]}),(0,H.jsx)($,{file:e,actions:t})]}),(0,H.jsx)(`div`,{className:`-my-1 flex shrink-0 items-start`,children:(0,H.jsx)(Cn,{file:e,actions:t,onPreview:n})})]})}function Tn({projectId:e,file:t}){let n=yn(e,t,1500);return t.mime.startsWith(`image/`)?(0,H.jsx)(`img`,{src:G(e,t.id),alt:``,className:`size-full object-cover`}):t.status===`pending`||n.isLoading?(0,H.jsx)(`div`,{className:`flex size-full items-center justify-center text-ink-4`,children:(0,H.jsx)(k,{className:`size-5`})}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`w-[222%] origin-top-left scale-[0.45] p-6`,children:(0,H.jsx)(ie,{text:n.data?.text??``})}),(0,H.jsx)(`div`,{className:`absolute inset-x-0 bottom-0 h-12 bg-linear-to-t from-card to-transparent`})]})}function En({projectId:e,file:t,actions:n,onPreview:r}){return(0,H.jsxs)(`li`,{className:`group flex flex-col gap-1.5 rounded-lg bg-paper p-2 pb-2.5 ring-1 ring-border-soft`,children:[(0,H.jsxs)(`div`,{className:`relative`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`${R(`project.preview`)}: ${t.name}`,className:`relative block h-44 w-full overflow-hidden rounded-md bg-card text-left ring-1 ring-border-soft transition hover:ring-border`,children:(0,H.jsx)(Tn,{projectId:e,file:t})}),(0,H.jsx)(`div`,{className:`absolute top-1 right-1 flex gap-1 opacity-0 transition focus-within:opacity-100 group-hover:opacity-100 coarse:opacity-100 [&>button]:size-8 [&>button]:bg-card [&>button]:shadow-soft`,children:(0,H.jsx)(Cn,{file:t,actions:n,onPreview:r})})]}),(0,H.jsxs)(`div`,{className:`mt-1 flex flex-col gap-1 px-0.5`,children:[(0,H.jsx)(`div`,{className:`truncate font-medium text-[13px]`,title:t.name,children:t.name}),(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,H.jsx)(`span`,{className:`text-[12px] text-ink-3`,children:xn(t)}),(0,H.jsx)(Sn,{file:t})]})]}),(0,H.jsx)($,{file:t,actions:n})]})}var Dn=2e5;function On({projectId:e,file:t,onClose:n}){let r=t.mime===`application/pdf`||t.mime.startsWith(`image/`),[i,a]=(0,V.useState)(r?`original`:`text`),o=yn(e,t,Dn),s=G(e,t.id),c=(e,t)=>(0,H.jsx)(`button`,{type:`button`,"aria-pressed":i===e,onClick:()=>a(e),className:A(`h-8 rounded-full px-3 text-[13px] transition`,i===e?`bg-paper-2 font-medium text-ink`:`text-ink-3 hover:text-ink`),children:t});return(0,H.jsxs)(j,{open:!0,onClose:n,wide:`page`,title:t.name,children:[(0,H.jsxs)(`div`,{className:`-mt-2 mb-4 flex flex-wrap items-center gap-x-3 gap-y-2`,children:[(0,H.jsx)(`span`,{className:`text-[13px] text-ink-3`,children:xn(t)}),(0,H.jsx)(Sn,{file:t}),(0,H.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[r?(0,H.jsxs)(H.Fragment,{children:[c(`original`,R(`project.original`)),c(`text`,R(`project.readText`))]}):null,(0,H.jsx)(`a`,{href:s,target:`_blank`,rel:`noreferrer`,"aria-label":R(`project.openOriginal`),title:R(`project.openOriginal`),className:`inline-flex size-9 items-center justify-center rounded-full text-ink-3 transition hover:bg-accent hover:text-ink`,children:(0,H.jsx)(E,{className:`size-4`})})]})]}),i===`original`?t.mime===`application/pdf`?(0,H.jsx)(`iframe`,{src:s,title:t.name,className:`h-[70dvh] w-full rounded-lg bg-paper-2 ring-1 ring-border-soft`}):(0,H.jsx)(`img`,{src:s,alt:``,className:`mx-auto max-h-[70dvh] rounded-lg object-contain`}):o.isLoading?(0,H.jsx)(`div`,{className:`flex h-40 items-center justify-center text-ink-3`,children:(0,H.jsx)(k,{})}):o.data?.text?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`overflow-x-auto rounded-lg bg-paper p-5 ring-1 ring-border-soft`,children:(0,H.jsx)(ie,{text:o.data.text,className:`text-[14px]`})}),o.data.chars>o.data.text.length?(0,H.jsx)(`p`,{className:`mt-3 text-[13px] text-ink-3`,children:R(`project.textCut`,{shown:o.data.text.length.toLocaleString(),total:o.data.chars.toLocaleString()})}):null]}):(0,H.jsx)(`p`,{className:`py-8 text-center text-[14px] text-ink-3`,children:R(`project.noText`)})]})}function kn({projectId:e}){let[t,n]=(0,V.useState)(``),[r,i]=(0,V.useState)(null),[a,o]=(0,V.useState)(!1),s=async()=>{if(!t.trim()){i(null);return}o(!0);try{let n=await u.post(`/api/studio/projects/${e}/search`,{query:t});i(n.hits)}catch{i([])}finally{o(!1)}};return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(dt,{value:t,placeholder:R(`project.searchTest`),busy:a,onEnter:()=>void s(),onChange:e=>{n(e),e.trim()||i(null)}}),r?r.length?(0,H.jsx)(`ul`,{className:`mt-2 flex flex-col gap-2`,children:r.map((e,t)=>(0,H.jsxs)(`li`,{className:`rounded-lg bg-paper-2 px-3 py-2 text-[13px]`,children:[(0,H.jsx)(`div`,{className:`mb-0.5 font-medium text-[12px] text-ink-3`,children:e.name}),(0,H.jsx)(`p`,{className:`line-clamp-3 whitespace-pre-line text-ink-2`,children:e.text})]},t))}):(0,H.jsx)(`p`,{className:`mt-2 text-[13px] text-ink-3`,children:R(`project.searchNone`)}):null]})}function An({projectId:e,data:t,readOnly:n}){let r=K(e,n),[i,a]=ht(`documents`,`list`),[o,s]=(0,V.useState)(null),c=t.files.filter(e=>e.kind===`document`),l=c.find(e=>e.id===o),u=i===`cards`?En:wn;return(0,H.jsxs)(U,{title:R(`project.documents`),hint:R(`project.documentsHint`),children:[c.length?(0,H.jsx)(ut,{layout:i,onToggle:a,children:(0,H.jsx)(kn,{projectId:e})}):null,c.length?(0,H.jsx)(`ul`,{className:A(`mb-3`,i===`cards`?`grid grid-cols-[repeat(auto-fill,minmax(220px,1fr))] gap-3`:`flex flex-col gap-2`),children:c.map(t=>(0,H.jsx)(u,{projectId:e,file:t,actions:r,onPreview:()=>s(t.id)},t.id))}):null,n?c.length?null:(0,H.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:R(`project.staysLocal`)}):(0,H.jsxs)(W,{accept:`.pdf,.docx,.doc,.xlsx,.csv,.tsv,.txt,.md,.json,.html,.eml,image/*`,onFiles:e=>r.upload(`document`,e),className:`h-16 w-full`,children:[r.busy?(0,H.jsx)(k,{className:`size-4`}):(0,H.jsx)(be,{className:`size-4`}),R(`project.drop`),` `,(0,H.jsx)(`span`,{className:`underline`,children:R(`project.documentAdd`)})]}),r.error?(0,H.jsx)(`p`,{className:`mt-3 text-[14px] text-rose`,children:r.error}):null,c.length&&!t.embeddings?(0,H.jsx)(`p`,{className:`mt-3 text-[13px] text-ink-3`,children:R(`project.keywordsOnly`)}):null,l?(0,H.jsx)(On,{projectId:e,file:l,onClose:()=>s(null)}):null]})}var jn=e=>/^(ja|yes|true)$/i.test(e.trim()),Mn={text:ge,longtext:at,number:Ue,date:Fe,url:re,email:ae,phone:tt,boolean:st};function Nn({type:e,detected:t,onChange:n}){let[r,i]=(0,V.useState)(!1),[a,o]=(0,V.useState)(!1),s=(0,V.useRef)(null);(0,V.useEffect)(()=>{if(!r)return;let e=e=>{s.current?.contains(e.target)||i(!1)},t=e=>e.key===`Escape`&&i(!1);return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[r]);let c=Mn[e??t],l=`${R(`project.factType`)}: ${R(`project.type.${e??t}`)}`,u=`flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-[14px] text-ink-2 hover:bg-accent hover:text-ink`,d=e=>{n(e),i(!1)};return(0,H.jsxs)(`div`,{className:`relative`,ref:s,children:[(0,H.jsx)(`button`,{type:`button`,"aria-label":l,title:l,"aria-haspopup":`menu`,"aria-expanded":r,onClick:e=>{o(window.innerHeight-e.currentTarget.getBoundingClientRect().bottom<400),i(e=>!e)},className:A(`inline-flex size-11 items-center justify-center rounded-lg transition hover:bg-accent hover:text-ink`,r?`bg-accent text-ink`:e?`text-ink-2`:`text-ink-4`),children:(0,H.jsx)(c,{className:`size-4`})}),r?(0,H.jsxs)(`div`,{role:`menu`,className:A(`absolute right-0 z-50 w-56 animate-rise rounded-xl bg-card p-1.5 shadow-overlay ring-1 ring-border-soft`,a?`bottom-12`:`top-12`),children:[(0,H.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":!e,className:u,onClick:()=>d(void 0),children:[(0,H.jsx)(ce,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{className:`flex-1`,children:R(`project.factAuto`)}),(0,H.jsx)(`span`,{className:`text-[12px] text-ink-4`,children:R(`project.type.${t}`)}),(0,H.jsx)(C,{className:A(`size-4 shrink-0`,e&&`invisible`)})]}),(0,H.jsx)(`div`,{className:`mx-2 my-1 h-px bg-border-soft`}),Yt.map(t=>{let n=Mn[t];return(0,H.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":e===t,className:u,onClick:()=>d(t),children:[(0,H.jsx)(n,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{className:`flex-1`,children:R(`project.type.${t}`)}),(0,H.jsx)(C,{className:A(`size-4 shrink-0`,e!==t&&`invisible`)})]},t)})]}):null]})}function Pn({facts:e,save:t,readOnly:n}){let r=(0,V.useRef)(0),i=(0,V.useRef)(null),[a,o]=(0,V.useState)(()=>e.map(e=>({...e,id:`f${r.current++}`}))),s=q(a.filter(e=>e.key&&e.label.trim()).map(({key:e,label:t,value:n,type:r})=>({key:e,label:t.trim(),value:n,...r?{type:r}:{}})),t),c=(e,t)=>o(n=>n.map(n=>n.id===e?{...n,...t}:n)),l=(e,t,n=!1)=>{let a=`f${r.current++}`;i.current=`${a}:${t}`;let s={id:a,key:``,label:``,value:``,...e};o(e=>n?[s,...e]:[...e,s])},u=e=>t=>{t&&i.current===e&&(i.current=null,t.focus())},d=an.filter(e=>!a.some(t=>t.key===e.key));return(0,H.jsxs)(U,{title:R(`project.facts`),hint:R(`project.factsHint`),save:s,locked:n,action:a.length<on.facts&&!n?(0,H.jsxs)(L,{variant:`secondary`,size:`sm`,onClick:()=>l({},`label`,!0),children:[(0,H.jsx)(T,{className:`size-4`}),` `,R(`project.factAdd`)]}):null,children:[(0,H.jsx)(`div`,{className:`flex flex-col gap-2`,children:a.map(e=>{let t=nn(e.value),r=e.type??t;return(0,H.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto_auto] items-start gap-x-1 gap-y-2 sm:grid-cols-[minmax(0,2fr)_minmax(0,3fr)_auto_auto]`,children:[(0,H.jsx)(I,{ref:u(`${e.id}:label`),value:e.label,placeholder:R(`project.factLabel`),title:e.key?`{{facts.${e.key}}}`:void 0,onChange:t=>c(e.id,{label:t.target.value}),onBlur:()=>{!e.key&&e.label.trim()&&c(e.id,{key:rn(e.label,a.map(e=>e.key))})},className:`max-sm:col-span-3 max-sm:font-medium sm:mr-1`}),e.type===`boolean`?(0,H.jsxs)(`div`,{className:`flex h-11 items-center gap-3`,children:[(0,H.jsx)(Ce,{checked:jn(e.value),label:e.label,onChange:t=>c(e.id,{value:R(t?`project.yes`:`project.no`)})}),(0,H.jsx)(`span`,{className:`text-[14px] text-ink-2`,children:jn(e.value)?R(`project.yes`):R(`project.no`)})]}):(0,H.jsx)(M,{ref:u(`${e.id}:value`),rows:1,minRows:r===`longtext`?2:1,maxRows:10,value:e.value,placeholder:R(`project.factValue`),onChange:t=>c(e.id,{value:t.target.value}),className:`min-h-11`}),(0,H.jsx)(Nn,{type:e.type,detected:t,onChange:t=>c(e.id,{type:t})}),n?null:(0,H.jsx)(P,{label:R(`project.remove`),onClick:()=>o(t=>t.filter(t=>t.id!==e.id)),className:`size-11 rounded-lg hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})})]},e.id)})}),a.length<on.facts&&!n?(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 ${a.length?`mt-4`:``}`,children:[(0,H.jsxs)(L,{variant:`secondary`,size:`sm`,onClick:()=>l({},`label`),children:[(0,H.jsx)(T,{className:`size-4`}),` `,R(`project.factAdd`)]}),d.map(e=>(0,H.jsxs)(`button`,{type:`button`,onClick:()=>l({key:e.key,label:D===`en`?e.en:e.de},`value`),className:`inline-flex h-8 items-center gap-1 rounded-full bg-paper-2 px-3 text-[13px] text-ink-2 transition hover:bg-paper-3 hover:text-ink`,children:[(0,H.jsx)(T,{className:`size-3.5`}),` `,D===`en`?e.en:e.de]},e.key))]}):null]})}function Fn({project:e,save:t}){let[n,r]=(0,V.useState)(e.brand.name??``),[i,a]=(0,V.useState)(e.brand.about??``),o=q({name:n.trim(),about:i.trim()},e=>t({brand:e}));return(0,H.jsx)(U,{title:R(`project.base`),hint:R(`project.baseHint`),save:o,locked:e.readOnly,children:(0,H.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`project.title`)}),(0,H.jsx)(I,{value:n,maxLength:120,onChange:e=>r(e.target.value)}),(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`project.titleHint`)})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`project.about`)}),(0,H.jsx)(M,{minRows:4,value:i,onChange:e=>a(e.target.value)}),(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`project.aboutHint`)})]})]})})}function In({project:e,save:t}){let[n,r]=(0,V.useState)(!1),[i,a]=(0,V.useState)(e.name),o=p({mutationFn:()=>t({name:i.trim()}),onSuccess:()=>r(!1)});return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(P,{label:R(`project.rename`),onClick:()=>{a(e.name),r(!0)},children:(0,H.jsx)(x,{className:`size-4`})}),(0,H.jsx)(j,{open:n,onClose:()=>r(!1),title:R(`project.rename`),children:(0,H.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),i.trim()&&o.mutate()},children:[(0,H.jsx)(I,{autoFocus:!0,value:i,maxLength:80,onChange:e=>a(e.target.value)}),o.error?(0,H.jsx)(`p`,{className:`mt-3 text-[14px] text-rose`,children:o.error.message}):null,(0,H.jsxs)(`div`,{className:`mt-5 flex justify-end gap-2`,children:[(0,H.jsx)(L,{variant:`ghost`,onClick:()=>r(!1),children:R(`common.cancel`)}),(0,H.jsx)(L,{type:`submit`,busy:o.isPending,disabled:!i.trim(),children:R(`settings.save`)})]})]})})]})}function Ln({project:e}){let t=d(),n=mt(e.id),[r,i]=(0,V.useState)(0),a=async n=>{await u.patch(`/api/studio/projects/${e.id}`,n),await t.invalidateQueries({queryKey:[`projects`]})},o=p({mutationFn:()=>u.del(`/api/studio/projects/${e.id}`),onSuccess:()=>t.invalidateQueries({queryKey:[`projects`]})}),s=g(),c=n.data??{files:[],embeddings:!0},l=`${e.id}:${r}`,f=e.readOnly;return(0,H.jsxs)(`div`,{className:`flex flex-col gap-9 pb-20`,children:[s?(0,H.jsxs)(`div`,{className:`-mb-3 flex items-center gap-1`,children:[(0,H.jsx)(Ne,{}),f?null:(0,H.jsx)(In,{project:e,save:a})]}):null,f?(0,H.jsx)(Ht,{children:Vt(e)}):(0,H.jsx)(Jt,{projectId:e.id,onChanged:()=>i(e=>e+1)},e.id),(0,H.jsx)(Fn,{project:e,save:a},`base:${l}`),(0,H.jsx)(mn,{projectId:e.id,data:c,readOnly:f}),(0,H.jsx)(ln,{colors:e.brand.colors??[],save:e=>a({brand:{colors:e}}),readOnly:f},`colors:${l}`),(0,H.jsx)(vn,{projectId:e.id,data:c,readOnly:f}),(0,H.jsx)(An,{projectId:e.id,data:c,readOnly:f}),(0,H.jsx)(Pn,{facts:e.facts,save:e=>a({facts:e}),readOnly:f},`facts:${l}`),s&&!f?(0,H.jsxs)(`div`,{children:[(0,H.jsx)(L,{variant:`danger`,busy:o.isPending,onClick:()=>confirm(`${R(`settings.delete`)}?`)&&o.mutate(),children:R(`settings.delete`)}),o.error?(0,H.jsx)(`p`,{className:`mt-2 text-[14px] text-rose`,children:o.error.message}):null]}):null]})}function Rn(e,t){let n=e.toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``).replace(/^[^a-z]+/,``).slice(0,24)||`system`,r=n,i=2;for(;t.includes(r);)r=`${n}_${i++}`;return r}function zn({project:e}){let t=d(),[n,r]=(0,V.useState)(e.mcpServers.map(e=>({...e,auth:e.headers?.Authorization??e.headers?.authorization??``}))),[i,a]=(0,V.useState)(!1),o=e.readOnly,s=p({mutationFn:()=>u.patch(`/api/studio/projects/${e.id}`,{mcpServers:n.filter(e=>e.name&&e.url).map(({auth:e,headers:t,...n})=>({...n,headers:e?{...t,Authorization:e}:void 0}))}),onSuccess:async()=>{await t.invalidateQueries({queryKey:[`projects`]}),a(!0),setTimeout(()=>a(!1),1800)}});return(0,H.jsxs)(N,{className:`p-6`,children:[(0,H.jsx)(`h2`,{className:`font-display font-semibold text-lg`,children:R(`settings.mcp`)}),(0,H.jsx)(`p`,{className:`mt-1 mb-5 text-[14px] text-ink-3`,children:R(`settings.mcpHint`)}),(0,H.jsxs)(`fieldset`,{disabled:o,className:`flex min-w-0 flex-col gap-3`,children:[n.map((e,t)=>(0,H.jsxs)(`div`,{className:`grid gap-2 rounded-lg bg-paper p-3 ring-1 ring-border-soft sm:grid-cols-[1fr_2fr_auto]`,children:[(0,H.jsx)(I,{placeholder:R(`settings.serverName`),value:e.name,onChange:e=>r(n=>n.map((r,i)=>i===t?{...r,name:e.target.value,id:r.id||Rn(e.target.value,n.map(e=>e.id))}:r))}),(0,H.jsx)(I,{placeholder:`${R(`settings.serverUrl`)} (https://…/mcp)`,value:e.url,onChange:e=>r(n=>n.map((n,r)=>r===t?{...n,url:e.target.value}:n))}),o?(0,H.jsx)(`span`,{}):(0,H.jsx)(P,{label:`Entfernen`,onClick:()=>r(e=>e.filter((e,n)=>n!==t)),className:`hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})}),(0,H.jsx)(I,{className:`sm:col-span-2`,placeholder:R(`settings.serverHeader`),value:e.auth??``,onChange:e=>r(n=>n.map((n,r)=>r===t?{...n,auth:e.target.value}:n))}),e.id?(0,H.jsx)(`span`,{className:`self-center font-mono text-[11px] text-ink-4`,children:e.id}):null]},t)),o?null:(0,H.jsxs)(L,{variant:`secondary`,className:`self-start`,onClick:()=>r(e=>[...e,{id:``,name:``,url:``,auth:``}]),children:[(0,H.jsx)(T,{className:`size-4`}),` `,R(`settings.addServer`)]})]}),o?null:(0,H.jsxs)(`div`,{className:`mt-5 flex items-center justify-end gap-3`,children:[s.error?(0,H.jsx)(`p`,{className:`text-[14px] text-rose`,children:s.error.message}):null,(0,H.jsx)(L,{busy:s.isPending,onClick:()=>s.mutate(),children:R(i?`settings.saved`:`settings.save`)})]})]})}function Bn(){let{section:e}=l(),t=r(),n=m(),{project:a,loading:o}=h(),s=g(),[c,u]=(0,V.useState)(a?.id);(0,V.useEffect)(()=>u(a?.id),[a?.id]);let d=Ee(),p=De(n.data,d),_=p.find(t=>t.id===e);if(!_)return e===`build`?(0,H.jsx)(f,{to:`/settings/integrate`,replace:!0}):d.status===`ready`?(0,H.jsx)(f,{to:`/settings/project`,replace:!0}):null;let v=_.id===`connectors`&&s;return(0,H.jsxs)(`div`,{className:`animate-rise`,children:[(0,H.jsx)(`h1`,{className:`font-display font-semibold text-[28px] tracking-tight`,children:R(`settings.title`)}),(0,H.jsxs)(`div`,{className:`mt-6 grid gap-6 md:mt-8 md:grid-cols-[200px_minmax(0,1fr)] md:gap-10`,children:[(0,H.jsx)(`nav`,{className:`max-md:hidden`,children:(0,H.jsx)(`ul`,{className:`sticky top-24 flex flex-col gap-0.5`,children:p.map(e=>(0,H.jsx)(`li`,{children:(0,H.jsx)(i,{to:`/settings/${e.id}`,"aria-current":e.id===_.id?`page`:void 0,className:A(`block rounded-lg px-3 py-2 text-[14px] transition`,e.id===_.id?`bg-paper-2 font-medium text-ink`:`text-ink-3 hover:bg-accent hover:text-ink`),children:e.label})},e.id))})}),(0,H.jsx)(we,{className:`md:hidden`,value:_.id,onChange:e=>t(`/settings/${e}`),options:p.map(e=>({value:e.id,label:e.label}))}),(0,H.jsxs)(`div`,{className:A(`min-w-0`,_.id!==`project`&&_.id!==`integrate`&&`max-w-2xl`),children:[v?(0,H.jsx)(`div`,{className:`mb-6`,children:(0,H.jsx)(Ne,{})}):null,_.id===`project`&&a?(0,H.jsx)(Ln,{project:a},c):null,_.id===`connectors`&&a?(0,H.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[a.readOnly?(0,H.jsx)(Ht,{children:Vt(a)}):null,(0,H.jsx)(kt,{projectId:a.id,readOnly:a.readOnly},c),(0,H.jsx)(zn,{project:a},c)]}):null,(_.id===`project`||_.id===`connectors`)&&!a&&!o?(0,H.jsx)(xe,{children:R(`settings.noProject`)}):null,_.id===`models`?(0,H.jsx)(Me,{}):null,_.id===`integrate`?(0,H.jsx)(Bt,{}):null,_.id===`account`&&n.data?(0,H.jsx)(wt,{me:n.data}):null,_.id===`plugins`?(0,H.jsx)(ft,{}):null,_.plugin?(0,H.jsx)(Oe,{of:_.plugin,children:(0,H.jsx)(_.plugin.component,{})}):null]})]})]})}export{Bn as SettingsPage};
@@ -1 +0,0 @@
1
- var e=JSON.parse(`[{"version":"v0.2.3","timestamp":1791238481,"commits":[{"id":"38d161b","message":"the mobile app's data folder (apps/mobile/src/data) is in the repository: the ignore rule for the runtime's data folder hid every folder of that name, so main neither typechecked nor passed the mobile app's tests; the rule now names the runtime's two data folders","group":"Fixed","scope":null,"breaking":false},{"id":"251d6f4","message":"with an account signed in, what a local install publishes also runs in the cloud: the published version and its files go to the account's cloud runtime under the ids they have here, which shows the project without editing and makes the link; Settings → Konto signs in or creates an account with an invitation code and shows the credits and when they end; the share dialog says what a wizard lacks in the cloud; a team without building rights changes nothing on the server, and what visitors send is capped in size","group":"Added","scope":null,"breaking":false},{"id":"d80eb4e","message":"inside the mobile app the runner reads in the system's font, like the app's own screens; headings keep the brand's","group":"Added","scope":null,"breaking":false},{"id":"4604875","message":"the mobile app looks native: the system font, Liquid Glass (a blur before iOS 26) on the floating tab bar and the nav buttons, inset grouped lists with hairlines, Add as a form sheet with eight ID boxes, swipe to share or delete a result, files listed as the Files app does, settings rows with icon tiles","group":"Added","scope":null,"breaking":false},{"id":"d9edbe4","message":"the mobile app runs on Android: no iOS-only WebView prop that crashed the Run screen, plain http only for a runtime on this computer, result rows in the wizard's colour","group":"Fixed","scope":null,"breaking":false},{"id":"34a4588","message":"the mobile app (apps/mobile, Expo): wizards added by QR code, ID or link, runs in the runtime's runner with the app's scanner, share sheet, downloads, notifications and sign-in sheet, results kept on the phone and shared from there; engenty.ai's /w/ and /s/ links and engenty-wizards:// open in it","group":"Added","scope":null,"breaking":false},{"id":"2c19636","message":"a run tells the mobile app's device when it is done, failed or waits for the person: the app gives the run its device (POST /api/runs/:id/notify), the runtime asks the Manage-App to push (POST /v1/push in the contract); the app's own requests name the visitor in an x-wizards-visitor header, since iOS merges a Cookie header with its cookie store","group":"Added","scope":null,"breaking":false},{"id":"767e170","message":"the runner works inside the mobile app: ?app=1 drops the web's header, footer and install hint, and window.engentyApp takes over the scanner, share sheet, downloads, wake lock, notifications and account sign-in; a wizard gets an 8-character ID (GET /api/public/codes/:code) and the studio's share dialog shows it with a QR code to download as PNG or SVG; the runtime serves apple-app-site-association and assetlinks.json for the app","group":"Added","scope":null,"breaking":false},{"id":"d8f3712","message":"plan for the mobile app that runs wizards on iOS and Android","group":"Docs","scope":null,"breaking":false}]},{"version":"v0.2.2","timestamp":1791237386,"commits":[{"id":"a6c55de","message":"server.generate asks a model of the current tenant (a class, a prompt, optionally a zod schema for an object), on the models its studio is set up with and paid like any other call; without a model it throws with status 503 and the code no_model, which a route passes on","group":"Added","scope":"plugins","breaking":false},{"id":"e895e50","message":"the documentation deploys to engenty.ai/docs: an image of its own (apps/docs/Dockerfile, a standalone Next.js server on port 8896), and a release tag moves the branch deploy/docs when the site or its pages changed","group":"Deploy","scope":null,"breaking":false},{"id":"4d8b773","message":"a documentation site with a user guide and the developer docs for plugins, built like the engenty repo's: Next.js and Fumadocs in apps/docs, the pages in docs/content, in the app's light and dark colours; docs/plugins.md became its pages, and the product's build, image, package and credits leave the site out","group":"Docs","scope":null,"breaking":false}]},{"version":"v0.2.1","timestamp":1791223500,"commits":[{"id":"9c16b47","message":"the AI apps start the MCP server as the wizards command, after the rename from engenty-wizards","group":"Fixed","scope":null,"breaking":false},{"id":"f118703","message":"the wizards run in the person's own AI apps — connect writes the MCP server into Claude Desktop, Cursor, Codex and others, a run shows the wizard itself as an MCP App widget, and Settings → Einbinden adds an app with one click and tests it until it works","group":"Added","scope":null,"breaking":false}]},{"version":"v0.2.0","timestamp":1791223087,"commits":[{"id":"4404371","message":"a runtime takes plugins: tools for agent steps, routes with tables of their own, listeners on runs that end, and pages, top bar icons and settings sections in the studio; they load from modules/ and PLUGINS_DIR at start and again while it runs","group":"Added","scope":null,"breaking":false}]},{"version":"v0.1.11","timestamp":1791208594,"commits":[{"id":"85facbd","message":"the package is on npm as wizards, and the README's studio picture shows the branches with their conditions","group":"Docs","scope":null,"breaking":false},{"id":"6ca5cfc","message":"a branch that skips steps runs beside them in the editor, with its condition readable on the line; it ran behind the step with the condition hidden","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.10","timestamp":1791206923,"commits":[{"id":"8f35bf0","message":"the README shows the studio with a branched flow and a wizard in use, from its first page to the result","group":"Docs","scope":null,"breaking":false},{"id":"7abf9df","message":"the editor's review notes, tool names and branch labels follow the language; they were German in the English studio","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.9","timestamp":1791203125,"commits":[{"id":"5182fec","message":"the installer is engenty.ai/install.sh (was wizards.sh), and the command and the npm package are wizards (were engenty-wizards); the installer renames an install made under the old names","group":"Changed","scope":null,"breaking":false},{"id":"c6500f9","message":"the proxy sends the runtime /w/ and /s/ with the slash","group":"Docs","scope":null,"breaking":false}]},{"version":"v0.1.8","timestamp":1791196160,"commits":[{"id":"a965d36","message":"the marketplace's pages are written by the site at engenty.ai, at /wizards/<slug> and /de/wizards/<slug>","group":"Docs","scope":null,"breaking":false}]},{"version":"v0.1.7","timestamp":1791194770,"commits":[{"id":"66e9109","message":"a banner in the studio says when a newer release is out; the update installs from there, the runtime restarts into the new version and the page reloads","group":"Added","scope":null,"breaking":false},{"id":"5e27bf6","message":"the studio chat counts the seconds of a turn and says what the architect is doing and thinking; pasted pictures show in the thread and the architect sees them","group":"Added","scope":null,"breaking":false}]},{"version":"v0.1.6","timestamp":1791167380,"commits":[{"id":"481807b","message":"video models render at 720p, or 480p when a step asks; a larger clip is scaled down, and the price follows the resolution","group":"Added","scope":null,"breaking":false},{"id":"bb20f2b","message":"the settings say Codex makes images on the sign-in too; only video and audio still need a key","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.5","timestamp":1791151312,"commits":[{"id":"f4b7e43","message":"plan for a setup by capability","group":"Docs","scope":null,"breaking":false},{"id":"8ddaab7","message":"a wizard says which models it lacks before it runs, and only refuses to start when every path needs one; templates can be filtered by capability, and those this install cannot run are greyed out","group":"Added","scope":null,"breaking":false},{"id":"2689c74","message":"Codex makes images on the ChatGPT plan, and runs each model class on its own model (Luna, Sol, Astra); image, video and voice stay empty without a gateway key instead of naming models nothing can reach","group":"Added","scope":null,"breaking":false}]},{"version":"v0.1.4","timestamp":1791144283,"commits":[{"id":"071e6ca","message":"the changelog's groups read NEW, FIXED, DOCS in every language, like the entries they stand before","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.3","timestamp":1791142528,"commits":[{"id":"32d1698","message":"the publish job fetches the package artifact by name; with one artifact left it no longer lands in its own folder","group":"Fixed","scope":"release","breaking":false}]},{"version":"v0.1.2","timestamp":1791140122,"commits":[{"id":"4bc37b9","message":"a marketplace entry opens in the local studio at localhost:24368 instead of the Mac app's engenty-wizards:// link","group":"Added","scope":null,"breaking":false},{"id":"e09e748","message":"the Mac app is no longer built or offered; the studio offers to install itself as a Chrome app in a banner, starting at login on a Mac is a LaunchAgent that runs the command, and the setup, README and docs point there","group":"Added","scope":null,"breaking":false},{"id":"ab10b49","message":"engenty wizards starts at login — the Mac app opens in the menu bar without its window (\\"Open at Login\\" in its menus), on Linux a systemd user service; the setup asks, \`engenty-wizards autostart on|off\` switches it, and the Mac app's server takes port 24368 too","group":"Added","scope":null,"breaking":false},{"id":"239e338","message":"the setup page installs a missing AI client in its own terminal, and both setups suggest the client whose app is on the Mac — its subscription is most likely already paid for","group":"Added","scope":null,"breaking":false},{"id":"b479df7","message":"an inline terminal's stream sends its last lines and its end before it closes; a page that opens it afterwards gets them all","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.1","timestamp":1791138130,"commits":[{"id":"21f70df","message":"the German tagline on the sign-in page follows the new one","group":"Docs","scope":null,"breaking":false},{"id":"765ae7c","message":"the studio says when a newer release is out and, on an install made by wizards.sh, updates it from the footer","group":"Added","scope":null,"breaking":false},{"id":"825da6c","message":"the tagline is \\"Make a wish. Get your wizard.\\" In the README, the npm package description and the banner of wizards.sh.","group":"Docs","scope":null,"breaking":false},{"id":"05e2e5c","message":"the local runtime listens on 24368, AGENT on a phone keypad; the Docker image stays on 8891","group":"Added","scope":null,"breaking":false},{"id":"71bb778","message":"Ctrl-C stops engenty-wizards again — the login shell that reads the person's variables runs in a session of its own and no longer keeps the terminal","group":"Fixed","scope":null,"breaking":false},{"id":"ee20646","message":"wizards.sh opens with the tall engenty — one eye; it wakes up, looks around, hops and blinks","group":"Added","scope":null,"breaking":false},{"id":"81d4f21","message":"the studio moves to /studio; the root of a host is free for a landing page","group":"Added","scope":null,"breaking":false},{"id":"f6058fd","message":"the marketplace is an app of its own; the runtime searches it live and keeps its starters and the starred entries for offline use","group":"Added","scope":null,"breaking":false},{"id":"e6fdeab","message":"engenty-wizards://new?starter=<id> opens a marketplace template in the desktop app","group":"Added","scope":null,"breaking":false}]},{"version":"v0.1.0","timestamp":1791100948,"commits":[{"id":"71cc075","message":"install with wizards.sh; the local install and how its pieces share it","group":"Docs","scope":null,"breaking":false},{"id":"6ae641d","message":"the desktop app is a window on the local install and brings no runtime along","group":"Added","scope":null,"breaking":false},{"id":"9c9dbb8","message":"an installer, wizards.sh, that every runtime serves","group":"Added","scope":null,"breaking":false},{"id":"34d0a1a","message":"an engenty-wizards command for a local install in ~/.engenty/wizards","group":"Added","scope":null,"breaking":false},{"id":"4ac6329","message":"the search skips filler words with umlauts too","group":"Fixed","scope":null,"breaking":false},{"id":"3bda9a6","message":"the gallery's footer stays without version, changelog and open-source links","group":"Fixed","scope":null,"breaking":false},{"id":"9e65725","message":"a changelog and open-source credits in the studio's footer; pnpm release cuts a release from the commits","group":"Added","scope":null,"breaking":false},{"id":"45d2906","message":"an entry's search terms are scored one by one, not as one long text","group":"Fixed","scope":null,"breaking":false},{"id":"648819c","message":"marketplace entries carry the words people ask for, so a search by words finds them","group":"Added","scope":null,"breaking":false},{"id":"0838373","message":"one project unless the limit says more; an account page; previews and layouts in the project settings","group":"Added","scope":null,"breaking":false},{"id":"8da2aaf","message":"a project holds base infos, logos, colours, assets, documents and facts for all its wizards","group":"Added","scope":null,"breaking":false},{"id":"8679ae2","message":"the gallery has the studio's footer line","group":"Fixed","scope":null,"breaking":false},{"id":"d5086f3","message":"the gallery's field is narrower","group":"Fixed","scope":null,"breaking":false},{"id":"4a82b26","message":"the gallery invites to start a wizard from a template","group":"Other","scope":null,"breaking":false},{"id":"07d2def","message":"a template's header is the dialog's own colour under a spotlight; in the light a tinted grey","group":"Fixed","scope":null,"breaking":false},{"id":"d10be9f","message":"a template opens with its flow as a diagram; the gallery's field is narrower, its chips centred","group":"Added","scope":null,"breaking":false},{"id":"fbee998","message":"the gallery says what it is, compact and from the left; its search is a two-line field to write into","group":"Added","scope":null,"breaking":false},{"id":"478f271","message":"the gallery opens with one question and the search field; quieter filter chips","group":"Added","scope":null,"breaking":false},{"id":"15d7f94","message":"the marketplace search asks the model for the signed-in tenant; a sentence without a model keeps only close finds","group":"Fixed","scope":null,"breaking":false},{"id":"c254357","message":"a marketplace of wizards to start from, with a gallery, admin, translation and search","group":"Added","scope":null,"breaking":false},{"id":"4d6e270","message":"AI media is marked in its file and labelled with the EU icons (AI Act, Art. 50)","group":"Added","scope":null,"breaking":false},{"id":"f86f070","message":"two writers of the same blob no longer share a temporary file","group":"Fixed","scope":null,"breaking":false},{"id":"c6a06cc","message":"plan for definition versions and importing older packages","group":"Docs","scope":null,"breaking":false},{"id":"a37e826","message":"wizard packages carry their own extension, .wizard","group":"Added","scope":null,"breaking":false},{"id":"e104574","message":"wizards export as a package (.wizard.zip) and import into a project","group":"Added","scope":null,"breaking":false},{"id":"b389539","message":"the editor pane's resize handle is a short, thick pill","group":"Added","scope":null,"breaking":false},{"id":"670c3ce","message":"chat composer takes files (+) and dictation","group":"Added","scope":null,"breaking":false},{"id":"766f6fd","message":"editor side pane resizable; Steps tab steps with ← / →, header and strip spacing fixed","group":"Added","scope":null,"breaking":false},{"id":"8205c88","message":"the arrow on a live wizard's card opens it in a new tab","group":"Added","scope":null,"breaking":false},{"id":"2696a50","message":"the AI clients page says it is an MCP server and sets a client up step by step","group":"Added","scope":null,"breaking":false},{"id":"6004a7d","message":"settings in sub-pages with a nav on the left (a dropdown on phones); MCP servers under Connectors","group":"Added","scope":null,"breaking":false},{"id":"49054fa","message":"settings button in the top bar; the user menu closes on Einstellungen","group":"Added","scope":null,"breaking":false},{"id":"65c9867","message":"at most 5 projects per tenant","group":"Added","scope":null,"breaking":false},{"id":"7ecca24","message":"the project switcher switches the wizard list","group":"Fixed","scope":null,"breaking":false},{"id":"c037604","message":"light / dark in the user menu, in place of the top bar's toggle","group":"Added","scope":null,"breaking":false},{"id":"ef464ab","message":"upload limits and sorting, pictures while a step works, faster photo steps, a feedback box on reviews","group":"Added","scope":null,"breaking":false},{"id":"1cbc02f","message":"starters for receipts, video ad, property film, window offer, menu plan and ten website helpers","group":"Added","scope":null,"breaking":false},{"id":"8069115","message":"photos reach an installed AI client, and a photo without text is described","group":"Fixed","scope":null,"breaking":false},{"id":"013f7df","message":"embed a wizard in a website, inline or behind a button that opens it in a window","group":"Added","scope":null,"breaking":false},{"id":"78c2a2a","message":"the editor at /edit/<id>, signed-out visitors of the start page go to SIGNED_OUT_URL","group":"Fixed","scope":null,"breaking":false},{"id":"deb4942","message":"wizards at /w/<token>, the app at the root of https://engenty.ai","group":"Added","scope":null,"breaking":false},{"id":"b811b4c","message":"serve the app under a path (https://engenty.ai/w)","group":"Added","scope":null,"breaking":false},{"id":"4821fb1","message":"the hosted addresses (engenty.ai) as defaults, no private repo names in the public sources","group":"Fixed","scope":null,"breaking":false},{"id":"ca2207e","message":"the drop engenty as app icon, tray icon and favicon","group":"Added","scope":null,"breaking":false},{"id":"90fcbce","message":"a README for people who install it, developer notes in docs/development.md","group":"Docs","scope":null,"breaking":false},{"id":"4b0c54a","message":"a built runtime links to its own port, the sandbox falls back to agentOS","group":"Fixed","scope":null,"breaking":false},{"id":"7071edf","message":"no links to the clients' pages, a placeholder dot in the footer","group":"Fixed","scope":"setup","breaking":false},{"id":"14171bf","message":"installed AI clients as the model of a local runtime, first-start setup as a wizard","group":"Added","scope":null,"breaking":false},{"id":"ca3f3a7","message":"align vertical head turn with pointer gaze","group":"Fixed","scope":"engenty","breaking":false},{"id":"e1f04ff","message":"add furry and jelly renderers with an interactive builder","group":"Added","scope":"engenty","breaking":false},{"id":"99207af","message":"whole credits in the top bar, a footer line with the account's places","group":"Added","scope":null,"breaking":false},{"id":"e498ab1","message":"decision steps — yes/no and choice output fields, branches on step outputs","group":"Added","scope":null,"breaking":false},{"id":"e83a433","message":"pnpm workspace with apps/ and packages/","group":"Changed","scope":null,"breaking":false},{"id":"281e3a3","message":"desktop app — Tauri shell with the runtime as a Node sidecar","group":"Added","scope":null,"breaking":false},{"id":"9296521","message":"a database per tenant, model classes, sign-in at the Manage-App, phone inputs","group":"Added","scope":null,"breaking":false},{"id":"63b1693","message":"engenty's built-in connectors — Gmail, Drive, Calendar, Contacts, Outlook, OneDrive, Slack, GitHub, HubSpot, S3","group":"Added","scope":null,"breaking":false},{"id":"cd431c9","message":"connectors from the integrations registry, asked-first changes in connected accounts","group":"Added","scope":null,"breaking":false},{"id":"8dbe30d","message":"harden browser and file downloads, step navigation in the inspector, store and mailbox docs","group":"Added","scope":null,"breaking":false},{"id":"54370e8","message":"light/dark mode with engenty-coloured dark pages, jelly and fur coats, quiet focus rings","group":"Added","scope":null,"breaking":false},{"id":"371b033","message":"lists and connections kept between runs, mail and browser tools, camera and ask panel","group":"Added","scope":null,"breaking":false},{"id":"07df228","message":"setup per AI client and a self-served plugin with /wizard","group":"Added","scope":null,"breaking":false},{"id":"de27ae8","message":"interactive widgets with a workspace per wizard, shareable results","group":"Added","scope":null,"breaking":false},{"id":"12854e1","message":"live studio — MCP and other edits show up without a reload","group":"Added","scope":null,"breaking":false},{"id":"7f72420","message":"OAuth sign-in for MCP clients, connected apps in settings","group":"Added","scope":null,"breaking":false},{"id":"3014699","message":"MCP endpoint for authoring wizards with personal API keys","group":"Added","scope":null,"breaking":false},{"id":"985e612","message":"engenty wizards — prompt-built AI wizards with shareable links","group":"Added","scope":null,"breaking":false}]}]`);export{e as default};
@@ -1 +0,0 @@
1
- @import "https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500&family=Space+Grotesk:wght@400;500;600;700&display=swap";@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-border-default:1px solid #bbb;--xy-node-border-selected-default:1px solid #555;--xy-handle-background-color-default:#333;--xy-selection-background-color-default:#9696b41a;--xy-selection-border-default:1px dotted #9b9b9bcc;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#555;--xy-background-pattern-lines-color-default:#333;--xy-background-pattern-cross-color-default:#333;--xy-node-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));min-width:5px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{justify-content:center;align-items:center;width:26px;height:26px;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border:var(--xy-node-border,var(--xy-node-border-default));color:var(--xy-node-color,var(--xy-node-color-default))}.react-flow__node-input.selected,.react-flow__node-input:focus,.react-flow__node-input:focus-visible,.react-flow__node-default.selected,.react-flow__node-default:focus,.react-flow__node-default:focus-visible,.react-flow__node-output.selected,.react-flow__node-output:focus,.react-flow__node-output:focus-visible,.react-flow__node-group.selected,.react-flow__node-group:focus,.react-flow__node-group:focus-visible{border:var(--xy-node-border-selected,var(--xy-node-border-selected-default));outline:none}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}@layer theme{:root,:host{--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-md:12px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--f-ui);--default-mono-font-family:var(--f-mono);--color-card:var(--card)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html:not([data-desktop]) :is(button,select,summary,[role=button],[role=switch],label:has(input[type=file]),input[type=color]):not(:disabled){cursor:pointer}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-x-6{inset-inline:calc(var(--spacing) * 6)}.inset-y-0{inset-block:0}.-top-0\.5{top:calc(var(--spacing) * -.5)}.-top-1{top:calc(var(--spacing) * -1)}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.-top-2\.5{top:calc(var(--spacing) * -2.5)}.-top-3{top:calc(var(--spacing) * -3)}.-top-4{top:calc(var(--spacing) * -4)}.-top-14{top:calc(var(--spacing) * -14)}.-top-28{top:calc(var(--spacing) * -28)}.top-0{top:0}.top-0\.5{top:calc(var(--spacing) * .5)}.top-1{top:var(--spacing)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-6{top:calc(var(--spacing) * 6)}.top-11{top:calc(var(--spacing) * 11)}.top-12{top:calc(var(--spacing) * 12)}.top-24{top:calc(var(--spacing) * 24)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-1{right:calc(var(--spacing) * -1)}.-right-1\.5{right:calc(var(--spacing) * -1.5)}.-right-10{right:calc(var(--spacing) * -10)}.right-0{right:0}.right-1{right:var(--spacing)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-9{right:calc(var(--spacing) * 9)}.right-10{right:calc(var(--spacing) * 10)}.-bottom-5{bottom:calc(var(--spacing) * -5)}.bottom-0{bottom:0}.bottom-0\.5{bottom:calc(var(--spacing) * .5)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-12{bottom:calc(var(--spacing) * 12)}.bottom-\[22\%\]{bottom:22%}.-left-1\.5{left:calc(var(--spacing) * -1.5)}.left-0{left:0}.left-0\.5{left:calc(var(--spacing) * .5)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-\[9px\]{left:9px}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.order-first{order:-9999}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-5{grid-column:span 5/span 5}.col-span-full{grid-column:1/-1}.col-start-6{grid-column-start:6}.row-start-1{grid-row-start:1}.m-3{margin:calc(var(--spacing) * 3)}.m-auto{margin:auto}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-5{margin-inline:calc(var(--spacing) * -5)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-auto{margin-inline:auto}.-my-1{margin-block:calc(var(--spacing) * -1)}.my-1{margin-block:var(--spacing)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.-mt-1\.5{margin-top:calc(var(--spacing) * -1.5)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.-mt-3{margin-top:calc(var(--spacing) * -3)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-3\.5{margin-top:calc(var(--spacing) * 3.5)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-9{margin-top:calc(var(--spacing) * 9)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mt-\[7px\]{margin-top:7px}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing) * -1)}.-mr-1\.5{margin-right:calc(var(--spacing) * -1.5)}.-mr-2{margin-right:calc(var(--spacing) * -2)}.mr-1{margin-right:var(--spacing)}.mr-\[0\.09em\]{margin-right:.09em}.mr-auto{margin-right:auto}.-mb-3{margin-bottom:calc(var(--spacing) * -3)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-1\.5{margin-left:calc(var(--spacing) * -1.5)}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-\[0\.06em\]{margin-left:.06em}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-\[5\/2\]{aspect-ratio:5/2}.aspect-square{aspect-ratio:1}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-28{width:calc(var(--spacing) * 28);height:calc(var(--spacing) * 28)}.size-80{width:calc(var(--spacing) * 80);height:calc(var(--spacing) * 80)}.size-\[3px\]{width:3px;height:3px}.size-\[22px\]{width:22px;height:22px}.size-\[54px\]{width:54px;height:54px}.size-\[72px\]{width:72px;height:72px}.size-full{width:100%;height:100%}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-28{height:calc(var(--spacing) * 28)}.h-40{height:calc(var(--spacing) * 40)}.h-44{height:calc(var(--spacing) * 44)}.h-\[3px\]{height:3px}.h-\[28rem\]{height:28rem}.h-\[46vh\]{height:46vh}.h-\[55vh\]{height:55vh}.h-\[70dvh\]{height:70dvh}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[38vh\]{max-height:38vh}.max-h-\[46vh\]{max-height:46vh}.max-h-\[60dvh\]{max-height:60dvh}.max-h-\[68dvh\]{max-height:68dvh}.max-h-\[70dvh\]{max-height:70dvh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[76vh\]{max-height:76vh}.max-h-\[200px\]{max-height:200px}.max-h-\[520px\]{max-height:520px}.max-h-\[calc\(100dvh-32px\)\]{max-height:calc(100dvh - 32px)}.max-h-\[calc\(100dvh-48px\)\]{max-height:calc(100dvh - 48px)}.min-h-0{min-height:0}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-48{min-height:calc(var(--spacing) * 48)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-\[2\.6em\]{min-height:2.6em}.min-h-\[6\.5rem\]{min-height:6.5rem}.min-h-\[7rem\]{min-height:7rem}.min-h-\[40px\]{min-height:40px}.min-h-\[45vh\]{min-height:45vh}.min-h-\[60dvh\]{min-height:60dvh}.min-h-\[124px\]{min-height:124px}.min-h-dvh{min-height:100dvh}.min-h-full{min-height:100%}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-\[222\%\]{width:222%}.w-\[280px\]{width:280px}.w-\[380px\]{width:380px}.w-\[calc\(100\%\+0\.5rem\)\]{width:calc(100% + .5rem)}.w-\[calc\(100\%-32px\)\]{width:calc(100% - 32px)}.w-\[calc\(100\%-48px\)\]{width:calc(100% - 48px)}.w-\[min\(68\%\,320px\)\]{width:min(68%,320px)}.w-\[var\(--ai-disc\)\]{width:var(--ai-disc)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[60\%\]{max-width:60%}.max-w-\[88rem\]{max-width:88rem}.max-w-\[160px\]{max-width:160px}.max-w-\[620px\]{max-width:620px}.max-w-\[640px\]{max-width:640px}.max-w-\[680px\]{max-width:680px}.max-w-\[1240px\]{max-width:1240px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-60{min-width:calc(var(--spacing) * 60)}.min-w-\[7\.5rem\]{min-width:7.5rem}.min-w-\[9rem\]{min-width:9rem}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-\[12rem\]{flex-basis:12rem}.basis-full{flex-basis:100%}.origin-top{transform-origin:top}.origin-top-left{transform-origin:0 0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[2px\]{--tw-translate-x:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[22px\]{--tw-translate-x:22px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-scale-x-100{--tw-scale-x:calc(100% * -1);scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\[0\.45\]{scale:.45}.-rotate-90{rotate:-90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-crosshair{cursor:crosshair}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-zoom-in{cursor:zoom-in}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.\[scrollbar-width\:none\]{scrollbar-width:none}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[22px_minmax\(0\,1fr\)\]{grid-template-columns:22px minmax(0,1fr)}.grid-cols-\[minmax\(0\,1fr\)_auto_auto\]{grid-template-columns:minmax(0,1fr) auto auto}.grid-cols-\[repeat\(auto-fill\,minmax\(184px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(184px,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(220px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-7{gap:calc(var(--spacing) * 7)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-9{gap:calc(var(--spacing) * 9)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-x-1{column-gap:var(--spacing)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-2\.5{column-gap:calc(var(--spacing) * 2.5)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-7{column-gap:calc(var(--spacing) * 7)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.gap-y-5{row-gap:calc(var(--spacing) * 5)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border-soft>:not(:last-child)){border-color:var(--border-soft)}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--radius) * 2)}.rounded-3xl{border-radius:calc(var(--radius) * 3)}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .75)}.rounded-xl{border-radius:calc(var(--radius) * 1.5)}.rounded-br-md{border-bottom-right-radius:calc(var(--radius) * .75)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[\#1d1a17\]\/25{border-color:oklab(22.0098% .00284923 .00685373/.25)}.border-border{border-color:var(--border)}.border-border-soft{border-color:var(--border-soft)}.border-ember{border-color:var(--ember)}.border-ink-4{border-color:var(--ink-4)}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.border-white\/40{border-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.border-white\/90{border-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.border-white\/90{border-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.bg-\(--coin-bg\,var\(--color-card\)\){background-color:var(--coin-bg,var(--color-card))}.bg-\[\#0f1424\]{background-color:#0f1424}.bg-\[\#e5484d\]{background-color:#e5484d}.bg-\[oklch\(20\%_0\.01_60\/0\.22\)\]{background-color:oklch(20% .01 60/.22)}.bg-accent{background-color:var(--accent)}.bg-amber{background-color:var(--amber)}.bg-amber-tint{background-color:var(--amber-tint)}.bg-background,.bg-background\/85{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/85{background-color:color-mix(in oklab, var(--background) 85%, transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.bg-black\/10{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.bg-border-soft{background-color:var(--border-soft)}.bg-card,.bg-card\/90{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/90{background-color:color-mix(in oklab, var(--card) 90%, transparent)}}.bg-card\/95{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/95{background-color:color-mix(in oklab, var(--card) 95%, transparent)}}.bg-cobalt{background-color:var(--cobalt)}.bg-cobalt-tint{background-color:var(--cobalt-tint)}.bg-ember{background-color:var(--ember)}.bg-ember-tint,.bg-ember-tint\/50{background-color:var(--ember-tint)}@supports (color:color-mix(in lab, red, red)){.bg-ember-tint\/50{background-color:color-mix(in oklab, var(--ember-tint) 50%, transparent)}}.bg-ember-veil{background-color:var(--ember-veil)}.bg-foreground{background-color:var(--foreground)}.bg-ink{background-color:var(--ink)}.bg-ink-4,.bg-ink-4\/40{background-color:var(--ink-4)}@supports (color:color-mix(in lab, red, red)){.bg-ink-4\/40{background-color:color-mix(in oklab, var(--ink-4) 40%, transparent)}}.bg-moss{background-color:var(--moss)}.bg-moss-tint{background-color:var(--moss-tint)}.bg-muted{background-color:var(--muted)}.bg-paper{background-color:var(--paper)}.bg-paper-2,.bg-paper-2\/60{background-color:var(--paper-2)}@supports (color:color-mix(in lab, red, red)){.bg-paper-2\/60{background-color:color-mix(in oklab, var(--paper-2) 60%, transparent)}}.bg-paper-3{background-color:var(--paper-3)}.bg-primary{background-color:var(--primary)}.bg-rose{background-color:var(--rose)}.bg-rose-tint{background-color:var(--rose-tint)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.bg-white\/12{background-color:#ffffff1f}@supports (color:color-mix(in lab, red, red)){.bg-white\/12{background-color:color-mix(in oklab, var(--color-white) 12%, transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.bg-white\/\[0\.07\]{background-color:#ffffff12}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.07\]{background-color:color-mix(in oklab, var(--color-white) 7.0%, transparent)}}.bg-linear-to-br{--tw-gradient-position:to bottom right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-br{--tw-gradient-position:to bottom right in oklab}}.bg-linear-to-br{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-t{--tw-gradient-position:to top}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-t{--tw-gradient-position:to top in oklab}}.bg-linear-to-t{background-image:linear-gradient(var(--tw-gradient-stops))}.from-card{--tw-gradient-from:var(--card);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-ember-tint{--tw-gradient-from:var(--ember-tint);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-card{--tw-gradient-via:var(--card);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-card{--tw-gradient-to:var(--card);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-amber{fill:var(--amber)}.fill-current{fill:currentColor}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-7{padding-block:calc(var(--spacing) * 7)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-14{padding-block:calc(var(--spacing) * 14)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-24{padding-block:calc(var(--spacing) * 24)}.py-\[3px\]{padding-block:3px}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pr-1{padding-right:var(--spacing)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pr-20{padding-right:calc(var(--spacing) * 20)}.pr-32{padding-right:calc(var(--spacing) * 32)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pl-1{padding-left:var(--spacing)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-5\.5{padding-left:calc(var(--spacing) * 5.5)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-display{font-family:var(--f-display)}.font-mono{font-family:var(--f-mono)}.font-sans{font-family:var(--f-ui)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[20px\]{font-size:20px}.text-\[22px\]{font-size:22px}.text-\[26px\]{font-size:26px}.text-\[28px\]{font-size:28px}.text-\[30px\]{font-size:30px}.text-\[32px\]{font-size:32px}.text-\[34px\]{font-size:34px}.text-\[clamp\(28px\,3vw\,40px\)\]{font-size:clamp(28px,3vw,40px)}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-\[1\.1\]{--tw-leading:1.1;line-height:1.1}.leading-\[1\.5\]{--tw-leading:1.5;line-height:1.5}.leading-\[1\.06\]{--tw-leading:1.06;line-height:1.06}.leading-\[1\.08\]{--tw-leading:1.08;line-height:1.08}.leading-\[1\.15\]{--tw-leading:1.15;line-height:1.15}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.02em\]{--tw-tracking:-.02em;letter-spacing:-.02em}.tracking-\[-0\.03em\]{--tw-tracking:-.03em;letter-spacing:-.03em}.tracking-\[0\.06em\]{--tw-tracking:.06em;letter-spacing:.06em}.tracking-\[0\.07em\]{--tw-tracking:.07em;letter-spacing:.07em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#1d1a17\]\/40{color:oklab(22.0098% .00284923 .00685373/.4)}.text-\[oklch\(32\%_0\.15_262\)\]{color:oklch(32% .15 262)}.text-amber{color:var(--amber)}.text-background{color:var(--background)}.text-black{color:var(--color-black)}.text-cobalt{color:var(--cobalt)}.text-ember{color:var(--ember)}.text-ember-strong{color:var(--ember-strong)}.text-foreground{color:var(--foreground)}.text-ink{color:var(--ink)}.text-ink-2{color:var(--ink-2)}.text-ink-3{color:var(--ink-3)}.text-ink-4{color:var(--ink-4)}.text-moss{color:var(--moss)}.text-muted-foreground{color:var(--muted-foreground)}.text-paper{color:var(--paper)}.text-primary-foreground{color:var(--primary-foreground)}.text-rose{color:var(--rose)}.text-white{color:var(--color-white)}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab, red, red)){.text-white\/40{color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.text-white\/55{color:#ffffff8c}@supports (color:color-mix(in lab, red, red)){.text-white\/55{color:color-mix(in oklab, var(--color-white) 55%, transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab, red, red)){.text-white\/60{color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.text-white\/65{color:#ffffffa6}@supports (color:color-mix(in lab, red, red)){.text-white\/65{color:color-mix(in oklab, var(--color-white) 65%, transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\/70{color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.text-white\/75{color:#ffffffbf}@supports (color:color-mix(in lab, red, red)){.text-white\/75{color:color-mix(in oklab, var(--color-white) 75%, transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab, red, red)){.text-white\/80{color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.text-white\/85{color:#ffffffd9}@supports (color:color-mix(in lab, red, red)){.text-white\/85{color:color-mix(in oklab, var(--color-white) 85%, transparent)}}.uppercase{text-transform:uppercase}.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,)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-\[var\(--ember\)\]{accent-color:var(--ember)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.opacity-\[0\.14\]{opacity:.14}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_var\(--border-soft\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--border-soft));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_100vmax_rgb\(0_0_0\/0\.35\)\]{--tw-shadow:0 0 0 100vmax var(--tw-shadow-color,#00000059);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_1px_0_oklch\(0\%_0_0\/0\.08\)\]{--tw-shadow:0 1px 0 var(--tw-shadow-color,oklch(0% 0 0/.08));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_1px_3px_rgba\(0\,0\,0\,0\.25\)\]{--tw-shadow:0 1px 3px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_2px_8px_oklch\(0\%_0_0\/0\.22\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,oklch(0% 0 0/.22));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_6px_24px_oklch\(88\%_0\.17_150\/0\.35\)\]{--tw-shadow:0 6px 24px var(--tw-shadow-color,oklch(88% .17 150/.35));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_1px_0_oklch\(0\%_0_0\/0\.02\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,oklch(0% 0 0/.02));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-elevated{--tw-shadow:var(--shadow-ember-elevated);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-overlay{--tw-shadow:var(--shadow-ember-overlay);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-soft{--tw-shadow:var(--shadow-ember-soft);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-amber\/30{--tw-ring-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.ring-amber\/30{--tw-ring-color:color-mix(in oklab, var(--amber) 30%, transparent)}}.ring-border{--tw-ring-color:var(--border)}.ring-border-soft,.ring-border-soft\/60{--tw-ring-color:var(--border-soft)}@supports (color:color-mix(in lab, red, red)){.ring-border-soft\/60{--tw-ring-color:color-mix(in oklab, var(--border-soft) 60%, transparent)}}.ring-card{--tw-ring-color:var(--card)}.ring-ember{--tw-ring-color:var(--ember)}.ring-ember-strong\/40{--tw-ring-color:var(--ember-strong)}@supports (color:color-mix(in lab, red, red)){.ring-ember-strong\/40{--tw-ring-color:color-mix(in oklab, var(--ember-strong) 40%, transparent)}}.ring-ember-veil{--tw-ring-color:var(--ember-veil)}.ring-ember\/60{--tw-ring-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.ring-ember\/60{--tw-ring-color:color-mix(in oklab, var(--ember) 60%, transparent)}}.ring-input{--tw-ring-color:var(--input)}.ring-moss{--tw-ring-color:var(--moss)}.ring-rose\/30{--tw-ring-color:var(--rose)}@supports (color:color-mix(in lab, red, red)){.ring-rose\/30{--tw-ring-color:color-mix(in oklab, var(--rose) 30%, transparent)}}.ring-white\/12{--tw-ring-color:#ffffff1f}@supports (color:color-mix(in lab, red, red)){.ring-white\/12{--tw-ring-color:color-mix(in oklab, var(--color-white) 12%, transparent)}}.ring-white\/15{--tw-ring-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.ring-white\/15{--tw-ring-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));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{--tw-backdrop-blur:blur(8px);-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-\[1px\]{--tw-backdrop-blur:blur(1px);-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-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background\,filter\,color\,transform\]{transition-property:background,filter,color,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\,color\,box-shadow\,filter\]{transition-property:background-color,color,box-shadow,filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\,color\,box-shadow\]{transition-property:background-color,color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[height\]{transition-property:height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,translate\]{transition-property:left,translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,scale\,left\]{transition-property:opacity,scale,left;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.ease-\[cubic-bezier\(0\.3\,0\.7\,0\.2\,1\)\]{--tw-ease:cubic-bezier(.3,.7,.2,1);transition-timing-function:cubic-bezier(.3,.7,.2,1)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:bg-ember\/70:is(:where(.group):hover *){background-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-ember\/70:is(:where(.group):hover *){background-color:color-mix(in oklab, var(--ember) 70%, transparent)}}.group-hover\:text-white\/80:is(:where(.group):hover *){color:#fffc}@supports (color:color-mix(in lab, red, red)){.group-hover\:text-white\/80:is(:where(.group):hover *){color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.group-hover\:opacity-0:is(:where(.group):hover *){opacity:0}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-focus-visible\:bg-ember:is(:where(.group):focus-visible *){background-color:var(--ember)}.group-focus-visible\:opacity-0:is(:where(.group):focus-visible *){opacity:0}.group-focus-visible\:opacity-100:is(:where(.group):focus-visible *){opacity:1}.group-active\:h-16:is(:where(.group):active *){height:calc(var(--spacing) * 16)}.group-active\:bg-ember:is(:where(.group):active *){background-color:var(--ember)}@media (hover:hover){.group-enabled\:group-hover\:translate-x-0\.5:is(:where(.group):enabled *):is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}}.placeholder\:text-ink-4::placeholder{color:var(--ink-4)}.placeholder\:text-transparent::placeholder{color:#0000}.backdrop\:bg-\[oklch\(20\%_0\.01_60\/0\.28\)\]::backdrop{background-color:oklch(20% .01 60/.28)}.backdrop\:backdrop-blur-\[2px\]::backdrop{--tw-backdrop-blur:blur(2px);-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,)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:-inset-x-1:before{content:var(--tw-content);inset-inline:calc(var(--spacing) * -1)}.before\:-inset-y-2\.5:before{content:var(--tw-content);inset-block:calc(var(--spacing) * -2.5)}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:border-l-0:first-child{border-left-style:var(--tw-border-style);border-left-width:0}.first\:pt-0:first-child{padding-top:0}.first\:pl-0:first-child{padding-left:0}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:pb-0:last-child{padding-bottom:0}.focus-within\:w-full:focus-within{width:100%}.focus-within\:border-focus:focus-within{border-color:var(--focus-line)}.focus-within\:opacity-100:focus-within{opacity:1}.focus-within\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-4:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-focus:focus-within{--tw-ring-color:var(--focus-line)}.focus-within\:ring-focus-glow:focus-within{--tw-ring-color:var(--focus-glow)}@media (hover:hover){.hover\:w-\[var\(--ai-long\)\]:hover{width:var(--ai-long)}.hover\:border-ember:hover{border-color:var(--ember)}.hover\:border-ink-4:hover{border-color:var(--ink-4)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-card:hover,.hover\:bg-card\/60:hover{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-card\/60:hover{background-color:color-mix(in oklab, var(--card) 60%, transparent)}}.hover\:bg-paper-2:hover{background-color:var(--paper-2)}.hover\:bg-paper-3:hover{background-color:var(--paper-3)}.hover\:bg-rose-tint:hover{background-color:var(--rose-tint)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white\/15:hover{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/15:hover{background-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.hover\:bg-white\/90:hover{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/90:hover{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.hover\:text-ink:hover{color:var(--ink)}.hover\:text-ink-2:hover{color:var(--ink-2)}.hover\:text-rose:hover{color:var(--rose)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-elevated:hover{--tw-shadow:var(--shadow-ember-elevated);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:ring-border:hover{--tw-ring-color:var(--border)}.hover\:ring-border-soft:hover{--tw-ring-color:var(--border-soft)}.hover\:ring-ember:hover{--tw-ring-color:var(--ember)}.hover\:ring-ink-4:hover{--tw-ring-color:var(--ink-4)}.hover\:brightness-105:hover{--tw-brightness:brightness(105%);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,)}.hover\:brightness-\[1\.06\]:hover{--tw-brightness:brightness(1.06);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,)}}.focus\:border-ember:focus{border-color:var(--ember)}.focus\:border-focus:focus{border-color:var(--focus-line)}.focus\:bg-card:focus{background-color:var(--card)}.focus\:text-ink:focus{color:var(--ink)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-4:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-border:focus{--tw-ring-color:var(--border)}.focus\:ring-focus-glow:focus{--tw-ring-color:var(--focus-glow)}.focus-visible\:w-\[var\(--ai-long\)\]:focus-visible{width:var(--ai-long)}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-focus:focus-visible{--tw-ring-color:var(--focus-line)}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-\[0\.98\]:active{scale:.98}.active\:brightness-95:active{--tw-brightness:brightness(95%);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,)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.has-\[input\:not\(\:placeholder-shown\)\]\:w-full:has(:is(input:not(:placeholder-shown))){width:100%}.aria-pressed\:bg-foreground[aria-pressed=true]{background-color:var(--foreground)}.aria-pressed\:text-background[aria-pressed=true]{color:var(--background)}.aria-pressed\:ring-2[aria-pressed=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-pressed\:ring-current[aria-pressed=true]{--tw-ring-color:currentcolor}.data-\[open\=true\]\:w-\[var\(--ai-long\)\][data-open=true]{width:var(--ai-long)}.data-\[over\]\:border-focus[data-over]{border-color:var(--focus-line)}.data-\[over\]\:bg-paper-2[data-over]{background-color:var(--paper-2)}.data-\[over\]\:text-ink[data-over]{color:var(--ink)}@media (prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}@media not all and (width>=420px){.max-\[420px\]\:hidden{display:none}}@media not all and (width>=64rem){.max-lg\:pointer-events-none{pointer-events:none}.max-lg\:left-1\/2{left:50%}.max-lg\:hidden{display:none}.max-lg\:h-0{height:0}.max-lg\:h-\[148px\]{height:148px}.max-lg\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.max-lg\:scale-\[0\.4\]{scale:.4}.max-lg\:scale-\[0\.6\]{scale:.6}.max-lg\:text-center{text-align:center}.max-lg\:opacity-0{opacity:0}.max-lg\:opacity-100{opacity:1}}@media not all and (width>=48rem){.max-md\:hidden{display:none}}@media not all and (width>=40rem){.max-sm\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.max-sm\:col-span-3{grid-column:span 3/span 3}.max-sm\:m-0{margin:0}.max-sm\:-mx-4{margin-inline:calc(var(--spacing) * -4)}.max-sm\:ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.max-sm\:hidden{display:none}.max-sm\:size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.max-sm\:h-dvh{height:100dvh}.max-sm\:max-h-none{max-height:none}.max-sm\:w-auto{width:auto}.max-sm\:w-full{width:100%}.max-sm\:max-w-none{max-width:none}.max-sm\:basis-full{flex-basis:100%}.max-sm\:\[scrollbar-width\:none\]{scrollbar-width:none}.max-sm\:overflow-x-auto{overflow-x:auto}.max-sm\:overflow-y-auto{overflow-y:auto}.max-sm\:rounded-none{border-radius:0}.max-sm\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.max-sm\:border-border-soft{border-color:var(--border-soft)}.max-sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.max-sm\:pr-10{padding-right:calc(var(--spacing) * 10)}.max-sm\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.max-sm\:font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}}@media (width>=40rem){.sm\:-top-3\.5{top:calc(var(--spacing) * -3.5)}.sm\:-right-3\.5{right:calc(var(--spacing) * -3.5)}.sm\:order-none{order:0}.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-auto{grid-column-start:auto}.sm\:row-start-auto{grid-row-start:auto}.sm\:-mx-7{margin-inline:calc(var(--spacing) * -7)}.sm\:mt-6{margin-top:calc(var(--spacing) * 6)}.sm\:mr-1{margin-right:var(--spacing)}.sm\:block{display:block}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:inline-flex{display:inline-flex}.sm\:size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.sm\:h-11{height:calc(var(--spacing) * 11)}.sm\:min-h-0{min-height:0}.sm\:min-h-\[136px\]{min-height:136px}.sm\:w-32{width:calc(var(--spacing) * 32)}.sm\:w-56{width:calc(var(--spacing) * 56)}.sm\:w-auto{width:auto}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-4xl{max-width:var(--container-4xl)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:flex-1{flex:1}.sm\:basis-0{flex-basis:0}.sm\:\[grid-template-columns\:var\(--cols\)\]{grid-template-columns:var(--cols)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:grid-cols-\[1fr_2fr_auto\]{grid-template-columns:1fr 2fr auto}.sm\:grid-cols-\[230px_minmax\(0\,1fr\)\]{grid-template-columns:230px minmax(0,1fr)}.sm\:grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,3fr\)_auto_auto\]{grid-template-columns:minmax(0,2fr) minmax(0,3fr) auto auto}.sm\:grid-rows-\[minmax\(0\,1fr\)\]{grid-template-rows:minmax(0,1fr)}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:justify-center{justify-content:center}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:gap-8{gap:calc(var(--spacing) * 8)}.sm\:overflow-y-auto{overflow-y:auto}.sm\:rounded-t-2xl{border-top-left-radius:calc(var(--radius) * 2);border-top-right-radius:calc(var(--radius) * 2)}.sm\:bg-transparent{background-color:#0000}.sm\:p-0{padding:0}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-7{padding:calc(var(--spacing) * 7)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-7{padding-inline:calc(var(--spacing) * 7)}.sm\:px-10{padding-inline:calc(var(--spacing) * 10)}.sm\:py-16{padding-block:calc(var(--spacing) * 16)}.sm\:pt-8{padding-top:calc(var(--spacing) * 8)}.sm\:pt-16{padding-top:calc(var(--spacing) * 16)}.sm\:pr-36{padding-right:calc(var(--spacing) * 36)}.sm\:pr-40{padding-right:calc(var(--spacing) * 40)}.sm\:pb-6{padding-bottom:calc(var(--spacing) * 6)}.sm\:pb-8{padding-bottom:calc(var(--spacing) * 8)}.sm\:pb-16{padding-bottom:calc(var(--spacing) * 16)}.sm\:text-\[28px\]{font-size:28px}.sm\:text-\[32px\]{font-size:32px}.sm\:text-\[34px\]{font-size:34px}.sm\:text-\[38px\]{font-size:38px}.sm\:placeholder\:text-ink-4::placeholder{color:var(--ink-4)}}@media (width>=48rem){.md\:mt-8{margin-top:calc(var(--spacing) * 8)}.md\:hidden{display:none}.md\:inline-flex{display:inline-flex}.md\:grid-cols-\[200px_minmax\(0\,1fr\)\]{grid-template-columns:200px minmax(0,1fr)}.md\:gap-10{gap:calc(var(--spacing) * 10)}}@media (width>=64rem){.lg\:pointer-events-none{pointer-events:none}.lg\:sticky{position:sticky}.lg\:top-24{top:calc(var(--spacing) * 24)}.lg\:top-\[calc\(6vh\+5\.25rem\)\]{top:calc(6vh + 5.25rem)}.lg\:left-0{left:0}.lg\:left-\[calc\(50\%-508px\)\]{left:calc(50% - 508px)}.lg\:left-\[calc\(50\%-560px\)\]{left:calc(50% - 560px)}.lg\:ml-0{margin-left:0}.lg\:ml-\[calc\(50\%-16rem\)\]{margin-left:calc(50% - 16rem)}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:inline{display:inline}.lg\:h-0{height:0}.lg\:h-\[calc\(100vh-27rem\)\]{height:calc(100vh - 27rem)}.lg\:h-auto{height:auto}.lg\:max-h-\[calc\(100vh-15rem\)\]{max-height:calc(100vh - 15rem)}.lg\:max-h-\[calc\(100vh-27rem\)\]{max-height:calc(100vh - 27rem)}.lg\:min-h-0{min-height:0}.lg\:min-h-\[6\.5rem\]{min-height:6.5rem}.lg\:min-h-\[360px\]{min-height:360px}.lg\:w-\(--pane\){width:var(--pane)}.lg\:w-\[32rem\]{width:32rem}.lg\:origin-center{transform-origin:50%}.lg\:translate-x-0{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.lg\:scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x) var(--tw-scale-y)}.lg\:scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-\[1fr_280px\]{grid-template-columns:1fr 280px}.lg\:grid-cols-\[16rem_minmax\(0\,1fr\)\]{grid-template-columns:16rem minmax(0,1fr)}.lg\:grid-cols-\[minmax\(280px\,360px\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(280px,360px) minmax(0,1fr)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:gap-14{gap:calc(var(--spacing) * 14)}.lg\:self-start{align-self:flex-start}.lg\:rounded-tl-3xl{border-top-left-radius:calc(var(--radius) * 3)}.lg\:pt-\[6vh\]{padding-top:6vh}.lg\:text-left{text-align:left}.lg\:opacity-0{opacity:0}.lg\:opacity-100{opacity:1}.lg\:transition-\[margin\]{transition-property:margin;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.lg\:duration-700{--tw-duration:.7s;transition-duration:.7s}}.dark\:block:is(.dark *){display:block}.dark\:hidden:is(.dark *){display:none}@media (pointer:coarse){.coarse\:-my-3{margin-block:calc(var(--spacing) * -3)}.coarse\:size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.coarse\:size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.coarse\:h-11{height:calc(var(--spacing) * 11)}.coarse\:min-h-11{min-height:calc(var(--spacing) * 11)}.coarse\:min-w-11{min-width:calc(var(--spacing) * 11)}.coarse\:px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.coarse\:px-4{padding-inline:calc(var(--spacing) * 4)}.coarse\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.coarse\:opacity-100{opacity:1}}@media not all and (width>=40rem){.max-sm\:\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}}.\[\&\:\:-webkit-search-cancel-button\]\:hidden::-webkit-search-cancel-button{display:none}.\[\&\>button\]\:size-8>button{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.\[\&\>button\]\:bg-card>button{background-color:var(--card)}.\[\&\>button\]\:shadow-soft>button{--tw-shadow:var(--shadow-ember-soft);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\[\&\>svg\]\:size-full>svg{width:100%;height:100%}}:root,.dark .tone-flip{--raw-primary:#e0531b;--raw-secondary:#f1f3f5;--raw-background:#faf8f5;--raw-sidebar:var(--paper);--contrast:1;--hue-success:150;--hue-danger:25;--hue-warning:70;--hue-info:264;--paper:oklch(from var(--raw-background) calc(.99 - (.02 * var(--contrast))) c h);--paper-2:oklch(from var(--raw-background) calc(.96 - (.03 * var(--contrast))) calc(c * 1.2) h);--paper-3:oklch(from var(--raw-background) calc(.94 - (.04 * var(--contrast))) calc(c * 1.5) h);--canvas:var(--paper);--canvas-dim:var(--paper-2);--canvas-darken:var(--paper-3);--ink:oklch(from var(--raw-background) calc(.22 + (.05 / var(--contrast))) calc(c * 1.2) h);--ink-2:oklch(from var(--raw-background) calc(.4 + (.05 / var(--contrast))) c h);--ink-3:oklch(from var(--raw-background) calc(.55 + (.05 / var(--contrast))) calc(c * .8) h);--ink-4:oklch(from var(--raw-background) calc(.7 + (.05 / var(--contrast))) calc(c * .6) h);--ember:oklch(from var(--raw-primary) l c h);--ember-strong:oklch(from var(--raw-primary) calc(l - (.08 * var(--contrast))) c h);--ember-tint:oklch(from var(--raw-primary) calc(.96 + .02 * (1 - var(--contrast))) calc(c * .2) h);--ember-veil:oklch(from var(--raw-primary) l c h / .1);--cobalt:var(--info);--cobalt-tint:var(--info-tint);--moss:var(--success);--moss-tint:var(--success-tint);--amber:var(--warning);--amber-tint:var(--warning-tint);--rose:var(--danger);--rose-tint:var(--danger-tint);--danger:oklch(from var(--raw-background) calc(.64 - (.05 * var(--contrast))) .2 var(--hue-danger));--danger-tint:oklch(from var(--raw-background) calc(.98 - (.01 * var(--contrast))) .03 var(--hue-danger));--success:oklch(from var(--raw-background) calc(.48 - (.04 * var(--contrast))) .13 var(--hue-success));--success-tint:oklch(from var(--raw-background) calc(.98 - (.01 * var(--contrast))) .025 var(--hue-success));--warning:oklch(from var(--raw-background) calc(.78 - (.04 * var(--contrast))) .16 var(--hue-warning));--warning-tint:oklch(from var(--raw-background) calc(.98 - (.01 * var(--contrast))) .04 var(--hue-warning));--info:oklch(from var(--raw-background) calc(.5 - (.05 * var(--contrast))) .18 var(--hue-info));--info-tint:oklch(from var(--raw-background) calc(.98 - (.01 * var(--contrast))) .025 var(--hue-info));--link:var(--info);--secondary-accent:oklch(from var(--raw-secondary) l c h);--secondary-accent-strong:oklch(from var(--raw-secondary) calc(l - (.08 * var(--contrast))) c h);--f-display:"Space Grotesk", ui-sans-serif, system-ui, sans-serif;--f-ui:"Geist", ui-sans-serif, system-ui, sans-serif;--f-mono:"Geist Mono", ui-monospace, monospace;--t-display-l:56px;--t-display:40px;--t-h1:28px;--t-h2:20px;--t-h3:16px;--t-body:14px;--t-ui:13px;--t-small:12px;--t-micro:11px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--s-16:64px;--r-1:2px;--r-2:4px;--r-3:6px;--r-4:12px;--r-5:16px;--r-pill:999px;--shadow-ember-elevated:0 1px 2px oklch(from var(--raw-background) .4 c h / .04), 0 6px 18px oklch(from var(--raw-background) .2 c h / .06);--shadow-ember-overlay:0 2px 4px oklch(from var(--raw-background) .2 c h / .08), 0 10px 28px oklch(from var(--raw-background) .15 c h / .16);--shadow-ember-soft:0 1px 2px oklch(from var(--raw-background) .4 c h / .03), 0 3px 10px oklch(from var(--raw-background) .3 c h / .05);--e-1:0 1px 0 oklch(from var(--raw-background) .7 c h / .08);--e-2:var(--shadow-ember-elevated);--e-3:0 1px 2px oklch(from var(--raw-background) .4 c h / .04), 0 6px 18px oklch(from var(--raw-background) .4 c h / .06), 0 18px 36px oklch(from var(--raw-background) .4 c h / .07);--shadow-shell-secondary-edge:0 2px 24px -8px oklch(from var(--raw-background) .35 c h / .14);--shadow-shell-copilot-edge:0 2px 24px -8px oklch(from var(--raw-background) .35 c h / .14);--row-compact:28px;--row-default:32px;--row-comfy:40px;--shell-row:44px;--shell-footer:48px;--input-inset:oklch(from var(--raw-background) calc(calc(.99 - (.02 * var(--contrast))) - (.12 * var(--contrast))) calc(c * 3) h / .65)}.dark,.tone-flip{--raw-sidebar:oklch(from var(--raw-background) calc(.09 + (.03 * var(--contrast))) calc(c * 1.2) h);--paper:oklch(from var(--raw-background) calc(.12 + (.03 * var(--contrast))) c h);--paper-2:oklch(from var(--raw-background) calc(.15 + (.02 * var(--contrast))) calc(c * 1.2) h);--paper-3:oklch(from var(--raw-background) calc(.18 + (.01 * var(--contrast))) calc(c * 1.5) h);--ink:oklch(from var(--raw-background) calc(.92 - (.05 / var(--contrast))) calc(c * 1.2) h);--ink-2:oklch(from var(--raw-background) calc(.85 - (.05 / var(--contrast))) c h);--ink-3:oklch(from var(--raw-background) calc(.72 - (.05 / var(--contrast))) calc(c * .8) h);--ink-4:oklch(from var(--raw-background) calc(.58 - (.05 / var(--contrast))) calc(c * .6) h);--input-inset:oklch(from var(--raw-background) calc(calc(.12 + (.03 * var(--contrast))) + (.21 * var(--contrast))) calc(c * 2.8) h / .65);--ember-strong:oklch(from var(--raw-primary) calc(l + (.08 * var(--contrast))) c h);--ember-tint:oklch(from var(--raw-primary) calc(.18 + .02 * var(--contrast)) calc(c * .35) h);--secondary-accent-strong:oklch(from var(--raw-secondary) calc(l + (.08 * var(--contrast))) c h);--danger:oklch(from var(--raw-background) calc(.62 + (.05 * var(--contrast))) .2 var(--hue-danger));--danger-tint:oklch(from var(--raw-background) calc(.18 + (.02 * var(--contrast))) .05 var(--hue-danger));--success:oklch(from var(--raw-background) calc(.65 + (.05 * var(--contrast))) .13 var(--hue-success));--success-tint:oklch(from var(--raw-background) calc(.18 + (.02 * var(--contrast))) .04 var(--hue-success));--warning:oklch(from var(--raw-background) calc(.78 + (.04 * var(--contrast))) .16 var(--hue-warning));--warning-tint:oklch(from var(--raw-background) calc(.18 + (.02 * var(--contrast))) .05 var(--hue-warning));--info:oklch(from var(--raw-background) calc(.72 + (.05 * var(--contrast))) .18 var(--hue-info));--info-tint:oklch(from var(--raw-background) calc(.18 + (.02 * var(--contrast))) .04 var(--hue-info));--shadow-ember-elevated:0 1px 2px oklch(0% 0 0/.22), 0 6px 18px oklch(0% 0 0/.28);--shadow-ember-overlay:0 2px 4px oklch(0% 0 0/.3), 0 10px 28px oklch(0% 0 0/.44);--shadow-ember-soft:0 1px 2px oklch(0% 0 0/.18), 0 3px 10px oklch(0% 0 0/.22);--e-2:var(--shadow-ember-elevated);--e-3:0 1px 2px oklch(0% 0 0/.22), 0 6px 18px oklch(0% 0 0/.28), 0 24px 48px oklch(0% 0 0/.32);--shadow-shell-secondary-edge:0 2px 28px -10px oklch(0% 0 0/.5);--shadow-shell-copilot-edge:0 2px 28px -10px oklch(0% 0 0/.5)}.tone-flip{--canvas:var(--paper);--canvas-dim:var(--paper-2);--canvas-darken:var(--paper-3);--cobalt:var(--info);--cobalt-tint:var(--info-tint);--moss:var(--success);--moss-tint:var(--success-tint);--amber:var(--warning);--amber-tint:var(--warning-tint);--rose:var(--danger);--rose-tint:var(--danger-tint);--link:var(--info);color:var(--foreground)}@media (prefers-contrast:more){:root{--contrast:1.4}}.theme-high-contrast{--contrast:1.4}.theme-deuteranopia,.theme-protanopia{--hue-success:195;--hue-danger:15;--hue-warning:50}.theme-tritanopia{--hue-success:165;--hue-warning:10;--hue-info:140}:root,.dark .tone-flip{--background:var(--canvas);--foreground:var(--ink);--card:oklch(100% 0 0);--card-foreground:var(--ink);--popover:oklch(from var(--card) l c h / .72);--popover-foreground:var(--ink);--primary:var(--ember-strong);--primary-foreground:oklch(99% 0 0);--secondary:var(--paper-2);--secondary-foreground:var(--ink);--muted:var(--paper-3)}@supports (color:color-mix(in lab, red, red)){:root,.dark .tone-flip{--muted:color-mix(in oklch, var(--paper-3) 32%, var(--card))}}:root,.dark .tone-flip{--muted-foreground:var(--ink-3);--accent:var(--ink)}@supports (color:color-mix(in lab, red, red)){:root,.dark .tone-flip{--accent:color-mix(in oklch, var(--ink) calc(7.5% * var(--contrast)), var(--paper))}}:root,.dark .tone-flip{--accent-foreground:var(--ink);--destructive:var(--danger);--destructive-foreground:oklch(99% 0 0);--border:var(--ink)}@supports (color:color-mix(in lab, red, red)){:root,.dark .tone-flip{--border:color-mix(in oklch, var(--ink) calc(12% * var(--contrast)), var(--paper))}}:root,.dark .tone-flip{--border-soft:var(--border)}@supports (color:color-mix(in lab, red, red)){:root,.dark .tone-flip{--border-soft:color-mix(in oklch, var(--border) 50%, transparent)}}:root,.dark .tone-flip{--input:var(--ink)}@supports (color:color-mix(in lab, red, red)){:root,.dark .tone-flip{--input:color-mix(in oklch, var(--ink) calc(10% * var(--contrast)), var(--paper))}}:root,.dark .tone-flip{--ring:var(--ember)}@supports (color:color-mix(in lab, red, red)){:root,.dark .tone-flip{--ring:color-mix(in oklch, var(--ember) 45%, transparent)}}:root,.dark .tone-flip{--link:var(--info);--chart-1:var(--moss);--chart-2:var(--cobalt);--chart-3:var(--ember);--chart-4:var(--amber);--chart-5:var(--rose);--sidebar:oklch(from var(--raw-sidebar) l c h);--sidebar-foreground:oklch(from var(--sidebar) clamp(.15, (.62 - l) * 100, .98) calc(c * .06) h);--sidebar-primary:var(--ember);--sidebar-primary-foreground:oklch(from var(--ember) calc(1 - l) calc(c * .1) h);--sidebar-accent:oklch(from var(--sidebar) calc(l + .05 * (1 - 2 * l)) c h);--sidebar-accent-foreground:oklch(from var(--sidebar) clamp(.15, (.62 - l) * 100, .98) calc(c * .06) h);--sidebar-border:var(--sidebar)}@supports (color:color-mix(in lab, red, red)){:root,.dark .tone-flip{--sidebar-border:color-mix(in oklch, var(--sidebar) 82%, var(--sidebar-foreground))}}:root,.dark .tone-flip{--sidebar-ring:var(--sidebar-primary)}@supports (color:color-mix(in lab, red, red)){:root,.dark .tone-flip{--sidebar-ring:color-mix(in oklch, var(--sidebar-primary) 65%, transparent)}}:root,.dark .tone-flip{--font-sans:var(--f-ui);--font-heading:var(--f-display);--font-mono:var(--f-mono);--radius:.5rem;--radius-button:.5rem;--shadow-2xs:var(--e-1);--shadow-xs:0 1px 2px oklch(40% var(--seed-neutral-c) var(--seed-neutral-h) / .06);--shadow-sm:var(--e-2);--shadow-md:0 4px 12px oklch(40% var(--seed-neutral-c) var(--seed-neutral-h) / .08);--shadow-lg:var(--e-3);--shadow-xl:0 20px 40px oklch(35% var(--seed-neutral-c) var(--seed-neutral-h) / .12);--shadow-2xl:0 24px 48px oklch(30% var(--seed-neutral-c) var(--seed-neutral-h) / .16)}.dark,.tone-flip{--background:var(--canvas);--foreground:var(--ink);--card:var(--paper-2);--card-foreground:var(--ink);--popover:oklch(from var(--card) l c h / .78);--popover-foreground:var(--ink);--primary:var(--ember-strong);--primary-foreground:oklch(from var(--raw-background) .16 .02 h);--secondary:var(--paper-2);--secondary-foreground:var(--ink-2);--muted:var(--paper-3)}@supports (color:color-mix(in lab, red, red)){.dark,.tone-flip{--muted:color-mix(in oklch, var(--paper-3) 45%, var(--card))}}.dark,.tone-flip{--muted-foreground:var(--ink-3);--accent:var(--ink)}@supports (color:color-mix(in lab, red, red)){.dark,.tone-flip{--accent:color-mix(in oklch, var(--ink) calc(10% * var(--contrast)), var(--paper))}}.dark,.tone-flip{--accent-foreground:var(--ink);--destructive:var(--danger);--destructive-foreground:oklch(99% 0 0);--border:var(--ink)}@supports (color:color-mix(in lab, red, red)){.dark,.tone-flip{--border:color-mix(in oklch, var(--ink) calc(12% * var(--contrast)), var(--paper))}}.dark,.tone-flip{--border-soft:var(--border)}@supports (color:color-mix(in lab, red, red)){.dark,.tone-flip{--border-soft:color-mix(in oklch, var(--border) 50%, transparent)}}.dark,.tone-flip{--input:var(--ink)}@supports (color:color-mix(in lab, red, red)){.dark,.tone-flip{--input:color-mix(in oklch, var(--ink) calc(10% * var(--contrast)), var(--paper))}}.dark,.tone-flip{--ring:var(--ember)}@supports (color:color-mix(in lab, red, red)){.dark,.tone-flip{--ring:color-mix(in oklch, var(--ember) 55%, transparent)}}.dark,.tone-flip{--link:var(--info);--chart-1:var(--moss);--chart-2:var(--cobalt);--chart-3:var(--ember);--chart-4:var(--amber);--chart-5:var(--rose);--sidebar:oklch(from var(--raw-sidebar) l c h);--sidebar-foreground:oklch(from var(--sidebar) clamp(.15, (.62 - l) * 100, .98) calc(c * .06) h);--sidebar-primary:var(--ember);--sidebar-primary-foreground:oklch(from var(--ember) calc(1 - l) calc(c * .1) h);--sidebar-accent:oklch(from var(--sidebar) calc(l + .05 * (1 - 2 * l)) c h);--sidebar-accent-foreground:oklch(from var(--sidebar) clamp(.15, (.62 - l) * 100, .98) calc(c * .06) h);--sidebar-border:var(--sidebar)}@supports (color:color-mix(in lab, red, red)){.dark,.tone-flip{--sidebar-border:color-mix(in oklch, var(--sidebar) 82%, var(--sidebar-foreground))}}.dark,.tone-flip{--sidebar-ring:var(--sidebar-primary)}@supports (color:color-mix(in lab, red, red)){.dark,.tone-flip{--sidebar-ring:color-mix(in oklch, var(--sidebar-primary) 55%, transparent)}}.dark,.tone-flip{--shadow-2xs:0 1px 0 oklch(0% 0 0/.2);--shadow-xs:0 1px 2px oklch(0% 0 0/.25);--shadow-sm:var(--e-2);--shadow-md:0 4px 14px oklch(0% 0 0/.32);--shadow-lg:var(--e-3);--shadow-xl:0 20px 40px oklch(0% 0 0/.42);--shadow-2xl:0 24px 56px oklch(0% 0 0/.48)}.dark{--stage:oklch(34% .14 264);--raw-background:var(--stage);--raw-sidebar:oklch(from var(--stage) calc(l - .04) c h);--paper:oklch(from var(--stage) l c h);--card:oklch(from var(--stage) calc(l + .06) calc(c * .95) h);--paper-2:oklch(from var(--stage) calc(l + .1) calc(c * .92) h);--paper-3:oklch(from var(--stage) calc(l + .14) calc(c * .88) h);--ink:oklch(from var(--stage) .97 .015 h);--ink-2:oklch(from var(--stage) .9 .03 h);--ink-3:oklch(from var(--stage) .8 .05 h);--ink-4:oklch(from var(--stage) .68 .06 h);--accent:var(--ink)}@supports (color:color-mix(in lab, red, red)){.dark{--accent:color-mix(in oklch, var(--ink) 10%, var(--card))}}.dark{--border:var(--ink)}@supports (color:color-mix(in lab, red, red)){.dark{--border:color-mix(in oklch, var(--ink) 18%, var(--card))}}.dark{--input:var(--ink)}@supports (color:color-mix(in lab, red, red)){.dark{--input:color-mix(in oklch, var(--ink) 24%, var(--card))}}.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{-webkit-text-size-adjust:100%;font-size:16px}body{background:var(--background);color:var(--foreground);font-family:var(--f-ui);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100dvh}@media (pointer:coarse){input:not([type=checkbox],[type=radio],[type=range],[type=color]),textarea,select{font-size:16px}}button,a,[role=switch]{-webkit-tap-highlight-color:transparent;touch-action:manipulation}.safe-top{padding-top:env(safe-area-inset-top)}.safe-x{padding-left:max(1.25rem, env(safe-area-inset-left));padding-right:max(1.25rem, env(safe-area-inset-right))}.safe-bottom{padding-bottom:max(.75rem, env(safe-area-inset-bottom))}@media (width<=767px){.action-bar{bottom:var(--kb,0px);z-index:10;padding:.75rem 1.25rem max(.75rem, env(safe-area-inset-bottom));background:var(--background);margin-inline:-1.25rem;position:sticky}@supports (color:color-mix(in lab, red, red)){.action-bar{background:color-mix(in oklch, var(--background) 88%, transparent)}}.action-bar{-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--border-soft)}.keyboard-open .action-bar{padding-bottom:.75rem}}:root.in-app{--f-ui:-apple-system, BlinkMacSystemFont, "SF Pro Text", Roboto, system-ui, sans-serif;--f-mono:ui-monospace, "SF Mono", Menlo, monospace}::selection{color:var(--ink);background:var(--ember-veil)}:root{--focus-line:var(--ink)}@supports (color:color-mix(in lab, red, red)){:root{--focus-line:color-mix(in oklch, var(--ink) 26%, transparent)}}:root{--focus-glow:transparent}:focus-visible{outline:1.5px solid var(--focus-line);outline-offset:2px}:is(input,textarea,select):focus-visible{outline:none}.theme-high-contrast{--focus-line:var(--ember);--focus-glow:var(--ember-veil)}@media (prefers-contrast:more){:root{--focus-line:var(--ember);--focus-glow:var(--ember-veil)}}.theme-high-contrast :focus-visible{outline-width:2px}@media (prefers-contrast:more){:focus-visible{outline-width:2px}}.prose-zen{color:var(--ink);overflow-wrap:anywhere;line-height:1.6}.prose-zen>*+*{margin-top:.75em}.prose-zen h1,.prose-zen h2,.prose-zen h3{font-family:var(--f-display);margin-top:1.25em;font-weight:600;line-height:1.25}.prose-zen h1{font-size:1.5rem}.prose-zen h2{font-size:1.2rem}.prose-zen h3{font-size:1.05rem}.prose-zen ul,.prose-zen ol{padding-left:1.25em}.prose-zen ul{list-style:outside}.prose-zen ol{list-style:decimal}.prose-zen a{color:var(--ember-strong);text-underline-offset:2px;text-decoration:underline}.prose-zen table{border-collapse:collapse;width:100%;font-size:.9em}@media (width<=639px){.prose-zen table{-webkit-overflow-scrolling:touch;display:block;overflow-x:auto}}.prose-zen pre{overflow-x:auto}.prose-zen img{max-width:100%;height:auto}.prose-zen th,.prose-zen td{border-bottom:1px solid var(--border-soft);text-align:left;padding:.4em .6em}.prose-zen code{font-family:var(--f-mono);background:var(--paper-2);border-radius:4px;padding:.1em .3em;font-size:.9em}.prose-zen blockquote{border-left:3px solid var(--border);color:var(--ink-2);padding-left:.9em}.swatch::-webkit-color-swatch-wrapper{padding:0}.swatch::-webkit-color-swatch{border-radius:calc(var(--radius) * .5);border:0}.swatch::-moz-color-swatch{border-radius:calc(var(--radius) * .5);border:0}.react-flow__attribution{display:none}.react-flow__edge-path{stroke:var(--ink-4);stroke-width:1.5px}.react-flow__handle{opacity:0}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.animate-rise{animation:.45s cubic-bezier(.2,.7,.2,1) backwards rise}@keyframes dock{0%{opacity:0;transform:translateY(calc(100% + 16px))}to{opacity:1;transform:none}}.animate-dock{animation:.32s cubic-bezier(.2,.7,.2,1) both dock}@keyframes settle{0%{opacity:0;transform:translate(28px)}}.animate-settle{animation:.6s cubic-bezier(.2,.7,.2,1) .3s both settle}@keyframes breathe{0%,to{opacity:.5}50%{opacity:1}}.animate-breathe{animation:2.4s ease-in-out infinite breathe}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.72)}}.animate-pulse-dot{animation:1.2s ease-in-out infinite pulse-dot}dialog.media-sheet{color:#fff;background:#000;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:0}dialog.media-sheet::backdrop{background:oklch(20% .01 60/.5)}@media (width>=640px) and (height>=560px){dialog.media-sheet{border-radius:calc(var(--radius) * 2);width:min(720px,100% - 48px);height:min(640px,100dvh - 48px);margin:auto;overflow:hidden}}@media (prefers-reduced-motion:reduce){.animate-rise,.animate-dock,.animate-settle,.animate-breathe,.animate-pulse-dot{animation:none}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}