rivet-design 0.26.2 → 0.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/agent-variants/DirectionRefReservations.d.ts +11 -0
  2. package/dist/agent-variants/DirectionRefReservations.js +47 -0
  3. package/dist/agent-variants/PreviewRuntime.js +20 -7
  4. package/dist/agent-variants/SessionStore.d.ts +10 -1
  5. package/dist/agent-variants/SessionStore.js +25 -2
  6. package/dist/agent-variants/WorkItemRequestTimes.d.ts +6 -0
  7. package/dist/agent-variants/WorkItemRequestTimes.js +21 -0
  8. package/dist/agent-variants/WorktreeOrchestrator.d.ts +2 -1
  9. package/dist/agent-variants/WorktreeOrchestrator.js +92 -78
  10. package/dist/agent-variants/contracts.d.ts +120 -116
  11. package/dist/agent-variants/existingStaticEntry.d.ts +34 -0
  12. package/dist/agent-variants/existingStaticEntry.js +136 -0
  13. package/dist/agent-variants/staticPreviewFiles.js +1 -1
  14. package/dist/agent-variants/variant-project-runtime.d.ts +2 -1
  15. package/dist/agent-variants/variantsTelemetry.d.ts +8 -0
  16. package/dist/agent-variants/variantsTelemetry.js +5 -0
  17. package/dist/agent-variants/workItemInput.d.ts +168 -146
  18. package/dist/agent-variants/workItemInput.js +12 -1
  19. package/dist/cli/commands/directionTarget.d.ts +23 -0
  20. package/dist/cli/commands/directionTarget.js +87 -0
  21. package/dist/cli/commands/mcpServe.js +1 -0
  22. package/dist/cli/commands/open.js +28 -4
  23. package/dist/cli/commands/serve.js +2 -0
  24. package/dist/cli/commands/variants.js +36 -43
  25. package/dist/cli/envelope.d.ts +1 -1
  26. package/dist/cli/envelope.js +1 -0
  27. package/dist/cli/handoff.d.ts +1 -0
  28. package/dist/cli/handoff.js +20 -4
  29. package/dist/cli/projectRuntimeUpgrade.d.ts +11 -0
  30. package/dist/cli/projectRuntimeUpgrade.js +43 -11
  31. package/dist/cli/router.js +1 -0
  32. package/dist/cli/telemetry.d.ts +10 -0
  33. package/dist/cli/telemetry.js +37 -1
  34. package/dist/config/pluginMetrics.js +38 -0
  35. package/dist/index.d.ts +19 -0
  36. package/dist/index.js +14 -5
  37. package/dist/mcp/explorationSchema.js +1 -1
  38. package/dist/mcp/getExploration.js +11 -5
  39. package/dist/proxy-middleware/proxy-config.js +7 -0
  40. package/dist/routes/agentVariants.js +4 -0
  41. package/dist/routes/cli.js +10 -1
  42. package/dist/routes/library/middleware.js +11 -5
  43. package/dist/server.js +20 -6
  44. package/dist/services/DependencyPreparationService.js +57 -19
  45. package/dist/services/GuidanceVerifierRunner.js +4 -4
  46. package/dist/services/ProjectLibrary.d.ts +4 -1
  47. package/dist/services/ProjectLibrary.js +14 -9
  48. package/dist/services/ProjectPackageManager.d.ts +5 -0
  49. package/dist/services/ProjectPackageManager.js +33 -11
  50. package/dist/services/ProjectRuntimeService.d.ts +8 -0
  51. package/dist/services/ProjectRuntimeService.js +15 -2
  52. package/dist/services/TelemetryService.d.ts +13 -2
  53. package/dist/services/TelemetryService.js +29 -0
  54. package/dist/services/VariantHistoryService.d.ts +8 -0
  55. package/dist/services/VariantHistoryService.js +40 -0
  56. package/dist/services/WorktreeManager.d.ts +1 -0
  57. package/dist/services/WorktreeManager.js +17 -0
  58. package/dist/services/createAgentVariantsOrchestrator.js +9 -2
  59. package/dist/services/directionRefs.d.ts +21 -0
  60. package/dist/services/directionRefs.js +148 -0
  61. package/dist/services/profiles/DesignProfiles.js +16 -8
  62. package/dist/services/projectDirections.d.ts +22 -0
  63. package/dist/services/projectDirections.js +38 -0
  64. package/dist/types/direction-ref.d.ts +36 -0
  65. package/dist/types/direction-ref.js +3 -0
  66. package/dist/types/guidance-verifier.d.ts +7 -5
  67. package/dist/types/guidance-verifier.js +14 -1
  68. package/dist/types/variant-history.d.ts +3 -1
  69. package/dist/utils/devServerError.d.ts +5 -0
  70. package/dist/utils/devServerError.js +4 -0
  71. package/dist/utils/failureReason.d.ts +16 -0
  72. package/dist/utils/failureReason.js +106 -0
  73. package/dist/utils/hostedLogPrivacy.d.ts +1 -0
  74. package/dist/utils/hostedLogPrivacy.js +10 -4
  75. package/dist/utils/skills/claude-skill.d.ts +1 -1
  76. package/dist/utils/skills/claude-skill.js +1 -1
  77. package/dist/utils/skills/cli-guidance.d.ts +1 -1
  78. package/dist/utils/skills/cli-guidance.js +7 -6
  79. package/dist/utils/skills/cursor-rules.d.ts +1 -1
  80. package/dist/utils/skills/cursor-rules.js +1 -1
  81. package/dist/utils/subprocessEnvironment.d.ts +1 -1
  82. package/dist/utils/subprocessEnvironment.js +0 -1
  83. package/package.json +4 -4
  84. package/src/ui/dist/assets/LibraryEntry-BZ5EdFgA.js +37 -0
  85. package/src/ui/dist/assets/main-MepMmTwb.css +1 -0
  86. package/src/ui/dist/assets/main-RriU35pI.js +497 -0
  87. package/src/ui/dist/index.html +2 -2
  88. package/dist/services/StaticPreviewServer.d.ts +0 -8
  89. package/dist/services/StaticPreviewServer.js +0 -207
  90. package/src/ui/dist/assets/LibraryEntry-92R_T-Xa.js +0 -37
  91. package/src/ui/dist/assets/main-D0UmAaUe.css +0 -1
  92. package/src/ui/dist/assets/main-DgEfJvYu.js +0 -497
  93. package/src/ui/dist/fonts/Goldman-Bold.woff2 +0 -0
  94. package/src/ui/dist/fonts/Goldman-Regular.woff2 +0 -0
@@ -7,8 +7,8 @@
7
7
  <link rel="icon" type="image/x-icon" href="/favicon.ico" />
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
9
  <title>Rivet - The visual editor for design</title>
