@cloudvoyant/vortex-ui 0.17.0-rc.202609040136.45c8986

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/index.cjs +1675 -0
  2. package/dist/index.d.cts +723 -0
  3. package/dist/index.d.ts +723 -0
  4. package/dist/index.js +1383 -0
  5. package/package.json +67 -0
  6. package/src/components.css +36 -0
  7. package/src/theme.css +189 -0
  8. package/src/themes/amber-minimal.css +83 -0
  9. package/src/themes/amethyst-haze.css +83 -0
  10. package/src/themes/anthropic.css +60 -0
  11. package/src/themes/anyscale.css +73 -0
  12. package/src/themes/bold-tech.css +82 -0
  13. package/src/themes/bubblegum.css +85 -0
  14. package/src/themes/caffeine.css +73 -0
  15. package/src/themes/candyland.css +75 -0
  16. package/src/themes/catppuccin.css +81 -0
  17. package/src/themes/claude.css +81 -0
  18. package/src/themes/claymorphism.css +83 -0
  19. package/src/themes/clean-slate.css +82 -0
  20. package/src/themes/cosmic-night.css +82 -0
  21. package/src/themes/cyberpunk.css +81 -0
  22. package/src/themes/darkmatter.css +84 -0
  23. package/src/themes/default.css +62 -0
  24. package/src/themes/doom-64.css +95 -0
  25. package/src/themes/elegant-luxury.css +82 -0
  26. package/src/themes/graphite.css +59 -0
  27. package/src/themes/green.css +57 -0
  28. package/src/themes/kodama-grove.css +81 -0
  29. package/src/themes/lambda.css +63 -0
  30. package/src/themes/mdbook.css +108 -0
  31. package/src/themes/midnight-bloom.css +82 -0
  32. package/src/themes/mocha-mousse.css +82 -0
  33. package/src/themes/modern-minimal.css +76 -0
  34. package/src/themes/mono.css +81 -0
  35. package/src/themes/nature.css +76 -0
  36. package/src/themes/neo-brutalism.css +81 -0
  37. package/src/themes/northern-lights.css +76 -0
  38. package/src/themes/notebook.css +95 -0
  39. package/src/themes/ocean-breeze.css +82 -0
  40. package/src/themes/openai.css +59 -0
  41. package/src/themes/pastel-dreams.css +82 -0
  42. package/src/themes/perpetuity.css +91 -0
  43. package/src/themes/quantum-rose.css +85 -0
  44. package/src/themes/retro-arcade.css +81 -0
  45. package/src/themes/rose.css +57 -0
  46. package/src/themes/sage-garden.css +84 -0
  47. package/src/themes/slate.css +57 -0
  48. package/src/themes/soft-pop.css +95 -0
  49. package/src/themes/solar-dusk.css +83 -0
  50. package/src/themes/starry-night.css +74 -0
  51. package/src/themes/sunset-horizon.css +82 -0
  52. package/src/themes/supabase.css +83 -0
  53. package/src/themes/t3-chat.css +72 -0
  54. package/src/themes/tangerine.css +81 -0
  55. package/src/themes/twitter.css +82 -0
  56. package/src/themes/vercel.css +85 -0
  57. package/src/themes/vintage-paper.css +82 -0
  58. package/src/themes/violet-bloom.css +95 -0
  59. package/src/themes/vitepress.css +60 -0
  60. package/src/themes/vortex-ui.css +88 -0
  61. package/src/themes.css +4184 -0
