ChitraMaya commited on
Commit
3f9a4dd
·
0 Parent(s):

UI update with advanced GenerateTab

Browse files
.dockerignore ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ node_modules
2
+ dashboard/node_modules
3
+ dashboard/dist
4
+ dashboard/.vite
5
+ *.tsbuildinfo
6
+ dashboard/*.tsbuildinfo
7
+ .env
8
+ .env.*
9
+ .git
10
+ .gitignore
11
+ __pycache__
12
+ .venv
.gitignore ADDED
Binary file (32 Bytes). View file
 
Dockerfile ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM node:22-slim
2
+
3
+ WORKDIR /app
4
+
5
+ COPY package*.json ./
6
+ RUN npm ci --omit=dev
7
+
8
+ COPY proxy.js ./
9
+ COPY public ./public
10
+
11
+ ENV PORT=7860
12
+ EXPOSE 7860
13
+ CMD ["node", "proxy.js"]
README.md ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: ChitraMaya Control Room
3
+ emoji: 🎬
4
+ colorFrom: green
5
+ colorTo: gray
6
+ sdk: docker
7
+ app_port: 7860
8
+ pinned: true
9
+ tags:
10
+ - amd
11
+ - amd-hackathon-2026
12
+ - comfyui
13
+ - video-generation
14
+ - lora
15
+ - text-to-video
16
+ - image-to-video
17
+ - text-to-image
18
+ - flux
19
+ - wan-video
20
+ - agentic-ai
21
+ ---
22
+
23
+ # ChitraMaya Control Room
24
+
25
+ Hosted ChitraMaya production console for the AMD MI300X hackathon demo.
26
+
27
+ This Space serves the React/Vite control room UI and proxies API/media requests to the ChitraMaya engine API.
28
+
29
+ ## Required Space Secret
30
+
31
+ | Secret | Description |
32
+ | --- | --- |
33
+ | `CHITRAMAYA_API_URL` | URL for the ChitraMaya API |
package-lock.json ADDED
@@ -0,0 +1,1038 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "chitramaya-hosting",
3
+ "lockfileVersion": 3,
4
+ "requires": true,
5
+ "packages": {
6
+ "": {
7
+ "name": "chitramaya-hosting",
8
+ "dependencies": {
9
+ "@fastify/static": "latest",
10
+ "fastify": "latest",
11
+ "http-proxy-middleware": "latest"
12
+ }
13
+ },
14
+ "node_modules/@fastify/accept-negotiator": {
15
+ "version": "2.0.1",
16
+ "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-2.0.1.tgz",
17
+ "integrity": "sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==",
18
+ "funding": [
19
+ {
20
+ "type": "github",
21
+ "url": "https://github.com/sponsors/fastify"
22
+ },
23
+ {
24
+ "type": "opencollective",
25
+ "url": "https://opencollective.com/fastify"
26
+ }
27
+ ],
28
+ "license": "MIT"
29
+ },
30
+ "node_modules/@fastify/ajv-compiler": {
31
+ "version": "4.0.5",
32
+ "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.5.tgz",
33
+ "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==",
34
+ "funding": [
35
+ {
36
+ "type": "github",
37
+ "url": "https://github.com/sponsors/fastify"
38
+ },
39
+ {
40
+ "type": "opencollective",
41
+ "url": "https://opencollective.com/fastify"
42
+ }
43
+ ],
44
+ "license": "MIT",
45
+ "dependencies": {
46
+ "ajv": "^8.12.0",
47
+ "ajv-formats": "^3.0.1",
48
+ "fast-uri": "^3.0.0"
49
+ }
50
+ },
51
+ "node_modules/@fastify/error": {
52
+ "version": "4.2.0",
53
+ "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.2.0.tgz",
54
+ "integrity": "sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==",
55
+ "funding": [
56
+ {
57
+ "type": "github",
58
+ "url": "https://github.com/sponsors/fastify"
59
+ },
60
+ {
61
+ "type": "opencollective",
62
+ "url": "https://opencollective.com/fastify"
63
+ }
64
+ ],
65
+ "license": "MIT"
66
+ },
67
+ "node_modules/@fastify/fast-json-stringify-compiler": {
68
+ "version": "5.0.3",
69
+ "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz",
70
+ "integrity": "sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==",
71
+ "funding": [
72
+ {
73
+ "type": "github",
74
+ "url": "https://github.com/sponsors/fastify"
75
+ },
76
+ {
77
+ "type": "opencollective",
78
+ "url": "https://opencollective.com/fastify"
79
+ }
80
+ ],
81
+ "license": "MIT",
82
+ "dependencies": {
83
+ "fast-json-stringify": "^6.0.0"
84
+ }
85
+ },
86
+ "node_modules/@fastify/forwarded": {
87
+ "version": "3.0.1",
88
+ "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.1.tgz",
89
+ "integrity": "sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==",
90
+ "funding": [
91
+ {
92
+ "type": "github",
93
+ "url": "https://github.com/sponsors/fastify"
94
+ },
95
+ {
96
+ "type": "opencollective",
97
+ "url": "https://opencollective.com/fastify"
98
+ }
99
+ ],
100
+ "license": "MIT"
101
+ },
102
+ "node_modules/@fastify/merge-json-schemas": {
103
+ "version": "0.2.1",
104
+ "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz",
105
+ "integrity": "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==",
106
+ "funding": [
107
+ {
108
+ "type": "github",
109
+ "url": "https://github.com/sponsors/fastify"
110
+ },
111
+ {
112
+ "type": "opencollective",
113
+ "url": "https://opencollective.com/fastify"
114
+ }
115
+ ],
116
+ "license": "MIT",
117
+ "dependencies": {
118
+ "dequal": "^2.0.3"
119
+ }
120
+ },
121
+ "node_modules/@fastify/proxy-addr": {
122
+ "version": "5.1.0",
123
+ "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.1.0.tgz",
124
+ "integrity": "sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==",
125
+ "funding": [
126
+ {
127
+ "type": "github",
128
+ "url": "https://github.com/sponsors/fastify"
129
+ },
130
+ {
131
+ "type": "opencollective",
132
+ "url": "https://opencollective.com/fastify"
133
+ }
134
+ ],
135
+ "license": "MIT",
136
+ "dependencies": {
137
+ "@fastify/forwarded": "^3.0.0",
138
+ "ipaddr.js": "^2.1.0"
139
+ }
140
+ },
141
+ "node_modules/@fastify/send": {
142
+ "version": "4.1.0",
143
+ "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz",
144
+ "integrity": "sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==",
145
+ "funding": [
146
+ {
147
+ "type": "github",
148
+ "url": "https://github.com/sponsors/fastify"
149
+ },
150
+ {
151
+ "type": "opencollective",
152
+ "url": "https://opencollective.com/fastify"
153
+ }
154
+ ],
155
+ "license": "MIT",
156
+ "dependencies": {
157
+ "@lukeed/ms": "^2.0.2",
158
+ "escape-html": "~1.0.3",
159
+ "fast-decode-uri-component": "^1.0.1",
160
+ "http-errors": "^2.0.0",
161
+ "mime": "^3"
162
+ }
163
+ },
164
+ "node_modules/@fastify/static": {
165
+ "version": "9.1.3",
166
+ "resolved": "https://registry.npmjs.org/@fastify/static/-/static-9.1.3.tgz",
167
+ "integrity": "sha512-aXrYtsiryLhRxRNaxNqsn7FUISeb7rB9q4eHUPIot5aeQBLNahnz1m6thzm7JWC1poSGXS9XrX8DvuMivp2hkQ==",
168
+ "funding": [
169
+ {
170
+ "type": "github",
171
+ "url": "https://github.com/sponsors/fastify"
172
+ },
173
+ {
174
+ "type": "opencollective",
175
+ "url": "https://opencollective.com/fastify"
176
+ }
177
+ ],
178
+ "license": "MIT",
179
+ "dependencies": {
180
+ "@fastify/accept-negotiator": "^2.0.0",
181
+ "@fastify/send": "^4.0.0",
182
+ "content-disposition": "^1.0.1",
183
+ "fastify-plugin": "^5.0.0",
184
+ "fastq": "^1.17.1",
185
+ "glob": "^13.0.0"
186
+ }
187
+ },
188
+ "node_modules/@lukeed/ms": {
189
+ "version": "2.0.2",
190
+ "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz",
191
+ "integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==",
192
+ "license": "MIT",
193
+ "engines": {
194
+ "node": ">=8"
195
+ }
196
+ },
197
+ "node_modules/@pinojs/redact": {
198
+ "version": "0.4.0",
199
+ "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz",
200
+ "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==",
201
+ "license": "MIT"
202
+ },
203
+ "node_modules/abstract-logging": {
204
+ "version": "2.0.1",
205
+ "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz",
206
+ "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==",
207
+ "license": "MIT"
208
+ },
209
+ "node_modules/ajv": {
210
+ "version": "8.20.0",
211
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
212
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
213
+ "license": "MIT",
214
+ "dependencies": {
215
+ "fast-deep-equal": "^3.1.3",
216
+ "fast-uri": "^3.0.1",
217
+ "json-schema-traverse": "^1.0.0",
218
+ "require-from-string": "^2.0.2"
219
+ },
220
+ "funding": {
221
+ "type": "github",
222
+ "url": "https://github.com/sponsors/epoberezkin"
223
+ }
224
+ },
225
+ "node_modules/ajv-formats": {
226
+ "version": "3.0.1",
227
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
228
+ "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
229
+ "license": "MIT",
230
+ "dependencies": {
231
+ "ajv": "^8.0.0"
232
+ },
233
+ "peerDependencies": {
234
+ "ajv": "^8.0.0"
235
+ },
236
+ "peerDependenciesMeta": {
237
+ "ajv": {
238
+ "optional": true
239
+ }
240
+ }
241
+ },
242
+ "node_modules/atomic-sleep": {
243
+ "version": "1.0.0",
244
+ "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
245
+ "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
246
+ "license": "MIT",
247
+ "engines": {
248
+ "node": ">=8.0.0"
249
+ }
250
+ },
251
+ "node_modules/avvio": {
252
+ "version": "9.2.0",
253
+ "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.2.0.tgz",
254
+ "integrity": "sha512-2t/sy01ArdHHE0vRH5Hsay+RtCZt3dLPji7W7/MMOCEgze5b7SNDC4j5H6FnVgPkI1MTNFGzHdHrVXDDl7QSSQ==",
255
+ "funding": [
256
+ {
257
+ "type": "github",
258
+ "url": "https://github.com/sponsors/fastify"
259
+ },
260
+ {
261
+ "type": "opencollective",
262
+ "url": "https://opencollective.com/fastify"
263
+ }
264
+ ],
265
+ "license": "MIT",
266
+ "dependencies": {
267
+ "@fastify/error": "^4.0.0",
268
+ "fastq": "^1.17.1"
269
+ }
270
+ },
271
+ "node_modules/balanced-match": {
272
+ "version": "4.0.4",
273
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
274
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
275
+ "license": "MIT",
276
+ "engines": {
277
+ "node": "18 || 20 || >=22"
278
+ }
279
+ },
280
+ "node_modules/brace-expansion": {
281
+ "version": "5.0.6",
282
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
283
+ "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
284
+ "license": "MIT",
285
+ "dependencies": {
286
+ "balanced-match": "^4.0.2"
287
+ },
288
+ "engines": {
289
+ "node": "18 || 20 || >=22"
290
+ }
291
+ },
292
+ "node_modules/braces": {
293
+ "version": "3.0.3",
294
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
295
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
296
+ "license": "MIT",
297
+ "dependencies": {
298
+ "fill-range": "^7.1.1"
299
+ },
300
+ "engines": {
301
+ "node": ">=8"
302
+ }
303
+ },
304
+ "node_modules/content-disposition": {
305
+ "version": "1.1.0",
306
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz",
307
+ "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==",
308
+ "license": "MIT",
309
+ "engines": {
310
+ "node": ">=18"
311
+ },
312
+ "funding": {
313
+ "type": "opencollective",
314
+ "url": "https://opencollective.com/express"
315
+ }
316
+ },
317
+ "node_modules/cookie": {
318
+ "version": "1.1.1",
319
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz",
320
+ "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==",
321
+ "license": "MIT",
322
+ "engines": {
323
+ "node": ">=18"
324
+ },
325
+ "funding": {
326
+ "type": "opencollective",
327
+ "url": "https://opencollective.com/express"
328
+ }
329
+ },
330
+ "node_modules/debug": {
331
+ "version": "4.4.3",
332
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
333
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
334
+ "license": "MIT",
335
+ "dependencies": {
336
+ "ms": "^2.1.3"
337
+ },
338
+ "engines": {
339
+ "node": ">=6.0"
340
+ },
341
+ "peerDependenciesMeta": {
342
+ "supports-color": {
343
+ "optional": true
344
+ }
345
+ }
346
+ },
347
+ "node_modules/depd": {
348
+ "version": "2.0.0",
349
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
350
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
351
+ "license": "MIT",
352
+ "engines": {
353
+ "node": ">= 0.8"
354
+ }
355
+ },
356
+ "node_modules/dequal": {
357
+ "version": "2.0.3",
358
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
359
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
360
+ "license": "MIT",
361
+ "engines": {
362
+ "node": ">=6"
363
+ }
364
+ },
365
+ "node_modules/escape-html": {
366
+ "version": "1.0.3",
367
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
368
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
369
+ "license": "MIT"
370
+ },
371
+ "node_modules/fast-decode-uri-component": {
372
+ "version": "1.0.1",
373
+ "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz",
374
+ "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==",
375
+ "license": "MIT"
376
+ },
377
+ "node_modules/fast-deep-equal": {
378
+ "version": "3.1.3",
379
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
380
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
381
+ "license": "MIT"
382
+ },
383
+ "node_modules/fast-json-stringify": {
384
+ "version": "6.4.0",
385
+ "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.4.0.tgz",
386
+ "integrity": "sha512-ibRCQ0GZKJIQ+P3Et1h0LhPgp3PMTYk0MH8O+kW3lNYsvmaQww5Nn3f1jf73Q0jR1Yz3a1CDP4/NZD3vOajWJQ==",
387
+ "funding": [
388
+ {
389
+ "type": "github",
390
+ "url": "https://github.com/sponsors/fastify"
391
+ },
392
+ {
393
+ "type": "opencollective",
394
+ "url": "https://opencollective.com/fastify"
395
+ }
396
+ ],
397
+ "license": "MIT",
398
+ "dependencies": {
399
+ "@fastify/merge-json-schemas": "^0.2.0",
400
+ "ajv": "^8.12.0",
401
+ "ajv-formats": "^3.0.1",
402
+ "fast-uri": "^3.0.0",
403
+ "json-schema-ref-resolver": "^3.0.0",
404
+ "rfdc": "^1.2.0"
405
+ }
406
+ },
407
+ "node_modules/fast-querystring": {
408
+ "version": "1.1.2",
409
+ "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz",
410
+ "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==",
411
+ "license": "MIT",
412
+ "dependencies": {
413
+ "fast-decode-uri-component": "^1.0.1"
414
+ }
415
+ },
416
+ "node_modules/fast-uri": {
417
+ "version": "3.1.2",
418
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz",
419
+ "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==",
420
+ "funding": [
421
+ {
422
+ "type": "github",
423
+ "url": "https://github.com/sponsors/fastify"
424
+ },
425
+ {
426
+ "type": "opencollective",
427
+ "url": "https://opencollective.com/fastify"
428
+ }
429
+ ],
430
+ "license": "BSD-3-Clause"
431
+ },
432
+ "node_modules/fastify": {
433
+ "version": "5.8.5",
434
+ "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.8.5.tgz",
435
+ "integrity": "sha512-Yqptv59pQzPgQUSIm87hMqHJmdkb1+GPxdE6vW6FRyVE9G86mt7rOghitiU4JHRaTyDUk9pfeKmDeu70lAwM4Q==",
436
+ "funding": [
437
+ {
438
+ "type": "github",
439
+ "url": "https://github.com/sponsors/fastify"
440
+ },
441
+ {
442
+ "type": "opencollective",
443
+ "url": "https://opencollective.com/fastify"
444
+ }
445
+ ],
446
+ "license": "MIT",
447
+ "dependencies": {
448
+ "@fastify/ajv-compiler": "^4.0.5",
449
+ "@fastify/error": "^4.0.0",
450
+ "@fastify/fast-json-stringify-compiler": "^5.0.0",
451
+ "@fastify/proxy-addr": "^5.0.0",
452
+ "abstract-logging": "^2.0.1",
453
+ "avvio": "^9.0.0",
454
+ "fast-json-stringify": "^6.0.0",
455
+ "find-my-way": "^9.0.0",
456
+ "light-my-request": "^6.0.0",
457
+ "pino": "^9.14.0 || ^10.1.0",
458
+ "process-warning": "^5.0.0",
459
+ "rfdc": "^1.3.1",
460
+ "secure-json-parse": "^4.0.0",
461
+ "semver": "^7.6.0",
462
+ "toad-cache": "^3.7.0"
463
+ }
464
+ },
465
+ "node_modules/fastify-plugin": {
466
+ "version": "5.1.0",
467
+ "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.1.0.tgz",
468
+ "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==",
469
+ "funding": [
470
+ {
471
+ "type": "github",
472
+ "url": "https://github.com/sponsors/fastify"
473
+ },
474
+ {
475
+ "type": "opencollective",
476
+ "url": "https://opencollective.com/fastify"
477
+ }
478
+ ],
479
+ "license": "MIT"
480
+ },
481
+ "node_modules/fastq": {
482
+ "version": "1.20.1",
483
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
484
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
485
+ "license": "ISC",
486
+ "dependencies": {
487
+ "reusify": "^1.0.4"
488
+ }
489
+ },
490
+ "node_modules/fill-range": {
491
+ "version": "7.1.1",
492
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
493
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
494
+ "license": "MIT",
495
+ "dependencies": {
496
+ "to-regex-range": "^5.0.1"
497
+ },
498
+ "engines": {
499
+ "node": ">=8"
500
+ }
501
+ },
502
+ "node_modules/find-my-way": {
503
+ "version": "9.6.0",
504
+ "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.6.0.tgz",
505
+ "integrity": "sha512-Zf4Xve4RymLl7NgaavNebZ01joJ8MfVerOG43wy7SHLO+r+K0C6d/SE0BiR7AV5V1VOCFlOP7ecdo+I4qmiHrQ==",
506
+ "license": "MIT",
507
+ "dependencies": {
508
+ "fast-deep-equal": "^3.1.3",
509
+ "fast-querystring": "^1.0.0",
510
+ "safe-regex2": "^5.0.0"
511
+ },
512
+ "engines": {
513
+ "node": ">=20"
514
+ }
515
+ },
516
+ "node_modules/glob": {
517
+ "version": "13.0.6",
518
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
519
+ "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
520
+ "license": "BlueOak-1.0.0",
521
+ "dependencies": {
522
+ "minimatch": "^10.2.2",
523
+ "minipass": "^7.1.3",
524
+ "path-scurry": "^2.0.2"
525
+ },
526
+ "engines": {
527
+ "node": "18 || 20 || >=22"
528
+ },
529
+ "funding": {
530
+ "url": "https://github.com/sponsors/isaacs"
531
+ }
532
+ },
533
+ "node_modules/http-errors": {
534
+ "version": "2.0.1",
535
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
536
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
537
+ "license": "MIT",
538
+ "dependencies": {
539
+ "depd": "~2.0.0",
540
+ "inherits": "~2.0.4",
541
+ "setprototypeof": "~1.2.0",
542
+ "statuses": "~2.0.2",
543
+ "toidentifier": "~1.0.1"
544
+ },
545
+ "engines": {
546
+ "node": ">= 0.8"
547
+ },
548
+ "funding": {
549
+ "type": "opencollective",
550
+ "url": "https://opencollective.com/express"
551
+ }
552
+ },
553
+ "node_modules/http-proxy-middleware": {
554
+ "version": "4.0.0",
555
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-4.0.0.tgz",
556
+ "integrity": "sha512-wuHwaUtmC0XzJNHqRp41zXtt5ojpHbusXGhq6781VvnjWUYPu7opmOF3eomGNujT07kEOnHWZyV9UZzKimVCKA==",
557
+ "license": "MIT",
558
+ "dependencies": {
559
+ "debug": "^4.4.3",
560
+ "httpxy": "^0.5.1",
561
+ "is-glob": "^4.0.3",
562
+ "is-plain-obj": "^4.1.0",
563
+ "micromatch": "^4.0.8"
564
+ },
565
+ "engines": {
566
+ "node": "^22.15.0 || ^24.0.0 || >=26.0.0"
567
+ }
568
+ },
569
+ "node_modules/httpxy": {
570
+ "version": "0.5.1",
571
+ "resolved": "https://registry.npmjs.org/httpxy/-/httpxy-0.5.1.tgz",
572
+ "integrity": "sha512-JPhqYiixe1A1I+MXDewWDZqeudBGU8Q9jCHYN8ML+779RQzLjTi78HBvWz4jMxUD6h2/vUL12g4q/mFM0OUw1A==",
573
+ "license": "MIT"
574
+ },
575
+ "node_modules/inherits": {
576
+ "version": "2.0.4",
577
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
578
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
579
+ "license": "ISC"
580
+ },
581
+ "node_modules/ipaddr.js": {
582
+ "version": "2.4.0",
583
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.4.0.tgz",
584
+ "integrity": "sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==",
585
+ "license": "MIT",
586
+ "engines": {
587
+ "node": ">= 10"
588
+ }
589
+ },
590
+ "node_modules/is-extglob": {
591
+ "version": "2.1.1",
592
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
593
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
594
+ "license": "MIT",
595
+ "engines": {
596
+ "node": ">=0.10.0"
597
+ }
598
+ },
599
+ "node_modules/is-glob": {
600
+ "version": "4.0.3",
601
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
602
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
603
+ "license": "MIT",
604
+ "dependencies": {
605
+ "is-extglob": "^2.1.1"
606
+ },
607
+ "engines": {
608
+ "node": ">=0.10.0"
609
+ }
610
+ },
611
+ "node_modules/is-number": {
612
+ "version": "7.0.0",
613
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
614
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
615
+ "license": "MIT",
616
+ "engines": {
617
+ "node": ">=0.12.0"
618
+ }
619
+ },
620
+ "node_modules/is-plain-obj": {
621
+ "version": "4.1.0",
622
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
623
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
624
+ "license": "MIT",
625
+ "engines": {
626
+ "node": ">=12"
627
+ },
628
+ "funding": {
629
+ "url": "https://github.com/sponsors/sindresorhus"
630
+ }
631
+ },
632
+ "node_modules/json-schema-ref-resolver": {
633
+ "version": "3.0.0",
634
+ "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-3.0.0.tgz",
635
+ "integrity": "sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==",
636
+ "funding": [
637
+ {
638
+ "type": "github",
639
+ "url": "https://github.com/sponsors/fastify"
640
+ },
641
+ {
642
+ "type": "opencollective",
643
+ "url": "https://opencollective.com/fastify"
644
+ }
645
+ ],
646
+ "license": "MIT",
647
+ "dependencies": {
648
+ "dequal": "^2.0.3"
649
+ }
650
+ },
651
+ "node_modules/json-schema-traverse": {
652
+ "version": "1.0.0",
653
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
654
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
655
+ "license": "MIT"
656
+ },
657
+ "node_modules/light-my-request": {
658
+ "version": "6.6.0",
659
+ "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz",
660
+ "integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==",
661
+ "funding": [
662
+ {
663
+ "type": "github",
664
+ "url": "https://github.com/sponsors/fastify"
665
+ },
666
+ {
667
+ "type": "opencollective",
668
+ "url": "https://opencollective.com/fastify"
669
+ }
670
+ ],
671
+ "license": "BSD-3-Clause",
672
+ "dependencies": {
673
+ "cookie": "^1.0.1",
674
+ "process-warning": "^4.0.0",
675
+ "set-cookie-parser": "^2.6.0"
676
+ }
677
+ },
678
+ "node_modules/light-my-request/node_modules/process-warning": {
679
+ "version": "4.0.1",
680
+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz",
681
+ "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==",
682
+ "funding": [
683
+ {
684
+ "type": "github",
685
+ "url": "https://github.com/sponsors/fastify"
686
+ },
687
+ {
688
+ "type": "opencollective",
689
+ "url": "https://opencollective.com/fastify"
690
+ }
691
+ ],
692
+ "license": "MIT"
693
+ },
694
+ "node_modules/lru-cache": {
695
+ "version": "11.3.6",
696
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz",
697
+ "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==",
698
+ "license": "BlueOak-1.0.0",
699
+ "engines": {
700
+ "node": "20 || >=22"
701
+ }
702
+ },
703
+ "node_modules/micromatch": {
704
+ "version": "4.0.8",
705
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
706
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
707
+ "license": "MIT",
708
+ "dependencies": {
709
+ "braces": "^3.0.3",
710
+ "picomatch": "^2.3.1"
711
+ },
712
+ "engines": {
713
+ "node": ">=8.6"
714
+ }
715
+ },
716
+ "node_modules/mime": {
717
+ "version": "3.0.0",
718
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
719
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
720
+ "license": "MIT",
721
+ "bin": {
722
+ "mime": "cli.js"
723
+ },
724
+ "engines": {
725
+ "node": ">=10.0.0"
726
+ }
727
+ },
728
+ "node_modules/minimatch": {
729
+ "version": "10.2.5",
730
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
731
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
732
+ "license": "BlueOak-1.0.0",
733
+ "dependencies": {
734
+ "brace-expansion": "^5.0.5"
735
+ },
736
+ "engines": {
737
+ "node": "18 || 20 || >=22"
738
+ },
739
+ "funding": {
740
+ "url": "https://github.com/sponsors/isaacs"
741
+ }
742
+ },
743
+ "node_modules/minipass": {
744
+ "version": "7.1.3",
745
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
746
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
747
+ "license": "BlueOak-1.0.0",
748
+ "engines": {
749
+ "node": ">=16 || 14 >=14.17"
750
+ }
751
+ },
752
+ "node_modules/ms": {
753
+ "version": "2.1.3",
754
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
755
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
756
+ "license": "MIT"
757
+ },
758
+ "node_modules/on-exit-leak-free": {
759
+ "version": "2.1.2",
760
+ "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
761
+ "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
762
+ "license": "MIT",
763
+ "engines": {
764
+ "node": ">=14.0.0"
765
+ }
766
+ },
767
+ "node_modules/path-scurry": {
768
+ "version": "2.0.2",
769
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
770
+ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
771
+ "license": "BlueOak-1.0.0",
772
+ "dependencies": {
773
+ "lru-cache": "^11.0.0",
774
+ "minipass": "^7.1.2"
775
+ },
776
+ "engines": {
777
+ "node": "18 || 20 || >=22"
778
+ },
779
+ "funding": {
780
+ "url": "https://github.com/sponsors/isaacs"
781
+ }
782
+ },
783
+ "node_modules/picomatch": {
784
+ "version": "2.3.2",
785
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
786
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
787
+ "license": "MIT",
788
+ "engines": {
789
+ "node": ">=8.6"
790
+ },
791
+ "funding": {
792
+ "url": "https://github.com/sponsors/jonschlinkert"
793
+ }
794
+ },
795
+ "node_modules/pino": {
796
+ "version": "10.3.1",
797
+ "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.1.tgz",
798
+ "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==",
799
+ "license": "MIT",
800
+ "dependencies": {
801
+ "@pinojs/redact": "^0.4.0",
802
+ "atomic-sleep": "^1.0.0",
803
+ "on-exit-leak-free": "^2.1.0",
804
+ "pino-abstract-transport": "^3.0.0",
805
+ "pino-std-serializers": "^7.0.0",
806
+ "process-warning": "^5.0.0",
807
+ "quick-format-unescaped": "^4.0.3",
808
+ "real-require": "^0.2.0",
809
+ "safe-stable-stringify": "^2.3.1",
810
+ "sonic-boom": "^4.0.1",
811
+ "thread-stream": "^4.0.0"
812
+ },
813
+ "bin": {
814
+ "pino": "bin.js"
815
+ }
816
+ },
817
+ "node_modules/pino-abstract-transport": {
818
+ "version": "3.0.0",
819
+ "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-3.0.0.tgz",
820
+ "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==",
821
+ "license": "MIT",
822
+ "dependencies": {
823
+ "split2": "^4.0.0"
824
+ }
825
+ },
826
+ "node_modules/pino-std-serializers": {
827
+ "version": "7.1.0",
828
+ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz",
829
+ "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==",
830
+ "license": "MIT"
831
+ },
832
+ "node_modules/process-warning": {
833
+ "version": "5.0.0",
834
+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz",
835
+ "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==",
836
+ "funding": [
837
+ {
838
+ "type": "github",
839
+ "url": "https://github.com/sponsors/fastify"
840
+ },
841
+ {
842
+ "type": "opencollective",
843
+ "url": "https://opencollective.com/fastify"
844
+ }
845
+ ],
846
+ "license": "MIT"
847
+ },
848
+ "node_modules/quick-format-unescaped": {
849
+ "version": "4.0.4",
850
+ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
851
+ "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==",
852
+ "license": "MIT"
853
+ },
854
+ "node_modules/real-require": {
855
+ "version": "0.2.0",
856
+ "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz",
857
+ "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
858
+ "license": "MIT",
859
+ "engines": {
860
+ "node": ">= 12.13.0"
861
+ }
862
+ },
863
+ "node_modules/require-from-string": {
864
+ "version": "2.0.2",
865
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
866
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
867
+ "license": "MIT",
868
+ "engines": {
869
+ "node": ">=0.10.0"
870
+ }
871
+ },
872
+ "node_modules/ret": {
873
+ "version": "0.5.0",
874
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz",
875
+ "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==",
876
+ "license": "MIT",
877
+ "engines": {
878
+ "node": ">=10"
879
+ }
880
+ },
881
+ "node_modules/reusify": {
882
+ "version": "1.1.0",
883
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
884
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
885
+ "license": "MIT",
886
+ "engines": {
887
+ "iojs": ">=1.0.0",
888
+ "node": ">=0.10.0"
889
+ }
890
+ },
891
+ "node_modules/rfdc": {
892
+ "version": "1.4.1",
893
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
894
+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
895
+ "license": "MIT"
896
+ },
897
+ "node_modules/safe-regex2": {
898
+ "version": "5.1.1",
899
+ "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.1.1.tgz",
900
+ "integrity": "sha512-mOSBvHGDZMuIEZMdOz/aCEYDCv0E7nfcNsIhUF+/P+xC7Hyf3FkvymqgPbg9D1EdSGu+uKbJgy09K/RKKc7kJA==",
901
+ "funding": [
902
+ {
903
+ "type": "github",
904
+ "url": "https://github.com/sponsors/fastify"
905
+ },
906
+ {
907
+ "type": "opencollective",
908
+ "url": "https://opencollective.com/fastify"
909
+ }
910
+ ],
911
+ "license": "MIT",
912
+ "dependencies": {
913
+ "ret": "~0.5.0"
914
+ },
915
+ "bin": {
916
+ "safe-regex2": "bin/safe-regex2.js"
917
+ }
918
+ },
919
+ "node_modules/safe-stable-stringify": {
920
+ "version": "2.5.0",
921
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz",
922
+ "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==",
923
+ "license": "MIT",
924
+ "engines": {
925
+ "node": ">=10"
926
+ }
927
+ },
928
+ "node_modules/secure-json-parse": {
929
+ "version": "4.1.0",
930
+ "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz",
931
+ "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==",
932
+ "funding": [
933
+ {
934
+ "type": "github",
935
+ "url": "https://github.com/sponsors/fastify"
936
+ },
937
+ {
938
+ "type": "opencollective",
939
+ "url": "https://opencollective.com/fastify"
940
+ }
941
+ ],
942
+ "license": "BSD-3-Clause"
943
+ },
944
+ "node_modules/semver": {
945
+ "version": "7.8.0",
946
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz",
947
+ "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==",
948
+ "license": "ISC",
949
+ "bin": {
950
+ "semver": "bin/semver.js"
951
+ },
952
+ "engines": {
953
+ "node": ">=10"
954
+ }
955
+ },
956
+ "node_modules/set-cookie-parser": {
957
+ "version": "2.7.2",
958
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz",
959
+ "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==",
960
+ "license": "MIT"
961
+ },
962
+ "node_modules/setprototypeof": {
963
+ "version": "1.2.0",
964
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
965
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
966
+ "license": "ISC"
967
+ },
968
+ "node_modules/sonic-boom": {
969
+ "version": "4.2.1",
970
+ "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.1.tgz",
971
+ "integrity": "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==",
972
+ "license": "MIT",
973
+ "dependencies": {
974
+ "atomic-sleep": "^1.0.0"
975
+ }
976
+ },
977
+ "node_modules/split2": {
978
+ "version": "4.2.0",
979
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
980
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
981
+ "license": "ISC",
982
+ "engines": {
983
+ "node": ">= 10.x"
984
+ }
985
+ },
986
+ "node_modules/statuses": {
987
+ "version": "2.0.2",
988
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
989
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
990
+ "license": "MIT",
991
+ "engines": {
992
+ "node": ">= 0.8"
993
+ }
994
+ },
995
+ "node_modules/thread-stream": {
996
+ "version": "4.0.0",
997
+ "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.0.0.tgz",
998
+ "integrity": "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==",
999
+ "license": "MIT",
1000
+ "dependencies": {
1001
+ "real-require": "^0.2.0"
1002
+ },
1003
+ "engines": {
1004
+ "node": ">=20"
1005
+ }
1006
+ },
1007
+ "node_modules/to-regex-range": {
1008
+ "version": "5.0.1",
1009
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1010
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1011
+ "license": "MIT",
1012
+ "dependencies": {
1013
+ "is-number": "^7.0.0"
1014
+ },
1015
+ "engines": {
1016
+ "node": ">=8.0"
1017
+ }
1018
+ },
1019
+ "node_modules/toad-cache": {
1020
+ "version": "3.7.0",
1021
+ "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz",
1022
+ "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==",
1023
+ "license": "MIT",
1024
+ "engines": {
1025
+ "node": ">=12"
1026
+ }
1027
+ },
1028
+ "node_modules/toidentifier": {
1029
+ "version": "1.0.1",
1030
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1031
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1032
+ "license": "MIT",
1033
+ "engines": {
1034
+ "node": ">=0.6"
1035
+ }
1036
+ }
1037
+ }
1038
+ }
package.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "chitramaya-hosting",
3
+ "private": true,
4
+ "type": "module",
5
+ "scripts": {
6
+ "start": "node proxy.js"
7
+ },
8
+ "dependencies": {
9
+ "@fastify/static": "latest",
10
+ "fastify": "latest",
11
+ "http-proxy-middleware": "latest"
12
+ }
13
+ }
proxy.js ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import Fastify from "fastify";
2
+ import fastifyStatic from "@fastify/static";
3
+ import { createProxyMiddleware } from "http-proxy-middleware";
4
+ import { fileURLToPath } from "node:url";
5
+ import path from "node:path";
6
+ import fs from "node:fs";
7
+
8
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
9
+ const port = Number(process.env.PORT || 7860);
10
+
11
+ function normalizeApiUrl(value) {
12
+ let url = String(value || "").trim().replace(/\/+$/, "");
13
+ if (!url) return "";
14
+ if (!/^https?:\/\//i.test(url)) url = `http://${url}`;
15
+ const parsed = new URL(url);
16
+ if (!parsed.port) parsed.port = "8190";
17
+ return parsed.toString().replace(/\/+$/, "");
18
+ }
19
+
20
+ const apiTarget = normalizeApiUrl(process.env.CHITRAMAYA_API_URL || process.env.CHITRAMAYA_ENGINE_URL || "");
21
+ const app = Fastify({ logger: true });
22
+ const distDir = path.join(__dirname, "public");
23
+
24
+ const backendProxy = apiTarget
25
+ ? createProxyMiddleware({
26
+ target: apiTarget,
27
+ changeOrigin: true,
28
+ ws: true,
29
+ logLevel: "warn",
30
+ timeout: 30_000,
31
+ proxyTimeout: 30_000,
32
+ on: {
33
+ error: (err, _req, res) => {
34
+ app.log.error({ err, apiTarget }, "backend proxy error");
35
+ if (!res.headersSent) {
36
+ res.writeHead(502, { "Content-Type": "application/json" });
37
+ }
38
+ res.end(JSON.stringify({ detail: `Backend unavailable: ${err.message}` }));
39
+ },
40
+ },
41
+ })
42
+ : null;
43
+
44
+ app.addHook("onRequest", async (request, reply) => {
45
+ if (request.url.startsWith("/api/") || request.url === "/api" || request.url.startsWith("/media/") || request.url === "/media") {
46
+ if (!backendProxy) {
47
+ return reply.code(503).send({ detail: "CHITRAMAYA_API_URL is not configured" });
48
+ }
49
+ await new Promise((resolve, reject) => backendProxy(request.raw, reply.raw, (err) => err ? reject(err) : resolve()));
50
+ reply.hijack();
51
+ }
52
+ });
53
+
54
+ app.get("/space-health", async () => ({ ok: true, apiConfigured: Boolean(apiTarget), apiTarget: apiTarget || null }));
55
+
56
+ await app.register(fastifyStatic, { root: distDir, prefix: "/" });
57
+
58
+ app.setNotFoundHandler((request, reply) => {
59
+ const index = path.join(distDir, "index.html");
60
+ if (fs.existsSync(index)) return reply.type("text/html").send(fs.createReadStream(index));
61
+ return reply.code(404).send("Studio build not found");
62
+ });
63
+
64
+ app.listen({ host: "0.0.0.0", port });
public/assets/index-CRUgkOBt.js ADDED
The diff for this file is too large to render. See raw diff
 
public/assets/index-JUxenFRF.css ADDED
@@ -0,0 +1 @@
 
 
1
+ *,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Inter,system-ui,-apple-system,sans-serif;line-height:1.5}body{line-height:inherit;margin:0}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-feature-settings:normal;font-variation-settings:normal;font-family:JetBrains Mono,ui-monospace,monospace;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}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{--tw-bg-opacity:1;background-color:rgb(5 6 8/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv11", "ss01", "ss03"}::selection{color:#fff;background:#10b9814d}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-left-1{left:-.25rem}.bottom-0{bottom:0}.bottom-0\.5{bottom:.125rem}.bottom-2{bottom:.5rem}.left-0{left:0}.left-0\.5{left:.125rem}.left-1\.5{left:.375rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.right-0{right:0}.right-1\.5{right:.375rem}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-16{top:4rem}.top-2{top:.5rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.col-span-3{grid-column:span 3/span 3}.mx-auto{margin-left:auto;margin-right:auto}.-mt-16{margin-top:-4rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mr-1\.5{margin-right:.375rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-video{aspect-ratio:16/9}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-36{height:9rem}.h-4{height:1rem}.h-44{height:11rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[90vh\]{max-height:90vh}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-\[2\.4em\]{min-height:2.4em}.min-h-screen{min-height:100vh}.w-0\.5{width:.125rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[340px\]{width:340px}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[320px\]{min-width:320px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-5xl{max-width:64rem}.max-w-\[1600px\]{max-width:1600px}.max-w-\[60\%\]{max-width:60%}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\/2{--tw-translate-x:50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1{--tw-translate-y:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-2{--tw-translate-y:.5rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:.4s ease-out both fade-in}@keyframes glow-pulse{0%,to{opacity:.4}50%{opacity:1}}.animate-glow-pulse{animation:2s ease-in-out infinite glow-pulse}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.animate-scale-in{animation:.3s ease-out both scale-in}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-shimmer{animation:2.5s linear infinite shimmer}@keyframes slide-right{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}.animate-slide-right{animation:.35s ease-out both slide-right}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-500\/15{border-color:#f59e0b26}.border-amber-500\/20{border-color:#f59e0b33}.border-amber-500\/25{border-color:#f59e0b40}.border-amber-500\/30{border-color:#f59e0b4d}.border-amber-800\/30{border-color:#92400e4d}.border-amber-900\/40{border-color:#78350f66}.border-blue-500\/25{border-color:#3b82f640}.border-blue-500\/30{border-color:#3b82f64d}.border-cyan-500\/30{border-color:#06b6d44d}.border-emerald-400\/40{border-color:#34d39966}.border-emerald-400\/60{border-color:#34d39999}.border-emerald-500\/10{border-color:#10b9811a}.border-emerald-500\/15{border-color:#10b98126}.border-emerald-500\/20{border-color:#10b98133}.border-emerald-500\/25{border-color:#10b98140}.border-emerald-500\/30{border-color:#10b9814d}.border-emerald-500\/40{border-color:#10b98166}.border-fuchsia-500\/40{border-color:#d946ef66}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.border-gray-700\/40{border-color:#37415166}.border-gray-700\/60{border-color:#37415199}.border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity,1))}.border-gray-800\/40{border-color:#1f293766}.border-gray-800\/60{border-color:#1f293799}.border-red-500\/15{border-color:#ef444426}.border-red-500\/20{border-color:#ef444433}.border-red-500\/25{border-color:#ef444440}.border-red-500\/30{border-color:#ef44444d}.border-rose-500{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity,1))}.border-rose-500\/30{border-color:#f43f5e4d}.border-rose-500\/40{border-color:#f43f5e66}.border-rose-500\/50{border-color:#f43f5e80}.border-rose-500\/60{border-color:#f43f5e99}.border-rose-600\/20{border-color:#e11d4833}.border-transparent{border-color:#0000}.border-violet-500\/20{border-color:#8b5cf633}.border-violet-500\/30{border-color:#8b5cf64d}.border-violet-500\/40{border-color:#8b5cf666}.border-violet-600\/20{border-color:#7c3aed33}.border-white\/20{border-color:#fff3}.border-white\/\[0\.04\]{border-color:#ffffff0a}.border-white\/\[0\.06\]{border-color:#ffffff0f}.border-white\/\[0\.08\]{border-color:#ffffff14}.border-white\/\[0\.1\]{border-color:#ffffff1a}.border-t-emerald-400{--tw-border-opacity:1;border-top-color:rgb(52 211 153/var(--tw-border-opacity,1))}.bg-\[\#050608\]{--tw-bg-opacity:1;background-color:rgb(5 6 8/var(--tw-bg-opacity,1))}.bg-\[\#060709\]{--tw-bg-opacity:1;background-color:rgb(6 7 9/var(--tw-bg-opacity,1))}.bg-\[\#080a0d\]{--tw-bg-opacity:1;background-color:rgb(8 10 13/var(--tw-bg-opacity,1))}.bg-\[\#0c0f13\]{--tw-bg-opacity:1;background-color:rgb(12 15 19/var(--tw-bg-opacity,1))}.bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity,1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-amber-500\/20{background-color:#f59e0b33}.bg-amber-500\/5{background-color:#f59e0b0d}.bg-amber-500\/60{background-color:#f59e0b99}.bg-amber-500\/\[0\.04\]{background-color:#f59e0b0a}.bg-amber-950\/10{background-color:#451a031a}.bg-amber-950\/20{background-color:#451a0333}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-black\/20{background-color:#0003}.bg-black\/30{background-color:#0000004d}.bg-black\/40{background-color:#0006}.bg-black\/50{background-color:#00000080}.bg-black\/60{background-color:#0009}.bg-black\/70{background-color:#000000b3}.bg-black\/85{background-color:#000000d9}.bg-blue-500\/10{background-color:#3b82f61a}.bg-blue-500\/5{background-color:#3b82f60d}.bg-cyan-500\/60{background-color:#06b6d499}.bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity,1))}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-500\/5{background-color:#10b9810d}.bg-emerald-500\/60{background-color:#10b98199}.bg-emerald-500\/\[0\.03\]{background-color:#10b98108}.bg-emerald-500\/\[0\.04\]{background-color:#10b9810a}.bg-emerald-500\/\[0\.06\]{background-color:#10b9810f}.bg-emerald-600\/10{background-color:#0596691a}.bg-emerald-600\/15{background-color:#05966926}.bg-fuchsia-400{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.bg-gray-900\/20{background-color:#11182733}.bg-gray-900\/30{background-color:#1118274d}.bg-gray-900\/40{background-color:#11182766}.bg-gray-900\/50{background-color:#11182780}.bg-gray-900\/60{background-color:#11182799}.bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity,1))}.bg-gray-950\/40{background-color:#03071266}.bg-gray-950\/60{background-color:#03071299}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/5{background-color:#ef44440d}.bg-red-500\/50{background-color:#ef444480}.bg-red-500\/\[0\.02\]{background-color:#ef444405}.bg-red-500\/\[0\.04\]{background-color:#ef44440a}.bg-red-600\/80{background-color:#dc2626cc}.bg-red-950\/40{background-color:#450a0a66}.bg-red-950\/50{background-color:#450a0a80}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity,1))}.bg-rose-500\/10{background-color:#f43f5e1a}.bg-rose-500\/60{background-color:#f43f5e99}.bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity,1))}.bg-rose-600\/10{background-color:#e11d481a}.bg-rose-600\/15{background-color:#e11d4826}.bg-transparent{background-color:#0000}.bg-violet-400\/60{background-color:#a78bfa99}.bg-violet-500\/10{background-color:#8b5cf61a}.bg-violet-500\/20{background-color:#8b5cf633}.bg-violet-500\/60{background-color:#8b5cf699}.bg-violet-600\/15{background-color:#7c3aed26}.bg-violet-600\/80{background-color:#7c3aedcc}.bg-white\/\[0\.01\]{background-color:#ffffff03}.bg-white\/\[0\.02\]{background-color:#ffffff05}.bg-white\/\[0\.04\]{background-color:#ffffff0a}.bg-white\/\[0\.06\]{background-color:#ffffff0f}.bg-gradient-radial{background-image:radial-gradient(var(--tw-gradient-stops))}.bg-gradient-to-b{background-image:linear-gradient(to bottom, var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right, var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right, var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top, var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from:#f59e0b var(--tw-gradient-from-position);--tw-gradient-to:#f59e0b00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-amber-500\/5{--tw-gradient-from:#f59e0b0d var(--tw-gradient-from-position);--tw-gradient-to:#f59e0b00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-amber-500\/\[0\.03\]{--tw-gradient-from:#f59e0b08 var(--tw-gradient-from-position);--tw-gradient-to:#f59e0b00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-black{--tw-gradient-from:#000 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-black\/20{--tw-gradient-from:#0003 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-black\/60{--tw-gradient-from:#0009 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-black\/70{--tw-gradient-from:#000000b3 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-400{--tw-gradient-from:#34d399 var(--tw-gradient-from-position);--tw-gradient-to:#34d39900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-400\/0{--tw-gradient-from:#34d39900 var(--tw-gradient-from-position);--tw-gradient-to:#34d39900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500\/10{--tw-gradient-from:#10b9811a var(--tw-gradient-from-position);--tw-gradient-to:#10b98100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500\/15{--tw-gradient-from:#10b98126 var(--tw-gradient-from-position);--tw-gradient-to:#10b98100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500\/20{--tw-gradient-from:#10b98133 var(--tw-gradient-from-position);--tw-gradient-to:#10b98100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500\/5{--tw-gradient-from:#10b9810d var(--tw-gradient-from-position);--tw-gradient-to:#10b98100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500\/\[0\.06\]{--tw-gradient-from:#10b9810f var(--tw-gradient-from-position);--tw-gradient-to:#10b98100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500\/\[0\.12\]{--tw-gradient-from:#10b9811f var(--tw-gradient-from-position);--tw-gradient-to:#10b98100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-600{--tw-gradient-from:#059669 var(--tw-gradient-from-position);--tw-gradient-to:#05966900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-fuchsia-400{--tw-gradient-from:#e879f9 var(--tw-gradient-from-position);--tw-gradient-to:#e879f900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-fuchsia-500\/10{--tw-gradient-from:#d946ef1a var(--tw-gradient-from-position);--tw-gradient-to:#d946ef00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-900\/70{--tw-gradient-from:#111827b3 var(--tw-gradient-from-position);--tw-gradient-to:#11182700 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-rose-500{--tw-gradient-from:#f43f5e var(--tw-gradient-from-position);--tw-gradient-to:#f43f5e00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-rose-950\/10{--tw-gradient-from:#4c05191a var(--tw-gradient-from-position);--tw-gradient-to:#4c051900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-rose-950\/50{--tw-gradient-from:#4c051980 var(--tw-gradient-from-position);--tw-gradient-to:#4c051900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-violet-950\/10{--tw-gradient-from:#2e10651a var(--tw-gradient-from-position);--tw-gradient-to:#2e106500 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from:#fff var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-white\/\[0\.02\]{--tw-gradient-from:#ffffff05 var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-white\/\[0\.03\]{--tw-gradient-from:#ffffff08 var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.via-amber-400{--tw-gradient-to:#fbbf2400 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #fbbf24 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-black\/40{--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #0006 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-emerald-500{--tw-gradient-to:#10b98100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #10b981 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-emerald-600\/10{--tw-gradient-to:#05966900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #0596691a var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-fuchsia-950\/20{--tw-gradient-to:#4a044e00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #4a044e33 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-gray-100{--tw-gradient-to:#f3f4f600 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #f3f4f6 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-white\/10{--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #ffffff1a var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-amber-300{--tw-gradient-to:#fcd34d var(--tw-gradient-to-position)}.to-amber-400{--tw-gradient-to:#fbbf24 var(--tw-gradient-to-position)}.to-amber-950\/20{--tw-gradient-to:#451a0333 var(--tw-gradient-to-position)}.to-cyan-300{--tw-gradient-to:#67e8f9 var(--tw-gradient-to-position)}.to-cyan-500\/10{--tw-gradient-to:#06b6d41a var(--tw-gradient-to-position)}.to-emerald-400\/0{--tw-gradient-to:#34d39900 var(--tw-gradient-to-position)}.to-emerald-500\/\[0\.02\]{--tw-gradient-to:#10b98105 var(--tw-gradient-to-position)}.to-gray-300{--tw-gradient-to:#d1d5db var(--tw-gradient-to-position)}.to-gray-400{--tw-gradient-to:#9ca3af var(--tw-gradient-to-position)}.to-gray-950{--tw-gradient-to:#030712 var(--tw-gradient-to-position)}.to-gray-950\/30{--tw-gradient-to:#0307124d var(--tw-gradient-to-position)}.to-gray-950\/40{--tw-gradient-to:#03071266 var(--tw-gradient-to-position)}.to-rose-500\/5{--tw-gradient-to:#f43f5e0d var(--tw-gradient-to-position)}.to-teal-400{--tw-gradient-to:#2dd4bf var(--tw-gradient-to-position)}.to-teal-500{--tw-gradient-to:#14b8a6 var(--tw-gradient-to-position)}.to-teal-500\/10{--tw-gradient-to:#14b8a61a var(--tw-gradient-to-position)}.to-teal-500\/15{--tw-gradient-to:#14b8a626 var(--tw-gradient-to-position)}.to-teal-500\/20{--tw-gradient-to:#14b8a633 var(--tw-gradient-to-position)}.to-teal-500\/5{--tw-gradient-to:#14b8a60d var(--tw-gradient-to-position)}.to-teal-500\/\[0\.08\]{--tw-gradient-to:#14b8a614 var(--tw-gradient-to-position)}.to-teal-600{--tw-gradient-to:#0d9488 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.to-violet-500\/\[0\.04\]{--tw-gradient-to:#8b5cf60a var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-white{fill:#fff}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0\.5{padding:.125rem}.p-10{padding:2.5rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pl-2\.5{padding-left:.625rem}.pl-6{padding-left:1.5rem}.pl-9{padding-left:2.25rem}.pr-3{padding-right:.75rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-display{font-family:Outfit,Inter,system-ui,sans-serif}.font-mono{font-family:JetBrains Mono,ui-monospace,monospace}.font-sans{font-family:Inter,system-ui,-apple-system,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-relaxed{line-height:1.625}.tracking-\[0\.22em\]{letter-spacing:.22em}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-amber-100\/60{color:#fef3c799}.text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.text-amber-200\/70{color:#fde68ab3}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.text-amber-300\/80{color:#fcd34dcc}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.text-blue-300\/80{color:#93c5fdcc}.text-blue-400\/70{color:#60a5fab3}.text-cyan-200{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity,1))}.text-cyan-300{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity,1))}.text-emerald-100{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity,1))}.text-emerald-200{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity,1))}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.text-emerald-300\/60{color:#6ee7b799}.text-emerald-300\/80{color:#6ee7b7cc}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.text-emerald-400\/60{color:#34d39999}.text-emerald-400\/70{color:#34d399b3}.text-emerald-400\/80{color:#34d399cc}.text-emerald-400\/90{color:#34d399e6}.text-fuchsia-300{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity,1))}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.text-red-300\/70{color:#fca5a5b3}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-rose-100{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity,1))}.text-rose-200{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity,1))}.text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity,1))}.text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity,1))}.text-rose-400\/70{color:#fb7185b3}.text-transparent{color:#0000}.text-violet-100{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity,1))}.text-violet-200{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity,1))}.text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity,1))}.text-violet-300\/80{color:#c4b5fdcc}.text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-white\/70{color:#ffffffb3}.text-white\/80{color:#fffc}.text-white\/90{color:#ffffffe6}.accent-emerald-500{accent-color:#10b981}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-100{opacity:1}.opacity-35{opacity:.35}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-black\/80{--tw-shadow-color:#000c;--tw-shadow:var(--tw-shadow-colored)}.shadow-emerald-500\/10{--tw-shadow-color:#10b9811a;--tw-shadow:var(--tw-shadow-colored)}.shadow-emerald-500\/5{--tw-shadow-color:#10b9810d;--tw-shadow:var(--tw-shadow-colored)}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity,1))}.ring-emerald-500\/20{--tw-ring-color:#10b98133}.ring-emerald-500\/30{--tw-ring-color:#10b9814d}.ring-rose-500\/30{--tw-ring-color:#f43f5e4d}.ring-rose-500\/40{--tw-ring-color:#f43f5e66}.ring-white\/10{--tw-ring-color:#ffffff1a}.ring-white\/\[0\.06\]{--tw-ring-color:#ffffff0f}.blur-2xl{--tw-blur:blur(40px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-sm{--tw-blur:blur(4px);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)}.drop-shadow-lg{--tw-drop-shadow:drop-shadow(0 10px 8px #0000000a) drop-shadow(0 4px 3px #0000001a);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.glass-heavy{-webkit-backdrop-filter:blur(32px)saturate(1.8);background:#08090bd9}.noise-overlay:after{content:"";opacity:.02;pointer-events:none;z-index:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");position:absolute;inset:0}.stagger-1{animation-delay:50ms}.stagger-2{animation-delay:.1s}.stagger-3{animation-delay:.15s}.stagger-4{animation-delay:.2s}@keyframes gradient-shift{0%,to{background-position:0%}50%{background-position:100%}}*{scrollbar-width:thin;scrollbar-color:#ffffff0f transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff0a;border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:#10b9814d}::-webkit-scrollbar-corner{background:0 0}.placeholder\:text-gray-700::placeholder{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.last\:border-0:last-child{border-width:0}.hover\:-translate-y-1:hover{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-\[1\.02\]:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-amber-500\/30:hover{border-color:#f59e0b4d}.hover\:border-emerald-500\/15:hover{border-color:#10b98126}.hover\:border-emerald-500\/20:hover{border-color:#10b98133}.hover\:border-emerald-500\/25:hover{border-color:#10b98140}.hover\:border-emerald-500\/30:hover{border-color:#10b9814d}.hover\:border-gray-500:hover{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1))}.hover\:border-gray-600:hover{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.hover\:border-gray-700:hover{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.hover\:border-red-400\/40:hover{border-color:#f8717166}.hover\:border-red-800\/50:hover{border-color:#991b1b80}.hover\:border-rose-400\/50:hover{border-color:#fb718580}.hover\:border-white\/\[0\.12\]:hover{border-color:#ffffff1f}.hover\:bg-emerald-500\/5:hover{background-color:#10b9810d}.hover\:bg-emerald-500\/\[0\.02\]:hover{background-color:#10b98105}.hover\:bg-emerald-500\/\[0\.03\]:hover{background-color:#10b98108}.hover\:bg-emerald-600\/25:hover{background-color:#05966940}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.hover\:bg-gray-900:hover{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.hover\:bg-gray-900\/30:hover{background-color:#1118274d}.hover\:bg-gray-900\/50:hover{background-color:#11182780}.hover\:bg-gray-900\/60:hover{background-color:#11182799}.hover\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.hover\:bg-red-500\/60:hover{background-color:#ef444499}.hover\:bg-red-600\/90:hover{background-color:#dc2626e6}.hover\:bg-red-900\/40:hover{background-color:#7f1d1d66}.hover\:bg-rose-500:hover{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity,1))}.hover\:bg-rose-600\/20:hover{background-color:#e11d4833}.hover\:bg-rose-600\/25:hover{background-color:#e11d4840}.hover\:bg-violet-600\/25:hover{background-color:#7c3aed40}.hover\:bg-white\/\[0\.03\]:hover{background-color:#ffffff08}.hover\:bg-white\/\[0\.1\]:hover{background-color:#ffffff1a}.hover\:from-emerald-500\/15:hover{--tw-gradient-from:#10b98126 var(--tw-gradient-from-position);--tw-gradient-to:#10b98100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-emerald-500\/\[0\.02\]:hover{--tw-gradient-from:#10b98105 var(--tw-gradient-from-position);--tw-gradient-to:#10b98100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-emerald-500\/\[0\.03\]:hover{--tw-gradient-from:#10b98108 var(--tw-gradient-from-position);--tw-gradient-to:#10b98100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:to-teal-500\/15:hover{--tw-gradient-to:#14b8a626 var(--tw-gradient-to-position)}.hover\:text-emerald-300:hover{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.hover\:text-gray-400:hover{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.hover\:shadow-amber-500\/5:hover{--tw-shadow-color:#f59e0b0d;--tw-shadow:var(--tw-shadow-colored)}.hover\:shadow-emerald-500\/5:hover{--tw-shadow-color:#10b9810d;--tw-shadow:var(--tw-shadow-colored)}.focus\:border-emerald-500\/40:focus{border-color:#10b98166}.focus\:border-rose-500\/50:focus{border-color:#f43f5e80}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus\:ring-emerald-500\/20:focus{--tw-ring-color:#10b98133}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-white\/\[0\.06\]:disabled{border-color:#ffffff0f}.disabled\:bg-gray-800:disabled{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.disabled\:from-transparent:disabled{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.disabled\:to-transparent:disabled{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.disabled\:text-gray-600:disabled{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.disabled\:text-gray-700:disabled{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:pointer-events-auto{pointer-events:auto}.group:hover .group-hover\:translate-x-1{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:border-emerald-400\/40{border-color:#34d39966}.group:hover .group-hover\:from-emerald-500{--tw-gradient-from:#10b981 var(--tw-gradient-from-position);--tw-gradient-to:#10b98100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.group:hover .group-hover\:via-emerald-400{--tw-gradient-to:#34d39900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #34d399 var(--tw-gradient-via-position), var(--tw-gradient-to)}.group:hover .group-hover\:to-teal-400{--tw-gradient-to:#2dd4bf var(--tw-gradient-to-position)}.group:hover .group-hover\:text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.group:hover .group-hover\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.group:hover .group-hover\:shadow-md{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.group:hover .group-hover\:shadow-emerald-500\/10{--tw-shadow-color:#10b9811a;--tw-shadow:var(--tw-shadow-colored)}.group:hover .group-hover\:shadow-emerald-500\/5{--tw-shadow-color:#10b9810d;--tw-shadow:var(--tw-shadow-colored)}@media (width>=640px){.sm\:block{display:block}.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width>=768px){.md\:flex{display:flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:justify-between{justify-content:space-between}}@media (width>=1024px){.lg\:inline{display:inline}.lg\:w-80{width:20rem}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-end{align-items:flex-end}.lg\:items-center{align-items:center}.lg\:justify-between{justify-content:space-between}.lg\:p-7{padding:1.75rem}.lg\:px-7{padding-left:1.75rem;padding-right:1.75rem}}@media (width>=1280px){.xl\:inline-flex{display:inline-flex}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-\[1\.25fr_0\.75fr\]{grid-template-columns:1.25fr .75fr}}.\[\&\:\:-webkit-slider-thumb\]\:h-3::-webkit-slider-thumb{height:.75rem}.\[\&\:\:-webkit-slider-thumb\]\:w-3::-webkit-slider-thumb{width:.75rem}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{appearance:none}.\[\&\:\:-webkit-slider-thumb\]\:rounded-full::-webkit-slider-thumb{border-radius:9999px}.\[\&\:\:-webkit-slider-thumb\]\:border-2::-webkit-slider-thumb{border-width:2px}.\[\&\:\:-webkit-slider-thumb\]\:border-emerald-300::-webkit-slider-thumb{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity,1))}.\[\&\:\:-webkit-slider-thumb\]\:bg-emerald-400::-webkit-slider-thumb{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity,1))}.\[\&\:\:-webkit-slider-thumb\]\:shadow-lg::-webkit-slider-thumb{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.\[\&\:\:-webkit-slider-thumb\]\:shadow-emerald-500\/30::-webkit-slider-thumb{--tw-shadow-color:#10b9814d;--tw-shadow:var(--tw-shadow-colored)}.\[\&\:\:-webkit-slider-thumb\]\:transition-all::-webkit-slider-thumb{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[\&\:\:-webkit-slider-thumb\]\:hover\:scale-125:hover::-webkit-slider-thumb{--tw-scale-x:1.25;--tw-scale-y:1.25;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}
public/index.html ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>ChitraMaya — AI Media Production Console</title>
7
+ <meta name="description" content="Enterprise-grade agentic media synthesis platform on AMD MI300X. Generate cinematic images and videos with identity-locked LoRA workflows." />
8
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Outfit:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
11
+ <script type="module" crossorigin src="/assets/index-CRUgkOBt.js"></script>
12
+ <link rel="stylesheet" crossorigin href="/assets/index-JUxenFRF.css">
13
+ </head>
14
+ <body class="bg-black text-white font-sans">
15
+ <div id="root"></div>
16
+ </body>
17
+ </html>