10
- <script type="module" crossorigin src="/assets/main-DgEfJvYu.js"></script>
11
- <link rel="stylesheet" crossorigin href="/assets/main-D0UmAaUe.css">
10
+ <script type="module" crossorigin src="/assets/main-RriU35pI.js"></script>
11
+ <link rel="stylesheet" crossorigin href="/assets/main-MepMmTwb.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="root"></div>
@@ -1,8 +0,0 @@
1
- import { ChildProcess } from 'child_process';
2
- export declare function startStaticPreviewServer(args: {
3
- rootPath: string;
4
- port: number;
5
- host?: string;
6
- timeoutMs?: number;
7
- }): Promise<ChildProcess>;
8
- //# sourceMappingURL=StaticPreviewServer.d.ts.map
@@ -1,207 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.startStaticPreviewServer = startStaticPreviewServer;
4
- const child_process_1 = require("child_process");
5
- const logger_1 = require("../utils/logger");
6
- const subprocessEnvironment_1 = require("../utils/subprocessEnvironment");
7
- const log = (0, logger_1.createLogger)('static-preview-server');
8
- async function startStaticPreviewServer(args) {
9
- const host = args.host ?? '127.0.0.1';
10
- const timeoutMs = args.timeoutMs ?? 10_000;
11
- const proc = (0, child_process_1.spawn)(process.execPath, ['-e', WORKER_SOURCE], {
12
- env: {
13
- ...(0, subprocessEnvironment_1.subprocessEnvironment)('staticPreview'),
14
- STATIC_PREVIEW_ROOT: args.rootPath,
15
- STATIC_PREVIEW_PORT: String(args.port),
16
- STATIC_PREVIEW_HOST: host,
17
- },
18
- stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
19
- detached: false,
20
- });
21
- proc.stdout?.on('data', (data) => {
22
- log.debug(`[static-preview:${args.port}] ${data.toString().trim()}`);
23
- });
24
- proc.stderr?.on('data', (data) => {
25
- log.debug(`[static-preview:${args.port}] ${data.toString().trim()}`);
26
- });
27
- return new Promise((resolve, reject) => {
28
- const timer = setTimeout(() => {
29
- cleanup();
30
- try {
31
- proc.kill('SIGTERM');
32
- }
33
- catch { }
34
- reject(new Error(`Static preview server on port ${args.port} did not become ready within ${timeoutMs}ms`));
35
- }, timeoutMs);
36
- const onMessage = (msg) => {
37
- if (msg && typeof msg === 'object' && msg.type === 'ready') {
38
- cleanup();
39
- resolve(proc);
40
- }
41
- else if (msg && typeof msg === 'object' && msg.type === 'error') {
42
- const message = msg.message ?? 'unknown error';
43
- cleanup();
44
- try {
45
- proc.kill('SIGTERM');
46
- }
47
- catch { }
48
- reject(new Error(`Static preview server failed to start: ${message}`));
49
- }
50
- };
51
- const onExit = (code, signal) => {
52
- cleanup();
53
- reject(new Error(`Static preview server exited before ready (code=${code}, signal=${signal})`));
54
- };
55
- const onError = (err) => {
56
- cleanup();
57
- reject(err);
58
- };
59
- function cleanup() {
60
- clearTimeout(timer);
61
- proc.off('message', onMessage);
62
- proc.off('exit', onExit);
63
- proc.off('error', onError);
64
- }
65
- proc.on('message', onMessage);
66
- proc.on('exit', onExit);
67
- proc.on('error', onError);
68
- });
69
- }
70
- const WORKER_SOURCE = `
71
- const http = require('http');
72
- const fs = require('fs');
73
- const path = require('path');
74
- const url = require('url');
75
-
76
- const root = path.resolve(process.env.STATIC_PREVIEW_ROOT || '.');
77
- const port = Number(process.env.STATIC_PREVIEW_PORT || 0);
78
- const host = process.env.STATIC_PREVIEW_HOST || '127.0.0.1';
79
-
80
- const MIME = {
81
- '.html': 'text/html; charset=utf-8',
82
- '.htm': 'text/html; charset=utf-8',
83
- '.css': 'text/css; charset=utf-8',
84
- '.js': 'application/javascript; charset=utf-8',
85
- '.mjs': 'application/javascript; charset=utf-8',
86
- '.json': 'application/json; charset=utf-8',
87
- '.svg': 'image/svg+xml',
88
- '.png': 'image/png',
89
- '.jpg': 'image/jpeg',
90
- '.jpeg': 'image/jpeg',
91
- '.gif': 'image/gif',
92
- '.webp': 'image/webp',
93
- '.ico': 'image/x-icon',
94
- '.woff': 'font/woff',
95
- '.woff2': 'font/woff2',
96
- '.ttf': 'font/ttf',
97
- '.otf': 'font/otf',
98
- '.glb': 'model/gltf-binary',
99
- '.gltf': 'model/gltf+json',
100
- '.txt': 'text/plain; charset=utf-8',
101
- '.map': 'application/json; charset=utf-8',
102
- };
103
-
104
- function send(res, status, body, headers) {
105
- res.writeHead(status, Object.assign({ 'Cache-Control': 'no-store' }, headers || {}));
106
- res.end(body);
107
- }
108
-
109
- function resolveTarget(reqPath) {
110
- const decoded = decodeURIComponent(reqPath || '/');
111
- const resolved = path.resolve(root, '.' + decoded);
112
- if (resolved !== root && !resolved.startsWith(root + path.sep)) return null;
113
- return resolved;
114
- }
115
-
116
- // Lexical containment isn't enough — fs.readFile follows symlinks. The
117
- // committed project at destinationPath can legitimately contain files that
118
- // the agent placed there, and a prompt-injected variant could plant a
119
- // symlink (e.g. avatar.glb -> ~/.ssh/id_rsa) that the static server would
120
- // then read and serve. After lexical resolve, realpath the target and
121
- // re-check containment against the realpath'd root.
122
- const realRoot = fs.realpathSync(root);
123
-
124
- function isInsideRoot(realTarget) {
125
- return realTarget === realRoot || realTarget.startsWith(realRoot + path.sep);
126
- }
127
-
128
- const server = http.createServer((req, res) => {
129
- try {
130
- const parsed = url.parse(req.url || '/');
131
- let target = resolveTarget(parsed.pathname || '/');
132
- if (target === null) {
133
- send(res, 403, 'Forbidden');
134
- return;
135
- }
136
- fs.stat(target, (err, stat) => {
137
- if (err || !stat) {
138
- // Single-document fallback: every unknown route resolves to index.html
139
- // so client-side anchor routing works. Realpath-check the fallback
140
- // and apply the SAME hardlink check the main path uses — without
141
- // this, a hardlinked index.html that the main path would reject
142
- // could still be served by requesting any unknown URL.
143
- const fallback = path.join(root, 'index.html');
144
- fs.realpath(fallback, (rpErr, realFallback) => {
145
- if (rpErr || !isInsideRoot(realFallback)) {
146
- send(res, 404, 'Not found');
147
- return;
148
- }
149
- fs.stat(realFallback, (sErr, st) => {
150
- if (sErr || !st || st.nlink !== 1) {
151
- send(res, 404, 'Not found');
152
- return;
153
- }
154
- fs.readFile(realFallback, (fErr, data) => {
155
- if (fErr) { send(res, 404, 'Not found'); return; }
156
- send(res, 200, data, { 'Content-Type': MIME['.html'] });
157
- });
158
- });
159
- });
160
- return;
161
- }
162
- if (stat.isDirectory()) target = path.join(target, 'index.html');
163
- fs.realpath(target, (rpErr, realTarget) => {
164
- if (rpErr || !isInsideRoot(realTarget)) {
165
- send(res, 404, 'Not found');
166
- return;
167
- }
168
- // Hardlink defense: realpath collapses symlinks but not hardlinks.
169
- // An agent that planted a hardlink at commit time (e.g.
170
- // \`ln /etc/secret avatar.glb\`) would otherwise have it served
171
- // from the committed project. Reject multi-link files —
172
- // legitimate agent-generated assets have nlink === 1.
173
- fs.stat(realTarget, (sErr, st) => {
174
- if (sErr || !st || st.nlink !== 1) {
175
- send(res, 404, 'Not found');
176
- return;
177
- }
178
- fs.readFile(realTarget, (fErr, data) => {
179
- if (fErr) { send(res, 404, 'Not found'); return; }
180
- const ext = path.extname(realTarget).toLowerCase();
181
- send(res, 200, data, { 'Content-Type': MIME[ext] || 'application/octet-stream' });
182
- });
183
- });
184
- });
185
- });
186
- } catch (e) {
187
- send(res, 500, 'Internal error');
188
- }
189
- });
190
-
191
- server.on('error', (err) => {
192
- try { process.send && process.send({ type: 'error', message: String(err && err.message || err) }); } catch (_) {}
193
- process.exit(1);
194
- });
195
-
196
- server.listen(port, host, () => {
197
- try { process.send && process.send({ type: 'ready', port: port, host: host }); } catch (_) {}
198
- });
199
-
200
- function shutdown() {
201
- try { server.close(() => process.exit(0)); } catch (_) { process.exit(0); }
202
- setTimeout(() => process.exit(0), 2000).unref();
203
- }
204
- process.on('SIGTERM', shutdown);
205
- process.on('SIGINT', shutdown);
206
- `;
207
- //# sourceMappingURL=StaticPreviewServer.js.map
@@ -1,37 +0,0 @@
1
- var ze=t=>{throw TypeError(t)};var we=(t,s,r)=>s.has(t)||ze("Cannot "+r);var k=(t,s,r)=>(we(t,s,"read from private field"),r?r.call(t):s.get(t)),V=(t,s,r)=>s.has(t)?ze("Cannot add the same private member more than once"):s instanceof WeakSet?s.add(t):s.set(t,r),q=(t,s,r,i)=>(we(t,s,"write to private field"),i?i.call(t,r):s.set(t,r),r),W=(t,s,r)=>(we(t,s,"access private method"),r);import{S as Rt,n as je,s as It,r as Ct,Q as Ye,u as Pe,a as Pt,b as Et,c as u,e as Lt,d as At,f as Ot,g as Mt,h as $e,i as Tt,j as Dt,k as re,l as le,m as qt,o as e,B as G,p as Ne,P as zt,q as $t,t as Ft,v as Ht,w as Ut,X as Je,D as Xe,x as Ze,y as et,z as tt,A as st,C as rt,E as Kt,F as at,G as Fe,H as Qt,I as Bt,J as Vt,K as Wt,L as Z,M as be,N as z,R as Gt,O as it,T as se,U as Yt,V as Jt,W as ce,Y as Xt,Z as ie,_ as U,$ as nt,a0 as ye,a1 as Zt,a2 as es,a3 as H,a4 as ot,a5 as ts,a6 as de,a7 as ss,a8 as Se,a9 as rs,aa as He,ab as as,ac as is,ad as ns,ae as os,af as cs,ag as ls,ah as ds,ai as us,aj as hs,ak as ms,al as ps,am as xs,an as fs,ao as bs,ap as ct,aq as ys,ar as vs,as as gs,at as ws,au as js,av as Ns,aw as Ss,ax as ks}from"./main-DgEfJvYu.js";function Ue(t,s){const r=new Set(s);return t.filter(i=>!r.has(i))}var ne,F,oe,ee,Q,te,ue,he,me,pe,L,ke,_e,lt,Re,Ie,Ce,Ge,_s=(Ge=class extends Rt{constructor(s,r,i){super();V(this,L);V(this,ne);V(this,F);V(this,oe);V(this,ee);V(this,Q);V(this,te);V(this,ue);V(this,he);V(this,me);V(this,pe,[]);q(this,ne,s),q(this,ee,i),q(this,oe,[]),q(this,Q,[]),q(this,F,[]),this.setQueries(r)}onSubscribe(){this.listeners.size===1&&k(this,Q).forEach(s=>{s.subscribe(r=>{W(this,L,Ie).call(this,s,r)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,k(this,Q).forEach(s=>{s.destroy()})}setQueries(s,r){q(this,oe,s),q(this,ee,r),je.batch(()=>{const i=k(this,Q),n=W(this,L,Re).call(this,k(this,oe));n.forEach(h=>h.observer.setOptions(h.defaultedQueryOptions));const o=n.map(h=>h.observer),a=o.map(h=>h.getCurrentResult()),l=i.length!==o.length,m=o.some((h,g)=>h!==i[g]),y=l||m,v=y?!0:a.some((h,g)=>{const w=k(this,F)[g];return!w||!It(h,w)});!y&&!v||(y&&(q(this,pe,n),q(this,Q,o)),q(this,F,a),this.hasListeners()&&(y&&(Ue(i,o).forEach(h=>{h.destroy()}),Ue(o,i).forEach(h=>{h.subscribe(g=>{W(this,L,Ie).call(this,h,g)})})),W(this,L,Ce).call(this)))})}getCurrentResult(){return k(this,F)}getQueries(){return k(this,Q).map(s=>s.getCurrentQuery())}getObservers(){return k(this,Q)}getOptimisticResult(s,r){const i=W(this,L,Re).call(this,s),n=i.map(a=>a.observer.getOptimisticResult(a.defaultedQueryOptions)),o=i.map(a=>a.defaultedQueryOptions.queryHash);return[n,a=>W(this,L,_e).call(this,a??n,r,o),()=>W(this,L,ke).call(this,n,i)]}},ne=new WeakMap,F=new WeakMap,oe=new WeakMap,ee=new WeakMap,Q=new WeakMap,te=new WeakMap,ue=new WeakMap,he=new WeakMap,me=new WeakMap,pe=new WeakMap,L=new WeakSet,ke=function(s,r){const i=new Set;return r.map((n,o)=>{const a=s[o];return n.defaultedQueryOptions.notifyOnChangeProps?a:n.observer.trackResult(a,l=>{i.has(l)||(i.add(l),r.forEach(m=>{m.observer.trackProp(l)}))})})},_e=function(s,r,i){if(r){const n=k(this,me),o=i!==void 0&&n!==void 0&&(n.length!==i.length||i.some((a,l)=>a!==n[l]));return(k(this,F)!==k(this,he)||o||r!==k(this,ue))&&(q(this,ue,r),q(this,he,k(this,F)),i!==void 0&&q(this,me,i),q(this,te,Ct(k(this,te),r(s)))),k(this,te)}return s},lt=function(){var s;return!((s=k(this,ee))!=null&&s.combine)||k(this,Q).some((r,i)=>{var n;return r.options.suspense&&((n=k(this,F)[i])==null?void 0:n.data)===void 0})},Re=function(s){const r=new Map;k(this,Q).forEach(n=>{const o=n.options.queryHash;if(!o)return;const a=r.get(o);a?a.push(n):r.set(o,[n])});const i=[];return s.forEach(n=>{var l;const o=k(this,ne).defaultQueryOptions(n),a=((l=r.get(o.queryHash))==null?void 0:l.shift())??new Ye(k(this,ne),o);i.push({defaultedQueryOptions:o,observer:a})}),i},Ie=function(s,r){const i=k(this,Q).indexOf(s);i!==-1&&(q(this,F,k(this,F).slice()),k(this,F)[i]=r,W(this,L,Ce).call(this))},Ce=function(){var s;if(this.hasListeners()){const r=W(this,L,lt).call(this),i=k(this,te),n=r?i:W(this,L,_e).call(this,W(this,L,ke).call(this,k(this,F),k(this,pe)),(s=k(this,ee))==null?void 0:s.combine);(r||i!==n)&&je.batch(()=>{this.listeners.forEach(o=>{o(k(this,F))})})}},Ge);function Rs({queries:t,...s},r){const i=Pe(),n=Pt(),o=Et(),a=s.subscribed!==!1,l=u.useMemo(()=>t.map(N=>{const p=i.defaultQueryOptions(N);return p._optimisticResults=n?"isRestoring":a?"optimistic":void 0,p}),[t,i,n,a]);l.forEach(N=>{Lt(N);const p=i.getQueryCache().get(N.queryHash);At(N,o,p)}),Ot(o);const[m]=u.useState(()=>new _s(i,l,s)),[y,v,h]=m.getOptimisticResult(l,s.combine);u.useEffect(()=>{m.setQueries(l,s)},[l,s,m]);const g=!n&&a;u.useSyncExternalStore(u.useCallback(N=>g?m.subscribe(je.batchCalls(N)):Mt,[m,g]),()=>m.getCurrentResult(),()=>m.getCurrentResult());const w=y.some((N,p)=>$e(l[p],N))?y.flatMap((N,p)=>{const j=l[p];if(j&&$e(j,N)){const T=new Ye(i,j);return Tt(j,T,o)}return[]}):[];if(w.length>0)throw Promise.all(w);const R=y.find((N,p)=>{const j=l[p];return j&&Dt({result:N,errorResetBoundary:o,throwOnError:j.throwOnError,query:i.getQueryCache().get(j.queryHash),suspense:j.suspense})});if(R)throw R.error;return v(h())}/**
2
- * @license lucide-react v1.67.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const dt={name:"arrow-up-right",size:24,node:[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]};dt.node;const ut=re(dt);/**
7
- * @license lucide-react v1.67.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */const ht={name:"clipboard-copy",size:24,node:[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]};ht.node;const Is=re(ht);/**
12
- * @license lucide-react v1.67.0 - ISC
13
- *
14
- * This source code is licensed under the ISC license.
15
- * See the LICENSE file in the root directory of this source tree.
16
- */const mt={name:"ellipsis",size:24,node:[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],aliases:["more-horizontal"]};mt.node;const Cs=re(mt);/**
17
- * @license lucide-react v1.67.0 - ISC
18
- *
19
- * This source code is licensed under the ISC license.
20
- * See the LICENSE file in the root directory of this source tree.
21
- */const pt={name:"folder-open",size:24,node:[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]};pt.node;const Ke=re(pt);/**
22
- * @license lucide-react v1.67.0 - ISC
23
- *
24
- * This source code is licensed under the ISC license.
25
- * See the LICENSE file in the root directory of this source tree.
26
- */const xt={name:"image-off",size:24,node:[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M10.41 10.41a2 2 0 1 1-2.83-2.83",key:"1bzlo9"}],["line",{x1:"13.5",x2:"6",y1:"13.5",y2:"21",key:"1q0aeu"}],["line",{x1:"18",x2:"21",y1:"12",y2:"15",key:"5mozeu"}],["path",{d:"M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59",key:"mmje98"}],["path",{d:"M21 15V5a2 2 0 0 0-2-2H9",key:"43el77"}]]};xt.node;const Ps=re(xt);/**
27
- * @license lucide-react v1.67.0 - ISC
28
- *
29
- * This source code is licensed under the ISC license.
30
- * See the LICENSE file in the root directory of this source tree.
31
- */const ft={name:"images",size:24,node:[["path",{d:"m22 11-1.296-1.296a2.4 2.4 0 0 0-3.408 0L11 16",key:"9kzy35"}],["path",{d:"M4 8a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2",key:"1t0f0t"}],["circle",{cx:"13",cy:"7",r:"1",fill:"currentColor",key:"1obus6"}],["rect",{x:"8",y:"2",width:"14",height:"14",rx:"2",key:"1gvhby"}]]};ft.node;const Es=re(ft);/**
32
- * @license lucide-react v1.67.0 - ISC
33
- *
34
- * This source code is licensed under the ISC license.
35
- * See the LICENSE file in the root directory of this source tree.
36
- */const bt={name:"loader-circle",size:24,node:[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],aliases:["loader-2"]};bt.node;const yt=re(bt),Ls=({project:t,onRename:s,onRemove:r,onSetPinned:i})=>{const n=le(),o=u.useRef(null),a=u.useRef(null),l=u.useRef(null),[m,y]=u.useState(!1),[v,h]=u.useState(!1),g=!!t.pinnedAt,[w,R]=u.useState(null),[N,p]=u.useState(t.name),[j,T]=u.useState(!1),[f,S]=u.useState(null),{containerRef:C,onKeyDown:O}=qt();let Y=w==="rename"?"Save name":"Remove from projects";j&&(Y="Saving…"),u.useEffect(()=>{var M;if(v||!l.current)return;const x=l.current==="button"?a:o;l.current=null,(M=x.current)==null||M.focus()},[v]);const A=x=>{y(x),n==null||n.capture(x?"library_project_menu_opened":"library_project_menu_closed")},E=async x=>{if(!v){l.current=x,h(!0),n==null||n.capture("library_project_pin_clicked",{is_pinning:!g,method:x});try{await i(t.id,!g)}catch(M){at.error(Fe(M,"Could not save pin. Try again."))}finally{h(!1)}}},B=x=>{A(!1),p(t.name),S(null),R(x),n==null||n.capture("library_project_action_opened",{action:x})},K=x=>{n==null||n.capture("library_project_action_closed",{action:w,outcome:x}),R(null)},_=async()=>{if(!(j||!w||w==="rename"&&!N.trim())){T(!0),S(null);try{w==="rename"?await s(t.id,N.trim()):await r(t.id),K("completed")}catch(x){S(Fe(x,"Could not save changes. Try again."))}finally{T(!1)}}};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:`flex items-center gap-0.5 group-hover/project:pointer-events-auto group-hover/project:opacity-100 has-[:focus-visible]:pointer-events-auto has-[:focus-visible]:opacity-100 [@media(hover:none)]:pointer-events-auto [@media(hover:none)]:opacity-100 ${m?"pointer-events-auto opacity-100":"pointer-events-none opacity-0"}`,children:[e.jsx(G,{ref:a,type:"button",variant:"ghost",size:"icon-compact",title:g?"Unpin project":"Pin project","aria-label":`${g?"Unpin":"Pin"} ${t.name}`,"aria-pressed":g,disabled:v,onClick:()=>{E("button")},children:e.jsx(Ne,{weight:g?"fill":"bold",size:16,"aria-hidden":!0})}),e.jsxs(zt,{open:m,onOpenChange:A,children:[e.jsx($t,{asChild:!0,children:e.jsx(G,{ref:o,type:"button",variant:"ghost",size:"icon-compact","aria-label":`Actions for ${t.name}`,children:e.jsx(Cs,{size:16,"aria-hidden":!0})})}),e.jsx(Ft,{children:e.jsxs(Ht,{"data-rivet-private":!0,ref:C,onKeyDown:O,role:"menu","aria-label":"Project actions",align:"start",sideOffset:4,onCloseAutoFocus:x=>{w&&x.preventDefault()},className:"ph-no-capture bg-surface-2 text-content z-ui-primary min-w-44 rounded-lg p-1 shadow-lg",children:[e.jsxs("button",{type:"button",role:"menuitem","data-menu-item":!0,disabled:v,onClick:()=>{A(!1),E("menu")},className:"hover:bg-hover focus:bg-hover flex w-full items-center gap-2 rounded-md px-3 py-2 text-xs focus:outline-none disabled:opacity-50",children:[e.jsx(Ne,{size:14,weight:g?"fill":"bold","aria-hidden":!0}),g?"Unpin":"Pin"]}),e.jsxs("button",{type:"button",role:"menuitem","data-menu-item":!0,onClick:()=>B("rename"),className:"hover:bg-hover focus:bg-hover flex w-full items-center gap-2 rounded-md px-3 py-2 text-xs focus:outline-none",children:[e.jsx(Ut,{size:14,"aria-hidden":!0}),"Rename"]}),e.jsxs("button",{type:"button",role:"menuitem","data-menu-item":!0,onClick:()=>B("remove"),className:"hover:bg-hover focus:bg-hover flex w-full items-center gap-2 rounded-md px-3 py-2 text-xs focus:outline-none",children:[e.jsx(Je,{size:14,"aria-hidden":!0}),"Remove from projects"]})]})})]})]}),e.jsx(Xe,{open:w!==null,onOpenChange:x=>{!x&&!j&&K("cancelled")},children:e.jsxs(Ze,{children:[e.jsx(et,{className:"z-modal fixed inset-0 bg-black/60"}),e.jsxs(tt,{"data-rivet-private":!0,onCloseAutoFocus:x=>{var M;x.preventDefault(),(M=o.current)==null||M.focus()},className:"ph-no-capture bg-surface-2 text-content z-ui-secondary fixed top-1/2 left-1/2 w-[calc(100%-2rem)] max-w-sm -translate-x-1/2 -translate-y-1/2 rounded-xl p-6 shadow-lg",children:[e.jsx(st,{className:"text-base font-medium break-words",children:w==="rename"?"Rename project":`Remove “${t.name}” from projects?`}),e.jsx(rt,{className:"mt-2 text-sm leading-6 text-white/60",children:w==="rename"?"Choose a display name for this project. Its folder name will stay the same.":"Your folders and saved variants will remain on this computer. Open the project again to restore it."}),e.jsxs("form",{onSubmit:x=>{x.preventDefault(),_()},children:[w==="rename"?e.jsxs("label",{className:"mt-5 block text-xs text-white/70",children:["Project name",e.jsx("input",{autoFocus:!0,value:N,onChange:x=>p(x.target.value),maxLength:Kt,disabled:j,className:"mt-2 w-full rounded-lg border border-white/15 bg-white/5 px-3 py-2 text-sm text-white outline-none focus:border-white/50"})]}):null,f?e.jsx("p",{role:"alert",className:"mt-4 text-xs text-red-300",children:f}):null,e.jsxs("div",{className:"mt-6 flex justify-end gap-2",children:[e.jsx(G,{type:"button",variant:"ghost",disabled:j,onClick:()=>K("cancelled"),children:"Cancel"}),e.jsx(G,{type:"submit",variant:"secondary",disabled:j||w==="rename"&&!N.trim(),children:Y})]})]})]})]})})]})},vt=6e4,gt=60*vt,ve=24*gt,As=7*ve,Os=30*ve,Ms=365*ve,Ts=[["year",Ms],["month",Os],["week",As],["day",ve],["hour",gt],["minute",vt]],Ds=new Intl.RelativeTimeFormat("en",{numeric:"always"}),qs=t=>{const s=new Map;for(const r of t??[]){const i=Date.parse(r.createdAt);if(!Number.isFinite(i))continue;const n=s.get(r.projectId);(n===void 0||i>n)&&s.set(r.projectId,i)}return s},zs=({projects:t,latestEdits:s})=>[...t].sort((r,i)=>{if(r.pinnedAt&&!i.pinnedAt)return-1;if(i.pinnedAt&&!r.pinnedAt)return 1;if(r.pinnedAt&&i.pinnedAt)return r.pinnedAt.localeCompare(i.pinnedAt)||r.id.localeCompare(i.id);const n=s.get(r.id),o=s.get(i.id);return n===void 0&&o!==void 0?1:o===void 0&&n!==void 0?-1:(o??0)-(n??0)||r.name.localeCompare(i.name)||r.id.localeCompare(i.id)}),$s=({editedAt:t,now:s})=>{const r=Math.max(0,s-t);for(const[i,n]of Ts)if(r>=n)return`Edited ${Ds.format(-Math.floor(r/n),i)}`;return"Edited just now"},wt=u.createContext(null),Fs=({navigation:t,onBrowseProjects:s,controls:r,isHeaderVisible:i=!0,children:n})=>{const[o,a]=u.useState(null);return e.jsxs(wt.Provider,{value:o,children:[i?e.jsxs("div",{className:"grid shrink-0 grid-cols-[auto_minmax(0,1fr)] items-center gap-4 px-10 py-5 max-sm:px-5 sm:grid-cols-[auto_minmax(0,1fr)_auto]",children:[e.jsx("button",{onClick:s,"aria-label":"Projects",className:"flex items-center",children:e.jsx("img",{src:Qt,alt:"","aria-hidden":!0,draggable:!1,className:"h-8 w-8"})}),e.jsx("div",{ref:a,className:"col-span-2 row-start-2 flex min-w-0 items-center gap-3 sm:col-span-1 sm:col-start-2 sm:row-start-1",children:r}),e.jsx("div",{className:"col-start-2 row-start-1 justify-self-end sm:col-start-3",children:t})]}):null,n]})},jt=({children:t})=>{const s=u.useContext(wt);return s?Bt.createPortal(t,s):null},Ee=({label:t,value:s,onChange:r,onBlur:i,isDisabled:n=!1})=>e.jsxs("label",{className:"flex w-64 min-w-0 items-center gap-2 rounded-lg border border-white/[0.08] bg-white/[0.02] px-3 py-2.5 text-white/35 max-sm:flex-1",children:[e.jsx(Vt,{size:14,className:"shrink-0","aria-hidden":!0}),e.jsx("input",{type:"search","aria-label":t,placeholder:`${t}…`,value:s,onChange:o=>r==null?void 0:r(o.target.value),onBlur:i,disabled:n,className:"min-w-0 flex-1 bg-transparent text-xs text-white outline-none placeholder:text-white/30 disabled:opacity-40 [&::-webkit-search-cancel-button]:hidden"})]}),Hs=({projects:t,variants:s,historyError:r,onRetryHistory:i,projectPreviews:n={},selectedProjectId:o,onSelectProject:a,onBrowseLibrary:l,onOpenProject:m,onRenameProject:y,onRemoveProject:v,onSetProjectPinned:h,isOpeningProject:g=!1,projectOpenError:w,onSearchCompleted:R,accountMenu:N,navigation:p,view:j="library",children:T})=>{const[f,S]=u.useState(""),C=o===null||T===void 0,O=u.useRef(null),Y=qs(s),A=Date.now(),E=t.find(_=>_.id===o),B=new Map;if(s)for(const _ of t)_.historyIssue||B.set(_.id,0);for(const{projectId:_}of s??[]){const x=B.get(_);x!==void 0&&B.set(_,x+1)}const K=zs({projects:t.filter(_=>_.name.toLowerCase().includes(f.toLowerCase())),latestEdits:Y});return e.jsx("div",{className:"ph-no-capture bg-background text-foreground flex h-screen min-h-0","data-rivet-private":!0,children:e.jsx("main",{className:"relative flex min-w-0 flex-1 flex-col overflow-hidden",children:e.jsxs(Fs,{navigation:p,onBrowseProjects:l,isHeaderVisible:C,controls:j==="library"?e.jsx(Ee,{label:"Search projects",value:f,onChange:S,onBlur:()=>R==null?void 0:R(f.length)}):null,children:[w?e.jsx("p",{role:"alert",className:"px-10 pt-5 text-xs text-red-200",children:w}):null,T!==void 0?T:e.jsxs("div",{className:"min-h-0 flex-1 overflow-y-auto px-10 pb-10 max-sm:px-5",children:[e.jsx("h1",{ref:O,tabIndex:-1,className:"sr-only",children:"Projects"}),e.jsx("div",{className:"mb-9 flex items-center justify-end",children:e.jsx(G,{onClick:()=>m(),variant:"secondary",disabled:g,leadingIcon:Ke,className:"shrink-0",children:"Open project…"})}),r?e.jsxs("div",{role:"alert",className:"mb-6 flex items-center gap-3 text-xs text-white/60",children:[e.jsx("span",{children:r}),e.jsx("button",{onClick:i,className:"shrink-0 underline underline-offset-4",children:"Retry history"})]}):null,E!=null&&E.issue?e.jsx("p",{role:"alert",className:"mb-6 rounded-lg border border-amber-200/10 bg-amber-200/[0.03] p-4 text-xs leading-6 text-white/70",children:E.issue}):null,E&&!E.isAvailable?e.jsxs("div",{className:"mb-6 flex items-center justify-between gap-4 rounded-lg border border-amber-200/10 bg-amber-200/[0.03] p-4 text-xs text-white/60",children:[e.jsxs("span",{children:["Locate ",E.name,"’s working folder to open its workspace."]}),e.jsx("button",{disabled:g,onClick:()=>m(E.id),className:"shrink-0 text-white underline decoration-white/30 underline-offset-4",children:"Locate folder"})]}):null,e.jsxs("div",{className:"grid items-start gap-x-6 gap-y-8 sm:grid-cols-2",children:[K.map(_=>{const x=B.get(_.id);let M="Loading variants…";x!==void 0?M=`${x.toLocaleString()} ${x===1?"variant":"variants"}`:(r||_.historyIssue)&&(M="Variants unavailable");const d=Y.get(_.id);let I="No edits yet";r||_.historyIssue?I="Edit history unavailable":s===void 0?I="Loading edits…":x&&(I="Edit date unavailable");const $=n[_.id];return e.jsxs("div",{className:"group/project grid min-w-0",children:[e.jsxs("button",{onClick:()=>{S(""),a(_.id)},className:"group col-start-1 row-span-2 row-start-1 -m-2 grid w-[calc(100%+1rem)] min-w-0 grid-rows-subgrid rounded-2xl p-2 text-left hover:bg-white/[0.06] focus-visible:bg-white/[0.06] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white/60",children:[e.jsx("span",{className:"group-hover:border-border relative block aspect-video overflow-hidden rounded-xl border border-white/[0.08] bg-white/[0.02]",children:$?e.jsx("img",{src:$.dataUrl,alt:`${_.name} — ${$.label}`,draggable:!1,className:"h-full w-full object-cover object-top"}):null}),e.jsxs("span",{className:"mt-3 block pr-16",children:[e.jsxs("span",{className:"flex min-w-0 items-center gap-1.5 text-sm font-medium",children:[_.pinnedAt?e.jsx(Ne,{size:12,weight:"fill","aria-hidden":!0,className:"text-content-muted shrink-0"}):null,e.jsx("span",{className:"truncate",children:_.name})]}),e.jsxs("span",{className:"mt-2 flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-xs text-white/40 group-hover:text-white/65 group-focus-visible:text-white/65",children:[d!==void 0?e.jsx("time",{dateTime:new Date(d).toISOString(),title:new Date(d).toLocaleString(),children:$s({editedAt:d,now:A})}):e.jsx("span",{children:I}),e.jsx("span",{className:"shrink-0",children:M})]}),_.isAvailable?null:e.jsx("span",{className:"mt-2 block text-xs text-amber-200/65",children:"Folder unavailable"})]})]}),e.jsx("div",{className:"z-content col-start-1 row-start-2 mt-3 self-center justify-self-end",children:e.jsx(Ls,{project:_,onRename:y,onSetPinned:h,onRemove:async J=>{var ae;await v(J),(ae=O.current)==null||ae.focus()}})})]},_.id)}),K.length===0?e.jsxs("div",{className:"col-span-full flex min-h-80 flex-col items-center justify-center rounded-xl border border-dashed border-white/10 px-8 text-center",children:[e.jsx(Ke,{size:26,className:"mb-5 text-white/25"}),e.jsx("h2",{className:"text-sm font-medium",children:f?"No matching projects":"Add your projects"}),e.jsx("p",{className:"mt-2 max-w-sm text-xs leading-6 text-white/40",children:f?"Try another project name.":"Open an existing project to add it as a project here"}),f?null:e.jsx(G,{onClick:()=>m(),variant:"secondary",disabled:g,className:"mt-5",children:"Open project"})]}):null]})]}),C&&N?e.jsx("footer",{className:"border-main-border bg-main-light shrink-0 border-t px-2.5 py-2.5",children:N}):null]})})})},Nt=8,Qe=1,Us=({children:t})=>e.jsx("ul",{className:"grid grid-cols-1 items-start gap-x-5 min-[400px]:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5",style:{gridAutoRows:`${Nt}px`},children:t}),Ks=({children:t})=>{const[s,r]=u.useState(Qe),i=u.useRef(null),n=u.useCallback(o=>{var l;if((l=i.current)==null||l.disconnect(),!o)return;const a=()=>r(Math.max(Qe,Math.ceil(o.getBoundingClientRect().height/Nt)));a(),i.current=new ResizeObserver(a),i.current.observe(o)},[]);return e.jsx("li",{className:"min-w-0",style:{gridRowEnd:`span ${s}`},children:e.jsx("div",{ref:n,className:"relative pb-8",children:t})})},Qs=async({profileId:t,referenceId:s,hash:r,signal:i})=>{const n=await Wt(`/api/library/profile/references/${encodeURIComponent(s)}/media/${r}?${new URLSearchParams({profileId:t})}`,{signal:i});if(!n.ok)throw new Error("Image unavailable");return n.blob()},Bs="200px",St=({profileId:t,referenceId:s,hash:r,title:i,isDetail:n=!1})=>{const[o,a]=u.useState(!1),[l,m]=u.useState(!1),y=u.useRef(null),v=u.useCallback(w=>{var R;(R=y.current)==null||R.disconnect(),w&&(y.current=new IntersectionObserver(N=>{var p;N.some(j=>j.isIntersecting)&&(a(!0),(p=y.current)==null||p.disconnect())},{rootMargin:Bs}),y.current.observe(w))},[]),h=Z({queryKey:z.designLibraryImage({profileId:t,referenceId:s,hash:r}),queryFn:async({signal:w})=>{const R=await Qs({profileId:t,referenceId:s,hash:r,signal:w});return new Promise((N,p)=>{const j=new FileReader;j.onload=()=>typeof j.result=="string"?N(j.result):p(new Error("Image unavailable")),j.onerror=()=>p(new Error("Image unavailable")),j.readAsDataURL(R)})},enabled:o,staleTime:1/0,gcTime:0,retry:!1}),g=!!h.data&&!l;return e.jsxs("div",{ref:v,className:be("flex items-center justify-center overflow-hidden bg-white/[0.025]",n?"min-h-32":null,!n&&!g?"aspect-[4/3]":null),children:[h.isError||l?e.jsxs("span",{className:"flex items-center gap-2 p-5 text-xs text-white/35",children:[e.jsx(Ps,{size:16,"aria-hidden":!0}),"Image unavailable"]}):null,h.data&&!l?e.jsx("img",{src:h.data,alt:i,onError:()=>m(!0),className:n?"max-h-[65vh] w-full object-contain":"block h-auto w-full"}):null,!h.data&&!h.isError?e.jsx("span",{className:"text-xs text-white/25",children:"Loading image…"}):null]})},Vs={arena:"Are.na",cosmos:"Cosmos",pinterest:"Pinterest",x:"X",image:"Uploaded image",text:"Saved text",variant:"Saved direction",pdf:"PDF"},Ws=({provider:t})=>e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[t==="arena"||t==="cosmos"||t==="pinterest"||t==="x"?e.jsx(Gt,{provider:t,className:"h-3.5 w-3.5"}):null,Vs[t]]}),Gs=({label:t,onCopy:s,referenceCount:r=1})=>{const i=le(),[n,o]=u.useState("idle"),a=async()=>{o("copying");try{await s(),o("copied"),i==null||i.capture("library_reference_copy_completed",{reference_count:r,copy_kind:"agent"})}catch{o("failed"),at.error("Could not copy. Check clipboard access and try again."),i==null||i.capture("library_reference_copy_failed",{reference_count:r,copy_kind:"agent"})}},l=n==="copied"?it:Is,m=n==="copied"?"Copied":t;return e.jsxs(e.Fragment,{children:[e.jsx(G,{variant:"secondary",size:"compact",leadingIcon:l,disabled:n==="copying",onClick:()=>void a(),"aria-label":m,"aria-live":"polite",children:e.jsxs("span",{className:"grid whitespace-nowrap",children:[e.jsx("span",{"aria-hidden":!0,className:"invisible col-start-1 row-start-1",children:t}),e.jsx("span",{className:"col-start-1 row-start-1",children:m})]})}),n==="failed"?e.jsx("span",{role:"alert",className:"sr-only",children:"Could not copy. Check clipboard access and try again."}):null]})},kt=se({id:U(),title:U(),provider:nt,isIncluded:ye()}),Ys=Yt.extend({sourceIds:ce(U()),observation:Jt.nullable()}),Js=se({profileId:U(),revision:ie(),isEnabled:ye(),sources:ce(kt),references:ce(Ys)});se({query:U().trim().min(2).max(1e3),sourceId:U().min(1).max(200).optional(),limit:ie().int().min(1).max(100).default(24),runtime:Xt.default("codex")});const Xs=se({profileId:U(),query:U(),coverage:se({saved:ie(),analyzed:ie(),indexed:ie()}),results:ce(se({id:U(),key:U(),title:U(),provider:nt,url:U().optional(),description:U().nullable(),imageCount:ie(),sources:ce(kt),isIncluded:ye()}))}),_t=50,Be=12,Zs=U().regex(/^[a-f0-9]{12,64}@[1-9][0-9]*$/).refine(t=>Number.isSafeInteger(Number(t.split("@")[1])),"Invalid reference revision"),er=se({profileId:U().uuid(),keys:ce(Zs).min(1).max(_t),isDetailed:ye().default(!1)}),tr=t=>{const s=new Map;for(const r of t){const i=r.id.slice(0,Be);s.set(i,(s.get(i)??0)+1)}return new Map(t.map(r=>{const i=r.id.slice(0,Be),n=s.get(i)===1?i:r.id;return[r.id,`${n}@${r.revision}`]}))},sr=({profileId:t,referenceKeys:s})=>{const r=er.parse({profileId:t,keys:s});return["rivet","profile","reference",r.profileId,...r.keys].join(" ")},Le=t=>{const s=t.referenceKeys.length===1?"Copy to agent":`Copy ${t.referenceKeys.length} to agent`;return e.jsx(Gs,{label:s,referenceCount:t.referenceKeys.length,onCopy:()=>navigator.clipboard.writeText(sr(t))})},rr=({profileId:t,reference:s,sources:r,referenceKey:i,children:n})=>{var m,y;const o=le(),a=s.title||"Untitled reference",l=s.url&&/^https?:\/\//i.test(s.url)?s.url:void 0;return e.jsxs(Xe,{onOpenChange:v=>o==null?void 0:o.capture(v?"library_reference_opened":"library_reference_closed",{provider:s.provider,media_count:s.media.length}),children:[e.jsx(Zt,{asChild:!0,children:n}),e.jsxs(Ze,{children:[e.jsx(et,{className:"fixed inset-0 z-50 bg-black/55"}),e.jsxs(tt,{className:"ph-no-capture bg-background text-foreground fixed inset-y-0 right-0 z-50 flex w-full max-w-2xl flex-col border-l border-white/10 shadow-2xl outline-none","data-rivet-private":!0,children:[e.jsxs("header",{className:"flex items-start justify-between gap-6 border-b border-white/[0.07] px-7 py-6",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx(rt,{className:"mb-2 text-xs text-white/40",children:e.jsx(Ws,{provider:s.provider})}),e.jsx(st,{className:"text-lg leading-snug font-medium tracking-tight break-words",children:a})]}),e.jsx(es,{asChild:!0,children:e.jsx(G,{variant:"ghost",size:"icon-compact","aria-label":"Close reference",children:e.jsx(Je,{size:18})})})]}),e.jsx("div",{className:"border-b border-white/[0.07] px-7 py-4",children:e.jsx(Le,{profileId:t,referenceKeys:[i]},s.revision)}),e.jsxs("div",{className:"min-h-0 flex-1 space-y-7 overflow-y-auto px-7 py-6",children:[s.media.map(v=>e.jsx(St,{profileId:t,referenceId:s.id,hash:v.hash,title:a,isDetail:!0},v.hash)),s.text?e.jsx("p",{className:"text-sm leading-7 break-words whitespace-pre-wrap text-white/70",children:s.text}):null,s.note?e.jsxs("section",{children:[e.jsx("h3",{className:"mb-2 text-xs font-medium text-white/45",children:"Your note"}),e.jsx("p",{className:"text-sm leading-7 break-words whitespace-pre-wrap text-white/75",children:s.note})]}):null,e.jsxs("section",{children:[e.jsx("h3",{className:"mb-2 text-xs font-medium text-white/45",children:((m=s.observation)==null?void 0:m.evidence)==="preference"?"Your preference":"Rivet’s analysis"}),e.jsx("p",{className:"text-sm leading-7 break-words whitespace-pre-wrap text-white/75",children:((y=s.observation)==null?void 0:y.description)??s.unsupportedReason??"No analysis saved yet."})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"mb-3 text-xs font-medium text-white/45",children:"Saved in"}),e.jsx("ul",{className:"space-y-2",children:r.filter(v=>s.sourceIds.includes(v.id)).map(v=>e.jsxs("li",{className:"flex flex-wrap items-center justify-between gap-2 rounded-md bg-white/[0.035] px-3 py-2.5 text-xs",children:[e.jsx("span",{children:v.title}),v.isIncluded?null:e.jsx("span",{className:"text-white/35",children:"Excluded from generation"})]},v.id))})]}),l?e.jsxs("a",{href:l,target:"_blank",rel:"noopener noreferrer",onClick:()=>o==null?void 0:o.capture("library_reference_original_opened",{provider:s.provider}),className:"inline-flex items-center gap-1 text-xs text-white/70 underline-offset-4 hover:underline",children:["Open original",e.jsx(ut,{size:14,"aria-hidden":!0})]}):null]})]})]})]})},Ve="opacity-0 group-hover/card:opacity-100 group-focus-within/card:opacity-100 [@media(hover:none)]:opacity-100",ar="pointer-events-none group-hover/card:pointer-events-auto group-focus-within/card:pointer-events-auto [@media(hover:none)]:pointer-events-auto",ir=({profileId:t,reference:s,sources:r,referenceKey:i,isSelected:n,isSelectionDisabled:o,onSelect:a})=>{var y;const l=s.title||"Untitled reference",m=s.media[0];return e.jsxs("div",{className:"group/card relative",children:[e.jsx(rr,{profileId:t,reference:s,sources:r,referenceKey:i,children:e.jsx("button",{"aria-label":`Inspect ${l}`,className:"block w-full overflow-hidden text-left outline-none focus-visible:ring-2 focus-visible:ring-white/50 focus-visible:ring-offset-4 focus-visible:ring-offset-background",children:m?e.jsx(St,{profileId:t,referenceId:s.id,hash:m.hash,title:l},m.hash):e.jsxs("div",{className:"min-h-44 border border-white/10 bg-white/[0.03] p-5 pb-14",children:[e.jsx("p",{className:"text-sm font-medium text-white/80",children:l}),e.jsx("p",{className:"mt-3 line-clamp-3 text-xs leading-5 text-white/45",children:((y=s.observation)==null?void 0:y.description)??s.text})]})})}),e.jsx("div",{"aria-hidden":!0,className:be("pointer-events-none absolute inset-0 bg-black/40",Ve)}),e.jsxs("div",{className:be("absolute inset-x-0 bottom-0 z-10 flex items-center justify-between gap-2 p-2",n?null:Ve,n?null:ar),children:[e.jsxs("label",{className:"relative shrink-0 cursor-pointer",title:n?"Deselect":"Select",children:[e.jsx("input",{type:"checkbox","aria-label":`Select ${l}`,checked:n,disabled:o,onChange:a,className:"peer absolute inset-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-default"}),e.jsx("span",{className:be("flex h-7 w-7 items-center justify-center rounded-full border shadow-sm peer-focus-visible:ring-2 peer-focus-visible:ring-white peer-focus-visible:ring-offset-2 peer-disabled:opacity-40",n?"border-orange-400 bg-orange-500 text-white":"border-white/35 bg-black/60 text-white/70"),children:e.jsx(it,{size:14,"aria-hidden":!0})})]}),e.jsx(Le,{profileId:t,referenceKeys:[i]},s.revision)]})]})},xe=24,nr="200px",or=350,cr=100,lr=({snapshot:t})=>{var M;const s=le(),[r,i]=u.useState(""),[n,o]=u.useState(""),a=u.useRef(null),[l,m]=u.useState(""),[y,v]=u.useState(xe),[h,g]=u.useState([]),w=u.useRef(null),R=tr(t.references),N=t.references.filter(d=>d.media.length>0),p=Z({queryKey:z.designReferenceSearch({profileId:t.profileId,revision:t.revision,references:t.references.map(({id:d,revision:I,sourceIds:$})=>[d,I,$]),search:n,sourceId:l}),queryFn:({signal:d})=>H("/profile/search",{schema:Xs,method:"POST",body:{query:n,sourceId:l||void 0,limit:cr},signal:d}),enabled:n.length>=2&&t.references.length>0,retry:!1}),j=t.references.filter(d=>h.includes(d.id)),T=j.flatMap(d=>{const I=R.get(d.id);return I?[I]:[]}),f=r.trim(),S=f.length>=2,C=S&&t.references.length>0&&(n!==f||p.isLoading),O=S&&!C&&p.isError,Y=new Map(t.references.map(d=>[d.id,d])),A=S?(((M=p.data)==null?void 0:M.results)??[]).flatMap(({id:d})=>{const I=Y.get(d);return I?[I]:[]}):N.filter(d=>!l||d.sourceIds.includes(l)),E=N.length>0,B=A.length,K=t.references.length>0?"No images yet":"Your library starts here",_=u.useCallback(d=>{var I;(I=w.current)==null||I.disconnect(),d&&(w.current=new IntersectionObserver($=>{var J;$.some(ae=>ae.isIntersecting)&&((J=w.current)==null||J.disconnect(),v(Math.min(y+xe,B)))},{root:d.parentElement,rootMargin:nr}),w.current.observe(d))},[y,B]),x=d=>{const I=j.map(J=>J.id),$=I.includes(d)?I.filter(J=>J!==d):[...I,d];g($),s==null||s.capture("library_reference_selection_changed",{selected_count:$.length})};return e.jsxs("div",{className:"ph-no-capture flex min-h-0 flex-1 flex-col","data-rivet-private":!0,children:[e.jsx(jt,{children:e.jsx(Ee,{label:"Search references",value:r,onChange:d=>{i(d),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>o(d.trim()),or),v(xe)},onBlur:()=>{var d;return s==null?void 0:s.capture("library_reference_search_completed",{query_length:r.length,result_count:S?((d=p.data)==null?void 0:d.results.length)??0:A.length})}})}),e.jsxs("div",{className:"min-h-0 flex-1 overflow-y-auto px-10 pb-10 max-sm:px-5",children:[!t.isEnabled&&E?e.jsx("p",{className:"mb-5 text-xs text-white/40",children:"Automatic use is paused. Your saved references are still here."}):null,E?e.jsx("div",{className:"mb-7 flex flex-wrap items-center gap-3",children:e.jsxs("select",{"aria-label":"Source",value:l,onChange:d=>{m(d.target.value),v(xe),s==null||s.capture("library_reference_source_filtered",{is_filtered:!!d.target.value})},className:"bg-background max-w-64 rounded-lg border border-white/[0.08] px-3 py-2.5 text-xs text-white/60 focus-visible:outline-2",children:[e.jsx("option",{value:"",children:"All sources"}),t.sources.map(d=>e.jsx("option",{value:d.id,children:d.title},d.id))]})}):null,T.length?e.jsxs("div",{className:"bg-background sticky top-0 z-20 mb-6 flex flex-wrap items-center gap-3 rounded-lg border border-white/10 p-3 shadow-lg",children:[e.jsxs("span",{className:"text-xs text-white/50",children:[T.length," selected"]}),e.jsx(Le,{profileId:t.profileId,referenceKeys:T},T.join(" ")),e.jsx(G,{variant:"ghost",size:"compact",onClick:()=>{g([]),s==null||s.capture("library_reference_selection_changed",{selected_count:0})},children:"Clear selection"})]}):null,S&&p.data&&p.data.coverage.analyzed<p.data.coverage.saved?e.jsxs("p",{role:"status",className:"mb-5 text-xs text-white/45",children:[p.data.coverage.analyzed," of"," ",p.data.coverage.saved," references analyzed; results may be incomplete."]}):null,C?e.jsx("p",{role:"status",className:"py-10 text-center text-xs text-white/45",children:"Searching references…"}):null,O?e.jsxs("div",{role:"alert",className:"py-10 text-center text-xs text-white/50",children:[e.jsxs("p",{children:["Search is unavailable: ",p.error.message]}),e.jsx(G,{variant:"ghost",onClick:()=>{s==null||s.capture("library_reference_search_retry"),p.refetch()},children:"Try again"})]}):null,!C&&!O&&A.length?e.jsx(Us,{children:A.slice(0,y).map(d=>{const I=R.get(d.id);return I?e.jsx(Ks,{children:e.jsx(ir,{profileId:t.profileId,reference:d,sources:t.sources,referenceKey:I,isSelected:h.includes(d.id),isSelectionDisabled:!h.includes(d.id)&&T.length>=_t,onSelect:()=>x(d.id)})},d.id):null})}):null,!C&&!O&&!A.length?e.jsxs("div",{className:"flex min-h-72 flex-col items-center justify-center rounded-xl border border-dashed border-white/[0.08] px-6 text-center",children:[e.jsx(Es,{size:28,strokeWidth:1,className:"mb-5 text-white/25","aria-hidden":!0}),e.jsx("h2",{className:"text-sm text-white/75",children:E||S?"No references found":K}),e.jsx("p",{className:"mt-2 max-w-sm text-xs leading-6 text-white/35",children:E||S?"Try another search or choose a different source.":"Ask your agent to save a design reference with an image to your library. It will appear here, ready to browse."})]}):null,!C&&!O&&A.length>y?e.jsx("div",{ref:_,role:"status",className:"py-8 text-center text-xs text-white/35",children:"Loading more references…"}):null]})]})},dr=1e4,ur=({onBrowseProjects:t})=>{var a,l;const s=ot(),r=le(),i=Z({queryKey:z.designLibrary((a=s.data)==null?void 0:a.userId,(l=s.data)==null?void 0:l.isAuthenticated),queryFn:({signal:m})=>H("/profile/library",{schema:Js,signal:m}),enabled:!s.isPending,refetchInterval:dr,gcTime:0,retry:!1}),n=()=>{r==null||r.capture("library_reference_retry"),i.refetch()},o=e.jsx(jt,{children:e.jsx(Ee,{label:"Search references",value:"",isDisabled:!0})});return i.isError&&!i.data?e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[o,e.jsxs("div",{className:"m-auto max-w-md px-8 text-center",children:[e.jsx("h1",{className:"mb-3 text-lg font-medium",children:"References"}),e.jsx("p",{role:"alert",className:"text-sm text-white/50",children:i.error.message}),e.jsx("div",{className:"mt-5 flex justify-center gap-3",children:e.jsx(G,{variant:"ghost",onClick:t,children:"Projects"})})]})]}):i.data?e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[i.isError?e.jsxs("div",{role:"alert",className:"flex items-center justify-between gap-4 border-b border-white/10 px-8 py-3 text-xs text-white/50",children:[e.jsx("span",{children:"Could not refresh. Showing the last saved results."}),e.jsx(G,{variant:"ghost",onClick:n,children:"Try again"})]}):null,e.jsx(lr,{snapshot:i.data},i.data.profileId)]}):e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[o,e.jsx("p",{role:"status",className:"m-auto text-xs text-white/40",children:"Loading references…"})]})},hr=({view:t,onNavigate:s})=>e.jsx("nav",{"aria-label":"Library",className:"flex items-center gap-1 rounded-lg bg-white/[0.03] p-1",children:["library","references"].map(r=>e.jsx("a",{href:r==="library"?"/rivet/library":"/rivet/library/references","aria-current":t===r?"page":void 0,onClick:i=>{i.metaKey||i.ctrlKey||i.shiftKey||i.altKey||(i.preventDefault(),s(r))},className:ts("rounded-md px-3 py-2 text-xs focus-visible:outline-2 focus-visible:outline-offset-2",t===r?"bg-white/[0.08] text-white":"text-white/45 hover:text-white/80"),children:r==="library"?"Projects":"References"},r))}),mr=()=>{const t=Pe(),s=async o=>{await t.cancelQueries({queryKey:z.projectLibrary.all}),t.setQueryData(z.projectLibrary.projects,a=>a&&{projects:o(a.projects)}),t.setQueriesData({queryKey:z.projectLibrary.histories},a=>{if(!a)return a;const l=o(a.projects),m=new Set(l.map(({id:y})=>y));return{projects:l,variants:a.variants.filter(({projectId:y})=>m.has(y))}}),t.invalidateQueries({queryKey:z.projectLibrary.all})},r=de({mutationFn:({projectId:o,name:a})=>H(`/projects/${encodeURIComponent(o)}`,{schema:Se,method:"PATCH",body:{name:a}}),onSuccess:({project:o})=>s(a=>a.map(l=>l.id===o.id?{...l,name:o.name}:l))}),i=de({mutationFn:({projectId:o,isPinned:a})=>H(`/projects/${encodeURIComponent(o)}/pin`,{schema:Se,method:a?"PUT":"DELETE"}),onSuccess:({project:o})=>s(a=>a.map(l=>l.id===o.id?{...l,pinnedAt:o.pinnedAt}:l))}),n=de({mutationFn:o=>H(`/projects/${encodeURIComponent(o)}`,{schema:ss,method:"DELETE"}),onSuccess:async(o,a)=>{await s(l=>l.filter(({id:m})=>m!==a)),await t.cancelQueries({queryKey:z.libraryProjectPreview.project(a)}),t.removeQueries({queryKey:z.libraryProjectPreview.project(a)})}});return{setProjectPinned:async(o,a)=>{await i.mutateAsync({projectId:o,isPinned:a})},renameProject:async(o,a)=>{await r.mutateAsync({projectId:o,name:a})},removeProject:async o=>{await n.mutateAsync(o)}}},We=2500,pr=500,xr=6e4,fr=[],br=[],fe=({error:t,retry:s})=>e.jsxs("div",{className:"m-auto max-w-md px-8 text-center",children:[e.jsx("p",{className:"text-sm text-white/70",children:t.message}),e.jsx("button",{onClick:s,className:"mt-5 rounded-lg border border-white/15 px-4 py-2 text-xs text-white/70",children:"Try again"})]}),yr=()=>{var Ae,Oe,Me,Te,De,qe;const t=le();rs(ot().data);const s=Pe(),{renameProject:r,removeProject:i,setProjectPinned:n}=mr(),o=u.useRef(),[a,l]=u.useState(()=>He(new URL(window.location.href))),[m]=u.useState(()=>crypto.randomUUID()),y=u.useRef(0),v=u.useRef(null),h=Z({queryKey:z.projectLibrary.projects,queryFn:({signal:c})=>H("/projects",{schema:ps,signal:c}),refetchInterval:We,retry:!1}),g=((Ae=h.data)==null?void 0:Ae.projects)??fr,w=g.map(({id:c,projectPath:b})=>({id:c,projectPath:b})).sort((c,b)=>c.id.localeCompare(b.id)),R=Z({queryKey:z.projectLibrary.history(w),queryFn:({signal:c})=>H("",{schema:xs,signal:c}),placeholderData:c=>{if(!c)return;const b=new Map(c.projects.map(({id:D,projectPath:X})=>[D,X]));if(!g.every(({id:D,projectPath:X})=>b.get(D)===X))return;const P=new Set(g.map(({id:D})=>D));return{projects:c.projects.filter(({id:D})=>P.has(D)),variants:c.variants.filter(({projectId:D})=>P.has(D))}},enabled:g.length>0,refetchInterval:We,retry:!1}),N=new Map((Oe=R.data)==null?void 0:Oe.projects.map(c=>[c.id,c])),p=g.map(c=>{const b=N.get(c.id);return{...c,issue:b?b.issue:c.issue,historyIssue:b?b.historyIssue:c.historyIssue}}),j=((Me=R.data)==null?void 0:Me.variants)??br,T=Rs({queries:p.map(c=>({queryKey:z.libraryProjectPreview.thumbnail(c.id,c.projectPath),queryFn:({signal:b})=>H(`/projects/${c.id}/thumbnail`,{schema:ms,signal:b}),enabled:a.kind==="library",refetchInterval:xr,retry:!1}))}),f=p.find(c=>c.id===a.projectId),S=j.find(c=>c.projectId===a.projectId&&c.sessionId===a.sessionId&&c.variantId===a.variantId),C=u.useCallback(c=>{window.history.pushState(null,"",as(c)),l(c)},[]);u.useEffect(()=>{f?o.current=f.id:h.isSuccess&&!h.isFetching&&a.projectId===o.current&&a.projectId&&(o.current=void 0,C({kind:"library"}))},[f,a.projectId,h.isSuccess,h.isFetching,C]),u.useEffect(()=>{const c=()=>l(He(new URL(window.location.href)));return window.addEventListener("popstate",c),()=>window.removeEventListener("popstate",c)},[]),u.useEffect(()=>{const c=new AbortController;let b;const P=async()=>{try{const D=await H(`/views/${m}`,{schema:cs,method:"PUT",body:{isFocused:document.visibilityState==="visible"&&document.hasFocus()},signal:c.signal});for(const X of D.navigations){if(c.signal.aborted)return;if(X.sequence>y.current){let ge="library";X.projectId&&(ge="workspace"),X.variantId&&(ge="preview"),C({...X,kind:ge}),y.current=X.sequence}await H(`/views/${m}/acknowledgements`,{schema:ls,method:"POST",body:{sequence:X.sequence},signal:c.signal})}}catch{}c.signal.aborted||(b=setTimeout(()=>{P()},pr))};return P(),()=>{c.abort(),clearTimeout(b)}},[m,C]);const O=Z({queryKey:z.libraryWorkspace(a.projectId),queryFn:()=>H(`/projects/${a.projectId}/runtime`,{schema:fs,method:"POST"}),enabled:a.kind==="workspace"&&!!a.projectId&&(f==null?void 0:f.isAvailable)===!0,retry:!1,refetchOnWindowFocus:!1}),Y=O.data?new URL(O.data.editorUrl).origin:null;u.useEffect(()=>{if(a.kind!=="workspace"||!Y)return;const c=b=>{!v.current||b.source!==v.current.contentWindow||b.origin!==Y||b.data!==ds||(t==null||t.capture("library_view_changed",{view:"projects"}),C({kind:"library"}))};return window.addEventListener("message",c),()=>window.removeEventListener("message",c)},[a.kind,Y,C,t]);const A=Z({queryKey:z.libraryPreview({projectId:a.projectId,sessionId:a.sessionId,variantId:a.variantId}),queryFn:()=>H(`/projects/${a.projectId}/variants/${a.sessionId}/${a.variantId}/preview`,{schema:bs,method:"POST"}),enabled:a.kind==="preview"&&!!(S!=null&&S.hasStaticPreview),retry:!1,refetchOnWindowFocus:!1}),E=de({mutationFn:c=>H(`/projects/${a.projectId}/variants/${a.sessionId}/${a.variantId}`,{schema:us,method:"PATCH",body:{label:c}}),onSuccess:()=>s.invalidateQueries({queryKey:z.projectLibrary.all})}),B=c=>{const b=p.find(P=>P.id===c);t==null||t.capture("library_project_selected",{project_id:c,workspace_available:(b==null?void 0:b.isAvailable)??!1}),C({kind:"workspace",projectId:c})},K=de({mutationFn:async c=>{const{projectPath:b}=await H("/folder-selections",{schema:hs,method:"POST"});return b===null?null:H(c?`/projects/${c}/workspace`:"/projects",{schema:Se,method:c?"PATCH":"POST",body:{projectPath:b}})},onSuccess:c=>{c&&(s.invalidateQueries({queryKey:z.projectLibrary.all}),t==null||t.capture("library_project_selected",{project_id:c.project.id,workspace_available:c.project.isAvailable}),C({kind:"workspace",projectId:c.project.id}))},onSettled:(c,b,P)=>{t==null||t.capture("library_open_project_closed",{is_relink:!!P})}}),_=c=>{K.isPending||(t==null||t.capture("library_open_project_opened",{is_relink:!!c}),K.mutate(c))},x=()=>{t==null||t.capture("library_view_changed",{view:"projects"}),C({kind:"library"})},M=()=>{t==null||t.capture("library_view_changed",{view:"workspace"}),C({...a,kind:"workspace"})},d=()=>{t==null||t.capture("library_history_retry"),R.refetch()};let I;if(a.kind==="workspace"&&(f==null?void 0:f.isAvailable)!==!1||a.kind==="preview"){let c=!1,b=e.jsxs("div",{className:"m-auto flex items-center gap-2 text-xs text-white/40",children:[e.jsx(yt,{size:14,className:"animate-spin"}),"Opening ",(f==null?void 0:f.name)??"project","…"]});if(h.data&&!f||R.data&&a.variantId&&!S)b=e.jsx("div",{className:"m-auto text-sm text-white/60",children:"This project or direction is no longer in your library."});else if(a.kind==="preview"&&R.error&&!R.data)b=e.jsx(fe,{error:R.error,retry:d});else if(a.kind==="workspace"&&O.error)b=e.jsx(fe,{error:O.error,retry:()=>{O.refetch()}});else if(a.kind==="workspace"&&O.data){c=!0;const P=new URL(O.data.editorUrl);P.searchParams.set("library","1"),P.searchParams.set("libraryOrigin",window.location.origin),a.sessionId&&a.variantId&&(P.searchParams.set("historySession",a.sessionId),P.searchParams.set("historyVariant",a.variantId)),b=e.jsx("iframe",{ref:v,title:`${(f==null?void 0:f.name)??"Project"} workspace`,src:P.toString(),allow:"clipboard-write","data-rivet-private":!0,className:"ph-no-capture min-h-0 w-full flex-1 border-0"},P.toString())}else a.kind==="preview"&&A.error?b=e.jsx(fe,{error:A.error,retry:()=>{A.refetch()}}):a.kind==="preview"&&A.data?b=e.jsx("iframe",{title:`${(S==null?void 0:S.label)??"Saved direction"} preview`,src:A.data.url,sandbox:"allow-scripts allow-same-origin allow-forms allow-popups",className:"min-h-0 w-full flex-1 border-0 bg-white"}):a.kind==="preview"&&S&&!S.hasStaticPreview&&(b=e.jsxs("div",{className:"m-auto max-w-sm text-center",children:[e.jsx("p",{className:"text-sm",children:S.hasInteractivePreview?"Open this direction in its workspace":"This direction contains saved code changes"}),e.jsx("p",{className:"mt-2 text-xs leading-6 text-white/40",children:S.hasInteractivePreview?"Rivet will start the preview with this project’s dependencies and configuration.":"Open the project to continue working with its saved history."}),e.jsx("button",{onClick:M,disabled:(f==null?void 0:f.isAvailable)===!1,className:"mt-5 rounded-lg bg-white px-4 py-2.5 text-xs font-medium text-black disabled:opacity-30",children:"Open workspace"})]}));I=e.jsxs(e.Fragment,{children:[a.kind==="preview"?e.jsxs("header",{className:"flex h-14 shrink-0 items-center gap-3 border-b border-white/[0.07] px-5",children:[e.jsx("button",{"aria-label":"Back to projects",onClick:x,className:"rounded p-1.5 text-white/45 hover:bg-white/5",children:e.jsx(is,{size:15})}),e.jsx("span",{className:"text-xs text-white/40",children:f==null?void 0:f.name}),S?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-white/20",children:"/"}),e.jsxs("form",{onSubmit:P=>{P.preventDefault();const D=new FormData(P.currentTarget);E.mutate(String(D.get("label")))},className:"flex min-w-0 flex-1 gap-2",children:[e.jsx("input",{name:"label","aria-label":"Direction name",defaultValue:S.label,className:"max-w-xs min-w-0 flex-1 bg-transparent text-xs text-white/80 outline-none"}),e.jsx("button",{disabled:E.isPending,className:"text-[10px] text-white/30 hover:text-white",children:"Rename"})]},`${S.projectId}:${S.variantId}`)]}):e.jsx("span",{className:"flex-1"}),a.kind==="preview"?e.jsxs("button",{onClick:M,disabled:(f==null?void 0:f.isAvailable)===!1,className:"flex items-center gap-1.5 rounded-md border border-white/10 px-3 py-1.5 text-[11px] text-white/70 disabled:opacity-30",children:["Edit in project",e.jsx(ut,{size:12})]}):null]}):null,a.kind==="workspace"&&!c?e.jsx("button",{onClick:x,className:"absolute top-5 left-5 rounded px-2 py-1 text-xs text-white/50 hover:bg-white/5 hover:text-white",children:"Projects"}):null,E.error?e.jsx("p",{role:"alert",className:"px-5 py-2 text-xs text-red-200",children:E.error.message}):null,b]})}let $=I;h.error&&!h.data?$=e.jsx(fe,{error:h.error,retry:()=>{h.refetch()}}):h.isPending&&($=e.jsx("div",{role:"status",className:"m-auto text-xs text-white/40",children:"Loading projects…"}));const J=a.kind==="references"?"references":"library",ae=e.jsx(hr,{view:J,onNavigate:c=>{t==null||t.capture("library_view_changed",{view:c==="references"?"references":"projects"}),C({kind:c})}});return a.kind==="references"&&($=e.jsx(ur,{onBrowseProjects:x})),e.jsxs(e.Fragment,{children:[e.jsx(Hs,{projects:p,variants:(Te=R.data)==null?void 0:Te.variants,historyError:(De=R.error)==null?void 0:De.message,onRetryHistory:d,projectPreviews:Object.fromEntries(p.map((c,b)=>{var P,D;return[c.id,(D=(P=T[b])==null?void 0:P.data)==null?void 0:D.preview]})),selectedProjectId:a.projectId??null,onSelectProject:B,onBrowseLibrary:x,navigation:ae,view:J,onOpenProject:_,onRenameProject:r,onRemoveProject:i,onSetProjectPinned:n,accountMenu:e.jsx(ns,{side:"top",align:"start"}),isOpeningProject:K.isPending,projectOpenError:(qe=K.error)==null?void 0:qe.message,onSearchCompleted:c=>t==null?void 0:t.capture("library_search_completed",{query_length:c}),children:$}),e.jsx(os,{position:"bottom-right",theme:"dark"})]})},vr=async t=>{const s=ks(),r=await ws("/api/library/browser-sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){const i=js.safeParse(await r.json().catch(()=>null));throw new Error(i.success?i.data.error:"Could not start a library session.")}Ns(Ss(await r.json()),s)},gr=()=>{const t=u.useSyncExternalStore(ct,vs),{startLogin:s,isStartingLogin:r,loginError:i}=gs("library",vr);return e.jsx("main",{className:"flex min-h-screen items-center justify-center bg-[#111215] px-6 text-white",children:e.jsxs("div",{className:"w-full max-w-sm rounded-2xl border border-white/10 bg-white/[0.04] p-8 text-center shadow-2xl",children:[e.jsx("h1",{className:"text-2xl font-semibold tracking-tight",children:"Rivet"}),e.jsx("p",{className:"mt-3 text-sm leading-6 text-white/60",children:"Sign in to open your project library on this computer."}),e.jsxs("button",{type:"button",onClick:()=>void s(),disabled:r,className:"mt-7 inline-flex h-10 w-full items-center justify-center gap-2 rounded-lg bg-white px-4 text-sm font-medium text-black disabled:opacity-60",children:[r?e.jsx(yt,{size:16,className:"animate-spin"}):null,r?"Connecting…":"Continue with Google"]}),i||t?e.jsx("p",{role:"alert",className:"mt-4 text-sm text-red-300",children:i??t}):null]})})},Nr=()=>u.useSyncExternalStore(ct,ys)?e.jsx(yr,{}):e.jsx(gr,{});export{Nr as default};
37
- //# sourceMappingURL=LibraryEntry-92R_T-Xa.js.map
@@ -1 +0,0 @@
1
- .la-scene{overflow:hidden;isolation:isolate;background:radial-gradient(130% 120% at 50% 42%,#fff 60%,#f0efec)}.la-obj{position:absolute;top:0;left:0;transform-origin:50% 50%;will-change:transform,opacity,filter;-webkit-user-select:none;user-select:none;pointer-events:none}.la-obj img{display:block;width:100%;height:auto;filter:drop-shadow(0 10px 12px rgba(40,33,28,.22)) drop-shadow(0 2px 3px rgba(40,33,28,.18))}.la-logo-stage{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none}.la-mark{position:absolute;top:0;left:0;width:100%;height:100%}/*! tailwindcss v4.3.4 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-200:oklch(92.4% .12 95.746);--color-emerald-500:oklch(69.6% .17 162.48);--color-sky-400:oklch(74.6% .16 232.661);--color-neutral-900:oklch(20.5% 0 none);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-2xl:42rem;--container-3xl:48rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wide:.025em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--aspect-video:16 / 9;--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)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before{border-color:var(--color-main-border,#232328)}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-px{top:1px;right:1px;bottom:1px;left:1px}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-5{top:calc(var(--spacing) * 5)}.right-0{right:0}.right-1{right:var(--spacing)}.right-2{right:calc(var(--spacing) * 2)}.bottom-0{bottom:0}.left-0{left:0}.left-1{left:var(--spacing)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-5{left:calc(var(--spacing) * 5)}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.z-\[100\]{z-index:100}.z-content{z-index:10}.z-max{z-index:999999}.z-modal{z-index:30}.z-tooltip{z-index:70}.z-ui-primary{z-index:50}.z-ui-secondary{z-index:40}.order-first{order:-9999}.col-span-2{grid-column:span 2/span 2}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-m-2{margin:calc(var(--spacing) * -2)}.m-auto{margin:auto}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.mx-auto{margin-inline:auto}.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-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mr-1{margin-right:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-7{margin-bottom:calc(var(--spacing) * 7)}.mb-9{margin-bottom:calc(var(--spacing) * 9)}.ml-3{margin-left:calc(var(--spacing) * 3)}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.table{display:table}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-video{aspect-ratio:var(--aspect-video)}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.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-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-44{height:calc(var(--spacing) * 44)}.h-56{height:calc(var(--spacing) * 56)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-\[65vh\]{max-height:65vh}.max-h-\[min\(680px\,calc\(100vh-32px\)\)\]{max-height:min(680px,100vh - 32px)}.min-h-0{min-height:0}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-32{min-height:calc(var(--spacing) * 32)}.min-h-44{min-height:calc(var(--spacing) * 44)}.min-h-72{min-height:calc(var(--spacing) * 72)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-\[64px\]{min-height:64px}.min-h-screen{min-height:100vh}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:var(--spacing)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-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-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-\[360px\]{width:360px}.w-\[440px\]{width:440px}.w-\[calc\(100\%\+1rem\)\]{width:calc(100% + 1rem)}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-\[min\(440px\,calc\(100vw-32px\)\)\]{width:min(440px,100vw - 32px)}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-60{max-width:calc(var(--spacing) * 60)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-\[8rem\]{max-width:8rem}.max-w-\[14rem\]{max-width:14rem}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, )}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-auto{cursor:auto}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[minmax\(140px\,1fr\)_minmax\(110px\,auto\)_minmax\(220px\,2fr\)\]{grid-template-columns:minmax(140px,1fr) minmax(110px,auto) minmax(220px,2fr)}.grid-rows-subgrid{grid-template-rows:subgrid}.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-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-\[inherit\]{gap:inherit}: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-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-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-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-7>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 7) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 7) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:var(--spacing)}.gap-y-8{row-gap:calc(var(--spacing) * 8)}: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)}:where(.divide-main-border>:not(:last-child)){border-color:#232328}.self-center{align-self:center}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[10px\]{border-radius:10px}.rounded-\[20px\]{border-radius:20px}.rounded-\[22px\]{border-radius:22px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-\[\#6B97FF\]{border-color:#6b97ff}.border-accent-success\/40{border-color:#10b98166}.border-accent-warning\/40{border-color:#f59e0b66}.border-accent\/40{border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.border-accent\/40{border-color:color-mix(in oklab,var(--accent) 40%,transparent)}}.border-amber-200\/10{border-color:#fee6851a}@supports (color:color-mix(in lab,red,red)){.border-amber-200\/10{border-color:color-mix(in oklab,var(--color-amber-200) 10%,transparent)}}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.border-black\/10{border-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.border-border{border-color:var(--border)}.border-content-muted\/40{border-color:#d1d5db66}.border-current{border-color:currentColor}.border-divider{border-color:#4b5563}.border-hover{border-color:var(--hover)}.border-main-border{border-color:#232328}.border-orange-400{border-color:var(--color-orange-400)}.border-primary\/40{border-color:#f306}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.border-white\/15{border-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.border-white\/15{border-color:color-mix(in oklab,var(--color-white) 15%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.border-white\/35{border-color:#ffffff59}@supports (color:color-mix(in lab,red,red)){.border-white\/35{border-color:color-mix(in oklab,var(--color-white) 35%,transparent)}}.border-white\/\[0\.07\]{border-color:#ffffff12}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.07\]{border-color:color-mix(in oklab,var(--color-white) 7%,transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab,var(--color-white) 8%,transparent)}}.border-t-transparent{border-top-color:#0000}.bg-\[\#1c1c20\]{background-color:#1c1c20}.bg-\[\#111215\]{background-color:#111215}.bg-\[\#b1b1b1\]{background-color:#b1b1b1}.bg-\[var\(--btn-bg\)\]{background-color:var(--btn-bg)}.bg-accent{background-color:var(--accent)}.bg-accent-error{background-color:#ef4444}.bg-accent-success{background-color:#10b981}.bg-accent-success\/10{background-color:#10b9811a}.bg-accent-warning{background-color:#f59e0b}.bg-accent-warning\/10{background-color:#f59e0b1a}.bg-accent\/10{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--accent) 10%,transparent)}}.bg-accent\/20{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--accent) 20%,transparent)}}.bg-amber-200\/\[0\.03\]{background-color:#fee68508}@supports (color:color-mix(in lab,red,red)){.bg-amber-200\/\[0\.03\]{background-color:color-mix(in oklab,var(--color-amber-200) 3%,transparent)}}.bg-background{background-color:var(--background)}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/55{background-color:#0000008c}@supports (color:color-mix(in lab,red,red)){.bg-black\/55{background-color:color-mix(in oklab,var(--color-black) 55%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-content-muted{background-color:#d1d5db}.bg-current{background-color:currentColor}.bg-divider{background-color:#4b5563}.bg-foreground{background-color:var(--foreground)}.bg-hover{background-color:var(--hover)}.bg-input{background-color:var(--input)}.bg-main{background-color:#1c1c20}.bg-main-hover{background-color:#404040}.bg-main-input{background-color:#2e2e2e}.bg-main-input\/40{background-color:#2e2e2e66}.bg-main-light{background-color:#1e1e22}.bg-main\/90{background-color:#1c1c20e6}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/10{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/10{background-color:color-mix(in oklab,var(--muted-foreground) 10%,transparent)}}.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-neutral-900{background-color:var(--color-neutral-900)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:#f30}.bg-primary\/10{background-color:#ff33001a}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/15{background-color:color-mix(in oklab,var(--color-red-500) 15%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-selected{background-color:var(--selected)}.bg-surface-1{background-color:var(--surface-1)}.bg-surface-2{background-color:var(--surface-2)}.bg-surface-3{background-color:var(--surface-3)}.bg-surface-4{background-color:var(--surface-4)}.bg-surface-5{background-color:var(--surface-5)}.bg-surface-6{background-color:var(--surface-6)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.bg-white\/15{background-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.bg-white\/15{background-color:color-mix(in oklab,var(--color-white) 15%,transparent)}}.bg-white\/\[0\.02\]{background-color:#ffffff05}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.02\]{background-color:color-mix(in oklab,var(--color-white) 2%,transparent)}}.bg-white\/\[0\.03\]{background-color:#ffffff08}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.03\]{background-color:color-mix(in oklab,var(--color-white) 3%,transparent)}}.bg-white\/\[0\.04\]{background-color:#ffffff0a}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.04\]{background-color:color-mix(in oklab,var(--color-white) 4%,transparent)}}.bg-white\/\[0\.08\]{background-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.08\]{background-color:color-mix(in oklab,var(--color-white) 8%,transparent)}}.bg-white\/\[0\.012\]{background-color:#ffffff03}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.012\]{background-color:color-mix(in oklab,var(--color-white) 1.2%,transparent)}}.bg-white\/\[0\.025\]{background-color:#ffffff06}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.025\]{background-color:color-mix(in oklab,var(--color-white) 2.5%,transparent)}}.bg-white\/\[0\.035\]{background-color:#ffffff09}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.035\]{background-color:color-mix(in oklab,var(--color-white) 3.5%,transparent)}}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-top{object-position:top}.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)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-10{padding-inline:calc(var(--spacing) * 10)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-8{padding-top:calc(var(--spacing) * 8)}.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-5{padding-right:calc(var(--spacing) * 5)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pr-16{padding-right:calc(var(--spacing) * 16)}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-14{padding-bottom:calc(var(--spacing) * 14)}.pb-\[14vh\]{padding-bottom:14vh}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-\[33px\]{padding-left:33px}.text-center{text-align:center}.text-left{text-align:left}.font-main{font-family:Satoshi,Inter,system-ui,-apple-system,Segoe UI,sans-serif}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.22em\]{--tw-tracking:.22em;letter-spacing:.22em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#18181b\]{color:#18181b}.text-\[\#71717a\]{color:#71717a}.text-\[\#e60023\]{color:#e60023}.text-accent{color:var(--accent)}.text-accent-success{color:#10b981}.text-accent-warning{color:#f59e0b}.text-amber-200\/65{color:#fee685a6}@supports (color:color-mix(in lab,red,red)){.text-amber-200\/65{color:color-mix(in oklab,var(--color-amber-200) 65%,transparent)}}.text-background{color:var(--background)}.text-black{color:var(--color-black)}.text-content{color:#fff}.text-content-muted{color:#d1d5db}.text-content-subtle{color:#9ca3af}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:#f30}.text-red-200{color:var(--color-red-200)}.text-red-300{color:var(--color-red-300)}.text-red-500{color:var(--color-red-500)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sky-400{color:var(--color-sky-400)}.text-white{color:var(--color-white)}.text-white\/20{color:#fff3}@supports (color:color-mix(in lab,red,red)){.text-white\/20{color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.text-white\/25{color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.text-white\/25{color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.text-white\/30{color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.text-white\/30{color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.text-white\/35{color:#ffffff59}@supports (color:color-mix(in lab,red,red)){.text-white\/35{color:color-mix(in oklab,var(--color-white) 35%,transparent)}}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab,red,red)){.text-white\/40{color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.text-white\/45{color:#ffffff73}@supports (color:color-mix(in lab,red,red)){.text-white\/45{color:color-mix(in oklab,var(--color-white) 45%,transparent)}}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.text-white\/50{color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\/60{color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.text-white\/75{color:#ffffffbf}@supports (color:color-mix(in lab,red,red)){.text-white\/75{color:color-mix(in oklab,var(--color-white) 75%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, )}.underline{text-decoration-line:underline}.decoration-white\/30{text-decoration-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.decoration-white\/30{-webkit-text-decoration-color:color-mix(in oklab,var(--color-white) 30%,transparent);text-decoration-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.underline-offset-4{text-underline-offset:4px}.placeholder-content-subtle::placeholder{color:#9ca3af}.opacity-0{opacity:0}.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-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_transparent\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,transparent);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_var\(--border\)\,inset_0_0_0_0px_var\(--border\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--border)), inset 0 0 0 0px var(--tw-shadow-color,var(--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_0_0_1px_var\(--btn-bg\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--btn-bg));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(0\,0\,0\,0\.2\)\,0_4px_16px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#0003), 0 4px 16px 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_4px_12px_rgba\(0\,0\,0\,0\.28\)\,0_10px_24px_rgba\(0\,0\,0\,0\.16\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#00000047), 0 10px 24px var(--tw-shadow-color,#00000029);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_8px_24px_rgba\(40\,33\,28\,0\.14\)\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#28211c24);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-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-surface-3{--tw-shadow:var(--shadow-surface-3);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-surface-4{--tw-shadow:var(--shadow-surface-4);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-content-muted\/30{--tw-ring-color:oklab(87.1681% -.00188759 -.00914592/.3)}.ring-content-muted\/70{--tw-ring-color:oklab(87.1681% -.00188759 -.00914592/.7)}.ring-secondary{--tw-ring-color:var(--secondary)}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-transparent{outline-color:#0000}.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, )}.brightness-0{--tw-brightness:brightness(0%);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, )}.invert{--tw-invert:invert(100%);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, )}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\,box-shadow\]{transition-property:background-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[box-shadow\,background-color\]{transition-property:box-shadow,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,font-variation-settings\]{transition-property:color,font-variation-settings;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,stroke-width\]{transition-property:color,stroke-width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[outline-color\]{transition-property:outline-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-80{--tw-duration:80ms;transition-duration:80ms}.duration-150{--tw-duration:.15s;transition-duration:.15s}.\[transition-duration\:180ms\,80ms\]{transition-duration:.18s,80ms}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.\[transition-timing-function\:cubic-bezier\(0\.23\,1\,0\.32\,1\)\,ease\]{transition-timing-function:cubic-bezier(.23,1,.32,1),ease}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.\[--btn-bg\:var\(--accent\)\]{--btn-bg:var(--accent)}.\[--btn-bg\:var\(--foreground\)\]{--btn-bg:var(--foreground)}.\[text-box\:trim-both_cap_alphabetic\]{text-box:trim-both cap alphabetic}:is(:where(.group\/card):focus-within .group-focus-within\/card\:pointer-events-auto){pointer-events:auto}:is(:where(.group\/card):focus-within .group-focus-within\/card\:opacity-100){opacity:1}@media(hover:hover){:is(:where(.group):hover .group-hover\:pointer-events-auto){pointer-events:auto}:is(:where(.group):hover .group-hover\:border-border){border-color:var(--border)}:is(:where(.group):hover .group-hover\:text-white\/65){color:#ffffffa6}@supports (color:color-mix(in lab,red,red)){:is(:where(.group):hover .group-hover\:text-white\/65){color:color-mix(in oklab,var(--color-white) 65%,transparent)}}:is(:where(.group):hover .group-hover\:opacity-100){opacity:1}:is(:where(.group\/button):hover .group-hover\/button\:bg-hover){background-color:var(--hover)}:is(:where(.group\/button):hover .group-hover\/button\:shadow-\[0_0_0_1px_var\(--hover\)\]){--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--hover));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.group\/button):hover .group-hover\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--accent\)_80\%\,var\(--background\)\)\]){--btn-bg:var(--accent)}@supports (color:color-mix(in lab,red,red)){:is(:where(.group\/button):hover .group-hover\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--accent\)_80\%\,var\(--background\)\)\]){--btn-bg:color-mix(in oklab,var(--accent) 80%,var(--background))}}:is(:where(.group\/button):hover .group-hover\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--foreground\)_90\%\,var\(--background\)\)\]){--btn-bg:var(--foreground)}@supports (color:color-mix(in lab,red,red)){:is(:where(.group\/button):hover .group-hover\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--foreground\)_90\%\,var\(--background\)\)\]){--btn-bg:color-mix(in oklab,var(--foreground) 90%,var(--background))}}:is(:where(.group\/card):hover .group-hover\/card\:pointer-events-auto){pointer-events:auto}:is(:where(.group\/card):hover .group-hover\/card\:opacity-100){opacity:1}:is(:where(.group\/project):hover .group-hover\/project\:pointer-events-auto){pointer-events:auto}:is(:where(.group\/project):hover .group-hover\/project\:opacity-100){opacity:1}:is(:where(.group\/resize):hover .group-hover\/resize\:w-0\.5){width:calc(var(--spacing) * .5)}:is(:where(.group\/resize):hover .group-hover\/resize\:bg-content-muted){background-color:#d1d5db}}:is(:where(.group):focus-visible .group-focus-visible\:text-white\/65){color:#ffffffa6}@supports (color:color-mix(in lab,red,red)){:is(:where(.group):focus-visible .group-focus-visible\:text-white\/65){color:color-mix(in oklab,var(--color-white) 65%,transparent)}}:is(:where(.group\/button):active .group-active\/button\:bg-active){background-color:var(--active)}:is(:where(.group\/button):active .group-active\/button\:shadow-\[0_0_0_0px_var\(--active\)\]){--tw-shadow:0 0 0 0px var(--tw-shadow-color,var(--active));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.group\/button):active .group-active\/button\:shadow-\[0_0_0_0px_var\(--border\)\,inset_0_0_0_1px_var\(--border\)\]){--tw-shadow:0 0 0 0px var(--tw-shadow-color,var(--border)), inset 0 0 0 1px var(--tw-shadow-color,var(--border));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.group\/button):active .group-active\/button\:shadow-\[0_0_0_0px_var\(--btn-bg\)\]){--tw-shadow:0 0 0 0px var(--tw-shadow-color,var(--btn-bg));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.group\/button):active .group-active\/button\:\[transition-duration\:80ms\,80ms\]){transition-duration:80ms,80ms}:is(:where(.group\/button):active .group-active\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--foreground\)_80\%\,var\(--background\)\)\]){--btn-bg:var(--foreground)}@supports (color:color-mix(in lab,red,red)){:is(:where(.group\/button):active .group-active\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--foreground\)_80\%\,var\(--background\)\)\]){--btn-bg:color-mix(in oklab,var(--foreground) 80%,var(--background))}}:is(:where(.group\/button):active .group-active\/button\:\[--btn-bg\:var\(--accent\)\]){--btn-bg:var(--accent)}:is(:where(.group\/button)[aria-expanded=true] .group-aria-expanded\/button\:bg-active){background-color:var(--active)}:is(:where(.group\/button)[aria-expanded=true] .group-aria-expanded\/button\:shadow-\[0_0_0_0px_var\(--active\)\]){--tw-shadow:0 0 0 0px var(--tw-shadow-color,var(--active));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.group\/button)[aria-pressed=true] .group-aria-pressed\/button\:bg-active){background-color:var(--active)}:is(:where(.group\/button)[aria-pressed=true] .group-aria-pressed\/button\:shadow-\[0_0_0_0px_var\(--active\)\]){--tw-shadow:0 0 0 0px var(--tw-shadow-color,var(--active));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.peer):focus-visible~.peer-focus-visible\: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)}:is(:where(.peer):focus-visible~.peer-focus-visible\:ring-white){--tw-ring-color:var(--color-white)}:is(:where(.peer):focus-visible~.peer-focus-visible\:ring-offset-2){--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}:is(:where(.peer):disabled~.peer-disabled\:opacity-40){opacity:.4}.placeholder\:text-content-muted::placeholder{color:#d1d5db}.placeholder\:text-white\/30::placeholder{color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-white\/30::placeholder{color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.focus-within\:outline-white\/20:focus-within{outline-color:#fff3}@supports (color:color-mix(in lab,red,red)){.focus-within\:outline-white\/20:focus-within{outline-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}@media(hover:hover){.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-content-muted\/50:hover{border-color:#d1d5db80}.hover\:bg-\[\#2a2a2a\]:hover{background-color:#2a2a2a}.hover\:bg-\[\#faf9f7\]:hover{background-color:#faf9f7}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-hover:hover{background-color:var(--hover)}.hover\:bg-main-border:hover{background-color:#232328}.hover\:bg-main-hover:hover{background-color:#404040}.hover\:bg-main-input:hover{background-color:#2e2e2e}.hover\:bg-main-input\/80:hover{background-color:#2e2e2ecc}.hover\:bg-main-light:hover{background-color:#1e1e22}.hover\:bg-main\/80:hover{background-color:#1c1c20cc}.hover\:bg-red-500\/25:hover{background-color:#fb2c3640}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/25:hover{background-color:color-mix(in oklab,var(--color-red-500) 25%,transparent)}}.hover\:bg-surface-3:hover{background-color:var(--surface-3)}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.hover\:bg-white\/\[0\.03\]:hover{background-color:#ffffff08}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.03\]:hover{background-color:color-mix(in oklab,var(--color-white) 3%,transparent)}}.hover\:bg-white\/\[0\.06\]:hover{background-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.06\]:hover{background-color:color-mix(in oklab,var(--color-white) 6%,transparent)}}.hover\:text-content:hover{color:#fff}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-white:hover{color:var(--color-white)}.hover\:text-white\/80:hover{color:#fffc}@supports (color:color-mix(in lab,red,red)){.hover\:text-white\/80:hover{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-secondary:focus{border-color:var(--secondary)}.focus\:border-white\/50:focus{border-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.focus\:border-white\/50:focus{border-color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.focus\:bg-hover:focus{background-color:var(--hover)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-content-muted\/40:focus{--tw-ring-color:oklab(87.1681% -.00188759 -.00914592/.4)}.focus\:ring-content-muted\/50:focus{--tw-ring-color:oklab(87.1681% -.00188759 -.00914592/.5)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:bg-hover:focus-visible{background-color:var(--hover)}.focus-visible\:bg-white\/\[0\.06\]:focus-visible{background-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.focus-visible\:bg-white\/\[0\.06\]:focus-visible{background-color:color-mix(in oklab,var(--color-white) 6%,transparent)}}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-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-\[\#6B97FF\]:focus-visible{--tw-ring-color:#6b97ff}.focus-visible\:ring-\[color\:var\(--focus-ring\,\#6B97FF\)\]:focus-visible{--tw-ring-color:var(--focus-ring,#6b97ff)}.focus-visible\:ring-content-muted\/40:focus-visible{--tw-ring-color:oklab(87.1681% -.00188759 -.00914592/.4)}.focus-visible\:ring-white\/50:focus-visible{--tw-ring-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-white\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.focus-visible\:ring-white\/75:focus-visible{--tw-ring-color:#ffffffbf}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-white\/75:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-white) 75%, transparent)}}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-4:focus-visible{--tw-ring-offset-width:4px;--tw-ring-offset-shadow:var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:var(--background)}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:-outline-offset-2:focus-visible{outline-offset:-2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-offset-4:focus-visible{outline-offset:4px}.focus-visible\:outline-content:focus-visible{outline-color:#fff}.focus-visible\:outline-white\/60:focus-visible{outline-color:#fff9}@supports (color:color-mix(in lab,red,red)){.focus-visible\:outline-white\/60:focus-visible{outline-color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.has-\[\:focus-visible\]\:pointer-events-auto:has(:focus-visible){pointer-events:auto}.has-\[\:focus-visible\]\:opacity-100:has(:focus-visible){opacity:1}.aria-expanded\:text-foreground[aria-expanded=true],.aria-pressed\:text-foreground[aria-pressed=true]{color:var(--foreground)}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}@media(prefers-reduced-motion:no-preference){.motion-safe\:animate-\[spinner-move_2s_linear_infinite\,spinner-dash_4s_ease-in-out_infinite\]{animation:2s linear infinite spinner-move,4s ease-in-out infinite spinner-dash}}@media(prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}@media not all and (min-width:40rem){.max-sm\:flex-1{flex:1}.max-sm\:px-5{padding-inline:calc(var(--spacing) * 5)}}@media(min-width:400px){.min-\[400px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:40rem){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:col-start-2{grid-column-start:2}.sm\:col-start-3{grid-column-start:3}.sm\:row-start-1{grid-row-start:1}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}}@media(min-width:48rem){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[1fr_1fr\]{grid-template-columns:1fr 1fr}.lg\:flex-row{flex-direction:row}.lg\:items-end{align-items:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media(min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:96rem){.\32xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(prefers-color-scheme:dark){.dark\:bg-accent\/12{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-accent\/12{background-color:color-mix(in oklab,var(--accent) 12%,transparent)}}}.\[\&_svg\]\:h-3\.5 svg{height:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:h-4 svg{height:calc(var(--spacing) * 4)}.\[\&_svg\]\:w-3\.5 svg{width:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:w-4 svg{width:calc(var(--spacing) * 4)}.\[\&\:\:-webkit-search-cancel-button\]\:hidden::-webkit-search-cancel-button{display:none}@media(hover:none){.\[\@media\(hover\:none\)\]\:pointer-events-auto{pointer-events:auto}.\[\@media\(hover\:none\)\]\:opacity-100{opacity:1}}}:root{--background:#1c1c20;--foreground:#fff;--card:#1e1e22;--card-foreground:#fff;--bg-main:#1c1c20;--main-border:#232328;--popover:var(--surface-4);--popover-foreground:#fff;--primary:#f30;--primary-foreground:#fff;--secondary:#2e2e2e;--secondary-foreground:#fff;--muted:#2e2e2e;--muted-foreground:#9ca3af;--accent:#333;--accent-foreground:#fff;--selected:#404040;--border:#ffffff1f;--input:#404040;--ring:#404040;--destructive:#ef4444;--destructive-foreground:#fff;--destructive-light:#450a0a;--hover:#ffffff0f;--active:#ffffff1a;--checker-a:#1f1f1f;--checker-b:#2a2a2a;--surface-1:#1c1c20;--surface-2:#232328;--surface-3:#2a2a30;--surface-4:#313138;--surface-5:#383840;--surface-6:#3f3f48;--surface-7:#464650;--surface-8:#4d4d58;--dm-hi-base:#ffffff03;--dm-hi-mid:#ffffff05;--dm-hi-high:#ffffff0a;--dm-hi-peak:#ffffff0f;--dm-ring-base:#ffffff05;--dm-ring-mid:#ffffff0a;--dm-ring-high:#ffffff0f;--dm-drop:#0000002e;--shadow-surface-1:inset 0 0 0 1px var(--dm-ring-base);--shadow-surface-2:inset 0 1px 0 0 var(--dm-hi-base), inset 0 0 0 1px var(--dm-ring-base), 0 1px 1px -.5px var(--dm-drop);--shadow-surface-3:inset 0 1px 0 0 var(--dm-hi-mid), inset 0 0 0 1px var(--dm-ring-base), 0 0 0 1px #0000001f, 0 1px 1px -.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop);--shadow-surface-4:inset 0 1px 0 0 var(--dm-hi-mid), inset 0 0 0 1px var(--dm-ring-mid), 0 0 0 1px #00000024, 0 1px 1px -.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop);--shadow-surface-5:inset 0 1px 0 0 var(--dm-hi-high), inset 0 0 0 1px var(--dm-ring-mid), 0 0 0 1px #00000029, 0 1px 1px -.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop), 0 12px 12px -6px var(--dm-drop);--shadow-surface-6:inset 0 1px 0 0 var(--dm-hi-high), inset 0 0 0 1px var(--dm-ring-high), 0 0 0 1px #0000002e, 0 1px 1px -.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop), 0 12px 12px -6px var(--dm-drop), 0 24px 24px -12px var(--dm-drop);--shadow-surface-7:inset 0 1px 0 0 var(--dm-hi-peak), inset 0 0 0 1px var(--dm-ring-high), 0 0 0 1px #0003, 0 1px 1px -.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop), 0 12px 12px -6px var(--dm-drop), 0 24px 24px -12px var(--dm-drop), 0 48px 48px -24px var(--dm-drop);--shadow-surface-8:inset 0 1px 0 0 var(--dm-hi-peak), inset 0 0 0 1px var(--dm-ring-high), 0 0 0 1px #00000038, 0 1px 1px -.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop), 0 12px 12px -6px var(--dm-drop), 0 24px 24px -12px var(--dm-drop), 0 48px 48px -24px var(--dm-drop), 0 96px 96px -48px var(--dm-drop)}html,body{background-color:var(--background);overflow:hidden}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-family:Satoshi,Inter,system-ui,sans-serif}@font-face{font-family:Satoshi;src:url(/fonts/Satoshi-Variable.woff2)format("woff2-variations");font-weight:300 900;font-style:normal;font-display:swap}@font-face{font-family:Satoshi;src:url(/fonts/Satoshi-VariableItalic.woff2)format("woff2-variations");font-weight:300 900;font-style:italic;font-display:swap}@font-face{font-family:Goldman;src:url(/fonts/Goldman-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Goldman;src:url(/fonts/Goldman-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@keyframes rivet-token-highlight{0%{transform:scale(1.05);box-shadow:0 0 0 2px #facc15,0 0 0 6px #facc1580}50%{transform:scale(1.02);box-shadow:0 0 0 2px #facc15,0 0 0 8px #facc1599}to{transform:scale(1);box-shadow:0 0 #facc1500,0 0 #facc1500}}*{scrollbar-width:thin;scrollbar-color:#404040 transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0;border-radius:4px}::-webkit-scrollbar-thumb{background:#3a3a3f padding-box padding-box;border:2px solid #0000;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#505058 padding-box padding-box;border:2px solid #0000}::-webkit-scrollbar-corner{background:0 0}.markdown-content{color:#fff;word-break:break-word;overflow-wrap:anywhere;min-width:0;font-size:.875rem;line-height:1.625}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{color:#fff;margin-top:1rem;margin-bottom:.25rem;font-weight:600;line-height:1.3}.markdown-content h1{font-size:1.25rem}.markdown-content h2{font-size:1.125rem}.markdown-content h3{font-size:1rem}.markdown-content p{margin:.5rem 0}.markdown-content strong{color:#fff;font-weight:600}.markdown-content em{font-style:italic}.markdown-content a{color:#60a5fa;text-decoration:underline}.markdown-content a:hover{color:#93bbfd}.markdown-content ul,.markdown-content ol{margin:.5rem 0;padding-left:1.25rem}.markdown-content ul{list-style-type:disc}.markdown-content ol{list-style-type:decimal}.markdown-content li{margin:.25rem 0}.markdown-content li>ul,.markdown-content li>ol{margin:0}.markdown-inline-code{color:#e5e7eb;overflow-wrap:anywhere;background:#ffffff1a;border-radius:.25rem;padding:.125rem .375rem;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:.8125rem}.markdown-content blockquote{color:#9ca3af;border-left:3px solid #4b5563;margin:.5rem 0;padding-left:.75rem}.markdown-content table{border-collapse:collapse;width:100%;margin:.5rem 0;font-size:.8125rem}.markdown-content th,.markdown-content td{text-align:left;border:1px solid #4b5563;padding:.375rem .625rem}.markdown-content th{color:#fff;background:#ffffff0d;font-weight:600}.markdown-content hr{border:none;border-top:1px solid #4b5563;margin:.75rem 0}.markdown-content del{color:#9ca3af;text-decoration:line-through}.markdown-content>:first-child{margin-top:0}.markdown-content>:last-child{margin-bottom:0}@keyframes rivet-sparkle-scroll{0%{transform:translateY(0)}to{transform:translateY(-6em)}}.rivet-sparkle-strip{animation:.9s steps(6,end) infinite rivet-sparkle-scroll}@media(prefers-reduced-motion:reduce){.rivet-sparkle-strip{animation:none}}.rivet-skeleton{background-color:#a3a3aa14;position:relative;overflow:hidden}.rivet-skeleton:after{content:"";background:linear-gradient(100deg,#0000 20%,#ffffff0f,#0000 80%);animation:1.6s ease-in-out infinite rivet-skeleton-sweep;position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%)}@keyframes rivet-skeleton-sweep{to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.rivet-skeleton:after{animation:none}}@keyframes shimmer{0%{background-position:0 0}to{background-position:100% 0}}.shimmer-text{-webkit-text-fill-color:transparent;color:#0000;background:linear-gradient(90deg,#a3a3a3,#a3a3a3 35%,#525252,#a3a3a3 65%,#a3a3a3) 0 0/300% 100%;-webkit-background-clip:text;background-clip:text;animation:1.5s ease-in-out infinite shimmer}.glass-panel{-webkit-backdrop-filter:blur(20px);background:#ffffff04;border:1px solid #ffffff08}.active-push:active{transition:transform .1s;transform:scale(.98)}:root{--variant-split-ease:cubic-bezier(.4, 0, .2, 1);--variant-split-accent:var(--color-primary,#f30);--variant-split-zone-bg:#26262aeb;--variant-split-zone-border:#ffffff0a;--variant-split-zone-shadow:0 30px 60px -20px #0000008c, 0 0 90px 10px #ffdca00d}.variant-preview-region{isolation:isolate}.variant-preview-primary{transition:filter .2s var(--variant-split-ease)}.variant-preview-region.is-dragging .variant-preview-primary{filter:brightness(.92)saturate(.92)}.variant-preview-region.is-dragging iframe{pointer-events:none}.variant-preview-atmosphere{pointer-events:none;opacity:0;z-index:30;transition:opacity .2s var(--variant-split-ease);background:radial-gradient(60% 50%,#0000,#00000059);position:absolute;top:0;right:0;bottom:0;left:0}.variant-preview-region.is-dragging .variant-preview-atmosphere{opacity:1}.variant-drop-zones{pointer-events:none;z-index:50;position:absolute;top:16px;right:16px;bottom:16px;left:16px}.variant-drop-zone{background:var(--variant-split-zone-bg);border:1px solid var(--variant-split-zone-border);pointer-events:auto;opacity:0;filter:blur(12px);width:14%;min-width:130px;max-width:180px;box-shadow:var(--variant-split-zone-shadow);transition:opacity .32s var(--variant-split-ease),transform .32s var(--variant-split-ease),filter .32s var(--variant-split-ease),box-shadow .24s var(--variant-split-ease);border-radius:14px;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;transform:scale(.94)}.variant-drop-zone.is-left{left:8px}.variant-drop-zone.is-right{right:8px}.variant-drop-zones.is-visible .variant-drop-zone{opacity:1;filter:blur();transform:scale(1)}.variant-drop-zones.is-exiting .variant-drop-zone{opacity:0;filter:blur(8px);transition:opacity .2s var(--variant-split-ease),transform .2s var(--variant-split-ease),filter .2s var(--variant-split-ease);transform:scale(.97)}.variant-drop-zone.is-disabled{opacity:.6;filter:blur(2px)saturate(.6)}.variant-drop-zone-inner{opacity:0;filter:blur(4px);transition:opacity .22s var(--variant-split-ease),transform .22s var(--variant-split-ease),filter .22s var(--variant-split-ease);flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;top:0;right:0;bottom:0;left:0;transform:translateY(6px)}.variant-drop-zones.is-visible .variant-drop-zone-inner{opacity:1;filter:blur();transition-delay:.18s;transform:translateY(0)}.variant-drop-zone.is-hover .variant-drop-zone-caption{color:var(--variant-split-accent)}.variant-drop-zone-icon{border:1.5px solid #ffffff73;border-radius:6px;width:36px;height:28px;position:relative;overflow:hidden}.variant-drop-zone-icon:after{content:"";background:#ffffff73;width:1.5px;position:absolute;top:0;bottom:0}.variant-drop-zone-icon.is-left:after{left:11px}.variant-drop-zone-icon.is-right:after{right:11px}.variant-drop-zone-icon.is-left:before{content:"";background:#ffffff14;width:11px;position:absolute;top:0;bottom:0;left:0}.variant-drop-zone-icon.is-right:before{content:"";background:#ffffff14;width:11px;position:absolute;top:0;bottom:0;right:0}.variant-drop-zone.is-hover .variant-drop-zone-icon{border-color:var(--variant-split-accent)}.variant-drop-zone.is-hover .variant-drop-zone-icon:after,.variant-drop-zone.is-hover .variant-drop-zone-icon.is-left:before,.variant-drop-zone.is-hover .variant-drop-zone-icon.is-right:before{background:var(--variant-split-accent)}@supports (color:color-mix(in lab,red,red)){.variant-drop-zone.is-hover .variant-drop-zone-icon.is-left:before,.variant-drop-zone.is-hover .variant-drop-zone-icon.is-right:before{background:color-mix(in srgb,var(--variant-split-accent) 22%,transparent)}}.variant-drop-zone-caption{letter-spacing:.02em;color:#fff9;text-align:center;max-width:80%;font-size:11.5px;line-height:1.35}.variant-drop-zone-border{border:2px dashed var(--variant-split-accent);opacity:0;transition:opacity .24s var(--variant-split-ease);pointer-events:none;border-radius:10px;position:absolute;top:4px;right:4px;bottom:4px;left:4px}.variant-drop-zone.is-hover .variant-drop-zone-border{opacity:1}.variant-drop-zone-preview{display:none}.variant-drag-ghost{pointer-events:none;z-index:60;background:#1f1f21f5;border:1px solid #ffffff0f;border-radius:10px;padding:8px 12px;position:fixed;top:0;left:0;box-shadow:inset 0 0 0 1px #ffffff05,0 24px 60px -10px #0009,0 0 80px 10px #ffdc8c0f}.variant-drag-ghost-body{flex-direction:column;min-width:0;display:flex}.variant-drag-ghost-row{align-items:center;gap:8px;min-width:0;display:flex}.variant-drag-ghost-title{color:#ffffffeb;white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:13px;font-weight:500;overflow:hidden}.variant-drag-ghost-tag{white-space:nowrap;border-radius:4px;flex-shrink:0;padding:1px 6px;font-size:10px;font-weight:500}.variant-drag-ghost-desc{color:#ffffff80;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:2px;font-size:12px;line-height:1.35;display:-webkit-box;overflow:hidden}.variant-split-secondary{border-left:1px solid var(--main-border,#ffffff0f);background:var(--bg-main,#0d0d0e);min-width:0;animation:variantSplitSecondaryEnter .42s var(--variant-split-ease) both;flex-direction:column;flex:1 1 0;display:flex;position:relative}.variant-preview-region.is-split>.variant-preview-row>.variant-preview-primary{border-right:1px solid var(--main-border,#ffffff0f)}@keyframes variantSplitSecondaryEnter{0%{opacity:0}to{opacity:1}}.variant-split-secondary-toolbar{background:var(--bg-main);border-bottom:1px solid var(--main-border);color:#9ca3af;flex:0 0 32px;justify-content:space-between;align-items:center;height:32px;padding:0 10px;font-size:11.5px;display:flex}.variant-split-secondary-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.variant-split-secondary-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:#ffffff8c;cursor:pointer;transition:color .14s var(--variant-split-ease),background-color .14s var(--variant-split-ease);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:4px;display:inline-flex}.variant-split-secondary-close:hover{color:#fff;background:#404040}.variant-split-secondary-iframe{background:#fff;border:0;flex:1;width:100%;height:100%}@media(prefers-reduced-motion:reduce){.variant-drop-zone,.variant-drop-zone-inner,.variant-drop-zone-preview,.variant-drop-zone-border,.variant-preview-primary,.variant-preview-atmosphere,.variant-split-secondary,.variant-split-secondary-close{filter:none!important;transition-duration:80ms!important;animation-duration:80ms!important;transform:none!important}.variant-drop-zones.is-visible .variant-drop-zone-inner{transition-delay:0s}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes spinner-move{to{stroke-dashoffset:-100px}}@keyframes spinner-dash{0%,to{stroke-dasharray:15 85}50%{stroke-dasharray:40 60}}