@openagt/dashboard 0.53.0 → 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/appearance.d.ts +50 -0
- package/dist/appearance.d.ts.map +1 -0
- package/dist/appearance.js +51 -0
- package/dist/appearance.js.map +1 -0
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +1 -1
- package/dist/cli/skills.js.map +1 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1 -0
- package/dist/client.js.map +1 -1
- package/dist/clone-project.js +1 -1
- package/dist/clone-project.js.map +1 -1
- package/dist/daemon-runtime.d.ts.map +1 -1
- package/dist/daemon-runtime.js +8 -4
- package/dist/daemon-runtime.js.map +1 -1
- package/dist/daemon-services.d.ts +4 -4
- package/dist/daemon-services.js +6 -6
- package/dist/daemon-services.js.map +1 -1
- package/dist/daemon.d.ts +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +11 -1
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/elsewhere.d.ts +1 -1
- package/dist/dashboard/elsewhere.d.ts.map +1 -1
- package/dist/dashboard/projects.js +1 -1
- package/dist/dashboard/projects.js.map +1 -1
- package/dist/dashboard/rpc-serve.d.ts +6 -0
- package/dist/dashboard/rpc-serve.d.ts.map +1 -1
- package/dist/dashboard/rpc-serve.js +21 -1
- package/dist/dashboard/rpc-serve.js.map +1 -1
- package/dist/dashboard/run-inbox.d.ts +4 -3
- package/dist/dashboard/run-inbox.d.ts.map +1 -1
- package/dist/dashboard/run-inbox.js +6 -5
- package/dist/dashboard/run-inbox.js.map +1 -1
- package/dist/dashboard/server.d.ts +16 -1
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +54 -12
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/static.d.ts +15 -2
- package/dist/dashboard/static.d.ts.map +1 -1
- package/dist/dashboard/static.js +33 -18
- package/dist/dashboard/static.js.map +1 -1
- package/dist/dashboard/website.d.ts +34 -0
- package/dist/dashboard/website.d.ts.map +1 -0
- package/dist/dashboard/website.js +82 -0
- package/dist/dashboard/website.js.map +1 -0
- package/dist/dashboard-bundle/assets/host/module-BMyNrbiB.js +1 -0
- package/dist/dashboard-bundle/assets/main-BLY-EDtL.css +2 -0
- package/dist/dashboard-bundle/assets/main-DPdJVm4s.js +152 -0
- package/dist/dashboard-bundle/assets/module-DY3Aigsz.js +19 -0
- package/dist/dashboard-bundle/index.html +8 -8
- package/dist/dashboard-rpc/control.d.ts +22 -6
- package/dist/dashboard-rpc/control.d.ts.map +1 -1
- package/dist/dashboard-rpc/control.js +45 -9
- package/dist/dashboard-rpc/control.js.map +1 -1
- package/dist/dashboard-rpc/index.d.ts +3 -1
- package/dist/dashboard-rpc/index.d.ts.map +1 -1
- package/dist/dashboard-rpc/index.js +6 -2
- package/dist/dashboard-rpc/index.js.map +1 -1
- package/dist/dashboard-rpc/machines.d.ts.map +1 -1
- package/dist/dashboard-rpc/machines.js +1 -2
- package/dist/dashboard-rpc/machines.js.map +1 -1
- package/dist/dashboard-rpc/modules.js +2 -2
- package/dist/dashboard-rpc/modules.js.map +1 -1
- package/dist/dashboard-rpc/personal-folder.d.ts +23 -0
- package/dist/dashboard-rpc/personal-folder.d.ts.map +1 -0
- package/dist/dashboard-rpc/personal-folder.js +30 -0
- package/dist/dashboard-rpc/personal-folder.js.map +1 -0
- package/dist/dashboard-rpc/project-agent-data.d.ts +20 -0
- package/dist/dashboard-rpc/project-agent-data.d.ts.map +1 -0
- package/dist/dashboard-rpc/project-agent-data.js +38 -0
- package/dist/dashboard-rpc/project-agent-data.js.map +1 -0
- package/dist/dashboard-rpc/projects.d.ts +3 -5
- package/dist/dashboard-rpc/projects.d.ts.map +1 -1
- package/dist/dashboard-rpc/projects.js +5 -17
- package/dist/dashboard-rpc/projects.js.map +1 -1
- package/dist/dashboard-rpc/reads.d.ts +4 -4
- package/dist/dashboard-rpc/reads.d.ts.map +1 -1
- package/dist/dashboard-rpc/reads.js +5 -5
- package/dist/dashboard-rpc/reads.js.map +1 -1
- package/dist/dashboard-rpc/relay-dispatch.js +5 -5
- package/dist/dashboard-rpc/relay-dispatch.js.map +1 -1
- package/dist/events.d.ts +2 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/join-dashboard.d.ts +6 -2
- package/dist/join-dashboard.d.ts.map +1 -1
- package/dist/join-dashboard.js +4 -2
- package/dist/join-dashboard.js.map +1 -1
- package/dist/module-types/dashboard/components/Markdown.d.ts +8 -1
- package/dist/module-types/dashboard/components/SettingsRows.d.ts +2 -2
- package/dist/module-types/dashboard/components/ui/dropdown-menu.d.ts +3 -2
- package/dist/module-types/dashboard/lib/highlight.d.ts +13 -8
- package/dist/module-types/dashboard/module/index.d.ts +15 -1
- package/dist/module-types/src/appearance.d.ts +49 -0
- package/dist/module-types/src/client.d.ts +1 -0
- package/dist/module-types/src/dashboard/elsewhere.d.ts +1 -1
- package/dist/module-types/src/dashboard/rpc-serve.d.ts +6 -0
- package/dist/module-types/src/dashboard/run-inbox.d.ts +4 -3
- package/dist/module-types/src/dashboard-rpc/control.d.ts +22 -6
- package/dist/module-types/src/dashboard-rpc/index.d.ts +3 -1
- package/dist/module-types/src/dashboard-rpc/personal-folder.d.ts +22 -0
- package/dist/module-types/src/dashboard-rpc/project-agent-data.d.ts +19 -0
- package/dist/module-types/src/dashboard-rpc/projects.d.ts +3 -5
- package/dist/module-types/src/dashboard-rpc/reads.d.ts +4 -4
- package/dist/module-types/src/events.d.ts +2 -0
- package/dist/module-types/src/index.d.ts +0 -1
- package/dist/module-types/src/personal-folder-shown.d.ts +10 -0
- package/dist/module-types/src/registry.d.ts +11 -0
- package/dist/module-types/src/repository-url.d.ts +6 -0
- package/dist/module-types/src/secure-address.d.ts +31 -0
- package/dist/module.css +6 -4
- package/dist/personal-folder-shown.d.ts +11 -0
- package/dist/personal-folder-shown.d.ts.map +1 -0
- package/dist/personal-folder-shown.js +8 -0
- package/dist/personal-folder-shown.js.map +1 -0
- package/dist/registry.d.ts +11 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +13 -0
- package/dist/registry.js.map +1 -1
- package/dist/remove-files.d.ts +4 -3
- package/dist/remove-files.d.ts.map +1 -1
- package/dist/remove-files.js +6 -1
- package/dist/remove-files.js.map +1 -1
- package/dist/repository-url.d.ts +7 -0
- package/dist/repository-url.d.ts.map +1 -0
- package/dist/repository-url.js +17 -0
- package/dist/repository-url.js.map +1 -0
- package/dist/secure-address.d.ts +32 -0
- package/dist/secure-address.d.ts.map +1 -0
- package/dist/secure-address.js +50 -0
- package/dist/secure-address.js.map +1 -0
- package/dist/store/run-record.d.ts.map +1 -1
- package/dist/store/run-record.js +3 -1
- package/dist/store/run-record.js.map +1 -1
- package/dist/terminal.js +2 -0
- package/dist/terminal.js.map +1 -1
- package/dist/website/assets/chunks/chunk-BIhVwAkA.js +1 -0
- package/dist/website/assets/chunks/chunk-CSTMwN0A.js +1 -0
- package/dist/website/assets/chunks/chunk-DeonM-eN.js +3 -0
- package/dist/website/assets/chunks/chunk-kQ9-9YDn.js +18 -0
- package/dist/website/assets/emoji-compass.svg +75 -0
- package/dist/website/assets/emoji-confused.svg +34 -0
- package/dist/website/assets/emoji-construction.svg +188 -0
- package/dist/website/assets/emoji-flex.svg +1 -0
- package/dist/website/assets/emoji-hand-raised.svg +180 -0
- package/dist/website/assets/emoji-mech-arm.svg +1 -0
- package/dist/website/assets/emoji-robot.svg +105 -0
- package/dist/website/assets/emoji-rocket.svg +49 -0
- package/dist/website/assets/entries/entry-client-routing.CzHJwWDQ.js +2 -0
- package/dist/website/assets/entries/pages_banner.6_j-HGsV.js +1 -0
- package/dist/website/assets/entries/pages_go-to-dashboard.CxnTPDW0.js +1 -0
- package/dist/website/assets/entries/pages_index.Dcg_ZrR7.js +1 -0
- package/dist/website/assets/entries/pages_press.rRp1mRww.js +1 -0
- package/dist/website/assets/logo.svg +34 -0
- package/dist/website/assets/static/pages_index_styles-f7bc93a7.DHC1qZXc.css +1 -0
- package/dist/website/banner/index.html +28 -0
- package/dist/website/banner/index.pageContext.json +1 -0
- package/dist/website/banner.jpg +0 -0
- package/dist/website/go-to-dashboard/index.html +30 -0
- package/dist/website/go-to-dashboard/index.pageContext.json +1 -0
- package/dist/website/index.html +30 -0
- package/dist/website/index.pageContext.json +1 -0
- package/dist/website/press/index.html +29 -0
- package/dist/website/press/index.pageContext.json +1 -0
- package/package.json +31 -27
- package/dist/dashboard-bundle/assets/everforest-dark-sB-x3p7T.js +0 -1
- package/dist/dashboard-bundle/assets/everforest-light-Df2xbC6M.js +0 -1
- package/dist/dashboard-bundle/assets/host/module-CTQrrHFl.js +0 -1
- package/dist/dashboard-bundle/assets/main-BKp0ZMXD.css +0 -2
- package/dist/dashboard-bundle/assets/main-Du4cDqEn.js +0 -148
- package/dist/dashboard-bundle/assets/module-Cwganbc7.js +0 -16
- package/dist/module-types/src/repository-address.d.ts +0 -36
- package/dist/repository-address.d.ts +0 -37
- package/dist/repository-address.d.ts.map +0 -1
- package/dist/repository-address.js +0 -59
- package/dist/repository-address.js.map +0 -1
package/dist/dashboard/static.js
CHANGED
|
@@ -22,21 +22,28 @@ function tryDecode(pathname) {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* `index.html` rather than reading outside the bundle.
|
|
25
|
+
* The file `pathname` names in `dir`: the file itself, or a folder's `index.html` (`/press` is
|
|
26
|
+
* `press/index.html`, `/` is `index.html`). Undefined when there is none, when the escape is
|
|
27
|
+
* malformed, or when the path leaves `dir`: path-traversal never reads outside it.
|
|
29
28
|
*/
|
|
30
|
-
export async function
|
|
31
|
-
// Neither an unparseable request target nor a malformed escape (`/%zz`) may throw: this
|
|
32
|
-
// runs void-dispatched, so an exception here would be an unhandled rejection that takes
|
|
33
|
-
// the daemon down (#938). Both fall back to the SPA shell like any other unknown path.
|
|
34
|
-
const pathname = requestPathname(req) ?? '/';
|
|
29
|
+
export async function fileIn(dir, pathname) {
|
|
35
30
|
const rel = tryDecode(pathname).replace(/^\/+/, '');
|
|
36
31
|
const root = normalize(dir);
|
|
37
32
|
const candidate = normalize(join(root, rel));
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
if (candidate !== root && !candidate.startsWith(root + sep))
|
|
34
|
+
return undefined;
|
|
35
|
+
if (rel && (await isFile(candidate)))
|
|
36
|
+
return candidate;
|
|
37
|
+
const index = join(candidate, 'index.html');
|
|
38
|
+
return (await isFile(index)) ? index : undefined;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Send `target`, a file in the bundle `root`. Only the fingerprinted files under `assets/` are
|
|
42
|
+
* immutable, the host files a module imports among them: index.html, which names this version's
|
|
43
|
+
* in its import map, and everything else at a stable path must always revalidate, or a dashboard
|
|
44
|
+
* upgrade would not reach a browser that kept the old page until its cache expired a year later.
|
|
45
|
+
*/
|
|
46
|
+
export async function sendFile(req, res, root, target) {
|
|
40
47
|
const body = await readFile(target).catch(() => undefined);
|
|
41
48
|
const facts = await stat(target).catch(() => undefined);
|
|
42
49
|
if (body === undefined) {
|
|
@@ -44,13 +51,21 @@ export async function serveClientBundle(req, res, dir) {
|
|
|
44
51
|
res.end('dashboard bundle not built');
|
|
45
52
|
return;
|
|
46
53
|
}
|
|
47
|
-
const
|
|
48
|
-
// Only the fingerprinted files under `assets/` are immutable, the host files a module imports
|
|
49
|
-
// among them: index.html, which names this version's in its import map, and everything else at a
|
|
50
|
-
// stable path must always revalidate, or a dashboard upgrade would not reach a browser that kept
|
|
51
|
-
// the old page until its cache expired a year later.
|
|
52
|
-
const cacheControl = target.startsWith(join(root, 'assets') + sep) ? 'public, max-age=31536000, immutable' : 'no-cache';
|
|
54
|
+
const cacheControl = target.startsWith(join(normalize(root), 'assets') + sep) ? 'public, max-age=31536000, immutable' : 'no-cache';
|
|
53
55
|
// A file's packed copy is kept while the file is the same one.
|
|
54
|
-
await sendBody(req, res, 200, { 'content-type':
|
|
56
|
+
await sendBody(req, res, 200, { 'content-type': contentTypeFor(target), 'cache-control': cacheControl, ...(facts ? { etag: fileTag(facts) } : {}) }, body, facts ? `${target} ${facts.mtimeMs} ${facts.size}` : undefined);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Serve `dir`'s static bundle for this request: the requested file when it exists,
|
|
60
|
+
* otherwise `index.html` (the SPA fallback, so client routes and unknown paths still
|
|
61
|
+
* boot the app). A request that escapes `dir` falls back to `index.html` rather than reading
|
|
62
|
+
* outside the bundle.
|
|
63
|
+
*/
|
|
64
|
+
export async function serveClientBundle(req, res, dir) {
|
|
65
|
+
// Neither an unparseable request target nor a malformed escape (`/%zz`) may throw: this
|
|
66
|
+
// runs void-dispatched, so an exception here would be an unhandled rejection that takes
|
|
67
|
+
// the daemon down (#938). Both fall back to the SPA shell like any other unknown path.
|
|
68
|
+
const target = (await fileIn(dir, requestPathname(req) ?? '/')) ?? join(dir, 'index.html');
|
|
69
|
+
await sendFile(req, res, dir, target);
|
|
55
70
|
}
|
|
56
71
|
//# sourceMappingURL=static.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/dashboard/static.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,0FAA0F;AAC1F,6DAA6D;AAC7D,wFAAwF;AACxF,iDAAiD;AACjD,sEAAsE;AAEtE,sDAAsD;AACtD,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AAC5D,CAAC;AAED,iGAAiG;AACjG,SAAS,SAAS,CAAC,QAAgB;IACjC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/dashboard/static.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,0FAA0F;AAC1F,6DAA6D;AAC7D,wFAAwF;AACxF,iDAAiD;AACjD,sEAAsE;AAEtE,sDAAsD;AACtD,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AAC5D,CAAC;AAED,iGAAiG;AACjG,SAAS,SAAS,CAAC,QAAgB;IACjC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAW,EAAE,QAAgB;IACxD,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAC3B,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;IAC5C,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IAC7E,IAAI,GAAG,IAAI,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,SAAS,CAAA;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IAC3C,OAAO,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAoB,EAAE,GAAmB,EAAE,IAAY,EAAE,MAAc;IACpG,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IACvD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAA;QACpD,GAAG,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;QACrC,OAAM;IACR,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,UAAU,CAAA;IAClI,+DAA+D;IAC/D,MAAM,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAC5N,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAoB,EAAE,GAAmB,EAAE,GAAW;IAC5F,wFAAwF;IACxF,wFAAwF;IACxF,uFAAuF;IACvF,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;IAC1F,MAAM,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
/**
|
|
3
|
+
* The website on an installed computer (#1919). There, the website's own name is answered by this
|
|
4
|
+
* dashboard (the secure address), which carries a copy of the website, built with it into
|
|
5
|
+
* `dist/website`. Its `/` shows the dashboard, or the landing page once the person picks it on
|
|
6
|
+
* the toggle under the logo; the website's other pages are at their own paths, beside the
|
|
7
|
+
* dashboard's, whose files never have the same names.
|
|
8
|
+
*/
|
|
9
|
+
/** Where the toggle is answered: `HEAD /_view` says this is the dashboard's copy, `/_view/<view>` picks one. */
|
|
10
|
+
export declare const VIEW_PREFIX = "/_view";
|
|
11
|
+
/** What `/` shows, kept in the browser. */
|
|
12
|
+
export declare const VIEW_COOKIE = "openagent-view";
|
|
13
|
+
export type View = 'dashboard' | 'landing';
|
|
14
|
+
/** The website's copy, when the dashboard was built with one. */
|
|
15
|
+
export declare function resolveWebsite(): Promise<string | undefined>;
|
|
16
|
+
/** What `/` shows this browser: the dashboard, unless it picked the landing page. */
|
|
17
|
+
export declare function viewOf(req: IncomingMessage): View;
|
|
18
|
+
/**
|
|
19
|
+
* A browser on the secure address that picked nothing yet is given the dashboard as its pick, so
|
|
20
|
+
* the dashboard's page knows from its first frame that the toggle is there (its `ViewToggle`).
|
|
21
|
+
*/
|
|
22
|
+
export declare function keepView(req: IncomingMessage, res: ServerResponse): void;
|
|
23
|
+
/**
|
|
24
|
+
* The toggle's own route. `/_view` answers 204, which is how a page tells this copy from the
|
|
25
|
+
* public website (404 there). `/_view/landing` and `/_view/dashboard` keep the pick and go to `/`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function handleViewRequest(res: ServerResponse, pathname: string): void;
|
|
28
|
+
/**
|
|
29
|
+
* Serve the website's file for this request, when it is one: its landing page at `/` when this
|
|
30
|
+
* browser picked it, and any of its other files at its own path. Resolves false when the request
|
|
31
|
+
* is the dashboard's.
|
|
32
|
+
*/
|
|
33
|
+
export declare function serveWebsite(req: IncomingMessage, res: ServerResponse, dir: string, pathname: string): Promise<boolean>;
|
|
34
|
+
//# sourceMappingURL=website.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"website.d.ts","sourceRoot":"","sources":["../../src/dashboard/website.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAGhE;;;;;;GAMG;AAEH,gHAAgH;AAChH,eAAO,MAAM,WAAW,WAAW,CAAA;AACnC,2CAA2C;AAC3C,eAAO,MAAM,WAAW,mBAAmB,CAAA;AAE3C,MAAM,MAAM,IAAI,GAAG,WAAW,GAAG,SAAS,CAAA;AAE1C,iEAAiE;AACjE,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAIlE;AASD,qFAAqF;AACrF,wBAAgB,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAEjD;AAOD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAExE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAiB7E;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO7H"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { stat } from 'node:fs/promises';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { fileIn, sendFile } from './static.js';
|
|
5
|
+
/**
|
|
6
|
+
* The website on an installed computer (#1919). There, the website's own name is answered by this
|
|
7
|
+
* dashboard (the secure address), which carries a copy of the website, built with it into
|
|
8
|
+
* `dist/website`. Its `/` shows the dashboard, or the landing page once the person picks it on
|
|
9
|
+
* the toggle under the logo; the website's other pages are at their own paths, beside the
|
|
10
|
+
* dashboard's, whose files never have the same names.
|
|
11
|
+
*/
|
|
12
|
+
/** Where the toggle is answered: `HEAD /_view` says this is the dashboard's copy, `/_view/<view>` picks one. */
|
|
13
|
+
export const VIEW_PREFIX = '/_view';
|
|
14
|
+
/** What `/` shows, kept in the browser. */
|
|
15
|
+
export const VIEW_COOKIE = 'openagent-view';
|
|
16
|
+
/** The website's copy, when the dashboard was built with one. */
|
|
17
|
+
export async function resolveWebsite() {
|
|
18
|
+
// From the package root, as the dashboard bundle is: the same folder from `dist/`, `dist-test/` and `src/`.
|
|
19
|
+
const dir = join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'dist', 'website');
|
|
20
|
+
return (await stat(join(dir, 'index.html')).then(s => s.isFile()).catch(() => false)) ? dir : undefined;
|
|
21
|
+
}
|
|
22
|
+
/** The view this browser picked, if it picked one. */
|
|
23
|
+
function pickedView(req) {
|
|
24
|
+
const cookies = (req.headers.cookie ?? '').split(';').map(part => part.trim());
|
|
25
|
+
if (cookies.includes(`${VIEW_COOKIE}=landing`))
|
|
26
|
+
return 'landing';
|
|
27
|
+
return cookies.includes(`${VIEW_COOKIE}=dashboard`) ? 'dashboard' : undefined;
|
|
28
|
+
}
|
|
29
|
+
/** What `/` shows this browser: the dashboard, unless it picked the landing page. */
|
|
30
|
+
export function viewOf(req) {
|
|
31
|
+
return pickedView(req) ?? 'dashboard';
|
|
32
|
+
}
|
|
33
|
+
/** The cookie that keeps `view`. Readable by the page: it is how the dashboard knows to draw the toggle. */
|
|
34
|
+
function viewCookie(view) {
|
|
35
|
+
return `${VIEW_COOKIE}=${view}; Path=/; Max-Age=31536000; Secure; SameSite=Lax`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A browser on the secure address that picked nothing yet is given the dashboard as its pick, so
|
|
39
|
+
* the dashboard's page knows from its first frame that the toggle is there (its `ViewToggle`).
|
|
40
|
+
*/
|
|
41
|
+
export function keepView(req, res) {
|
|
42
|
+
if (pickedView(req) === undefined)
|
|
43
|
+
res.setHeader('set-cookie', viewCookie('dashboard'));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The toggle's own route. `/_view` answers 204, which is how a page tells this copy from the
|
|
47
|
+
* public website (404 there). `/_view/landing` and `/_view/dashboard` keep the pick and go to `/`.
|
|
48
|
+
*/
|
|
49
|
+
export function handleViewRequest(res, pathname) {
|
|
50
|
+
if (pathname === VIEW_PREFIX) {
|
|
51
|
+
res.writeHead(204).end();
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const view = pathname.slice(VIEW_PREFIX.length + 1);
|
|
55
|
+
if (view !== 'landing' && view !== 'dashboard') {
|
|
56
|
+
res.writeHead(404, { 'content-type': 'text/plain' }).end('no such view');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
res
|
|
60
|
+
.writeHead(303, {
|
|
61
|
+
location: '/',
|
|
62
|
+
'set-cookie': viewCookie(view),
|
|
63
|
+
'cache-control': 'no-store',
|
|
64
|
+
})
|
|
65
|
+
.end();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Serve the website's file for this request, when it is one: its landing page at `/` when this
|
|
69
|
+
* browser picked it, and any of its other files at its own path. Resolves false when the request
|
|
70
|
+
* is the dashboard's.
|
|
71
|
+
*/
|
|
72
|
+
export async function serveWebsite(req, res, dir, pathname) {
|
|
73
|
+
if (pathname === '/' && viewOf(req) === 'dashboard')
|
|
74
|
+
return false;
|
|
75
|
+
const target = await fileIn(dir, pathname);
|
|
76
|
+
if (target === undefined)
|
|
77
|
+
return false;
|
|
78
|
+
// A browser asks again for `/` each time, and the two pages are told apart by their tags, so a switch shows at once.
|
|
79
|
+
await sendFile(req, res, dir, target);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=website.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"website.js","sourceRoot":"","sources":["../../src/dashboard/website.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE9C;;;;;;GAMG;AAEH,gHAAgH;AAChH,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAA;AACnC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAA;AAI3C,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,4GAA4G;IAC5G,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;IACxF,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;AACzG,CAAC;AAED,sDAAsD;AACtD,SAAS,UAAU,CAAC,GAAoB;IACtC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9E,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,WAAW,UAAU,CAAC;QAAE,OAAO,SAAS,CAAA;IAChE,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,WAAW,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;AAC/E,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,MAAM,CAAC,GAAoB;IACzC,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,WAAW,CAAA;AACvC,CAAC;AAED,4GAA4G;AAC5G,SAAS,UAAU,CAAC,IAAU;IAC5B,OAAO,GAAG,WAAW,IAAI,IAAI,kDAAkD,CAAA;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAoB,EAAE,GAAmB;IAChE,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,SAAS;QAAE,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;AACzF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAmB,EAAE,QAAgB;IACrE,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;QACxB,OAAM;IACR,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACnD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QACxE,OAAM;IACR,CAAC;IACD,GAAG;SACA,SAAS,CAAC,GAAG,EAAE;QACd,QAAQ,EAAE,GAAG;QACb,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC;QAC9B,eAAe,EAAE,UAAU;KAC5B,CAAC;SACD,GAAG,EAAE,CAAA;AACV,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAoB,EAAE,GAAmB,EAAE,GAAW,EAAE,QAAgB;IACzG,IAAI,QAAQ,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,WAAW;QAAE,OAAO,KAAK,CAAA;IACjE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC1C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACtC,qHAAqH;IACrH,MAAM,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IACrC,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,A as t,B as n,Bn as r,Cr as i,Ct as a,D as o,Dn as s,Er as c,Et as l,F as u,Fr as d,H as f,Ha as p,I as m,J as h,K as g,L as _,La as v,Lr as y,M as b,Mt as x,N as S,Nt as C,O as w,Or as T,P as E,Pr as D,Q as O,R as k,Ra as A,Rt as j,Si as M,Sn as N,Sr as P,St as F,T as I,Tr as L,Tt as R,U as z,Ua as B,V,Vn as H,W as U,Wa as W,X as G,Y as K,Z as q,_ as J,a as Y,at as X,bn as Z,br as Q,c as $,ct as ee,dn as te,dr as ne,et as re,f as ie,fn as ae,gn as oe,i as se,ir as ce,it as le,j as ue,jr as de,k as fe,l as pe,mn as me,n as he,nt as ge,o as _e,ot as ve,p as ye,pn as be,q as xe,qa as Se,r as Ce,rr as we,s as Te,t as Ee,u as De,un as Oe,v as ke,vn as Ae,vr as je,w as Me,wi as Ne,wt as Pe,x as Fe,xi as Ie,xn as Le,xr as Re,y as ze,yn as Be,z as Ve,za as He,zn as Ue,zt as We}from"../module-DY3Aigsz.js";export{z as Badge,v as Button,F as Card,a as CardContent,Pe as CardHeader,R as CardTitle,l as CardTitleLink,X as Checkbox,P as ClaudeLogo,i as CodexLogo,re as ConfirmDialog,w as ContextMenu,fe as ContextMenuTrigger,x as Dialog,t as DiffStat,ae as DropdownMenu,be as DropdownMenuCheckboxItem,me as DropdownMenuContent,oe as DropdownMenuItem,Ae as DropdownMenuSeparator,Be as DropdownMenuSub,Z as DropdownMenuSubContent,Le as DropdownMenuSubTrigger,N as DropdownMenuTrigger,ke as FileIcon,ge as FileLinks,ze as FilterChips,U as GaugeFace,we as Input,u as Label,ye as LinkActions,Se as MAX_SPEND_OFFSET,y as MachineMark,le as Markdown,Ee as ModuleHostContext,Me as Page,I as PaneActions,o as PaneTitle,D as PersonMark,ve as Pieces,b as Popover,S as PopoverContent,E as PopoverTrigger,De as QrCode,Ue as RadioGroup,r as RadioGroupItem,H as RadioGroupOption,ue as RangeSlider,s as ScrollArea,K as Select,G as SelectContent,q as SelectItem,O as SelectTrigger,e as SelectValue,Oe as Separator,g as SettingsRow,xe as SettingsSection,h as SettingsSelectRow,te as Skeleton,J as StartAgentButton,Fe as StatTile,f as Switch,m as Table,_ as TableBody,k as TableCell,Ve as TableHead,n as TableHeader,V as TableRow,C as Textarea,Ie as Tooltip,M as TooltipContent,Ne as TooltipTrigger,$ as Waiting,A as buttonVariants,He as cn,he as defineModule,je as forgetRemembered,L as formatAge,c as formatDateTime,T as formatDuration,de as formatRelative,p as machineKind,B as machineName,Ce as moduleHost,Y as pathsIn,d as personName,j as personSaid,W as reachedByLine,ce as useAction,ne as useCodingAgents,_e as useFileNames,We as useGitHostPeople,ee as useHighlighted,Q as useLoaded,se as useModuleHost,pe as useNarrow,Re as usePolled,Te as useSchedule,ie as useSettingsCrumb};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:var(--font-app);--font-serif:var(--font-document);--font-mono:var(--font-code);--color-red-400:oklch(70.4% .191 22.216);--color-red-600:oklch(57.7% .245 27.325);--color-orange-400:oklch(75% .183 55.934);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-600:oklch(66.6% .179 58.318);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-600:oklch(68.1% .162 75.834);--color-lime-400:oklch(84.1% .238 128.85);--color-lime-600:oklch(64.8% .2 131.684);--color-green-400:oklch(79.2% .209 151.711);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-600:oklch(59.6% .145 163.225);--color-teal-400:oklch(77.7% .152 181.912);--color-teal-600:oklch(60% .118 184.704);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-600:oklch(60.9% .126 221.723);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-600:oklch(58.8% .158 241.966);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-600:oklch(51.1% .262 276.966);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-600:oklch(54.1% .281 293.009);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-600:oklch(55.8% .288 302.321);--color-fuchsia-400:oklch(74% .238 322.16);--color-fuchsia-600:oklch(59.1% .293 322.896);--color-pink-400:oklch(71.8% .202 349.761);--color-pink-600:oklch(59.2% .249 .584);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-600:oklch(58.6% .253 17.585);--color-neutral-950:oklch(14.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-2xl:42rem;--container-3xl:48rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: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);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-xl:24px;--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);--radius:.125rem;--color-background:var(--background);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-muted:var(--muted);--color-muted-foreground:var(--muted-foreground);--color-border:var(--border);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-accent:var(--accent);--color-accent-foreground:var(--accent-foreground);--color-warning:var(--warning);--color-danger:var(--danger)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,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}}@layer components;@layer utilities{.\@container{container-type:inline-size}.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:0}.inset-x-0{inset-inline:0}.inset-x-2{inset-inline:calc(var(--spacing) * 2)}.inset-x-3{inset-inline:calc(var(--spacing) * 3)}.inset-y-0{inset-block:0}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-\(--shown-top\,0px\){top:var(--shown-top,0px)}.top-0{top:0}.top-0\.5{top:calc(var(--spacing) * .5)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-2\.5{top:calc(var(--spacing) * 2.5)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-\[1\.5px\]{top:1.5px}.top-\[3px\]{top:3px}.top-\[7px\]{top:7px}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-1{right:calc(var(--spacing) * -1)}.-right-2\.5{right:calc(var(--spacing) * -2.5)}.right-0{right:0}.right-1{right:var(--spacing)}.right-2{right:calc(var(--spacing) * 2)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-\[max\(var\(--chat-scroll-bar\)\,0\.75rem\)\]{right:max(var(--chat-scroll-bar), .75rem)}.-bottom-0\.5{bottom:calc(var(--spacing) * -.5)}.bottom-\(--chat-bar\){bottom:var(--chat-bar)}.bottom-0{bottom:0}.bottom-full{bottom:100%}.-left-2\.5{left:calc(var(--spacing) * -2.5)}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-\[calc\(0\.125rem\+96px\+0\.125rem\)\]{left:calc(.25rem + 96px)}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.order-9998{order:9998}.order-last{order:9999}.col-span-12{grid-column:span 12/span 12}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-3{margin:calc(var(--spacing) * 3)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-1\.5{margin-inline:calc(var(--spacing) * -1.5)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.my-3{margin-block:calc(var(--spacing) * 3)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-\[3px\]{margin-top:3px}.-mr-2{margin-right:calc(var(--spacing) * -2)}.mr-auto{margin-right:auto}.-mb-2\.5{margin-bottom:calc(var(--spacing) * -2.5)}.-mb-6{margin-bottom:calc(var(--spacing) * -6)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-3\.5{margin-bottom:calc(var(--spacing) * 3.5)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.-ml-8{margin-left:calc(var(--spacing) * -8)}.-ml-\[2\.375rem\]{margin-left:-2.375rem}.ml-0{margin-left:0}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-7{margin-left:calc(var(--spacing) * 7)}.ml-11{margin-left:calc(var(--spacing) * 11)}.ml-auto{margin-left:auto}.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}.table-cell{display:table-cell}.table-row{display:table-row}.aspect-square{aspect-ratio:1}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-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-full{width:100%;height:100%}.h-\(--shown-height\,100dvh\){height:var(--shown-height,100dvh)}.h-0{height:0}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-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-20{height:calc(var(--spacing) * 20)}.h-32{height:calc(var(--spacing) * 32)}.h-56{height:calc(var(--spacing) * 56)}.h-\[17px\]{height:17px}.h-\[calc\(var\(--chat-bottom\,0px\)\+0\.5rem\)\]{height:calc(var(--chat-bottom,0px) + .5rem)}.h-\[min\(20rem\,calc\(var\(--available-height\)-2\.5rem\)\)\]{height:min(20rem, calc(var(--available-height) - 2.5rem))}.h-\[min\(40rem\,calc\(100dvh-2rem\)\)\]{height:min(40rem,100dvh - 2rem)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.h-max{height:max-content}.h-px{height:1px}.h-svh{height:100svh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[400px\]{max-height:400px}.max-h-\[calc\(100vh-2rem\)\]{max-height:calc(100vh - 2rem)}.max-h-\[min\(var\(--available-height\)\,20rem\)\]{max-height:min(var(--available-height), 20rem)}.max-h-\[var\(--available-height\)\]{max-height:var(--available-height)}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-40{min-height:calc(var(--spacing) * 40)}.min-h-dvh{min-height:100dvh}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/3{width:66.6667%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-96{width:calc(var(--spacing) * 96)}.w-\[3px\]{width:3px}.w-\[4\.5px\]{width:4.5px}.w-\[13\.5rem\]{width:13.5rem}.w-\[18px\]{width:18px}.w-\[22rem\]{width:22rem}.w-\[84px\]{width:84px}.w-\[96px\]{width:96px}.w-\[calc\(100\%\+1rem\)\]{width:calc(100% + 1rem)}.w-\[min\(26rem\,calc\(100vw-2rem\)\)\]{width:min(26rem,100vw - 2rem)}.w-\[min\(28rem\,calc\(100vw-2rem\)\)\]{width:min(28rem,100vw - 2rem)}.w-\[min\(34rem\,calc\(100vw-2rem\)\)\]{width:min(34rem,100vw - 2rem)}.w-\[min\(56rem\,calc\(100vw-2rem\)\)\]{width:min(56rem,100vw - 2rem)}.w-\[var\(--anchor-width\)\]{width:var(--anchor-width)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-36{max-width:calc(var(--spacing) * 36)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-96{max-width:calc(var(--spacing) * 96)}.max-w-\[16rem\]\!{max-width:16rem!important}.max-w-\[20rem\]{max-width:20rem}.max-w-\[20rem\]\!{max-width:20rem!important}.max-w-\[22rem\]{max-width:22rem}.max-w-\[24rem\]{max-width:24rem}.max-w-\[35\%\]{max-width:35%}.max-w-\[85\%\]{max-width:85%}.max-w-\[90vw\]{max-width:90vw}.max-w-\[480px\]{max-width:480px}.max-w-\[min\(16rem\,45vw\)\]{max-width:min(16rem,45vw)}.max-w-\[var\(--available-width\)\]{max-width:var(--available-width)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:0}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-14{min-width:calc(var(--spacing) * 14)}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-64{min-width:calc(var(--spacing) * 64)}.min-w-\[10rem\]{min-width:10rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[13rem\]{min-width:13rem}.min-w-\[14rem\]{min-width:14rem}.min-w-\[15rem\]{min-width:15rem}.min-w-\[16rem\]{min-width:16rem}.min-w-\[17px\]{min-width:17px}.min-w-\[18rem\]{min-width:18rem}.min-w-\[19rem\]{min-width:19rem}.min-w-\[var\(--anchor-width\)\]{min-width:var(--anchor-width)}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-auto{flex:auto}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.shrink-\[4\]{flex-shrink:4}.grow{flex-grow:1}.basis-40{flex-basis:calc(var(--spacing) * 40)}.basis-60{flex-basis:calc(var(--spacing) * 60)}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:0;--tw-border-spacing-y:0;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-2{--tw-translate-x:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;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-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.cursor-progress{cursor:progress}.touch-none{touch-action:none}.resize{resize:both}.resize-y{resize:vertical}.scroll-mt-6{scroll-margin-top:calc(var(--spacing) * 6)}.scroll-pb-\(--chat-bottom\){scroll-padding-bottom:var(--chat-bottom)}.scrollbar-thin{scrollbar-width:thin;scrollbar-color:var(--muted-foreground) transparent}@supports (color:color-mix(in lab, red, red)){.scrollbar-thin{scrollbar-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent) transparent}}.scrollbar-thin{scrollbar-width:thin}.scrollbar-gutter-stable{scrollbar-gutter:stable;scrollbar-gutter:stable}.list-\[circle\]{list-style-type:circle}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * 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-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * 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-\[3px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(3px * var(--tw-space-y-reverse));margin-block-end:calc(3px * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-2\.5{column-gap:calc(var(--spacing) * 2.5)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--border)}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-clip{overflow-x:clip}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:var(--radius)}.rounded-\[3px\]{border-radius:3px}.rounded-\[4px\]{border-radius:4px}.rounded-\[10px\]{border-radius:10px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.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-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--color-border\)\]{border-color:var(--color-border)}.border-\[var\(--color-primary-foreground\)\]\/25{border-color:var(--color-primary-foreground)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-primary-foreground\)\]\/25{border-color:color-mix(in oklab, var(--color-primary-foreground) 25%, transparent)}}.border-background\/20{border-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.border-background\/20{border-color:color-mix(in oklab, var(--background) 20%, transparent)}}.border-border,.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-danger\/30{border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.border-danger\/30{border-color:color-mix(in oklab, var(--danger) 30%, transparent)}}.border-foreground\/20{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\/20{border-color:color-mix(in oklab, var(--foreground) 20%, transparent)}}.border-muted-foreground\/60{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.border-muted-foreground\/60{border-color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.border-primary,.border-primary\/60{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/60{border-color:color-mix(in oklab, var(--primary) 60%, transparent)}}.border-sidebar-border{border-color:var(--border)}.border-success\/70{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.border-success\/70{border-color:color-mix(in oklab, var(--success) 70%, transparent)}}.border-transparent{border-color:#0000}.border-warning\/30{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/30{border-color:color-mix(in oklab, var(--warning) 30%, transparent)}}.border-warning\/40{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/40{border-color:color-mix(in oklab, var(--warning) 40%, transparent)}}.border-warning\/70{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/70{border-color:color-mix(in oklab, var(--warning) 70%, transparent)}}.border-l-transparent{border-left-color:#0000}.bg-\[color-mix\(in_oklab\,var\(--color-danger\)_8\%\,var\(--color-background\)\)\]{background-color:var(--color-danger)}@supports (color:color-mix(in lab, red, red)){.bg-\[color-mix\(in_oklab\,var\(--color-danger\)_8\%\,var\(--color-background\)\)\]{background-color:color-mix(in oklab,var(--color-danger) 8%,var(--color-background))}}.bg-\[color-mix\(in_oklab\,var\(--color-warning\)_8\%\,var\(--color-background\)\)\]{background-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.bg-\[color-mix\(in_oklab\,var\(--color-warning\)_8\%\,var\(--color-background\)\)\]{background-color:color-mix(in oklab,var(--color-warning) 8%,var(--color-background))}}.bg-\[var\(--color-card\)\]{background-color:var(--color-card)}.bg-\[var\(--color-danger\)\]{background-color:var(--color-danger)}.bg-\[var\(--color-muted\)\]{background-color:var(--color-muted)}.bg-\[var\(--color-primary\)\]{background-color:var(--color-primary)}.bg-accent,.bg-accent\/40{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/40{background-color:color-mix(in oklab, var(--accent) 40%, transparent)}}.bg-accent\/60{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/60{background-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.bg-background,.bg-background\/60{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/60{background-color:color-mix(in oklab, var(--background) 60%, 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-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-current{background-color:currentColor}.bg-danger,.bg-danger\/10{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.bg-danger\/10{background-color:color-mix(in oklab, var(--danger) 10%, transparent)}}.bg-danger\/15{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.bg-danger\/15{background-color:color-mix(in oklab, var(--danger) 15%, transparent)}}.bg-danger\/20{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.bg-danger\/20{background-color:color-mix(in oklab, var(--danger) 20%, transparent)}}.bg-foreground,.bg-foreground\/5{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/5{background-color:color-mix(in oklab, var(--foreground) 5%, transparent)}}.bg-foreground\/10{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/10{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.bg-foreground\/70{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/70{background-color:color-mix(in oklab, var(--foreground) 70%, transparent)}}.bg-foreground\/\[0\.075\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/\[0\.075\]{background-color:color-mix(in oklab, var(--foreground) 7.5%, transparent)}}.bg-info{background-color:var(--info)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground,.bg-muted-foreground\/15{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/15{background-color:color-mix(in oklab, var(--muted-foreground) 15%, transparent)}}.bg-muted-foreground\/20{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/20{background-color:color-mix(in oklab, var(--muted-foreground) 20%, transparent)}}.bg-muted-foreground\/30{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/30{background-color:color-mix(in oklab, var(--muted-foreground) 30%, transparent)}}.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-muted-foreground\/50{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/50{background-color:color-mix(in oklab, var(--muted-foreground) 50%, transparent)}}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/20{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-muted\/80{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/80{background-color:color-mix(in oklab, var(--muted) 80%, transparent)}}.bg-primary{background-color:var(--primary)}.bg-primary-foreground{background-color:var(--primary-foreground)}.bg-primary\/5{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--primary) 5%, transparent)}}.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.bg-primary\/15{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/15{background-color:color-mix(in oklab, var(--primary) 15%, transparent)}}.bg-primary\/70{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/70{background-color:color-mix(in oklab, var(--primary) 70%, transparent)}}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent{background-color:var(--accent)}.bg-sidebar-border{background-color:var(--border)}.bg-success,.bg-success\/15{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/15{background-color:color-mix(in oklab, var(--success) 15%, transparent)}}.bg-success\/20{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/20{background-color:color-mix(in oklab, var(--success) 20%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning,.bg-warning\/10{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/10{background-color:color-mix(in oklab, var(--warning) 10%, transparent)}}.bg-warning\/15{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/15{background-color:color-mix(in oklab, var(--warning) 15%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-background{--tw-gradient-from:var(--background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sidebar{--tw-gradient-from:var(--sidebar);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-current{fill:currentColor}.stroke-danger{stroke:var(--danger)}.stroke-muted-foreground,.stroke-muted-foreground\/15{stroke:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.stroke-muted-foreground\/15{stroke:color-mix(in oklab, var(--muted-foreground) 15%, transparent)}}.stroke-muted-foreground\/30{stroke:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.stroke-muted-foreground\/30{stroke:color-mix(in oklab, var(--muted-foreground) 30%, transparent)}}.stroke-success{stroke:var(--success)}.stroke-warning{stroke:var(--warning)}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-px{padding:1px}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-\[7px\]{padding-block:7px}.py-px{padding-block:1px}.pt-\(--chat-top\){padding-top:var(--chat-top)}.pt-0{padding-top:0}.pt-0\!{padding-top:0!important}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.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-6{padding-top:calc(var(--spacing) * 6)}.pt-7{padding-top:calc(var(--spacing) * 7)}.pt-24{padding-top:calc(var(--spacing) * 24)}.pr-0\.5{padding-right:calc(var(--spacing) * .5)}.pr-1{padding-right:var(--spacing)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pr-20{padding-right:calc(var(--spacing) * 20)}.pb-\(--chat-bottom\){padding-bottom:var(--chat-bottom)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-1{padding-left:var(--spacing)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-\[calc\(max\(var\(--chat-scroll-bar\)\,0\.75rem\)_-_var\(--chat-scroll-bar\)\)\]{padding-left:calc(max(var(--chat-scroll-bar), .75rem) - var(--chat-scroll-bar))}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-baseline{vertical-align:baseline}.align-bottom{vertical-align:bottom}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-\[\'IBM_Plex_Sans\'\,ui-sans-serif\,sans-serif\]{font-family:IBM Plex Sans,ui-sans-serif,sans-serif}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.font-serif{font-family:var(--font-serif)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--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\.9em\]{font-size:.9em}.text-\[7px\]{font-size:7px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[26px\]{font-size:26px}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-\[19px\]{--tw-leading:19px;line-height:19px}.leading-\[21px\]{--tw-leading:21px;line-height:21px}.leading-\[25px\]{--tw-leading:25px;line-height:25px}.leading-\[30px\]{--tw-leading:30px;line-height:30px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.\[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{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--color-background\)\]{color:var(--color-background)}.text-\[var\(--color-card-foreground\)\]{color:var(--color-card-foreground)}.text-\[var\(--color-muted-foreground\)\]{color:var(--color-muted-foreground)}.text-\[var\(--color-primary\)\]{color:var(--color-primary)}.text-\[var\(--color-primary-foreground\)\]{color:var(--color-primary-foreground)}.text-accent-foreground{color:var(--accent-foreground)}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-danger{color:var(--danger)}.text-foreground,.text-foreground\/80{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/80{color:color-mix(in oklab, var(--foreground) 80%, transparent)}}.text-info{color:var(--info)}.text-merged{color:var(--merged)}.text-muted-foreground,.text-muted-foreground\/50{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/50{color:color-mix(in oklab, var(--muted-foreground) 50%, transparent)}}.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/60{color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/70{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.text-muted-foreground\/80{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/80{color:color-mix(in oklab, var(--muted-foreground) 80%, transparent)}}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-sidebar-accent-foreground{color:var(--accent-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/70{color:color-mix(in oklab, var(--foreground) 70%, transparent)}}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-35{opacity:.35}.opacity-40{opacity:.4}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.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_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_2px_4px_rgb\(0_0_0\/0\.07\)\,0_6px_16px_rgb\(0_0_0\/0\.24\)\]{--tw-shadow:0 2px 4px var(--tw-shadow-color,#00000012), 0 6px 16px var(--tw-shadow-color,#0000003d);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-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)}.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-border{--tw-ring-color:var(--border)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.ring-primary\/40{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.ring-primary\/40{--tw-ring-color:color-mix(in oklab, var(--primary) 40%, transparent)}}.ring-sidebar{--tw-ring-color:var(--sidebar)}.ring-sidebar-ring{--tw-ring-color:var(--primary)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-offset-2{outline-offset:2px}.outline-border{outline-color:var(--border)}.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-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,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-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-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\,transform\]{transition-property:margin,opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[stroke-dasharray\]{transition-property:stroke-dasharray;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-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}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-dashed{--tw-outline-style:dashed;outline-style:dashed}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[overflow-anchor\:none\]{overflow-anchor:none}.\[view-transition-name\:oa-brand\]{view-transition-name:oa-brand}.\[view-transition-name\:oa-toggle-labels\]{view-transition-name:oa-toggle-labels}.\[view-transition-name\:oa-toggle-thumb\]{view-transition-name:oa-toggle-thumb}.\[view-transition-name\:oa-toggle\]{view-transition-name:oa-toggle}:is(.\*\:flex-1>*){flex:1}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\/edge\:bg-primary:is(:where(.group\/edge):hover *){background-color:var(--primary)}.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *),.group-hover\/prompt\:opacity-100:is(:where(.group\/prompt):hover *),.group-hover\/row\:opacity-100:is(:where(.group\/row):hover *){opacity:1}.group-hover\/screen\:underline:is(:where(.group\/screen):hover *){text-decoration-line:underline}.group-hover\/status\:text-foreground:is(:where(.group\/status):hover *),.group-hover\/status\:text-foreground\/80:is(:where(.group\/status):hover *){color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.group-hover\/status\:text-foreground\/80:is(:where(.group\/status):hover *){color:color-mix(in oklab, var(--foreground) 80%, transparent)}}.group-hover\/sub\:underline:is(:where(.group\/sub):hover *){text-decoration-line:underline}}.group-focus-visible\:opacity-100:is(:where(.group):focus-visible *){opacity:1}.group-focus-visible\/edge\:bg-primary:is(:where(.group\/edge):focus-visible *),.group-active\/edge\:bg-primary:is(:where(.group\/edge):active *){background-color:var(--primary)}.group-has-focus-visible\/status\:text-foreground:is(:where(.group\/status):has(:focus-visible) *),.group-has-focus-visible\/status\:text-foreground\/80:is(:where(.group\/status):has(:focus-visible) *){color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.group-has-focus-visible\/status\:text-foreground\/80:is(:where(.group\/status):has(:focus-visible) *){color:color-mix(in oklab, var(--foreground) 80%, transparent)}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-aria-\[orientation\=horizontal\]\/handle\:inset-x-0:is(:where(.group\/handle)[aria-orientation=horizontal] *){inset-inline:0}.group-aria-\[orientation\=horizontal\]\/handle\:-top-px:is(:where(.group\/handle)[aria-orientation=horizontal] *){top:-1px}.group-aria-\[orientation\=horizontal\]\/handle\:h-\[3px\]:is(:where(.group\/handle)[aria-orientation=horizontal] *){height:3px}.group-aria-\[orientation\=vertical\]\/handle\:inset-y-0:is(:where(.group\/handle)[aria-orientation=vertical] *){inset-block:0}.group-aria-\[orientation\=vertical\]\/handle\:-left-px:is(:where(.group\/handle)[aria-orientation=vertical] *){left:-1px}.group-aria-\[orientation\=vertical\]\/handle\:w-\[3px\]:is(:where(.group\/handle)[aria-orientation=vertical] *){width:3px}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:0!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:0}.group-data-\[separator\=active\]\/handle\:bg-primary:is(:where(.group\/handle)[data-separator=active] *),.group-data-\[separator\=focus\]\/handle\:bg-primary:is(:where(.group\/handle)[data-separator=focus] *),.group-data-\[separator\=hover\]\/handle\:bg-primary:is(:where(.group\/handle)[data-separator=hover] *){background-color:var(--primary)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius-lg)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--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)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--accent-foreground)}}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:var(--spacing)}.peer-\[\:not\(\:empty\)\]\:hidden:is(:where(.peer):not(:empty)~*){display:none}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.first\:mt-0:first-child{margin-top:0}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:pt-0:first-child{padding-top:0}.first\:pl-0:first-child{padding-left:0}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:pr-0:last-child{padding-right:0}.last\:pb-0:last-child{padding-bottom:0}.empty\:hidden:empty{display:none}.focus-within\:border-muted-foreground\/40:focus-within{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.focus-within\:border-muted-foreground\/40:focus-within{border-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.focus-within\:opacity-100:focus-within{opacity:1}.focus-within\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-\[var\(--color-primary\)\]:focus-within{--tw-ring-color:var(--color-primary)}@media (hover:hover){.hover\:border-muted-foreground\/40:hover{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-muted-foreground\/40:hover{border-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.hover\:border-primary\/50:hover{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--primary) 50%, transparent)}}.hover\:bg-\[var\(--color-accent\)\]:hover{background-color:var(--color-accent)}.hover\:bg-\[var\(--color-muted\)\]:hover{background-color:var(--color-muted)}.hover\:bg-accent:hover,.hover\:bg-accent\/40:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/40:hover{background-color:color-mix(in oklab, var(--accent) 40%, transparent)}}.hover\:bg-accent\/60:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/60:hover{background-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.hover\:bg-background:hover{background-color:var(--background)}.hover\:bg-foreground\/5:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-foreground\/5:hover{background-color:color-mix(in oklab, var(--foreground) 5%, transparent)}}.hover\:bg-foreground\/15:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-foreground\/15:hover{background-color:color-mix(in oklab, var(--foreground) 15%, transparent)}}.hover\:bg-foreground\/90:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-foreground\/90:hover{background-color:color-mix(in oklab, var(--foreground) 90%, transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-muted-foreground\/70:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted-foreground\/70:hover{background-color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.hover\:bg-primary\/15:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/15:hover{background-color:color-mix(in oklab, var(--primary) 15%, transparent)}}.hover\:bg-sidebar-accent:hover,.hover\:bg-sidebar-accent\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-sidebar-accent\/50:hover{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.hover\:bg-sidebar-accent\/60:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-sidebar-accent\/60:hover{background-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.hover\:text-\[var\(--color-accent-foreground\)\]:hover{color:var(--color-accent-foreground)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-danger:hover{color:var(--danger)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-sidebar-accent-foreground:hover{color:var(--accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:underline-offset-2:hover{text-underline-offset:2px}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus\:border-primary:focus{border-color:var(--primary)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:bg-accent:focus-visible{background-color:var(--accent)}.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-\[var\(--color-primary\)\]:focus-visible{--tw-ring-color:var(--color-primary)}.focus-visible\:ring-primary:focus-visible,.focus-visible\:ring-sidebar-ring:focus-visible{--tw-ring-color:var(--primary)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.active\:bg-sidebar-accent:active{background-color:var(--accent)}.active\:text-sidebar-accent-foreground:active{color:var(--accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-0:disabled{opacity:0}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:opacity-100:disabled{opacity:1}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\[data-disabled\]\]\:opacity-50:has([data-disabled]){opacity:.5}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-\[current\=page\]\:bg-sidebar-accent[aria-current=page]{background-color:var(--accent)}.aria-\[current\=page\]\:font-medium[aria-current=page]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.aria-\[orientation\=horizontal\]\:h-px[aria-orientation=horizontal]{height:1px}.aria-\[orientation\=vertical\]\:w-px[aria-orientation=vertical]{width:1px}.data-autoscrolling\:scrollbar-quiet[data-autoscrolling]{scrollbar-color:transparent transparent}.data-\[active\=false\]\:pointer-events-none[data-active=false]{pointer-events:none}.data-\[active\=false\]\:opacity-0[data-active=false]{opacity:0}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--accent-foreground)}.data-\[active\=true\]\:opacity-100[data-active=true]{opacity:1}.data-\[checked\]\:translate-x-4[data-checked]{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[checked\]\:border-primary[data-checked]{border-color:var(--primary)}.data-\[checked\]\:bg-primary[data-checked]{background-color:var(--primary)}.data-\[checked\]\:bg-primary-foreground[data-checked]{background-color:var(--primary-foreground)}.data-\[checked\]\:text-primary-foreground[data-checked]{color:var(--primary-foreground)}.data-\[direction\=end\]\:bottom-3[data-direction=end]{bottom:calc(var(--spacing) * 3)}.data-\[direction\=end\]\:bottom-\[calc\(var\(--chat-bottom\,0px\)\+1\.25rem\)\][data-direction=end]{bottom:calc(var(--chat-bottom,0px) + 1.25rem)}.data-\[direction\=start\]\:top-3[data-direction=start]{top:calc(var(--spacing) * 3)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:bg-accent[data-highlighted]{background-color:var(--accent)}.data-\[highlighted\]\:text-accent-foreground[data-highlighted]{color:var(--accent-foreground)}.data-\[popup-open\]\:bg-\[var\(--color-accent\)\][data-popup-open]{background-color:var(--color-accent)}.data-\[popup-open\]\:bg-accent[data-popup-open]{background-color:var(--accent)}.data-\[popup-open\]\:bg-muted[data-popup-open]{background-color:var(--muted)}.data-\[popup-open\]\:bg-sidebar-accent[data-popup-open]{background-color:var(--accent)}.data-\[popup-open\]\:text-\[var\(--color-accent-foreground\)\][data-popup-open]{color:var(--color-accent-foreground)}.data-\[popup-open\]\:text-accent-foreground[data-popup-open]{color:var(--accent-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--accent-foreground)}}@media not all and (width>=48rem){.max-md\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.max-md\:order-1{order:1}.max-md\:order-2{order:2}.max-md\:ml-0{margin-left:0}.max-md\:min-h-10{min-height:calc(var(--spacing) * 10)}.max-md\:w-auto{width:auto}.max-md\:min-w-0{min-width:0}.max-md\:flex-1{flex:1}.max-md\:basis-full{flex-basis:100%}.max-md\:flex-wrap{flex-wrap:wrap}.max-md\:gap-x-2{column-gap:calc(var(--spacing) * 2)}.max-md\:gap-x-3{column-gap:calc(var(--spacing) * 3)}.max-md\:gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.max-md\:gap-y-1{row-gap:var(--spacing)}.max-md\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.max-md\:p-4{padding:calc(var(--spacing) * 4)}.max-md\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.max-md\:pl-11{padding-left:calc(var(--spacing) * 11)}.max-md\:opacity-100{opacity:1}}@media not all and (width>=40rem){.max-sm\:ml-0{margin-left:0}.max-sm\:hidden{display:none}.max-sm\:max-w-none{max-width:none}.max-sm\:shrink-0{flex-shrink:0}.max-sm\:\[scrollbar-width\:none\]{scrollbar-width:none}.max-sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-sm\:flex-col{flex-direction:column}.max-sm\:overflow-x-auto{overflow-x:auto}.max-sm\:\[mask-image\:linear-gradient\(to_right\,\#000_85\%\,transparent\)\]{-webkit-mask-image:linear-gradient(90deg,#000 85%,#0000);mask-image:linear-gradient(90deg,#000 85%,#0000)}.max-sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (width>=40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:block{display:block}.md\:flex{display:flex}.md\:h-10{height:calc(var(--spacing) * 10)}.md\:max-w-\[50\%\]{max-width:50%}.md\:flex-auto{flex:auto}.md\:shrink-0{flex-shrink:0}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:gap-2{gap:calc(var(--spacing) * 2)}.md\:gap-3{gap:calc(var(--spacing) * 3)}.md\:pl-4{padding-left:calc(var(--spacing) * 4)}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:0}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:var(--radius-xl)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--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)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing) * 2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (width>=64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@container (width>=42rem){.\@2xl\:col-span-6{grid-column:span 6/span 6}}@container (width>=64rem){.\@5xl\:col-span-3{grid-column:span 3/span 3}.\@5xl\:col-span-4{grid-column:span 4/span 4}.\@5xl\:col-span-8{grid-column:span 8/span 8}.\@5xl\:col-span-9{grid-column:span 9/span 9}}.dark\:hidden:where(.dark,.dark *){display:none}.dark\:inline-flex:where(.dark,.dark *){display:inline-flex}.dark\:\[--accent\:\#374145\]:where(.dark,.dark *){--accent:#374145}.dark\:\[--color-accent\:\#374145\]:where(.dark,.dark *){--color-accent:#374145}@media (pointer:coarse){.pointer-coarse\:right-\(--chat-scroll-bar\){right:var(--chat-scroll-bar)}.pointer-coarse\:flex{display:flex}.pointer-coarse\:hidden{display:none}.pointer-coarse\:pb-\(--chat-bar\){padding-bottom:var(--chat-bar)}.pointer-coarse\:pl-0{padding-left:0}.pointer-coarse\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.\[\&_tbody_tr\:last-child_td\]\:border-b-0 tbody tr:last-child td{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\]\:border-border tr{border-color:var(--border)}.\[\&_tr\:hover\]\:bg-transparent tr:hover{background-color:#0000}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-moz-range-thumb\]\:h-3\.5::-moz-range-thumb{height:calc(var(--spacing) * 3.5)}.\[\&\:\:-moz-range-thumb\]\:w-3\.5::-moz-range-thumb{width:calc(var(--spacing) * 3.5)}.\[\&\:\:-moz-range-thumb\]\:rounded-full::-moz-range-thumb{border-radius:3.40282e38px}.\[\&\:\:-moz-range-thumb\]\:border::-moz-range-thumb{border-style:var(--tw-border-style);border-width:1px}.\[\&\:\:-moz-range-thumb\]\:border-none::-moz-range-thumb{--tw-border-style:none;border-style:none}.\[\&\:\:-moz-range-thumb\]\:border-background::-moz-range-thumb{border-color:var(--background)}.\[\&\:\:-moz-range-thumb\]\:bg-foreground::-moz-range-thumb{background-color:var(--foreground)}.\[\&\:\:-moz-range-thumb\]\:shadow-sm::-moz-range-thumb{--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)}.\[\&\:\:-moz-range-track\]\:border-none::-moz-range-track{--tw-border-style:none;border-style:none}.\[\&\:\:-moz-range-track\]\:bg-transparent::-moz-range-track{background-color:#0000}.\[\&\:\:-webkit-slider-runnable-track\]\:bg-transparent::-webkit-slider-runnable-track{background-color:#0000}.\[\&\:\:-webkit-slider-thumb\]\:h-3\.5::-webkit-slider-thumb{height:calc(var(--spacing) * 3.5)}.\[\&\:\:-webkit-slider-thumb\]\:w-3\.5::-webkit-slider-thumb{width:calc(var(--spacing) * 3.5)}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{appearance:none}.\[\&\:\:-webkit-slider-thumb\]\:rounded-full::-webkit-slider-thumb{border-radius:3.40282e38px}.\[\&\:\:-webkit-slider-thumb\]\:border::-webkit-slider-thumb{border-style:var(--tw-border-style);border-width:1px}.\[\&\:\:-webkit-slider-thumb\]\:border-background::-webkit-slider-thumb{border-color:var(--background)}.\[\&\:\:-webkit-slider-thumb\]\:bg-foreground::-webkit-slider-thumb{background-color:var(--foreground)}.\[\&\:\:-webkit-slider-thumb\]\:shadow-sm::-webkit-slider-thumb{--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)}.\[\&\:not\(\:first-child\)\]\:pt-2:not(:first-child){padding-top:calc(var(--spacing) * 2)}.\[\&\:not\(\:last-child\)\]\:mb-\[21px\]:not(:last-child){margin-bottom:21px}.\[\&\>\[data-slot\=radio-group-item\]\]\:mt-0\.5>[data-slot=radio-group-item]{margin-top:calc(var(--spacing) * .5)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>li\]\:pl-1>li{padding-left:var(--spacing)}.\[\&\>li\]\:pl-\[7px\]>li{padding-left:7px}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:size-full>svg{width:100%;height:100%}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--accent-foreground)}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-app:"IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;--font-code:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--font-document:"Source Serif 4", ui-serif, Georgia, serif;--background:#fafbf9;--sidebar:#f3f5f2;--foreground:#3a4248;--card:#fff;--card-foreground:#3a4248;--muted:#f3f5f2;--muted-foreground:#66756c;--border:#e3e7e1;--primary:#2b7ba5;--primary-foreground:#fff;--accent:#e9ede6;--accent-foreground:#3a4248;--success:#6f7f00;--warning:#9a6b00;--danger:#d1403d;--info:#2b7ba5;--merged:#a24f8c;--code-plain:#3a4248;--code-comment:#7d8a7f;--code-punctuation:#5c6a72;--code-keyword:#a24f8c;--code-operator:#3a4248;--code-string:#6f7f00;--code-number:#2d8a66;--code-function:#2b7ba5;--code-property:#d1403d;--code-attribute:#c8423f;--code-parameter:#c25f12;--code-type:#9a6b00;--logo-1:#0a0a0a;--logo-2:#171717;--logo-3:#262626;--logo-4:#404040;--logo-5:#525252;--logo-6:#737373}.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#171b1d;--sidebar:#1c2124;--foreground:#d3c6aa;--card:#1c2124;--card-foreground:#d3c6aa;--muted:#262d31;--muted-foreground:#9da9a0;--border:#30383c;--primary:#7fbbb3;--primary-foreground:#171b1d;--accent:#262d31;--accent-foreground:#d3c6aa;--success:#a7c080;--warning:#dbbc7f;--danger:#e67e80;--info:#7fbbb3;--merged:#d699b6;--code-plain:#d3c6aa;--code-comment:#859289;--code-punctuation:#9da9a0;--code-keyword:#d699b6;--code-operator:#d3c6aa;--code-string:#a7c080;--code-number:#83c092;--code-function:#7fbbb3;--code-property:#e67e80;--code-attribute:#e3787a;--code-parameter:#e69875;--code-type:#dbbc7f;--logo-1:#fafafa;--logo-2:#ededed;--logo-3:#d4d4d4;--logo-4:#a3a3a3;--logo-5:#8a8a8a;--logo-6:#737373}:root[data-palette=neutral]:not(.dark){--background:oklch(100% 0 0);--sidebar:oklch(98.5% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--border:oklch(92.2% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--success:var(--color-green-600);--warning:var(--color-amber-600);--danger:var(--color-red-600);--info:var(--color-blue-600);--merged:var(--color-violet-600);--code-plain:#14181f;--code-comment:#6e7687;--code-punctuation:#2b303b;--code-keyword:#8100c2;--code-operator:#14181f;--code-string:green;--code-number:teal;--code-function:#0051c2;--code-property:#b80a18;--code-attribute:#bd0f1e;--code-parameter:#b84f05;--code-type:#b34a00}:root.dark[data-palette=neutral]{--background:oklch(14.5% 0 0);--sidebar:oklch(20.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--border:oklch(100% 0 0/.1);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--success:var(--color-green-400);--warning:var(--color-amber-400);--danger:var(--color-red-400);--info:var(--color-blue-400);--merged:var(--color-violet-400);--code-plain:#eaecf0;--code-comment:#818898;--code-punctuation:#d3d7de;--code-keyword:#cc7bf4;--code-operator:#eaecf0;--code-string:#9be963;--code-number:#5eeded;--code-function:#70b8ff;--code-property:#f47b85;--code-attribute:#f0757f;--code-parameter:#f7ab5f;--code-type:#fbad60}:root:not([data-palette])[data-accent=green]{--primary:#6f7f00}:root.dark:not([data-palette])[data-accent=green]{--primary:#a7c080}:root:not([data-palette])[data-accent=aqua]{--primary:#2d8a66}:root.dark:not([data-palette])[data-accent=aqua]{--primary:#83c092}:root:not([data-palette])[data-accent=yellow]{--primary:#9a6b00}:root.dark:not([data-palette])[data-accent=yellow]{--primary:#dbbc7f}:root:not([data-palette])[data-accent=orange]{--primary:#c25f12}:root.dark:not([data-palette])[data-accent=orange]{--primary:#e69875}:root:not([data-palette])[data-accent=red]{--primary:#d1403d}:root.dark:not([data-palette])[data-accent=red]{--primary:#e67e80}:root:not([data-palette])[data-accent=purple]{--primary:#a24f8c}:root.dark:not([data-palette])[data-accent=purple]{--primary:#d699b6}:root[data-palette=neutral][data-accent=amber]{--primary:var(--color-amber-600);--primary-foreground:var(--color-neutral-950)}:root.dark[data-palette=neutral][data-accent=amber]{--primary:var(--color-amber-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=blue]{--primary:var(--color-blue-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=blue]{--primary:var(--color-blue-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=cyan]{--primary:var(--color-cyan-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=cyan]{--primary:var(--color-cyan-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=emerald]{--primary:var(--color-emerald-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=emerald]{--primary:var(--color-emerald-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=fuchsia]{--primary:var(--color-fuchsia-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=fuchsia]{--primary:var(--color-fuchsia-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=green]{--primary:var(--color-green-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=green]{--primary:var(--color-green-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=indigo]{--primary:var(--color-indigo-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=indigo]{--primary:var(--color-indigo-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=lime]{--primary:var(--color-lime-600);--primary-foreground:var(--color-neutral-950)}:root.dark[data-palette=neutral][data-accent=lime]{--primary:var(--color-lime-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=orange]{--primary:var(--color-orange-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=orange]{--primary:var(--color-orange-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=pink]{--primary:var(--color-pink-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=pink]{--primary:var(--color-pink-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=purple]{--primary:var(--color-purple-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=purple]{--primary:var(--color-purple-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=red]{--primary:var(--color-red-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=red]{--primary:var(--color-red-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=rose]{--primary:var(--color-rose-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=rose]{--primary:var(--color-rose-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=sky]{--primary:var(--color-sky-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=sky]{--primary:var(--color-sky-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=teal]{--primary:var(--color-teal-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=teal]{--primary:var(--color-teal-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=violet]{--primary:var(--color-violet-600);--primary-foreground:#fff}:root.dark[data-palette=neutral][data-accent=violet]{--primary:var(--color-violet-400);--primary-foreground:var(--color-neutral-950)}:root[data-palette=neutral][data-accent=yellow]{--primary:var(--color-yellow-600);--primary-foreground:var(--color-neutral-950)}:root.dark[data-palette=neutral][data-accent=yellow]{--primary:var(--color-yellow-400);--primary-foreground:var(--color-neutral-950)}:root{--menu:var(--card)}@supports (color:color-mix(in lab, red, red)){:root{--menu:color-mix(in oklab, var(--card) 85%, transparent)}}:root.dark{--menu:var(--muted)}@supports (color:color-mix(in lab, red, red)){:root.dark{--menu:color-mix(in oklab, var(--muted) 85%, transparent)}}.menu-surface{--accent:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.menu-surface{--accent:color-mix(in oklab, var(--foreground) 10%, transparent)}}.menu-surface{--accent-foreground:var(--foreground);--border:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.menu-surface{--border:color-mix(in oklab, var(--foreground) 10%, transparent)}}.menu-surface{background-color:var(--menu);color:var(--foreground)}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html[data-pinned],html[data-pinned] body{overscroll-behavior:none;height:100%;overflow:hidden}@media (pointer:coarse){input,textarea,select,[contenteditable=true]{font-size:max(16px,1em)!important}}.rail-title{white-space:nowrap;overflow:hidden}.rail-title.is-overflowing{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 3rem),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 3rem),#0000)}.rail-fade{opacity:0}@supports (animation-timeline:scroll()){.rail-fade{animation:1ms linear both rail-fade-appear;animation-timeline:scroll(y);animation-range:0 1.5rem}}@keyframes rail-fade-appear{to{opacity:1}}.text-shimmer{--shimmer-ink:var(--muted-foreground);--shimmer-peak:var(--shimmer-ink)}@supports (color:color-mix(in lab, red, red)){.text-shimmer{--shimmer-peak:color-mix(in srgb, var(--shimmer-ink) 30%, white)}}.text-shimmer{background:linear-gradient(120deg, var(--shimmer-ink) 37.5%, var(--shimmer-peak) 41%, var(--shimmer-peak) 44%, var(--shimmer-peak) 47%, var(--shimmer-peak) 50%, var(--shimmer-peak) 53%, var(--shimmer-peak) 56%, var(--shimmer-peak) 59%, var(--shimmer-ink) 62.5%) 83.333% 0 / 400% 100%}@supports (color:color-mix(in lab, red, red)){.text-shimmer{background:linear-gradient(120deg, var(--shimmer-ink) 37.5%, color-mix(in srgb, var(--shimmer-peak) 16%, var(--shimmer-ink)) 41%, color-mix(in srgb, var(--shimmer-peak) 46%, var(--shimmer-ink)) 44%, color-mix(in srgb, var(--shimmer-peak) 83%, var(--shimmer-ink)) 47%, var(--shimmer-peak) 50%, color-mix(in srgb, var(--shimmer-peak) 83%, var(--shimmer-ink)) 53%, color-mix(in srgb, var(--shimmer-peak) 46%, var(--shimmer-ink)) 56%, color-mix(in srgb, var(--shimmer-peak) 16%, var(--shimmer-ink)) 59%, var(--shimmer-ink) 62.5%) 83.333% 0 / 400% 100%}}.text-shimmer{color:#0000;-webkit-background-clip:text;background-clip:text;animation:3s linear infinite text-shimmer}@keyframes text-shimmer{0%,15%{background-position:83.333% 0;animation-timing-function:cubic-bezier(.714,.121,.211,.888)}85%,to{background-position:16.667% 0}}.dot-wave{color:var(--primary);gap:3px;display:inline-flex}.dot-wave>span{background:currentColor;border-radius:9999px;width:4px;height:4px;animation:1.2s ease-in-out infinite dot-wave}.dot-wave>span:nth-child(2){animation-delay:.15s}.dot-wave>span:nth-child(3){animation-delay:.3s}@keyframes dot-wave{0%,60%,to{opacity:.35;transform:translateY(1px)}30%{opacity:1;transform:translateY(-1px)}}.dots-leave{animation:.16s cubic-bezier(.2,0,0,1) forwards dots-leave;overflow:hidden}@keyframes dots-leave{to{opacity:0;width:0;margin-right:-.5rem}}.morph-in{animation:.18s cubic-bezier(.2,0,0,1) morph-in}@keyframes morph-in{0%{opacity:0;filter:blur(2px);translate:0 2px}}[data-slot=message-scroller-item]:hover .turn-footer,[data-slot=message-scroller-item]:not([data-prompt]):hover~:not(:hover~[data-prompt]~*) .turn-footer{opacity:1}.bubble-in{animation:.3s cubic-bezier(.34,1.4,.64,1) bubble-in}.letter-in{animation:90ms linear both letter-in}.word-in{animation:.5s ease-out both word-in}@keyframes word-in{0%{opacity:0}}@keyframes letter-in{0%{opacity:0;filter:blur(6px)}}@keyframes bubble-in{0%{opacity:0;translate:0 8px}}.cross-fade-out{animation:.16s cubic-bezier(.2,0,0,1) forwards cross-fade-out}@keyframes cross-fade-out{to{opacity:0;translate:0 -3px}}.cross-fade-in{animation:.16s cubic-bezier(.2,0,0,1) cross-fade-in}@keyframes cross-fade-in{0%{opacity:0;translate:0 3px}}@media (prefers-reduced-motion:reduce){.cross-fade-out,.dots-leave{display:none}.text-shimmer{color:inherit;background:0 0;animation:none}.dot-wave>span,.morph-in,.bubble-in,.letter-in,.word-in,.cross-fade-in{animation:none}}.pe-prose{white-space:pre-wrap;word-break:break-word}.pe-prose p{margin:0}.pe-prose p+p,.pe-prose ul,.pe-prose ol,.pe-prose pre,.pe-prose blockquote{margin-top:.4rem}.pe-prose ul{padding-left:1.25rem;list-style:outside}.pe-prose ol{padding-left:1.25rem;list-style:decimal}.pe-prose h1,.pe-prose h2,.pe-prose h3{margin-top:.5rem;font-weight:600}.pe-prose code{background:var(--muted);border-radius:.25rem;padding:.05rem .3rem;font-size:.85em}.pe-prose pre{background:var(--muted);border-radius:.375rem;padding:.5rem .6rem;overflow-x:auto}.pe-prose pre code{background:0 0;padding:0}.pe-prose blockquote{border-left:2px solid var(--border);color:var(--muted-foreground);padding-left:.6rem}.pe-token{font-family:var(--font-mono);white-space:nowrap;border:1px solid #0000;border-radius:.3rem;align-items:center;padding:0 .3rem;font-size:.8em;line-height:1.4;display:inline-flex}.pe-token[data-token=project]{background:var(--accent);color:var(--accent-foreground);border-color:var(--border)}.pe-token[data-token=file]{background:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.pe-token[data-token=file]{background:color-mix(in oklab, var(--muted-foreground) 12%, transparent)}}.pe-token[data-token=file]{color:var(--foreground);border-color:var(--border)}.ProseMirror-selectednode.pe-token{outline:2px solid var(--primary)}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}::view-transition-group(oa-toggle-thumb){animation-duration:.25s;animation-timing-function:ease-in-out}}@property --tw-border-spacing-x{syntax:"<length>";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"<length>";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}
|