package/src/themes.css ADDED
@@ -0,0 +1,4184 @@
1
+ /* amber-minimal — tweakcn "Amber Minimal" preset. Auto-generated from tweakcn defaultPresets;
2
+ tokens kept verbatim (consumed via var()). */
3
+ .theme-amber-minimal {
4
+ --background: #ffffff;
5
+ --foreground: #262626;
6
+ --card: #ffffff;
7
+ --card-foreground: #262626;
8
+ --popover: #ffffff;
9
+ --popover-foreground: #262626;
10
+ --primary: #f59e0b;
11
+ --primary-foreground: #000000;
12
+ --secondary: #f3f4f6;
13
+ --secondary-foreground: #4b5563;
14
+ --muted: #f9fafb;
15
+ --muted-foreground: #6b7280;
16
+ --accent: #fffbeb;
17
+ --accent-foreground: #92400e;
18
+ --destructive: #ef4444;
19
+ --destructive-foreground: #ffffff;
20
+ --border: #e5e7eb;
21
+ --input: #e5e7eb;
22
+ --ring: #f59e0b;
23
+ --chart-1: #f59e0b;
24
+ --chart-2: #d97706;
25
+ --chart-3: #b45309;
26
+ --chart-4: #92400e;
27
+ --chart-5: #78350f;
28
+ --sidebar: #f9fafb;
29
+ --sidebar-foreground: #262626;
30
+ --sidebar-primary: #f59e0b;
31
+ --sidebar-primary-foreground: #ffffff;
32
+ --sidebar-accent: #fffbeb;
33
+ --sidebar-accent-foreground: #92400e;
34
+ --sidebar-border: #e5e7eb;
35
+ --sidebar-ring: #f59e0b;
36
+ --font-sans: Inter, sans-serif;
37
+ --font-serif: Source Serif 4, serif;
38
+ --font-mono: JetBrains Mono, monospace;
39
+ --radius: 0.375rem;
40
+ --shadow-color: hsl(0 0% 0%);
41
+ --shadow-opacity: 0.1;
42
+ --shadow-blur: 8px;
43
+ --shadow-spread: -1px;
44
+ --shadow-offset-x: 0px;
45
+ --shadow-offset-y: 4px;
46
+ --letter-spacing: 0em;
47
+ --spacing: 0.25rem;
48
+ }
49
+
50
+ .theme-amber-minimal.dark {
51
+ --background: #171717;
52
+ --foreground: #e5e5e5;
53
+ --card: #262626;
54
+ --card-foreground: #e5e5e5;
55
+ --popover: #262626;
56
+ --popover-foreground: #e5e5e5;
57
+ --primary: #f59e0b;
58
+ --primary-foreground: #000000;
59
+ --secondary: #262626;
60
+ --secondary-foreground: #e5e5e5;
61
+ --muted: #1f1f1f;
62
+ --muted-foreground: #a3a3a3;
63
+ --accent: #92400e;
64
+ --accent-foreground: #fde68a;
65
+ --destructive: #ef4444;
66
+ --destructive-foreground: #ffffff;
67
+ --border: #404040;
68
+ --input: #404040;
69
+ --ring: #f59e0b;
70
+ --chart-1: #fbbf24;
71
+ --chart-2: #d97706;
72
+ --chart-3: #92400e;
73
+ --chart-4: #b45309;
74
+ --chart-5: #92400e;
75
+ --sidebar: #0f0f0f;
76
+ --sidebar-foreground: #e5e5e5;
77
+ --sidebar-primary: #f59e0b;
78
+ --sidebar-primary-foreground: #ffffff;
79
+ --sidebar-accent: #92400e;
80
+ --sidebar-accent-foreground: #fde68a;
81
+ --sidebar-border: #404040;
82
+ --sidebar-ring: #f59e0b;
83
+ }
84
+ /* amethyst-haze — tweakcn "Amethyst Haze" preset. Auto-generated from tweakcn defaultPresets;
85
+ tokens kept verbatim (consumed via var()). */
86
+ .theme-amethyst-haze {
87
+ --background: #f8f7fa;
88
+ --foreground: #3d3c4f;
89
+ --card: #ffffff;
90
+ --card-foreground: #3d3c4f;
91
+ --popover: #ffffff;
92
+ --popover-foreground: #3d3c4f;
93
+ --primary: #8a79ab;
94
+ --primary-foreground: #f8f7fa;
95
+ --secondary: #dfd9ec;
96
+ --secondary-foreground: #3d3c4f;
97
+ --muted: #dcd9e3;
98
+ --muted-foreground: #6b6880;
99
+ --accent: #e6a5b8;
100
+ --accent-foreground: #4b2e36;
101
+ --destructive: #d95c5c;
102
+ --destructive-foreground: #f8f7fa;
103
+ --border: #cec9d9;
104
+ --input: #eae7f0;
105
+ --ring: #8a79ab;
106
+ --chart-1: #8a79ab;
107
+ --chart-2: #e6a5b8;
108
+ --chart-3: #77b8a1;
109
+ --chart-4: #f0c88d;
110
+ --chart-5: #a0bbe3;
111
+ --sidebar: #f1eff5;
112
+ --sidebar-foreground: #3d3c4f;
113
+ --sidebar-primary: #8a79ab;
114
+ --sidebar-primary-foreground: #f8f7fa;
115
+ --sidebar-accent: #e6a5b8;
116
+ --sidebar-accent-foreground: #4b2e36;
117
+ --sidebar-border: #d7d2e0;
118
+ --sidebar-ring: #8a79ab;
119
+ --font-sans: Geist, sans-serif;
120
+ --font-serif: 'Lora', Georgia, serif;
121
+ --font-mono: 'Fira Code', 'Courier New', monospace;
122
+ --radius: 0.5rem;
123
+ --shadow-color: hsl(0 0% 0%);
124
+ --shadow-opacity: 0.06;
125
+ --shadow-blur: 5px;
126
+ --shadow-spread: 1px;
127
+ --shadow-offset-x: 1px;
128
+ --shadow-offset-y: 2px;
129
+ --letter-spacing: 0em;
130
+ --spacing: 0.25rem;
131
+ }
132
+
133
+ .theme-amethyst-haze.dark {
134
+ --background: #1a1823;
135
+ --foreground: #e0ddef;
136
+ --card: #232030;
137
+ --card-foreground: #e0ddef;
138
+ --popover: #232030;
139
+ --popover-foreground: #e0ddef;
140
+ --primary: #a995c9;
141
+ --primary-foreground: #1a1823;
142
+ --secondary: #5a5370;
143
+ --secondary-foreground: #e0ddef;
144
+ --muted: #242031;
145
+ --muted-foreground: #a09aad;
146
+ --accent: #372e3f;
147
+ --accent-foreground: #f2b8c6;
148
+ --destructive: #e57373;
149
+ --destructive-foreground: #1a1823;
150
+ --border: #302c40;
151
+ --input: #2a273a;
152
+ --ring: #a995c9;
153
+ --chart-1: #a995c9;
154
+ --chart-2: #f2b8c6;
155
+ --chart-3: #77b8a1;
156
+ --chart-4: #f0c88d;
157
+ --chart-5: #a0bbe3;
158
+ --sidebar: #16141e;
159
+ --sidebar-foreground: #e0ddef;
160
+ --sidebar-primary: #a995c9;
161
+ --sidebar-primary-foreground: #1a1823;
162
+ --sidebar-accent: #372e3f;
163
+ --sidebar-accent-foreground: #f2b8c6;
164
+ --sidebar-border: #2a273a;
165
+ --sidebar-ring: #a995c9;
166
+ }
167
+ /* Anthropic — warm "research publication on parchment": ivory (#faf9f5) canvas,
168
+ warm near-black slate text (#141413), single clay/terracotta accent (#d97757),
169
+ serif display headings. Brand fonts Styrene + Tiempos are proprietary; substituted
170
+ with Source Serif 4 (serif) + Inter/Figtree (sans). Serif headings: YES. */
171
+ .theme-anthropic {
172
+ --background: oklch(0.985 0.005 95); /* #faf9f5 ivory */
173
+ --foreground: oklch(0.235 0.006 75); /* #141413 warm near-black */
174
+ --card: oklch(0.995 0.004 95);
175
+ --card-foreground: oklch(0.235 0.006 75);
176
+ --popover: oklch(0.995 0.004 95);
177
+ --popover-foreground: oklch(0.235 0.006 75);
178
+ --primary: oklch(0.64 0.12 43); /* clay #d97757 */
179
+ --primary-foreground: oklch(0.985 0.005 95);
180
+ --secondary: oklch(0.945 0.008 90); /* oat #f0eee6 */
181
+ --secondary-foreground: oklch(0.3 0.006 75);
182
+ --muted: oklch(0.925 0.01 90); /* light oat #e8e6dc */
183
+ --muted-foreground: oklch(0.5 0.01 80);
184
+ --accent: oklch(0.925 0.01 90);
185
+ --accent-foreground: oklch(0.3 0.006 75);
186
+ --destructive: oklch(0.577 0.245 27.325);
187
+ --destructive-foreground: oklch(0.985 0.005 95);
188
+ --border: oklch(0.915 0.008 88); /* light, thin hairline (Anthropic uses faint rules) */
189
+ --input: oklch(0.905 0.008 88);
190
+ --ring: oklch(0.64 0.12 43);
191
+ --sidebar: oklch(0.965 0.007 92);
192
+ --sidebar-foreground: oklch(0.235 0.006 75);
193
+ --sidebar-accent: oklch(0.925 0.01 90);
194
+ --sidebar-accent-foreground: oklch(0.3 0.006 75);
195
+ --radius: 0.5rem;
196
+ --font-sans: 'Inter', 'Figtree', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
197
+ --font-serif: 'Source Serif 4', 'Newsreader', Georgia, Cambria, 'Times New Roman', serif;
198
+ --font-mono: 'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;
199
+ --font-heading: var(--font-serif); /* serif display headings */
200
+ }
201
+
202
+ .theme-anthropic.dark {
203
+ --background: oklch(0.205 0.006 75); /* warm slate #141413 */
204
+ --foreground: oklch(0.945 0.006 92); /* ivory text */
205
+ --card: oklch(0.245 0.006 75);
206
+ --card-foreground: oklch(0.945 0.006 92);
207
+ --popover: oklch(0.245 0.006 75);
208
+ --popover-foreground: oklch(0.945 0.006 92);
209
+ --primary: oklch(0.68 0.12 45); /* clay, brightened for dark */
210
+ --primary-foreground: oklch(0.205 0.006 75);
211
+ --secondary: oklch(0.285 0.008 78);
212
+ --secondary-foreground: oklch(0.945 0.006 92);
213
+ --muted: oklch(0.285 0.008 78);
214
+ --muted-foreground: oklch(0.7 0.01 85);
215
+ --accent: oklch(0.32 0.01 80);
216
+ --accent-foreground: oklch(0.945 0.006 92);
217
+ --destructive: oklch(0.704 0.191 22.216);
218
+ --destructive-foreground: oklch(0.985 0.005 95);
219
+ --border: oklch(1 0 0 / 8%); /* fainter hairline in dark */
220
+ --input: oklch(1 0 0 / 11%);
221
+ --ring: oklch(0.68 0.12 45);
222
+ --sidebar: oklch(0.235 0.006 75);
223
+ --sidebar-foreground: oklch(0.945 0.006 92);
224
+ --sidebar-accent: oklch(0.32 0.01 80);
225
+ --sidebar-accent-foreground: oklch(0.945 0.006 92);
226
+ }
227
+ /* anyscale — indigo/blue brand: white surface, saturated indigo primary,
228
+ cool slate text. Distinct cool-slate theme. */
229
+ .theme-anyscale {
230
+ --radius: 0.5rem;
231
+ --background: oklch(1 0 180);
232
+ --foreground: oklch(0.126 0.026 268.939);
233
+ --muted: oklch(0.885 0.01 276.021);
234
+ --muted-foreground: oklch(0.464 0.025 275.387);
235
+ --popover: oklch(0.992 0 161.565);
236
+ --popover-foreground: oklch(0.114 0.022 268.251);
237
+ --card: oklch(0.992 0 161.565);
238
+ --card-foreground: oklch(0.114 0.022 268.251);
239
+ --border: oklch(0.928 0.006 264.531);
240
+ --input: oklch(0.928 0.006 264.531);
241
+ --primary: oklch(0.567 0.237 267.896);
242
+ --primary-foreground: oklch(1 0 180);
243
+ --secondary: oklch(0.915 0.011 276);
244
+ --secondary-foreground: oklch(0.388 0.043 274.435);
245
+ --accent: oklch(0.866 0.024 275.781);
246
+ --accent-foreground: oklch(0.335 0.052 273.604);
247
+ --destructive: oklch(0.63 0.256 29.629);
248
+ --destructive-foreground: oklch(1 0 180);
249
+ --ring: oklch(0.567 0.237 267.896);
250
+ --chart-1: oklch(0.567 0.237 267.896);
251
+ --chart-2: oklch(0.915 0.011 276);
252
+ --chart-3: oklch(0.866 0.024 275.781);
253
+ --chart-4: oklch(0.94 0.008 276.055);
254
+ --chart-5: oklch(0.565 0.244 267.612);
255
+ --sidebar: oklch(0.992 0 161.565);
256
+ --sidebar-foreground: oklch(0.126 0.026 268.939);
257
+ --sidebar-primary: oklch(0.567 0.237 267.896);
258
+ --sidebar-primary-foreground: oklch(1 0 180);
259
+ --sidebar-accent: oklch(0.866 0.024 275.781);
260
+ --sidebar-accent-foreground: oklch(0.335 0.052 273.604);
261
+ --sidebar-border: oklch(0.928 0.006 264.531);
262
+ --sidebar-ring: oklch(0.567 0.237 267.896);
263
+ }
264
+
265
+ .theme-anyscale.dark {
266
+ --radius: 0.5rem;
267
+ --background: oklch(0.134 0.016 272.261);
268
+ --foreground: oklch(0.991 0.001 276.148);
269
+ --muted: oklch(0.249 0.013 275.396);
270
+ --muted-foreground: oklch(0.691 0.023 275.711);
271
+ --popover: oklch(0.144 0.019 273.129);
272
+ --popover-foreground: oklch(1 0 180);
273
+ --card: oklch(0.144 0.019 273.129);
274
+ --card-foreground: oklch(1 0 180);
275
+ --border: oklch(0.278 0.03 256.848);
276
+ --input: oklch(0.278 0.03 256.848);
277
+ --primary: oklch(0.567 0.237 267.896);
278
+ --primary-foreground: oklch(1 0 180);
279
+ --secondary: oklch(0.186 0.01 275.429);
280
+ --secondary-foreground: oklch(0.728 0.027 275.646);
281
+ --accent: oklch(0.269 0.031 274.373);
282
+ --accent-foreground: oklch(0.798 0.032 275.616);
283
+ --destructive: oklch(0.62 0.232 29.041);
284
+ --destructive-foreground: oklch(1 0 180);
285
+ --ring: oklch(0.567 0.237 267.896);
286
+ --chart-1: oklch(0.567 0.237 267.896);
287
+ --chart-2: oklch(0.186 0.01 275.429);
288
+ --chart-3: oklch(0.269 0.031 274.373);
289
+ --chart-4: oklch(0.217 0.013 275.322);
290
+ --chart-5: oklch(0.565 0.244 267.612);
291
+ --sidebar: oklch(0.144 0.019 273.129);
292
+ --sidebar-foreground: oklch(0.991 0.001 276.148);
293
+ --sidebar-primary: oklch(0.567 0.237 267.896);
294
+ --sidebar-primary-foreground: oklch(1 0 180);
295
+ --sidebar-accent: oklch(0.269 0.031 274.373);
296
+ --sidebar-accent-foreground: oklch(0.798 0.032 275.616);
297
+ --sidebar-border: oklch(0.278 0.03 256.848);
298
+ --sidebar-ring: oklch(0.567 0.237 267.896);
299
+ }
300
+ /* bold-tech — tweakcn "Bold Tech" preset. Auto-generated from tweakcn defaultPresets;
301
+ tokens kept verbatim (consumed via var()). */
302
+ .theme-bold-tech {
303
+ --background: #ffffff;
304
+ --foreground: #312e81;
305
+ --card: #ffffff;
306
+ --card-foreground: #312e81;
307
+ --popover: #ffffff;
308
+ --popover-foreground: #312e81;
309
+ --primary: #8b5cf6;
310
+ --primary-foreground: #ffffff;
311
+ --secondary: #f3f0ff;
312
+ --secondary-foreground: #4338ca;
313
+ --muted: #f5f3ff;
314
+ --muted-foreground: #7c3aed;
315
+ --accent: #dbeafe;
316
+ --accent-foreground: #1e40af;
317
+ --destructive: #ef4444;
318
+ --destructive-foreground: #ffffff;
319
+ --border: #e0e7ff;
320
+ --input: #e0e7ff;
321
+ --ring: #8b5cf6;
322
+ --chart-1: #8b5cf6;
323
+ --chart-2: #7c3aed;
324
+ --chart-3: #6d28d9;
325
+ --chart-4: #5b21b6;
326
+ --chart-5: #4c1d95;
327
+ --radius: 0.625rem;
328
+ --sidebar: #f5f3ff;
329
+ --sidebar-foreground: #312e81;
330
+ --sidebar-primary: #8b5cf6;
331
+ --sidebar-primary-foreground: #ffffff;
332
+ --sidebar-accent: #dbeafe;
333
+ --sidebar-accent-foreground: #1e40af;
334
+ --sidebar-border: #e0e7ff;
335
+ --sidebar-ring: #8b5cf6;
336
+ --font-sans: Roboto, sans-serif;
337
+ --font-serif: Playfair Display, serif;
338
+ --font-mono: Fira Code, monospace;
339
+ --shadow-color: hsl(255 86% 66%);
340
+ --shadow-opacity: 0.2;
341
+ --shadow-blur: 4px;
342
+ --shadow-spread: 0px;
343
+ --shadow-offset-x: 2px;
344
+ --shadow-offset-y: 2px;
345
+ }
346
+
347
+ .theme-bold-tech.dark {
348
+ --background: #0f172a;
349
+ --foreground: #e0e7ff;
350
+ --card: #1e1b4b;
351
+ --card-foreground: #e0e7ff;
352
+ --popover: #1e1b4b;
353
+ --popover-foreground: #e0e7ff;
354
+ --primary: #8b5cf6;
355
+ --primary-foreground: #ffffff;
356
+ --secondary: #1e1b4b;
357
+ --secondary-foreground: #e0e7ff;
358
+ --muted: #171447;
359
+ --muted-foreground: #c4b5fd;
360
+ --accent: #4338ca;
361
+ --accent-foreground: #e0e7ff;
362
+ --destructive: #ef4444;
363
+ --destructive-foreground: #ffffff;
364
+ --border: #2e1065;
365
+ --input: #2e1065;
366
+ --ring: #8b5cf6;
367
+ --chart-1: #a78bfa;
368
+ --chart-2: #8b5cf6;
369
+ --chart-3: #7c3aed;
370
+ --chart-4: #6d28d9;
371
+ --chart-5: #5b21b6;
372
+ --radius: 0.625rem;
373
+ --sidebar: #0f172a;
374
+ --sidebar-foreground: #e0e7ff;
375
+ --sidebar-primary: #8b5cf6;
376
+ --sidebar-primary-foreground: #ffffff;
377
+ --sidebar-accent: #4338ca;
378
+ --sidebar-accent-foreground: #e0e7ff;
379
+ --sidebar-border: #2e1065;
380
+ --sidebar-ring: #8b5cf6;
381
+ }
382
+ /* bubblegum — tweakcn "Bubblegum" preset. Auto-generated from tweakcn defaultPresets;
383
+ tokens kept verbatim (consumed via var()). */
384
+ .theme-bubblegum {
385
+ --background: #f6e6ee;
386
+ --foreground: #5b5b5b;
387
+ --card: #fdedc9;
388
+ --card-foreground: #5b5b5b;
389
+ --popover: #ffffff;
390
+ --popover-foreground: #5b5b5b;
391
+ --primary: #d04f99;
392
+ --primary-foreground: #ffffff;
393
+ --secondary: #8acfd1;
394
+ --secondary-foreground: #333333;
395
+ --muted: #b2e1eb;
396
+ --muted-foreground: #7a7a7a;
397
+ --accent: #fbe2a7;
398
+ --accent-foreground: #333333;
399
+ --destructive: #f96f70;
400
+ --destructive-foreground: #ffffff;
401
+ --border: #d04f99;
402
+ --input: #e4e4e4;
403
+ --ring: #e670ab;
404
+ --chart-1: #e670ab;
405
+ --chart-2: #84d2e2;
406
+ --chart-3: #fbe2a7;
407
+ --chart-4: #f3a0ca;
408
+ --chart-5: #d7488e;
409
+ --sidebar: #f8d8ea;
410
+ --sidebar-foreground: #333333;
411
+ --sidebar-primary: #ec4899;
412
+ --sidebar-primary-foreground: #ffffff;
413
+ --sidebar-accent: #f9a8d4;
414
+ --sidebar-accent-foreground: #333333;
415
+ --sidebar-border: #f3e8ff;
416
+ --sidebar-ring: #ec4899;
417
+ --font-sans: Poppins, sans-serif;
418
+ --font-serif: Lora, serif;
419
+ --font-mono: Fira Code, monospace;
420
+ --radius: 0.4rem;
421
+ --shadow-color: hsl(325.78 58.18% 56.86% / 0.5);
422
+ --shadow-opacity: 1;
423
+ --shadow-blur: 0px;
424
+ --shadow-spread: 0px;
425
+ --shadow-offset-x: 3px;
426
+ --shadow-offset-y: 3px;
427
+ }
428
+
429
+ .theme-bubblegum.dark {
430
+ --background: #12242e;
431
+ --foreground: #f3e3ea;
432
+ --card: #1c2e38;
433
+ --card-foreground: #f3e3ea;
434
+ --popover: #1c2e38;
435
+ --popover-foreground: #f3e3ea;
436
+ --primary: #fbe2a7;
437
+ --primary-foreground: #12242e;
438
+ --secondary: #e4a2b1;
439
+ --secondary-foreground: #12242e;
440
+ --muted: #24272b;
441
+ --muted-foreground: #e4a2b1;
442
+ --accent: #c67b96;
443
+ --accent-foreground: #f3e3ea;
444
+ --destructive: #e35ea4;
445
+ --destructive-foreground: #12242e;
446
+ --border: #324859;
447
+ --input: #20333d;
448
+ --ring: #50afb6;
449
+ --chart-1: #50afb6;
450
+ --chart-2: #e4a2b1;
451
+ --chart-3: #c67b96;
452
+ --chart-4: #175c6c;
453
+ --chart-5: #24272b;
454
+ --sidebar: #101f28;
455
+ --sidebar-foreground: #f3f4f6;
456
+ --sidebar-primary: #ec4899;
457
+ --sidebar-primary-foreground: #ffffff;
458
+ --sidebar-accent: #f9a8d4;
459
+ --sidebar-accent-foreground: #1f2937;
460
+ --sidebar-border: #374151;
461
+ --sidebar-ring: #ec4899;
462
+ --font-sans: Poppins, sans-serif;
463
+ --font-serif: Lora, serif;
464
+ --font-mono: Fira Code, monospace;
465
+ --shadow-color: #324859;
466
+ }
467
+ /* caffeine — tweakcn "Caffeine" preset. Auto-generated from tweakcn defaultPresets;
468
+ tokens kept verbatim (consumed via var()). */
469
+ .theme-caffeine {
470
+ --background: #f9f9f9;
471
+ --foreground: #202020;
472
+ --card: #fcfcfc;
473
+ --card-foreground: #202020;
474
+ --popover: #fcfcfc;
475
+ --popover-foreground: #202020;
476
+ --primary: #644a40;
477
+ --primary-foreground: #ffffff;
478
+ --secondary: #ffdfb5;
479
+ --secondary-foreground: #582d1d;
480
+ --muted: #efefef;
481
+ --muted-foreground: #646464;
482
+ --accent: #e8e8e8;
483
+ --accent-foreground: #202020;
484
+ --destructive: #e54d2e;
485
+ --destructive-foreground: #ffffff;
486
+ --border: #d8d8d8;
487
+ --input: #d8d8d8;
488
+ --ring: #644a40;
489
+ --chart-1: #644a40;
490
+ --chart-2: #ffdfb5;
491
+ --chart-3: #e8e8e8;
492
+ --chart-4: #ffe6c4;
493
+ --chart-5: #66493e;
494
+ --sidebar: #fbfbfb;
495
+ --sidebar-foreground: #252525;
496
+ --sidebar-primary: #343434;
497
+ --sidebar-primary-foreground: #fbfbfb;
498
+ --sidebar-accent: #f7f7f7;
499
+ --sidebar-accent-foreground: #343434;
500
+ --sidebar-border: #ebebeb;
501
+ --sidebar-ring: #b5b5b5;
502
+ --radius: 0.5rem;
503
+ }
504
+
505
+ .theme-caffeine.dark {
506
+ --background: #111111;
507
+ --foreground: #eeeeee;
508
+ --card: #191919;
509
+ --card-foreground: #eeeeee;
510
+ --popover: #191919;
511
+ --popover-foreground: #eeeeee;
512
+ --primary: #ffe0c2;
513
+ --primary-foreground: #081a1b;
514
+ --secondary: #393028;
515
+ --secondary-foreground: #ffe0c2;
516
+ --muted: #222222;
517
+ --muted-foreground: #b4b4b4;
518
+ --accent: #2a2a2a;
519
+ --accent-foreground: #eeeeee;
520
+ --destructive: #e54d2e;
521
+ --destructive-foreground: #ffffff;
522
+ --border: #201e18;
523
+ --input: #484848;
524
+ --ring: #ffe0c2;
525
+ --chart-1: #ffe0c2;
526
+ --chart-2: #393028;
527
+ --chart-3: #2a2a2a;
528
+ --chart-4: #42382e;
529
+ --chart-5: #ffe0c1;
530
+ --sidebar: #18181b;
531
+ --sidebar-foreground: #f4f4f5;
532
+ --sidebar-primary: #1d4ed8;
533
+ --sidebar-primary-foreground: #ffffff;
534
+ --sidebar-accent: #27272a;
535
+ --sidebar-accent-foreground: #f4f4f5;
536
+ --sidebar-border: #27272a;
537
+ --sidebar-ring: #d4d4d8;
538
+ --radius: 0.5rem;
539
+ }
540
+ /* candyland — tweakcn "Candyland" preset. Auto-generated from tweakcn defaultPresets;
541
+ tokens kept verbatim (consumed via var()). */
542
+ .theme-candyland {
543
+ --background: #f7f9fa;
544
+ --foreground: #333333;
545
+ --card: #ffffff;
546
+ --card-foreground: #333333;
547
+ --popover: #ffffff;
548
+ --popover-foreground: #333333;
549
+ --primary: #ffc0cb;
550
+ --primary-foreground: #000000;
551
+ --secondary: #87ceeb;
552
+ --secondary-foreground: #000000;
553
+ --muted: #ddd9c4;
554
+ --muted-foreground: #6e6e6e;
555
+ --accent: #ffff00;
556
+ --accent-foreground: #000000;
557
+ --destructive: #ef4444;
558
+ --destructive-foreground: #ffffff;
559
+ --border: #d4d4d4;
560
+ --input: #d4d4d4;
561
+ --ring: #ffc0cb;
562
+ --chart-1: #ffc0cb;
563
+ --chart-2: #87ceeb;
564
+ --chart-3: #ffff00;
565
+ --chart-4: #ff99cc;
566
+ --chart-5: #33cc33;
567
+ --radius: 0.5rem;
568
+ --sidebar: #f7f9fa;
569
+ --sidebar-foreground: #333333;
570
+ --sidebar-primary: #ffc0cb;
571
+ --sidebar-primary-foreground: #000000;
572
+ --sidebar-accent: #ffff00;
573
+ --sidebar-accent-foreground: #000000;
574
+ --sidebar-border: #d4d4d4;
575
+ --sidebar-ring: #ffc0cb;
576
+ --font-sans: Poppins, sans-serif;
577
+ --font-mono: Roboto Mono, monospace;
578
+ }
579
+
580
+ .theme-candyland.dark {
581
+ --background: #1a1d23;
582
+ --foreground: #e5e5e5;
583
+ --card: #2f3436;
584
+ --card-foreground: #e5e5e5;
585
+ --popover: #2f3436;
586
+ --popover-foreground: #e5e5e5;
587
+ --primary: #ff99cc;
588
+ --primary-foreground: #000000;
589
+ --secondary: #33cc33;
590
+ --secondary-foreground: #000000;
591
+ --muted: #444444;
592
+ --muted-foreground: #a3a3a3;
593
+ --accent: #87ceeb;
594
+ --accent-foreground: #000000;
595
+ --destructive: #ef4444;
596
+ --destructive-foreground: #ffffff;
597
+ --border: #444444;
598
+ --input: #444444;
599
+ --ring: #ff99cc;
600
+ --chart-1: #ff99cc;
601
+ --chart-2: #33cc33;
602
+ --chart-3: #87ceeb;
603
+ --chart-4: #ffff00;
604
+ --chart-5: #ffcc00;
605
+ --radius: 0.5rem;
606
+ --sidebar: #1a1d23;
607
+ --sidebar-foreground: #e5e5e5;
608
+ --sidebar-primary: #ff99cc;
609
+ --sidebar-primary-foreground: #000000;
610
+ --sidebar-accent: #87ceeb;
611
+ --sidebar-accent-foreground: #000000;
612
+ --sidebar-border: #444444;
613
+ --sidebar-ring: #ff99cc;
614
+ }
615
+ /* catppuccin — tweakcn "Catppuccin" preset. Auto-generated from tweakcn defaultPresets;
616
+ tokens kept verbatim (consumed via var()). */
617
+ .theme-catppuccin {
618
+ --background: #eff1f5;
619
+ --foreground: #4c4f69;
620
+ --card: #ffffff;
621
+ --card-foreground: #4c4f69;
622
+ --popover: #ccd0da;
623
+ --popover-foreground: #4c4f69;
624
+ --primary: #8839ef;
625
+ --primary-foreground: #ffffff;
626
+ --secondary: #ccd0da;
627
+ --secondary-foreground: #4c4f69;
628
+ --muted: #dce0e8;
629
+ --muted-foreground: #6c6f85;
630
+ --accent: #04a5e5;
631
+ --accent-foreground: #ffffff;
632
+ --destructive: #d20f39;
633
+ --destructive-foreground: #ffffff;
634
+ --border: #bcc0cc;
635
+ --input: #ccd0da;
636
+ --ring: #8839ef;
637
+ --chart-1: #8839ef;
638
+ --chart-2: #04a5e5;
639
+ --chart-3: #40a02b;
640
+ --chart-4: #fe640b;
641
+ --chart-5: #dc8a78;
642
+ --sidebar: #e6e9ef;
643
+ --sidebar-foreground: #4c4f69;
644
+ --sidebar-primary: #8839ef;
645
+ --sidebar-primary-foreground: #ffffff;
646
+ --sidebar-accent: #04a5e5;
647
+ --sidebar-accent-foreground: #ffffff;
648
+ --sidebar-border: #bcc0cc;
649
+ --sidebar-ring: #8839ef;
650
+ --font-sans: Montserrat, sans-serif;
651
+ --font-serif: Georgia, serif;
652
+ --font-mono: Fira Code, monospace;
653
+ --radius: 0.35rem;
654
+ --shadow-color: hsl(240 30% 25%);
655
+ --shadow-opacity: 0.12;
656
+ --shadow-blur: 6px;
657
+ --shadow-spread: 0px;
658
+ --shadow-offset-x: 0px;
659
+ --shadow-offset-y: 4px;
660
+ }
661
+
662
+ .theme-catppuccin.dark {
663
+ --background: #181825;
664
+ --foreground: #cdd6f4;
665
+ --card: #1e1e2e;
666
+ --card-foreground: #cdd6f4;
667
+ --popover: #45475a;
668
+ --popover-foreground: #cdd6f4;
669
+ --primary: #cba6f7;
670
+ --primary-foreground: #1e1e2e;
671
+ --secondary: #585b70;
672
+ --secondary-foreground: #cdd6f4;
673
+ --muted: #292c3c;
674
+ --muted-foreground: #a6adc8;
675
+ --accent: #89dceb;
676
+ --accent-foreground: #1e1e2e;
677
+ --destructive: #f38ba8;
678
+ --destructive-foreground: #1e1e2e;
679
+ --border: #313244;
680
+ --input: #313244;
681
+ --ring: #cba6f7;
682
+ --chart-1: #cba6f7;
683
+ --chart-2: #89dceb;
684
+ --chart-3: #a6e3a1;
685
+ --chart-4: #fab387;
686
+ --chart-5: #f5e0dc;
687
+ --sidebar: #11111b;
688
+ --sidebar-foreground: #cdd6f4;
689
+ --sidebar-primary: #cba6f7;
690
+ --sidebar-primary-foreground: #1e1e2e;
691
+ --sidebar-accent: #89dceb;
692
+ --sidebar-accent-foreground: #1e1e2e;
693
+ --sidebar-border: #45475a;
694
+ --sidebar-ring: #cba6f7;
695
+ }
696
+ /* claude — tweakcn "claude" preset: warm ivory parchment surface, terracotta
697
+ primary, warm neutral text. All-system font stacks (kept verbatim). */
698
+ .theme-claude {
699
+ --background: oklch(0.9818 0.0054 95.0986);
700
+ --foreground: oklch(0.3438 0.0269 95.7226);
701
+ --card: oklch(0.9818 0.0054 95.0986);
702
+ --card-foreground: oklch(0.1908 0.002 106.5859);
703
+ --popover: oklch(1 0 0);
704
+ --popover-foreground: oklch(0.2671 0.0196 98.939);
705
+ --primary: oklch(0.6171 0.1375 39.0427);
706
+ --primary-foreground: oklch(1 0 0);
707
+ --secondary: oklch(0.9245 0.0138 92.9892);
708
+ --secondary-foreground: oklch(0.4334 0.0177 98.6048);
709
+ --muted: oklch(0.9341 0.0153 90.239);
710
+ --muted-foreground: oklch(0.6059 0.0075 97.4233);
711
+ --accent: oklch(0.9245 0.0138 92.9892);
712
+ --accent-foreground: oklch(0.2671 0.0196 98.939);
713
+ --destructive: oklch(0.1908 0.002 106.5859);
714
+ --border: oklch(0.8847 0.0069 97.3627);
715
+ --input: oklch(0.7621 0.0156 98.3528);
716
+ --ring: oklch(0.6171 0.1375 39.0427);
717
+ --chart-1: oklch(0.5583 0.1276 42.9956);
718
+ --chart-2: oklch(0.6898 0.1581 290.4107);
719
+ --chart-3: oklch(0.8816 0.0276 93.128);
720
+ --chart-4: oklch(0.8822 0.0403 298.1792);
721
+ --chart-5: oklch(0.5608 0.1348 42.0584);
722
+ --sidebar: oklch(0.9663 0.008 98.8792);
723
+ --sidebar-foreground: oklch(0.359 0.0051 106.6524);
724
+ --sidebar-primary: oklch(0.6171 0.1375 39.0427);
725
+ --sidebar-primary-foreground: oklch(0.9881 0 0);
726
+ --sidebar-accent: oklch(0.9245 0.0138 92.9892);
727
+ --sidebar-accent-foreground: oklch(0.325 0 0);
728
+ --sidebar-border: oklch(0.9401 0 0);
729
+ --sidebar-ring: oklch(0.7731 0 0);
730
+ --font-sans:
731
+ ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
732
+ 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
733
+ --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
734
+ --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
735
+ --radius: 0.625rem;
736
+ }
737
+
738
+ .theme-claude.dark {
739
+ --background: oklch(0.2679 0.0036 106.6427);
740
+ --foreground: oklch(0.8074 0.0142 93.0137);
741
+ --card: oklch(0.2679 0.0036 106.6427);
742
+ --card-foreground: oklch(0.9818 0.0054 95.0986);
743
+ --popover: oklch(0.3085 0.0035 106.6039);
744
+ --popover-foreground: oklch(0.9211 0.004 106.4781);
745
+ --primary: oklch(0.6724 0.1308 38.7559);
746
+ --primary-foreground: oklch(1 0 0);
747
+ --secondary: oklch(0.9818 0.0054 95.0986);
748
+ --secondary-foreground: oklch(0.3085 0.0035 106.6039);
749
+ --muted: oklch(0.2213 0.0038 106.707);
750
+ --muted-foreground: oklch(0.7713 0.0169 99.0657);
751
+ --accent: oklch(0.213 0.0078 95.4245);
752
+ --accent-foreground: oklch(0.9663 0.008 98.8792);
753
+ --destructive: oklch(0.6368 0.2078 25.3313);
754
+ --border: oklch(0.3618 0.0101 106.8928);
755
+ --input: oklch(0.4336 0.0113 100.2195);
756
+ --ring: oklch(0.6724 0.1308 38.7559);
757
+ --chart-1: oklch(0.5583 0.1276 42.9956);
758
+ --chart-2: oklch(0.6898 0.1581 290.4107);
759
+ --chart-3: oklch(0.213 0.0078 95.4245);
760
+ --chart-4: oklch(0.3074 0.0516 289.323);
761
+ --chart-5: oklch(0.5608 0.1348 42.0584);
762
+ --sidebar: oklch(0.2357 0.0024 67.7077);
763
+ --sidebar-foreground: oklch(0.8074 0.0142 93.0137);
764
+ --sidebar-primary: oklch(0.325 0 0);
765
+ --sidebar-primary-foreground: oklch(0.9881 0 0);
766
+ --sidebar-accent: oklch(0.168 0.002 106.6177);
767
+ --sidebar-accent-foreground: oklch(0.8074 0.0142 93.0137);
768
+ --sidebar-border: oklch(0.9401 0 0);
769
+ --sidebar-ring: oklch(0.7731 0 0);
770
+ --font-sans:
771
+ ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
772
+ 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
773
+ --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
774
+ --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
775
+ --radius: 0.625rem;
776
+ }
777
+ /* claymorphism — tweakcn "Claymorphism" preset. Auto-generated from tweakcn defaultPresets;
778
+ tokens kept verbatim (consumed via var()). */
779
+ .theme-claymorphism {
780
+ --background: #e7e5e4;
781
+ --foreground: #1e293b;
782
+ --card: #f5f5f4;
783
+ --card-foreground: #1e293b;
784
+ --popover: #f5f5f4;
785
+ --popover-foreground: #1e293b;
786
+ --primary: #6366f1;
787
+ --primary-foreground: #ffffff;
788
+ --secondary: #d6d3d1;
789
+ --secondary-foreground: #4b5563;
790
+ --muted: #e7e5e4;
791
+ --muted-foreground: #6b7280;
792
+ --accent: #f3e5f5;
793
+ --accent-foreground: #374151;
794
+ --destructive: #ef4444;
795
+ --destructive-foreground: #ffffff;
796
+ --border: #d6d3d1;
797
+ --input: #d6d3d1;
798
+ --ring: #6366f1;
799
+ --chart-1: #6366f1;
800
+ --chart-2: #4f46e5;
801
+ --chart-3: #4338ca;
802
+ --chart-4: #3730a3;
803
+ --chart-5: #312e81;
804
+ --radius: 1.25rem;
805
+ --sidebar: #d6d3d1;
806
+ --sidebar-foreground: #1e293b;
807
+ --sidebar-primary: #6366f1;
808
+ --sidebar-primary-foreground: #ffffff;
809
+ --sidebar-accent: #f3e5f5;
810
+ --sidebar-accent-foreground: #374151;
811
+ --sidebar-border: #d6d3d1;
812
+ --sidebar-ring: #6366f1;
813
+ --font-sans: Plus Jakarta Sans, sans-serif;
814
+ --font-serif: Lora, serif;
815
+ --font-mono: Roboto Mono, monospace;
816
+ --shadow-color: hsl(240 4% 60%);
817
+ --shadow-opacity: 0.18;
818
+ --shadow-blur: 10px;
819
+ --shadow-spread: 4px;
820
+ --shadow-offset-x: 2px;
821
+ --shadow-offset-y: 2px;
822
+ }
823
+
824
+ .theme-claymorphism.dark {
825
+ --background: #1e1b18;
826
+ --foreground: #e2e8f0;
827
+ --card: #2c2825;
828
+ --card-foreground: #e2e8f0;
829
+ --popover: #2c2825;
830
+ --popover-foreground: #e2e8f0;
831
+ --primary: #818cf8;
832
+ --primary-foreground: #1e1b18;
833
+ --secondary: #3a3633;
834
+ --secondary-foreground: #d1d5db;
835
+ --muted: #1f1c19;
836
+ --muted-foreground: #9ca3af;
837
+ --accent: #484441;
838
+ --accent-foreground: #d1d5db;
839
+ --destructive: #ef4444;
840
+ --destructive-foreground: #1e1b18;
841
+ --border: #3a3633;
842
+ --input: #3a3633;
843
+ --ring: #818cf8;
844
+ --chart-1: #818cf8;
845
+ --chart-2: #6366f1;
846
+ --chart-3: #4f46e5;
847
+ --chart-4: #4338ca;
848
+ --chart-5: #3730a3;
849
+ --radius: 1.25rem;
850
+ --sidebar: #3a3633;
851
+ --sidebar-foreground: #e2e8f0;
852
+ --sidebar-primary: #818cf8;
853
+ --sidebar-primary-foreground: #1e1b18;
854
+ --sidebar-accent: #484441;
855
+ --sidebar-accent-foreground: #d1d5db;
856
+ --sidebar-border: #3a3633;
857
+ --sidebar-ring: #818cf8;
858
+ --shadow-color: hsl(0 0% 0%);
859
+ }
860
+ /* clean-slate — tweakcn "Clean Slate" preset. Auto-generated from tweakcn defaultPresets;
861
+ tokens kept verbatim (consumed via var()). */
862
+ .theme-clean-slate {
863
+ --background: #f8fafc;
864
+ --foreground: #1e293b;
865
+ --card: #ffffff;
866
+ --card-foreground: #1e293b;
867
+ --popover: #ffffff;
868
+ --popover-foreground: #1e293b;
869
+ --primary: #6366f1;
870
+ --primary-foreground: #ffffff;
871
+ --secondary: #e5e7eb;
872
+ --secondary-foreground: #374151;
873
+ --muted: #f3f4f6;
874
+ --muted-foreground: #6b7280;
875
+ --accent: #e0e7ff;
876
+ --accent-foreground: #374151;
877
+ --destructive: #ef4444;
878
+ --destructive-foreground: #ffffff;
879
+ --border: #d1d5db;
880
+ --input: #d1d5db;
881
+ --ring: #6366f1;
882
+ --chart-1: #6366f1;
883
+ --chart-2: #4f46e5;
884
+ --chart-3: #4338ca;
885
+ --chart-4: #3730a3;
886
+ --chart-5: #312e81;
887
+ --radius: 0.5rem;
888
+ --sidebar: #f3f4f6;
889
+ --sidebar-foreground: #1e293b;
890
+ --sidebar-primary: #6366f1;
891
+ --sidebar-primary-foreground: #ffffff;
892
+ --sidebar-accent: #e0e7ff;
893
+ --sidebar-accent-foreground: #374151;
894
+ --sidebar-border: #d1d5db;
895
+ --sidebar-ring: #6366f1;
896
+ --font-sans: Inter, sans-serif;
897
+ --font-serif: Merriweather, serif;
898
+ --font-mono: JetBrains Mono, monospace;
899
+ --shadow-color: hsl(0 0% 0%);
900
+ --shadow-opacity: 0.1;
901
+ --shadow-blur: 8px;
902
+ --shadow-spread: -1px;
903
+ --shadow-offset-x: 0px;
904
+ --shadow-offset-y: 4px;
905
+ }
906
+
907
+ .theme-clean-slate.dark {
908
+ --background: #0f172a;
909
+ --foreground: #e2e8f0;
910
+ --card: #1e293b;
911
+ --card-foreground: #e2e8f0;
912
+ --popover: #1e293b;
913
+ --popover-foreground: #e2e8f0;
914
+ --primary: #818cf8;
915
+ --primary-foreground: #0f172a;
916
+ --secondary: #2d3748;
917
+ --secondary-foreground: #d1d5db;
918
+ --muted: #152032;
919
+ --muted-foreground: #9ca3af;
920
+ --accent: #374151;
921
+ --accent-foreground: #d1d5db;
922
+ --destructive: #ef4444;
923
+ --destructive-foreground: #0f172a;
924
+ --border: #4b5563;
925
+ --input: #4b5563;
926
+ --ring: #818cf8;
927
+ --chart-1: #818cf8;
928
+ --chart-2: #6366f1;
929
+ --chart-3: #4f46e5;
930
+ --chart-4: #4338ca;
931
+ --chart-5: #3730a3;
932
+ --radius: 0.5rem;
933
+ --sidebar: #1e293b;
934
+ --sidebar-foreground: #e2e8f0;
935
+ --sidebar-primary: #818cf8;
936
+ --sidebar-primary-foreground: #0f172a;
937
+ --sidebar-accent: #374151;
938
+ --sidebar-accent-foreground: #d1d5db;
939
+ --sidebar-border: #4b5563;
940
+ --sidebar-ring: #818cf8;
941
+ }
942
+ /* cosmic-night — tweakcn "Cosmic Night" preset. Auto-generated from tweakcn defaultPresets;
943
+ tokens kept verbatim (consumed via var()). */
944
+ .theme-cosmic-night {
945
+ --background: #f5f5ff;
946
+ --foreground: #2a2a4a;
947
+ --card: #ffffff;
948
+ --card-foreground: #2a2a4a;
949
+ --popover: #ffffff;
950
+ --popover-foreground: #2a2a4a;
951
+ --primary: #6e56cf;
952
+ --primary-foreground: #ffffff;
953
+ --secondary: #e4dfff;
954
+ --secondary-foreground: #4a4080;
955
+ --muted: #f0f0fa;
956
+ --muted-foreground: #6c6c8a;
957
+ --accent: #d8e6ff;
958
+ --accent-foreground: #2a2a4a;
959
+ --destructive: #ff5470;
960
+ --destructive-foreground: #ffffff;
961
+ --border: #e0e0f0;
962
+ --input: #e0e0f0;
963
+ --ring: #6e56cf;
964
+ --chart-1: #6e56cf;
965
+ --chart-2: #9e8cfc;
966
+ --chart-3: #5d5fef;
967
+ --chart-4: #7c75fa;
968
+ --chart-5: #4740b3;
969
+ --radius: 0.5rem;
970
+ --sidebar: #f0f0fa;
971
+ --sidebar-foreground: #2a2a4a;
972
+ --sidebar-primary: #6e56cf;
973
+ --sidebar-primary-foreground: #ffffff;
974
+ --sidebar-accent: #d8e6ff;
975
+ --sidebar-accent-foreground: #2a2a4a;
976
+ --sidebar-border: #e0e0f0;
977
+ --sidebar-ring: #6e56cf;
978
+ --font-sans: Inter, sans-serif;
979
+ --font-serif: Georgia, serif;
980
+ --font-mono: JetBrains Mono, monospace;
981
+ --shadow-color: hsl(240 30% 25%);
982
+ --shadow-opacity: 0.12;
983
+ --shadow-blur: 10px;
984
+ --shadow-spread: 0px;
985
+ --shadow-offset-x: 0px;
986
+ --shadow-offset-y: 4px;
987
+ }
988
+
989
+ .theme-cosmic-night.dark {
990
+ --background: #0f0f1a;
991
+ --foreground: #e2e2f5;
992
+ --card: #1a1a2e;
993
+ --card-foreground: #e2e2f5;
994
+ --popover: #1a1a2e;
995
+ --popover-foreground: #e2e2f5;
996
+ --primary: #a48fff;
997
+ --primary-foreground: #0f0f1a;
998
+ --secondary: #2d2b55;
999
+ --secondary-foreground: #c4c2ff;
1000
+ --muted: #222244;
1001
+ --muted-foreground: #a0a0c0;
1002
+ --accent: #303060;
1003
+ --accent-foreground: #e2e2f5;
1004
+ --destructive: #ff5470;
1005
+ --destructive-foreground: #ffffff;
1006
+ --border: #303052;
1007
+ --input: #303052;
1008
+ --ring: #a48fff;
1009
+ --chart-1: #a48fff;
1010
+ --chart-2: #7986cb;
1011
+ --chart-3: #64b5f6;
1012
+ --chart-4: #4db6ac;
1013
+ --chart-5: #ff79c6;
1014
+ --radius: 0.5rem;
1015
+ --sidebar: #1a1a2e;
1016
+ --sidebar-foreground: #e2e2f5;
1017
+ --sidebar-primary: #a48fff;
1018
+ --sidebar-primary-foreground: #0f0f1a;
1019
+ --sidebar-accent: #303060;
1020
+ --sidebar-accent-foreground: #e2e2f5;
1021
+ --sidebar-border: #303052;
1022
+ --sidebar-ring: #a48fff;
1023
+ }
1024
+ /* cyberpunk — tweakcn "Cyberpunk" preset. Auto-generated from tweakcn defaultPresets;
1025
+ tokens kept verbatim (consumed via var()). */
1026
+ .theme-cyberpunk {
1027
+ --background: #f8f9fa;
1028
+ --foreground: #0c0c1d;
1029
+ --card: #ffffff;
1030
+ --card-foreground: #0c0c1d;
1031
+ --popover: #ffffff;
1032
+ --popover-foreground: #0c0c1d;
1033
+ --primary: #ff00c8;
1034
+ --primary-foreground: #ffffff;
1035
+ --secondary: #f0f0ff;
1036
+ --secondary-foreground: #0c0c1d;
1037
+ --muted: #f0f0ff;
1038
+ --muted-foreground: #0c0c1d;
1039
+ --accent: #00ffcc;
1040
+ --accent-foreground: #0c0c1d;
1041
+ --destructive: #ff3d00;
1042
+ --destructive-foreground: #ffffff;
1043
+ --border: #dfe6e9;
1044
+ --input: #dfe6e9;
1045
+ --ring: #ff00c8;
1046
+ --chart-1: #ff00c8;
1047
+ --chart-2: #9000ff;
1048
+ --chart-3: #00e5ff;
1049
+ --chart-4: #00ffcc;
1050
+ --chart-5: #ffe600;
1051
+ --radius: 0.5rem;
1052
+ --sidebar: #f0f0ff;
1053
+ --sidebar-foreground: #0c0c1d;
1054
+ --sidebar-primary: #ff00c8;
1055
+ --sidebar-primary-foreground: #ffffff;
1056
+ --sidebar-accent: #00ffcc;
1057
+ --sidebar-accent-foreground: #0c0c1d;
1058
+ --sidebar-border: #dfe6e9;
1059
+ --sidebar-ring: #ff00c8;
1060
+ --font-sans: Outfit, sans-serif;
1061
+ --font-mono: Fira Code, monospace;
1062
+ --shadow-color: hsl(0 0% 0%);
1063
+ --shadow-opacity: 0.1;
1064
+ --shadow-blur: 8px;
1065
+ --shadow-spread: -2px;
1066
+ --shadow-offset-x: 0px;
1067
+ --shadow-offset-y: 4px;
1068
+ }
1069
+
1070
+ .theme-cyberpunk.dark {
1071
+ --background: #0c0c1d;
1072
+ --foreground: #eceff4;
1073
+ --card: #1e1e3f;
1074
+ --card-foreground: #eceff4;
1075
+ --popover: #1e1e3f;
1076
+ --popover-foreground: #eceff4;
1077
+ --primary: #ff00c8;
1078
+ --primary-foreground: #ffffff;
1079
+ --secondary: #1e1e3f;
1080
+ --secondary-foreground: #eceff4;
1081
+ --muted: #151530;
1082
+ --muted-foreground: #8085a6;
1083
+ --accent: #00ffcc;
1084
+ --accent-foreground: #0c0c1d;
1085
+ --destructive: #ff3d00;
1086
+ --destructive-foreground: #ffffff;
1087
+ --border: #2e2e5e;
1088
+ --input: #2e2e5e;
1089
+ --ring: #ff00c8;
1090
+ --chart-1: #ff00c8;
1091
+ --chart-2: #9000ff;
1092
+ --chart-3: #00e5ff;
1093
+ --chart-4: #00ffcc;
1094
+ --chart-5: #ffe600;
1095
+ --radius: 0.5rem;
1096
+ --sidebar: #0c0c1d;
1097
+ --sidebar-foreground: #eceff4;
1098
+ --sidebar-primary: #ff00c8;
1099
+ --sidebar-primary-foreground: #ffffff;
1100
+ --sidebar-accent: #00ffcc;
1101
+ --sidebar-accent-foreground: #0c0c1d;
1102
+ --sidebar-border: #2e2e5e;
1103
+ --sidebar-ring: #ff00c8;
1104
+ }
1105
+ /* darkmatter — tweakcn "Darkmatter" preset. Auto-generated from tweakcn defaultPresets;
1106
+ tokens kept verbatim (consumed via var()). */
1107
+ .theme-darkmatter {
1108
+ --background: #ffffff;
1109
+ --foreground: #111827;
1110
+ --card: #ffffff;
1111
+ --card-foreground: #111827;
1112
+ --popover: #ffffff;
1113
+ --popover-foreground: #111827;
1114
+ --primary: #d87943;
1115
+ --primary-foreground: #ffffff;
1116
+ --secondary: #527575;
1117
+ --secondary-foreground: #ffffff;
1118
+ --muted: #f3f4f6;
1119
+ --muted-foreground: #6b7280;
1120
+ --accent: #eeeeee;
1121
+ --accent-foreground: #111827;
1122
+ --destructive: #ef4444;
1123
+ --destructive-foreground: #fafafa;
1124
+ --border: #e5e7eb;
1125
+ --input: #e5e7eb;
1126
+ --ring: #d87943;
1127
+ --chart-1: #5f8787;
1128
+ --chart-2: #e78a53;
1129
+ --chart-3: #fbcb97;
1130
+ --chart-4: #888888;
1131
+ --chart-5: #999999;
1132
+ --sidebar: #f3f4f6;
1133
+ --sidebar-foreground: #111827;
1134
+ --sidebar-primary: #d87943;
1135
+ --sidebar-primary-foreground: #ffffff;
1136
+ --sidebar-accent: #ffffff;
1137
+ --sidebar-accent-foreground: #111827;
1138
+ --sidebar-border: #e5e7eb;
1139
+ --sidebar-ring: #d87943;
1140
+ --font-sans: Geist Mono, ui-monospace, monospace;
1141
+ --font-serif: serif;
1142
+ --font-mono: JetBrains Mono, monospace;
1143
+ --radius: 0.75rem;
1144
+ --shadow-color: #000000;
1145
+ --shadow-opacity: 0.05;
1146
+ --shadow-blur: 4px;
1147
+ --shadow-spread: 0px;
1148
+ --shadow-offset-x: 0px;
1149
+ --shadow-offset-y: 1px;
1150
+ --letter-spacing: 0rem;
1151
+ --spacing: 0.25rem;
1152
+ }
1153
+
1154
+ .theme-darkmatter.dark {
1155
+ --background: #121113;
1156
+ --foreground: #c1c1c1;
1157
+ --card: #121212;
1158
+ --card-foreground: #c1c1c1;
1159
+ --popover: #121113;
1160
+ --popover-foreground: #c1c1c1;
1161
+ --primary: #e78a53;
1162
+ --primary-foreground: #121113;
1163
+ --secondary: #5f8787;
1164
+ --secondary-foreground: #121113;
1165
+ --muted: #222222;
1166
+ --muted-foreground: #888888;
1167
+ --accent: #333333;
1168
+ --accent-foreground: #c1c1c1;
1169
+ --destructive: #5f8787;
1170
+ --destructive-foreground: #121113;
1171
+ --border: #222222;
1172
+ --input: #222222;
1173
+ --ring: #e78a53;
1174
+ --chart-1: #5f8787;
1175
+ --chart-2: #e78a53;
1176
+ --chart-3: #fbcb97;
1177
+ --chart-4: #888888;
1178
+ --chart-5: #999999;
1179
+ --sidebar: #121212;
1180
+ --sidebar-foreground: #c1c1c1;
1181
+ --sidebar-primary: #e78a53;
1182
+ --sidebar-primary-foreground: #121113;
1183
+ --sidebar-accent: #333333;
1184
+ --sidebar-accent-foreground: #c1c1c1;
1185
+ --sidebar-border: #222222;
1186
+ --sidebar-ring: #e78a53;
1187
+ --shadow-color: #000000;
1188
+ }
1189
+ /* diffbook default theme — shadcn "Neutral" OKLCH palette.
1190
+ Seeds :root/.dark (base, no theme class) AND .theme-default for explicit selection.
1191
+ :where() gives this ZERO specificity so an explicit light theme (.theme-x, 0,1,0)
1192
+ overrides it — otherwise a light theme tied :root and lost on source order, so
1193
+ every light theme rendered with this neutral palette. */
1194
+ :where(:root, .theme-default) {
1195
+ --background: oklch(1 0 0);
1196
+ --foreground: oklch(0.145 0 0);
1197
+ --card: oklch(1 0 0);
1198
+ --card-foreground: oklch(0.145 0 0);
1199
+ --popover: oklch(1 0 0);
1200
+ --popover-foreground: oklch(0.145 0 0);
1201
+ --primary: oklch(0.205 0 0);
1202
+ --primary-foreground: oklch(0.985 0 0);
1203
+ --secondary: oklch(0.97 0 0);
1204
+ --secondary-foreground: oklch(0.205 0 0);
1205
+ --muted: oklch(0.97 0 0);
1206
+ --muted-foreground: oklch(0.556 0 0);
1207
+ --accent: oklch(0.97 0 0);
1208
+ --accent-foreground: oklch(0.205 0 0);
1209
+ --destructive: oklch(0.577 0.245 27.325);
1210
+ --destructive-foreground: oklch(0.985 0 0);
1211
+ --border: oklch(0.922 0 0);
1212
+ --input: oklch(0.922 0 0);
1213
+ --ring: oklch(0.708 0 0);
1214
+ --sidebar: oklch(0.985 0 0);
1215
+ --sidebar-foreground: oklch(0.145 0 0);
1216
+ --sidebar-accent: oklch(0.97 0 0);
1217
+ --sidebar-accent-foreground: oklch(0.205 0 0);
1218
+ --radius: 0.625rem;
1219
+ /* Font tokens — themes may override; --font-heading defaults to the sans stack. */
1220
+ --font-sans: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
1221
+ --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
1222
+ --font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;
1223
+ --font-heading: var(--font-sans);
1224
+ }
1225
+
1226
+ :where(.dark, .theme-default.dark) {
1227
+ --background: oklch(0.145 0 0);
1228
+ --foreground: oklch(0.985 0 0);
1229
+ --card: oklch(0.205 0 0);
1230
+ --card-foreground: oklch(0.985 0 0);
1231
+ --popover: oklch(0.205 0 0);
1232
+ --popover-foreground: oklch(0.985 0 0);
1233
+ --primary: oklch(0.922 0 0);
1234
+ --primary-foreground: oklch(0.205 0 0);
1235
+ --secondary: oklch(0.269 0 0);
1236
+ --secondary-foreground: oklch(0.985 0 0);
1237
+ --muted: oklch(0.269 0 0);
1238
+ --muted-foreground: oklch(0.708 0 0);
1239
+ --accent: oklch(0.269 0 0);
1240
+ --accent-foreground: oklch(0.985 0 0);
1241
+ --destructive: oklch(0.704 0.191 22.216);
1242
+ --destructive-foreground: oklch(0.985 0 0);
1243
+ --border: oklch(1 0 0 / 10%);
1244
+ --input: oklch(1 0 0 / 15%);
1245
+ --ring: oklch(0.556 0 0);
1246
+ --sidebar: oklch(0.205 0 0);
1247
+ --sidebar-foreground: oklch(0.985 0 0);
1248
+ --sidebar-accent: oklch(0.269 0 0);
1249
+ --sidebar-accent-foreground: oklch(0.985 0 0);
1250
+ }
1251
+ /* doom-64 — tweakcn "Doom 64" preset. Auto-generated from tweakcn defaultPresets;
1252
+ tokens kept verbatim (consumed via var()). */
1253
+ .theme-doom-64 {
1254
+ --background: #cccccc;
1255
+ --foreground: #1f1f1f;
1256
+ --card: #b0b0b0;
1257
+ --card-foreground: #1f1f1f;
1258
+ --popover: #b0b0b0;
1259
+ --popover-foreground: #1f1f1f;
1260
+ --primary: #b71c1c;
1261
+ --primary-foreground: #ffffff;
1262
+ --secondary: #556b2f;
1263
+ --secondary-foreground: #ffffff;
1264
+ --muted: #b8b8b8;
1265
+ --muted-foreground: #4a4a4a;
1266
+ --accent: #4682b4;
1267
+ --accent-foreground: #ffffff;
1268
+ --destructive: #ff6f00;
1269
+ --destructive-foreground: #000000;
1270
+ --border: #505050;
1271
+ --input: #505050;
1272
+ --ring: #b71c1c;
1273
+ --chart-1: #b71c1c;
1274
+ --chart-2: #556b2f;
1275
+ --chart-3: #4682b4;
1276
+ --chart-4: #ff6f00;
1277
+ --chart-5: #8d6e63;
1278
+ --sidebar: #b0b0b0;
1279
+ --sidebar-foreground: #1f1f1f;
1280
+ --sidebar-primary: #b71c1c;
1281
+ --sidebar-primary-foreground: #ffffff;
1282
+ --sidebar-accent: #4682b4;
1283
+ --sidebar-accent-foreground: #ffffff;
1284
+ --sidebar-border: #505050;
1285
+ --sidebar-ring: #b71c1c;
1286
+ --font-sans: 'Oxanium', sans-serif;
1287
+ --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
1288
+ --font-mono: 'Source Code Pro', monospace;
1289
+ --radius: 0px;
1290
+ --shadow-color: hsl(0 0% 0%);
1291
+ --shadow-opacity: 0.4;
1292
+ --shadow-blur: 4px;
1293
+ --shadow-spread: 0px;
1294
+ --shadow-offset-x: 0px;
1295
+ --shadow-offset-y: 2px;
1296
+ --letter-spacing: 0em;
1297
+ --spacing: 0.25rem;
1298
+ }
1299
+
1300
+ .theme-doom-64.dark {
1301
+ --background: #1a1a1a;
1302
+ --foreground: #e0e0e0;
1303
+ --card: #2a2a2a;
1304
+ --card-foreground: #e0e0e0;
1305
+ --popover: #2a2a2a;
1306
+ --popover-foreground: #e0e0e0;
1307
+ --primary: #e53935;
1308
+ --primary-foreground: #ffffff;
1309
+ --secondary: #689f38;
1310
+ --secondary-foreground: #000000;
1311
+ --muted: #252525;
1312
+ --muted-foreground: #a0a0a0;
1313
+ --accent: #64b5f6;
1314
+ --accent-foreground: #000000;
1315
+ --destructive: #ffa000;
1316
+ --destructive-foreground: #000000;
1317
+ --border: #4a4a4a;
1318
+ --input: #4a4a4a;
1319
+ --ring: #e53935;
1320
+ --chart-1: #e53935;
1321
+ --chart-2: #689f38;
1322
+ --chart-3: #64b5f6;
1323
+ --chart-4: #ffa000;
1324
+ --chart-5: #a1887f;
1325
+ --sidebar: #141414;
1326
+ --sidebar-foreground: #e0e0e0;
1327
+ --sidebar-primary: #e53935;
1328
+ --sidebar-primary-foreground: #ffffff;
1329
+ --sidebar-accent: #64b5f6;
1330
+ --sidebar-accent-foreground: #000000;
1331
+ --sidebar-border: #4a4a4a;
1332
+ --sidebar-ring: #e53935;
1333
+ --font-sans: 'Oxanium', sans-serif;
1334
+ --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
1335
+ --font-mono: 'Source Code Pro', monospace;
1336
+ --radius: 0px;
1337
+ --shadow-color: hsl(0 0% 0%);
1338
+ --shadow-opacity: 0.6;
1339
+ --shadow-blur: 5px;
1340
+ --shadow-spread: 0px;
1341
+ --shadow-offset-x: 0px;
1342
+ --shadow-offset-y: 2px;
1343
+ --letter-spacing: 0em;
1344
+ --spacing: 0.25rem;
1345
+ }
1346
+ /* elegant-luxury — tweakcn "Elegant Luxury" preset. Auto-generated from tweakcn defaultPresets;
1347
+ tokens kept verbatim (consumed via var()). */
1348
+ .theme-elegant-luxury {
1349
+ --background: #faf7f5;
1350
+ --foreground: #1a1a1a;
1351
+ --card: #faf7f5;
1352
+ --card-foreground: #1a1a1a;
1353
+ --popover: #faf7f5;
1354
+ --popover-foreground: #1a1a1a;
1355
+ --primary: #9b2c2c;
1356
+ --primary-foreground: #ffffff;
1357
+ --secondary: #fdf2d6;
1358
+ --secondary-foreground: #805500;
1359
+ --muted: #f0ebe8;
1360
+ --muted-foreground: #57534e;
1361
+ --accent: #fef3c7;
1362
+ --accent-foreground: #7f1d1d;
1363
+ --destructive: #991b1b;
1364
+ --destructive-foreground: #ffffff;
1365
+ --border: #f5e8d2;
1366
+ --input: #f5e8d2;
1367
+ --ring: #9b2c2c;
1368
+ --chart-1: #b91c1c;
1369
+ --chart-2: #9b2c2c;
1370
+ --chart-3: #7f1d1d;
1371
+ --chart-4: #b45309;
1372
+ --chart-5: #92400e;
1373
+ --radius: 0.375rem;
1374
+ --sidebar: #f0ebe8;
1375
+ --sidebar-foreground: #1a1a1a;
1376
+ --sidebar-primary: #9b2c2c;
1377
+ --sidebar-primary-foreground: #ffffff;
1378
+ --sidebar-accent: #fef3c7;
1379
+ --sidebar-accent-foreground: #7f1d1d;
1380
+ --sidebar-border: #f5e8d2;
1381
+ --sidebar-ring: #9b2c2c;
1382
+ --font-sans: Poppins, sans-serif;
1383
+ --font-serif: Libre Baskerville, serif;
1384
+ --font-mono: IBM Plex Mono, monospace;
1385
+ --shadow-color: hsl(0 63% 18%);
1386
+ --shadow-opacity: 0.12;
1387
+ --shadow-blur: 16px;
1388
+ --shadow-spread: -2px;
1389
+ --shadow-offset-x: 1px;
1390
+ --shadow-offset-y: 1px;
1391
+ }
1392
+
1393
+ .theme-elegant-luxury.dark {
1394
+ --background: #1c1917;
1395
+ --foreground: #f5f5f4;
1396
+ --card: #292524;
1397
+ --card-foreground: #f5f5f4;
1398
+ --popover: #292524;
1399
+ --popover-foreground: #f5f5f4;
1400
+ --primary: #b91c1c;
1401
+ --primary-foreground: #faf7f5;
1402
+ --secondary: #92400e;
1403
+ --secondary-foreground: #fef3c7;
1404
+ --muted: #1f1c1a;
1405
+ --muted-foreground: #d6d3d1;
1406
+ --accent: #b45309;
1407
+ --accent-foreground: #fef3c7;
1408
+ --destructive: #ef4444;
1409
+ --destructive-foreground: #ffffff;
1410
+ --border: #44403c;
1411
+ --input: #44403c;
1412
+ --ring: #b91c1c;
1413
+ --chart-1: #f87171;
1414
+ --chart-2: #ef4444;
1415
+ --chart-3: #dc2626;
1416
+ --chart-4: #fbbf24;
1417
+ --chart-5: #f59e0b;
1418
+ --radius: 0.375rem;
1419
+ --sidebar: #1c1917;
1420
+ --sidebar-foreground: #f5f5f4;
1421
+ --sidebar-primary: #b91c1c;
1422
+ --sidebar-primary-foreground: #faf7f5;
1423
+ --sidebar-accent: #b45309;
1424
+ --sidebar-accent-foreground: #fef3c7;
1425
+ --sidebar-border: #44403c;
1426
+ --sidebar-ring: #b91c1c;
1427
+ }
1428
+ /* graphite — tweakcn "graphite" preset: sophisticated monochrome grey with tight
1429
+ radius. Strong minimal option for long-form reading. Tokens converted from source
1430
+ hex to OKLCH; font stacks fall back to the loaded Inter / JetBrains Mono when
1431
+ Montserrat/Fira Code aren't installed. */
1432
+ .theme-graphite {
1433
+ --background: oklch(0.955 0 0);
1434
+ --foreground: oklch(0.321 0 0);
1435
+ --card: oklch(0.97 0 0);
1436
+ --card-foreground: oklch(0.321 0 0);
1437
+ --popover: oklch(0.97 0 0);
1438
+ --popover-foreground: oklch(0.321 0 0);
1439
+ --primary: oklch(0.489 0 0);
1440
+ --primary-foreground: oklch(1 0 0);
1441
+ --secondary: oklch(0.907 0 0);
1442
+ --secondary-foreground: oklch(0.321 0 0);
1443
+ --muted: oklch(0.885 0 0);
1444
+ --muted-foreground: oklch(0.51 0 0);
1445
+ --accent: oklch(0.808 0 0);
1446
+ --accent-foreground: oklch(0.321 0 0);
1447
+ --destructive: oklch(0.559 0.19 25.86);
1448
+ --destructive-foreground: oklch(1 0 0);
1449
+ --border: oklch(0.858 0 0);
1450
+ --input: oklch(0.907 0 0);
1451
+ --ring: oklch(0.489 0 0);
1452
+ --sidebar: oklch(0.937 0 0);
1453
+ --sidebar-foreground: oklch(0.321 0 0);
1454
+ --sidebar-accent: oklch(0.808 0 0);
1455
+ --sidebar-accent-foreground: oklch(0.321 0 0);
1456
+ --radius: 0.35rem;
1457
+ --font-sans: 'Montserrat', 'Inter', ui-sans-serif, system-ui, -apple-system, sans-serif;
1458
+ --font-serif: Georgia, Cambria, 'Times New Roman', serif;
1459
+ --font-mono: 'Fira Code', 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
1460
+ }
1461
+
1462
+ .theme-graphite.dark {
1463
+ --background: oklch(0.218 0 0);
1464
+ --foreground: oklch(0.885 0 0);
1465
+ --card: oklch(0.244 0 0);
1466
+ --card-foreground: oklch(0.885 0 0);
1467
+ --popover: oklch(0.244 0 0);
1468
+ --popover-foreground: oklch(0.885 0 0);
1469
+ --primary: oklch(0.706 0 0);
1470
+ --primary-foreground: oklch(0.218 0 0);
1471
+ --secondary: oklch(0.309 0 0);
1472
+ --secondary-foreground: oklch(0.885 0 0);
1473
+ --muted: oklch(0.285 0 0);
1474
+ --muted-foreground: oklch(0.6 0 0);
1475
+ --accent: oklch(0.371 0 0);
1476
+ --accent-foreground: oklch(0.885 0 0);
1477
+ --destructive: oklch(0.659 0.153 22.17);
1478
+ --destructive-foreground: oklch(1 0 0);
1479
+ --border: oklch(0.329 0 0);
1480
+ --input: oklch(0.309 0 0);
1481
+ --ring: oklch(0.706 0 0);
1482
+ --sidebar: oklch(0.239 0 0);
1483
+ --sidebar-foreground: oklch(0.885 0 0);
1484
+ --sidebar-accent: oklch(0.371 0 0);
1485
+ --sidebar-accent-foreground: oklch(0.885 0 0);
1486
+ }
1487
+ /* green — shadcn "green" base color: green-600 primary (light) / green-500 (dark)
1488
+ on a neutral slate scaffold. Exact Tailwind v4 green OKLCH values. */
1489
+ .theme-green {
1490
+ --background: oklch(1 0 0);
1491
+ --foreground: oklch(0.208 0.04 265.75); /* slate-900 ink */
1492
+ --card: oklch(1 0 0);
1493
+ --card-foreground: oklch(0.208 0.04 265.75);
1494
+ --popover: oklch(1 0 0);
1495
+ --popover-foreground: oklch(0.208 0.04 265.75);
1496
+ --primary: oklch(0.627 0.17 149.21); /* green-600 */
1497
+ --primary-foreground: oklch(0.982 0.018 155.83); /* green-50 */
1498
+ --secondary: oklch(0.968 0.007 247.9); /* slate-100 */
1499
+ --secondary-foreground: oklch(0.208 0.04 265.75);
1500
+ --muted: oklch(0.968 0.007 247.9);
1501
+ --muted-foreground: oklch(0.554 0.041 257.42);
1502
+ --accent: oklch(0.962 0.043 156.74); /* green-100 tinted accent */
1503
+ --accent-foreground: oklch(0.393 0.09 152.54); /* green-900 */
1504
+ --destructive: oklch(0.577 0.245 27.325);
1505
+ --destructive-foreground: oklch(0.984 0.003 247.86);
1506
+ --border: oklch(0.929 0.013 255.51); /* slate-200 */
1507
+ --input: oklch(0.929 0.013 255.51);
1508
+ --ring: oklch(0.627 0.17 149.21); /* green-600 */
1509
+ --sidebar: oklch(0.984 0.003 247.86);
1510
+ --sidebar-foreground: oklch(0.208 0.04 265.75);
1511
+ --sidebar-accent: oklch(0.962 0.043 156.74);
1512
+ --sidebar-accent-foreground: oklch(0.393 0.09 152.54);
1513
+ --radius: 0.625rem;
1514
+ --font-sans: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
1515
+ --font-serif: ui-serif, Georgia, Cambria, serif;
1516
+ --font-mono: ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;
1517
+ }
1518
+
1519
+ .theme-green.dark {
1520
+ --background: oklch(0.208 0.04 265.75); /* slate-900 */
1521
+ --foreground: oklch(0.984 0.003 247.86);
1522
+ --card: oklch(0.208 0.04 265.75);
1523
+ --card-foreground: oklch(0.984 0.003 247.86);
1524
+ --popover: oklch(0.208 0.04 265.75);
1525
+ --popover-foreground: oklch(0.984 0.003 247.86);
1526
+ --primary: oklch(0.723 0.192 149.58); /* green-500 (brighter for dark) */
1527
+ --primary-foreground: oklch(0.266 0.063 152.93); /* green-950 */
1528
+ --secondary: oklch(0.279 0.037 260.03); /* slate-800 */
1529
+ --secondary-foreground: oklch(0.984 0.003 247.86);
1530
+ --muted: oklch(0.279 0.037 260.03);
1531
+ --muted-foreground: oklch(0.711 0.035 256.79);
1532
+ --accent: oklch(0.266 0.063 152.93); /* green-950 tinted accent */
1533
+ --accent-foreground: oklch(0.962 0.043 156.74);
1534
+ --destructive: oklch(0.704 0.191 22.216);
1535
+ --destructive-foreground: oklch(0.984 0.003 247.86);
1536
+ --border: oklch(1 0 0 / 10%);
1537
+ --input: oklch(1 0 0 / 15%);
1538
+ --ring: oklch(0.723 0.192 149.58);
1539
+ --sidebar: oklch(0.279 0.037 260.03);
1540
+ --sidebar-foreground: oklch(0.984 0.003 247.86);
1541
+ --sidebar-accent: oklch(0.266 0.063 152.93);
1542
+ --sidebar-accent-foreground: oklch(0.962 0.043 156.74);
1543
+ }
1544
+ /* kodama-grove — tweakcn "Kodama Grove" preset. Auto-generated from tweakcn defaultPresets;
1545
+ tokens kept verbatim (consumed via var()). */
1546
+ .theme-kodama-grove {
1547
+ --background: #e4d7b0;
1548
+ --foreground: #5c4b3e;
1549
+ --card: #e7dbbf;
1550
+ --card-foreground: #5c4b3e;
1551
+ --popover: #f3ead2;
1552
+ --popover-foreground: #5c4b3e;
1553
+ --primary: #8d9d4f;
1554
+ --primary-foreground: #fdfbf6;
1555
+ --secondary: #decea0;
1556
+ --secondary-foreground: #5c4b3e;
1557
+ --muted: #decea0;
1558
+ --muted-foreground: #85766a;
1559
+ --accent: #dbc894;
1560
+ --accent-foreground: #5c4b3e;
1561
+ --destructive: #d98b7e;
1562
+ --destructive-foreground: #faf8f2;
1563
+ --border: #b19681;
1564
+ --input: #dbc894;
1565
+ --ring: #9db18c;
1566
+ --chart-1: #9db18c;
1567
+ --chart-2: #8a9f7b;
1568
+ --chart-3: #bac9b4;
1569
+ --chart-4: #71856a;
1570
+ --chart-5: #5e6e58;
1571
+ --sidebar: #e2d1a2;
1572
+ --sidebar-foreground: #5c4b3e;
1573
+ --sidebar-primary: #9db18c;
1574
+ --sidebar-primary-foreground: #fdfbf6;
1575
+ --sidebar-accent: #eae5d9;
1576
+ --sidebar-accent-foreground: #5c4b3e;
1577
+ --sidebar-border: #e5e0d4;
1578
+ --sidebar-ring: #9db18c;
1579
+ --font-sans: Merriweather, serif;
1580
+ --font-serif: Source Serif 4, serif;
1581
+ --font-mono: JetBrains Mono, monospace;
1582
+ --radius: 0.425rem;
1583
+ --shadow-color: hsl(88 22% 35% / 0.15);
1584
+ --shadow-opacity: 0.15;
1585
+ --shadow-blur: 2px;
1586
+ --shadow-spread: 0px;
1587
+ --shadow-offset-x: 3px;
1588
+ --shadow-offset-y: 3px;
1589
+ }
1590
+
1591
+ .theme-kodama-grove.dark {
1592
+ --background: #3a3529;
1593
+ --foreground: #ede4d4;
1594
+ --card: #413c33;
1595
+ --card-foreground: #ede4d4;
1596
+ --popover: #413c33;
1597
+ --popover-foreground: #ede4d4;
1598
+ --primary: #8a9f7b;
1599
+ --primary-foreground: #2a2521;
1600
+ --secondary: #5a5345;
1601
+ --secondary-foreground: #ede4d4;
1602
+ --muted: #4a4439;
1603
+ --muted-foreground: #a8a096;
1604
+ --accent: #a18f5c;
1605
+ --accent-foreground: #2a2521;
1606
+ --destructive: #b5766a;
1607
+ --destructive-foreground: #f0e9db;
1608
+ --border: #5a5345;
1609
+ --input: #5a5345;
1610
+ --ring: #8a9f7b;
1611
+ --chart-1: #8a9f7b;
1612
+ --chart-2: #9db18c;
1613
+ --chart-3: #71856a;
1614
+ --chart-4: #a18f5c;
1615
+ --chart-5: #5e6e58;
1616
+ --sidebar: #3a3529;
1617
+ --sidebar-foreground: #ede4d4;
1618
+ --sidebar-primary: #8a9f7b;
1619
+ --sidebar-primary-foreground: #2a2521;
1620
+ --sidebar-accent: #a18f5c;
1621
+ --sidebar-accent-foreground: #2a2521;
1622
+ --sidebar-border: #5a5345;
1623
+ --sidebar-ring: #8a9f7b;
1624
+ }
1625
+ /* Lambda (lambda.ai) — dark-first "Superintelligence Cloud" terminal aesthetic:
1626
+ near-black warm-neutral canvas (#0b0b0b), bone text (#e7e6d9), warm olive-tinted
1627
+ greys, and an electric ULTRAVIOLET brand accent (#6236f4). Type is Suisse Intl
1628
+ (sans) + Suisse Intl Mono (proprietary) — substituted with Inter + JetBrains Mono.
1629
+ Verified from the live site's design-token CSS. Serif headings: NO. */
1630
+ .theme-lambda {
1631
+ /* light counterpart (docs light mode): white canvas, ultraviolet accent */
1632
+ --background: oklch(1 0 0);
1633
+ --foreground: oklch(0.15 0.002 105); /* #0b0b0b warm near-black */
1634
+ --card: oklch(1 0 0);
1635
+ --card-foreground: oklch(0.15 0.002 105);
1636
+ --popover: oklch(1 0 0);
1637
+ --popover-foreground: oklch(0.15 0.002 105);
1638
+ --primary: oklch(0.48 0.26 285); /* ultraviolet #6236f4 */
1639
+ --primary-foreground: oklch(0.99 0.005 105);
1640
+ --secondary: oklch(0.95 0.006 105); /* warm light grey */
1641
+ --secondary-foreground: oklch(0.24 0.004 105);
1642
+ --muted: oklch(0.95 0.006 105);
1643
+ --muted-foreground: oklch(0.52 0.008 105); /* #797872 */
1644
+ --accent: oklch(0.94 0.04 288); /* faint uv tint */
1645
+ --accent-foreground: oklch(0.35 0.12 285);
1646
+ --destructive: oklch(0.577 0.245 27.325);
1647
+ --destructive-foreground: oklch(0.99 0.005 105);
1648
+ --border: oklch(0.9 0.006 105);
1649
+ --input: oklch(0.9 0.006 105);
1650
+ --ring: oklch(0.48 0.26 285);
1651
+ --sidebar: oklch(0.985 0.004 105);
1652
+ --sidebar-foreground: oklch(0.15 0.002 105);
1653
+ --sidebar-accent: oklch(0.94 0.04 288);
1654
+ --sidebar-accent-foreground: oklch(0.35 0.12 285);
1655
+ --radius: 0.5rem;
1656
+ --font-sans: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif; /* Suisse Intl */
1657
+ --font-serif: 'Source Serif 4', Georgia, Cambria, serif;
1658
+ --font-mono: 'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace; /* Suisse Intl Mono */
1659
+ --font-heading: var(--font-sans);
1660
+ }
1661
+
1662
+ .theme-lambda.dark {
1663
+ /* dark-first — Lambda's native look: near-black #0b0b0b, bone text, ultraviolet */
1664
+ --background: oklch(0.15 0.002 105); /* #0b0b0b */
1665
+ --foreground: oklch(0.921 0.014 105); /* #e7e6d9 bone */
1666
+ --card: oklch(0.23 0.002 105);
1667
+ --card-foreground: oklch(0.921 0.014 105);
1668
+ --popover: oklch(0.23 0.002 105);
1669
+ --popover-foreground: oklch(0.921 0.014 105);
1670
+ --primary: oklch(0.57 0.24 285); /* electric ultraviolet, lifted for dark (#815ef6) */
1671
+ --primary-foreground: oklch(0.97 0.01 105);
1672
+ --secondary: oklch(0.28 0.002 105); /* surface #262625 */
1673
+ --secondary-foreground: oklch(0.921 0.014 105);
1674
+ --muted: oklch(0.28 0.002 105);
1675
+ --muted-foreground: oklch(0.73 0.009 105); /* #b0afa6 warm grey */
1676
+ --accent: oklch(0.32 0.08 285); /* subtle uv */
1677
+ --accent-foreground: oklch(0.921 0.014 105);
1678
+ --destructive: oklch(0.58 0.23 27);
1679
+ --destructive-foreground: oklch(0.97 0.01 105);
1680
+ --border: oklch(0.36 0.004 105); /* #42413e */
1681
+ --input: oklch(0.36 0.004 105);
1682
+ --ring: oklch(0.57 0.24 285);
1683
+ --sidebar: oklch(0.19 0.002 105);
1684
+ --sidebar-foreground: oklch(0.921 0.014 105);
1685
+ --sidebar-accent: oklch(0.32 0.08 285);
1686
+ --sidebar-accent-foreground: oklch(0.921 0.014 105);
1687
+ }
1688
+ /* mdBook's built-in light theme and its default navy dark theme. */
1689
+ .theme-mdbook {
1690
+ --background: #ffffff;
1691
+ --foreground: #000000;
1692
+ --card: #ffffff;
1693
+ --card-foreground: #000000;
1694
+ --popover: #fafafa;
1695
+ --popover-foreground: #000000;
1696
+ --primary: #20609f;
1697
+ --primary-foreground: #ffffff;
1698
+ --secondary: #f4f4f4;
1699
+ --secondary-foreground: #000000;
1700
+ --muted: #f4f4f4;
1701
+ --muted-foreground: #747474;
1702
+ --accent: #e6e6e6;
1703
+ --accent-foreground: #000000;
1704
+ --destructive: #b52731;
1705
+ --destructive-foreground: #ffffff;
1706
+ --border: #f2f2f2;
1707
+ --input: #aaaaaa;
1708
+ --ring: #aaaaaa;
1709
+ --sidebar: #fafafa;
1710
+ --sidebar-foreground: #000000;
1711
+ --sidebar-accent: #e6e6e6;
1712
+ --sidebar-accent-foreground: #1f1fff;
1713
+ --radius: 0.1875rem;
1714
+ --font-sans: 'Open Sans', sans-serif;
1715
+ --font-serif: 'Open Sans', sans-serif;
1716
+ --font-mono: 'Source Code Pro', Consolas, 'Ubuntu Mono', Menlo, 'DejaVu Sans Mono', monospace;
1717
+ --font-heading: 'Open Sans', sans-serif;
1718
+ }
1719
+
1720
+ .theme-mdbook.dark {
1721
+ --background: #161923;
1722
+ --foreground: #bcbdd0;
1723
+ --card: #161923;
1724
+ --card-foreground: #bcbdd0;
1725
+ --popover: #161923;
1726
+ --popover-foreground: #bcbdd0;
1727
+ --primary: #2b79a2;
1728
+ --primary-foreground: #161923;
1729
+ --secondary: #2d334f;
1730
+ --secondary-foreground: #bcbdd0;
1731
+ --muted: #2d334f;
1732
+ --muted-foreground: #737480;
1733
+ --accent: #282e40;
1734
+ --accent-foreground: #b7b9cc;
1735
+ --destructive: #f21424;
1736
+ --destructive-foreground: #ffffff;
1737
+ --border: rgb(188 189 208 / 14%);
1738
+ --input: #aaaaaa;
1739
+ --ring: #aaaaaa;
1740
+ --sidebar: #282d3f;
1741
+ --sidebar-foreground: #c8c9db;
1742
+ --sidebar-accent: #282e40;
1743
+ --sidebar-accent-foreground: #2b79a2;
1744
+ }
1745
+
1746
+ .theme-mdbook .db-docs-sidebar {
1747
+ border-color: transparent;
1748
+ }
1749
+
1750
+ /* mdbook's nav is shorter than the default 3.5rem — keep --nav-h in sync so
1751
+ sticky offsets (e.g. the TOC rail) track the real nav height. */
1752
+ .theme-mdbook {
1753
+ --nav-h: 3.125rem;
1754
+ }
1755
+
1756
+ .theme-mdbook .db-topnav > div {
1757
+ height: 3.125rem;
1758
+ }
1759
+
1760
+ .theme-mdbook .prose {
1761
+ font-size: 1rem;
1762
+ line-height: 1.45;
1763
+ }
1764
+
1765
+ .theme-mdbook .prose :where(a) {
1766
+ color: #20609f;
1767
+ text-decoration: none;
1768
+ }
1769
+
1770
+ .theme-mdbook .prose :where(a):hover {
1771
+ text-decoration: underline;
1772
+ }
1773
+
1774
+ .theme-mdbook.dark .prose :where(a) {
1775
+ color: #2b79a2;
1776
+ }
1777
+
1778
+ .theme-mdbook .prose :where(code):not(pre code) {
1779
+ padding: 0;
1780
+ border: 0;
1781
+ border-radius: 0;
1782
+ background: transparent;
1783
+ color: #301900;
1784
+ font-size: 0.875em;
1785
+ }
1786
+
1787
+ .theme-mdbook.dark .prose :where(code):not(pre code) {
1788
+ color: #c5c8c6;
1789
+ }
1790
+
1791
+ .theme-mdbook .code-wrap pre.shiki,
1792
+ .theme-mdbook .prose :where(pre) {
1793
+ border: 0;
1794
+ border-radius: 0;
1795
+ }
1796
+ /* midnight-bloom — tweakcn "Midnight Bloom" preset. Auto-generated from tweakcn defaultPresets;
1797
+ tokens kept verbatim (consumed via var()). */
1798
+ .theme-midnight-bloom {
1799
+ --background: #f9f9f9;
1800
+ --foreground: #333333;
1801
+ --card: #ffffff;
1802
+ --card-foreground: #333333;
1803
+ --popover: #ffffff;
1804
+ --popover-foreground: #333333;
1805
+ --primary: #6c5ce7;
1806
+ --primary-foreground: #ffffff;
1807
+ --secondary: #a1c9f2;
1808
+ --secondary-foreground: #333333;
1809
+ --muted: #c9c4b5;
1810
+ --muted-foreground: #6e6e6e;
1811
+ --accent: #8b9467;
1812
+ --accent-foreground: #ffffff;
1813
+ --destructive: #ef4444;
1814
+ --destructive-foreground: #ffffff;
1815
+ --border: #d4d4d4;
1816
+ --input: #d4d4d4;
1817
+ --ring: #6c5ce7;
1818
+ --chart-1: #6c5ce7;
1819
+ --chart-2: #8e44ad;
1820
+ --chart-3: #4b0082;
1821
+ --chart-4: #6495ed;
1822
+ --chart-5: #4682b4;
1823
+ --radius: 0.5rem;
1824
+ --sidebar: #f9f9f9;
1825
+ --sidebar-foreground: #333333;
1826
+ --sidebar-primary: #6c5ce7;
1827
+ --sidebar-primary-foreground: #ffffff;
1828
+ --sidebar-accent: #8b9467;
1829
+ --sidebar-accent-foreground: #ffffff;
1830
+ --sidebar-border: #d4d4d4;
1831
+ --sidebar-ring: #6c5ce7;
1832
+ --font-sans: Montserrat, sans-serif;
1833
+ --font-serif: Playfair Display, serif;
1834
+ --font-mono: Source Code Pro, monospace;
1835
+ --shadow-color: hsl(0 0% 0%);
1836
+ --shadow-opacity: 0.1;
1837
+ --shadow-blur: 10px;
1838
+ --shadow-spread: -2px;
1839
+ --shadow-offset-x: 0px;
1840
+ --shadow-offset-y: 5px;
1841
+ }
1842
+
1843
+ .theme-midnight-bloom.dark {
1844
+ --background: #1a1d23;
1845
+ --foreground: #e5e5e5;
1846
+ --card: #2f3436;
1847
+ --card-foreground: #e5e5e5;
1848
+ --popover: #2f3436;
1849
+ --popover-foreground: #e5e5e5;
1850
+ --primary: #6c5ce7;
1851
+ --primary-foreground: #ffffff;
1852
+ --secondary: #4b0082;
1853
+ --secondary-foreground: #e5e5e5;
1854
+ --muted: #444444;
1855
+ --muted-foreground: #a3a3a3;
1856
+ --accent: #6495ed;
1857
+ --accent-foreground: #e5e5e5;
1858
+ --destructive: #ef4444;
1859
+ --destructive-foreground: #ffffff;
1860
+ --border: #444444;
1861
+ --input: #444444;
1862
+ --ring: #6c5ce7;
1863
+ --chart-1: #6c5ce7;
1864
+ --chart-2: #8e44ad;
1865
+ --chart-3: #4b0082;
1866
+ --chart-4: #6495ed;
1867
+ --chart-5: #4682b4;
1868
+ --radius: 0.5rem;
1869
+ --sidebar: #1a1d23;
1870
+ --sidebar-foreground: #e5e5e5;
1871
+ --sidebar-primary: #6c5ce7;
1872
+ --sidebar-primary-foreground: #ffffff;
1873
+ --sidebar-accent: #6495ed;
1874
+ --sidebar-accent-foreground: #e5e5e5;
1875
+ --sidebar-border: #444444;
1876
+ --sidebar-ring: #6c5ce7;
1877
+ }
1878
+ /* mocha-mousse — tweakcn "Mocha Mousse" preset. Auto-generated from tweakcn defaultPresets;
1879
+ tokens kept verbatim (consumed via var()). */
1880
+ .theme-mocha-mousse {
1881
+ --background: #f1f0e5;
1882
+ --foreground: #56453f;
1883
+ --card: #f1f0e5;
1884
+ --card-foreground: #56453f;
1885
+ --popover: #ffffff;
1886
+ --popover-foreground: #56453f;
1887
+ --primary: #a37764;
1888
+ --primary-foreground: #ffffff;
1889
+ --secondary: #baab92;
1890
+ --secondary-foreground: #ffffff;
1891
+ --muted: #e4c7b8;
1892
+ --muted-foreground: #8a655a;
1893
+ --accent: #e4c7b8;
1894
+ --accent-foreground: #56453f;
1895
+ --destructive: #1f1a17;
1896
+ --destructive-foreground: #ffffff;
1897
+ --border: #baab92;
1898
+ --input: #baab92;
1899
+ --ring: #a37764;
1900
+ --chart-1: #a37764;
1901
+ --chart-2: #8a655a;
1902
+ --chart-3: #c39e88;
1903
+ --chart-4: #baab92;
1904
+ --chart-5: #a28777;
1905
+ --sidebar: #ebd6cb;
1906
+ --sidebar-foreground: #56453f;
1907
+ --sidebar-primary: #a37764;
1908
+ --sidebar-primary-foreground: #ffffff;
1909
+ --sidebar-accent: #c39e88;
1910
+ --sidebar-accent-foreground: #ffffff;
1911
+ --sidebar-border: #a28777;
1912
+ --sidebar-ring: #a37764;
1913
+ --font-sans: DM Sans, sans-serif;
1914
+ --font-serif: Georgia, serif;
1915
+ --font-mono: Menlo, monospace;
1916
+ --radius: 0.5rem;
1917
+ --shadow-color: hsl(20 18% 51% / 0.4);
1918
+ --shadow-opacity: 0.11;
1919
+ --shadow-blur: 0px;
1920
+ --shadow-spread: 0px;
1921
+ --shadow-offset-x: 2px;
1922
+ --shadow-offset-y: 2px;
1923
+ }
1924
+
1925
+ .theme-mocha-mousse.dark {
1926
+ --background: #2d2521;
1927
+ --foreground: #f1f0e5;
1928
+ --card: #3c332e;
1929
+ --card-foreground: #f1f0e5;
1930
+ --popover: #3c332e;
1931
+ --popover-foreground: #f1f0e5;
1932
+ --primary: #c39e88;
1933
+ --primary-foreground: #2d2521;
1934
+ --secondary: #8a655a;
1935
+ --secondary-foreground: #f1f0e5;
1936
+ --muted: #56453f;
1937
+ --muted-foreground: #c5aa9b;
1938
+ --accent: #baab92;
1939
+ --accent-foreground: #2d2521;
1940
+ --destructive: #e57373;
1941
+ --destructive-foreground: #2d2521;
1942
+ --border: #56453f;
1943
+ --input: #56453f;
1944
+ --ring: #c39e88;
1945
+ --chart-1: #c39e88;
1946
+ --chart-2: #baab92;
1947
+ --chart-3: #a37764;
1948
+ --chart-4: #8a655a;
1949
+ --chart-5: #a28777;
1950
+ --sidebar: #1f1a17;
1951
+ --sidebar-foreground: #f1f0e5;
1952
+ --sidebar-primary: #c39e88;
1953
+ --sidebar-primary-foreground: #1f1a17;
1954
+ --sidebar-accent: #baab92;
1955
+ --sidebar-accent-foreground: #1f1a17;
1956
+ --sidebar-border: #56453f;
1957
+ --sidebar-ring: #c39e88;
1958
+ --shadow-color: hsl(20 18% 30% / 0.5);
1959
+ }
1960
+ /* modern-minimal — tweakcn "Modern Minimal" preset. Auto-generated from tweakcn defaultPresets;
1961
+ tokens kept verbatim (consumed via var()). */
1962
+ .theme-modern-minimal {
1963
+ --background: #ffffff;
1964
+ --foreground: #333333;
1965
+ --card: #ffffff;
1966
+ --card-foreground: #333333;
1967
+ --popover: #ffffff;
1968
+ --popover-foreground: #333333;
1969
+ --primary: #3b82f6;
1970
+ --primary-foreground: #ffffff;
1971
+ --secondary: #f3f4f6;
1972
+ --secondary-foreground: #4b5563;
1973
+ --muted: #f9fafb;
1974
+ --muted-foreground: #6b7280;
1975
+ --accent: #e0f2fe;
1976
+ --accent-foreground: #1e3a8a;
1977
+ --destructive: #ef4444;
1978
+ --destructive-foreground: #ffffff;
1979
+ --border: #e5e7eb;
1980
+ --input: #e5e7eb;
1981
+ --ring: #3b82f6;
1982
+ --chart-1: #3b82f6;
1983
+ --chart-2: #2563eb;
1984
+ --chart-3: #1d4ed8;
1985
+ --chart-4: #1e40af;
1986
+ --chart-5: #1e3a8a;
1987
+ --radius: 0.375rem;
1988
+ --sidebar: #f9fafb;
1989
+ --sidebar-foreground: #333333;
1990
+ --sidebar-primary: #3b82f6;
1991
+ --sidebar-primary-foreground: #ffffff;
1992
+ --sidebar-accent: #e0f2fe;
1993
+ --sidebar-accent-foreground: #1e3a8a;
1994
+ --sidebar-border: #e5e7eb;
1995
+ --sidebar-ring: #3b82f6;
1996
+ --font-sans: Inter, sans-serif;
1997
+ --font-serif: Source Serif 4, serif;
1998
+ --font-mono: JetBrains Mono, monospace;
1999
+ }
2000
+
2001
+ .theme-modern-minimal.dark {
2002
+ --background: #171717;
2003
+ --foreground: #e5e5e5;
2004
+ --card: #262626;
2005
+ --card-foreground: #e5e5e5;
2006
+ --popover: #262626;
2007
+ --popover-foreground: #e5e5e5;
2008
+ --primary: #3b82f6;
2009
+ --primary-foreground: #ffffff;
2010
+ --secondary: #262626;
2011
+ --secondary-foreground: #e5e5e5;
2012
+ --muted: #1f1f1f;
2013
+ --muted-foreground: #a3a3a3;
2014
+ --accent: #1e3a8a;
2015
+ --accent-foreground: #bfdbfe;
2016
+ --destructive: #ef4444;
2017
+ --destructive-foreground: #ffffff;
2018
+ --border: #404040;
2019
+ --input: #404040;
2020
+ --ring: #3b82f6;
2021
+ --chart-1: #60a5fa;
2022
+ --chart-2: #3b82f6;
2023
+ --chart-3: #2563eb;
2024
+ --chart-4: #1d4ed8;
2025
+ --chart-5: #1e40af;
2026
+ --radius: 0.375rem;
2027
+ --sidebar: #171717;
2028
+ --sidebar-foreground: #e5e5e5;
2029
+ --sidebar-primary: #3b82f6;
2030
+ --sidebar-primary-foreground: #ffffff;
2031
+ --sidebar-accent: #1e3a8a;
2032
+ --sidebar-accent-foreground: #bfdbfe;
2033
+ --sidebar-border: #404040;
2034
+ --sidebar-ring: #3b82f6;
2035
+ }
2036
+ /* mono — tweakcn "Mono" preset. Auto-generated from tweakcn defaultPresets;
2037
+ tokens kept verbatim (consumed via var()). */
2038
+ .theme-mono {
2039
+ --background: #ffffff;
2040
+ --foreground: #0a0a0a;
2041
+ --card: #ffffff;
2042
+ --card-foreground: #0a0a0a;
2043
+ --popover: #ffffff;
2044
+ --popover-foreground: #0a0a0a;
2045
+ --primary: #737373;
2046
+ --primary-foreground: #fafafa;
2047
+ --secondary: #f5f5f5;
2048
+ --secondary-foreground: #171717;
2049
+ --muted: #f5f5f5;
2050
+ --muted-foreground: #717171;
2051
+ --accent: #f5f5f5;
2052
+ --accent-foreground: #171717;
2053
+ --destructive: #e7000b;
2054
+ --destructive-foreground: #f5f5f5;
2055
+ --border: #e5e5e5;
2056
+ --input: #e5e5e5;
2057
+ --ring: #a1a1a1;
2058
+ --chart-1: #737373;
2059
+ --chart-2: #737373;
2060
+ --chart-3: #737373;
2061
+ --chart-4: #737373;
2062
+ --chart-5: #737373;
2063
+ --sidebar: #fafafa;
2064
+ --sidebar-foreground: #0a0a0a;
2065
+ --sidebar-primary: #171717;
2066
+ --sidebar-primary-foreground: #fafafa;
2067
+ --sidebar-accent: #f5f5f5;
2068
+ --sidebar-accent-foreground: #171717;
2069
+ --sidebar-border: #e5e5e5;
2070
+ --sidebar-ring: #a1a1a1;
2071
+ --font-sans: Geist Mono, monospace;
2072
+ --font-serif: Geist Mono, monospace;
2073
+ --font-mono: Geist Mono, monospace;
2074
+ --radius: 0rem;
2075
+ --shadow-color: hsl(0 0% 0%);
2076
+ --shadow-opacity: 0;
2077
+ --shadow-blur: 0px;
2078
+ --shadow-spread: 0px;
2079
+ --shadow-offset-x: 0px;
2080
+ --shadow-offset-y: 1px;
2081
+ }
2082
+
2083
+ .theme-mono.dark {
2084
+ --background: #0a0a0a;
2085
+ --foreground: #fafafa;
2086
+ --card: #191919;
2087
+ --card-foreground: #fafafa;
2088
+ --popover: #262626;
2089
+ --popover-foreground: #fafafa;
2090
+ --primary: #737373;
2091
+ --primary-foreground: #fafafa;
2092
+ --secondary: #262626;
2093
+ --secondary-foreground: #fafafa;
2094
+ --muted: #262626;
2095
+ --muted-foreground: #a1a1a1;
2096
+ --accent: #404040;
2097
+ --accent-foreground: #fafafa;
2098
+ --destructive: #ff6467;
2099
+ --destructive-foreground: #262626;
2100
+ --border: #383838;
2101
+ --input: #525252;
2102
+ --ring: #737373;
2103
+ --chart-1: #737373;
2104
+ --chart-2: #737373;
2105
+ --chart-3: #737373;
2106
+ --chart-4: #737373;
2107
+ --chart-5: #737373;
2108
+ --sidebar: #171717;
2109
+ --sidebar-foreground: #fafafa;
2110
+ --sidebar-primary: #fafafa;
2111
+ --sidebar-primary-foreground: #171717;
2112
+ --sidebar-accent: #262626;
2113
+ --sidebar-accent-foreground: #fafafa;
2114
+ --sidebar-border: #ffffff;
2115
+ --sidebar-ring: #525252;
2116
+ }
2117
+ /* nature — tweakcn "Nature" preset. Auto-generated from tweakcn defaultPresets;
2118
+ tokens kept verbatim (consumed via var()). */
2119
+ .theme-nature {
2120
+ --background: #f8f5f0;
2121
+ --foreground: #3e2723;
2122
+ --card: #f8f5f0;
2123
+ --card-foreground: #3e2723;
2124
+ --popover: #f8f5f0;
2125
+ --popover-foreground: #3e2723;
2126
+ --primary: #2e7d32;
2127
+ --primary-foreground: #ffffff;
2128
+ --secondary: #e8f5e9;
2129
+ --secondary-foreground: #1b5e20;
2130
+ --muted: #f0e9e0;
2131
+ --muted-foreground: #6d4c41;
2132
+ --accent: #c8e6c9;
2133
+ --accent-foreground: #1b5e20;
2134
+ --destructive: #c62828;
2135
+ --destructive-foreground: #ffffff;
2136
+ --border: #e0d6c9;
2137
+ --input: #e0d6c9;
2138
+ --ring: #2e7d32;
2139
+ --chart-1: #4caf50;
2140
+ --chart-2: #388e3c;
2141
+ --chart-3: #2e7d32;
2142
+ --chart-4: #1b5e20;
2143
+ --chart-5: #0a1f0c;
2144
+ --radius: 0.5rem;
2145
+ --sidebar: #f0e9e0;
2146
+ --sidebar-foreground: #3e2723;
2147
+ --sidebar-primary: #2e7d32;
2148
+ --sidebar-primary-foreground: #ffffff;
2149
+ --sidebar-accent: #c8e6c9;
2150
+ --sidebar-accent-foreground: #1b5e20;
2151
+ --sidebar-border: #e0d6c9;
2152
+ --sidebar-ring: #2e7d32;
2153
+ --font-sans: Montserrat, sans-serif;
2154
+ --font-serif: Merriweather, serif;
2155
+ --font-mono: Source Code Pro, monospace;
2156
+ }
2157
+
2158
+ .theme-nature.dark {
2159
+ --background: #1c2a1f;
2160
+ --foreground: #f0ebe5;
2161
+ --card: #2d3a2e;
2162
+ --card-foreground: #f0ebe5;
2163
+ --popover: #2d3a2e;
2164
+ --popover-foreground: #f0ebe5;
2165
+ --primary: #4caf50;
2166
+ --primary-foreground: #0a1f0c;
2167
+ --secondary: #3e4a3d;
2168
+ --secondary-foreground: #d7e0d6;
2169
+ --muted: #252f26;
2170
+ --muted-foreground: #d7cfc4;
2171
+ --accent: #388e3c;
2172
+ --accent-foreground: #f0ebe5;
2173
+ --destructive: #c62828;
2174
+ --destructive-foreground: #f0ebe5;
2175
+ --border: #3e4a3d;
2176
+ --input: #3e4a3d;
2177
+ --ring: #4caf50;
2178
+ --chart-1: #81c784;
2179
+ --chart-2: #66bb6a;
2180
+ --chart-3: #4caf50;
2181
+ --chart-4: #43a047;
2182
+ --chart-5: #388e3c;
2183
+ --radius: 0.5rem;
2184
+ --sidebar: #1c2a1f;
2185
+ --sidebar-foreground: #f0ebe5;
2186
+ --sidebar-primary: #4caf50;
2187
+ --sidebar-primary-foreground: #0a1f0c;
2188
+ --sidebar-accent: #388e3c;
2189
+ --sidebar-accent-foreground: #f0ebe5;
2190
+ --sidebar-border: #3e4a3d;
2191
+ --sidebar-ring: #4caf50;
2192
+ }
2193
+ /* neo-brutalism — tweakcn "Neo Brutalism" preset. Auto-generated from tweakcn defaultPresets;
2194
+ tokens kept verbatim (consumed via var()). */
2195
+ .theme-neo-brutalism {
2196
+ --background: #ffffff;
2197
+ --foreground: #000000;
2198
+ --card: #ffffff;
2199
+ --card-foreground: #000000;
2200
+ --popover: #ffffff;
2201
+ --popover-foreground: #000000;
2202
+ --primary: #ff3333;
2203
+ --primary-foreground: #ffffff;
2204
+ --secondary: #ffff00;
2205
+ --secondary-foreground: #000000;
2206
+ --muted: #f0f0f0;
2207
+ --muted-foreground: #333333;
2208
+ --accent: #0066ff;
2209
+ --accent-foreground: #ffffff;
2210
+ --destructive: #000000;
2211
+ --destructive-foreground: #ffffff;
2212
+ --border: #000000;
2213
+ --input: #000000;
2214
+ --ring: #ff3333;
2215
+ --chart-1: #ff3333;
2216
+ --chart-2: #ffff00;
2217
+ --chart-3: #0066ff;
2218
+ --chart-4: #00cc00;
2219
+ --chart-5: #cc00cc;
2220
+ --radius: 0px;
2221
+ --sidebar: #f0f0f0;
2222
+ --sidebar-foreground: #000000;
2223
+ --sidebar-primary: #ff3333;
2224
+ --sidebar-primary-foreground: #ffffff;
2225
+ --sidebar-accent: #0066ff;
2226
+ --sidebar-accent-foreground: #ffffff;
2227
+ --sidebar-border: #000000;
2228
+ --sidebar-ring: #ff3333;
2229
+ --font-sans: DM Sans, sans-serif;
2230
+ --font-mono: Space Mono, monospace;
2231
+ --shadow-color: hsl(0 0% 0%);
2232
+ --shadow-opacity: 1;
2233
+ --shadow-blur: 0px;
2234
+ --shadow-spread: 0px;
2235
+ --shadow-offset-x: 4px;
2236
+ --shadow-offset-y: 4px;
2237
+ }
2238
+
2239
+ .theme-neo-brutalism.dark {
2240
+ --background: #000000;
2241
+ --foreground: #ffffff;
2242
+ --card: #333333;
2243
+ --card-foreground: #ffffff;
2244
+ --popover: #333333;
2245
+ --popover-foreground: #ffffff;
2246
+ --primary: #ff6666;
2247
+ --primary-foreground: #000000;
2248
+ --secondary: #ffff33;
2249
+ --secondary-foreground: #000000;
2250
+ --muted: #1a1a1a;
2251
+ --muted-foreground: #cccccc;
2252
+ --accent: #3399ff;
2253
+ --accent-foreground: #000000;
2254
+ --destructive: #ffffff;
2255
+ --destructive-foreground: #000000;
2256
+ --border: #ffffff;
2257
+ --input: #ffffff;
2258
+ --ring: #ff6666;
2259
+ --chart-1: #ff6666;
2260
+ --chart-2: #ffff33;
2261
+ --chart-3: #3399ff;
2262
+ --chart-4: #33cc33;
2263
+ --chart-5: #cc33cc;
2264
+ --radius: 0px;
2265
+ --sidebar: #000000;
2266
+ --sidebar-foreground: #ffffff;
2267
+ --sidebar-primary: #ff6666;
2268
+ --sidebar-primary-foreground: #000000;
2269
+ --sidebar-accent: #3399ff;
2270
+ --sidebar-accent-foreground: #000000;
2271
+ --sidebar-border: #ffffff;
2272
+ --sidebar-ring: #ff6666;
2273
+ }
2274
+ /* northern-lights — tweakcn "Northern Lights" preset. Auto-generated from tweakcn defaultPresets;
2275
+ tokens kept verbatim (consumed via var()). */
2276
+ .theme-northern-lights {
2277
+ --background: #f9f9fa;
2278
+ --foreground: #333333;
2279
+ --card: #ffffff;
2280
+ --card-foreground: #333333;
2281
+ --popover: #ffffff;
2282
+ --popover-foreground: #333333;
2283
+ --primary: #34a85a;
2284
+ --primary-foreground: #ffffff;
2285
+ --secondary: #6495ed;
2286
+ --secondary-foreground: #ffffff;
2287
+ --muted: #ddd9c4;
2288
+ --muted-foreground: #6e6e6e;
2289
+ --accent: #66d9ef;
2290
+ --accent-foreground: #333333;
2291
+ --destructive: #ef4444;
2292
+ --destructive-foreground: #ffffff;
2293
+ --border: #d4d4d4;
2294
+ --input: #d4d4d4;
2295
+ --ring: #34a85a;
2296
+ --chart-1: #34a85a;
2297
+ --chart-2: #6495ed;
2298
+ --chart-3: #66d9ef;
2299
+ --chart-4: #4682b4;
2300
+ --chart-5: #1a9641;
2301
+ --radius: 0.5rem;
2302
+ --sidebar: #f9f9fa;
2303
+ --sidebar-foreground: #333333;
2304
+ --sidebar-primary: #34a85a;
2305
+ --sidebar-primary-foreground: #ffffff;
2306
+ --sidebar-accent: #66d9ef;
2307
+ --sidebar-accent-foreground: #333333;
2308
+ --sidebar-border: #d4d4d4;
2309
+ --sidebar-ring: #34a85a;
2310
+ --font-sans: Plus Jakarta Sans, sans-serif;
2311
+ --font-serif: Source Serif 4, serif;
2312
+ --font-mono: JetBrains Mono, monospace;
2313
+ }
2314
+
2315
+ .theme-northern-lights.dark {
2316
+ --background: #1a1d23;
2317
+ --foreground: #e5e5e5;
2318
+ --card: #2f3436;
2319
+ --card-foreground: #e5e5e5;
2320
+ --popover: #2f3436;
2321
+ --popover-foreground: #e5e5e5;
2322
+ --primary: #34a85a;
2323
+ --primary-foreground: #ffffff;
2324
+ --secondary: #4682b4;
2325
+ --secondary-foreground: #e5e5e5;
2326
+ --muted: #444444;
2327
+ --muted-foreground: #a3a3a3;
2328
+ --accent: #6495ed;
2329
+ --accent-foreground: #e5e5e5;
2330
+ --destructive: #ef4444;
2331
+ --destructive-foreground: #ffffff;
2332
+ --border: #444444;
2333
+ --input: #444444;
2334
+ --ring: #34a85a;
2335
+ --chart-1: #34a85a;
2336
+ --chart-2: #4682b4;
2337
+ --chart-3: #6495ed;
2338
+ --chart-4: #66d9ef;
2339
+ --chart-5: #1a9641;
2340
+ --radius: 0.5rem;
2341
+ --sidebar: #1a1d23;
2342
+ --sidebar-foreground: #e5e5e5;
2343
+ --sidebar-primary: #34a85a;
2344
+ --sidebar-primary-foreground: #ffffff;
2345
+ --sidebar-accent: #6495ed;
2346
+ --sidebar-accent-foreground: #e5e5e5;
2347
+ --sidebar-border: #444444;
2348
+ --sidebar-ring: #34a85a;
2349
+ }
2350
+ /* notebook — tweakcn "Notebook" preset. Auto-generated from tweakcn defaultPresets;
2351
+ tokens kept verbatim (consumed via var()). */
2352
+ .theme-notebook {
2353
+ --background: #f9f9f9;
2354
+ --foreground: #3a3a3a;
2355
+ --card: #ffffff;
2356
+ --card-foreground: #3a3a3a;
2357
+ --popover: #ffffff;
2358
+ --popover-foreground: #3a3a3a;
2359
+ --primary: #606060;
2360
+ --primary-foreground: #f0f0f0;
2361
+ --secondary: #dedede;
2362
+ --secondary-foreground: #3a3a3a;
2363
+ --muted: #e3e3e3;
2364
+ --muted-foreground: #505050;
2365
+ --accent: #f3eac8;
2366
+ --accent-foreground: #5d4037;
2367
+ --destructive: #c87a7a;
2368
+ --destructive-foreground: #ffffff;
2369
+ --border: #747272;
2370
+ --input: #ffffff;
2371
+ --ring: #a0a0a0;
2372
+ --chart-1: #333333;
2373
+ --chart-2: #555555;
2374
+ --chart-3: #777777;
2375
+ --chart-4: #999999;
2376
+ --chart-5: #bbbbbb;
2377
+ --sidebar: #f0f0f0;
2378
+ --sidebar-foreground: #3a3a3a;
2379
+ --sidebar-primary: #606060;
2380
+ --sidebar-primary-foreground: #f0f0f0;
2381
+ --sidebar-accent: #f3eac8;
2382
+ --sidebar-accent-foreground: #5d4037;
2383
+ --sidebar-border: #c0c0c0;
2384
+ --sidebar-ring: #a0a0a0;
2385
+ --font-sans: Architects Daughter, sans-serif;
2386
+ --font-serif: 'Times New Roman', Times, serif;
2387
+ --font-mono: 'Courier New', Courier, monospace;
2388
+ --radius: 0.625rem;
2389
+ --shadow-color: #000000;
2390
+ --shadow-opacity: 0.03;
2391
+ --shadow-blur: 5px;
2392
+ --shadow-spread: 0px;
2393
+ --shadow-offset-x: 1px;
2394
+ --shadow-offset-y: 4px;
2395
+ --letter-spacing: 0.5px;
2396
+ --spacing: 0.25rem;
2397
+ }
2398
+
2399
+ .theme-notebook.dark {
2400
+ --background: #2b2b2b;
2401
+ --foreground: #dcdcdc;
2402
+ --card: #333333;
2403
+ --card-foreground: #dcdcdc;
2404
+ --popover: #333333;
2405
+ --popover-foreground: #dcdcdc;
2406
+ --primary: #b0b0b0;
2407
+ --primary-foreground: #2b2b2b;
2408
+ --secondary: #5a5a5a;
2409
+ --secondary-foreground: #c0c0c0;
2410
+ --muted: #454545;
2411
+ --muted-foreground: #a0a0a0;
2412
+ --accent: #e0e0e0;
2413
+ --accent-foreground: #333333;
2414
+ --destructive: #d9afaf;
2415
+ --destructive-foreground: #2b2b2b;
2416
+ --border: #4f4f4f;
2417
+ --input: #333333;
2418
+ --ring: #c0c0c0;
2419
+ --chart-1: #efefef;
2420
+ --chart-2: #d0d0d0;
2421
+ --chart-3: #b0b0b0;
2422
+ --chart-4: #909090;
2423
+ --chart-5: #707070;
2424
+ --sidebar: #212121;
2425
+ --sidebar-foreground: #dcdcdc;
2426
+ --sidebar-primary: #b0b0b0;
2427
+ --sidebar-primary-foreground: #212121;
2428
+ --sidebar-accent: #e0e0e0;
2429
+ --sidebar-accent-foreground: #333333;
2430
+ --sidebar-border: #4f4f4f;
2431
+ --sidebar-ring: #c0c0c0;
2432
+ --font-sans: Architects Daughter, sans-serif;
2433
+ --font-serif: Georgia, serif;
2434
+ --font-mono: 'Fira Code', 'Courier New', monospace;
2435
+ --radius: 0.625rem;
2436
+ --shadow-color: #000000;
2437
+ --shadow-opacity: 0.03;
2438
+ --shadow-blur: 5px;
2439
+ --shadow-spread: 0px;
2440
+ --shadow-offset-x: 1px;
2441
+ --shadow-offset-y: 4px;
2442
+ --letter-spacing: 0.5px;
2443
+ --spacing: 0.25rem;
2444
+ }
2445
+ /* ocean-breeze — tweakcn "Ocean Breeze" preset. Auto-generated from tweakcn defaultPresets;
2446
+ tokens kept verbatim (consumed via var()). */
2447
+ .theme-ocean-breeze {
2448
+ --background: #f0f8ff;
2449
+ --foreground: #374151;
2450
+ --card: #ffffff;
2451
+ --card-foreground: #374151;
2452
+ --popover: #ffffff;
2453
+ --popover-foreground: #374151;
2454
+ --primary: #22c55e;
2455
+ --primary-foreground: #ffffff;
2456
+ --secondary: #e0f2fe;
2457
+ --secondary-foreground: #4b5563;
2458
+ --muted: #f3f4f6;
2459
+ --muted-foreground: #6b7280;
2460
+ --accent: #d1fae5;
2461
+ --accent-foreground: #374151;
2462
+ --destructive: #ef4444;
2463
+ --destructive-foreground: #ffffff;
2464
+ --border: #e5e7eb;
2465
+ --input: #e5e7eb;
2466
+ --ring: #22c55e;
2467
+ --chart-1: #22c55e;
2468
+ --chart-2: #10b981;
2469
+ --chart-3: #059669;
2470
+ --chart-4: #047857;
2471
+ --chart-5: #065f46;
2472
+ --radius: 0.5rem;
2473
+ --sidebar: #e0f2fe;
2474
+ --sidebar-foreground: #374151;
2475
+ --sidebar-primary: #22c55e;
2476
+ --sidebar-primary-foreground: #ffffff;
2477
+ --sidebar-accent: #d1fae5;
2478
+ --sidebar-accent-foreground: #374151;
2479
+ --sidebar-border: #e5e7eb;
2480
+ --sidebar-ring: #22c55e;
2481
+ --font-sans: DM Sans, sans-serif;
2482
+ --font-serif: Lora, serif;
2483
+ --font-mono: IBM Plex Mono, monospace;
2484
+ --shadow-color: hsl(0 0% 0%);
2485
+ --shadow-opacity: 0.1;
2486
+ --shadow-blur: 8px;
2487
+ --shadow-spread: -1px;
2488
+ --shadow-offset-x: 0px;
2489
+ --shadow-offset-y: 4px;
2490
+ }
2491
+
2492
+ .theme-ocean-breeze.dark {
2493
+ --background: #0f172a;
2494
+ --foreground: #d1d5db;
2495
+ --card: #1e293b;
2496
+ --card-foreground: #d1d5db;
2497
+ --popover: #1e293b;
2498
+ --popover-foreground: #d1d5db;
2499
+ --primary: #34d399;
2500
+ --primary-foreground: #0f172a;
2501
+ --secondary: #2d3748;
2502
+ --secondary-foreground: #a1a1aa;
2503
+ --muted: #19212e;
2504
+ --muted-foreground: #6b7280;
2505
+ --accent: #374151;
2506
+ --accent-foreground: #a1a1aa;
2507
+ --destructive: #ef4444;
2508
+ --destructive-foreground: #0f172a;
2509
+ --border: #4b5563;
2510
+ --input: #4b5563;
2511
+ --ring: #34d399;
2512
+ --chart-1: #34d399;
2513
+ --chart-2: #2dd4bf;
2514
+ --chart-3: #22c55e;
2515
+ --chart-4: #10b981;
2516
+ --chart-5: #059669;
2517
+ --radius: 0.5rem;
2518
+ --sidebar: #1e293b;
2519
+ --sidebar-foreground: #d1d5db;
2520
+ --sidebar-primary: #34d399;
2521
+ --sidebar-primary-foreground: #0f172a;
2522
+ --sidebar-accent: #374151;
2523
+ --sidebar-accent-foreground: #a1a1aa;
2524
+ --sidebar-border: #4b5563;
2525
+ --sidebar-ring: #34d399;
2526
+ }
2527
+ /* OpenAI — minimal/editorial: white page, near-black warm-neutral ink (#0d0d0d),
2528
+ monochrome-first with a restrained teal accent (#10a37f). All-sans grotesk.
2529
+ Brand fonts Söhne / OpenAI Sans are proprietary; substituted with Inter/Geist.
2530
+ Serif headings: NO. */
2531
+ .theme-openai {
2532
+ --background: oklch(1 0 0);
2533
+ --foreground: oklch(0.18 0.002 165); /* #0d0d0d near-black */
2534
+ --card: oklch(1 0 0);
2535
+ --card-foreground: oklch(0.18 0.002 165);
2536
+ --popover: oklch(1 0 0);
2537
+ --popover-foreground: oklch(0.18 0.002 165);
2538
+ --primary: oklch(0.18 0.002 165); /* ink primary (monochrome-first) */
2539
+ --primary-foreground: oklch(0.99 0 0);
2540
+ --secondary: oklch(0.968 0 0);
2541
+ --secondary-foreground: oklch(0.22 0.002 165);
2542
+ --muted: oklch(0.968 0 0);
2543
+ --muted-foreground: oklch(0.55 0.003 170);
2544
+ --accent: oklch(0.62 0.11 172); /* teal #10a37f restrained accent */
2545
+ --accent-foreground: oklch(0.99 0 0);
2546
+ --destructive: oklch(0.577 0.245 27.325);
2547
+ --destructive-foreground: oklch(0.99 0 0);
2548
+ --border: oklch(0.915 0.002 170);
2549
+ --input: oklch(0.915 0.002 170);
2550
+ --ring: oklch(0.62 0.11 172);
2551
+ --sidebar: oklch(0.985 0 0);
2552
+ --sidebar-foreground: oklch(0.18 0.002 165);
2553
+ --sidebar-accent: oklch(0.968 0 0);
2554
+ --sidebar-accent-foreground: oklch(0.22 0.002 165);
2555
+ --radius: 0.5rem;
2556
+ --font-sans: 'Inter', 'Geist', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif;
2557
+ --font-serif: 'Source Serif 4', Georgia, Cambria, 'Times New Roman', serif;
2558
+ --font-mono: 'Geist Mono', 'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;
2559
+ }
2560
+
2561
+ .theme-openai.dark {
2562
+ --background: oklch(0.16 0.002 165); /* near-black */
2563
+ --foreground: oklch(0.97 0 0);
2564
+ --card: oklch(0.205 0.002 165);
2565
+ --card-foreground: oklch(0.97 0 0);
2566
+ --popover: oklch(0.205 0.002 165);
2567
+ --popover-foreground: oklch(0.97 0 0);
2568
+ --primary: oklch(0.97 0 0); /* inverts: near-white primary */
2569
+ --primary-foreground: oklch(0.18 0.002 165);
2570
+ --secondary: oklch(0.27 0.002 165);
2571
+ --secondary-foreground: oklch(0.97 0 0);
2572
+ --muted: oklch(0.27 0.002 165);
2573
+ --muted-foreground: oklch(0.7 0.003 170);
2574
+ --accent: oklch(0.68 0.115 172); /* teal, brightened for dark */
2575
+ --accent-foreground: oklch(0.16 0.002 165);
2576
+ --destructive: oklch(0.704 0.191 22.216);
2577
+ --destructive-foreground: oklch(0.99 0 0);
2578
+ --border: oklch(1 0 0 / 10%);
2579
+ --input: oklch(1 0 0 / 14%);
2580
+ --ring: oklch(0.68 0.115 172);
2581
+ --sidebar: oklch(0.205 0.002 165);
2582
+ --sidebar-foreground: oklch(0.97 0 0);
2583
+ --sidebar-accent: oklch(0.27 0.002 165);
2584
+ --sidebar-accent-foreground: oklch(0.97 0 0);
2585
+ }
2586
+ /* pastel-dreams — tweakcn "Pastel Dreams" preset. Auto-generated from tweakcn defaultPresets;
2587
+ tokens kept verbatim (consumed via var()). */
2588
+ .theme-pastel-dreams {
2589
+ --background: #f7f3f9;
2590
+ --foreground: #374151;
2591
+ --card: #ffffff;
2592
+ --card-foreground: #374151;
2593
+ --popover: #ffffff;
2594
+ --popover-foreground: #374151;
2595
+ --primary: #a78bfa;
2596
+ --primary-foreground: #ffffff;
2597
+ --secondary: #e9d8fd;
2598
+ --secondary-foreground: #4b5563;
2599
+ --muted: #f3e8ff;
2600
+ --muted-foreground: #6b7280;
2601
+ --accent: #f3e5f5;
2602
+ --accent-foreground: #374151;
2603
+ --destructive: #fca5a5;
2604
+ --destructive-foreground: #ffffff;
2605
+ --border: #e9d8fd;
2606
+ --input: #e9d8fd;
2607
+ --ring: #a78bfa;
2608
+ --chart-1: #a78bfa;
2609
+ --chart-2: #8b5cf6;
2610
+ --chart-3: #7c3aed;
2611
+ --chart-4: #6d28d9;
2612
+ --chart-5: #5b21b6;
2613
+ --radius: 1.5rem;
2614
+ --sidebar: #e9d8fd;
2615
+ --sidebar-foreground: #374151;
2616
+ --sidebar-primary: #a78bfa;
2617
+ --sidebar-primary-foreground: #ffffff;
2618
+ --sidebar-accent: #f3e5f5;
2619
+ --sidebar-accent-foreground: #374151;
2620
+ --sidebar-border: #e9d8fd;
2621
+ --sidebar-ring: #a78bfa;
2622
+ --font-sans: Open Sans, sans-serif;
2623
+ --font-serif: Source Serif 4, serif;
2624
+ --font-mono: IBM Plex Mono, monospace;
2625
+ --shadow-color: hsl(0 0% 0%);
2626
+ --shadow-opacity: 0.08;
2627
+ --shadow-blur: 16px;
2628
+ --shadow-spread: -4px;
2629
+ --shadow-offset-x: 0px;
2630
+ --shadow-offset-y: 8px;
2631
+ }
2632
+
2633
+ .theme-pastel-dreams.dark {
2634
+ --background: #1c1917;
2635
+ --foreground: #e0e7ff;
2636
+ --card: #2d2535;
2637
+ --card-foreground: #e0e7ff;
2638
+ --popover: #2d2535;
2639
+ --popover-foreground: #e0e7ff;
2640
+ --primary: #c0aafd;
2641
+ --primary-foreground: #1c1917;
2642
+ --secondary: #3f324a;
2643
+ --secondary-foreground: #d1d5db;
2644
+ --muted: #20182b;
2645
+ --muted-foreground: #9ca3af;
2646
+ --accent: #4a3d5a;
2647
+ --accent-foreground: #d1d5db;
2648
+ --destructive: #fca5a5;
2649
+ --destructive-foreground: #1c1917;
2650
+ --border: #3f324a;
2651
+ --input: #3f324a;
2652
+ --ring: #c0aafd;
2653
+ --chart-1: #c0aafd;
2654
+ --chart-2: #a78bfa;
2655
+ --chart-3: #8b5cf6;
2656
+ --chart-4: #7c3aed;
2657
+ --chart-5: #6d28d9;
2658
+ --radius: 1.5rem;
2659
+ --sidebar: #3f324a;
2660
+ --sidebar-foreground: #e0e7ff;
2661
+ --sidebar-primary: #c0aafd;
2662
+ --sidebar-primary-foreground: #1c1917;
2663
+ --sidebar-accent: #4a3d5a;
2664
+ --sidebar-accent-foreground: #d1d5db;
2665
+ --sidebar-border: #3f324a;
2666
+ --sidebar-ring: #c0aafd;
2667
+ }
2668
+ /* perpetuity — tweakcn "Perpetuity" preset. Auto-generated from tweakcn defaultPresets;
2669
+ tokens kept verbatim (consumed via var()). */
2670
+ .theme-perpetuity {
2671
+ --background: #e8f0f0;
2672
+ --foreground: #0a4a55;
2673
+ --card: #f2f7f7;
2674
+ --card-foreground: #0a4a55;
2675
+ --popover: #f2f7f7;
2676
+ --popover-foreground: #0a4a55;
2677
+ --primary: #06858e;
2678
+ --primary-foreground: #ffffff;
2679
+ --secondary: #d9eaea;
2680
+ --secondary-foreground: #0a4a55;
2681
+ --muted: #e0eaea;
2682
+ --muted-foreground: #427a7e;
2683
+ --accent: #c9e5e7;
2684
+ --accent-foreground: #0a4a55;
2685
+ --destructive: #d13838;
2686
+ --destructive-foreground: #ffffff;
2687
+ --border: #cde0e2;
2688
+ --input: #d9eaea;
2689
+ --ring: #06858e;
2690
+ --chart-1: #06858e;
2691
+ --chart-2: #1e9ea6;
2692
+ --chart-3: #37b6be;
2693
+ --chart-4: #5dc7ce;
2694
+ --chart-5: #8ad8dd;
2695
+ --sidebar: #daebed;
2696
+ --sidebar-foreground: #0a4a55;
2697
+ --sidebar-primary: #06858e;
2698
+ --sidebar-primary-foreground: #ffffff;
2699
+ --sidebar-accent: #c9e5e7;
2700
+ --sidebar-accent-foreground: #0a4a55;
2701
+ --sidebar-border: #cde0e2;
2702
+ --sidebar-ring: #06858e;
2703
+ --font-sans: Courier New, monospace;
2704
+ --font-serif: Courier New, monospace;
2705
+ --font-mono: Courier New, monospace;
2706
+ --radius: 0.125rem;
2707
+ --shadow-color: hsl(185 70% 30% / 0.15);
2708
+ --shadow-opacity: 0.15;
2709
+ --shadow-blur: 2px;
2710
+ --shadow-spread: 0px;
2711
+ --shadow-offset-x: 1px;
2712
+ --shadow-offset-y: 1px;
2713
+ }
2714
+
2715
+ .theme-perpetuity.dark {
2716
+ --background: #0a1a20;
2717
+ --foreground: #4de8e8;
2718
+ --card: #0c2025;
2719
+ --card-foreground: #4de8e8;
2720
+ --popover: #0c2025;
2721
+ --popover-foreground: #4de8e8;
2722
+ --primary: #4de8e8;
2723
+ --primary-foreground: #0a1a20;
2724
+ --secondary: #164955;
2725
+ --secondary-foreground: #4de8e8;
2726
+ --muted: #0f3039;
2727
+ --muted-foreground: #36a5a5;
2728
+ --accent: #164955;
2729
+ --accent-foreground: #4de8e8;
2730
+ --destructive: #e83c3c;
2731
+ --destructive-foreground: #f2f2f2;
2732
+ --border: #164955;
2733
+ --input: #164955;
2734
+ --ring: #4de8e8;
2735
+ --chart-1: #4de8e8;
2736
+ --chart-2: #36a5a5;
2737
+ --chart-3: #2d8a8a;
2738
+ --chart-4: #19595e;
2739
+ --chart-5: #0e383c;
2740
+ --sidebar: #0a1a20;
2741
+ --sidebar-foreground: #4de8e8;
2742
+ --sidebar-primary: #4de8e8;
2743
+ --sidebar-primary-foreground: #0a1a20;
2744
+ --sidebar-accent: #164955;
2745
+ --sidebar-accent-foreground: #4de8e8;
2746
+ --sidebar-border: #164955;
2747
+ --sidebar-ring: #4de8e8;
2748
+ --font-sans: Source Code Pro, monospace;
2749
+ --font-serif: Source Code Pro, monospace;
2750
+ --font-mono: Source Code Pro, monospace;
2751
+ --radius: 0.125rem;
2752
+ --shadow-color: hsl(180 70% 60% / 0.2);
2753
+ --shadow-opacity: 0.2;
2754
+ --shadow-blur: 2px;
2755
+ --shadow-spread: 0px;
2756
+ --shadow-offset-x: 1px;
2757
+ --shadow-offset-y: 1px;
2758
+ }
2759
+ /* quantum-rose — tweakcn "Quantum Rose" preset. Auto-generated from tweakcn defaultPresets;
2760
+ tokens kept verbatim (consumed via var()). */
2761
+ .theme-quantum-rose {
2762
+ --background: #fff0f8;
2763
+ --foreground: #91185c;
2764
+ --card: #fff7fc;
2765
+ --card-foreground: #91185c;
2766
+ --popover: #fff7fc;
2767
+ --popover-foreground: #91185c;
2768
+ --primary: #e6067a;
2769
+ --primary-foreground: #ffffff;
2770
+ --secondary: #ffd6ff;
2771
+ --secondary-foreground: #91185c;
2772
+ --muted: #ffe3f2;
2773
+ --muted-foreground: #c04283;
2774
+ --accent: #ffc1e3;
2775
+ --accent-foreground: #91185c;
2776
+ --destructive: #d13869;
2777
+ --destructive-foreground: #ffffff;
2778
+ --border: #ffc7e6;
2779
+ --input: #ffd6ff;
2780
+ --ring: #e6067a;
2781
+ --chart-1: #e6067a;
2782
+ --chart-2: #c44b97;
2783
+ --chart-3: #9969b6;
2784
+ --chart-4: #7371bf;
2785
+ --chart-5: #5e84ff;
2786
+ --sidebar: #ffedf6;
2787
+ --sidebar-foreground: #91185c;
2788
+ --sidebar-primary: #e6067a;
2789
+ --sidebar-primary-foreground: #ffffff;
2790
+ --sidebar-accent: #ffc1e3;
2791
+ --sidebar-accent-foreground: #91185c;
2792
+ --sidebar-border: #ffddf0;
2793
+ --sidebar-ring: #e6067a;
2794
+ --font-sans: Poppins, sans-serif;
2795
+ --font-serif: Playfair Display, serif;
2796
+ --font-mono: Space Mono, monospace;
2797
+ --radius: 0.5rem;
2798
+ --shadow-color: hsl(330 70% 30% / 0.12);
2799
+ --shadow-opacity: 0.18;
2800
+ --shadow-blur: 0px;
2801
+ --shadow-spread: 0px;
2802
+ --shadow-offset-x: 0px;
2803
+ --shadow-offset-y: 3px;
2804
+ }
2805
+
2806
+ .theme-quantum-rose.dark {
2807
+ --background: #1a0922;
2808
+ --foreground: #ffb3ff;
2809
+ --card: #2a1435;
2810
+ --card-foreground: #ffb3ff;
2811
+ --popover: #2a1435;
2812
+ --popover-foreground: #ffb3ff;
2813
+ --primary: #ff6bef;
2814
+ --primary-foreground: #180518;
2815
+ --secondary: #46204f;
2816
+ --secondary-foreground: #ffb3ff;
2817
+ --muted: #331941;
2818
+ --muted-foreground: #d67ad6;
2819
+ --accent: #5a1f5d;
2820
+ --accent-foreground: #ffb3ff;
2821
+ --destructive: #ff2876;
2822
+ --destructive-foreground: #f9f9f9;
2823
+ --border: #4a1b5f;
2824
+ --input: #46204f;
2825
+ --ring: #ff6bef;
2826
+ --chart-1: #ff6bef;
2827
+ --chart-2: #c359e3;
2828
+ --chart-3: #9161ff;
2829
+ --chart-4: #6f73e2;
2830
+ --chart-5: #547aff;
2831
+ --sidebar: #1c0d25;
2832
+ --sidebar-foreground: #ffb3ff;
2833
+ --sidebar-primary: #ff6bef;
2834
+ --sidebar-primary-foreground: #180518;
2835
+ --sidebar-accent: #5a1f5d;
2836
+ --sidebar-accent-foreground: #ffb3ff;
2837
+ --sidebar-border: #4a1b5f;
2838
+ --sidebar-ring: #ff6bef;
2839
+ --font-sans: Quicksand, sans-serif;
2840
+ --font-serif: Playfair Display, serif;
2841
+ --font-mono: Space Mono, monospace;
2842
+ --shadow-color: hsl(300 80% 50% / 0.25);
2843
+ }
2844
+ /* retro-arcade — tweakcn "Retro Arcade" preset. Auto-generated from tweakcn defaultPresets;
2845
+ tokens kept verbatim (consumed via var()). */
2846
+ .theme-retro-arcade {
2847
+ --background: #fdf6e3;
2848
+ --foreground: #073642;
2849
+ --card: #eee8d5;
2850
+ --card-foreground: #073642;
2851
+ --popover: #eee8d5;
2852
+ --popover-foreground: #073642;
2853
+ --primary: #d33682;
2854
+ --primary-foreground: #ffffff;
2855
+ --secondary: #2aa198;
2856
+ --secondary-foreground: #ffffff;
2857
+ --muted: #93a1a1;
2858
+ --muted-foreground: #073642;
2859
+ --accent: #cb4b16;
2860
+ --accent-foreground: #ffffff;
2861
+ --destructive: #dc322f;
2862
+ --destructive-foreground: #ffffff;
2863
+ --border: #839496;
2864
+ --input: #839496;
2865
+ --ring: #d33682;
2866
+ --chart-1: #268bd2;
2867
+ --chart-2: #2aa198;
2868
+ --chart-3: #d33682;
2869
+ --chart-4: #cb4b16;
2870
+ --chart-5: #dc322f;
2871
+ --radius: 0.25rem;
2872
+ --sidebar: #fdf6e3;
2873
+ --sidebar-foreground: #073642;
2874
+ --sidebar-primary: #d33682;
2875
+ --sidebar-primary-foreground: #ffffff;
2876
+ --sidebar-accent: #2aa198;
2877
+ --sidebar-accent-foreground: #ffffff;
2878
+ --sidebar-border: #839496;
2879
+ --sidebar-ring: #d33682;
2880
+ --font-sans: Outfit, sans-serif;
2881
+ --font-mono: Space Mono, monospace;
2882
+ --shadow-color: hsl(196 83% 10%);
2883
+ --shadow-opacity: 0.15;
2884
+ --shadow-blur: 4px;
2885
+ --shadow-spread: 0px;
2886
+ --shadow-offset-x: 2px;
2887
+ --shadow-offset-y: 2px;
2888
+ }
2889
+
2890
+ .theme-retro-arcade.dark {
2891
+ --background: #002b36;
2892
+ --foreground: #93a1a1;
2893
+ --card: #073642;
2894
+ --card-foreground: #93a1a1;
2895
+ --popover: #073642;
2896
+ --popover-foreground: #93a1a1;
2897
+ --primary: #d33682;
2898
+ --primary-foreground: #ffffff;
2899
+ --secondary: #2aa198;
2900
+ --secondary-foreground: #ffffff;
2901
+ --muted: #586e75;
2902
+ --muted-foreground: #93a1a1;
2903
+ --accent: #cb4b16;
2904
+ --accent-foreground: #ffffff;
2905
+ --destructive: #dc322f;
2906
+ --destructive-foreground: #ffffff;
2907
+ --border: #586e75;
2908
+ --input: #586e75;
2909
+ --ring: #d33682;
2910
+ --chart-1: #268bd2;
2911
+ --chart-2: #2aa198;
2912
+ --chart-3: #d33682;
2913
+ --chart-4: #cb4b16;
2914
+ --chart-5: #dc322f;
2915
+ --radius: 0.25rem;
2916
+ --sidebar: #002b36;
2917
+ --sidebar-foreground: #93a1a1;
2918
+ --sidebar-primary: #d33682;
2919
+ --sidebar-primary-foreground: #ffffff;
2920
+ --sidebar-accent: #2aa198;
2921
+ --sidebar-accent-foreground: #ffffff;
2922
+ --sidebar-border: #586e75;
2923
+ --sidebar-ring: #d33682;
2924
+ }
2925
+ /* rose — shadcn "rose" base color: rose-500 primary on a neutral slate scaffold.
2926
+ Exact Tailwind v4 rose OKLCH values. */
2927
+ .theme-rose {
2928
+ --background: oklch(1 0 0);
2929
+ --foreground: oklch(0.208 0.04 265.75); /* slate-900 ink */
2930
+ --card: oklch(1 0 0);
2931
+ --card-foreground: oklch(0.208 0.04 265.75);
2932
+ --popover: oklch(1 0 0);
2933
+ --popover-foreground: oklch(0.208 0.04 265.75);
2934
+ --primary: oklch(0.645 0.215 16.44); /* rose-500 */
2935
+ --primary-foreground: oklch(0.969 0.015 12.42); /* rose-50 */
2936
+ --secondary: oklch(0.968 0.007 247.9); /* slate-100 */
2937
+ --secondary-foreground: oklch(0.208 0.04 265.75);
2938
+ --muted: oklch(0.968 0.007 247.9);
2939
+ --muted-foreground: oklch(0.554 0.041 257.42);
2940
+ --accent: oklch(0.941 0.03 12.58); /* rose-100 tinted accent */
2941
+ --accent-foreground: oklch(0.41 0.15 10.27); /* rose-900 */
2942
+ --destructive: oklch(0.577 0.245 27.325);
2943
+ --destructive-foreground: oklch(0.984 0.003 247.86);
2944
+ --border: oklch(0.929 0.013 255.51); /* slate-200 */
2945
+ --input: oklch(0.929 0.013 255.51);
2946
+ --ring: oklch(0.645 0.215 16.44); /* rose-500 */
2947
+ --sidebar: oklch(0.984 0.003 247.86);
2948
+ --sidebar-foreground: oklch(0.208 0.04 265.75);
2949
+ --sidebar-accent: oklch(0.941 0.03 12.58);
2950
+ --sidebar-accent-foreground: oklch(0.41 0.15 10.27);
2951
+ --radius: 0.625rem;
2952
+ --font-sans: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
2953
+ --font-serif: ui-serif, Georgia, Cambria, serif;
2954
+ --font-mono: ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;
2955
+ }
2956
+
2957
+ .theme-rose.dark {
2958
+ --background: oklch(0.208 0.04 265.75); /* slate-900 */
2959
+ --foreground: oklch(0.984 0.003 247.86);
2960
+ --card: oklch(0.208 0.04 265.75);
2961
+ --card-foreground: oklch(0.984 0.003 247.86);
2962
+ --popover: oklch(0.208 0.04 265.75);
2963
+ --popover-foreground: oklch(0.984 0.003 247.86);
2964
+ --primary: oklch(0.645 0.215 16.44); /* rose-500 stays vivid */
2965
+ --primary-foreground: oklch(0.969 0.015 12.42);
2966
+ --secondary: oklch(0.279 0.037 260.03); /* slate-800 */
2967
+ --secondary-foreground: oklch(0.984 0.003 247.86);
2968
+ --muted: oklch(0.279 0.037 260.03);
2969
+ --muted-foreground: oklch(0.711 0.035 256.79);
2970
+ --accent: oklch(0.271 0.101 12.09); /* rose-950 tinted accent */
2971
+ --accent-foreground: oklch(0.969 0.015 12.42);
2972
+ --destructive: oklch(0.704 0.191 22.216);
2973
+ --destructive-foreground: oklch(0.984 0.003 247.86);
2974
+ --border: oklch(1 0 0 / 10%);
2975
+ --input: oklch(1 0 0 / 15%);
2976
+ --ring: oklch(0.645 0.215 16.44);
2977
+ --sidebar: oklch(0.279 0.037 260.03);
2978
+ --sidebar-foreground: oklch(0.984 0.003 247.86);
2979
+ --sidebar-accent: oklch(0.271 0.101 12.09);
2980
+ --sidebar-accent-foreground: oklch(0.969 0.015 12.42);
2981
+ }
2982
+ /* sage-garden — tweakcn "Sage Garden" preset. Auto-generated from tweakcn defaultPresets;
2983
+ tokens kept verbatim (consumed via var()). */
2984
+ .theme-sage-garden {
2985
+ --background: #f8f7f4;
2986
+ --foreground: #1a1f2e;
2987
+ --card: #ffffff;
2988
+ --card-foreground: #1a1f2e;
2989
+ --popover: #ffffff;
2990
+ --popover-foreground: #1a1f2e;
2991
+ --primary: #7c9082;
2992
+ --primary-foreground: #ffffff;
2993
+ --secondary: #ced4bf;
2994
+ --secondary-foreground: #1a1f2e;
2995
+ --muted: #e8e6e1;
2996
+ --muted-foreground: #6b7280;
2997
+ --accent: #bfc9bb;
2998
+ --accent-foreground: #1a1f2e;
2999
+ --destructive: #c73e3a;
3000
+ --destructive-foreground: #ffffff;
3001
+ --border: #e8e6e1;
3002
+ --input: #ffffff;
3003
+ --ring: #7c9082;
3004
+ --chart-1: #7c9082;
3005
+ --chart-2: #a0aa88;
3006
+ --chart-3: #8b9d83;
3007
+ --chart-4: #6b7280;
3008
+ --chart-5: #e8e6e1;
3009
+ --sidebar: #fafaf8;
3010
+ --sidebar-foreground: #1a1f2e;
3011
+ --sidebar-primary: #7c9082;
3012
+ --sidebar-primary-foreground: #ffffff;
3013
+ --sidebar-accent: #e8e6e1;
3014
+ --sidebar-accent-foreground: #1a1f2e;
3015
+ --sidebar-border: #e8e6e1;
3016
+ --sidebar-ring: #7c9082;
3017
+ --font-sans: Antic, ui-sans-serif, sans-serif, system-ui;
3018
+ --font-serif: Signifier, Georgia, serif;
3019
+ --font-mono: JetBrains Mono, Courier New, monospace;
3020
+ --radius: 0.35rem;
3021
+ --shadow-color: #1a1f2e;
3022
+ --shadow-opacity: 0.04;
3023
+ --shadow-blur: 2px;
3024
+ --shadow-spread: 0px;
3025
+ --shadow-offset-x: 0px;
3026
+ --shadow-offset-y: 1px;
3027
+ --letter-spacing: 0em;
3028
+ --spacing: 0.23rem;
3029
+ }
3030
+
3031
+ .theme-sage-garden.dark {
3032
+ --background: #0a0a0a;
3033
+ --foreground: #f5f5f5;
3034
+ --card: #121212;
3035
+ --card-foreground: #f5f5f5;
3036
+ --popover: #121212;
3037
+ --popover-foreground: #f5f5f5;
3038
+ --primary: #7c9082;
3039
+ --primary-foreground: #000000;
3040
+ --secondary: #1a1a1a;
3041
+ --secondary-foreground: #f5f5f5;
3042
+ --muted: #1a1a1a;
3043
+ --muted-foreground: #a0a0a0;
3044
+ --accent: #36443a;
3045
+ --accent-foreground: #f5f5f5;
3046
+ --destructive: #ef4444;
3047
+ --destructive-foreground: #ffffff;
3048
+ --border: #2a2a2a;
3049
+ --input: #121212;
3050
+ --ring: #7c9082;
3051
+ --chart-1: #7c9082;
3052
+ --chart-2: #a0aa88;
3053
+ --chart-3: #8b9d83;
3054
+ --chart-4: #6b7280;
3055
+ --chart-5: #5a6b5e;
3056
+ --sidebar: #0f0f0f;
3057
+ --sidebar-foreground: #f5f5f5;
3058
+ --sidebar-primary: #7c9082;
3059
+ --sidebar-primary-foreground: #ffffff;
3060
+ --sidebar-accent: #1a1a1a;
3061
+ --sidebar-accent-foreground: #f5f5f5;
3062
+ --sidebar-border: #2a2a2a;
3063
+ --sidebar-ring: #7c9082;
3064
+ --shadow-color: #000000;
3065
+ }
3066
+ /* slate — shadcn "slate" base color (neutral scaffold tinted with the Tailwind v4
3067
+ slate scale). Cool blue-gray. Exact Tailwind/shadcn OKLCH values. */
3068
+ .theme-slate {
3069
+ --background: oklch(1 0 0);
3070
+ --foreground: oklch(0.208 0.04 265.75); /* slate-900 */
3071
+ --card: oklch(1 0 0);
3072
+ --card-foreground: oklch(0.208 0.04 265.75);
3073
+ --popover: oklch(1 0 0);
3074
+ --popover-foreground: oklch(0.208 0.04 265.75);
3075
+ --primary: oklch(0.208 0.04 265.75); /* slate-900 */
3076
+ --primary-foreground: oklch(0.984 0.003 247.86); /* slate-50 */
3077
+ --secondary: oklch(0.968 0.007 247.9); /* slate-100 */
3078
+ --secondary-foreground: oklch(0.208 0.04 265.75);
3079
+ --muted: oklch(0.968 0.007 247.9);
3080
+ --muted-foreground: oklch(0.554 0.041 257.42); /* slate-500 */
3081
+ --accent: oklch(0.968 0.007 247.9);
3082
+ --accent-foreground: oklch(0.208 0.04 265.75);
3083
+ --destructive: oklch(0.577 0.245 27.325);
3084
+ --destructive-foreground: oklch(0.984 0.003 247.86);
3085
+ --border: oklch(0.929 0.013 255.51); /* slate-200 */
3086
+ --input: oklch(0.929 0.013 255.51);
3087
+ --ring: oklch(0.208 0.04 265.75);
3088
+ --sidebar: oklch(0.984 0.003 247.86); /* slate-50 */
3089
+ --sidebar-foreground: oklch(0.208 0.04 265.75);
3090
+ --sidebar-accent: oklch(0.968 0.007 247.9);
3091
+ --sidebar-accent-foreground: oklch(0.208 0.04 265.75);
3092
+ --radius: 0.625rem;
3093
+ --font-sans: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
3094
+ --font-serif: ui-serif, Georgia, Cambria, serif;
3095
+ --font-mono: ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;
3096
+ }
3097
+
3098
+ .theme-slate.dark {
3099
+ --background: oklch(0.208 0.04 265.75); /* slate-900 */
3100
+ --foreground: oklch(0.984 0.003 247.86); /* slate-50 */
3101
+ --card: oklch(0.208 0.04 265.75);
3102
+ --card-foreground: oklch(0.984 0.003 247.86);
3103
+ --popover: oklch(0.208 0.04 265.75);
3104
+ --popover-foreground: oklch(0.984 0.003 247.86);
3105
+ --primary: oklch(0.984 0.003 247.86); /* slate-50 */
3106
+ --primary-foreground: oklch(0.208 0.04 265.75);
3107
+ --secondary: oklch(0.279 0.037 260.03); /* slate-800 */
3108
+ --secondary-foreground: oklch(0.984 0.003 247.86);
3109
+ --muted: oklch(0.279 0.037 260.03);
3110
+ --muted-foreground: oklch(0.711 0.035 256.79); /* slate-400 */
3111
+ --accent: oklch(0.279 0.037 260.03);
3112
+ --accent-foreground: oklch(0.984 0.003 247.86);
3113
+ --destructive: oklch(0.704 0.191 22.216);
3114
+ --destructive-foreground: oklch(0.984 0.003 247.86);
3115
+ --border: oklch(1 0 0 / 10%);
3116
+ --input: oklch(1 0 0 / 15%);
3117
+ --ring: oklch(0.554 0.041 257.42); /* slate-500 */
3118
+ --sidebar: oklch(0.279 0.037 260.03); /* slate-800 */
3119
+ --sidebar-foreground: oklch(0.984 0.003 247.86);
3120
+ --sidebar-accent: oklch(0.372 0.039 257.29); /* slate-700 */
3121
+ --sidebar-accent-foreground: oklch(0.984 0.003 247.86);
3122
+ }
3123
+ /* soft-pop — tweakcn "Soft Pop" preset. Auto-generated from tweakcn defaultPresets;
3124
+ tokens kept verbatim (consumed via var()). */
3125
+ .theme-soft-pop {
3126
+ --background: #f7f9f3;
3127
+ --foreground: #000000;
3128
+ --card: #ffffff;
3129
+ --card-foreground: #000000;
3130
+ --popover: #ffffff;
3131
+ --popover-foreground: #000000;
3132
+ --primary: #4f46e5;
3133
+ --primary-foreground: #ffffff;
3134
+ --secondary: #14b8a6;
3135
+ --secondary-foreground: #ffffff;
3136
+ --muted: #f0f0f0;
3137
+ --muted-foreground: #333333;
3138
+ --accent: #f59e0b;
3139
+ --accent-foreground: #000000;
3140
+ --destructive: #ef4444;
3141
+ --destructive-foreground: #ffffff;
3142
+ --border: #000000;
3143
+ --input: #737373;
3144
+ --ring: #a5b4fc;
3145
+ --chart-1: #4f46e5;
3146
+ --chart-2: #14b8a6;
3147
+ --chart-3: #f59e0b;
3148
+ --chart-4: #ec4899;
3149
+ --chart-5: #22c55e;
3150
+ --sidebar: #f7f9f3;
3151
+ --sidebar-foreground: #000000;
3152
+ --sidebar-primary: #4f46e5;
3153
+ --sidebar-primary-foreground: #ffffff;
3154
+ --sidebar-accent: #f59e0b;
3155
+ --sidebar-accent-foreground: #000000;
3156
+ --sidebar-border: #000000;
3157
+ --sidebar-ring: #a5b4fc;
3158
+ --font-sans: DM Sans, sans-serif;
3159
+ --font-serif: DM Sans, sans-serif;
3160
+ --font-mono: Space Mono, monospace;
3161
+ --radius: 1rem;
3162
+ --shadow-color: #1a1a1a;
3163
+ --shadow-opacity: 0.05;
3164
+ --shadow-blur: 0px;
3165
+ --shadow-spread: 0px;
3166
+ --shadow-offset-x: 0px;
3167
+ --shadow-offset-y: 0px;
3168
+ --letter-spacing: normal;
3169
+ --spacing: 0.25rem;
3170
+ }
3171
+
3172
+ .theme-soft-pop.dark {
3173
+ --background: #000000;
3174
+ --foreground: #ffffff;
3175
+ --card: #1a212b;
3176
+ --card-foreground: #ffffff;
3177
+ --popover: #1a212b;
3178
+ --popover-foreground: #ffffff;
3179
+ --primary: #818cf8;
3180
+ --primary-foreground: #000000;
3181
+ --secondary: #2dd4bf;
3182
+ --secondary-foreground: #000000;
3183
+ --muted: #333333;
3184
+ --muted-foreground: #cccccc;
3185
+ --accent: #fcd34d;
3186
+ --accent-foreground: #000000;
3187
+ --destructive: #f87171;
3188
+ --destructive-foreground: #000000;
3189
+ --border: #545454;
3190
+ --input: #ffffff;
3191
+ --ring: #818cf8;
3192
+ --chart-1: #818cf8;
3193
+ --chart-2: #2dd4bf;
3194
+ --chart-3: #fcd34d;
3195
+ --chart-4: #f472b6;
3196
+ --chart-5: #4ade80;
3197
+ --sidebar: #000000;
3198
+ --sidebar-foreground: #ffffff;
3199
+ --sidebar-primary: #818cf8;
3200
+ --sidebar-primary-foreground: #000000;
3201
+ --sidebar-accent: #fcd34d;
3202
+ --sidebar-accent-foreground: #000000;
3203
+ --sidebar-border: #ffffff;
3204
+ --sidebar-ring: #818cf8;
3205
+ --font-sans: DM Sans, sans-serif;
3206
+ --font-serif: DM Sans, sans-serif;
3207
+ --font-mono: Space Mono, monospace;
3208
+ --radius: 1rem;
3209
+ --shadow-color: #1a1a1a;
3210
+ --shadow-opacity: 0.05;
3211
+ --shadow-blur: 0px;
3212
+ --shadow-spread: 0px;
3213
+ --shadow-offset-x: 0px;
3214
+ --shadow-offset-y: 0px;
3215
+ --letter-spacing: normal;
3216
+ --spacing: 0.25rem;
3217
+ }
3218
+ /* solar-dusk — tweakcn "Solar Dusk" preset. Auto-generated from tweakcn defaultPresets;
3219
+ tokens kept verbatim (consumed via var()). */
3220
+ .theme-solar-dusk {
3221
+ --background: #fdfbf7;
3222
+ --foreground: #4a3b33;
3223
+ --card: #f8f4ee;
3224
+ --card-foreground: #4a3b33;
3225
+ --popover: #f8f4ee;
3226
+ --popover-foreground: #4a3b33;
3227
+ --primary: #b45309;
3228
+ --primary-foreground: #ffffff;
3229
+ --secondary: #e4c090;
3230
+ --secondary-foreground: #57534e;
3231
+ --muted: #f1e9da;
3232
+ --muted-foreground: #78716c;
3233
+ --accent: #f2daba;
3234
+ --accent-foreground: #57534e;
3235
+ --destructive: #991b1b;
3236
+ --destructive-foreground: #ffffff;
3237
+ --border: #e4d9bc;
3238
+ --input: #e4d9bc;
3239
+ --ring: #b45309;
3240
+ --chart-1: #b45309;
3241
+ --chart-2: #78716c;
3242
+ --chart-3: #a16207;
3243
+ --chart-4: #78716c;
3244
+ --chart-5: #ca8a04;
3245
+ --radius: 0.3rem;
3246
+ --sidebar: #f1e9da;
3247
+ --sidebar-foreground: #4a3b33;
3248
+ --sidebar-primary: #b45309;
3249
+ --sidebar-primary-foreground: #ffffff;
3250
+ --sidebar-accent: #a16207;
3251
+ --sidebar-accent-foreground: #ffffff;
3252
+ --sidebar-border: #e4d9bc;
3253
+ --sidebar-ring: #b45309;
3254
+ --font-sans: Oxanium, sans-serif;
3255
+ --font-serif: Merriweather, serif;
3256
+ --font-mono: Fira Code, monospace;
3257
+ --shadow-color: hsl(28 18% 25%);
3258
+ --shadow-opacity: 0.18;
3259
+ --shadow-blur: 3px;
3260
+ --shadow-spread: 0px;
3261
+ --shadow-offset-x: 0px;
3262
+ --shadow-offset-y: 2px;
3263
+ }
3264
+
3265
+ .theme-solar-dusk.dark {
3266
+ --background: #1c1917;
3267
+ --foreground: #f5f5f4;
3268
+ --card: #292524;
3269
+ --card-foreground: #f5f5f4;
3270
+ --popover: #292524;
3271
+ --popover-foreground: #f5f5f4;
3272
+ --primary: #f97316;
3273
+ --primary-foreground: #ffffff;
3274
+ --secondary: #57534e;
3275
+ --secondary-foreground: #e7e5e4;
3276
+ --muted: #201d1a;
3277
+ --muted-foreground: #a8a29e;
3278
+ --accent: #1e4252;
3279
+ --accent-foreground: #e7e5e4;
3280
+ --destructive: #dc2626;
3281
+ --destructive-foreground: #ffffff;
3282
+ --border: #44403c;
3283
+ --input: #44403c;
3284
+ --ring: #f97316;
3285
+ --chart-1: #f97316;
3286
+ --chart-2: #0ea5e9;
3287
+ --chart-3: #eab308;
3288
+ --chart-4: #a8a29e;
3289
+ --chart-5: #78716c;
3290
+ --radius: 0.3rem;
3291
+ --sidebar: #292524;
3292
+ --sidebar-foreground: #f5f5f4;
3293
+ --sidebar-primary: #f97316;
3294
+ --sidebar-primary-foreground: #ffffff;
3295
+ --sidebar-accent: #0ea5e9;
3296
+ --sidebar-accent-foreground: #0c2a4d;
3297
+ --sidebar-border: #44403c;
3298
+ --sidebar-ring: #f97316;
3299
+ --shadow-color: hsl(0 0% 5%);
3300
+ }
3301
+ /* starry-night — tweakcn "Starry Night" preset. Auto-generated from tweakcn defaultPresets;
3302
+ tokens kept verbatim (consumed via var()). */
3303
+ .theme-starry-night {
3304
+ --background: #f5f7fa;
3305
+ --foreground: #1a2238;
3306
+ --card: #e3eaf2;
3307
+ --card-foreground: #1a2238;
3308
+ --popover: #fffbe6;
3309
+ --popover-foreground: #1a2238;
3310
+ --primary: #3a5ba0;
3311
+ --primary-foreground: #fffbe6;
3312
+ --secondary: #f7c873;
3313
+ --secondary-foreground: #1a2238;
3314
+ --muted: #e5e5df;
3315
+ --muted-foreground: #3a5ba0;
3316
+ --accent: #6ea3c1;
3317
+ --accent-foreground: #fffbe6;
3318
+ --destructive: #2d1e2f;
3319
+ --destructive-foreground: #fffbe6;
3320
+ --border: #b0b8c1;
3321
+ --input: #6ea3c1;
3322
+ --ring: #f7c873;
3323
+ --chart-1: #3a5ba0;
3324
+ --chart-2: #f7c873;
3325
+ --chart-3: #6ea3c1;
3326
+ --chart-4: #b0b8c1;
3327
+ --chart-5: #2d1e2f;
3328
+ --sidebar: #e3eaf2;
3329
+ --sidebar-foreground: #1a2238;
3330
+ --sidebar-primary: #3a5ba0;
3331
+ --sidebar-primary-foreground: #fffbe6;
3332
+ --sidebar-accent: #f7c873;
3333
+ --sidebar-accent-foreground: #1a2238;
3334
+ --sidebar-border: #b0b8c1;
3335
+ --sidebar-ring: #f7c873;
3336
+ --font-sans: Libre Baskerville, serif;
3337
+ --radius: 0.5rem;
3338
+ }
3339
+
3340
+ .theme-starry-night.dark {
3341
+ --background: #181a24;
3342
+ --foreground: #e6eaf3;
3343
+ --card: #23243a;
3344
+ --card-foreground: #e6eaf3;
3345
+ --popover: #23243a;
3346
+ --popover-foreground: #ffe066;
3347
+ --primary: #3a5ba0;
3348
+ --primary-foreground: #ffe066;
3349
+ --secondary: #ffe066;
3350
+ --secondary-foreground: #23243a;
3351
+ --muted: #1d1e2f;
3352
+ --muted-foreground: #7a88a1;
3353
+ --accent: #bccdf0;
3354
+ --accent-foreground: #181a24;
3355
+ --destructive: #a04a6c;
3356
+ --destructive-foreground: #ffe066;
3357
+ --border: #2d2e3e;
3358
+ --input: #3a5ba0;
3359
+ --ring: #ffe066;
3360
+ --chart-1: #3a5ba0;
3361
+ --chart-2: #ffe066;
3362
+ --chart-3: #6ea3c1;
3363
+ --chart-4: #7a88a1;
3364
+ --chart-5: #a04a6c;
3365
+ --sidebar: #23243a;
3366
+ --sidebar-foreground: #e6eaf3;
3367
+ --sidebar-primary: #3a5ba0;
3368
+ --sidebar-primary-foreground: #ffe066;
3369
+ --sidebar-accent: #ffe066;
3370
+ --sidebar-accent-foreground: #23243a;
3371
+ --sidebar-border: #2d2e3e;
3372
+ --sidebar-ring: #ffe066;
3373
+ --radius: 0.5rem;
3374
+ }
3375
+ /* sunset-horizon — tweakcn "Sunset Horizon" preset. Auto-generated from tweakcn defaultPresets;
3376
+ tokens kept verbatim (consumed via var()). */
3377
+ .theme-sunset-horizon {
3378
+ --background: #fff9f5;
3379
+ --foreground: #3d3436;
3380
+ --card: #ffffff;
3381
+ --card-foreground: #3d3436;
3382
+ --popover: #ffffff;
3383
+ --popover-foreground: #3d3436;
3384
+ --primary: #ff7e5f;
3385
+ --primary-foreground: #ffffff;
3386
+ --secondary: #ffedea;
3387
+ --secondary-foreground: #b35340;
3388
+ --muted: #fff0eb;
3389
+ --muted-foreground: #78716c;
3390
+ --accent: #feb47b;
3391
+ --accent-foreground: #3d3436;
3392
+ --destructive: #e63946;
3393
+ --destructive-foreground: #ffffff;
3394
+ --border: #ffe0d6;
3395
+ --input: #ffe0d6;
3396
+ --ring: #ff7e5f;
3397
+ --chart-1: #ff7e5f;
3398
+ --chart-2: #feb47b;
3399
+ --chart-3: #ffcaa7;
3400
+ --chart-4: #ffad8f;
3401
+ --chart-5: #ce6a57;
3402
+ --radius: 0.625rem;
3403
+ --sidebar: #fff0eb;
3404
+ --sidebar-foreground: #3d3436;
3405
+ --sidebar-primary: #ff7e5f;
3406
+ --sidebar-primary-foreground: #ffffff;
3407
+ --sidebar-accent: #feb47b;
3408
+ --sidebar-accent-foreground: #3d3436;
3409
+ --sidebar-border: #ffe0d6;
3410
+ --sidebar-ring: #ff7e5f;
3411
+ --font-sans: Montserrat, sans-serif;
3412
+ --font-serif: Merriweather, serif;
3413
+ --font-mono: Ubuntu Mono, monospace;
3414
+ --shadow-color: hsl(0 0% 0%);
3415
+ --shadow-opacity: 0.09;
3416
+ --shadow-blur: 12px;
3417
+ --shadow-spread: -3px;
3418
+ --shadow-offset-x: 0px;
3419
+ --shadow-offset-y: 6px;
3420
+ }
3421
+
3422
+ .theme-sunset-horizon.dark {
3423
+ --background: #2a2024;
3424
+ --foreground: #f2e9e4;
3425
+ --card: #392f35;
3426
+ --card-foreground: #f2e9e4;
3427
+ --popover: #392f35;
3428
+ --popover-foreground: #f2e9e4;
3429
+ --primary: #ff7e5f;
3430
+ --primary-foreground: #ffffff;
3431
+ --secondary: #463a41;
3432
+ --secondary-foreground: #f2e9e4;
3433
+ --muted: #30272c;
3434
+ --muted-foreground: #d7c6bc;
3435
+ --accent: #feb47b;
3436
+ --accent-foreground: #2a2024;
3437
+ --destructive: #e63946;
3438
+ --destructive-foreground: #ffffff;
3439
+ --border: #463a41;
3440
+ --input: #463a41;
3441
+ --ring: #ff7e5f;
3442
+ --chart-1: #ff7e5f;
3443
+ --chart-2: #feb47b;
3444
+ --chart-3: #ffcaa7;
3445
+ --chart-4: #ffad8f;
3446
+ --chart-5: #ce6a57;
3447
+ --radius: 0.625rem;
3448
+ --sidebar: #2a2024;
3449
+ --sidebar-foreground: #f2e9e4;
3450
+ --sidebar-primary: #ff7e5f;
3451
+ --sidebar-primary-foreground: #ffffff;
3452
+ --sidebar-accent: #feb47b;
3453
+ --sidebar-accent-foreground: #2a2024;
3454
+ --sidebar-border: #463a41;
3455
+ --sidebar-ring: #ff7e5f;
3456
+ }
3457
+ /* supabase — tweakcn "supabase" preset (updated): emerald/green developer
3458
+ aesthetic. Tokens kept in source hex (consumed via var(); no conversion).
3459
+ Outfit sans falls back to the loaded Inter stack when not installed. */
3460
+ .theme-supabase {
3461
+ --card: #fcfcfc;
3462
+ --ring: #72e3ad;
3463
+ --input: #f6f6f6;
3464
+ --muted: #ededed;
3465
+ --accent: #ededed;
3466
+ --border: #dfdfdf;
3467
+ --radius: 0.5rem;
3468
+ --chart-1: #72e3ad;
3469
+ --chart-2: #3b82f6;
3470
+ --chart-3: #8b5cf6;
3471
+ --chart-4: #f59e0b;
3472
+ --chart-5: #10b981;
3473
+ --popover: #fcfcfc;
3474
+ --primary: #72e3ad;
3475
+ --sidebar: #fcfcfc;
3476
+ --font-mono: monospace;
3477
+ --font-sans: Outfit, sans-serif;
3478
+ --secondary: #fdfdfd;
3479
+ --background: #fcfcfc;
3480
+ --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
3481
+ --foreground: #171717;
3482
+ --destructive: #ca3214;
3483
+ --shadow-blur: 3px;
3484
+ --shadow-color: #000000;
3485
+ --sidebar-ring: #72e3ad;
3486
+ --shadow-spread: 0px;
3487
+ --letter-spacing: 0.025em;
3488
+ --shadow-opacity: 0.17;
3489
+ --sidebar-accent: #ededed;
3490
+ --sidebar-border: #dfdfdf;
3491
+ --card-foreground: #171717;
3492
+ --shadow-offset-x: 0px;
3493
+ --shadow-offset-y: 1px;
3494
+ --sidebar-primary: #72e3ad;
3495
+ --muted-foreground: #202020;
3496
+ --accent-foreground: #202020;
3497
+ --popover-foreground: #525252;
3498
+ --primary-foreground: #1e2723;
3499
+ --sidebar-foreground: #707070;
3500
+ --secondary-foreground: #171717;
3501
+ --destructive-foreground: #fffcfc;
3502
+ --sidebar-accent-foreground: #202020;
3503
+ --sidebar-primary-foreground: #1e2723;
3504
+ }
3505
+
3506
+ .theme-supabase.dark {
3507
+ --card: #171717;
3508
+ --ring: #4ade80;
3509
+ --input: #242424;
3510
+ --muted: #1f1f1f;
3511
+ --accent: #313131;
3512
+ --border: #292929;
3513
+ --chart-1: #4ade80;
3514
+ --chart-2: #60a5fa;
3515
+ --chart-3: #a78bfa;
3516
+ --chart-4: #fbbf24;
3517
+ --chart-5: #2dd4bf;
3518
+ --popover: #242424;
3519
+ --primary: #006239;
3520
+ --sidebar: #121212;
3521
+ --secondary: #242424;
3522
+ --background: #121212;
3523
+ --foreground: #e2e8f0;
3524
+ --destructive: #541c15;
3525
+ --sidebar-ring: #4ade80;
3526
+ --sidebar-accent: #313131;
3527
+ --sidebar-border: #292929;
3528
+ --card-foreground: #e2e8f0;
3529
+ --sidebar-primary: #006239;
3530
+ --muted-foreground: #a2a2a2;
3531
+ --accent-foreground: #fafafa;
3532
+ --popover-foreground: #a9a9a9;
3533
+ --primary-foreground: #dde8e3;
3534
+ --sidebar-foreground: #898989;
3535
+ --secondary-foreground: #fafafa;
3536
+ --destructive-foreground: #ede9e8;
3537
+ --sidebar-accent-foreground: #fafafa;
3538
+ --sidebar-primary-foreground: #dde8e3;
3539
+ }
3540
+ /* t3-chat — tweakcn "T3 Chat" preset. Auto-generated from tweakcn defaultPresets;
3541
+ tokens kept verbatim (consumed via var()). */
3542
+ .theme-t3-chat {
3543
+ --background: #faf5fa;
3544
+ --foreground: #501854;
3545
+ --card: #faf5fa;
3546
+ --card-foreground: #501854;
3547
+ --popover: #ffffff;
3548
+ --popover-foreground: #501854;
3549
+ --primary: #a84370;
3550
+ --primary-foreground: #ffffff;
3551
+ --secondary: #f1c4e6;
3552
+ --secondary-foreground: #77347c;
3553
+ --muted: #f6e5f3;
3554
+ --muted-foreground: #834588;
3555
+ --accent: #f1c4e6;
3556
+ --accent-foreground: #77347c;
3557
+ --destructive: #ab4347;
3558
+ --destructive-foreground: #ffffff;
3559
+ --border: #efbdeb;
3560
+ --input: #e7c1dc;
3561
+ --ring: #db2777;
3562
+ --chart-1: #d926a2;
3563
+ --chart-2: #6c12b9;
3564
+ --chart-3: #274754;
3565
+ --chart-4: #e8c468;
3566
+ --chart-5: #f4a462;
3567
+ --sidebar: #f3e4f6;
3568
+ --sidebar-foreground: #ac1668;
3569
+ --sidebar-primary: #454554;
3570
+ --sidebar-primary-foreground: #faf1f7;
3571
+ --sidebar-accent: #f8f8f7;
3572
+ --sidebar-accent-foreground: #454554;
3573
+ --sidebar-border: #eceae9;
3574
+ --sidebar-ring: #db2777;
3575
+ --radius: 0.5rem;
3576
+ }
3577
+
3578
+ .theme-t3-chat.dark {
3579
+ --background: #221d27;
3580
+ --foreground: #d2c4de;
3581
+ --card: #2c2632;
3582
+ --card-foreground: #dbc5d2;
3583
+ --popover: #100a0e;
3584
+ --popover-foreground: #f8f1f5;
3585
+ --primary: #a3004c;
3586
+ --primary-foreground: #efc0d8;
3587
+ --secondary: #362d3d;
3588
+ --secondary-foreground: #d4c7e1;
3589
+ --muted: #28222d;
3590
+ --muted-foreground: #c2b6cf;
3591
+ --accent: #463753;
3592
+ --accent-foreground: #f8f1f5;
3593
+ --destructive: #301015;
3594
+ --destructive-foreground: #ffffff;
3595
+ --border: #3b3237;
3596
+ --input: #3e343c;
3597
+ --ring: #db2777;
3598
+ --chart-1: #a84370;
3599
+ --chart-2: #934dcb;
3600
+ --chart-3: #e88c30;
3601
+ --chart-4: #af57db;
3602
+ --chart-5: #e23670;
3603
+ --sidebar: #181117;
3604
+ --sidebar-foreground: #e0cad6;
3605
+ --sidebar-primary: #1d4ed8;
3606
+ --sidebar-primary-foreground: #ffffff;
3607
+ --sidebar-accent: #261922;
3608
+ --sidebar-accent-foreground: #f4f4f5;
3609
+ --sidebar-border: #000000;
3610
+ --sidebar-ring: #db2777;
3611
+ }
3612
+ /* tangerine — tweakcn "Tangerine" preset. Auto-generated from tweakcn defaultPresets;
3613
+ tokens kept verbatim (consumed via var()). */
3614
+ .theme-tangerine {
3615
+ --background: #e8ebed;
3616
+ --foreground: #333333;
3617
+ --card: #ffffff;
3618
+ --card-foreground: #333333;
3619
+ --popover: #ffffff;
3620
+ --popover-foreground: #333333;
3621
+ --primary: #e05d38;
3622
+ --primary-foreground: #ffffff;
3623
+ --secondary: #f3f4f6;
3624
+ --secondary-foreground: #4b5563;
3625
+ --muted: #f9fafb;
3626
+ --muted-foreground: #6b7280;
3627
+ --accent: #d6e4f0;
3628
+ --accent-foreground: #1e3a8a;
3629
+ --destructive: #ef4444;
3630
+ --destructive-foreground: #ffffff;
3631
+ --border: #dcdfe2;
3632
+ --input: #f4f5f7;
3633
+ --ring: #e05d38;
3634
+ --chart-1: #86a7c8;
3635
+ --chart-2: #eea591;
3636
+ --chart-3: #5a7ca6;
3637
+ --chart-4: #466494;
3638
+ --chart-5: #334c82;
3639
+ --sidebar: #dddfe2;
3640
+ --sidebar-foreground: #333333;
3641
+ --sidebar-primary: #e05d38;
3642
+ --sidebar-primary-foreground: #ffffff;
3643
+ --sidebar-accent: #d6e4f0;
3644
+ --sidebar-accent-foreground: #1e3a8a;
3645
+ --sidebar-border: #e5e7eb;
3646
+ --sidebar-ring: #e05d38;
3647
+ --font-sans: Inter, sans-serif;
3648
+ --font-serif: Source Serif 4, serif;
3649
+ --font-mono: JetBrains Mono, monospace;
3650
+ --radius: 0.75rem;
3651
+ --shadow-color: hsl(0 0% 0%);
3652
+ --shadow-opacity: 0.1;
3653
+ --shadow-blur: 3px;
3654
+ --shadow-spread: 0px;
3655
+ --shadow-offset-x: 0px;
3656
+ --shadow-offset-y: 1px;
3657
+ }
3658
+
3659
+ .theme-tangerine.dark {
3660
+ --background: #1c2433;
3661
+ --foreground: #e5e5e5;
3662
+ --card: #2a3040;
3663
+ --card-foreground: #e5e5e5;
3664
+ --popover: #262b38;
3665
+ --popover-foreground: #e5e5e5;
3666
+ --primary: #e05d38;
3667
+ --primary-foreground: #ffffff;
3668
+ --secondary: #2a303e;
3669
+ --secondary-foreground: #e5e5e5;
3670
+ --muted: #2a303e;
3671
+ --muted-foreground: #a3a3a3;
3672
+ --accent: #2a3656;
3673
+ --accent-foreground: #bfdbfe;
3674
+ --destructive: #ef4444;
3675
+ --destructive-foreground: #ffffff;
3676
+ --border: #3d4354;
3677
+ --input: #3d4354;
3678
+ --ring: #e05d38;
3679
+ --chart-1: #86a7c8;
3680
+ --chart-2: #e6a08f;
3681
+ --chart-3: #5a7ca6;
3682
+ --chart-4: #466494;
3683
+ --chart-5: #334c82;
3684
+ --sidebar: #2a303f;
3685
+ --sidebar-foreground: #e5e5e5;
3686
+ --sidebar-primary: #e05d38;
3687
+ --sidebar-primary-foreground: #ffffff;
3688
+ --sidebar-accent: #2a3656;
3689
+ --sidebar-accent-foreground: #bfdbfe;
3690
+ --sidebar-border: #3d4354;
3691
+ --sidebar-ring: #e05d38;
3692
+ }
3693
+ /* twitter — tweakcn "Twitter" preset. Auto-generated from tweakcn defaultPresets;
3694
+ tokens kept verbatim (consumed via var()). */
3695
+ .theme-twitter {
3696
+ --background: #ffffff;
3697
+ --foreground: #0f1419;
3698
+ --card: #f7f8f8;
3699
+ --card-foreground: #0f1419;
3700
+ --popover: #ffffff;
3701
+ --popover-foreground: #0f1419;
3702
+ --primary: #1e9df1;
3703
+ --primary-foreground: #ffffff;
3704
+ --secondary: #0f1419;
3705
+ --secondary-foreground: #ffffff;
3706
+ --muted: #e5e5e6;
3707
+ --muted-foreground: #0f1419;
3708
+ --accent: #e3ecf6;
3709
+ --accent-foreground: #1e9df1;
3710
+ --destructive: #f4212e;
3711
+ --destructive-foreground: #ffffff;
3712
+ --border: #e1eaef;
3713
+ --input: #f7f9fa;
3714
+ --ring: #1da1f2;
3715
+ --chart-1: #1e9df1;
3716
+ --chart-2: #00b87a;
3717
+ --chart-3: #f7b928;
3718
+ --chart-4: #17bf63;
3719
+ --chart-5: #e0245e;
3720
+ --sidebar: #f7f8f8;
3721
+ --sidebar-foreground: #0f1419;
3722
+ --sidebar-primary: #1e9df1;
3723
+ --sidebar-primary-foreground: #ffffff;
3724
+ --sidebar-accent: #e3ecf6;
3725
+ --sidebar-accent-foreground: #1e9df1;
3726
+ --sidebar-border: #e1e8ed;
3727
+ --sidebar-ring: #1da1f2;
3728
+ --font-sans: Open Sans, sans-serif;
3729
+ --font-serif: Georgia, serif;
3730
+ --font-mono: Menlo, monospace;
3731
+ --radius: 1.3rem;
3732
+ --shadow-color: rgba(29, 161, 242, 0.15);
3733
+ --shadow-opacity: 0;
3734
+ --shadow-blur: 0px;
3735
+ --shadow-spread: 0px;
3736
+ --shadow-offset-x: 0px;
3737
+ --shadow-offset-y: 2px;
3738
+ }
3739
+
3740
+ .theme-twitter.dark {
3741
+ --background: #000000;
3742
+ --foreground: #e7e9ea;
3743
+ --card: #17181c;
3744
+ --card-foreground: #d9d9d9;
3745
+ --popover: #000000;
3746
+ --popover-foreground: #e7e9ea;
3747
+ --primary: #1c9cf0;
3748
+ --primary-foreground: #ffffff;
3749
+ --secondary: #f0f3f4;
3750
+ --secondary-foreground: #0f1419;
3751
+ --muted: #181818;
3752
+ --muted-foreground: #72767a;
3753
+ --accent: #061622;
3754
+ --accent-foreground: #1c9cf0;
3755
+ --destructive: #f4212e;
3756
+ --destructive-foreground: #ffffff;
3757
+ --border: #242628;
3758
+ --input: #22303c;
3759
+ --ring: #1da1f2;
3760
+ --chart-1: #1e9df1;
3761
+ --chart-2: #00b87a;
3762
+ --chart-3: #f7b928;
3763
+ --chart-4: #17bf63;
3764
+ --chart-5: #e0245e;
3765
+ --sidebar: #17181c;
3766
+ --sidebar-foreground: #d9d9d9;
3767
+ --sidebar-primary: #1da1f2;
3768
+ --sidebar-primary-foreground: #ffffff;
3769
+ --sidebar-accent: #061622;
3770
+ --sidebar-accent-foreground: #1c9cf0;
3771
+ --sidebar-border: #38444d;
3772
+ --sidebar-ring: #1da1f2;
3773
+ --shadow-color: rgba(29, 161, 242, 0.25);
3774
+ }
3775
+ /* vercel — tweakcn "vercel" preset: high-contrast neutral (pure black/white)
3776
+ with a warm amber + blue chart accent. Geist fonts fall back to the loaded
3777
+ Inter/JetBrains stacks when not installed. */
3778
+ .theme-vercel {
3779
+ --card: oklch(1 0 0);
3780
+ --ring: oklch(0 0 0);
3781
+ --input: oklch(0.94 0 0);
3782
+ --muted: oklch(0.97 0 0);
3783
+ --accent: oklch(0.94 0 0);
3784
+ --border: oklch(0.92 0 0);
3785
+ --radius: 0.5rem;
3786
+ --chart-1: oklch(0.81 0.17 75.35);
3787
+ --chart-2: oklch(0.55 0.22 264.53);
3788
+ --chart-3: oklch(0.72 0 0);
3789
+ --chart-4: oklch(0.92 0 0);
3790
+ --chart-5: oklch(0.56 0 0);
3791
+ --popover: oklch(0.99 0 0);
3792
+ --primary: oklch(0 0 0);
3793
+ --sidebar: oklch(0.99 0 0);
3794
+ --font-mono: Geist Mono, monospace;
3795
+ --font-sans: Geist, sans-serif;
3796
+ --secondary: oklch(0.94 0 0);
3797
+ --background: oklch(0.99 0 0);
3798
+ --font-serif: Georgia, serif;
3799
+ --foreground: oklch(0 0 0);
3800
+ --destructive: oklch(0.63 0.19 23.03);
3801
+ --shadow-blur: 2px;
3802
+ --shadow-color: hsl(0 0% 0%);
3803
+ --sidebar-ring: oklch(0 0 0);
3804
+ --shadow-spread: 0px;
3805
+ --shadow-opacity: 0.18;
3806
+ --sidebar-accent: oklch(0.94 0 0);
3807
+ --sidebar-border: oklch(0.94 0 0);
3808
+ --card-foreground: oklch(0 0 0);
3809
+ --shadow-offset-x: 0px;
3810
+ --shadow-offset-y: 1px;
3811
+ --sidebar-primary: oklch(0 0 0);
3812
+ --muted-foreground: oklch(0.44 0 0);
3813
+ --accent-foreground: oklch(0 0 0);
3814
+ --popover-foreground: oklch(0 0 0);
3815
+ --primary-foreground: oklch(1 0 0);
3816
+ --sidebar-foreground: oklch(0 0 0);
3817
+ --secondary-foreground: oklch(0 0 0);
3818
+ --destructive-foreground: oklch(1 0 0);
3819
+ --sidebar-accent-foreground: oklch(0 0 0);
3820
+ --sidebar-primary-foreground: oklch(1 0 0);
3821
+ }
3822
+
3823
+ .theme-vercel.dark {
3824
+ --card: oklch(0.14 0 0);
3825
+ --ring: oklch(0.72 0 0);
3826
+ --input: oklch(0.32 0 0);
3827
+ --muted: oklch(0.23 0 0);
3828
+ --accent: oklch(0.32 0 0);
3829
+ --border: oklch(0.26 0 0);
3830
+ --chart-1: oklch(0.81 0.17 75.35);
3831
+ --chart-2: oklch(0.58 0.21 260.84);
3832
+ --chart-3: oklch(0.56 0 0);
3833
+ --chart-4: oklch(0.44 0 0);
3834
+ --chart-5: oklch(0.92 0 0);
3835
+ --popover: oklch(0.18 0 0);
3836
+ --primary: oklch(1 0 0);
3837
+ --sidebar: oklch(0.18 0 0);
3838
+ --font-mono: Geist Mono, monospace;
3839
+ --font-sans: Geist, sans-serif;
3840
+ --secondary: oklch(0.25 0 0);
3841
+ --background: oklch(0 0 0);
3842
+ --font-serif: Georgia, serif;
3843
+ --foreground: oklch(1 0 0);
3844
+ --destructive: oklch(0.69 0.2 23.91);
3845
+ --sidebar-ring: oklch(0.72 0 0);
3846
+ --sidebar-accent: oklch(0.32 0 0);
3847
+ --sidebar-border: oklch(0.32 0 0);
3848
+ --card-foreground: oklch(1 0 0);
3849
+ --sidebar-primary: oklch(1 0 0);
3850
+ --muted-foreground: oklch(0.72 0 0);
3851
+ --accent-foreground: oklch(1 0 0);
3852
+ --popover-foreground: oklch(1 0 0);
3853
+ --primary-foreground: oklch(0 0 0);
3854
+ --sidebar-foreground: oklch(1 0 0);
3855
+ --secondary-foreground: oklch(1 0 0);
3856
+ --destructive-foreground: oklch(0 0 0);
3857
+ --sidebar-accent-foreground: oklch(1 0 0);
3858
+ --sidebar-primary-foreground: oklch(0 0 0);
3859
+ }
3860
+ /* vintage-paper — tweakcn "Vintage Paper" preset. Auto-generated from tweakcn defaultPresets;
3861
+ tokens kept verbatim (consumed via var()). */
3862
+ .theme-vintage-paper {
3863
+ --background: #f5f1e6;
3864
+ --foreground: #4a3f35;
3865
+ --card: #fffcf5;
3866
+ --card-foreground: #4a3f35;
3867
+ --popover: #fffcf5;
3868
+ --popover-foreground: #4a3f35;
3869
+ --primary: #a67c52;
3870
+ --primary-foreground: #ffffff;
3871
+ --secondary: #e2d8c3;
3872
+ --secondary-foreground: #5c4d3f;
3873
+ --muted: #ece5d8;
3874
+ --muted-foreground: #7d6b56;
3875
+ --accent: #d4c8aa;
3876
+ --accent-foreground: #4a3f35;
3877
+ --destructive: #b54a35;
3878
+ --destructive-foreground: #ffffff;
3879
+ --border: #dbd0ba;
3880
+ --input: #dbd0ba;
3881
+ --ring: #a67c52;
3882
+ --chart-1: #a67c52;
3883
+ --chart-2: #8d6e4c;
3884
+ --chart-3: #735a3a;
3885
+ --chart-4: #b3906f;
3886
+ --chart-5: #c0a080;
3887
+ --radius: 0.25rem;
3888
+ --sidebar: #ece5d8;
3889
+ --sidebar-foreground: #4a3f35;
3890
+ --sidebar-primary: #a67c52;
3891
+ --sidebar-primary-foreground: #ffffff;
3892
+ --sidebar-accent: #d4c8aa;
3893
+ --sidebar-accent-foreground: #4a3f35;
3894
+ --sidebar-border: #dbd0ba;
3895
+ --sidebar-ring: #a67c52;
3896
+ --font-sans: Libre Baskerville, serif;
3897
+ --font-serif: Lora, serif;
3898
+ --font-mono: IBM Plex Mono, monospace;
3899
+ --shadow-color: hsl(28 13% 20%);
3900
+ --shadow-opacity: 0.12;
3901
+ --shadow-blur: 5px;
3902
+ --shadow-spread: 0px;
3903
+ --shadow-offset-x: 2px;
3904
+ --shadow-offset-y: 3px;
3905
+ }
3906
+
3907
+ .theme-vintage-paper.dark {
3908
+ --background: #2d2621;
3909
+ --foreground: #ece5d8;
3910
+ --card: #3a322c;
3911
+ --card-foreground: #ece5d8;
3912
+ --popover: #3a322c;
3913
+ --popover-foreground: #ece5d8;
3914
+ --primary: #c0a080;
3915
+ --primary-foreground: #2d2621;
3916
+ --secondary: #4a4039;
3917
+ --secondary-foreground: #ece5d8;
3918
+ --muted: #312b26;
3919
+ --muted-foreground: #c5bcac;
3920
+ --accent: #59493e;
3921
+ --accent-foreground: #ece5d8;
3922
+ --destructive: #b54a35;
3923
+ --destructive-foreground: #ffffff;
3924
+ --border: #4a4039;
3925
+ --input: #4a4039;
3926
+ --ring: #c0a080;
3927
+ --chart-1: #c0a080;
3928
+ --chart-2: #b3906f;
3929
+ --chart-3: #a67c52;
3930
+ --chart-4: #8d6e4c;
3931
+ --chart-5: #735a3a;
3932
+ --radius: 0.25rem;
3933
+ --sidebar: #2d2621;
3934
+ --sidebar-foreground: #ece5d8;
3935
+ --sidebar-primary: #c0a080;
3936
+ --sidebar-primary-foreground: #2d2621;
3937
+ --sidebar-accent: #59493e;
3938
+ --sidebar-accent-foreground: #ece5d8;
3939
+ --sidebar-border: #4a4039;
3940
+ --sidebar-ring: #c0a080;
3941
+ }
3942
+ /* violet-bloom — tweakcn "Violet Bloom" preset. Auto-generated from tweakcn defaultPresets;
3943
+ tokens kept verbatim (consumed via var()). */
3944
+ .theme-violet-bloom {
3945
+ --background: #fdfdfd;
3946
+ --foreground: #000000;
3947
+ --card: #fdfdfd;
3948
+ --card-foreground: #000000;
3949
+ --popover: #fcfcfc;
3950
+ --popover-foreground: #000000;
3951
+ --primary: #7033ff;
3952
+ --primary-foreground: #ffffff;
3953
+ --secondary: #edf0f4;
3954
+ --secondary-foreground: #080808;
3955
+ --muted: #f5f5f5;
3956
+ --muted-foreground: #525252;
3957
+ --accent: #e2ebff;
3958
+ --accent-foreground: #1e69dc;
3959
+ --destructive: #e54b4f;
3960
+ --destructive-foreground: #ffffff;
3961
+ --border: #e7e7ee;
3962
+ --input: #ebebeb;
3963
+ --ring: #000000;
3964
+ --chart-1: #4ac885;
3965
+ --chart-2: #7033ff;
3966
+ --chart-3: #fd822b;
3967
+ --chart-4: #3276e4;
3968
+ --chart-5: #747474;
3969
+ --sidebar: #f5f8fb;
3970
+ --sidebar-foreground: #000000;
3971
+ --sidebar-primary: #000000;
3972
+ --sidebar-primary-foreground: #ffffff;
3973
+ --sidebar-accent: #ebebeb;
3974
+ --sidebar-accent-foreground: #000000;
3975
+ --sidebar-border: #ebebeb;
3976
+ --sidebar-ring: #000000;
3977
+ --font-sans: Plus Jakarta Sans, sans-serif;
3978
+ --font-serif: Lora, serif;
3979
+ --font-mono: IBM Plex Mono, monospace;
3980
+ --radius: 1.4rem;
3981
+ --shadow-color: hsl(0 0% 0%);
3982
+ --shadow-opacity: 0.16;
3983
+ --shadow-blur: 3px;
3984
+ --shadow-spread: 0px;
3985
+ --shadow-offset-x: 0px;
3986
+ --shadow-offset-y: 2px;
3987
+ --letter-spacing: -0.025em;
3988
+ --spacing: 0.27rem;
3989
+ }
3990
+
3991
+ .theme-violet-bloom.dark {
3992
+ --background: #1a1b1e;
3993
+ --foreground: #f0f0f0;
3994
+ --card: #222327;
3995
+ --card-foreground: #f0f0f0;
3996
+ --popover: #222327;
3997
+ --popover-foreground: #f0f0f0;
3998
+ --primary: #8c5cff;
3999
+ --primary-foreground: #ffffff;
4000
+ --secondary: #2a2c33;
4001
+ --secondary-foreground: #f0f0f0;
4002
+ --muted: #2a2c33;
4003
+ --muted-foreground: #a0a0a0;
4004
+ --accent: #1e293b;
4005
+ --accent-foreground: #79c0ff;
4006
+ --destructive: #f87171;
4007
+ --destructive-foreground: #ffffff;
4008
+ --border: #33353a;
4009
+ --input: #33353a;
4010
+ --ring: #8c5cff;
4011
+ --chart-1: #4ade80;
4012
+ --chart-2: #8c5cff;
4013
+ --chart-3: #fca5a5;
4014
+ --chart-4: #5993f4;
4015
+ --chart-5: #a0a0a0;
4016
+ --sidebar: #161618;
4017
+ --sidebar-foreground: #f0f0f0;
4018
+ --sidebar-primary: #8c5cff;
4019
+ --sidebar-primary-foreground: #ffffff;
4020
+ --sidebar-accent: #2a2c33;
4021
+ --sidebar-accent-foreground: #8c5cff;
4022
+ --sidebar-border: #33353a;
4023
+ --sidebar-ring: #8c5cff;
4024
+ --font-sans: Plus Jakarta Sans, sans-serif;
4025
+ --font-serif: Lora, serif;
4026
+ --font-mono: IBM Plex Mono, monospace;
4027
+ --radius: 1.4rem;
4028
+ --shadow-color: hsl(0 0% 0%);
4029
+ --shadow-opacity: 0.16;
4030
+ --shadow-blur: 3px;
4031
+ --shadow-spread: 0px;
4032
+ --shadow-offset-x: 0px;
4033
+ --shadow-offset-y: 2px;
4034
+ --letter-spacing: -0.025em;
4035
+ --spacing: 0.27rem;
4036
+ }
4037
+ /* vitepress — VitePress default theme (as at cloudvoyant.github.io/codevoyant).
4038
+ Exact `--vp-c-*` mapping: indigo brand (#3451b2 light / #a8b1ff dark), white/
4039
+ #1b1b1f backgrounds, cool-slate text, Inter throughout. Serif headings: NO. */
4040
+ .theme-vitepress {
4041
+ --background: oklch(1 0 0); /* #ffffff */
4042
+ --foreground: oklch(0.31 0.012 268); /* #3c3c43 text-1 */
4043
+ --card: oklch(0.972 0.001 260); /* soft bg-soft #f6f6f7 so cards read as panels */
4044
+ --card-foreground: oklch(0.31 0.012 268);
4045
+ --popover: oklch(1 0 0);
4046
+ --popover-foreground: oklch(0.31 0.012 268);
4047
+ --primary: oklch(0.45 0.16 268); /* indigo #3451b2 */
4048
+ --primary-foreground: oklch(1 0 0);
4049
+ --secondary: oklch(0.972 0.001 260); /* bg-alt #f6f6f7 */
4050
+ --secondary-foreground: oklch(0.31 0.012 268);
4051
+ --muted: oklch(0.972 0.001 260);
4052
+ --muted-foreground: oklch(0.49 0.006 268); /* text-2 #67676c */
4053
+ --accent: oklch(0.972 0.001 260);
4054
+ --accent-foreground: oklch(0.45 0.16 268);
4055
+ --destructive: oklch(0.577 0.245 27.325);
4056
+ --destructive-foreground: oklch(1 0 0);
4057
+ --border: oklch(0.9 0.002 268); /* subtle divider #e2e2e3 (borders read soft/hidden) */
4058
+ --input: oklch(0.9 0.002 268);
4059
+ --ring: oklch(0.45 0.16 268);
4060
+ --sidebar: oklch(0.972 0.001 260); /* bg-alt */
4061
+ --sidebar-foreground: oklch(0.31 0.012 268);
4062
+ --sidebar-accent: oklch(0.94 0.01 268);
4063
+ --sidebar-accent-foreground: oklch(0.45 0.16 268);
4064
+ --radius: 0.5rem;
4065
+ --font-sans:
4066
+ 'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',
4067
+ sans-serif;
4068
+ --font-serif: Georgia, Cambria, 'Times New Roman', serif;
4069
+ --font-mono: ui-monospace, 'SFMono-Regular', Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
4070
+ }
4071
+
4072
+ .theme-vitepress.dark {
4073
+ --background: oklch(0.2 0.005 286); /* #1b1b1f */
4074
+ --foreground: oklch(0.89 0.008 95); /* #dfdfd6 text-1 (warm off-white) */
4075
+ --card: oklch(0.24 0.005 286); /* bg-elv #202127 */
4076
+ --card-foreground: oklch(0.89 0.008 95);
4077
+ --popover: oklch(0.24 0.005 286);
4078
+ --popover-foreground: oklch(0.89 0.008 95);
4079
+ --primary: oklch(0.77 0.11 285); /* brand #a8b1ff */
4080
+ --primary-foreground: oklch(0.2 0.005 286);
4081
+ --secondary: oklch(0.19 0.004 286); /* bg-alt #161618 */
4082
+ --secondary-foreground: oklch(0.89 0.008 95);
4083
+ --muted: oklch(0.24 0.005 286);
4084
+ --muted-foreground: oklch(0.66 0.006 286); /* text-2 #98989f */
4085
+ --accent: oklch(0.24 0.005 286);
4086
+ --accent-foreground: oklch(0.77 0.11 285);
4087
+ --destructive: oklch(0.704 0.191 22.216);
4088
+ --destructive-foreground: oklch(0.985 0 0);
4089
+ --border: oklch(0.35 0.005 286); /* border #3c3f44 */
4090
+ --input: oklch(0.31 0.004 286); /* divider #2e2e32 */
4091
+ --ring: oklch(0.77 0.11 285);
4092
+ --sidebar: oklch(0.19 0.004 286); /* bg-alt */
4093
+ --sidebar-foreground: oklch(0.89 0.008 95);
4094
+ --sidebar-accent: oklch(0.24 0.005 286);
4095
+ --sidebar-accent-foreground: oklch(0.77 0.11 285);
4096
+ }
4097
+ /* vortex-ui — brand theme based on anyscale: white surface, saturated logo-purple
4098
+ primary/accent (deepest logo purple #0700f3), cool slate text. Dark mode
4099
+ carries a subtle purple tinge in the surface tones. */
4100
+ .theme-vortex-ui {
4101
+ --radius: 0.5rem;
4102
+ --background: oklch(1 0 0);
4103
+ --foreground: oklch(0.22 0.02 270);
4104
+ --muted: oklch(0.93 0.008 278);
4105
+ --muted-foreground: oklch(0.5 0.03 275);
4106
+ --popover: oklch(0.985 0.006 280);
4107
+ --popover-foreground: oklch(0.22 0.02 270);
4108
+ --card: oklch(0.985 0.006 280);
4109
+ --card-foreground: oklch(0.22 0.02 270);
4110
+ --border: oklch(0.92 0.014 276);
4111
+ --input: oklch(0.92 0.014 276);
4112
+ --primary: oklch(0.5 0.3 265);
4113
+ --primary-foreground: oklch(1 0 180);
4114
+ --secondary: oklch(0.92 0.01 278);
4115
+ --secondary-foreground: oklch(0.42 0.05 274);
4116
+ --accent: oklch(0.9 0.035 274);
4117
+ --accent-foreground: oklch(0.42 0.29 264);
4118
+ --destructive: oklch(0.63 0.256 29.629);
4119
+ --destructive-foreground: oklch(1 0 180);
4120
+ --ring: oklch(0.5 0.3 265);
4121
+ --chart-1: oklch(0.5 0.3 265);
4122
+ --chart-2: oklch(0.92 0.01 278);
4123
+ --chart-3: oklch(0.9 0.035 274);
4124
+ --chart-4: oklch(0.94 0.008 276.055);
4125
+ --chart-5: oklch(0.565 0.244 267.612);
4126
+ --sidebar: oklch(0.985 0.006 280);
4127
+ --sidebar-foreground: oklch(0.22 0.02 270);
4128
+ --sidebar-primary: oklch(0.5 0.3 265);
4129
+ --sidebar-primary-foreground: oklch(1 0 180);
4130
+ --sidebar-accent: oklch(0.9 0.035 274);
4131
+ --sidebar-accent-foreground: oklch(0.42 0.29 264);
4132
+ --sidebar-border: oklch(0.92 0.014 276);
4133
+ --sidebar-ring: oklch(0.5 0.3 265);
4134
+ /* Match code-block backgrounds to the surface tone instead of the gray fallback. */
4135
+ --shiki-light-bg: oklch(0.985 0.006 280);
4136
+ --shiki-dark-bg: oklch(0.24 0.055 274);
4137
+ /* Un-shadowed aliases used by the code-block override (Astro's Shiki inline
4138
+ vars set on the element would otherwise win). */
4139
+ --vortex-ui-shiki-light-bg: oklch(0.985 0.006 280);
4140
+ --vortex-ui-shiki-dark-bg: oklch(0.24 0.055 274);
4141
+ }
4142
+
4143
+ .theme-vortex-ui.dark {
4144
+ --radius: 0.5rem;
4145
+ --background: oklch(0.18 0.054 270.4);
4146
+ --foreground: oklch(0.955 0.02 278);
4147
+ --muted: oklch(0.25 0.05 271);
4148
+ --muted-foreground: oklch(0.74 0.045 275);
4149
+ --popover: oklch(0.21 0.05 270.4);
4150
+ --popover-foreground: oklch(0.955 0.02 278);
4151
+ --card: oklch(0.21 0.05 270.4);
4152
+ --card-foreground: oklch(0.955 0.02 278);
4153
+ --border: oklch(0.31 0.065 272);
4154
+ --input: oklch(0.31 0.065 272);
4155
+ --primary: oklch(0.68 0.27 270);
4156
+ --primary-foreground: oklch(1 0 180);
4157
+ --secondary: oklch(0.25 0.045 271);
4158
+ --secondary-foreground: oklch(0.84 0.05 275);
4159
+ --accent: oklch(0.28 0.07 277);
4160
+ --accent-foreground: oklch(0.9 0.06 274);
4161
+ --destructive: oklch(0.62 0.232 29.041);
4162
+ --destructive-foreground: oklch(1 0 180);
4163
+ --ring: oklch(0.68 0.27 270);
4164
+ --chart-1: oklch(0.68 0.27 270);
4165
+ --chart-2: oklch(0.25 0.045 271);
4166
+ --chart-3: oklch(0.28 0.07 277);
4167
+ --chart-4: oklch(0.217 0.013 275.322);
4168
+ --chart-5: oklch(0.565 0.244 267.612);
4169
+ --sidebar: oklch(0.21 0.05 270.4);
4170
+ --sidebar-foreground: oklch(0.955 0.02 278);
4171
+ --sidebar-primary: oklch(0.68 0.27 270);
4172
+ --sidebar-primary-foreground: oklch(1 0 180);
4173
+ --sidebar-accent: oklch(0.28 0.07 277);
4174
+ --sidebar-accent-foreground: oklch(0.9 0.06 274);
4175
+ --sidebar-border: oklch(0.31 0.065 272);
4176
+ --sidebar-ring: oklch(0.68 0.27 270);
4177
+ /* Match code-block backgrounds to the surface tone instead of the gray fallback. */
4178
+ --shiki-dark-bg: oklch(0.24 0.055 274);
4179
+ --shiki-light-bg: oklch(0.98 0.012 280);
4180
+ /* Un-shadowed aliases used by the code-block override (Astro's Shiki inline
4181
+ vars set on the element would otherwise win). */
4182
+ --vortex-ui-shiki-dark-bg: oklch(0.24 0.055 274);
4183
+ --vortex-ui-shiki-light-bg: oklch(0.985 0.006 280);
4184
+ }