@xopcai/xopc 0.0.24 → 0.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extensions/feishu/xopc.extension.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/agents-Clv9i1Kb.js +216 -0
- package/dist/gateway/static/root/assets/agents-Clv9i1Kb.js.map +1 -0
- package/dist/gateway/static/root/assets/{apps-page-tZz69XM3.js → apps-page-DqclV-PP.js} +2 -2
- package/dist/gateway/static/root/assets/{apps-page-tZz69XM3.js.map → apps-page-DqclV-PP.js.map} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-BAvk9-aK.js → channels-settings-CLyTYjrz.js} +3 -3
- package/dist/gateway/static/root/assets/{channels-settings-BAvk9-aK.js.map → channels-settings-CLyTYjrz.js.map} +1 -1
- package/dist/gateway/static/root/assets/cron-page-CU8lutMt.js +2 -0
- package/dist/gateway/static/root/assets/{cron-page-CANqvhK7.js.map → cron-page-CU8lutMt.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-utils-DyOO6TdN.js → cron-utils-_UjiWax6.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-utils-DyOO6TdN.js.map → cron-utils-_UjiWax6.js.map} +1 -1
- package/dist/gateway/static/root/assets/dist-Xqb4IGWC.js +2 -0
- package/dist/gateway/static/root/assets/{dist-Brod9LF3.js.map → dist-Xqb4IGWC.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-CDD7ozsC.js → extension-debug-page-CtTUkAmw.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-debug-page-CDD7ozsC.js.map → extension-debug-page-CtTUkAmw.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-UUFMjoWf.js → extension-page-C-aQU8qR.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-page-UUFMjoWf.js.map → extension-page-C-aQU8qR.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CP9JNc4m.js → extension-settings-page-b0y9aY-q.js} +2 -2
- package/dist/gateway/static/root/assets/extension-settings-page-b0y9aY-q.js.map +1 -0
- package/dist/gateway/static/root/assets/index-DhSFfSNN.css +1 -0
- package/dist/gateway/static/root/assets/index-Gr2HWo-G.js +4734 -0
- package/dist/gateway/static/root/assets/index-Gr2HWo-G.js.map +1 -0
- package/dist/gateway/static/root/assets/logs-page-DRI33XK4.js +2 -0
- package/dist/gateway/static/root/assets/{logs-page-Cr0eCGb4.js.map → logs-page-DRI33XK4.js.map} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-Cryg-36Z.js +2 -0
- package/dist/gateway/static/root/assets/{sessions-page-DwLHN5GJ.js.map → sessions-page-Cryg-36Z.js.map} +1 -1
- package/dist/gateway/static/root/assets/settings-page-DFNKT9yg.js +2 -0
- package/dist/gateway/static/root/assets/settings-page-DFNKT9yg.js.map +1 -0
- package/dist/gateway/static/root/assets/skills-page-D4gfh0Ih.js +3 -0
- package/dist/gateway/static/root/assets/{skills-page-DgBYvH6B.js.map → skills-page-D4gfh0Ih.js.map} +1 -1
- package/dist/gateway/static/root/index.html +2 -2
- package/dist/package.js +1 -1
- package/dist/src/agent/memory/dreaming/config.d.ts +48 -0
- package/dist/src/agent/memory/dreaming/config.js +86 -0
- package/dist/src/agent/memory/dreaming/config.js.map +1 -0
- package/dist/src/agent/memory/dreaming/constants.d.ts +29 -0
- package/dist/src/agent/memory/dreaming/constants.js +38 -0
- package/dist/src/agent/memory/dreaming/constants.js.map +1 -0
- package/dist/src/agent/memory/dreaming/deep-promotion.d.ts +21 -0
- package/dist/src/agent/memory/dreaming/deep-promotion.js +271 -0
- package/dist/src/agent/memory/dreaming/deep-promotion.js.map +1 -0
- package/dist/src/agent/memory/dreaming/events.d.ts +36 -0
- package/dist/src/agent/memory/dreaming/events.js +44 -0
- package/dist/src/agent/memory/dreaming/events.js.map +1 -0
- package/dist/src/agent/memory/dreaming/last-run.d.ts +80 -0
- package/dist/src/agent/memory/dreaming/last-run.js +98 -0
- package/dist/src/agent/memory/dreaming/last-run.js.map +1 -0
- package/dist/src/agent/memory/dreaming/light-sweep.d.ts +19 -0
- package/dist/src/agent/memory/dreaming/light-sweep.js +328 -0
- package/dist/src/agent/memory/dreaming/light-sweep.js.map +1 -0
- package/dist/src/agent/memory/dreaming/preview.d.ts +28 -0
- package/dist/src/agent/memory/dreaming/preview.js +97 -0
- package/dist/src/agent/memory/dreaming/preview.js.map +1 -0
- package/dist/src/agent/memory/dreaming/rem-patterns.d.ts +21 -0
- package/dist/src/agent/memory/dreaming/rem-patterns.js +286 -0
- package/dist/src/agent/memory/dreaming/rem-patterns.js.map +1 -0
- package/dist/src/agent/memory/dreaming/short-term-store.d.ts +65 -0
- package/dist/src/agent/memory/dreaming/short-term-store.js +197 -0
- package/dist/src/agent/memory/dreaming/short-term-store.js.map +1 -0
- package/dist/src/agent/memory/dreaming/utils.d.ts +42 -0
- package/dist/src/agent/memory/dreaming/utils.js +141 -0
- package/dist/src/agent/memory/dreaming/utils.js.map +1 -0
- package/dist/src/agent/orchestration/agent-orchestrator.js +59 -0
- package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
- package/dist/src/agent/service.d.ts +6 -0
- package/dist/src/agent/service.js +78 -0
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/tools/dreaming-tool.d.ts +7 -0
- package/dist/src/agent/tools/dreaming-tool.js +102 -0
- package/dist/src/agent/tools/dreaming-tool.js.map +1 -0
- package/dist/src/agent/tools/factory.js +5 -0
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/index.d.ts +1 -0
- package/dist/src/agent/tools/index.js +2 -1
- package/dist/src/agent/tools/memory-tool.js +9 -2
- package/dist/src/agent/tools/memory-tool.js.map +1 -1
- package/dist/src/config/schema.d.ts +93 -0
- package/dist/src/config/schema.js +42 -1
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +31 -0
- package/dist/src/gateway/hono/routes/config.js +48 -0
- package/dist/src/gateway/hono/routes/config.js.map +1 -1
- package/dist/src/gateway/hono/routes/dreaming.d.ts +3 -0
- package/dist/src/gateway/hono/routes/dreaming.js +288 -0
- package/dist/src/gateway/hono/routes/dreaming.js.map +1 -0
- package/dist/src/gateway/hono/routes/index.js +2 -0
- package/dist/src/gateway/hono/routes/index.js.map +1 -1
- package/dist/src/gateway/hono/routes/models.js +26 -1
- package/dist/src/gateway/hono/routes/models.js.map +1 -1
- package/dist/src/gateway/hono/routes/public-gateway.js +1 -0
- package/dist/src/gateway/hono/routes/public-gateway.js.map +1 -1
- package/dist/src/gateway/lock.js +1 -1
- package/dist/src/gateway/service.js +7 -0
- package/dist/src/gateway/service.js.map +1 -1
- package/package.json +1 -1
- package/dist/gateway/static/root/assets/agents-CiZMJZRp.js +0 -216
- package/dist/gateway/static/root/assets/agents-CiZMJZRp.js.map +0 -1
- package/dist/gateway/static/root/assets/cron-page-CANqvhK7.js +0 -2
- package/dist/gateway/static/root/assets/dist-Brod9LF3.js +0 -2
- package/dist/gateway/static/root/assets/extension-settings-page-CP9JNc4m.js.map +0 -1
- package/dist/gateway/static/root/assets/index-BZvlG48D.js +0 -150
- package/dist/gateway/static/root/assets/index-BZvlG48D.js.map +0 -1
- package/dist/gateway/static/root/assets/index-DxkgyT8R.css +0 -1
- package/dist/gateway/static/root/assets/logs-page-Cr0eCGb4.js +0 -2
- package/dist/gateway/static/root/assets/sessions-page-DwLHN5GJ.js +0 -2
- package/dist/gateway/static/root/assets/settings-page-B3O3R0E4.js +0 -2
- package/dist/gateway/static/root/assets/settings-page-B3O3R0E4.js.map +0 -1
- package/dist/gateway/static/root/assets/skills-page-DgBYvH6B.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-debug-page-
|
|
1
|
+
{"version":3,"file":"extension-debug-page-CtTUkAmw.js","names":[],"sources":["../../../../../web/src/features/extensions/extension-debug-page.tsx"],"sourcesContent":["/**\n * Extension debug — Settings panel: extension list, declared permissions, UI grant fingerprints.\n */\n\nimport { useMemo, useState } from 'react';\n\nimport { useTranslation } from 'react-i18next';\n\nimport { useExtensions } from '@/features/extensions/extension-provider';\n\nconst GRANTS_STORAGE_KEY = 'xopc.extensionUiGrants.v1';\n\nexport function ExtensionDebugPage() {\n const { t } = useTranslation();\n const extensions = useExtensions();\n const [grantsRaw, setGrantsRaw] = useState(() => readGrantsSafe());\n\n const sorted = useMemo(\n () => [...extensions].sort((a, b) => a.id.localeCompare(b.id)),\n [extensions],\n );\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-8\">\n <div>\n <h1 className=\"text-lg font-semibold text-fg\">{t('extensionDebug.title')}</h1>\n <p className=\"mt-1 text-sm text-fg-muted\">{t('extensionDebug.subtitle')}</p>\n </div>\n\n <section className=\"rounded-xl border border-edge bg-surface-base p-4\">\n <h2 className=\"text-sm font-semibold text-fg\">{t('extensionDebug.grantsHeading')}</h2>\n <p className=\"mt-1 text-xs text-fg-muted\">{t('extensionDebug.grantsHint')}</p>\n <pre className=\"mt-3 max-h-48 overflow-auto rounded-lg border border-edge-subtle bg-surface-muted p-3 font-mono text-xs text-fg\">\n {grantsRaw}\n </pre>\n <button\n type=\"button\"\n className=\"mt-3 rounded-lg border border-edge px-3 py-1.5 text-xs font-medium text-fg hover:bg-surface-hover\"\n onClick={() => setGrantsRaw(readGrantsSafe())}\n >\n {t('extensionDebug.refresh')}\n </button>\n </section>\n\n <section className=\"rounded-xl border border-edge bg-surface-base p-4\">\n <h2 className=\"text-sm font-semibold text-fg\">{t('extensionDebug.listHeading')}</h2>\n <div className=\"mt-3 overflow-x-auto\">\n <table className=\"w-full min-w-[32rem] border-collapse text-left text-sm\">\n <thead>\n <tr className=\"border-b border-edge text-xs uppercase text-fg-muted\">\n <th className=\"py-2 pr-2\">{t('extensionDebug.colId')}</th>\n <th className=\"py-2 pr-2\">{t('extensionDebug.colName')}</th>\n <th className=\"py-2\">{t('extensionDebug.colPermissions')}</th>\n </tr>\n </thead>\n <tbody>\n {sorted.map((e) => (\n <tr key={e.id} className=\"border-b border-edge-subtle\">\n <td className=\"py-2 pr-2 font-mono text-xs text-fg\">{e.id}</td>\n <td className=\"py-2 pr-2 text-fg\">{e.name}</td>\n <td className=\"py-2 font-mono text-xs text-fg-muted\">\n {(e.ui?.permissions ?? []).join(', ') || '—'}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </section>\n\n <section className=\"rounded-xl border border-dashed border-edge-subtle bg-surface-muted/50 p-4 text-sm text-fg-muted\">\n <h2 className=\"text-sm font-semibold text-fg\">{t('extensionDebug.futureHeading')}</h2>\n <p className=\"mt-2\">{t('extensionDebug.futureBody')}</p>\n </section>\n </div>\n );\n}\n\nfunction readGrantsSafe(): string {\n try {\n const raw = localStorage.getItem(GRANTS_STORAGE_KEY);\n if (!raw) return '{}';\n const parsed = JSON.parse(raw) as unknown;\n return JSON.stringify(parsed, null, 2);\n } catch (e) {\n return e instanceof Error ? e.message : String(e);\n }\n}\n"],"mappings":"+KAUM,EAAqB,4BAE3B,SAAgB,GAAqB,CACnC,GAAM,CAAE,KAAM,GAAgB,CACxB,EAAa,GAAe,CAC5B,CAAC,EAAW,IAAA,EAAA,EAAA,cAA+B,GAAgB,CAAC,CAE5D,GAAA,EAAA,EAAA,aACE,CAAC,GAAG,EAAW,CAAC,MAAM,EAAG,IAAM,EAAE,GAAG,cAAc,EAAE,GAAG,CAAC,CAC9D,CAAC,EAAW,CACb,CAED,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,uEAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,yCAAiC,EAAE,uBAAuB,CAAM,CAAA,EAC9E,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,sCAA8B,EAAE,0BAA0B,CAAK,CAAA,CACxE,CAAA,CAAA,EAEN,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,6DAAnB,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,yCAAiC,EAAE,+BAA+B,CAAM,CAAA,EACtF,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,sCAA8B,EAAE,4BAA4B,CAAK,CAAA,EAC9E,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,2HACZ,EACG,CAAA,EACN,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,UAAU,oGACV,YAAe,EAAa,GAAgB,CAAC,UAE5C,EAAE,yBAAyB,CACrB,CAAA,CACD,IAEV,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,6DAAnB,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,yCAAiC,EAAE,6BAA6B,CAAM,CAAA,EACpF,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iCACb,EAAA,EAAA,MAAC,QAAD,CAAO,UAAU,kEAAjB,EACE,EAAA,EAAA,KAAC,QAAD,CAAA,UACE,EAAA,EAAA,MAAC,KAAD,CAAI,UAAU,gEAAd,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,qBAAa,EAAE,uBAAuB,CAAM,CAAA,EAC1D,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,qBAAa,EAAE,yBAAyB,CAAM,CAAA,EAC5D,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,gBAAQ,EAAE,gCAAgC,CAAM,CAAA,CAC3D,GACC,CAAA,EACR,EAAA,EAAA,KAAC,QAAD,CAAA,SACG,EAAO,IAAK,IACX,EAAA,EAAA,MAAC,KAAD,CAAe,UAAU,uCAAzB,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,+CAAuC,EAAE,GAAQ,CAAA,EAC/D,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,6BAAqB,EAAE,KAAU,CAAA,EAC/C,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,iDACV,EAAE,IAAI,aAAe,EAAE,EAAE,KAAK,KAAK,EAAI,IACtC,CAAA,CACF,EANI,EAAE,GAMN,CACL,CACI,CAAA,CACF,GACJ,CAAA,CACE,IAEV,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,4GAAnB,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,yCAAiC,EAAE,+BAA+B,CAAM,CAAA,EACtF,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,gBAAQ,EAAE,4BAA4B,CAAK,CAAA,CAChD,GACN,GAIV,SAAS,GAAyB,CAChC,GAAI,CACF,IAAM,EAAM,aAAa,QAAQ,EAAmB,CACpD,GAAI,CAAC,EAAK,MAAO,KACjB,IAAM,EAAS,KAAK,MAAM,EAAI,CAC9B,OAAO,KAAK,UAAU,EAAQ,KAAM,EAAE,OAC/B,EAAG,CACV,OAAO,aAAa,MAAQ,EAAE,QAAU,OAAO,EAAE"}
|
package/dist/gateway/static/root/assets/{extension-page-UUFMjoWf.js → extension-page-C-aQU8qR.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-DWdDZTNf.js";import{i as t,t as n}from"./vendor-react-DbimaAId.js";import{
|
|
2
|
-
//# sourceMappingURL=extension-page-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-DWdDZTNf.js";import{i as t,t as n}from"./vendor-react-DbimaAId.js";import{Qr as r,Ut as i,d as a,qt as o}from"./index-Gr2HWo-G.js";var s=e(t(),1),c=n();function l(){let{extensionId:e,pageId:t}=r(),n=i(),l=o(e=>e.setPageHeader),d=o(e=>e.clearPageHeader),f=e?n.find(t=>t.id===e):void 0,p=f?.ui?.contributions?.pages,m=e&&p?.length?t?p.find(n=>n.id===t||n.id===`${e}.${t}`):p[0]:void 0;return(0,s.useLayoutEffect)(()=>{if(!e||!f||!m)return d(),()=>d();let t=m.title?.trim()||f.name||e;return l({startExtra:null,main:(0,c.jsx)(`div`,{className:`w-full min-w-0 px-3 sm:px-5 xl:px-6`,children:(0,c.jsx)(`h1`,{className:`min-w-0 truncate text-base font-semibold tracking-tight text-fg`,title:t,children:t})}),end:null}),()=>d()},[d,f,e,m,l]),e?f?p?.length?m?(0,c.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:(0,c.jsx)(a,{extensionId:e,extensionName:f.name,entrypoint:m.entrypoint,permissions:f.ui?.permissions,title:m.title,className:`min-h-0 flex-1`,fixedHeight:void 0,maxHeight:99999})}):(0,c.jsx)(u,{message:`Page "${t}" not found in extension "${e}".`}):(0,c.jsx)(u,{message:`Extension "${e}" has no page contributions.`}):(0,c.jsx)(u,{message:`Extension "${e}" not found or has no UI.`}):(0,c.jsx)(u,{message:`No extension ID provided.`})}function u({message:e}){return(0,c.jsx)(`div`,{className:`flex min-h-[min(40vh,16rem)] flex-1 items-center justify-center`,children:(0,c.jsx)(`div`,{className:`text-center`,children:(0,c.jsx)(`p`,{className:`text-sm text-fg-muted`,children:e})})})}export{l as ExtensionPage};
|
|
2
|
+
//# sourceMappingURL=extension-page-C-aQU8qR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-page-
|
|
1
|
+
{"version":3,"file":"extension-page-C-aQU8qR.js","names":[],"sources":["../../../../../web/src/features/extensions/extension-page.tsx"],"sourcesContent":["/**\n * ExtensionPage — renders a full-page extension UI via ExtensionIframeHost.\n *\n * Mounted at /apps/:extensionId (or /apps/:extensionId/:pageId for multi-page extensions).\n */\n\nimport { useLayoutEffect } from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport { usePageHeaderStore } from '@/stores/page-header-store';\n\nimport { ExtensionIframeHost } from './extension-iframe-host';\nimport { useUiExtensions } from './extension-provider';\n\nexport function ExtensionPage() {\n const { extensionId, pageId } = useParams<{ extensionId: string; pageId?: string }>();\n const uiExtensions = useUiExtensions();\n const setPageHeader = usePageHeaderStore((s) => s.setPageHeader);\n const clearPageHeader = usePageHeaderStore((s) => s.clearPageHeader);\n\n const extension = extensionId ? uiExtensions.find((ext) => ext.id === extensionId) : undefined;\n const pages = extension?.ui?.contributions?.pages;\n const page =\n extensionId && pages?.length\n ? pageId\n ? pages.find((p) => p.id === pageId || p.id === `${extensionId}.${pageId}`)\n : pages[0]\n : undefined;\n\n useLayoutEffect(() => {\n if (!extensionId || !extension || !page) {\n clearPageHeader();\n return () => clearPageHeader();\n }\n const headline = page.title?.trim() || extension.name || extensionId;\n setPageHeader({\n startExtra: null,\n main: (\n <div className=\"w-full min-w-0 px-3 sm:px-5 xl:px-6\">\n <h1\n className=\"min-w-0 truncate text-base font-semibold tracking-tight text-fg\"\n title={headline}\n >\n {headline}\n </h1>\n </div>\n ),\n end: null,\n });\n return () => clearPageHeader();\n }, [clearPageHeader, extension, extensionId, page, setPageHeader]);\n\n if (!extensionId) {\n return <ExtensionPageNotFound message=\"No extension ID provided.\" />;\n }\n\n if (!extension) {\n return (\n <ExtensionPageNotFound message={`Extension \"${extensionId}\" not found or has no UI.`} />\n );\n }\n\n if (!pages?.length) {\n return (\n <ExtensionPageNotFound message={`Extension \"${extensionId}\" has no page contributions.`} />\n );\n }\n\n if (!page) {\n return (\n <ExtensionPageNotFound message={`Page \"${pageId}\" not found in extension \"${extensionId}\".`} />\n );\n }\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col\">\n <ExtensionIframeHost\n extensionId={extensionId}\n extensionName={extension.name}\n entrypoint={page.entrypoint}\n permissions={extension.ui?.permissions}\n title={page.title}\n className=\"min-h-0 flex-1\"\n fixedHeight={undefined}\n maxHeight={99999}\n />\n </div>\n );\n}\n\nfunction ExtensionPageNotFound({ message }: { message: string }) {\n return (\n <div className=\"flex min-h-[min(40vh,16rem)] flex-1 items-center justify-center\">\n <div className=\"text-center\">\n <p className=\"text-sm text-fg-muted\">{message}</p>\n </div>\n </div>\n );\n}\n"],"mappings":"8LAcA,SAAgB,GAAgB,CAC9B,GAAM,CAAE,cAAa,UAAW,GAAqD,CAC/E,EAAe,GAAiB,CAChC,EAAgB,EAAoB,GAAM,EAAE,cAAc,CAC1D,EAAkB,EAAoB,GAAM,EAAE,gBAAgB,CAE9D,EAAY,EAAc,EAAa,KAAM,GAAQ,EAAI,KAAO,EAAY,CAAG,IAAA,GAC/E,EAAQ,GAAW,IAAI,eAAe,MACtC,EACJ,GAAe,GAAO,OAClB,EACE,EAAM,KAAM,GAAM,EAAE,KAAO,GAAU,EAAE,KAAO,GAAG,EAAY,GAAG,IAAS,CACzE,EAAM,GACR,IAAA,GA+CN,OA7CA,EAAA,EAAA,qBAAsB,CACpB,GAAI,CAAC,GAAe,CAAC,GAAa,CAAC,EAEjC,OADA,GAAiB,KACJ,GAAiB,CAEhC,IAAM,EAAW,EAAK,OAAO,MAAM,EAAI,EAAU,MAAQ,EAezD,OAdA,EAAc,CACZ,WAAY,KACZ,MACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDACb,EAAA,EAAA,KAAC,KAAD,CACE,UAAU,kEACV,MAAO,WAEN,EACE,CAAA,CACD,CAAA,CAER,IAAK,KACN,CAAC,KACW,GAAiB,EAC7B,CAAC,EAAiB,EAAW,EAAa,EAAM,EAAc,CAAC,CAE7D,EAIA,EAMA,GAAO,OAMP,GAOH,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,yCACb,EAAA,EAAA,KAAC,EAAD,CACe,cACb,cAAe,EAAU,KACzB,WAAY,EAAK,WACjB,YAAa,EAAU,IAAI,YAC3B,MAAO,EAAK,MACZ,UAAU,iBACV,YAAa,IAAA,GACb,UAAW,MACX,CAAA,CACE,CAAA,EAhBJ,EAAA,EAAA,KAAC,EAAD,CAAuB,QAAS,SAAS,EAAO,4BAA4B,EAAY,IAAO,CAAA,EAN/F,EAAA,EAAA,KAAC,EAAD,CAAuB,QAAS,cAAc,EAAY,8BAAiC,CAAA,EAN3F,EAAA,EAAA,KAAC,EAAD,CAAuB,QAAS,cAAc,EAAY,2BAA8B,CAAA,EALnF,EAAA,EAAA,KAAC,EAAD,CAAuB,QAAQ,4BAA8B,CAAA,CAqCxE,SAAS,EAAsB,CAAE,WAAgC,CAC/D,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,4EACb,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,wBACb,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,iCAAyB,EAAY,CAAA,CAC9C,CAAA,CACF,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-DWdDZTNf.js";import{i as t,t as n}from"./vendor-react-DbimaAId.js";import{i as r}from"./vendor-swr-B5fPo7KK.js";import{t as i}from"./cn-BMCV0OMB.js";import{
|
|
2
|
-
//# sourceMappingURL=extension-settings-page-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-DWdDZTNf.js";import{i as t,t as n}from"./vendor-react-DbimaAId.js";import{i as r}from"./vendor-swr-B5fPo7KK.js";import{t as i}from"./cn-BMCV0OMB.js";import{Gt as a,Jt as o,Kt as s,Qr as c,Vt as l,Wt as u,cn as d,d as f}from"./index-Gr2HWo-G.js";var p=e(t(),1),m=n();function h(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function g(e){let t=e[`x-order`];return typeof t==`number`&&!Number.isNaN(t)?t:999}function _(e){let t=e[`x-group`];return typeof t==`string`&&t.length>0?t:``}function v(e){return e[`x-hidden`]===!0}function y(e){let t=e.properties;if(!h(t))return[];let n=[];for(let[e,r]of Object.entries(t))h(r)&&(v(r)||n.push({key:e,sub:r,order:g(r),group:_(r),hidden:!1}));return n.sort((e,t)=>e.order-t.order||e.key.localeCompare(t.key)),n}function b(e){let t=new Map;for(let n of e){let e=n.group;t.has(e)||t.set(e,[]),t.get(e).push(n)}return t}function x({name:e,s:t,value:n,onChange:r,disabled:i}){let a=typeof t.description==`string`?t.description:void 0,o=(typeof t[`x-placeholder`]==`string`?t[`x-placeholder`]:null)||a,s=t.format;return Array.isArray(t.enum)&&t.enum.every(e=>typeof e==`string`)?(0,m.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[a?(0,m.jsx)(`label`,{className:`text-xs text-fg-muted`,children:a}):null,(0,m.jsx)(`select`,{name:e,className:`ui-input h-9 rounded-md border border-edge bg-surface-base px-2 text-sm text-fg`,value:n,disabled:i,onChange:e=>r(e.target.value),children:t.enum.map(e=>(0,m.jsx)(`option`,{value:e,children:e},e))})]}):(0,m.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[a?(0,m.jsx)(`label`,{className:`text-xs text-fg-muted`,children:a}):null,(0,m.jsx)(`input`,{name:e,type:s===`password`?`password`:`text`,className:`ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm text-fg placeholder:text-fg-muted/70`,value:n,placeholder:o,disabled:i,onChange:e=>r(e.target.value)})]})}function S({s:e,value:t,onChange:n,disabled:r}){let i=typeof e.description==`string`?e.description:void 0;return(0,m.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[i?(0,m.jsx)(`label`,{className:`text-xs text-fg-muted`,children:i}):null,(0,m.jsx)(`input`,{type:`number`,className:`ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm text-fg`,value:Number.isFinite(t)?t:0,disabled:r,onChange:e=>n(Number(e.target.value))})]})}function C({s:e,value:t,onChange:n,disabled:r}){let i=(typeof e.description==`string`?e.description:void 0)??(typeof e.title==`string`&&e.title.length>0?e.title:`Enable`);return(0,m.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-fg`,children:[(0,m.jsx)(`input`,{type:`checkbox`,className:`h-4 w-4 rounded border border-edge`,checked:t,disabled:r,onChange:e=>n(e.target.checked)}),(0,m.jsx)(`span`,{children:i})]})}function w({s:e,value:t,onChange:n,disabled:r}){let i=typeof e.description==`string`?e.description:void 0,a=e.items;if(!(h(a)&&a.type===`string`))return(0,m.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`Unsupported array type`});let o=e=>{let r=e.trim();!r||t.includes(r)||n([...t,r])};return(0,m.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[i?(0,m.jsx)(`label`,{className:`text-xs text-fg-muted`,children:i}):null,(0,m.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:t.map(e=>(0,m.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-md border border-edge bg-surface-panel px-2 py-0.5 text-sm`,children:[e,(0,m.jsx)(`button`,{type:`button`,className:`text-fg-muted hover:text-fg`,disabled:r,onClick:()=>n(t.filter(t=>t!==e)),children:`×`})]},e))}),(0,m.jsx)(`input`,{className:`ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm`,disabled:r,placeholder:`Add and press Enter`,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),o(e.target.value),e.target.value=``)}})]})}function T({k:e,sub:t,value:n,onValue:r,disabled:i}){let a=t.type,o=(typeof t.title==`string`&&t.title.length>0?t.title:null)??e;if(a===`boolean`)return(0,m.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,m.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:o}),(0,m.jsx)(C,{s:t,value:n===!0,disabled:i,onChange:e=>r(e)})]});if(a===`number`||a===`integer`)return(0,m.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,m.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:o}),(0,m.jsx)(S,{s:t,value:typeof n==`number`?n:0,disabled:i,onChange:r})]});if(a===`string`)return(0,m.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,m.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:o}),(0,m.jsx)(x,{name:e,s:t,value:typeof n==`string`?n:``,disabled:i,onChange:r})]});if(a===`array`){let e=t.items;if(h(e)&&e.type===`string`)return(0,m.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,m.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:o}),(0,m.jsx)(w,{s:t,value:Array.isArray(n)&&n.every(e=>typeof e==`string`)?n:[],disabled:i,onChange:r})]})}return(0,m.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[o,`: unsupported field type`,typeof a==`string`?` (${a})`:``]})}function E({schema:e,values:t,onChange:n,disabled:r=!1,className:a}){let o=(0,p.useMemo)(()=>e.type===`object`?y(e):[],[e]),s=(0,p.useMemo)(()=>o.length===0?new Map:b(o),[o]),c=(0,p.useCallback)((e,r)=>{n({...t,[e]:r})},[n,t]);if(e.type!==`object`||!h(e.properties)||o.length===0)return null;let l=Array.from(s.keys()).sort((e,t)=>e===``?-1:t===``?1:e.localeCompare(t));return(0,m.jsx)(`div`,{className:i(`flex flex-col gap-4`,a),children:l.map(e=>{let n=(s.get(e)??[]).map(e=>(0,m.jsx)(T,{k:e.key,sub:e.sub,value:t[e.key],onValue:t=>c(e.key,t),disabled:r},e.key));return e===``?(0,m.jsx)(`div`,{children:n},`default`):(0,m.jsxs)(`details`,{className:`group rounded-lg border border-edge bg-surface-panel/40 open:bg-surface-base`,open:!0,children:[(0,m.jsx)(`summary`,{className:`cursor-pointer select-none px-3 py-2 text-sm font-medium text-fg group-open:rounded-b-none`,children:e}),(0,m.jsx)(`div`,{className:`space-y-4 border-t border-edge p-3`,children:n})]},e)})})}function D(e){let t={};if(e.type!==`object`||!h(e.properties))return t;for(let[n,r]of Object.entries(e.properties))h(r)&&Object.prototype.hasOwnProperty.call(r,`default`)&&(t[n]=r.default);return t}function O({extensionId:e}){let t=o(e=>!!e.token),{data:n,error:i}=r(t&&e?`ext-detail-${e}`:null,()=>s(u(`/api/extensions/${encodeURIComponent(e)}`))),{data:c,mutate:l,error:f}=r(t&&e?`ext-cfg-${e}`:null,()=>s(u(`/api/extensions/${encodeURIComponent(e)}/config`))),h=n?.manifest?.configSchema,g=(0,p.useMemo)(()=>h&&h.type===`object`?D(h):{},[h]),_=(0,p.useMemo)(()=>({...g,...c??{}}),[g,c]),[v,y]=(0,p.useState)({}),[b,x]=(0,p.useState)(!1),[S,C]=(0,p.useState)(!1),[w,T]=(0,p.useState)(null),[O,k]=(0,p.useState)(!1);(0,p.useEffect)(()=>{b||y(_)},[b,_]);let A=(0,p.useCallback)(e=>{y(e),x(!0),T(null)},[]),j=(0,p.useCallback)(()=>{y(_),x(!1),T(null)},[_]),M=(0,p.useCallback)(()=>{!h||h.type!==`object`||(y({...D(h)}),x(!0),T(null))},[h]),N=(0,p.useCallback)(async()=>{if(e){C(!0),T(null);try{let t=await a(u(`/api/extensions/${encodeURIComponent(e)}/config`),{method:`PATCH`,body:JSON.stringify(v)});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error?.message??t.statusText)}await l(v,!1),x(!1),k(!0),window.setTimeout(()=>k(!1),3e3)}catch(e){T(e instanceof Error?e.message:String(e))}finally{C(!1)}}},[e,v,l]);if(!t)return null;if(i||f){let e=i??f;return(0,m.jsxs)(`p`,{className:`text-sm text-fg-muted`,children:[`Could not load extension settings: `,e instanceof Error?e.message:String(e)]})}return!h||h.type!==`object`?null:(0,m.jsxs)(`div`,{className:`mb-6 flex flex-col gap-3 rounded-xl border border-edge bg-surface-base p-4`,children:[(0,m.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,m.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:`Configuration`}),(0,m.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[O?(0,m.jsx)(`span`,{className:`text-xs text-emerald-600 dark:text-emerald-400`,children:`Saved`}):null,w?(0,m.jsx)(`span`,{className:`text-xs text-red-600 dark:text-red-400`,children:w}):null,(0,m.jsx)(d,{type:`button`,variant:`ghost`,className:`h-8 text-xs`,disabled:!b,onClick:j,children:`Discard`}),(0,m.jsx)(d,{type:`button`,variant:`ghost`,className:`h-8 text-xs`,onClick:M,children:`Reset to defaults`}),(0,m.jsx)(d,{type:`button`,variant:`primary`,className:`h-8 text-xs`,disabled:!b||S,onClick:()=>void N(),children:S?`Saving…`:`Save`})]})]}),(0,m.jsx)(E,{schema:h,values:v,onChange:A,disabled:S})]})}function k(){let{extensionId:e,panelId:t}=c(),n=l();if(!e)return(0,m.jsx)(A,{message:`No extension ID provided.`});let r=n.find(t=>t.id===e);if(!r)return(0,m.jsx)(A,{message:`Extension "${e}" not found or is not available in this workspace.`});let i=r.ui?.contributions?.settingsPanels,a=t?i?.find(n=>n.id===t||n.id===`${e}.${t}`):i?.[0],o=!!(a&&r.ui);return!r.hasConfigSchema&&!o?(0,m.jsx)(A,{message:`Extension "${e}" has no settings panels or config schema.`}):(0,m.jsxs)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8`,children:[(0,m.jsx)(`h1`,{className:`text-lg font-semibold text-fg`,children:a?.title??`${r.name} Settings`}),(0,m.jsx)(O,{extensionId:e}),o&&a&&r.ui?(0,m.jsx)(`div`,{className:`overflow-hidden rounded-xl border border-edge bg-surface-base`,children:(0,m.jsx)(f,{extensionId:e,extensionName:r.name,entrypoint:a.entrypoint,permissions:r.ui?.permissions,title:a.title,className:`w-full`,minHeight:120,maxHeight:2e3})}):null]})}function A({message:e}){return(0,m.jsx)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8`,children:(0,m.jsx)(`p`,{className:`text-sm text-fg-muted`,children:e})})}export{k as ExtensionSettingsPage};
|
|
2
|
+
//# sourceMappingURL=extension-settings-page-b0y9aY-q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-settings-page-b0y9aY-q.js","names":[],"sources":["../../../../../web/src/components/ui/schema-form.tsx","../../../../../web/src/features/extensions/extension-auto-settings.tsx","../../../../../web/src/features/extensions/extension-settings-page.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { cn } from '@/lib/cn';\n\nexport type JsonSchema = Record<string, unknown>;\n\ntype SchemaFormProps = {\n schema: JsonSchema;\n values: Record<string, unknown>;\n onChange: (values: Record<string, unknown>) => void;\n disabled?: boolean;\n className?: string;\n};\n\nfunction isRecord(x: unknown): x is Record<string, unknown> {\n return typeof x === 'object' && x !== null && !Array.isArray(x);\n}\n\ntype FieldDef = {\n key: string;\n sub: JsonSchema;\n order: number;\n group: string;\n hidden: boolean;\n};\n\nfunction getXOrder(s: JsonSchema): number {\n const v = s['x-order'];\n return typeof v === 'number' && !Number.isNaN(v) ? v : 999;\n}\n\nfunction getXGroup(s: JsonSchema): string {\n const v = s['x-group'];\n return typeof v === 'string' && v.length > 0 ? v : '';\n}\n\nfunction isHidden(s: JsonSchema): boolean {\n return s['x-hidden'] === true;\n}\n\nfunction sortedFields(schema: JsonSchema): FieldDef[] {\n const props = schema.properties;\n if (!isRecord(props)) return [];\n const out: FieldDef[] = [];\n for (const [key, sub] of Object.entries(props)) {\n if (!isRecord(sub)) continue;\n if (isHidden(sub)) continue;\n out.push({\n key,\n sub: sub,\n order: getXOrder(sub),\n group: getXGroup(sub),\n hidden: false,\n });\n }\n out.sort((a, b) => a.order - b.order || a.key.localeCompare(b.key));\n return out;\n}\n\nfunction groupFields(fields: FieldDef[]): Map<string, FieldDef[]> {\n const m = new Map<string, FieldDef[]>();\n for (const f of fields) {\n const g = f.group;\n if (!m.has(g)) m.set(g, []);\n m.get(g)!.push(f);\n }\n return m;\n}\n\nfunction StringField({\n name,\n s,\n value,\n onChange,\n disabled,\n}: {\n name: string;\n s: JsonSchema;\n value: string;\n onChange: (v: string) => void;\n disabled: boolean;\n}) {\n const desc = typeof s.description === 'string' ? s.description : undefined;\n const placeholder =\n (typeof s['x-placeholder'] === 'string' ? s['x-placeholder'] : null) || desc;\n const fmt = s.format;\n if (Array.isArray(s.enum) && s.enum.every((x) => typeof x === 'string')) {\n return (\n <div className=\"flex flex-col gap-1.5\">\n {desc ? <label className=\"text-xs text-fg-muted\">{desc}</label> : null}\n <select\n name={name}\n className=\"ui-input h-9 rounded-md border border-edge bg-surface-base px-2 text-sm text-fg\"\n value={value}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value)}\n >\n {(s.enum).map((op) => (\n <option key={op} value={op}>\n {op}\n </option>\n ))}\n </select>\n </div>\n );\n }\n const inputType = fmt === 'password' ? 'password' : 'text';\n return (\n <div className=\"flex flex-col gap-1.5\">\n {desc ? <label className=\"text-xs text-fg-muted\">{desc}</label> : null}\n <input\n name={name}\n type={inputType}\n className=\"ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm text-fg placeholder:text-fg-muted/70\"\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value)}\n />\n </div>\n );\n}\n\nfunction NumberField({\n s,\n value,\n onChange,\n disabled,\n}: {\n s: JsonSchema;\n value: number;\n onChange: (v: number) => void;\n disabled: boolean;\n}) {\n const desc = typeof s.description === 'string' ? s.description : undefined;\n return (\n <div className=\"flex flex-col gap-1.5\">\n {desc ? <label className=\"text-xs text-fg-muted\">{desc}</label> : null}\n <input\n type=\"number\"\n className=\"ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm text-fg\"\n value={Number.isFinite(value) ? value : 0}\n disabled={disabled}\n onChange={(e) => onChange(Number(e.target.value))}\n />\n </div>\n );\n}\n\nfunction BooleanField({\n s,\n value,\n onChange,\n disabled,\n}: {\n s: JsonSchema;\n value: boolean;\n onChange: (v: boolean) => void;\n disabled: boolean;\n}) {\n const desc = typeof s.description === 'string' ? s.description : undefined;\n const labelText =\n desc ?? (typeof s.title === 'string' && s.title.length > 0 ? s.title : 'Enable');\n return (\n <label className=\"flex items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"h-4 w-4 rounded border border-edge\"\n checked={value}\n disabled={disabled}\n onChange={(e) => onChange(e.target.checked)}\n />\n <span>{labelText}</span>\n </label>\n );\n}\n\nfunction ArrayStringField({\n s,\n value,\n onChange,\n disabled,\n}: {\n s: JsonSchema;\n value: string[];\n onChange: (v: string[]) => void;\n disabled: boolean;\n}) {\n const desc = typeof s.description === 'string' ? s.description : undefined;\n const items = s.items;\n const isStringItems = isRecord(items) && items.type === 'string';\n if (!isStringItems) {\n return <p className=\"text-xs text-fg-muted\">Unsupported array type</p>;\n }\n const add = (t: string) => {\n const n = t.trim();\n if (!n || value.includes(n)) return;\n onChange([...value, n]);\n };\n return (\n <div className=\"flex flex-col gap-1.5\">\n {desc ? <label className=\"text-xs text-fg-muted\">{desc}</label> : null}\n <div className=\"flex flex-wrap gap-1\">\n {value.map((t) => (\n <span\n key={t}\n className=\"inline-flex items-center gap-1 rounded-md border border-edge bg-surface-panel px-2 py-0.5 text-sm\"\n >\n {t}\n <button\n type=\"button\"\n className=\"text-fg-muted hover:text-fg\"\n disabled={disabled}\n onClick={() => onChange(value.filter((x) => x !== t))}\n >\n ×\n </button>\n </span>\n ))}\n </div>\n <input\n className=\"ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm\"\n disabled={disabled}\n placeholder=\"Add and press Enter\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n add((e.target as HTMLInputElement).value);\n (e.target as HTMLInputElement).value = '';\n }\n }}\n />\n </div>\n );\n}\n\nfunction FieldRow({\n k,\n sub,\n value,\n onValue,\n disabled,\n}: {\n k: string;\n sub: JsonSchema;\n value: unknown;\n onValue: (next: unknown) => void;\n disabled: boolean;\n}) {\n const t = sub.type;\n const title =\n (typeof sub.title === 'string' && sub.title.length > 0 ? sub.title : null) ?? k;\n if (t === 'boolean') {\n return (\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium text-fg\">{title}</p>\n <BooleanField\n s={sub}\n value={value === true}\n disabled={disabled}\n onChange={(b) => onValue(b)}\n />\n </div>\n );\n }\n if (t === 'number' || t === 'integer') {\n return (\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium text-fg\">{title}</p>\n <NumberField\n s={sub}\n value={typeof value === 'number' ? value : 0}\n disabled={disabled}\n onChange={onValue}\n />\n </div>\n );\n }\n if (t === 'string') {\n return (\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium text-fg\">{title}</p>\n <StringField\n name={k}\n s={sub}\n value={typeof value === 'string' ? value : ''}\n disabled={disabled}\n onChange={onValue}\n />\n </div>\n );\n }\n if (t === 'array') {\n const items = sub.items;\n if (isRecord(items) && items.type === 'string') {\n return (\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium text-fg\">{title}</p>\n <ArrayStringField\n s={sub}\n value={Array.isArray(value) && value.every((x) => typeof x === 'string') ? value : []}\n disabled={disabled}\n onChange={onValue}\n />\n </div>\n );\n }\n }\n return (\n <p className=\"text-xs text-fg-muted\">\n {title}: unsupported field type\n {typeof t === 'string' ? ` (${t})` : ''}\n </p>\n );\n}\n\n/**\n * Renders a JSON Schema (type: object) as a form using Gateway Console design tokens.\n */\nexport function SchemaForm({ schema, values, onChange, disabled = false, className }: SchemaFormProps) {\n const fields = useMemo(() => {\n if (schema.type !== 'object') return [];\n return sortedFields(schema);\n }, [schema]);\n\n const grouped = useMemo(() => {\n if (fields.length === 0) return new Map<string, FieldDef[]>();\n return groupFields(fields);\n }, [fields]);\n\n const setKey = useCallback(\n (key: string, next: unknown) => {\n onChange({ ...values, [key]: next });\n },\n [onChange, values],\n );\n\n if (schema.type !== 'object' || !isRecord(schema.properties) || fields.length === 0) {\n return null;\n }\n\n const groupKeys = Array.from(grouped.keys()).sort((a, b) => {\n if (a === '') return -1;\n if (b === '') return 1;\n return a.localeCompare(b);\n });\n\n return (\n <div className={cn('flex flex-col gap-4', className)}>\n {groupKeys.map((gk) => {\n const list = grouped.get(gk) ?? [];\n const block = list.map((f) => (\n <FieldRow\n key={f.key}\n k={f.key}\n sub={f.sub}\n value={values[f.key]}\n onValue={(v) => setKey(f.key, v)}\n disabled={disabled}\n />\n ));\n if (gk === '') {\n return <div key=\"default\">{block}</div>;\n }\n return (\n <details\n key={gk}\n className=\"group rounded-lg border border-edge bg-surface-panel/40 open:bg-surface-base\"\n open\n >\n <summary className=\"cursor-pointer select-none px-3 py-2 text-sm font-medium text-fg group-open:rounded-b-none\">\n {gk}\n </summary>\n <div className=\"space-y-4 border-t border-edge p-3\">{block}</div>\n </details>\n );\n })}\n </div>\n );\n}\n\n/** Extract per-key defaults from a JSON object schema for \"Reset\" actions. */\nexport function extractObjectDefaults(\n schema: JsonSchema,\n): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n if (schema.type !== 'object' || !isRecord(schema.properties)) {\n return out;\n }\n for (const [k, sub] of Object.entries(schema.properties)) {\n if (!isRecord(sub)) continue;\n if (Object.prototype.hasOwnProperty.call(sub, 'default')) {\n out[k] = sub.default;\n }\n }\n return out;\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport useSWR from 'swr';\n\nimport { Button } from '@/components/ui/button';\nimport { extractObjectDefaults, SchemaForm, type JsonSchema } from '@/components/ui/schema-form';\nimport { apiFetch, fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\nimport { useGatewayStore } from '@/stores/gateway-store';\n\ntype ExtensionDetailResponse = {\n manifest: { configSchema?: JsonSchema };\n};\n\nexport function ExtensionAutoSettings({ extensionId }: { extensionId: string }) {\n const hasToken = useGatewayStore((s) => Boolean(s.token));\n const { data: detail, error: detailError } = useSWR(\n hasToken && extensionId ? `ext-detail-${extensionId}` : null,\n () => fetchJson<ExtensionDetailResponse>(apiUrl(`/api/extensions/${encodeURIComponent(extensionId)}`)),\n );\n\n const { data: remoteConfig, mutate: mutateConfig, error: configError } = useSWR(\n hasToken && extensionId ? `ext-cfg-${extensionId}` : null,\n () =>\n fetchJson<Record<string, unknown>>(\n apiUrl(`/api/extensions/${encodeURIComponent(extensionId)}/config`),\n ),\n );\n\n const schema = detail?.manifest?.configSchema;\n const defaults = useMemo(\n () => (schema && schema.type === 'object' ? extractObjectDefaults(schema) : {}),\n [schema],\n );\n\n const savedValues = useMemo(\n () => ({ ...defaults, ...(remoteConfig ?? {}) }),\n [defaults, remoteConfig],\n );\n\n const [localValues, setLocalValues] = useState<Record<string, unknown>>({});\n const [isDirty, setIsDirty] = useState(false);\n const [saving, setSaving] = useState(false);\n const [saveError, setSaveError] = useState<string | null>(null);\n const [saveSuccess, setSaveSuccess] = useState(false);\n\n useEffect(() => {\n if (isDirty) return;\n setLocalValues(savedValues);\n }, [isDirty, savedValues]);\n\n const onChange = useCallback((next: Record<string, unknown>) => {\n setLocalValues(next);\n setIsDirty(true);\n setSaveError(null);\n }, []);\n\n const handleDiscard = useCallback(() => {\n setLocalValues(savedValues);\n setIsDirty(false);\n setSaveError(null);\n }, [savedValues]);\n\n const handleResetDefaults = useCallback(() => {\n if (!schema || schema.type !== 'object') return;\n setLocalValues({ ...extractObjectDefaults(schema) });\n setIsDirty(true);\n setSaveError(null);\n }, [schema]);\n\n const handleSave = useCallback(async () => {\n if (!extensionId) return;\n setSaving(true);\n setSaveError(null);\n try {\n const res = await apiFetch(\n apiUrl(`/api/extensions/${encodeURIComponent(extensionId)}/config`),\n { method: 'PATCH', body: JSON.stringify(localValues) },\n );\n if (!res.ok) {\n const body = (await res.json().catch(() => ({}))) as { error?: { message?: string } };\n throw new Error(body.error?.message ?? res.statusText);\n }\n await mutateConfig(localValues, false);\n setIsDirty(false);\n setSaveSuccess(true);\n window.setTimeout(() => setSaveSuccess(false), 3000);\n } catch (e) {\n setSaveError(e instanceof Error ? e.message : String(e));\n } finally {\n setSaving(false);\n }\n }, [extensionId, localValues, mutateConfig]);\n\n if (!hasToken) {\n return null;\n }\n\n if (detailError || configError) {\n const err = (detailError ?? configError) as Error;\n return (\n <p className=\"text-sm text-fg-muted\">\n Could not load extension settings: {err instanceof Error ? err.message : String(err)}\n </p>\n );\n }\n\n if (!schema || schema.type !== 'object') {\n return null;\n }\n\n return (\n <div className=\"mb-6 flex flex-col gap-3 rounded-xl border border-edge bg-surface-base p-4\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <h2 className=\"text-sm font-semibold text-fg\">Configuration</h2>\n <div className=\"flex flex-wrap items-center gap-2\">\n {saveSuccess ? (\n <span className=\"text-xs text-emerald-600 dark:text-emerald-400\">Saved</span>\n ) : null}\n {saveError ? <span className=\"text-xs text-red-600 dark:text-red-400\">{saveError}</span> : null}\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-8 text-xs\"\n disabled={!isDirty}\n onClick={handleDiscard}\n >\n Discard\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-8 text-xs\"\n onClick={handleResetDefaults}\n >\n Reset to defaults\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n className=\"h-8 text-xs\"\n disabled={!isDirty || saving}\n onClick={() => void handleSave()}\n >\n {saving ? 'Saving…' : 'Save'}\n </Button>\n </div>\n </div>\n <SchemaForm schema={schema} values={localValues} onChange={onChange} disabled={saving} />\n </div>\n );\n}\n","/**\n * Extension settings: auto-generated config form (configSchema) + optional iframe (settingsPanels).\n *\n * Routes: /settings/ext/:extensionId, /settings/ext/:extensionId/:panelId\n */\n\nimport { useParams } from 'react-router-dom';\n\nimport { ExtensionAutoSettings } from './extension-auto-settings';\nimport { ExtensionIframeHost } from './extension-iframe-host';\nimport { useExtensions } from './extension-provider';\n\nexport function ExtensionSettingsPage() {\n const { extensionId, panelId } = useParams<{ extensionId: string; panelId?: string }>();\n const extensions = useExtensions();\n\n if (!extensionId) {\n return <SettingsPanelNotFound message=\"No extension ID provided.\" />;\n }\n\n const extension = extensions.find((ext) => ext.id === extensionId);\n if (!extension) {\n return (\n <SettingsPanelNotFound\n message={`Extension \"${extensionId}\" not found or is not available in this workspace.`}\n />\n );\n }\n\n const panels = extension.ui?.contributions?.settingsPanels;\n const panel = panelId\n ? panels?.find((p) => p.id === panelId || p.id === `${extensionId}.${panelId}`)\n : panels?.[0];\n\n const hasIframe = Boolean(panel && extension.ui);\n const hasAuto = Boolean(extension.hasConfigSchema);\n\n if (!hasAuto && !hasIframe) {\n return (\n <SettingsPanelNotFound\n message={`Extension \"${extensionId}\" has no settings panels or config schema.`}\n />\n );\n }\n\n const title = panel?.title ?? `${extension.name} Settings`;\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8\">\n <h1 className=\"text-lg font-semibold text-fg\">{title}</h1>\n <ExtensionAutoSettings extensionId={extensionId} />\n {hasIframe && panel && extension.ui ? (\n <div className=\"overflow-hidden rounded-xl border border-edge bg-surface-base\">\n <ExtensionIframeHost\n extensionId={extensionId}\n extensionName={extension.name}\n entrypoint={panel.entrypoint}\n permissions={extension.ui?.permissions}\n title={panel.title}\n className=\"w-full\"\n minHeight={120}\n maxHeight={2000}\n />\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction SettingsPanelNotFound({ message }: { message: string }) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8\">\n <p className=\"text-sm text-fg-muted\">{message}</p>\n </div>\n );\n}\n"],"mappings":"gTAcA,SAAS,EAAS,EAA0C,CAC1D,OAAO,OAAO,GAAM,YAAY,GAAc,CAAC,MAAM,QAAQ,EAAE,CAWjE,SAAS,EAAU,EAAuB,CACxC,IAAM,EAAI,EAAE,WACZ,OAAO,OAAO,GAAM,UAAY,CAAC,OAAO,MAAM,EAAE,CAAG,EAAI,IAGzD,SAAS,EAAU,EAAuB,CACxC,IAAM,EAAI,EAAE,WACZ,OAAO,OAAO,GAAM,UAAY,EAAE,OAAS,EAAI,EAAI,GAGrD,SAAS,EAAS,EAAwB,CACxC,OAAO,EAAE,cAAgB,GAG3B,SAAS,EAAa,EAAgC,CACpD,IAAM,EAAQ,EAAO,WACrB,GAAI,CAAC,EAAS,EAAM,CAAE,MAAO,EAAE,CAC/B,IAAM,EAAkB,EAAE,CAC1B,IAAK,GAAM,CAAC,EAAK,KAAQ,OAAO,QAAQ,EAAM,CACvC,EAAS,EAAI,GACd,EAAS,EAAI,EACjB,EAAI,KAAK,CACP,MACK,MACL,MAAO,EAAU,EAAI,CACrB,MAAO,EAAU,EAAI,CACrB,OAAQ,GACT,CAAC,EAGJ,OADA,EAAI,MAAM,EAAG,IAAM,EAAE,MAAQ,EAAE,OAAS,EAAE,IAAI,cAAc,EAAE,IAAI,CAAC,CAC5D,EAGT,SAAS,EAAY,EAA6C,CAChE,IAAM,EAAI,IAAI,IACd,IAAK,IAAM,KAAK,EAAQ,CACtB,IAAM,EAAI,EAAE,MACP,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAG,EAAE,CAAC,CAC3B,EAAE,IAAI,EAAE,CAAE,KAAK,EAAE,CAEnB,OAAO,EAGT,SAAS,EAAY,CACnB,OACA,IACA,QACA,WACA,YAOC,CACD,IAAM,EAAO,OAAO,EAAE,aAAgB,SAAW,EAAE,YAAc,IAAA,GAC3D,GACH,OAAO,EAAE,kBAAqB,SAAW,EAAE,iBAAmB,OAAS,EACpE,EAAM,EAAE,OAsBd,OArBI,MAAM,QAAQ,EAAE,KAAK,EAAI,EAAE,KAAK,MAAO,GAAM,OAAO,GAAM,SAAS,EAEnE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,iCAAf,CACG,GAAO,EAAA,EAAA,KAAC,QAAD,CAAO,UAAU,iCAAyB,EAAa,CAAA,CAAG,MAClE,EAAA,EAAA,KAAC,SAAD,CACQ,OACN,UAAU,kFACH,QACG,WACV,SAAW,GAAM,EAAS,EAAE,OAAO,MAAM,UAEvC,EAAE,KAAM,IAAK,IACb,EAAA,EAAA,KAAC,SAAD,CAAiB,MAAO,WACrB,EACM,CAFI,EAEJ,CACT,CACK,CAAA,CACL,IAKR,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,iCAAf,CACG,GAAO,EAAA,EAAA,KAAC,QAAD,CAAO,UAAU,iCAAyB,EAAa,CAAA,CAAG,MAClE,EAAA,EAAA,KAAC,QAAD,CACQ,OACN,KANY,IAAQ,WAAa,WAAa,OAO9C,UAAU,iHACH,QACM,cACH,WACV,SAAW,GAAM,EAAS,EAAE,OAAO,MAAM,CACzC,CAAA,CACE,GAIV,SAAS,EAAY,CACnB,IACA,QACA,WACA,YAMC,CACD,IAAM,EAAO,OAAO,EAAE,aAAgB,SAAW,EAAE,YAAc,IAAA,GACjE,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,iCAAf,CACG,GAAO,EAAA,EAAA,KAAC,QAAD,CAAO,UAAU,iCAAyB,EAAa,CAAA,CAAG,MAClE,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,SACL,UAAU,oFACV,MAAO,OAAO,SAAS,EAAM,CAAG,EAAQ,EAC9B,WACV,SAAW,GAAM,EAAS,OAAO,EAAE,OAAO,MAAM,CAAC,CACjD,CAAA,CACE,GAIV,SAAS,EAAa,CACpB,IACA,QACA,WACA,YAMC,CAED,IAAM,GADO,OAAO,EAAE,aAAgB,SAAW,EAAE,YAAc,IAAA,MAEtD,OAAO,EAAE,OAAU,UAAY,EAAE,MAAM,OAAS,EAAI,EAAE,MAAQ,UACzE,OACE,EAAA,EAAA,MAAC,QAAD,CAAO,UAAU,mDAAjB,EACE,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,WACL,UAAU,qCACV,QAAS,EACC,WACV,SAAW,GAAM,EAAS,EAAE,OAAO,QAAQ,CAC3C,CAAA,EACF,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAiB,CAAA,CAClB,GAIZ,SAAS,EAAiB,CACxB,IACA,QACA,WACA,YAMC,CACD,IAAM,EAAO,OAAO,EAAE,aAAgB,SAAW,EAAE,YAAc,IAAA,GAC3D,EAAQ,EAAE,MAEhB,GAAI,EADkB,EAAS,EAAM,EAAI,EAAM,OAAS,UAEtD,OAAO,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,iCAAwB,yBAA0B,CAAA,CAExE,IAAM,EAAO,GAAc,CACzB,IAAM,EAAI,EAAE,MAAM,CACd,CAAC,GAAK,EAAM,SAAS,EAAE,EAC3B,EAAS,CAAC,GAAG,EAAO,EAAE,CAAC,EAEzB,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,iCAAf,CACG,GAAO,EAAA,EAAA,KAAC,QAAD,CAAO,UAAU,iCAAyB,EAAa,CAAA,CAAG,MAClE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gCACZ,EAAM,IAAK,IACV,EAAA,EAAA,MAAC,OAAD,CAEE,UAAU,6GAFZ,CAIG,GACD,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,UAAU,8BACA,WACV,YAAe,EAAS,EAAM,OAAQ,GAAM,IAAM,EAAE,CAAC,UACtD,IAEQ,CAAA,CACJ,EAZA,EAYA,CACP,CACE,CAAA,EACN,EAAA,EAAA,KAAC,QAAD,CACE,UAAU,4EACA,WACV,YAAY,sBACZ,UAAY,GAAM,CACZ,EAAE,MAAQ,UACZ,EAAE,gBAAgB,CAClB,EAAK,EAAE,OAA4B,MAAM,CACxC,EAAE,OAA4B,MAAQ,KAG3C,CAAA,CACE,GAIV,SAAS,EAAS,CAChB,IACA,MACA,QACA,UACA,YAOC,CACD,IAAM,EAAI,EAAI,KACR,GACH,OAAO,EAAI,OAAU,UAAY,EAAI,MAAM,OAAS,EAAI,EAAI,MAAQ,OAAS,EAChF,GAAI,IAAM,UACR,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,uBAAf,EACE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,uCAA+B,EAAU,CAAA,EACtD,EAAA,EAAA,KAAC,EAAD,CACE,EAAG,EACH,MAAO,IAAU,GACP,WACV,SAAW,GAAM,EAAQ,EAAE,CAC3B,CAAA,CACE,GAGV,GAAI,IAAM,UAAY,IAAM,UAC1B,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,uBAAf,EACE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,uCAA+B,EAAU,CAAA,EACtD,EAAA,EAAA,KAAC,EAAD,CACE,EAAG,EACH,MAAO,OAAO,GAAU,SAAW,EAAQ,EACjC,WACV,SAAU,EACV,CAAA,CACE,GAGV,GAAI,IAAM,SACR,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,uBAAf,EACE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,uCAA+B,EAAU,CAAA,EACtD,EAAA,EAAA,KAAC,EAAD,CACE,KAAM,EACN,EAAG,EACH,MAAO,OAAO,GAAU,SAAW,EAAQ,GACjC,WACV,SAAU,EACV,CAAA,CACE,GAGV,GAAI,IAAM,QAAS,CACjB,IAAM,EAAQ,EAAI,MAClB,GAAI,EAAS,EAAM,EAAI,EAAM,OAAS,SACpC,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,uBAAf,EACE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,uCAA+B,EAAU,CAAA,EACtD,EAAA,EAAA,KAAC,EAAD,CACE,EAAG,EACH,MAAO,MAAM,QAAQ,EAAM,EAAI,EAAM,MAAO,GAAM,OAAO,GAAM,SAAS,CAAG,EAAQ,EAAE,CAC3E,WACV,SAAU,EACV,CAAA,CACE,GAIZ,OACE,EAAA,EAAA,MAAC,IAAD,CAAG,UAAU,iCAAb,CACG,EAAM,2BACN,OAAO,GAAM,SAAW,KAAK,EAAE,GAAK,GACnC,GAOR,SAAgB,EAAW,CAAE,SAAQ,SAAQ,WAAU,WAAW,GAAO,aAA8B,CACrG,IAAM,GAAA,EAAA,EAAA,aACA,EAAO,OAAS,SACb,EAAa,EAAO,CADU,EAAE,CAEtC,CAAC,EAAO,CAAC,CAEN,GAAA,EAAA,EAAA,aACA,EAAO,SAAW,EAAU,IAAI,IAC7B,EAAY,EAAO,CACzB,CAAC,EAAO,CAAC,CAEN,GAAA,EAAA,EAAA,cACH,EAAa,IAAkB,CAC9B,EAAS,CAAE,GAAG,GAAS,GAAM,EAAM,CAAC,EAEtC,CAAC,EAAU,EAAO,CACnB,CAED,GAAI,EAAO,OAAS,UAAY,CAAC,EAAS,EAAO,WAAW,EAAI,EAAO,SAAW,EAChF,OAAO,KAGT,IAAM,EAAY,MAAM,KAAK,EAAQ,MAAM,CAAC,CAAC,MAAM,EAAG,IAChD,IAAM,GAAW,GACjB,IAAM,GAAW,EACd,EAAE,cAAc,EAAE,CACzB,CAEF,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAG,sBAAuB,EAAU,UACjD,EAAU,IAAK,GAAO,CAErB,IAAM,GADO,EAAQ,IAAI,EAAG,EAAI,EAAE,EACf,IAAK,IACtB,EAAA,EAAA,KAAC,EAAD,CAEE,EAAG,EAAE,IACL,IAAK,EAAE,IACP,MAAO,EAAO,EAAE,KAChB,QAAU,GAAM,EAAO,EAAE,IAAK,EAAE,CACtB,WACV,CANK,EAAE,IAMP,CACF,CAIF,OAHI,IAAO,IACF,EAAA,EAAA,KAAC,MAAD,CAAA,SAAoB,EAAY,CAAvB,UAAuB,EAGvC,EAAA,EAAA,MAAC,UAAD,CAEE,UAAU,+EACV,KAAA,YAHF,EAKE,EAAA,EAAA,KAAC,UAAD,CAAS,UAAU,sGAChB,EACO,CAAA,EACV,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,8CAAsC,EAAY,CAAA,CACzD,EARH,EAQG,EAEZ,CACE,CAAA,CAKV,SAAgB,EACd,EACyB,CACzB,IAAM,EAA+B,EAAE,CACvC,GAAI,EAAO,OAAS,UAAY,CAAC,EAAS,EAAO,WAAW,CAC1D,OAAO,EAET,IAAK,GAAM,CAAC,EAAG,KAAQ,OAAO,QAAQ,EAAO,WAAW,CACjD,EAAS,EAAI,EACd,OAAO,UAAU,eAAe,KAAK,EAAK,UAAU,GACtD,EAAI,GAAK,EAAI,SAGjB,OAAO,EC9XT,SAAgB,EAAsB,CAAE,eAAwC,CAC9E,IAAM,EAAW,EAAiB,GAAM,EAAQ,EAAE,MAAO,CACnD,CAAE,KAAM,EAAQ,MAAO,GAAgB,EAC3C,GAAY,EAAc,cAAc,IAAgB,SAClD,EAAmC,EAAO,mBAAmB,mBAAmB,EAAY,GAAG,CAAC,CACvG,CAEK,CAAE,KAAM,EAAc,OAAQ,EAAc,MAAO,GAAgB,EACvE,GAAY,EAAc,WAAW,IAAgB,SAEnD,EACE,EAAO,mBAAmB,mBAAmB,EAAY,CAAC,SAAS,CACpE,CACJ,CAEK,EAAS,GAAQ,UAAU,aAC3B,GAAA,EAAA,EAAA,aACG,GAAU,EAAO,OAAS,SAAW,EAAsB,EAAO,CAAG,EAAE,CAC9E,CAAC,EAAO,CACT,CAEK,GAAA,EAAA,EAAA,cACG,CAAE,GAAG,EAAU,GAAI,GAAgB,EAAE,CAAG,EAC/C,CAAC,EAAU,EAAa,CACzB,CAEK,CAAC,EAAa,IAAA,EAAA,EAAA,UAAoD,EAAE,CAAC,CACrE,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAQ,IAAA,EAAA,EAAA,UAAsB,GAAM,CACrC,CAAC,EAAW,IAAA,EAAA,EAAA,UAAwC,KAAK,CACzD,CAAC,EAAa,IAAA,EAAA,EAAA,UAA2B,GAAM,EAErD,EAAA,EAAA,eAAgB,CACV,GACJ,EAAe,EAAY,EAC1B,CAAC,EAAS,EAAY,CAAC,CAE1B,IAAM,GAAA,EAAA,EAAA,aAAwB,GAAkC,CAC9D,EAAe,EAAK,CACpB,EAAW,GAAK,CAChB,EAAa,KAAK,EACjB,EAAE,CAAC,CAEA,GAAA,EAAA,EAAA,iBAAkC,CACtC,EAAe,EAAY,CAC3B,EAAW,GAAM,CACjB,EAAa,KAAK,EACjB,CAAC,EAAY,CAAC,CAEX,GAAA,EAAA,EAAA,iBAAwC,CACxC,CAAC,GAAU,EAAO,OAAS,WAC/B,EAAe,CAAE,GAAG,EAAsB,EAAO,CAAE,CAAC,CACpD,EAAW,GAAK,CAChB,EAAa,KAAK,GACjB,CAAC,EAAO,CAAC,CAEN,GAAA,EAAA,EAAA,aAAyB,SAAY,CACpC,KAEL,CADA,EAAU,GAAK,CACf,EAAa,KAAK,CAClB,GAAI,CACF,IAAM,EAAM,MAAM,EAChB,EAAO,mBAAmB,mBAAmB,EAAY,CAAC,SAAS,CACnE,CAAE,OAAQ,QAAS,KAAM,KAAK,UAAU,EAAY,CAAE,CACvD,CACD,GAAI,CAAC,EAAI,GAAI,CACX,IAAM,EAAQ,MAAM,EAAI,MAAM,CAAC,WAAa,EAAE,EAAE,CAChD,MAAU,MAAM,EAAK,OAAO,SAAW,EAAI,WAAW,CAExD,MAAM,EAAa,EAAa,GAAM,CACtC,EAAW,GAAM,CACjB,EAAe,GAAK,CACpB,OAAO,eAAiB,EAAe,GAAM,CAAE,IAAK,OAC7C,EAAG,CACV,EAAa,aAAa,MAAQ,EAAE,QAAU,OAAO,EAAE,CAAC,QAChD,CACR,EAAU,GAAM,IAEjB,CAAC,EAAa,EAAa,EAAa,CAAC,CAE5C,GAAI,CAAC,EACH,OAAO,KAGT,GAAI,GAAe,EAAa,CAC9B,IAAM,EAAO,GAAe,EAC5B,OACE,EAAA,EAAA,MAAC,IAAD,CAAG,UAAU,iCAAb,CAAqC,sCACC,aAAe,MAAQ,EAAI,QAAU,OAAO,EAAI,CAClF,GAQR,MAJI,CAAC,GAAU,EAAO,OAAS,SACtB,MAIP,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sFAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,6DAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,yCAAgC,gBAAkB,CAAA,EAChE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,6CAAf,CACG,GACC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,0DAAiD,QAAY,CAAA,CAC3E,KACH,GAAY,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,kDAA0C,EAAiB,CAAA,CAAG,MAC3F,EAAA,EAAA,KAAC,EAAD,CACE,KAAK,SACL,QAAQ,QACR,UAAU,cACV,SAAU,CAAC,EACX,QAAS,WACV,UAEQ,CAAA,EACT,EAAA,EAAA,KAAC,EAAD,CACE,KAAK,SACL,QAAQ,QACR,UAAU,cACV,QAAS,WACV,oBAEQ,CAAA,EACT,EAAA,EAAA,KAAC,EAAD,CACE,KAAK,SACL,QAAQ,UACR,UAAU,cACV,SAAU,CAAC,GAAW,EACtB,YAAe,KAAK,GAAY,UAE/B,EAAS,UAAY,OACf,CAAA,CACL,GACF,IACN,EAAA,EAAA,KAAC,EAAD,CAAoB,SAAQ,OAAQ,EAAuB,WAAU,SAAU,EAAU,CAAA,CACrF,GCxIV,SAAgB,GAAwB,CACtC,GAAM,CAAE,cAAa,WAAY,GAAsD,CACjF,EAAa,GAAe,CAElC,GAAI,CAAC,EACH,OAAO,EAAA,EAAA,KAAC,EAAD,CAAuB,QAAQ,4BAA8B,CAAA,CAGtE,IAAM,EAAY,EAAW,KAAM,GAAQ,EAAI,KAAO,EAAY,CAClE,GAAI,CAAC,EACH,OACE,EAAA,EAAA,KAAC,EAAD,CACE,QAAS,cAAc,EAAY,oDACnC,CAAA,CAIN,IAAM,EAAS,EAAU,IAAI,eAAe,eACtC,EAAQ,EACV,GAAQ,KAAM,GAAM,EAAE,KAAO,GAAW,EAAE,KAAO,GAAG,EAAY,GAAG,IAAU,CAC7E,IAAS,GAEP,EAAY,GAAQ,GAAS,EAAU,IAa7C,MAVI,CAFoB,EAAU,iBAElB,CAAC,GAEb,EAAA,EAAA,KAAC,EAAD,CACE,QAAS,cAAc,EAAY,4CACnC,CAAA,EAOJ,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,uEAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,yCAJJ,GAAO,OAAS,GAAG,EAAU,KAAK,WAIc,CAAA,EAC1D,EAAA,EAAA,KAAC,EAAD,CAAoC,cAAe,CAAA,CAClD,GAAa,GAAS,EAAU,IAC/B,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,0EACb,EAAA,EAAA,KAAC,EAAD,CACe,cACb,cAAe,EAAU,KACzB,WAAY,EAAM,WAClB,YAAa,EAAU,IAAI,YAC3B,MAAO,EAAM,MACb,UAAU,SACV,UAAW,IACX,UAAW,IACX,CAAA,CACE,CAAA,CACJ,KACA,GAIV,SAAS,EAAsB,CAAE,WAAgC,CAC/D,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,wEACb,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,iCAAyB,EAAY,CAAA,CAC9C,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.markdown-body{letter-spacing:-.011em;color:inherit;font-size:.9375rem;line-height:1.5}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{letter-spacing:-.022em;color:var(--color-fg);margin-top:1.35em;margin-bottom:.45em;font-weight:600;line-height:1.25}.markdown-body h1{border-bottom:1px solid var(--color-edge);padding-bottom:.3em;font-size:1.5em}.markdown-body h2{border-bottom:1px solid var(--color-edge);padding-bottom:.3em;font-size:1.3em}.markdown-body h3{font-size:1.1em}.markdown-body ul,.markdown-body ol{margin-bottom:1em;padding-left:2em}.markdown-body li{margin-bottom:.35em}.markdown-body code{font-family:var(--font-mono);background:var(--color-surface-hover);border-radius:var(--radius-sm);color:var(--color-accent-fg);padding:.15em .4em;font-size:.875em}.markdown-body pre{background:var(--color-surface-hover);border-radius:var(--radius-xl);border:1px solid var(--color-edge);margin-bottom:1em;padding:1em;overflow-x:auto}.markdown-body pre code{color:inherit;background:0 0;padding:0;font-size:.8125rem}.markdown-body blockquote{border-left:3px solid var(--color-accent);color:var(--color-fg-muted);background:var(--color-surface-hover);border-radius:0 var(--radius-lg) var(--radius-lg) 0;margin:0 0 1em;padding:.75em 1em}.markdown-body a{color:var(--color-accent-fg);text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body hr{background:var(--color-edge);border:none;height:1px;margin:1.5em 0}.markdown-body table{border-collapse:collapse;border:1px solid var(--color-edge);border-radius:var(--radius-lg);width:100%;margin:0 0 1em;font-size:.875rem;line-height:1.5;overflow:hidden}.markdown-body th,.markdown-body td{border:1px solid var(--color-edge-subtle);text-align:left;vertical-align:top;padding:.5rem .75rem}.markdown-body th{background:var(--color-surface-hover);color:var(--color-fg);font-weight:600}.markdown-body tbody tr:hover td{background:var(--color-surface-hover)}.markdown-body p{margin:0 0 .75em}.markdown-body strong{font-weight:600}.markdown-body em{font-style:italic}.markdown-body.markdown-compact h1,.markdown-body.markdown-compact h2,.markdown-body.markdown-compact h3{margin-top:.75em;margin-bottom:.25em}.markdown-body.markdown-compact p{margin:0 0 .5em}.markdown-body.markdown-compact pre{margin-bottom:.75em}html.dark .markdown-body pre code.hljs{padding:1em;display:block;overflow-x:auto}html.dark .markdown-body code.hljs{padding:3px 5px}html.dark .markdown-body .hljs{color:#c9d1d9;background:#0d1117}html.dark .markdown-body .hljs-doctag,html.dark .markdown-body .hljs-keyword,html.dark .markdown-body .hljs-meta .hljs-keyword,html.dark .markdown-body .hljs-template-tag,html.dark .markdown-body .hljs-template-variable,html.dark .markdown-body .hljs-type,html.dark .markdown-body .hljs-variable.language_{color:#ff7b72}html.dark .markdown-body .hljs-title,html.dark .markdown-body .hljs-title.class_,html.dark .markdown-body .hljs-title.class_.inherited__,html.dark .markdown-body .hljs-title.function_{color:#d2a8ff}html.dark .markdown-body .hljs-attr,html.dark .markdown-body .hljs-attribute,html.dark .markdown-body .hljs-literal,html.dark .markdown-body .hljs-meta,html.dark .markdown-body .hljs-number,html.dark .markdown-body .hljs-operator,html.dark .markdown-body .hljs-variable,html.dark .markdown-body .hljs-selector-attr,html.dark .markdown-body .hljs-selector-class,html.dark .markdown-body .hljs-selector-id{color:#79c0ff}html.dark .markdown-body .hljs-regexp,html.dark .markdown-body .hljs-string,html.dark .markdown-body .hljs-meta .hljs-string{color:#a5d6ff}html.dark .markdown-body .hljs-built_in,html.dark .markdown-body .hljs-symbol{color:#ffa657}html.dark .markdown-body .hljs-comment,html.dark .markdown-body .hljs-code,html.dark .markdown-body .hljs-formula{color:#8b949e}html.dark .markdown-body .hljs-name,html.dark .markdown-body .hljs-quote,html.dark .markdown-body .hljs-selector-tag,html.dark .markdown-body .hljs-selector-pseudo{color:#7ee787}html.dark .markdown-body .hljs-subst{color:#c9d1d9}html.dark .markdown-body .hljs-section{color:#1f6feb;font-weight:700}html.dark .markdown-body .hljs-bullet{color:#f2cc60}html.dark .markdown-body .hljs-emphasis{color:#c9d1d9;font-style:italic}html.dark .markdown-body .hljs-strong{color:#c9d1d9;font-weight:700}html.dark .markdown-body .hljs-addition{color:#aff5b4;background-color:#033a16}html.dark .markdown-body .hljs-deletion{color:#ffdcd7;background-color:#67060c}@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{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--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:"";--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--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:"";--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", system-ui, "Segoe UI", Roboto, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Microsoft YaHei", 微软雅黑, sans-serif;--font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Monaco, Consolas, monospace;--color-red-50:#fef2f2;--color-red-100:#ffe2e2;--color-red-200:#ffcaca;--color-red-300:#ffa3a3;--color-red-400:#ff6568;--color-red-500:#fb2c36;--color-red-600:#e40014;--color-red-700:#bf000f;--color-red-800:#9f0712;--color-red-900:#82181a;--color-red-950:#460809;--color-amber-50:#fffbeb;--color-amber-100:#fef3c6;--color-amber-200:#fee685;--color-amber-400:#fcbb00;--color-amber-500:#f99c00;--color-amber-600:#dd7400;--color-amber-800:#953d00;--color-amber-900:#7b3306;--color-amber-950:#461901;--color-yellow-400:#fac800;--color-yellow-600:#cd8900;--color-green-400:#05df72;--color-green-600:#00a544;--color-emerald-50:#ecfdf5;--color-emerald-100:#d0fae5;--color-emerald-200:#a4f4cf;--color-emerald-300:#5ee9b5;--color-emerald-400:#00d294;--color-emerald-500:#00bb7f;--color-emerald-600:#009767;--color-emerald-700:#007956;--color-emerald-800:#005f46;--color-emerald-900:#004e3b;--color-emerald-950:#002c22;--color-blue-50:#eff6ff;--color-blue-100:#dbeafe;--color-blue-200:#bedbff;--color-blue-400:#54a2ff;--color-blue-600:#155dfc;--color-blue-800:#193cb8;--color-blue-900:#1c398e;--color-blue-950:#162456;--color-indigo-300:#a4b3ff;--color-indigo-400:#7d87ff;--color-indigo-500:#625fff;--color-indigo-950:#1e1a4d;--color-purple-300:#d9b3ff;--color-purple-400:#c07eff;--color-purple-500:#ac4bff;--color-purple-950:#3c0366;--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;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-sm:.625rem;--radius-md:.75rem;--radius-lg:.875rem;--radius-xl:1.125rem;--radius-2xl:1rem;--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;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-surface-base:#f5f5f7;--color-surface-panel:#fff;--color-surface-hover:#e8e8ed;--color-surface-active:#dcdcde;--color-fg:#1d1d1f;--color-fg-muted:#6e6e73;--color-fg-subtle:#86868b;--color-fg-disabled:#aeaeb2;--color-edge-subtle:#ebebed;--color-edge:#d2d2d7;--color-edge-strong:#bcbcc0;--color-accent:#2563eb;--color-accent-hover:#1d4ed8;--color-accent-soft:#eff6ff;--color-accent-fg:#2563eb;--color-checkbox-accent:#3c3c43;--color-success:#059669;--color-success-soft:#d1fae5;--color-danger:#dc2626;--color-warning:#d97706;--color-scrim:#0000005c;--radius-pill:9999px;--max-width-app-main:56rem;--max-width-chat:64rem}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18508 1.52328);--color-red-100:lab(92.243% 10.2865 3.83865);--color-red-200:lab(86.017% 19.8815 7.75869);--color-red-300:lab(76.5514% 36.422 15.5335);--color-red-400:lab(63.7053% 60.745 31.3109);--color-red-500:lab(55.4814% 75.0732 48.8528);--color-red-600:lab(48.4493% 77.4328 61.5452);--color-red-700:lab(40.4273% 67.2623 53.7441);--color-red-800:lab(33.7174% 55.8993 41.0293);--color-red-900:lab(28.5139% 44.5539 29.0463);--color-red-950:lab(13.003% 29.04 16.7519);--color-amber-50:lab(98.6252% -.635922 8.42309);--color-amber-100:lab(95.916% -1.21653 23.111);--color-amber-200:lab(91.7203% -.505269 49.9084);--color-amber-400:lab(80.1641% 16.6016 99.2089);--color-amber-500:lab(72.7183% 31.8672 97.9407);--color-amber-600:lab(60.3514% 40.5624 87.1228);--color-amber-800:lab(37.8822% 37.1699 52.2718);--color-amber-900:lab(31.2288% 30.2627 40.0378);--color-amber-950:lab(15.8111% 20.9107 23.3752);--color-yellow-400:lab(83.2664% 8.65132 106.895);--color-yellow-600:lab(62.7799% 22.4197 86.1544);--color-green-400:lab(78.503% -64.9265 39.7492);--color-green-600:lab(59.0978% -58.6621 41.2579);--color-emerald-50:lab(97.8462% -6.94966 1.85487);--color-emerald-100:lab(94.9004% -17.0769 5.63836);--color-emerald-200:lab(90.2247% -31.039 9.47084);--color-emerald-300:lab(83.9203% -48.7124 13.8849);--color-emerald-400:lab(75.0771% -60.7313 19.4147);--color-emerald-500:lab(66.9756% -58.27 19.5419);--color-emerald-600:lab(55.0481% -49.9246 15.93);--color-emerald-700:lab(44.4871% -41.0396 11.0361);--color-emerald-800:lab(35.3675% -33.1188 8.04002);--color-emerald-900:lab(28.8637% -26.9249 5.45986);--color-emerald-950:lab(15.0582% -17.9507 2.38369);--color-blue-50:lab(96.492% -1.14644 -5.11479);--color-blue-100:lab(92.0301% -2.24757 -11.6453);--color-blue-200:lab(86.15% -4.04379 -21.0797);--color-blue-400:lab(65.0361% -1.42065 -56.9802);--color-blue-600:lab(44.0605% 29.0279 -86.0352);--color-blue-800:lab(30.2514% 27.7853 -70.2699);--color-blue-900:lab(26.1542% 15.7545 -51.5504);--color-blue-950:lab(15.6723% 8.86232 -32.2945);--color-indigo-300:lab(74.0235% 8.54138 -41.6075);--color-indigo-400:lab(59.866% 22.4834 -64.4485);--color-indigo-500:lab(48.295% 38.3129 -81.9673);--color-indigo-950:lab(12.4853% 14.9672 -31.3418);--color-purple-300:lab(78.3298% 26.2195 -34.9499);--color-purple-400:lab(63.6946% 47.6127 -59.2066);--color-purple-500:lab(52.0183% 66.11 -78.2316);--color-purple-950:lab(14.8253% 38.9005 -44.5861)}}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::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,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-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{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}*{box-sizing:border-box}html{height:100%;font-family:var(--font-sans);background-color:var(--color-surface-base);color:var(--color-fg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;font-size:100%;overflow:hidden}@media (prefers-color-scheme:dark){html{--lightningcss-light: ;--lightningcss-dark:initial}}html[data-font-scale=compact]{font-size:87.5%}html[data-font-scale=large]{font-size:112.5%}body{letter-spacing:-.006em;height:100%;min-height:100%;margin:0;font-size:.9375rem;line-height:1.47059;overflow:hidden}#root{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}::selection{background:var(--color-accent-soft);color:var(--color-accent-fg)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}:focus-visible:not(input):not(textarea){border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}input:focus,input:focus-visible,textarea:focus,textarea:focus-visible,select:focus,select:focus-visible{outline-offset:0;box-shadow:none;outline:none}}@layer components{.ui-checkbox{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4);cursor:pointer;border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-edge);background-color:var(--color-surface-panel);accent-color:var(--color-checkbox-accent);border-radius:.25rem;flex-shrink:0}.ui-checkbox:disabled{cursor:not-allowed;opacity:.5}.ui-select{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-edge-subtle);background-color:var(--color-surface-panel);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-snug);line-height:var(--leading-snug);--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--color-fg);cursor:pointer;transition-property:border-color,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-out);transition-duration:.15s;transition-timing-function:var(--ease-out)}@media (hover:hover){.ui-select:hover{border-color:var(--color-edge);background-color:#e8e8ed73}@supports (color:color-mix(in lab, red, red)){.ui-select:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 45%, transparent)}}}.ui-select:focus,.ui-select:focus-visible{--tw-outline-style:none;outline-style:none}.ui-select: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)}.ui-select:focus-visible{--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);--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);--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);border-color:var(--color-edge)}html.dark .ui-select{border-color:var(--color-edge-subtle);background-color:var(--color-surface-panel)}html.dark .ui-select:hover{border-color:var(--color-edge);background-color:#e8e8ed8c}@supports (color:color-mix(in lab, red, red)){html.dark .ui-select:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 55%, transparent)}}.ui-select:disabled{cursor:not-allowed;opacity:.5}.chat-skill-pill{max-width:100%;padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * .5);vertical-align:baseline;--tw-leading:calc(var(--spacing) * 5);font-size:.9375rem;line-height:calc(var(--spacing) * 5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:#8a8a2e;background-color:#f5f5e6;border-radius:3.40282e38px;flex-shrink:0;align-items:center;display:inline-flex}html.dark .chat-skill-pill{color:#c4c47a;background-color:#2d2d24}.chat-file-pill{background:var(--color-accent-soft);color:var(--color-accent-fg);white-space:nowrap;-webkit-user-select:none;user-select:none;cursor:default;vertical-align:baseline;border-radius:.25rem;align-items:center;gap:.125rem;padding:.0625rem .375rem;font-size:.8125rem;font-weight:500;display:inline-flex}.composer-input{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;position:relative}.composer-input-empty:before{content:attr(data-placeholder);color:var(--color-fg-disabled);pointer-events:none}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.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:calc(var(--spacing) * 0)}.inset-4{inset:calc(var(--spacing) * 4)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-1{top:calc(var(--spacing) * -1)}.-top-2{top:calc(var(--spacing) * -2)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-full{top:100%}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-6{right:calc(var(--spacing) * 6)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-1{bottom:calc(var(--spacing) * 1)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-\[calc\(11rem\+env\(safe-area-inset-bottom\,0px\)\)\]{bottom:calc(11rem + env(safe-area-inset-bottom,0px))}.left-0{left:calc(var(--spacing) * 0)}.left-0\.5{left:calc(var(--spacing) * .5)}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.left-\[18\%\]{left:18%}.left-full{left:100%}.isolate{isolation:isolate}.\!z-\[10000\]{z-index:10000!important}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[55\]{z-index:55}.z-\[60\]{z-index:60}.z-\[62\]{z-index:62}.z-\[65\]{z-index:65}.z-\[66\]{z-index:66}.z-\[70\]{z-index:70}.z-\[80\]{z-index:80}.z-\[81\]{z-index:81}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[120\]{z-index:120}.z-\[130\]{z-index:130}.z-\[131\]{z-index:131}.z-\[200\]{z-index:200}.z-\[201\]{z-index:201}.order-1{order:1}.order-2{order:2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-4{margin-block:calc(var(--spacing) * 4)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.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-10{margin-top:calc(var(--spacing) * 10)}.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)}.-mb-px{margin-bottom:-1px}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-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}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.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-\[1\.35rem\]{width:1.35rem;height:1.35rem}.size-\[1\.125rem\]{width:1.125rem;height:1.125rem}.size-\[4\.5rem\]{width:4.5rem;height:4.5rem}.size-\[14px\]{width:14px;height:14px}.size-\[18px\]{width:18px;height:18px}.size-full{width:100%;height:100%}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-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-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-36{height:calc(var(--spacing) * 36)}.h-40{height:calc(var(--spacing) * 40)}.h-52{height:calc(var(--spacing) * 52)}.h-\[100dvh\]{height:100dvh}.h-\[calc\(100dvh-2rem\)\]{height:calc(100dvh - 2rem)}.h-\[min\(18rem\,40vh\)\]{height:min(18rem,40vh)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-16{max-height:calc(var(--spacing) * 16)}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[4\.5rem\]{max-height:4.5rem}.max-h-\[12rem\]{max-height:12rem}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.max-h-\[min\(12rem\,40vh\)\]{max-height:min(12rem,40vh)}.max-h-\[min\(16rem\,calc\(100vh-10rem\)\)\]{max-height:min(16rem,100vh - 10rem)}.max-h-\[min\(20rem\,calc\(100vh-6rem\)\)\]{max-height:min(20rem,100vh - 6rem)}.max-h-\[min\(24rem\,50vh\)\]{max-height:min(24rem,50vh)}.max-h-\[min\(24rem\,55vh\)\]{max-height:min(24rem,55vh)}.max-h-\[min\(26rem\,54vh\)\]{max-height:min(26rem,54vh)}.max-h-\[min\(28rem\,60vh\)\]{max-height:min(28rem,60vh)}.max-h-\[min\(30vh\,11rem\)\]{max-height:min(30vh,11rem)}.max-h-\[min\(32rem\,85vh\)\]{max-height:min(32rem,85vh)}.max-h-\[min\(32rem\,90vh\)\]{max-height:min(32rem,90vh)}.max-h-\[min\(42vh\,20rem\)\]{max-height:min(42vh,20rem)}.max-h-\[min\(50vh\,20rem\)\]{max-height:min(50vh,20rem)}.max-h-\[min\(50vh\,22rem\)\]{max-height:min(50vh,22rem)}.max-h-\[min\(60vh\,26rem\)\]{max-height:min(60vh,26rem)}.max-h-\[min\(90vh\,32rem\)\]{max-height:min(90vh,32rem)}.max-h-\[min\(90vh\,44rem\)\]{max-height:min(90vh,44rem)}.max-h-\[min\(90vh\,48rem\)\]{max-height:min(90vh,48rem)}.max-h-\[min\(90vh\,52rem\)\]{max-height:min(90vh,52rem)}.max-h-\[min\(90vh\,56rem\)\]{max-height:min(90vh,56rem)}.max-h-\[min\(90vh\,640px\)\]{max-height:min(90vh,640px)}.max-h-\[min\(90vh\,720px\)\]{max-height:min(90vh,720px)}.max-h-\[min\(90vh\,800px\)\]{max-height:min(90vh,800px)}.max-h-\[min\(90vh\,840px\)\]{max-height:min(90vh,840px)}.max-h-\[min\(100\%\,calc\(100dvh-9rem\)\)\]{max-height:min(100%,100dvh - 9rem)}.max-h-\[min\(100vh-2rem\,44rem\)\]{max-height:min(100vh - 2rem,44rem)}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-64{min-height:calc(var(--spacing) * 64)}.min-h-\[1\.125rem\]{min-height:1.125rem}.min-h-\[1\.3125rem\]{min-height:1.3125rem}.min-h-\[2\.5rem\]{min-height:2.5rem}.min-h-\[2\.75rem\]{min-height:2.75rem}.min-h-\[2px\]{min-height:2px}.min-h-\[4\.5rem\]{min-height:4.5rem}.min-h-\[7\.5rem\]{min-height:7.5rem}.min-h-\[11rem\]{min-height:11rem}.min-h-\[12rem\]{min-height:12rem}.min-h-\[44px\]{min-height:44px}.min-h-\[88px\]{min-height:88px}.min-h-\[100dvh\]{min-height:100dvh}.min-h-\[100px\]{min-height:100px}.min-h-\[140px\]{min-height:140px}.min-h-\[200px\]{min-height:200px}.min-h-\[320px\]{min-height:320px}.min-h-\[min\(40vh\,16rem\)\]{min-height:min(40vh,16rem)}.min-h-\[min\(40vh\,20rem\)\]{min-height:min(40vh,20rem)}.min-h-full{min-height:100%}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\/3{width:66.6667%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-5\/6{width:83.3333%}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-64{width:calc(var(--spacing) * 64)}.w-\[4\.5rem\]{width:4.5rem}.w-\[5\.25rem\]{width:5.25rem}.w-\[9\.25rem\]{width:9.25rem}.w-\[42\%\]{width:42%}.w-\[min\(22rem\,calc\(100vw-2rem\)\)\]{width:min(22rem,100vw - 2rem)}.w-\[min\(28rem\,calc\(100vw-2rem\)\)\]{width:min(28rem,100vw - 2rem)}.w-\[min\(42rem\,calc\(100vw-1\.5rem\)\)\]{width:min(42rem,100vw - 1.5rem)}.w-\[min\(100\%\,var\(--max-width-app-main\)\)\]{width:min(100%, var(--max-width-app-main))}.w-\[min\(100\%-2rem\,22rem\)\]{width:min(100% - 2rem,22rem)}.w-\[min\(100\%-2rem\,24rem\)\]{width:min(100% - 2rem,24rem)}.w-\[min\(100\%-2rem\,26rem\)\]{width:min(100% - 2rem,26rem)}.w-\[min\(100\%-2rem\,28rem\)\]{width:min(100% - 2rem,28rem)}.w-\[min\(100\%-2rem\,32rem\)\]{width:min(100% - 2rem,32rem)}.w-\[min\(100\%-2rem\,36rem\)\]{width:min(100% - 2rem,36rem)}.w-\[min\(100\%-2rem\,min\(92vw\,48rem\)\)\]{width:min(100% - 2rem,min(92vw,48rem))}.w-\[min\(100\%-2rem\,min\(92vw\,56rem\)\)\]{width:min(100% - 2rem,min(92vw,56rem))}.w-\[min\(calc\(100vw-2rem\)\,15rem\)\]{width:min(100vw - 2rem,15rem)}.w-\[min\(calc\(100vw-2rem\)\,20rem\)\]{width:min(100vw - 2rem,20rem)}.w-\[var\(--radix-popover-trigger-width\)\]{width:var(--radix-popover-trigger-width)}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:max-content}.\[max-width\:min\(20rem\,90vw\)\]{max-width:min(20rem,90vw)}.max-w-\(--max-width-chat\){max-width:var(--max-width-chat)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-\[4\.5rem\]{max-width:4.5rem}.max-w-\[7rem\]{max-width:7rem}.max-w-\[8rem\]{max-width:8rem}.max-w-\[10rem\]{max-width:10rem}.max-w-\[11rem\]{max-width:11rem}.max-w-\[12rem\]{max-width:12rem}.max-w-\[14rem\]{max-width:14rem}.max-w-\[16rem\]{max-width:16rem}.max-w-\[17rem\]{max-width:17rem}.max-w-\[200px\]{max-width:200px}.max-w-\[min\(6\.5rem\,30vw\)\]{max-width:min(6.5rem,30vw)}.max-w-\[min\(10rem\,calc\(100vw-12rem\)\)\]{max-width:min(10rem,100vw - 12rem)}.max-w-\[min\(12rem\,40vw\)\]{max-width:min(12rem,40vw)}.max-w-\[min\(12rem\,46\%\)\]{max-width:min(12rem,46%)}.max-w-\[min\(16rem\,48vw\)\]{max-width:min(16rem,48vw)}.max-w-\[min\(20rem\,calc\(100vw-10rem\)\)\]{max-width:min(20rem,100vw - 10rem)}.max-w-\[min\(32rem\,calc\(100vw-8rem\)\)\]{max-width:min(32rem,100vw - 8rem)}.max-w-\[min\(85\%\,var\(--max-width-chat\)\)\]{max-width:min(85%, var(--max-width-chat))}.max-w-\[min\(100\%\,12rem\)\]{max-width:min(100%,12rem)}.max-w-\[min\(100\%\,48rem\)\]{max-width:min(100%,48rem)}.max-w-\[min\(100\%\,52rem\)\]{max-width:min(100%,52rem)}.max-w-\[min\(220px\,88vw\)\]{max-width:min(220px,88vw)}.max-w-\[min\(calc\(100vw-1rem\)\,28rem\)\]{max-width:min(100vw - 1rem,28rem)}.max-w-\[min\(calc\(100vw-2rem\)\,16rem\)\]{max-width:min(100vw - 2rem,16rem)}.max-w-\[var\(--max-width-chat\)\]{max-width:var(--max-width-chat)}.max-w-app-main{max-width:var(--max-width-app-main)}.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:calc(var(--spacing) * 0)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-\[4\.5rem\]{min-width:4.5rem}.min-w-\[4\.25rem\]{min-width:4.25rem}.min-w-\[4rem\]{min-width:4rem}.min-w-\[5rem\]{min-width:5rem}.min-w-\[6\.5rem\]{min-width:6.5rem}.min-w-\[7\.5rem\]{min-width:7.5rem}.min-w-\[8\.5rem\]{min-width:8.5rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[9\.5rem\]{min-width:9.5rem}.min-w-\[9rem\]{min-width:9rem}.min-w-\[10rem\]{min-width:10rem}.min-w-\[11rem\]{min-width:11rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[32rem\]{min-width:32rem}.min-w-\[44px\]{min-width:44px}.min-w-\[700px\]{min-width:700px}.min-w-\[min\(100\%\,36rem\)\]{min-width:min(100%,36rem)}.min-w-\[min\(160px\,80vw\)\]{min-width:min(160px,80vw)}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing) * 5);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)}.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-bounce{animation:var(--animate-bounce)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.cursor-wait{cursor:wait}.touch-none{touch-action:none}.resize{resize:both}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[5\.5rem_1fr\]{grid-template-columns:5.5rem 1fr}.grid-cols-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}.grid-cols-\[auto_minmax\(0\,1fr\)_auto_auto\]{grid-template-columns:auto minmax(0,1fr) auto auto}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-px{gap:1px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-0\.5{column-gap:calc(var(--spacing) * .5)}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-0{row-gap:calc(var(--spacing) * 0)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}: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-edge>:not(:last-child)){border-color:var(--color-edge)}:where(.divide-edge-subtle>:not(:last-child)){border-color:var(--color-edge-subtle)}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.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-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.overscroll-y-contain{overscroll-behavior-y:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-pill{border-radius:var(--radius-pill)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-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-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-accent{border-color:var(--color-accent)}.border-accent\/20{border-color:#2563eb33}@supports (color:color-mix(in lab, red, red)){.border-accent\/20{border-color:color-mix(in oklab, var(--color-accent) 20%, transparent)}}.border-accent\/25{border-color:#2563eb40}@supports (color:color-mix(in lab, red, red)){.border-accent\/25{border-color:color-mix(in oklab, var(--color-accent) 25%, transparent)}}.border-accent\/40{border-color:#2563eb66}@supports (color:color-mix(in lab, red, red)){.border-accent\/40{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.border-accent\/50{border-color:#2563eb80}@supports (color:color-mix(in lab, red, red)){.border-accent\/50{border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.border-amber-100{border-color:var(--color-amber-100)}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-500{border-color:var(--color-amber-500)}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/20{border-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.border-amber-500\/25{border-color:#f99c0040}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/25{border-color:color-mix(in oklab, var(--color-amber-500) 25%, transparent)}}.border-amber-500\/40{border-color:#f99c0066}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/40{border-color:color-mix(in oklab, var(--color-amber-500) 40%, transparent)}}.border-blue-200\/80{border-color:#bedbffcc}@supports (color:color-mix(in lab, red, red)){.border-blue-200\/80{border-color:color-mix(in oklab, var(--color-blue-200) 80%, transparent)}}.border-danger\/30{border-color:#dc26264d}@supports (color:color-mix(in lab, red, red)){.border-danger\/30{border-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.border-danger\/35{border-color:#dc262659}@supports (color:color-mix(in lab, red, red)){.border-danger\/35{border-color:color-mix(in oklab, var(--color-danger) 35%, transparent)}}.border-danger\/40{border-color:#dc262666}@supports (color:color-mix(in lab, red, red)){.border-danger\/40{border-color:color-mix(in oklab, var(--color-danger) 40%, transparent)}}.border-edge{border-color:var(--color-edge)}.border-edge-subtle{border-color:var(--color-edge-subtle)}.border-edge-subtle\/60{border-color:#ebebed99}@supports (color:color-mix(in lab, red, red)){.border-edge-subtle\/60{border-color:color-mix(in oklab, var(--color-edge-subtle) 60%, transparent)}}.border-edge-subtle\/80{border-color:#ebebedcc}@supports (color:color-mix(in lab, red, red)){.border-edge-subtle\/80{border-color:color-mix(in oklab, var(--color-edge-subtle) 80%, transparent)}}.border-edge-subtle\/90{border-color:#ebebede6}@supports (color:color-mix(in lab, red, red)){.border-edge-subtle\/90{border-color:color-mix(in oklab, var(--color-edge-subtle) 90%, transparent)}}.border-edge\/60{border-color:#d2d2d799}@supports (color:color-mix(in lab, red, red)){.border-edge\/60{border-color:color-mix(in oklab, var(--color-edge) 60%, transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-400\/30{border-color:#00d2944d}@supports (color:color-mix(in lab, red, red)){.border-emerald-400\/30{border-color:color-mix(in oklab, var(--color-emerald-400) 30%, transparent)}}.border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/20{border-color:color-mix(in oklab, var(--color-emerald-500) 20%, transparent)}}.border-emerald-500\/40{border-color:#00bb7f66}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/40{border-color:color-mix(in oklab, var(--color-emerald-500) 40%, transparent)}}.border-fg{border-color:var(--color-fg)}.border-indigo-400\/30{border-color:#7d87ff4d}@supports (color:color-mix(in lab, red, red)){.border-indigo-400\/30{border-color:color-mix(in oklab, var(--color-indigo-400) 30%, transparent)}}.border-purple-400\/30{border-color:#c07eff4d}@supports (color:color-mix(in lab, red, red)){.border-purple-400\/30{border-color:color-mix(in oklab, var(--color-purple-400) 30%, transparent)}}.border-red-100{border-color:var(--color-red-100)}.border-red-200{border-color:var(--color-red-200)}.border-red-500{border-color:var(--color-red-500)}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab, red, red)){.border-red-500\/30{border-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)}}.border-red-500\/40{border-color:#fb2c3666}@supports (color:color-mix(in lab, red, red)){.border-red-500\/40{border-color:color-mix(in oklab, var(--color-red-500) 40%, transparent)}}.border-red-500\/50{border-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.border-red-500\/50{border-color:color-mix(in oklab, var(--color-red-500) 50%, transparent)}}.border-success\/30{border-color:#0596694d}@supports (color:color-mix(in lab, red, red)){.border-success\/30{border-color:color-mix(in oklab, var(--color-success) 30%, transparent)}}.border-transparent{border-color:#0000}.border-white\/55{border-color:#ffffff8c}@supports (color:color-mix(in lab, red, red)){.border-white\/55{border-color:color-mix(in oklab, var(--color-white) 55%, transparent)}}.border-white\/58{border-color:#ffffff94}@supports (color:color-mix(in lab, red, red)){.border-white\/58{border-color:color-mix(in oklab, var(--color-white) 58%, transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-accent\/60{border-left-color:#2563eb99}@supports (color:color-mix(in lab, red, red)){.border-l-accent\/60{border-left-color:color-mix(in oklab, var(--color-accent) 60%, transparent)}}.bg-\[\#0a0a0a\]{background-color:#0a0a0a}.bg-\[\#000000\]{background-color:#000}.bg-\[\#1c1c1e\]\/70{background-color:#1c1c1eb3;background-color:lab(10.3307% .387788 -1.38484/.7)}.bg-\[\#1d1d1f\]{background-color:#1d1d1f}.bg-\[\#10b981\]{background-color:#10b981}.bg-\[\#28c840\]{background-color:#28c840}.bg-\[\#34d399\]{background-color:#34d399}.bg-\[\#065f46\]{background-color:#065f46}.bg-\[\#134e2a\]{background-color:#134e2a}.bg-\[\#2563eb\]{background-color:#2563eb}.bg-\[\#d2d2d7\]{background-color:#d2d2d7}.bg-\[\#f5f5f7\]{background-color:#f5f5f7}.bg-\[\#febc2e\]{background-color:#febc2e}.bg-\[\#ff5f57\]{background-color:#ff5f57}.bg-\[\#ffffff\]{background-color:#fff}.bg-accent{background-color:var(--color-accent)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-accent-soft\/20{background-color:#eff6ff33}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/20{background-color:color-mix(in oklab, var(--color-accent-soft) 20%, transparent)}}.bg-accent-soft\/30{background-color:#eff6ff4d}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/30{background-color:color-mix(in oklab, var(--color-accent-soft) 30%, transparent)}}.bg-accent-soft\/40{background-color:#eff6ff66}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/40{background-color:color-mix(in oklab, var(--color-accent-soft) 40%, transparent)}}.bg-accent-soft\/55{background-color:#eff6ff8c}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/55{background-color:color-mix(in oklab, var(--color-accent-soft) 55%, transparent)}}.bg-accent-soft\/60{background-color:#eff6ff99}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/60{background-color:color-mix(in oklab, var(--color-accent-soft) 60%, transparent)}}.bg-accent-soft\/70{background-color:#eff6ffb3}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/70{background-color:color-mix(in oklab, var(--color-accent-soft) 70%, transparent)}}.bg-accent-soft\/80{background-color:#eff6ffcc}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/80{background-color:color-mix(in oklab, var(--color-accent-soft) 80%, transparent)}}.bg-accent\/5{background-color:#2563eb0d}@supports (color:color-mix(in lab, red, red)){.bg-accent\/5{background-color:color-mix(in oklab, var(--color-accent) 5%, transparent)}}.bg-accent\/10{background-color:#2563eb1a}@supports (color:color-mix(in lab, red, red)){.bg-accent\/10{background-color:color-mix(in oklab, var(--color-accent) 10%, transparent)}}.bg-accent\/15{background-color:#2563eb26}@supports (color:color-mix(in lab, red, red)){.bg-accent\/15{background-color:color-mix(in oklab, var(--color-accent) 15%, transparent)}}.bg-accent\/45{background-color:#2563eb73}@supports (color:color-mix(in lab, red, red)){.bg-accent\/45{background-color:color-mix(in oklab, var(--color-accent) 45%, transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-50\/80{background-color:#fffbebcc}@supports (color:color-mix(in lab, red, red)){.bg-amber-50\/80{background-color:color-mix(in oklab, var(--color-amber-50) 80%, transparent)}}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/5{background-color:color-mix(in oklab, var(--color-amber-500) 5%, transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.bg-black\/0{background-color:#0000}@supports (color:color-mix(in lab, red, red)){.bg-black\/0{background-color:color-mix(in oklab, var(--color-black) 0%, transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-blue-50\/95{background-color:#eff6fff2}@supports (color:color-mix(in lab, red, red)){.bg-blue-50\/95{background-color:color-mix(in oklab, var(--color-blue-50) 95%, transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-danger{background-color:var(--color-danger)}.bg-danger\/10{background-color:#dc26261a}@supports (color:color-mix(in lab, red, red)){.bg-danger\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-edge{background-color:var(--color-edge)}.bg-edge-subtle{background-color:var(--color-edge-subtle)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500\/5{background-color:#00bb7f0d}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/5{background-color:color-mix(in oklab, var(--color-emerald-500) 5%, transparent)}}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/10{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/15{background-color:color-mix(in oklab, var(--color-emerald-500) 15%, transparent)}}.bg-emerald-950\/60{background-color:#002c2299}@supports (color:color-mix(in lab, red, red)){.bg-emerald-950\/60{background-color:color-mix(in oklab, var(--color-emerald-950) 60%, transparent)}}.bg-fg{background-color:var(--color-fg)}.bg-indigo-950\/60{background-color:#1e1a4d99}@supports (color:color-mix(in lab, red, red)){.bg-indigo-950\/60{background-color:color-mix(in oklab, var(--color-indigo-950) 60%, transparent)}}.bg-purple-950\/60{background-color:#3c036699}@supports (color:color-mix(in lab, red, red)){.bg-purple-950\/60{background-color:color-mix(in oklab, var(--color-purple-950) 60%, transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/10{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/15{background-color:color-mix(in oklab, var(--color-red-500) 15%, transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/20{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-scrim{background-color:var(--color-scrim)}.bg-scrim\/55{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.bg-scrim\/55{background-color:color-mix(in oklab, var(--color-scrim) 55%, transparent)}}.bg-success{background-color:var(--color-success)}.bg-success-soft{background-color:var(--color-success-soft)}.bg-surface-active{background-color:var(--color-surface-active)}.bg-surface-active\/70{background-color:#dcdcdeb3}@supports (color:color-mix(in lab, red, red)){.bg-surface-active\/70{background-color:color-mix(in oklab, var(--color-surface-active) 70%, transparent)}}.bg-surface-base{background-color:var(--color-surface-base)}.bg-surface-base\/40{background-color:#f5f5f766}@supports (color:color-mix(in lab, red, red)){.bg-surface-base\/40{background-color:color-mix(in oklab, var(--color-surface-base) 40%, transparent)}}.bg-surface-base\/80{background-color:#f5f5f7cc}@supports (color:color-mix(in lab, red, red)){.bg-surface-base\/80{background-color:color-mix(in oklab, var(--color-surface-base) 80%, transparent)}}.bg-surface-hover{background-color:var(--color-surface-hover)}.bg-surface-hover\/20{background-color:#e8e8ed33}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/20{background-color:color-mix(in oklab, var(--color-surface-hover) 20%, transparent)}}.bg-surface-hover\/25{background-color:#e8e8ed40}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/25{background-color:color-mix(in oklab, var(--color-surface-hover) 25%, transparent)}}.bg-surface-hover\/30{background-color:#e8e8ed4d}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/30{background-color:color-mix(in oklab, var(--color-surface-hover) 30%, transparent)}}.bg-surface-hover\/35{background-color:#e8e8ed59}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/35{background-color:color-mix(in oklab, var(--color-surface-hover) 35%, transparent)}}.bg-surface-hover\/40{background-color:#e8e8ed66}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/40{background-color:color-mix(in oklab, var(--color-surface-hover) 40%, transparent)}}.bg-surface-hover\/45{background-color:#e8e8ed73}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/45{background-color:color-mix(in oklab, var(--color-surface-hover) 45%, transparent)}}.bg-surface-hover\/50{background-color:#e8e8ed80}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/50{background-color:color-mix(in oklab, var(--color-surface-hover) 50%, transparent)}}.bg-surface-hover\/60{background-color:#e8e8ed99}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/60{background-color:color-mix(in oklab, var(--color-surface-hover) 60%, transparent)}}.bg-surface-hover\/70{background-color:#e8e8edb3}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/70{background-color:color-mix(in oklab, var(--color-surface-hover) 70%, transparent)}}.bg-surface-hover\/80{background-color:#e8e8edcc}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/80{background-color:color-mix(in oklab, var(--color-surface-hover) 80%, transparent)}}.bg-surface-hover\/90{background-color:#e8e8ede6}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/90{background-color:color-mix(in oklab, var(--color-surface-hover) 90%, transparent)}}.bg-surface-panel{background-color:var(--color-surface-panel)}.bg-surface-panel\/40{background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.bg-surface-panel\/40{background-color:color-mix(in oklab, var(--color-surface-panel) 40%, transparent)}}.bg-surface-panel\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-surface-panel\/60{background-color:color-mix(in oklab, var(--color-surface-panel) 60%, transparent)}}.bg-surface-panel\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.bg-surface-panel\/80{background-color:color-mix(in oklab, var(--color-surface-panel) 80%, transparent)}}.bg-surface-panel\/\[0\.96\]{background-color:#fffffff5}@supports (color:color-mix(in lab, red, red)){.bg-surface-panel\/\[0\.96\]{background-color:color-mix(in oklab, var(--color-surface-panel) 96%, transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/45{background-color:#ffffff73}@supports (color:color-mix(in lab, red, red)){.bg-white\/45{background-color:color-mix(in oklab, var(--color-white) 45%, transparent)}}.bg-white\/86{background-color:#ffffffdb}@supports (color:color-mix(in lab, red, red)){.bg-white\/86{background-color:color-mix(in oklab, var(--color-white) 86%, transparent)}}.bg-white\/92{background-color:#ffffffeb}@supports (color:color-mix(in lab, red, red)){.bg-white\/92{background-color:color-mix(in oklab, var(--color-white) 92%, transparent)}}.\[fill\:var\(--color-fg\)\]{fill:var(--color-fg)}.fill-edge{fill:var(--color-edge)}.\[stroke\:var\(--color-accent\)\]{stroke:var(--color-accent)}.stroke-\[1\.75\]{stroke-width:1.75px}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-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-10{padding-inline:calc(var(--spacing) * 10)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-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-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-px{padding-block:1px}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.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)}.pt-\[min\(18vh\,7rem\)\]{padding-top:min(18vh,7rem)}.pt-\[min\(20vh\,8rem\)\]{padding-top:min(20vh,8rem)}.pr-0{padding-right:calc(var(--spacing) * 0)}.pr-0\.5{padding-right:calc(var(--spacing) * .5)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-14{padding-right:calc(var(--spacing) * 14)}.pr-20{padding-right:calc(var(--spacing) * 20)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pl-0{padding-left:calc(var(--spacing) * 0)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.\[text-align\:inherit\]{text-align:inherit}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.6rem\]{font-size:.6rem}.text-\[0\.7rem\]{font-size:.7rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.8125rem\]{font-size:.8125rem}.text-\[0\.9375rem\]{font-size:.9375rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-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}.text-pretty{text-wrap:pretty}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--color-accent)}.text-accent-fg{color:var(--color-accent-fg)}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-amber-950{color:var(--color-amber-950)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-current{color:currentColor}.text-danger{color:var(--color-danger)}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-fg{color:var(--color-fg)}.text-fg-disabled{color:var(--color-fg-disabled)}.text-fg-muted{color:var(--color-fg-muted)}.text-fg-muted\/25{color:#6e6e7340}@supports (color:color-mix(in lab, red, red)){.text-fg-muted\/25{color:color-mix(in oklab, var(--color-fg-muted) 25%, transparent)}}.text-fg-subtle{color:var(--color-fg-subtle)}.text-green-600{color:var(--color-green-600)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-500{color:var(--color-indigo-500)}.text-purple-300{color:var(--color-purple-300)}.text-purple-500{color:var(--color-purple-500)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-red-900{color:var(--color-red-900)}.text-success{color:var(--color-success)}.text-surface-panel{color:var(--color-surface-panel)}.text-white{color:var(--color-white)}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.decoration-accent-fg\/40{text-decoration-color:#2563eb66}@supports (color:color-mix(in lab, red, red)){.decoration-accent-fg\/40{-webkit-text-decoration-color:color-mix(in oklab, var(--color-accent-fg) 40%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-accent-fg) 40%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-accent-fg) 40%, transparent);text-decoration-color:color-mix(in oklab, var(--color-accent-fg) 40%, transparent)}}.decoration-edge{-webkit-text-decoration-color:var(--color-edge);-webkit-text-decoration-color:var(--color-edge);-webkit-text-decoration-color:var(--color-edge);text-decoration-color:var(--color-edge)}.underline-offset-2{text-underline-offset:2px}.caret-current{caret-color:currentColor}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.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\(--color-accent\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--color-accent));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_rgb\(255_255_255\/0\.65\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,#ffffffa6);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:0 2px 8px var(--tw-shadow-color,#0000000f), 0 4px 24px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-float{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0000001a), 0 12px 40px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px 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-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px 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-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-popover{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000001f), 0 2px 12px var(--tw-shadow-color,#00000014);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-surface{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000a), 0 1px 6px var(--tw-shadow-color,#0000000f);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-accent{--tw-ring-color:var(--color-accent)}.ring-accent\/25{--tw-ring-color:#2563eb40}@supports (color:color-mix(in lab, red, red)){.ring-accent\/25{--tw-ring-color:color-mix(in oklab, var(--color-accent) 25%, transparent)}}.ring-edge{--tw-ring-color:var(--color-edge)}.ring-edge-subtle\/80{--tw-ring-color:#ebebedcc}@supports (color:color-mix(in lab, red, red)){.ring-edge-subtle\/80{--tw-ring-color:color-mix(in oklab, var(--color-edge-subtle) 80%, transparent)}}.ring-edge\/35{--tw-ring-color:#d2d2d759}@supports (color:color-mix(in lab, red, red)){.ring-edge\/35{--tw-ring-color:color-mix(in oklab, var(--color-edge) 35%, transparent)}}.ring-edge\/40{--tw-ring-color:#d2d2d766}@supports (color:color-mix(in lab, red, red)){.ring-edge\/40{--tw-ring-color:color-mix(in oklab, var(--color-edge) 40%, transparent)}}.ring-offset-surface-base{--tw-ring-offset-color:var(--color-surface-base)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{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-\[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-\[2px\]{--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,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-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-color\]{transition-property:background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[border-color\,background-color\]{transition-property:border-color,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[border-color\,box-shadow\]{transition-property:border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,background-color\,border-color\,opacity\]{transition-property:color,background-color,border-color,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,background-color\,border-color\]{transition-property:color,background-color,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,background-color\,box-shadow\]{transition-property:color,background-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,box-shadow\]{transition-property:transform,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,width\,height\]{transition-property:transform,width,height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-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-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-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.\[transition-timing-function\:cubic-bezier\(0\.32\,0\.72\,0\,1\)\]{transition-timing-function:cubic-bezier(.32,.72,0,1)}.will-change-transform{will-change:transform}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.\[-ms-overflow-style\:none\]{-ms-overflow-style:none}.\[-webkit-app-region\:drag\]{-webkit-app-region:drag}.\[-webkit-app-region\:no-drag\]{-webkit-app-region:no-drag}.\[backface-visibility\:hidden\]{backface-visibility:hidden}.\[fill-opacity\:0\.82\]{fill-opacity:.82}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.\[scrollbar-gutter\:stable_both-edges\]{scrollbar-gutter:stable both-edges}.\[scrollbar-width\:none\]{scrollbar-width:none}.ring-inset{--tw-ring-inset:inset}.group-open\:rotate-180:is(:where(.group):is([open],:popover-open,:open) *){rotate:180deg}.group-open\:rounded-b-none:is(:where(.group):is([open],:popover-open,:open) *){border-bottom-right-radius:0;border-bottom-left-radius:0}.group-open\:text-fg:is(:where(.group):is([open],:popover-open,:open) *){color:var(--color-fg)}.group-open\:text-fg-muted:is(:where(.group):is([open],:popover-open,:open) *){color:var(--color-fg-muted)}@media (hover:hover){.group-hover\:-translate-y-px:is(:where(.group):hover *){--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:bg-black\/25:is(:where(.group):hover *){background-color:#00000040}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-black\/25:is(:where(.group):hover *){background-color:color-mix(in oklab, var(--color-black) 25%, transparent)}}.group-hover\:text-fg:is(:where(.group):hover *){color:var(--color-fg)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:ring-edge\/55:is(:where(.group):hover *){--tw-ring-color:#d2d2d78c}@supports (color:color-mix(in lab, red, red)){.group-hover\:ring-edge\/55:is(:where(.group):hover *){--tw-ring-color:color-mix(in oklab, var(--color-edge) 55%, transparent)}}.group-hover\/msg\:opacity-100:is(:where(.group\/msg):hover *){opacity:1}}.marker\:hidden ::marker{display:none}.marker\:hidden::marker{display:none}.marker\:hidden ::-webkit-details-marker{display:none}.marker\:hidden::-webkit-details-marker{display:none}.placeholder\:text-fg-disabled::placeholder{color:var(--color-fg-disabled)}.placeholder\:text-fg-muted::placeholder{color:var(--color-fg-muted)}.placeholder\:text-fg-muted\/70::placeholder{color:#6e6e73b3}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-fg-muted\/70::placeholder{color:color-mix(in oklab, var(--color-fg-muted) 70%, transparent)}}.placeholder\:text-fg-subtle::placeholder{color:var(--color-fg-subtle)}.before\:pointer-events-none:before{content:var(--tw-content);pointer-events:none}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-0:before{content:var(--tw-content);top:calc(var(--spacing) * 0)}.before\:left-1\/2:before{content:var(--tw-content);left:50%}.before\:z-0:before{content:var(--tw-content);z-index:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-px:before{content:var(--tw-content);width:1px}.before\:-translate-x-1\/2:before{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.before\:\!bg-edge\/80:before{content:var(--tw-content);background-color:#d2d2d7cc!important}@supports (color:color-mix(in lab, red, red)){.before\:\!bg-edge\/80:before{background-color:color-mix(in oklab, var(--color-edge) 80%, transparent)!important}}.before\:bg-transparent:before{content:var(--tw-content);background-color:#0000}.before\:transition-\[background-color\]:before{content:var(--tw-content);transition-property:background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.before\:duration-150:before{content:var(--tw-content);--tw-duration:.15s;transition-duration:.15s}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bottom-0:after{content:var(--tw-content);bottom:calc(var(--spacing) * 0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:h-0\.5:after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.after\:w-9:after{content:var(--tw-content);width:calc(var(--spacing) * 9)}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:bg-accent:after{content:var(--tw-content);background-color:var(--color-accent)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.open\:bg-surface-base:is([open],:popover-open,:open){background-color:var(--color-surface-base)}.open\:pb-3:is([open],:popover-open,:open){padding-bottom:calc(var(--spacing) * 3)}.focus-within\:outline-none:focus-within{--tw-outline-style:none;outline-style:none}@media (hover:hover){.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-accent\/40:hover{border-color:#2563eb66}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.hover\:border-accent\/50:hover{border-color:#2563eb80}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/50:hover{border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.hover\:border-edge:hover{border-color:var(--color-edge)}.hover\:border-edge-strong:hover{border-color:var(--color-edge-strong)}.hover\:border-edge-subtle:hover{border-color:var(--color-edge-subtle)}.hover\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\:bg-accent-soft:hover{background-color:var(--color-accent-soft)}.hover\:bg-accent-soft\/50:hover{background-color:#eff6ff80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent-soft\/50:hover{background-color:color-mix(in oklab, var(--color-accent-soft) 50%, transparent)}}.hover\:bg-accent-soft\/60:hover{background-color:#eff6ff99}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent-soft\/60:hover{background-color:color-mix(in oklab, var(--color-accent-soft) 60%, transparent)}}.hover\:bg-accent-soft\/80:hover{background-color:#eff6ffcc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent-soft\/80:hover{background-color:color-mix(in oklab, var(--color-accent-soft) 80%, transparent)}}.hover\:bg-accent\/15:hover{background-color:#2563eb26}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/15:hover{background-color:color-mix(in oklab, var(--color-accent) 15%, transparent)}}.hover\:bg-accent\/90:hover{background-color:#2563ebe6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/90:hover{background-color:color-mix(in oklab, var(--color-accent) 90%, transparent)}}.hover\:bg-danger\/90:hover{background-color:#dc2626e6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-danger\/90:hover{background-color:color-mix(in oklab, var(--color-danger) 90%, transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.hover\:bg-red-500\/15:hover{background-color:#fb2c3626}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-500\/15:hover{background-color:color-mix(in oklab, var(--color-red-500) 15%, transparent)}}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-surface-active:hover{background-color:var(--color-surface-active)}.hover\:bg-surface-active\/70:hover{background-color:#dcdcdeb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-active\/70:hover{background-color:color-mix(in oklab, var(--color-surface-active) 70%, transparent)}}.hover\:bg-surface-base:hover{background-color:var(--color-surface-base)}.hover\:bg-surface-hover:hover{background-color:var(--color-surface-hover)}.hover\:bg-surface-hover\/20:hover{background-color:#e8e8ed33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/20:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 20%, transparent)}}.hover\:bg-surface-hover\/40:hover{background-color:#e8e8ed66}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/40:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 40%, transparent)}}.hover\:bg-surface-hover\/45:hover{background-color:#e8e8ed73}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/45:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 45%, transparent)}}.hover\:bg-surface-hover\/50:hover{background-color:#e8e8ed80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/50:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 50%, transparent)}}.hover\:bg-surface-hover\/60:hover{background-color:#e8e8ed99}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/60:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 60%, transparent)}}.hover\:bg-surface-hover\/70:hover{background-color:#e8e8edb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/70:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 70%, transparent)}}.hover\:bg-surface-hover\/80:hover{background-color:#e8e8edcc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/80:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 80%, transparent)}}.hover\:bg-surface-hover\/90:hover{background-color:#e8e8ede6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/90:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 90%, transparent)}}.hover\:bg-surface-panel:hover{background-color:var(--color-surface-panel)}.hover\:bg-surface-panel\/60:hover{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-panel\/60:hover{background-color:color-mix(in oklab, var(--color-surface-panel) 60%, transparent)}}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-accent-fg:hover{color:var(--color-accent-fg)}.hover\:text-fg:hover{color:var(--color-fg)}.hover\:text-fg-muted:hover{color:var(--color-fg-muted)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-accent-fg:hover{-webkit-text-decoration-color:var(--color-accent-fg);-webkit-text-decoration-color:var(--color-accent-fg);-webkit-text-decoration-color:var(--color-accent-fg);text-decoration-color:var(--color-accent-fg)}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-95:hover{opacity:.95}.hover\:before\:bg-edge\/65:hover:before{content:var(--tw-content);background-color:#d2d2d7a6}@supports (color:color-mix(in lab, red, red)){.hover\:before\:bg-edge\/65:hover:before{background-color:color-mix(in oklab, var(--color-edge) 65%, transparent)}}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:absolute:focus{position:absolute}.focus\:top-3:focus{top:calc(var(--spacing) * 3)}.focus\:left-4:focus{left:calc(var(--spacing) * 4)}.focus\:border-0:focus{border-style:var(--tw-border-style);border-width:0}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:border-edge-strong:focus{border-color:var(--color-edge-strong)}.focus\:opacity-100:focus{opacity:1}.focus\:shadow-none:focus{--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)}.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-2:focus{--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\:ring-accent:focus{--tw-ring-color:var(--color-accent)}.focus\:ring-accent\/30:focus{--tw-ring-color:#2563eb4d}@supports (color:color-mix(in lab, red, red)){.focus\:ring-accent\/30:focus{--tw-ring-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.focus\:ring-accent\/40:focus{--tw-ring-color:#2563eb66}@supports (color:color-mix(in lab, red, red)){.focus\:ring-accent\/40:focus{--tw-ring-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-edge:focus-visible{border-color:var(--color-edge)}.focus-visible\:border-edge-strong:focus-visible{border-color:var(--color-edge-strong)}.focus-visible\:shadow-none:focus-visible{--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)}.focus-visible\:ring-0:focus-visible{--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-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-accent:focus-visible{--tw-ring-color:var(--color-accent)}.focus-visible\:ring-accent\/40:focus-visible{--tw-ring-color:#2563eb66}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-accent\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.focus-visible\:ring-red-500\/40:focus-visible{--tw-ring-color:#fb2c3666}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-red-500\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-red-500) 40%, transparent)}}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-surface-base:focus-visible{--tw-ring-offset-color:var(--color-surface-base)}.focus-visible\:ring-offset-surface-panel:focus-visible{--tw-ring-offset-color:var(--color-surface-panel)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.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-100:active{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-\[0\.97\]:active{scale:.97}.active\:scale-\[0\.99\]:active{scale:.99}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-25:disabled{opacity:.25}.disabled\:opacity-35:disabled{opacity:.35}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:opacity-100:disabled{opacity:1}.data-highlighted\:bg-red-500\/10[data-highlighted]{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.data-highlighted\:bg-red-500\/10[data-highlighted]{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.data-highlighted\:bg-surface-hover[data-highlighted]{background-color:var(--color-surface-hover)}.data-\[highlighted\]\:bg-red-50[data-highlighted]{background-color:var(--color-red-50)}.data-\[highlighted\]\:bg-surface-hover[data-highlighted]{background-color:var(--color-surface-hover)}.data-\[state\=open\]\:border-edge[data-state=open]{border-color:var(--color-edge)}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-pulse{animation:var(--animate-pulse)}.motion-safe\: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))}.motion-safe\:duration-150{--tw-duration:.15s;transition-duration:.15s}.motion-safe\:ease-linear{--tw-ease:linear;transition-timing-function:linear}.motion-safe\:active\:scale-\[0\.97\]:active{scale:.97}}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}.motion-reduce\:opacity-100{opacity:1}.motion-reduce\:\!transition-none{transition-property:none!important}.motion-reduce\:transition-none{transition-property:none}.motion-reduce\:\!duration-0{--tw-duration:0s!important;transition-duration:0s!important}.motion-reduce\:active\:scale-100:active{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}@media not all and (min-width:48rem){.max-md\:pointer-events-none{pointer-events:none}.max-md\:fixed{position:fixed}.max-md\:top-0{top:calc(var(--spacing) * 0)}.max-md\:right-0{right:calc(var(--spacing) * 0)}.max-md\:left-0{left:calc(var(--spacing) * 0)}.max-md\:z-50{z-index:50}.max-md\:hidden{display:none}.max-md\:h-\[100dvh\]{height:100dvh}.max-md\:w-\[min\(16rem\,85vw\)\]{width:min(16rem,85vw)}.max-md\:w-\[min\(20rem\,92vw\)\]{width:min(20rem,92vw)}.max-md\:-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.max-md\:translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.max-md\:translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.max-md\:shadow-elevated{--tw-shadow:0 2px 8px var(--tw-shadow-color,#0000000f), 0 4px 24px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.max-md\:shadow-popover{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000001f), 0 2px 12px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.max-md\: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))}.max-md\:duration-200{--tw-duration:.2s;transition-duration:.2s}.max-md\:ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}@media (prefers-reduced-motion:reduce){@media not all and (min-width:48rem){.motion-reduce\:max-md\:transition-none{transition-property:none}}}@media (min-width:40rem){.sm\:not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.sm\:inset-auto{inset:auto}.sm\:top-1\/2{top:50%}.sm\:top-4{top:calc(var(--spacing) * 4)}.sm\:right-2{right:calc(var(--spacing) * 2)}.sm\:right-3{right:calc(var(--spacing) * 3)}.sm\:right-4{right:calc(var(--spacing) * 4)}.sm\:left-1\/2{left:50%}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:mt-0{margin-top:calc(var(--spacing) * 0)}.sm\:mt-12{margin-top:calc(var(--spacing) * 12)}.sm\:mr-auto{margin-right:auto}.sm\:ml-2\.5{margin-left:calc(var(--spacing) * 2.5)}.sm\:ml-auto{margin-left:auto}.sm\:flex{display:flex}.sm\:inline{display:inline}.sm\:size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.sm\:size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.sm\:size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.sm\:h-\[min\(88vh\,48rem\)\]{height:min(88vh,48rem)}.sm\:max-h-\[min\(88vh\,48rem\)\]{max-height:min(88vh,48rem)}.sm\:min-h-9{min-height:calc(var(--spacing) * 9)}.sm\:min-h-10{min-height:calc(var(--spacing) * 10)}.sm\:min-h-\[32rem\]{min-height:32rem}.sm\:w-9{width:calc(var(--spacing) * 9)}.sm\:w-48{width:calc(var(--spacing) * 48)}.sm\:w-56{width:calc(var(--spacing) * 56)}.sm\:w-\[5\.25rem\]{width:5.25rem}.sm\:w-\[min\(100\%\,14rem\)\]{width:min(100%,14rem)}.sm\:w-\[min\(100\%-2rem\,58rem\)\]{width:min(100% - 2rem,58rem)}.sm\:w-auto{width:auto}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-\[11rem\]{max-width:11rem}.sm\:max-w-\[12rem\]{max-width:12rem}.sm\:max-w-\[17rem\]{max-width:17rem}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-xs{max-width:var(--container-xs)}.sm\:min-w-0{min-width:calc(var(--spacing) * 0)}.sm\:min-w-\[7\.5rem\]{min-width:7.5rem}.sm\:min-w-\[7rem\]{min-width:7rem}.sm\:min-w-\[11rem\]{min-width:11rem}.sm\:min-w-\[12rem\]{min-width:12rem}.sm\:flex-1{flex:1}.sm\:shrink-0{flex-shrink:0}.sm\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.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-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-col{flex-direction:column}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:items-start{align-items:flex-start}.sm\:items-stretch{align-items:stretch}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:justify-start{justify-content:flex-start}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:gap-6{gap:calc(var(--spacing) * 6)}.sm\:self-center{align-self:center}.sm\:overflow-hidden{overflow:hidden}.sm\:overflow-y-auto{overflow-y:auto}.sm\:border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.sm\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.sm\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.sm\:border-edge{border-color:var(--color-edge)}.sm\:p-3{padding:calc(var(--spacing) * 3)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-0{padding-inline:calc(var(--spacing) * 0)}.sm\:px-2{padding-inline:calc(var(--spacing) * 2)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:px-12{padding-inline:calc(var(--spacing) * 12)}.sm\:py-3{padding-block:calc(var(--spacing) * 3)}.sm\:py-4{padding-block:calc(var(--spacing) * 4)}.sm\:py-10{padding-block:calc(var(--spacing) * 10)}.sm\:pt-10{padding-top:calc(var(--spacing) * 10)}.sm\:pr-3{padding-right:calc(var(--spacing) * 3)}.sm\:pr-5{padding-right:calc(var(--spacing) * 5)}.sm\:pr-16{padding-right:calc(var(--spacing) * 16)}.sm\:pb-3{padding-bottom:calc(var(--spacing) * 3)}.sm\:pl-2{padding-left:calc(var(--spacing) * 2)}.sm\:pl-4{padding-left:calc(var(--spacing) * 4)}.sm\:text-left{text-align:left}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.sm\:text-\[0\.9375rem\]{font-size:.9375rem}}@media (min-width:48rem){.md\:pointer-events-none{pointer-events:none}.md\:relative{position:relative}.md\:right-10{right:calc(var(--spacing) * 10)}.md\:m-3{margin:calc(var(--spacing) * 3)}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:inline-flex{display:inline-flex}.md\:h-full{height:100%}.md\:max-h-\[calc\(100dvh-1\.5rem\)\]{max-height:calc(100dvh - 1.5rem)}.md\:max-h-none{max-height:none}.md\:min-h-0{min-height:calc(var(--spacing) * 0)}.md\:w-0{width:calc(var(--spacing) * 0)}.md\:w-\[4\.5rem\]{width:4.5rem}.md\:max-w-0{max-width:calc(var(--spacing) * 0)}.md\:min-w-0{min-width:calc(var(--spacing) * 0)}.md\:flex-1{flex:1}.md\:shrink-0{flex-shrink:0}.md\:translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:flex-row{flex-direction:row}.md\:overflow-hidden{overflow:hidden}.md\:rounded-2xl{border-radius:var(--radius-2xl)}.md\:border{border-style:var(--tw-border-style);border-width:1px}.md\:border-edge{border-color:var(--color-edge)}.md\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.md\:text-center{text-align:center}.md\:shadow-elevated{--tw-shadow:0 2px 8px var(--tw-shadow-color,#0000000f), 0 4px 24px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}@media (prefers-reduced-motion:reduce){@media (min-width:48rem){.motion-reduce\:md\:transition-none{transition-property:none}}}@media (min-width:64rem){.lg\:inline{display:inline}.lg\:max-w-app-main{max-width:var(--max-width-app-main)}.lg\:max-w-xl{max-width:var(--container-xl)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media (min-width:80rem){.xl\:px-6{padding-inline:calc(var(--spacing) * 6)}}:where(.dark\:divide-edge:where(.dark,.dark *)>:not(:last-child)){border-color:var(--color-edge)}.dark\:border-accent\/30:where(.dark,.dark *){border-color:#2563eb4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-accent\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.dark\:border-accent\/50:where(.dark,.dark *){border-color:#2563eb80}@supports (color:color-mix(in lab, red, red)){.dark\:border-accent\/50:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.dark\:border-amber-800:where(.dark,.dark *){border-color:var(--color-amber-800)}.dark\:border-amber-900\/40:where(.dark,.dark *){border-color:#7b330666}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-900\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-amber-900) 40%, transparent)}}.dark\:border-blue-900\/50:where(.dark,.dark *){border-color:#1c398e80}@supports (color:color-mix(in lab, red, red)){.dark\:border-blue-900\/50:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-blue-900) 50%, transparent)}}.dark\:border-danger\/40:where(.dark,.dark *){border-color:#dc262666}@supports (color:color-mix(in lab, red, red)){.dark\:border-danger\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-danger) 40%, transparent)}}.dark\:border-edge:where(.dark,.dark *){border-color:var(--color-edge)}.dark\:border-edge-subtle:where(.dark,.dark *){border-color:var(--color-edge-subtle)}.dark\:border-edge-subtle\/70:where(.dark,.dark *){border-color:#ebebedb3}@supports (color:color-mix(in lab, red, red)){.dark\:border-edge-subtle\/70:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-edge-subtle) 70%, transparent)}}.dark\:border-edge-subtle\/90:where(.dark,.dark *){border-color:#ebebede6}@supports (color:color-mix(in lab, red, red)){.dark\:border-edge-subtle\/90:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-edge-subtle) 90%, transparent)}}.dark\:border-emerald-900\/40:where(.dark,.dark *){border-color:#004e3b66}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-900\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-emerald-900) 40%, transparent)}}.dark\:border-red-800:where(.dark,.dark *){border-color:var(--color-red-800)}.dark\:border-red-900\/40:where(.dark,.dark *){border-color:#82181a66}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-900\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-red-900) 40%, transparent)}}.dark\:border-red-900\/50:where(.dark,.dark *){border-color:#82181a80}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-900\/50:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-red-900) 50%, transparent)}}.dark\:border-red-900\/60:where(.dark,.dark *){border-color:#82181a99}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-900\/60:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-red-900) 60%, transparent)}}.dark\:border-white\/13:where(.dark,.dark *){border-color:#ffffff21}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/13:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-white) 13%, transparent)}}.dark\:border-white\/14:where(.dark,.dark *){border-color:#ffffff24}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/14:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-white) 14%, transparent)}}.dark\:bg-\[\#1e1e1e\]:where(.dark,.dark *){background-color:#1e1e1e}.dark\:bg-accent-soft\/10:where(.dark,.dark *){background-color:#eff6ff1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-accent-soft\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-accent-soft) 10%, transparent)}}.dark\:bg-accent-soft\/25:where(.dark,.dark *){background-color:#eff6ff40}@supports (color:color-mix(in lab, red, red)){.dark\:bg-accent-soft\/25:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-accent-soft) 25%, transparent)}}.dark\:bg-accent-soft\/35:where(.dark,.dark *){background-color:#eff6ff59}@supports (color:color-mix(in lab, red, red)){.dark\:bg-accent-soft\/35:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-accent-soft) 35%, transparent)}}.dark\:bg-accent-soft\/40:where(.dark,.dark *){background-color:#eff6ff66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-accent-soft\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-accent-soft) 40%, transparent)}}.dark\:bg-accent\/10:where(.dark,.dark *){background-color:#2563eb1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-accent\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-accent) 10%, transparent)}}.dark\:bg-amber-950\/30:where(.dark,.dark *){background-color:#4619014d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-950\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-950) 30%, transparent)}}.dark\:bg-amber-950\/40:where(.dark,.dark *){background-color:#46190166}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-950) 40%, transparent)}}.dark\:bg-amber-950\/50:where(.dark,.dark *){background-color:#46190180}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-950\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-950) 50%, transparent)}}.dark\:bg-black\/50:where(.dark,.dark *){background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.dark\:bg-black\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.dark\:bg-black\/60:where(.dark,.dark *){background-color:#0009}@supports (color:color-mix(in lab, red, red)){.dark\:bg-black\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.dark\:bg-black\/\[0\.22\]:where(.dark,.dark *){background-color:#00000038}@supports (color:color-mix(in lab, red, red)){.dark\:bg-black\/\[0\.22\]:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-black) 22%, transparent)}}.dark\:bg-blue-950:where(.dark,.dark *){background-color:var(--color-blue-950)}.dark\:bg-blue-950\/40:where(.dark,.dark *){background-color:#16245666}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-950) 40%, transparent)}}.dark\:bg-blue-950\/45:where(.dark,.dark *){background-color:#16245673}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-950\/45:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-950) 45%, transparent)}}.dark\:bg-edge\/65:where(.dark,.dark *){background-color:#d2d2d7a6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-edge\/65:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-edge) 65%, transparent)}}.dark\:bg-emerald-950:where(.dark,.dark *){background-color:var(--color-emerald-950)}.dark\:bg-emerald-950\/40:where(.dark,.dark *){background-color:#002c2266}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-emerald-950) 40%, transparent)}}.dark\:bg-fg:where(.dark,.dark *){background-color:var(--color-fg)}.dark\:bg-red-500\/25:where(.dark,.dark *){background-color:#fb2c3640}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-500\/25:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-500) 25%, transparent)}}.dark\:bg-red-950\/40:where(.dark,.dark *){background-color:#46080966}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-950) 40%, transparent)}}.dark\:bg-red-950\/50:where(.dark,.dark *){background-color:#46080980}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-950) 50%, transparent)}}.dark\:bg-surface-active:where(.dark,.dark *){background-color:var(--color-surface-active)}.dark\:bg-surface-active\/50:where(.dark,.dark *){background-color:#dcdcde80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-active\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-active) 50%, transparent)}}.dark\:bg-surface-active\/80:where(.dark,.dark *){background-color:#dcdcdecc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-active\/80:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-active) 80%, transparent)}}.dark\:bg-surface-base\/20:where(.dark,.dark *){background-color:#f5f5f733}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-base\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-base) 20%, transparent)}}.dark\:bg-surface-hover\/15:where(.dark,.dark *){background-color:#e8e8ed26}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 15%, transparent)}}.dark\:bg-surface-hover\/20:where(.dark,.dark *){background-color:#e8e8ed33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 20%, transparent)}}.dark\:bg-surface-hover\/25:where(.dark,.dark *){background-color:#e8e8ed40}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/25:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 25%, transparent)}}.dark\:bg-surface-hover\/30:where(.dark,.dark *){background-color:#e8e8ed4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 30%, transparent)}}.dark\:bg-surface-hover\/35:where(.dark,.dark *){background-color:#e8e8ed59}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/35:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 35%, transparent)}}.dark\:bg-surface-hover\/40:where(.dark,.dark *){background-color:#e8e8ed66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 40%, transparent)}}.dark\:bg-surface-hover\/50:where(.dark,.dark *){background-color:#e8e8ed80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 50%, transparent)}}.dark\:bg-surface-hover\/70:where(.dark,.dark *){background-color:#e8e8edb3}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/70:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 70%, transparent)}}.dark\:bg-surface-hover\/80:where(.dark,.dark *){background-color:#e8e8edcc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/80:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 80%, transparent)}}.dark\:bg-surface-hover\/98:where(.dark,.dark *){background-color:#e8e8edfa}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/98:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 98%, transparent)}}.dark\:bg-surface-panel:where(.dark,.dark *){background-color:var(--color-surface-panel)}.dark\:bg-surface-panel\/60:where(.dark,.dark *){background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-panel\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-panel) 60%, transparent)}}.dark\:bg-surface-panel\/90:where(.dark,.dark *){background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-panel\/90:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-panel) 90%, transparent)}}.dark\:bg-surface-panel\/92:where(.dark,.dark *){background-color:#ffffffeb}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-panel\/92:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-panel) 92%, transparent)}}.dark\:bg-surface-panel\/95:where(.dark,.dark *){background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-panel\/95:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-panel) 95%, transparent)}}.dark\:bg-white\/14:where(.dark,.dark *){background-color:#ffffff24}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/14:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 14%, transparent)}}.dark\:text-accent-fg:where(.dark,.dark *){color:var(--color-accent-fg)}.dark\:text-amber-100:where(.dark,.dark *){color:var(--color-amber-100)}.dark\:text-amber-200:where(.dark,.dark *){color:var(--color-amber-200)}.dark\:text-amber-200\/90:where(.dark,.dark *){color:#fee685e6}@supports (color:color-mix(in lab, red, red)){.dark\:text-amber-200\/90:where(.dark,.dark *){color:color-mix(in oklab, var(--color-amber-200) 90%, transparent)}}.dark\:text-amber-400:where(.dark,.dark *){color:var(--color-amber-400)}.dark\:text-amber-500:where(.dark,.dark *){color:var(--color-amber-500)}.dark\:text-blue-200:where(.dark,.dark *){color:var(--color-blue-200)}.dark\:text-blue-400:where(.dark,.dark *){color:var(--color-blue-400)}.dark\:text-emerald-200:where(.dark,.dark *){color:var(--color-emerald-200)}.dark\:text-emerald-200\/90:where(.dark,.dark *){color:#a4f4cfe6}@supports (color:color-mix(in lab, red, red)){.dark\:text-emerald-200\/90:where(.dark,.dark *){color:color-mix(in oklab, var(--color-emerald-200) 90%, transparent)}}.dark\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\:text-emerald-400:where(.dark,.dark *){color:var(--color-emerald-400)}.dark\:text-green-400:where(.dark,.dark *){color:var(--color-green-400)}.dark\:text-red-100:where(.dark,.dark *){color:var(--color-red-100)}.dark\:text-red-200:where(.dark,.dark *){color:var(--color-red-200)}.dark\:text-red-300:where(.dark,.dark *){color:var(--color-red-300)}.dark\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\:text-surface-panel:where(.dark,.dark *){color:var(--color-surface-panel)}.dark\:text-yellow-400:where(.dark,.dark *){color:var(--color-yellow-400)}.dark\:shadow-elevated:where(.dark,.dark *){--tw-shadow:0 2px 8px var(--tw-shadow-color,#0000000f), 0 4px 24px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-none:where(.dark,.dark *){--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)}.dark\:shadow-sm:where(.dark,.dark *){--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)}.dark\:ring-1:where(.dark,.dark *){--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)}.dark\:ring-edge-strong\/40:where(.dark,.dark *){--tw-ring-color:#bcbcc066}@supports (color:color-mix(in lab, red, red)){.dark\:ring-edge-strong\/40:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-edge-strong) 40%, transparent)}}.dark\:ring-edge-subtle:where(.dark,.dark *){--tw-ring-color:var(--color-edge-subtle)}.dark\:ring-edge\/50:where(.dark,.dark *){--tw-ring-color:#d2d2d780}@supports (color:color-mix(in lab, red, red)){.dark\:ring-edge\/50:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-edge) 50%, transparent)}}.dark\:ring-edge\/55:where(.dark,.dark *){--tw-ring-color:#d2d2d78c}@supports (color:color-mix(in lab, red, red)){.dark\:ring-edge\/55:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-edge) 55%, transparent)}}.dark\:backdrop-blur-sm:where(.dark,.dark *){--tw-backdrop-blur:blur(var(--blur-sm));-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,)}@media (hover:hover){.dark\:group-hover\:ring-edge\/65:where(.dark,.dark *):is(:where(.group):hover *){--tw-ring-color:#d2d2d7a6}@supports (color:color-mix(in lab, red, red)){.dark\:group-hover\:ring-edge\/65:where(.dark,.dark *):is(:where(.group):hover *){--tw-ring-color:color-mix(in oklab, var(--color-edge) 65%, transparent)}}}.dark\:before\:\!bg-edge\/85:where(.dark,.dark *):before{content:var(--tw-content);background-color:#d2d2d7d9!important}@supports (color:color-mix(in lab, red, red)){.dark\:before\:\!bg-edge\/85:where(.dark,.dark *):before{background-color:color-mix(in oklab, var(--color-edge) 85%, transparent)!important}}@media (hover:hover){.dark\:hover\:border-edge:where(.dark,.dark *):hover{border-color:var(--color-edge)}.dark\:hover\:bg-accent-soft:where(.dark,.dark *):hover{background-color:var(--color-accent-soft)}.dark\:hover\:bg-black\/70:where(.dark,.dark *):hover{background-color:#000000b3}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-black\/70:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-black) 70%, transparent)}}.dark\:hover\:bg-red-950\/40:where(.dark,.dark *):hover{background-color:#46080966}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-red-950\/40:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-red-950) 40%, transparent)}}.dark\:hover\:bg-red-950\/70:where(.dark,.dark *):hover{background-color:#460809b3}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-red-950\/70:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-red-950) 70%, transparent)}}.dark\:hover\:bg-surface-hover\/25:where(.dark,.dark *):hover{background-color:#e8e8ed40}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-surface-hover\/25:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-surface-hover) 25%, transparent)}}.dark\:hover\:bg-surface-hover\/30:where(.dark,.dark *):hover{background-color:#e8e8ed4d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-surface-hover\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-surface-hover) 30%, transparent)}}.dark\:hover\:bg-surface-hover\/50:where(.dark,.dark *):hover{background-color:#e8e8ed80}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-surface-hover\/50:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-surface-hover) 50%, transparent)}}.dark\:hover\:bg-surface-hover\/55:where(.dark,.dark *):hover{background-color:#e8e8ed8c}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-surface-hover\/55:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-surface-hover) 55%, transparent)}}.dark\:hover\:bg-surface-panel\/40:where(.dark,.dark *):hover{background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-surface-panel\/40:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-surface-panel) 40%, transparent)}}.dark\:hover\:text-red-400:where(.dark,.dark *):hover{color:var(--color-red-400)}.dark\:hover\:before\:bg-edge\/75:where(.dark,.dark *):hover:before{content:var(--tw-content);background-color:#d2d2d7bf}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:before\:bg-edge\/75:where(.dark,.dark *):hover:before{background-color:color-mix(in oklab, var(--color-edge) 75%, transparent)}}}@media (min-width:40rem){.dark\:sm\:border-edge:where(.dark,.dark *){border-color:var(--color-edge)}}.\[\&_\.markdown-body\]\:text-sm .markdown-body{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.\[\&_\.markdown-body\]\:leading-snug .markdown-body{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.\[\&_svg\]\:align-middle svg{vertical-align:middle}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\>\*\]\:min-h-0>*{min-height:calc(var(--spacing) * 0)}.\[\&\>\*\]\:flex-1>*{flex:1}.\[\&\>div\]\:border-0>div{border-style:var(--tw-border-style);border-width:0}.\[\&\>div\]\:pt-0>div{padding-top:calc(var(--spacing) * 0)}}html.dark{--color-surface-base:#1c1c1e;--color-surface-panel:#2c2c2e;--color-surface-hover:#3a3a3c;--color-surface-active:#48484a;--color-fg:#f5f5f7;--color-fg-muted:#a1a1a6;--color-fg-subtle:#8e8e93;--color-fg-disabled:#636366;--color-edge-subtle:#3a3a3c;--color-edge:#48484a;--color-edge-strong:#636366;--color-accent:#3b82f6;--color-accent-hover:#60a5fa;--color-accent-soft:#1e3a8a8c;--color-accent-fg:#60a5fa;--color-checkbox-accent:#c7c7cc;--color-success:#34d399;--color-success-soft:#064e3b80;--color-danger:#f87171;--color-danger-soft:#7f1d1d80;--color-warning:#fbbf24;--color-warning-soft:#713f1280;--color-scrim:#00000085;--shadow-surface:0 0 0 1px #ffffff0f;--shadow-elevated:0 8px 32px #00000073;--shadow-float:0 12px 48px #0000008c;--shadow-popover:0 16px 48px #00000080}.app-sidebar-push{transform:translateZ(0)}@media (min-width:768px){.app-sidebar-push{transition:width .2s cubic-bezier(.4,0,.2,1)}.app-sidebar-expanded-width{width:var(--sidebar-expanded-px,16rem)}}.app-sidebar-push.sidebar-width-resizing{transition:none!important}@media (prefers-reduced-motion:reduce){.app-sidebar-push{transition:none}}@media (min-width:768px){.settings-page-rail{width:var(--sidebar-expanded-px,16rem);transition:width .2s cubic-bezier(.4,0,.2,1);transform:translateZ(0)}}.settings-page-rail.settings-page-rail-resizing{transition:none!important}@media (prefers-reduced-motion:reduce){.settings-page-rail{transition:none}}@media (min-width:768px){.app-workspace-panel-expanded-width{width:var(--workspace-panel-px,20rem);max-width:var(--workspace-panel-px,20rem);transition:width .2s cubic-bezier(.4,0,.2,1);transform:translateZ(0)}}.app-workspace-panel-expanded-width.workspace-panel-rail-resizing{transition:none!important}@media (prefers-reduced-motion:reduce){.app-workspace-panel-expanded-width{transition:none}}@keyframes page-enter{0%{opacity:0;transform:translateY(4px)translateZ(0)}to{opacity:1;transform:translateY(0)translateZ(0)}}.page-enter{animation:.2s both page-enter}.page-enter--gentle{animation-duration:.28s;animation-timing-function:cubic-bezier(.22,1,.36,1)}@media (prefers-reduced-motion:reduce){.page-enter,.page-enter--gentle{animation:none}}@keyframes settings-sheet-enter{0%{opacity:.85;transform:translate(.5rem)}to{opacity:1;transform:translate(0)}}@media (prefers-reduced-motion:no-preference){.settings-sheet-enter{animation:.25s ease-out both settings-sheet-enter}}@media (prefers-reduced-motion:reduce){.settings-sheet-enter{animation:none}}@media (prefers-reduced-motion:no-preference){::view-transition-old(root){animation-duration:.42s;animation-timing-function:ease}::view-transition-new(root){animation-duration:.42s;animation-timing-function:ease}}html[data-color-scheme=emerald]{--color-surface-base:#f0fdf4;--color-surface-panel:#fff;--color-surface-hover:#dcfce7;--color-surface-active:#bbf7d0;--color-fg:#052e16;--color-fg-muted:#166534;--color-fg-subtle:#15803d;--color-fg-disabled:#86efac;--color-edge-subtle:#bbf7d0;--color-edge:#86efac;--color-edge-strong:#4ade80;--color-accent:#059669;--color-accent-hover:#047857;--color-accent-soft:#d1fae5;--color-accent-fg:#047857;--color-checkbox-accent:#059669;--color-success:#059669;--color-success-soft:#d1fae5;--color-danger:#dc2626;--color-danger-soft:#fee2e2;--color-warning:#d97706;--color-warning-soft:#fef3c7;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem}html.dark[data-color-scheme=emerald]{--color-surface-base:#000;--color-surface-panel:#0a0a0a;--color-surface-hover:#111;--color-surface-active:#1a1a1a;--color-fg:#d1fae5;--color-fg-muted:#6ee7b7;--color-fg-subtle:#34d399;--color-fg-disabled:#065f46;--color-edge-subtle:#0d2818;--color-edge:#134e2a;--color-edge-strong:#166534;--color-accent:#10b981;--color-accent-hover:#34d399;--color-accent-soft:#064e3b99;--color-accent-fg:#34d399;--color-checkbox-accent:#10b981;--color-success:#34d399;--color-success-soft:#064e3b80;--color-danger:#f87171;--color-danger-soft:#7f1d1d80;--color-warning:#fbbf24;--color-warning-soft:#713f1280;--color-scrim:#000000b8;--shadow-surface:0 0 0 1px #10b9811a;--shadow-elevated:0 8px 32px #000c, 0 0 0 1px #10b98112;--shadow-float:0 12px 48px #000000e6, 0 0 0 1px #10b9810f;--shadow-popover:0 16px 48px #000000d9, 0 0 0 1px #10b9811f;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-edge-strong);border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:var(--color-fg-subtle)}.chat-messages{scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#bcbcc094 transparent}@supports (color:color-mix(in lab, red, red)){.chat-messages{scrollbar-color:color-mix(in srgb, var(--color-edge-strong) 58%, transparent) transparent}}.chat-messages{overscroll-behavior-y:contain;padding-inline-end:.5rem}.markdown-content{min-width:0;max-width:100%}.markdown-content .markdown-body{overflow-wrap:anywhere;word-break:break-word;min-width:0;max-width:100%}.markdown-content .markdown-body pre{box-sizing:border-box;min-width:0;max-width:100%}.markdown-content .markdown-body pre code.hljs{box-sizing:border-box;max-width:100%}.markdown-content .markdown-body table{table-layout:fixed;max-width:100%}.markdown-content .markdown-body th,.markdown-content .markdown-body td{word-break:break-word;overflow-wrap:anywhere}html.dark .chat-messages{scrollbar-color:#d2d2d7b8 transparent}@supports (color:color-mix(in lab, red, red)){html.dark .chat-messages{scrollbar-color:color-mix(in srgb, var(--color-edge) 72%, transparent) transparent}}.chat-messages::-webkit-scrollbar{width:10px}.chat-messages::-webkit-scrollbar-track{background:0 0}.chat-messages::-webkit-scrollbar-thumb{background-color:#bcbcc080;background-clip:content-box;border:3px solid #0000;border-radius:9999px}@supports (color:color-mix(in lab, red, red)){.chat-messages::-webkit-scrollbar-thumb{background-color:color-mix(in srgb, var(--color-edge-strong) 50%, transparent)}}.chat-messages::-webkit-scrollbar-thumb:hover{background-color:#86868b61}@supports (color:color-mix(in lab, red, red)){.chat-messages::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb, var(--color-fg-subtle) 38%, transparent)}}html.dark .chat-messages::-webkit-scrollbar-thumb{background-color:#d2d2d78c}@supports (color:color-mix(in lab, red, red)){html.dark .chat-messages::-webkit-scrollbar-thumb{background-color:color-mix(in srgb, var(--color-edge) 55%, transparent)}}html.dark .chat-messages::-webkit-scrollbar-thumb:hover{background-color:#6e6e7373}@supports (color:color-mix(in lab, red, red)){html.dark .chat-messages::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb, var(--color-fg-muted) 45%, transparent)}}.app-sidebar-nav-scroll{-ms-overflow-style:none;scrollbar-width:none}.app-sidebar-nav-scroll::-webkit-scrollbar{width:0;height:0;display:none}@keyframes xopc-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes xopc-drawer-in{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes xopc-dialog-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes xopc-dialog-overlay-out{0%{opacity:1}to{opacity:0}}@keyframes xopc-dialog-content-in{0%{opacity:0}to{opacity:1}}@keyframes xopc-dialog-content-out{0%{opacity:1}to{opacity:0}}@keyframes xopc-dialog-fullscreen-in{0%{opacity:0}to{opacity:1}}@keyframes xopc-dialog-fullscreen-out{0%{opacity:1}to{opacity:0}}@keyframes xopc-dialog-pane-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes xopc-dialog-pane-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}@keyframes xopc-drawer-right-in{0%{opacity:.92;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes xopc-drawer-right-out{0%{opacity:1;transform:translate(0)}to{opacity:.92;transform:translate(100%)}}.xopc-dialog-overlay[data-state=open]{animation:.2s ease-out both xopc-dialog-overlay-in}.xopc-dialog-overlay[data-state=closed]{animation:.15s ease-in both xopc-dialog-overlay-out}.xopc-dialog-content[data-state=open]{animation:.25s cubic-bezier(.32,.72,0,1) both xopc-dialog-content-in}.xopc-dialog-content[data-state=closed]{animation:.2s ease-in both xopc-dialog-content-out}.xopc-dialog-content-fullscreen[data-state=open]{animation:.25s cubic-bezier(.32,.72,0,1) both xopc-dialog-fullscreen-in}.xopc-dialog-content-fullscreen[data-state=closed]{animation:.2s ease-in both xopc-dialog-fullscreen-out}.xopc-dialog-content-pane[data-state=open]{animation:.25s cubic-bezier(.32,.72,0,1) both xopc-dialog-pane-in}.xopc-dialog-content-pane[data-state=closed]{animation:.2s ease-in both xopc-dialog-pane-out}.xopc-drawer-right[data-state=open]{animation:.38s cubic-bezier(.22,1,.36,1) both xopc-drawer-right-in}.xopc-drawer-right[data-state=closed]{animation:.24s cubic-bezier(.4,0,1,1) both xopc-drawer-right-out}.xopc-mobile-nav-overlay[data-state=open]{animation:.2s ease-out both xopc-overlay-in}.xopc-mobile-nav-overlay[data-state=closed]{animation:.15s ease-in both xopc-dialog-overlay-out}.xopc-mobile-nav-content[data-state=open]{animation:.28s cubic-bezier(.32,.72,0,1) both xopc-drawer-in}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@keyframes dreaming-overlay-enter{0%{opacity:0}to{opacity:1}}@keyframes dreaming-overlay-exit{0%{opacity:1}to{opacity:0}}@keyframes dreaming-pill-enter{0%{opacity:0;transform:translateY(12px)translate(-50%)}to{opacity:1;transform:translateY(0)translate(-50%)}}@keyframes dreaming-pulse-dot{0%,to{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}.dreaming-overlay-enter{animation:.6s cubic-bezier(.22,1,.36,1) both dreaming-overlay-enter}.dreaming-overlay-exit{animation:.8s cubic-bezier(.4,0,1,1) both dreaming-overlay-exit}.dreaming-pill-enter{animation:.5s cubic-bezier(.22,1,.36,1) .3s both dreaming-pill-enter}.dreaming-pulse-dot{background:currentColor;border-radius:9999px;width:6px;height:6px;animation:2s ease-in-out infinite dreaming-pulse-dot;display:inline-block}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@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:""}@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}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}
|