@motor-cms/ui-admin 1.0.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +77 -0
  2. package/app/components/form/inputs/CategoryTreeInput.vue +154 -0
  3. package/app/components/form/inputs/CategoryTreePicker.vue +355 -0
  4. package/app/components/form/inputs/NestedDraggable.vue +217 -0
  5. package/app/components/form/inputs/QuicklinksInput.vue +186 -0
  6. package/app/lang/de/motor-admin/CLAUDE.md +21 -0
  7. package/app/lang/de/motor-admin/ai_system_prompts.json +12 -0
  8. package/app/lang/de/motor-admin/categories.json +12 -0
  9. package/app/lang/de/motor-admin/category_trees.json +14 -0
  10. package/app/lang/de/motor-admin/clients.json +26 -0
  11. package/app/lang/de/motor-admin/config_variables.json +14 -0
  12. package/app/lang/de/motor-admin/domains.json +19 -0
  13. package/app/lang/de/motor-admin/email_templates.json +38 -0
  14. package/app/lang/de/motor-admin/global.json +5 -0
  15. package/app/lang/de/motor-admin/languages.json +16 -0
  16. package/app/lang/de/motor-admin/permissions.json +14 -0
  17. package/app/lang/de/motor-admin/roles.json +15 -0
  18. package/app/lang/de/motor-admin/users.json +22 -0
  19. package/app/lang/en/motor-admin/CLAUDE.md +7 -0
  20. package/app/lang/en/motor-admin/ai_system_prompts.json +12 -0
  21. package/app/lang/en/motor-admin/categories.json +12 -0
  22. package/app/lang/en/motor-admin/category_trees.json +14 -0
  23. package/app/lang/en/motor-admin/clients.json +26 -0
  24. package/app/lang/en/motor-admin/config_variables.json +14 -0
  25. package/app/lang/en/motor-admin/domains.json +18 -0
  26. package/app/lang/en/motor-admin/email_templates.json +33 -0
  27. package/app/lang/en/motor-admin/global.json +5 -0
  28. package/app/lang/en/motor-admin/languages.json +16 -0
  29. package/app/lang/en/motor-admin/permissions.json +14 -0
  30. package/app/lang/en/motor-admin/roles.json +15 -0
  31. package/app/lang/en/motor-admin/users.json +22 -0
  32. package/app/pages/dashboard.vue +5 -0
  33. package/app/pages/index.vue +39 -0
  34. package/app/pages/login.vue +85 -0
  35. package/app/pages/motor-admin/ai-system-prompts/CLAUDE.md +7 -0
  36. package/app/pages/motor-admin/ai-system-prompts/[id]/edit.vue +48 -0
  37. package/app/pages/motor-admin/ai-system-prompts/create.vue +40 -0
  38. package/app/pages/motor-admin/ai-system-prompts/index.vue +68 -0
  39. package/app/pages/motor-admin/category-trees/CLAUDE.md +7 -0
  40. package/app/pages/motor-admin/category-trees/[id]/CLAUDE.md +7 -0
  41. package/app/pages/motor-admin/category-trees/[id]/categories/[categoryId]/edit.vue +73 -0
  42. package/app/pages/motor-admin/category-trees/[id]/categories/create.vue +64 -0
  43. package/app/pages/motor-admin/category-trees/[id]/edit.vue +45 -0
  44. package/app/pages/motor-admin/category-trees/[id]/index.vue +81 -0
  45. package/app/pages/motor-admin/category-trees/create.vue +37 -0
  46. package/app/pages/motor-admin/category-trees/index.vue +54 -0
  47. package/app/pages/motor-admin/clients/CLAUDE.md +11 -0
  48. package/app/pages/motor-admin/clients/[id]/CLAUDE.md +11 -0
  49. package/app/pages/motor-admin/clients/[id]/edit.vue +45 -0
  50. package/app/pages/motor-admin/clients/create.vue +37 -0
  51. package/app/pages/motor-admin/clients/index.vue +46 -0
  52. package/app/pages/motor-admin/config-variables/CLAUDE.md +11 -0
  53. package/app/pages/motor-admin/config-variables/[id]/edit.vue +44 -0
  54. package/app/pages/motor-admin/config-variables/create.vue +36 -0
  55. package/app/pages/motor-admin/config-variables/index.vue +66 -0
  56. package/app/pages/motor-admin/domains/CLAUDE.md +11 -0
  57. package/app/pages/motor-admin/domains/[id]/edit.vue +54 -0
  58. package/app/pages/motor-admin/domains/create.vue +46 -0
  59. package/app/pages/motor-admin/domains/index.vue +98 -0
  60. package/app/pages/motor-admin/email-templates/CLAUDE.md +12 -0
  61. package/app/pages/motor-admin/email-templates/[id]/CLAUDE.md +7 -0
  62. package/app/pages/motor-admin/email-templates/[id]/edit.vue +56 -0
  63. package/app/pages/motor-admin/email-templates/create.vue +48 -0
  64. package/app/pages/motor-admin/email-templates/index.vue +67 -0
  65. package/app/pages/motor-admin/index.vue +12 -0
  66. package/app/pages/motor-admin/languages/CLAUDE.md +7 -0
  67. package/app/pages/motor-admin/languages/[id]/edit.vue +44 -0
  68. package/app/pages/motor-admin/languages/create.vue +36 -0
  69. package/app/pages/motor-admin/languages/index.vue +44 -0
  70. package/app/pages/motor-admin/permission-groups/CLAUDE.md +14 -0
  71. package/app/pages/motor-admin/permission-groups/[id]/CLAUDE.md +11 -0
  72. package/app/pages/motor-admin/permission-groups/[id]/edit.vue +49 -0
  73. package/app/pages/motor-admin/permission-groups/create.vue +41 -0
  74. package/app/pages/motor-admin/permission-groups/index.vue +43 -0
  75. package/app/pages/motor-admin/roles/CLAUDE.md +7 -0
  76. package/app/pages/motor-admin/roles/[id]/edit.vue +47 -0
  77. package/app/pages/motor-admin/roles/create.vue +40 -0
  78. package/app/pages/motor-admin/roles/index.vue +45 -0
  79. package/app/pages/motor-admin/theme-preview/CLAUDE.md +7 -0
  80. package/app/pages/motor-admin/theme-preview/index.vue +4801 -0
  81. package/app/pages/motor-admin/theme-preview/themes/CLAUDE.md +11 -0
  82. package/app/pages/motor-admin/theme-preview/themes/asymmetric-brutalist.md +381 -0
  83. package/app/pages/motor-admin/theme-preview/themes/bold-modern.md +231 -0
  84. package/app/pages/motor-admin/theme-preview/themes/geometric-minimal.md +778 -0
  85. package/app/pages/motor-admin/theme-preview/themes/gradient-flow.md +1057 -0
  86. package/app/pages/motor-admin/theme-preview/themes/liquid-glass.md +823 -0
  87. package/app/pages/motor-admin/theme-preview/themes/neon-amber.md +1223 -0
  88. package/app/pages/motor-admin/theme-preview/themes/neon-terminal.md +779 -0
  89. package/app/pages/motor-admin/theme-preview/themes/neon-violet.md +1134 -0
  90. package/app/pages/motor-admin/theme-preview/themes/professional-clean.md +232 -0
  91. package/app/pages/motor-admin/theme-preview/themes/refined-brutalist.md +462 -0
  92. package/app/pages/motor-admin/theme-preview/themes/wild-card.md +263 -0
  93. package/app/pages/motor-admin/users/CLAUDE.md +17 -0
  94. package/app/pages/motor-admin/users/[id]/CLAUDE.md +11 -0
  95. package/app/pages/motor-admin/users/[id]/edit.vue +83 -0
  96. package/app/pages/motor-admin/users/create.vue +40 -0
  97. package/app/pages/motor-admin/users/index.vue +66 -0
  98. package/app/pages/profile.vue +363 -0
  99. package/app/pages/search.vue +91 -0
  100. package/app/types/generated/form-meta.ts +258 -0
  101. package/app/types/generated/grid-meta.ts +172 -0
  102. package/nuxt.config.ts +1 -0
  103. package/package.json +26 -0
@@ -0,0 +1,4801 @@
1
+ <script setup lang="ts">
2
+ definePageMeta({
3
+ layout: 'default',
4
+ permission: 'administration.read'
5
+ })
6
+
7
+ const { clientName } = useRuntimeConfig().public
8
+
9
+ type ThemeKey = 'professional' | 'bold' | 'brutalist' | 'neon' | 'geometric' | 'refined' | 'neonAmber' | 'neonViolet' | 'gradient' | 'glass'
10
+ type GlassBgKey = 'mesh' | 'aurora' | 'sunset' | 'ocean' | 'cosmic' | 'abstract' | 'energis'
11
+
12
+ const activeTheme = ref<ThemeKey>('professional')
13
+ const darkPreview = ref(false)
14
+ const glassBg = ref<GlassBgKey>('mesh')
15
+
16
+ const glassBgOptions: { key: GlassBgKey, label: string, preview: string }[] = [
17
+ { key: 'mesh', label: 'Mesh', preview: 'linear-gradient(135deg, #EEF0F5 0%, #dde0e8 50%, #EEF0F5 100%)' },
18
+ { key: 'aurora', label: 'Aurora', preview: 'linear-gradient(135deg, #0b3d2e 0%, #1a5276 30%, #6c3483 60%, #1a8a5c 100%)' },
19
+ { key: 'sunset', label: 'Sunset', preview: 'linear-gradient(135deg, #ff6b35 0%, #d63384 40%, #7b2d8e 70%, #4a1a6b 100%)' },
20
+ { key: 'ocean', label: 'Ocean', preview: 'linear-gradient(135deg, #0c2340 0%, #0d6986 40%, #1a9ca0 70%, #0c2340 100%)' },
21
+ { key: 'cosmic', label: 'Cosmic', preview: 'linear-gradient(135deg, #0f0c29 0%, #302b63 40%, #24243e 70%, #0f0c29 100%)' },
22
+ { key: 'abstract', label: 'Abstract', preview: 'linear-gradient(135deg, #d62828 0%, #f5b700 25%, #003da5 50%, #d62828 75%, #f5b700 100%)' },
23
+ { key: 'energis', label: 'Energis Orange', preview: 'linear-gradient(135deg, #F9C97C 0%, #F2A65A 35%, #E8895C 65%, #F9C97C 100%)' }
24
+ ]
25
+
26
+ const themeGroups = [
27
+ {
28
+ label: 'Clean',
29
+ themes: [
30
+ { key: 'professional' as const, label: 'Professional & Clean', icon: 'i-lucide-briefcase' },
31
+ { key: 'bold' as const, label: 'Bold & Modern', icon: 'i-lucide-zap' }
32
+ ]
33
+ },
34
+ {
35
+ label: 'Brutalist',
36
+ themes: [
37
+ { key: 'brutalist' as const, label: 'Asymmetric Brutalist', icon: 'i-lucide-square' },
38
+ { key: 'refined' as const, label: 'Refined Brutalist', icon: 'i-lucide-leaf' }
39
+ ]
40
+ },
41
+ {
42
+ label: 'Terminal',
43
+ themes: [
44
+ { key: 'neon' as const, label: 'Neon Cyan', icon: 'i-lucide-terminal' },
45
+ { key: 'neonAmber' as const, label: 'Neon Amber', icon: 'i-lucide-flame' },
46
+ { key: 'neonViolet' as const, label: 'Neon Violet', icon: 'i-lucide-sparkles' }
47
+ ]
48
+ },
49
+ {
50
+ label: 'Geometric',
51
+ themes: [
52
+ { key: 'geometric' as const, label: 'Geometric Minimal', icon: 'i-lucide-circle' }
53
+ ]
54
+ },
55
+ {
56
+ label: 'Special',
57
+ themes: [
58
+ { key: 'gradient' as const, label: 'Gradient Flow', icon: 'i-lucide-waves' },
59
+ { key: 'glass' as const, label: 'Liquid Glass', icon: 'i-lucide-gem' }
60
+ ]
61
+ }
62
+ ]
63
+
64
+ type ThemeItem = { key: ThemeKey, label: string, icon: string }
65
+ const themes: ThemeItem[] = []
66
+ for (const group of themeGroups) {
67
+ for (const t of group.themes) {
68
+ themes.push({ key: t.key, label: t.label, icon: t.icon })
69
+ }
70
+ }
71
+
72
+ // Color palettes for swatches
73
+ interface ColorSwatch {
74
+ name: string
75
+ hex: string
76
+ }
77
+
78
+ interface ThemePalette {
79
+ primary: ColorSwatch[]
80
+ semantic: ColorSwatch[]
81
+ neutral?: ColorSwatch[]
82
+ accent?: ColorSwatch[]
83
+ secondary?: ColorSwatch[]
84
+ }
85
+
86
+ const palettes: Record<ThemeKey, ThemePalette> = {
87
+ professional: {
88
+ primary: [
89
+ { name: 'Indigo 50', hex: '#eef2ff' },
90
+ { name: 'Indigo 100', hex: '#e0e7ff' },
91
+ { name: 'Indigo 200', hex: '#c7d2fe' },
92
+ { name: 'Indigo 300', hex: '#a5b4fc' },
93
+ { name: 'Indigo 400', hex: '#818cf8' },
94
+ { name: 'Indigo 500', hex: '#6366f1' },
95
+ { name: 'Indigo 600', hex: '#4f46e5' },
96
+ { name: 'Indigo 700', hex: '#4338ca' },
97
+ { name: 'Indigo 800', hex: '#3730a3' },
98
+ { name: 'Indigo 900', hex: '#312e81' }
99
+ ],
100
+ neutral: [
101
+ { name: 'Slate 50', hex: '#f8fafc' },
102
+ { name: 'Slate 100', hex: '#f1f5f9' },
103
+ { name: 'Slate 200', hex: '#e2e8f0' },
104
+ { name: 'Slate 400', hex: '#94a3b8' },
105
+ { name: 'Slate 600', hex: '#475569' },
106
+ { name: 'Slate 800', hex: '#1e293b' },
107
+ { name: 'Slate 900', hex: '#0f172a' }
108
+ ],
109
+ semantic: [
110
+ { name: 'Success', hex: '#10b981' },
111
+ { name: 'Warning', hex: '#f59e0b' },
112
+ { name: 'Error', hex: '#ef4444' },
113
+ { name: 'Info', hex: '#0ea5e9' }
114
+ ]
115
+ },
116
+ bold: {
117
+ primary: [
118
+ { name: 'Violet 50', hex: '#f5f3ff' },
119
+ { name: 'Violet 100', hex: '#ede9fe' },
120
+ { name: 'Violet 200', hex: '#ddd6fe' },
121
+ { name: 'Violet 300', hex: '#c4b5fd' },
122
+ { name: 'Violet 400', hex: '#a78bfa' },
123
+ { name: 'Violet 500', hex: '#8b5cf6' },
124
+ { name: 'Violet 600', hex: '#7c3aed' },
125
+ { name: 'Violet 700', hex: '#6d28d9' },
126
+ { name: 'Violet 800', hex: '#5b21b6' },
127
+ { name: 'Violet 900', hex: '#4c1d95' }
128
+ ],
129
+ neutral: [
130
+ { name: 'Slate 50', hex: '#f8fafc' },
131
+ { name: 'Slate 100', hex: '#f1f5f9' },
132
+ { name: 'Slate 200', hex: '#e2e8f0' },
133
+ { name: 'Slate 400', hex: '#94a3b8' },
134
+ { name: 'Slate 700', hex: '#334155' },
135
+ { name: 'Slate 900', hex: '#0f172a' },
136
+ { name: 'Slate 950', hex: '#020617' }
137
+ ],
138
+ accent: [
139
+ { name: 'Amber 300', hex: '#fcd34d' },
140
+ { name: 'Amber 400', hex: '#fbbf24' },
141
+ { name: 'Amber 500', hex: '#f59e0b' },
142
+ { name: 'Amber 600', hex: '#d97706' },
143
+ { name: 'Amber 700', hex: '#b45309' }
144
+ ],
145
+ semantic: [
146
+ { name: 'Success', hex: '#10b981' },
147
+ { name: 'Warning', hex: '#f59e0b' },
148
+ { name: 'Error', hex: '#f43f5e' },
149
+ { name: 'Info', hex: '#a78bfa' }
150
+ ]
151
+ },
152
+ brutalist: {
153
+ primary: [
154
+ { name: 'Black', hex: '#09090b' },
155
+ { name: 'White', hex: '#fafafa' },
156
+ { name: 'Warm White', hex: '#fafaf9' },
157
+ { name: 'Off-White', hex: '#f5f5f4' },
158
+ { name: 'Border Gray', hex: '#d6d3d1' }
159
+ ],
160
+ accent: [
161
+ { name: 'Lime 300', hex: '#bef264' },
162
+ { name: 'Lime 400', hex: '#a3e635' },
163
+ { name: 'Lime 500', hex: '#84cc16' },
164
+ { name: 'Lime 600', hex: '#65a30d' }
165
+ ],
166
+ secondary: [
167
+ { name: 'Pink 400', hex: '#f472b6' },
168
+ { name: 'Pink 500', hex: '#ec4899' },
169
+ { name: 'Pink 600', hex: '#db2777' }
170
+ ],
171
+ semantic: [
172
+ { name: 'Success', hex: '#a3e635' },
173
+ { name: 'Warning', hex: '#fbbf24' },
174
+ { name: 'Error', hex: '#ec4899' },
175
+ { name: 'Info', hex: '#38bdf8' }
176
+ ]
177
+ },
178
+ neon: {
179
+ primary: [
180
+ { name: 'Void', hex: '#07080A' },
181
+ { name: 'Surface 0', hex: '#0D0F14' },
182
+ { name: 'Surface 1', hex: '#13161D' },
183
+ { name: 'Surface 2', hex: '#1A1E27' },
184
+ { name: 'Surface 3', hex: '#242832' }
185
+ ],
186
+ accent: [
187
+ { name: 'Cyan', hex: '#00FFEE' },
188
+ { name: 'Cyan Muted', hex: '#0ABDC6' },
189
+ { name: 'Magenta', hex: '#FF00AA' },
190
+ { name: 'Green', hex: '#39FF14' },
191
+ { name: 'Yellow', hex: '#FFE600' },
192
+ { name: 'Purple', hex: '#BD00FF' }
193
+ ],
194
+ semantic: [
195
+ { name: 'Success', hex: '#39FF14' },
196
+ { name: 'Warning', hex: '#FFE600' },
197
+ { name: 'Error', hex: '#FF00AA' },
198
+ { name: 'Info', hex: '#BD00FF' }
199
+ ]
200
+ },
201
+ geometric: {
202
+ primary: [
203
+ { name: 'Bauhaus Red', hex: '#D62828' },
204
+ { name: 'Bauhaus Blue', hex: '#003DA5' },
205
+ { name: 'Bauhaus Yellow', hex: '#F5B700' },
206
+ { name: 'Pure Black', hex: '#0A0A0A' },
207
+ { name: 'Pure White', hex: '#FFFFFF' }
208
+ ],
209
+ neutral: [
210
+ { name: 'Concrete', hex: '#F5F5F0' },
211
+ { name: 'Graphite', hex: '#404040' },
212
+ { name: 'Silver Line', hex: '#E0E0E0' }
213
+ ],
214
+ semantic: [
215
+ { name: 'Action', hex: '#003DA5' },
216
+ { name: 'Danger', hex: '#D62828' },
217
+ { name: 'Attention', hex: '#F5B700' },
218
+ { name: 'Success', hex: '#003DA5' }
219
+ ]
220
+ },
221
+ refined: {
222
+ primary: [
223
+ { name: 'Charcoal', hex: '#262626' },
224
+ { name: 'Stone', hex: '#fafaf9' },
225
+ { name: 'Warm Cream', hex: '#f5f5f4' },
226
+ { name: 'Mid Stone', hex: '#e7e5e4' },
227
+ { name: 'Border Stone', hex: '#d6d3d1' }
228
+ ],
229
+ accent: [
230
+ { name: 'Sage 100', hex: '#e8eeea' },
231
+ { name: 'Sage 200', hex: '#c5d5cb' },
232
+ { name: 'Sage 400', hex: '#7c9a84' },
233
+ { name: 'Sage 500', hex: '#63806b' },
234
+ { name: 'Sage 600', hex: '#4d6653' }
235
+ ],
236
+ secondary: [
237
+ { name: 'Rose 100', hex: '#f2e4e6' },
238
+ { name: 'Rose 300', hex: '#d4a0a8' },
239
+ { name: 'Rose 400', hex: '#c4818b' },
240
+ { name: 'Rose 500', hex: '#a8636d' }
241
+ ],
242
+ semantic: [
243
+ { name: 'Success', hex: '#7c9a84' },
244
+ { name: 'Warning', hex: '#c4a265' },
245
+ { name: 'Error', hex: '#c4818b' },
246
+ { name: 'Info', hex: '#c4a265' }
247
+ ]
248
+ },
249
+ neonAmber: {
250
+ primary: [
251
+ { name: 'Void', hex: '#0A0806' },
252
+ { name: 'Surface 0', hex: '#12100B' },
253
+ { name: 'Surface 1', hex: '#1A1710' },
254
+ { name: 'Surface 2', hex: '#241F16' },
255
+ { name: 'Surface 3', hex: '#302A1E' }
256
+ ],
257
+ accent: [
258
+ { name: 'Amber', hex: '#FFB800' },
259
+ { name: 'Amber Muted', hex: '#C48A00' },
260
+ { name: 'Orange', hex: '#FF6B00' },
261
+ { name: 'Green', hex: '#39FF14' },
262
+ { name: 'Yellow', hex: '#FFE066' },
263
+ { name: 'Copper', hex: '#E8782A' }
264
+ ],
265
+ semantic: [
266
+ { name: 'Success', hex: '#39FF14' },
267
+ { name: 'Warning', hex: '#FFE066' },
268
+ { name: 'Error', hex: '#FF6B00' },
269
+ { name: 'Info', hex: '#E8782A' }
270
+ ]
271
+ },
272
+ neonViolet: {
273
+ primary: [
274
+ { name: 'Void', hex: '#08060E' },
275
+ { name: 'Surface 0', hex: '#0F0B19' },
276
+ { name: 'Surface 1', hex: '#161122' },
277
+ { name: 'Surface 2', hex: '#1E172E' },
278
+ { name: 'Surface 3', hex: '#2A2140' }
279
+ ],
280
+ accent: [
281
+ { name: 'Violet', hex: '#A855F7' },
282
+ { name: 'Violet Bright', hex: '#C084FC' },
283
+ { name: 'Blue', hex: '#60A5FA' },
284
+ { name: 'Magenta', hex: '#F472B6' },
285
+ { name: 'Green', hex: '#34D399' },
286
+ { name: 'Yellow', hex: '#FBBF24' }
287
+ ],
288
+ semantic: [
289
+ { name: 'Success', hex: '#34D399' },
290
+ { name: 'Warning', hex: '#FBBF24' },
291
+ { name: 'Error', hex: '#F472B6' },
292
+ { name: 'Info', hex: '#60A5FA' }
293
+ ]
294
+ },
295
+ gradient: {
296
+ primary: [
297
+ { name: 'Indigo 600', hex: '#4f46e5' },
298
+ { name: 'Indigo 500', hex: '#6366f1' },
299
+ { name: 'Violet 500', hex: '#8b5cf6' },
300
+ { name: 'Teal 600', hex: '#0d9488' },
301
+ { name: 'Cyan 500', hex: '#06b6d4' }
302
+ ],
303
+ accent: [
304
+ { name: 'Rose 600', hex: '#e11d48' },
305
+ { name: 'Orange 500', hex: '#f97316' },
306
+ { name: 'Emerald 600', hex: '#059669' },
307
+ { name: 'Amber 600', hex: '#d97706' }
308
+ ],
309
+ neutral: [
310
+ { name: 'Slate 50', hex: '#f8fafc' },
311
+ { name: 'Slate 200', hex: '#e2e8f0' },
312
+ { name: 'Slate 500', hex: '#64748b' },
313
+ { name: 'Slate 900', hex: '#0f172a' }
314
+ ],
315
+ semantic: [
316
+ { name: 'Success', hex: '#10b981' },
317
+ { name: 'Warning', hex: '#f59e0b' },
318
+ { name: 'Error', hex: '#e11d48' },
319
+ { name: 'Info', hex: '#06b6d4' }
320
+ ]
321
+ },
322
+ glass: {
323
+ primary: [
324
+ { name: 'Background', hex: '#EEF0F5' },
325
+ { name: 'Surface', hex: '#FFFFFF' },
326
+ { name: 'Accent', hex: '#007AFF' },
327
+ { name: 'Dark BG', hex: '#0A0A0F' },
328
+ { name: 'Dark Surface', hex: '#1C1C1E' }
329
+ ],
330
+ accent: [
331
+ { name: 'Blue', hex: '#007AFF' },
332
+ { name: 'Green', hex: '#34C759' },
333
+ { name: 'Orange', hex: '#FF9500' },
334
+ { name: 'Red', hex: '#FF3B30' },
335
+ { name: 'Cyan', hex: '#5AC8FA' }
336
+ ],
337
+ semantic: [
338
+ { name: 'Success', hex: '#34C759' },
339
+ { name: 'Warning', hex: '#FF9500' },
340
+ { name: 'Error', hex: '#FF3B30' },
341
+ { name: 'Info', hex: '#5AC8FA' }
342
+ ]
343
+ }
344
+ }
345
+
346
+ const currentPalette = computed(() => palettes[activeTheme.value])
347
+
348
+ // Config snippets for each theme
349
+ const configSnippets = {
350
+ professional: {
351
+ appConfig: `export default defineAppConfig({
352
+ ui: {
353
+ colors: {
354
+ primary: 'indigo',
355
+ neutral: 'slate'
356
+ }
357
+ }
358
+ })`,
359
+ nuxtConfig: `export default defineNuxtConfig({
360
+ ui: {
361
+ colors: {
362
+ primary: 'indigo',
363
+ neutral: 'slate'
364
+ }
365
+ }
366
+ })`
367
+ },
368
+ bold: {
369
+ appConfig: `export default defineAppConfig({
370
+ ui: {
371
+ colors: {
372
+ primary: 'violet',
373
+ secondary: 'amber',
374
+ neutral: 'slate'
375
+ }
376
+ }
377
+ })`,
378
+ nuxtConfig: `export default defineNuxtConfig({
379
+ ui: {
380
+ colors: {
381
+ primary: 'violet',
382
+ secondary: 'amber',
383
+ neutral: 'slate'
384
+ }
385
+ }
386
+ })`
387
+ },
388
+ brutalist: {
389
+ appConfig: `export default defineAppConfig({
390
+ ui: {
391
+ colors: {
392
+ primary: 'lime',
393
+ secondary: 'pink',
394
+ neutral: 'stone'
395
+ }
396
+ }
397
+ })`,
398
+ nuxtConfig: `// Custom CSS required for thick borders,
399
+ // hard shadows, and asymmetric radii:
400
+ // .shape-slash { border-radius: 0 24px 0 24px; }
401
+ // .shadow-brutal { box-shadow: 6px 6px 0 0 #09090b; }
402
+ // .btn-brutal { border: 3px solid #09090b; }`
403
+ },
404
+ neon: {
405
+ appConfig: `export default defineAppConfig({
406
+ ui: {
407
+ colors: {
408
+ primary: 'cyan',
409
+ secondary: 'purple',
410
+ neutral: 'slate'
411
+ }
412
+ }
413
+ })`,
414
+ nuxtConfig: `// Custom CSS tokens for the void backgrounds:
415
+ // --neon-void: #07080A;
416
+ // --neon-surface-0: #0D0F14;
417
+ // --neon-cyan: #00FFEE;
418
+ // --neon-magenta: #FF00AA;
419
+ // Glow effects via box-shadow + text-shadow`
420
+ },
421
+ geometric: {
422
+ appConfig: `export default defineAppConfig({
423
+ ui: {
424
+ colors: {
425
+ primary: 'blue', // Bauhaus Blue #003DA5
426
+ secondary: 'red', // Bauhaus Red #D62828
427
+ neutral: 'neutral'
428
+ }
429
+ }
430
+ })`,
431
+ nuxtConfig: `// Key rule: border-radius is ONLY 0 or 9999px.
432
+ // No rounded-md, rounded-lg. Binary shapes.
433
+ //
434
+ // Custom theme tokens:
435
+ // --color-bauhaus-red: #D62828;
436
+ // --color-bauhaus-blue: #003DA5;
437
+ // --color-bauhaus-yellow: #F5B700;`
438
+ },
439
+ refined: {
440
+ appConfig: `export default defineAppConfig({
441
+ ui: {
442
+ colors: {
443
+ primary: 'emerald', // Closest to sage
444
+ secondary: 'rose', // Dusty rose
445
+ neutral: 'stone' // Warm neutral
446
+ }
447
+ }
448
+ })`,
449
+ nuxtConfig: `// Custom sage, rose, brass colors required:
450
+ // --sage-400: #7c9a84;
451
+ // --rose-400: #c4818b;
452
+ // --brass-400: #c4a265;
453
+ // Shapes unchanged from Asymmetric Brutalist
454
+ // Borders reduced to 2px, shadows use sage`
455
+ },
456
+ neonAmber: {
457
+ appConfig: `export default defineAppConfig({
458
+ ui: {
459
+ colors: {
460
+ primary: 'amber',
461
+ secondary: 'orange',
462
+ neutral: 'stone'
463
+ }
464
+ }
465
+ })`,
466
+ nuxtConfig: `// Warm amber neon terminal variant
467
+ // Custom CSS tokens:
468
+ // --amber-void: #0A0806;
469
+ // --amber-neon: #FFB800;
470
+ // --amber-orange: #FF6B00;
471
+ // Light mode: warm parchment tones`
472
+ },
473
+ neonViolet: {
474
+ appConfig: `export default defineAppConfig({
475
+ ui: {
476
+ colors: {
477
+ primary: 'purple',
478
+ secondary: 'blue',
479
+ neutral: 'slate'
480
+ }
481
+ }
482
+ })`,
483
+ nuxtConfig: `// Purple neon terminal variant
484
+ // Custom CSS tokens:
485
+ // --violet-void: #08060E;
486
+ // --violet-neon: #A855F7;
487
+ // --violet-magenta: #F472B6;
488
+ // Light mode: lavender-tinted surfaces`
489
+ },
490
+ gradient: {
491
+ appConfig: `export default defineAppConfig({
492
+ ui: {
493
+ colors: {
494
+ primary: 'indigo',
495
+ secondary: 'teal',
496
+ neutral: 'slate'
497
+ }
498
+ }
499
+ })`,
500
+ nuxtConfig: `// Gradient definitions:
501
+ // --gradient-primary: linear-gradient(135deg, #4f46e5, #8b5cf6);
502
+ // --gradient-secondary: linear-gradient(135deg, #0d9488, #06b6d4);
503
+ // --gradient-warm: linear-gradient(135deg, #e11d48, #f97316);
504
+ // Use background-clip: text for gradient text`
505
+ },
506
+ glass: {
507
+ appConfig: `export default defineAppConfig({
508
+ ui: {
509
+ colors: {
510
+ primary: 'blue', // Apple system blue
511
+ neutral: 'slate'
512
+ }
513
+ }
514
+ })`,
515
+ nuxtConfig: `// Glass effect CSS:
516
+ // backdrop-filter: blur(16px) saturate(180%);
517
+ // background: rgba(255, 255, 255, 0.62);
518
+ // border: 1px solid rgba(255, 255, 255, 0.45);
519
+ // Three tiers: surface (16px), raised (24px), floating (40px)`
520
+ }
521
+ }
522
+
523
+ const currentConfig = computed(() => configSnippets[activeTheme.value])
524
+
525
+ // Active config tab
526
+ const activeConfigTab = ref('appConfig')
527
+ </script>
528
+
529
+ <template>
530
+ <UDashboardPanel id="theme-preview">
531
+ <template #header>
532
+ <UDashboardNavbar title="Theme Preview">
533
+ <template #leading>
534
+ <UDashboardSidebarCollapse />
535
+ </template>
536
+ <template #left>
537
+ <UButton
538
+ :icon="darkPreview ? 'i-lucide-moon' : 'i-lucide-sun'"
539
+ variant="ghost"
540
+ size="sm"
541
+ @click="darkPreview = !darkPreview"
542
+ />
543
+ </template>
544
+ </UDashboardNavbar>
545
+ </template>
546
+
547
+ <template #body>
548
+ <div class="space-y-8 p-6">
549
+ <!-- Theme Selector Tabs (Grouped) -->
550
+ <div class="flex flex-wrap gap-6">
551
+ <div
552
+ v-for="group in themeGroups"
553
+ :key="group.label"
554
+ class="flex flex-col gap-1.5"
555
+ >
556
+ <span class="text-xs font-semibold text-muted uppercase tracking-wider px-1">{{ group.label }}</span>
557
+ <div class="flex flex-wrap gap-2">
558
+ <UButton
559
+ v-for="theme in group.themes"
560
+ :key="theme.key"
561
+ :icon="theme.icon"
562
+ :label="theme.label"
563
+ :variant="activeTheme === theme.key ? 'solid' : 'outline'"
564
+ size="md"
565
+ @click="activeTheme = theme.key"
566
+ />
567
+ </div>
568
+ </div>
569
+ </div>
570
+
571
+ <!-- Glass Background Switcher (only when Liquid Glass is active) -->
572
+ <div
573
+ v-if="activeTheme === 'glass'"
574
+ class="flex items-center gap-3"
575
+ >
576
+ <span class="text-xs font-semibold text-muted uppercase tracking-wider">Background</span>
577
+ <div class="flex gap-2">
578
+ <button
579
+ v-for="bg in glassBgOptions"
580
+ :key="bg.key"
581
+ class="glass-bg-thumb"
582
+ :class="{ 'glass-bg-thumb-active': glassBg === bg.key }"
583
+ :style="{ background: bg.preview }"
584
+ :title="bg.label"
585
+ @click="glassBg = bg.key"
586
+ >
587
+ <span class="sr-only">{{ bg.label }}</span>
588
+ </button>
589
+ </div>
590
+ </div>
591
+
592
+ <!-- Theme Preview Area -->
593
+ <div
594
+ class="rounded-2xl border-2 border-default overflow-hidden transition-colors duration-300"
595
+ :class="[
596
+ `theme-${activeTheme}`,
597
+ activeTheme === 'glass' ? `glass-bg-${glassBg}` : '',
598
+ { 'dark-preview': darkPreview }
599
+ ]"
600
+ >
601
+ <!-- Preview wrapper with scoped theme styles -->
602
+ <div class="theme-preview-wrapper">
603
+ <!-- Theme Header -->
604
+ <div class="theme-header">
605
+ <div class="flex items-center justify-between">
606
+ <div>
607
+ <h2 class="theme-title">
608
+ {{ themes.find(theme => theme.key === activeTheme)?.label }}
609
+ </h2>
610
+ <p class="theme-subtitle">
611
+ <template v-if="activeTheme === 'professional'">
612
+ Stripe-inspired clean interface with Manrope + Inter
613
+ </template>
614
+ <template v-else-if="activeTheme === 'bold'">
615
+ High-energy violet &amp; amber with Space Grotesk + Inter
616
+ </template>
617
+ <template v-else-if="activeTheme === 'brutalist'">
618
+ Raw neobrutalist asymmetry with Space Grotesk + JetBrains Mono
619
+ </template>
620
+ <template v-else-if="activeTheme === 'neon'">
621
+ Cyberpunk terminal with JetBrains Mono + IBM Plex Sans
622
+ </template>
623
+ <template v-else-if="activeTheme === 'geometric'">
624
+ Bauhaus-inspired binary shapes with Syne + Plus Jakarta Sans
625
+ </template>
626
+ <template v-else-if="activeTheme === 'refined'">
627
+ Sophisticated brutalist shapes with muted sage &amp; rose, Space Grotesk + DM Sans
628
+ </template>
629
+ <template v-else-if="activeTheme === 'neonAmber'">
630
+ Warm amber CRT terminal -- parchment light mode, JetBrains Mono + IBM Plex Sans
631
+ </template>
632
+ <template v-else-if="activeTheme === 'neonViolet'">
633
+ Purple synthwave terminal -- lavender light mode, JetBrains Mono + IBM Plex Sans
634
+ </template>
635
+ <template v-else-if="activeTheme === 'gradient'">
636
+ Flowing gradients as design language, Plus Jakarta Sans + Inter
637
+ </template>
638
+ <template v-else-if="activeTheme === 'glass'">
639
+ Apple-inspired frosted glass with translucent surfaces, Inter
640
+ </template>
641
+ </p>
642
+ </div>
643
+ <div class="theme-mode-badge">
644
+ {{ darkPreview ? 'Dark Mode' : 'Light Mode' }}
645
+ </div>
646
+ </div>
647
+ </div>
648
+
649
+ <div class="theme-body">
650
+ <!-- Mini Layout Preview: sidebar + content area -->
651
+ <div class="layout-preview">
652
+ <!-- Mini Sidebar -->
653
+ <div class="mini-sidebar">
654
+ <div class="sidebar-logo">
655
+ <div class="sidebar-logo-icon">
656
+ E
657
+ </div>
658
+ <span class="sidebar-logo-text">{{ clientName }}</span>
659
+ </div>
660
+ <div class="sidebar-nav">
661
+ <div class="sidebar-section-label">
662
+ MAIN
663
+ </div>
664
+ <div class="sidebar-item active">
665
+ <span class="sidebar-icon">&#9632;</span>
666
+ Dashboard
667
+ </div>
668
+ <div class="sidebar-item">
669
+ <span class="sidebar-icon">&#9632;</span>
670
+ Users
671
+ </div>
672
+ <div class="sidebar-item">
673
+ <span class="sidebar-icon">&#9632;</span>
674
+ Content
675
+ </div>
676
+ <div class="sidebar-section-label">
677
+ SETTINGS
678
+ </div>
679
+ <div class="sidebar-item">
680
+ <span class="sidebar-icon">&#9632;</span>
681
+ Configuration
682
+ </div>
683
+ <div class="sidebar-item">
684
+ <span class="sidebar-icon">&#9632;</span>
685
+ Permissions
686
+ </div>
687
+ </div>
688
+ </div>
689
+
690
+ <!-- Mini Content Area -->
691
+ <div class="mini-content">
692
+ <!-- Stat Cards Row -->
693
+ <div class="stat-cards">
694
+ <div class="stat-card">
695
+ <div class="stat-label">
696
+ Total Users
697
+ </div>
698
+ <div class="stat-value">
699
+ 2,847
700
+ </div>
701
+ </div>
702
+ <div class="stat-card">
703
+ <div class="stat-label">
704
+ Active Sessions
705
+ </div>
706
+ <div class="stat-value">
707
+ 384
708
+ </div>
709
+ </div>
710
+ <div class="stat-card accent">
711
+ <div class="stat-label">
712
+ New Today
713
+ </div>
714
+ <div class="stat-value">
715
+ 42
716
+ </div>
717
+ </div>
718
+ </div>
719
+
720
+ <!-- Mini Table Preview -->
721
+ <div class="mini-table-wrapper">
722
+ <div class="mini-table-header">
723
+ <span>NAME</span>
724
+ <span>EMAIL</span>
725
+ <span>ROLE</span>
726
+ <span>STATUS</span>
727
+ </div>
728
+ <div class="mini-table-row">
729
+ <span>Jane Cooper</span>
730
+ <span>jane@example.com</span>
731
+ <span>Admin</span>
732
+ <span class="badge badge-success">Active</span>
733
+ </div>
734
+ <div class="mini-table-row">
735
+ <span>John Smith</span>
736
+ <span>john@example.com</span>
737
+ <span>Editor</span>
738
+ <span class="badge badge-primary">Active</span>
739
+ </div>
740
+ <div class="mini-table-row hover">
741
+ <span>Alice Johnson</span>
742
+ <span>alice@example.com</span>
743
+ <span>Viewer</span>
744
+ <span class="badge badge-warning">Pending</span>
745
+ </div>
746
+ </div>
747
+ </div>
748
+ </div>
749
+
750
+ <!-- Typography Preview -->
751
+ <div class="section">
752
+ <h3 class="section-heading">
753
+ Typography
754
+ </h3>
755
+ <div class="type-preview">
756
+ <div class="type-sample">
757
+ <span class="type-label">Page Title (Heading)</span>
758
+ <div class="type-heading-xl">
759
+ Dashboard Overview
760
+ </div>
761
+ </div>
762
+ <div class="type-sample">
763
+ <span class="type-label">Section Title (Heading)</span>
764
+ <div class="type-heading-lg">
765
+ User Management
766
+ </div>
767
+ </div>
768
+ <div class="type-sample">
769
+ <span class="type-label">Card Header (Heading)</span>
770
+ <div class="type-heading-md">
771
+ Recent Activity
772
+ </div>
773
+ </div>
774
+ <div class="type-sample">
775
+ <span class="type-label">Body Text</span>
776
+ <div class="type-body">
777
+ The quick brown fox jumps over the lazy dog. This is how body text appears in tables, descriptions, and general content areas throughout the admin interface.
778
+ </div>
779
+ </div>
780
+ <div class="type-sample">
781
+ <span class="type-label">Caption / Small Text</span>
782
+ <div class="type-caption">
783
+ Last updated 3 minutes ago &middot; By admin &middot; Version 2.4.1
784
+ </div>
785
+ </div>
786
+ </div>
787
+ </div>
788
+
789
+ <!-- Component Showcase -->
790
+ <div class="section">
791
+ <h3 class="section-heading">
792
+ Components
793
+ </h3>
794
+
795
+ <!-- Buttons -->
796
+ <div class="component-group">
797
+ <h4 class="component-group-label">
798
+ Buttons
799
+ </h4>
800
+ <div class="component-row">
801
+ <button class="btn btn-primary">
802
+ Primary Action
803
+ </button>
804
+ <button class="btn btn-secondary">
805
+ Secondary
806
+ </button>
807
+ <button class="btn btn-ghost">
808
+ Ghost
809
+ </button>
810
+ <button class="btn btn-danger">
811
+ Delete
812
+ </button>
813
+ </div>
814
+ </div>
815
+
816
+ <!-- Badges -->
817
+ <div class="component-group">
818
+ <h4 class="component-group-label">
819
+ Badges
820
+ </h4>
821
+ <div class="component-row">
822
+ <span class="badge badge-primary">Primary</span>
823
+ <span class="badge badge-success">Success</span>
824
+ <span class="badge badge-warning">Warning</span>
825
+ <span class="badge badge-danger">Error</span>
826
+ <span class="badge badge-info">Info</span>
827
+ <span class="badge badge-neutral">Neutral</span>
828
+ </div>
829
+ </div>
830
+
831
+ <!-- Form Inputs -->
832
+ <div class="component-group">
833
+ <h4 class="component-group-label">
834
+ Form Inputs
835
+ </h4>
836
+ <div class="form-preview">
837
+ <div class="form-field">
838
+ <label class="form-label">Full Name</label>
839
+ <input
840
+ class="form-input"
841
+ type="text"
842
+ placeholder="Enter your name"
843
+ >
844
+ </div>
845
+ <div class="form-field">
846
+ <label class="form-label">Email Address</label>
847
+ <input
848
+ class="form-input focused"
849
+ type="email"
850
+ value="admin@energis.dev"
851
+ >
852
+ </div>
853
+ <div class="form-field">
854
+ <label class="form-label">Role</label>
855
+ <div class="form-select">
856
+ Administrator
857
+ <span class="select-arrow">&#9662;</span>
858
+ </div>
859
+ </div>
860
+ </div>
861
+ </div>
862
+
863
+ <!-- Alerts -->
864
+ <div class="component-group">
865
+ <h4 class="component-group-label">
866
+ Alerts
867
+ </h4>
868
+ <div class="alerts-preview">
869
+ <div class="alert alert-success">
870
+ <span class="alert-icon">&#10003;</span>
871
+ <div>
872
+ <div class="alert-title">
873
+ Changes saved
874
+ </div>
875
+ <div class="alert-description">
876
+ Your profile has been updated successfully.
877
+ </div>
878
+ </div>
879
+ </div>
880
+ <div class="alert alert-danger">
881
+ <span class="alert-icon">&#10007;</span>
882
+ <div>
883
+ <div class="alert-title">
884
+ Validation error
885
+ </div>
886
+ <div class="alert-description">
887
+ Please check the highlighted fields and try again.
888
+ </div>
889
+ </div>
890
+ </div>
891
+ <div class="alert alert-info">
892
+ <span class="alert-icon">&#8505;</span>
893
+ <div>
894
+ <div class="alert-title">
895
+ Tip
896
+ </div>
897
+ <div class="alert-description">
898
+ You can use keyboard shortcuts to navigate faster.
899
+ </div>
900
+ </div>
901
+ </div>
902
+ </div>
903
+ </div>
904
+
905
+ <!-- Card -->
906
+ <div class="component-group">
907
+ <h4 class="component-group-label">
908
+ Cards
909
+ </h4>
910
+ <div class="cards-preview">
911
+ <div class="preview-card">
912
+ <div class="preview-card-header">
913
+ <div class="type-heading-md">
914
+ User Details
915
+ </div>
916
+ </div>
917
+ <div class="preview-card-body">
918
+ <p class="type-body">
919
+ Manage user accounts, roles, and permissions. View activity logs and session history.
920
+ </p>
921
+ </div>
922
+ <div class="preview-card-footer">
923
+ <button class="btn btn-primary btn-sm">
924
+ View All
925
+ </button>
926
+ <button class="btn btn-ghost btn-sm">
927
+ Export
928
+ </button>
929
+ </div>
930
+ </div>
931
+ </div>
932
+ </div>
933
+ </div>
934
+
935
+ <!-- Color Palette Swatches -->
936
+ <div class="section">
937
+ <h3 class="section-heading">
938
+ Color Palette
939
+ </h3>
940
+ <div class="palette-groups">
941
+ <div class="palette-group">
942
+ <h4 class="component-group-label">
943
+ Primary
944
+ </h4>
945
+ <div class="swatch-row">
946
+ <div
947
+ v-for="color in currentPalette.primary"
948
+ :key="color.name"
949
+ class="swatch"
950
+ >
951
+ <div
952
+ class="swatch-color"
953
+ :style="{ backgroundColor: color.hex }"
954
+ />
955
+ <div class="swatch-label">
956
+ {{ color.name }}
957
+ </div>
958
+ <div class="swatch-hex">
959
+ {{ color.hex }}
960
+ </div>
961
+ </div>
962
+ </div>
963
+ </div>
964
+ <div
965
+ v-if="currentPalette.neutral"
966
+ class="palette-group"
967
+ >
968
+ <h4 class="component-group-label">
969
+ Neutral
970
+ </h4>
971
+ <div class="swatch-row">
972
+ <div
973
+ v-for="color in currentPalette.neutral"
974
+ :key="color.name"
975
+ class="swatch"
976
+ >
977
+ <div
978
+ class="swatch-color"
979
+ :style="{ backgroundColor: color.hex }"
980
+ />
981
+ <div class="swatch-label">
982
+ {{ color.name }}
983
+ </div>
984
+ <div class="swatch-hex">
985
+ {{ color.hex }}
986
+ </div>
987
+ </div>
988
+ </div>
989
+ </div>
990
+ <div
991
+ v-if="currentPalette.accent"
992
+ class="palette-group"
993
+ >
994
+ <h4 class="component-group-label">
995
+ Accent
996
+ </h4>
997
+ <div class="swatch-row">
998
+ <div
999
+ v-for="color in currentPalette.accent"
1000
+ :key="color.name"
1001
+ class="swatch"
1002
+ >
1003
+ <div
1004
+ class="swatch-color"
1005
+ :style="{ backgroundColor: color.hex }"
1006
+ />
1007
+ <div class="swatch-label">
1008
+ {{ color.name }}
1009
+ </div>
1010
+ <div class="swatch-hex">
1011
+ {{ color.hex }}
1012
+ </div>
1013
+ </div>
1014
+ </div>
1015
+ </div>
1016
+ <div
1017
+ v-if="currentPalette.secondary"
1018
+ class="palette-group"
1019
+ >
1020
+ <h4 class="component-group-label">
1021
+ Secondary
1022
+ </h4>
1023
+ <div class="swatch-row">
1024
+ <div
1025
+ v-for="color in currentPalette.secondary"
1026
+ :key="color.name"
1027
+ class="swatch"
1028
+ >
1029
+ <div
1030
+ class="swatch-color"
1031
+ :style="{ backgroundColor: color.hex }"
1032
+ />
1033
+ <div class="swatch-label">
1034
+ {{ color.name }}
1035
+ </div>
1036
+ <div class="swatch-hex">
1037
+ {{ color.hex }}
1038
+ </div>
1039
+ </div>
1040
+ </div>
1041
+ </div>
1042
+ <div class="palette-group">
1043
+ <h4 class="component-group-label">
1044
+ Semantic
1045
+ </h4>
1046
+ <div class="swatch-row">
1047
+ <div
1048
+ v-for="color in currentPalette.semantic"
1049
+ :key="color.name"
1050
+ class="swatch"
1051
+ >
1052
+ <div
1053
+ class="swatch-color"
1054
+ :style="{ backgroundColor: color.hex }"
1055
+ />
1056
+ <div class="swatch-label">
1057
+ {{ color.name }}
1058
+ </div>
1059
+ <div class="swatch-hex">
1060
+ {{ color.hex }}
1061
+ </div>
1062
+ </div>
1063
+ </div>
1064
+ </div>
1065
+ </div>
1066
+ </div>
1067
+
1068
+ <!-- Configuration Snippets -->
1069
+ <div class="section">
1070
+ <h3 class="section-heading">
1071
+ Configuration
1072
+ </h3>
1073
+ <div class="config-tabs">
1074
+ <button
1075
+ class="config-tab"
1076
+ :class="{ active: activeConfigTab === 'appConfig' }"
1077
+ @click="activeConfigTab = 'appConfig'"
1078
+ >
1079
+ app.config.ts
1080
+ </button>
1081
+ <button
1082
+ class="config-tab"
1083
+ :class="{ active: activeConfigTab === 'nuxtConfig' }"
1084
+ @click="activeConfigTab = 'nuxtConfig'"
1085
+ >
1086
+ nuxt.config.ts
1087
+ </button>
1088
+ </div>
1089
+ <pre class="config-code"><code>{{ activeConfigTab === 'appConfig' ? currentConfig.appConfig : currentConfig.nuxtConfig }}</code></pre>
1090
+ </div>
1091
+
1092
+ <!-- Font Information -->
1093
+ <div class="section">
1094
+ <h3 class="section-heading">
1095
+ Font Pairing
1096
+ </h3>
1097
+ <div class="font-info">
1098
+ <template v-if="activeTheme === 'professional'">
1099
+ <div class="font-pair">
1100
+ <div class="font-pair-label">
1101
+ Headings
1102
+ </div>
1103
+ <div
1104
+ class="font-pair-name"
1105
+ style="font-family: 'Manrope', sans-serif; font-weight: 700;"
1106
+ >
1107
+ Manrope
1108
+ </div>
1109
+ <div class="font-pair-desc">
1110
+ Geometric sans-serif, weights 600-700
1111
+ </div>
1112
+ </div>
1113
+ <div class="font-pair">
1114
+ <div class="font-pair-label">
1115
+ Body
1116
+ </div>
1117
+ <div
1118
+ class="font-pair-name"
1119
+ style="font-family: 'Inter', sans-serif; font-weight: 400;"
1120
+ >
1121
+ Inter
1122
+ </div>
1123
+ <div class="font-pair-desc">
1124
+ Humanist sans-serif, weights 400-600
1125
+ </div>
1126
+ </div>
1127
+ </template>
1128
+ <template v-else-if="activeTheme === 'bold'">
1129
+ <div class="font-pair">
1130
+ <div class="font-pair-label">
1131
+ Headings
1132
+ </div>
1133
+ <div
1134
+ class="font-pair-name"
1135
+ style="font-family: 'Space Grotesk', sans-serif; font-weight: 700;"
1136
+ >
1137
+ Space Grotesk
1138
+ </div>
1139
+ <div class="font-pair-desc">
1140
+ Geometric grotesque, weights 500-700
1141
+ </div>
1142
+ </div>
1143
+ <div class="font-pair">
1144
+ <div class="font-pair-label">
1145
+ Body
1146
+ </div>
1147
+ <div
1148
+ class="font-pair-name"
1149
+ style="font-family: 'Inter', sans-serif; font-weight: 400;"
1150
+ >
1151
+ Inter
1152
+ </div>
1153
+ <div class="font-pair-desc">
1154
+ Clean sans-serif, weights 400-600
1155
+ </div>
1156
+ </div>
1157
+ </template>
1158
+ <template v-else-if="activeTheme === 'brutalist'">
1159
+ <div class="font-pair">
1160
+ <div class="font-pair-label">
1161
+ Headings
1162
+ </div>
1163
+ <div
1164
+ class="font-pair-name"
1165
+ style="font-family: 'Space Grotesk', sans-serif; font-weight: 700;"
1166
+ >
1167
+ Space Grotesk
1168
+ </div>
1169
+ <div class="font-pair-desc">
1170
+ Geometric grotesque, Bold 700 only. Oversized (48px titles, 60px stats).
1171
+ </div>
1172
+ </div>
1173
+ <div class="font-pair">
1174
+ <div class="font-pair-label">
1175
+ Body
1176
+ </div>
1177
+ <div
1178
+ class="font-pair-name"
1179
+ style="font-family: 'JetBrains Mono', monospace; font-weight: 400;"
1180
+ >
1181
+ JetBrains Mono
1182
+ </div>
1183
+ <div class="font-pair-desc">
1184
+ Monospaced for ALL body text. Deliberate brutalist choice.
1185
+ </div>
1186
+ </div>
1187
+ </template>
1188
+ <template v-else-if="activeTheme === 'neon' || activeTheme === 'neonAmber' || activeTheme === 'neonViolet'">
1189
+ <div class="font-pair">
1190
+ <div class="font-pair-label">
1191
+ Headings
1192
+ </div>
1193
+ <div
1194
+ class="font-pair-name"
1195
+ style="font-family: 'JetBrains Mono', monospace; font-weight: 800;"
1196
+ >
1197
+ JetBrains Mono
1198
+ </div>
1199
+ <div class="font-pair-desc">
1200
+ Monospace headings, ExtraBold 800, with neon glow. UPPERCASE h1.
1201
+ </div>
1202
+ </div>
1203
+ <div class="font-pair">
1204
+ <div class="font-pair-label">
1205
+ Body
1206
+ </div>
1207
+ <div
1208
+ class="font-pair-name"
1209
+ style="font-family: 'IBM Plex Sans', sans-serif; font-weight: 400;"
1210
+ >
1211
+ IBM Plex Sans
1212
+ </div>
1213
+ <div class="font-pair-desc">
1214
+ Technical sans-serif, weights 400-600. Clean readability.
1215
+ </div>
1216
+ </div>
1217
+ </template>
1218
+ <template v-else-if="activeTheme === 'geometric'">
1219
+ <div class="font-pair">
1220
+ <div class="font-pair-label">
1221
+ Headings
1222
+ </div>
1223
+ <div
1224
+ class="font-pair-name"
1225
+ style="font-family: 'Syne', sans-serif; font-weight: 800;"
1226
+ >
1227
+ Syne
1228
+ </div>
1229
+ <div class="font-pair-desc">
1230
+ Experimental geometric sans-serif that widens as it bolds. ExtraBold 800.
1231
+ </div>
1232
+ </div>
1233
+ <div class="font-pair">
1234
+ <div class="font-pair-label">
1235
+ Body
1236
+ </div>
1237
+ <div
1238
+ class="font-pair-name"
1239
+ style="font-family: 'Plus Jakarta Sans', sans-serif; font-weight: 400;"
1240
+ >
1241
+ Plus Jakarta Sans
1242
+ </div>
1243
+ <div class="font-pair-desc">
1244
+ Modern geometric sans-serif, weights 400-600.
1245
+ </div>
1246
+ </div>
1247
+ <div class="font-pair">
1248
+ <div class="font-pair-label">
1249
+ Mono
1250
+ </div>
1251
+ <div
1252
+ class="font-pair-name"
1253
+ style="font-family: 'Space Mono', monospace; font-weight: 400;"
1254
+ >
1255
+ Space Mono
1256
+ </div>
1257
+ <div class="font-pair-desc">
1258
+ Geometric monospace for data and numbers.
1259
+ </div>
1260
+ </div>
1261
+ </template>
1262
+ <template v-else-if="activeTheme === 'refined'">
1263
+ <div class="font-pair">
1264
+ <div class="font-pair-label">
1265
+ Headings
1266
+ </div>
1267
+ <div
1268
+ class="font-pair-name"
1269
+ style="font-family: 'Space Grotesk', sans-serif; font-weight: 700;"
1270
+ >
1271
+ Space Grotesk
1272
+ </div>
1273
+ <div class="font-pair-desc">
1274
+ Geometric grotesque, Bold 700. Oversized but refined.
1275
+ </div>
1276
+ </div>
1277
+ <div class="font-pair">
1278
+ <div class="font-pair-label">
1279
+ Body
1280
+ </div>
1281
+ <div
1282
+ class="font-pair-name"
1283
+ style="font-family: 'DM Sans', sans-serif; font-weight: 400;"
1284
+ >
1285
+ DM Sans
1286
+ </div>
1287
+ <div class="font-pair-desc">
1288
+ Proportional sans-serif with optical sizing. Clean, readable flow.
1289
+ </div>
1290
+ </div>
1291
+ <div class="font-pair">
1292
+ <div class="font-pair-label">
1293
+ Mono
1294
+ </div>
1295
+ <div
1296
+ class="font-pair-name"
1297
+ style="font-family: 'IBM Plex Mono', monospace; font-weight: 400;"
1298
+ >
1299
+ IBM Plex Mono
1300
+ </div>
1301
+ <div class="font-pair-desc">
1302
+ Monospace for data cells and code snippets only.
1303
+ </div>
1304
+ </div>
1305
+ </template>
1306
+ <template v-else-if="activeTheme === 'gradient'">
1307
+ <div class="font-pair">
1308
+ <div class="font-pair-label">
1309
+ Headings
1310
+ </div>
1311
+ <div
1312
+ class="font-pair-name"
1313
+ style="font-family: 'Plus Jakarta Sans', sans-serif; font-weight: 700;"
1314
+ >
1315
+ Plus Jakarta Sans
1316
+ </div>
1317
+ <div class="font-pair-desc">
1318
+ Geometric, rounded terminals that echo smooth gradient transitions.
1319
+ </div>
1320
+ </div>
1321
+ <div class="font-pair">
1322
+ <div class="font-pair-label">
1323
+ Body
1324
+ </div>
1325
+ <div
1326
+ class="font-pair-name"
1327
+ style="font-family: 'Inter', sans-serif; font-weight: 400;"
1328
+ >
1329
+ Inter
1330
+ </div>
1331
+ <div class="font-pair-desc">
1332
+ UI-optimized with optical sizing and tabular numbers.
1333
+ </div>
1334
+ </div>
1335
+ </template>
1336
+ <template v-else-if="activeTheme === 'glass'">
1337
+ <div class="font-pair">
1338
+ <div class="font-pair-label">
1339
+ Headings
1340
+ </div>
1341
+ <div
1342
+ class="font-pair-name"
1343
+ style="font-family: 'Inter', sans-serif; font-weight: 700;"
1344
+ >
1345
+ Inter
1346
+ </div>
1347
+ <div class="font-pair-desc">
1348
+ Clean, Apple-like clarity. Bold 700 for headings, SemiBold 600 for subheads.
1349
+ </div>
1350
+ </div>
1351
+ <div class="font-pair">
1352
+ <div class="font-pair-label">
1353
+ Body
1354
+ </div>
1355
+ <div
1356
+ class="font-pair-name"
1357
+ style="font-family: 'Inter', sans-serif; font-weight: 400;"
1358
+ >
1359
+ Inter
1360
+ </div>
1361
+ <div class="font-pair-desc">
1362
+ Regular 400, optimized for screen readability at all sizes.
1363
+ </div>
1364
+ </div>
1365
+ </template>
1366
+ </div>
1367
+ </div>
1368
+ </div>
1369
+ </div>
1370
+ </div>
1371
+ </div>
1372
+ </template>
1373
+ </UDashboardPanel>
1374
+ </template>
1375
+
1376
+ <style>
1377
+ /* Google Fonts imports for all themes */
1378
+ @import url('https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,100..900;1,100..900&family=Manrope:wght@200..800&display=swap');
1379
+ @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;700&display=swap');
1380
+ @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700;800&display=swap');
1381
+ @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&display=swap');
1382
+ @import url('https://fonts.googleapis.com/css2?family=Syne:wght@700;800&family=Plus+Jakarta+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Space+Mono&display=swap');
1383
+ @import url('https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,400;9..40,500&family=IBM+Plex+Mono:wght@400&display=swap');
1384
+ </style>
1385
+
1386
+ <style>
1387
+ /* ===== THEME VARIABLES ===== */
1388
+
1389
+ /* Professional & Clean (Light) */
1390
+ .theme-professional .theme-preview-wrapper {
1391
+ --t-bg: #f8fafc;
1392
+ --t-bg-elevated: #ffffff;
1393
+ --t-bg-muted: #f1f5f9;
1394
+ --t-border: #e2e8f0;
1395
+ --t-text: #334155;
1396
+ --t-text-heading: #0f172a;
1397
+ --t-text-muted: #64748b;
1398
+ --t-text-caption: #94a3b8;
1399
+ --t-primary: #6366f1;
1400
+ --t-primary-hover: #4f46e5;
1401
+ --t-primary-light: #eef2ff;
1402
+ --t-primary-text: #ffffff;
1403
+ --t-secondary-bg: #f1f5f9;
1404
+ --t-secondary-text: #334155;
1405
+ --t-secondary-border: #e2e8f0;
1406
+ --t-ghost-text: #4f46e5;
1407
+ --t-ghost-hover: #f1f5f9;
1408
+ --t-danger: #ef4444;
1409
+ --t-danger-hover: #dc2626;
1410
+ --t-success: #10b981;
1411
+ --t-success-light: #ecfdf5;
1412
+ --t-success-text: #065f46;
1413
+ --t-warning: #f59e0b;
1414
+ --t-warning-light: #fffbeb;
1415
+ --t-warning-text: #92400e;
1416
+ --t-info: #0ea5e9;
1417
+ --t-info-light: #f0f9ff;
1418
+ --t-info-text: #0c4a6e;
1419
+ --t-danger-light: #fef2f2;
1420
+ --t-danger-text: #991b1b;
1421
+ --t-sidebar-bg: #ffffff;
1422
+ --t-sidebar-border: #e2e8f0;
1423
+ --t-sidebar-text: #64748b;
1424
+ --t-sidebar-active-bg: #eef2ff;
1425
+ --t-sidebar-active-text: #4f46e5;
1426
+ --t-sidebar-active-border: #6366f1;
1427
+ --t-sidebar-hover: #f8fafc;
1428
+ --t-sidebar-section: #94a3b8;
1429
+ --t-table-header-bg: #f8fafc;
1430
+ --t-table-header-text: #64748b;
1431
+ --t-table-border: #f1f5f9;
1432
+ --t-table-hover: #f8fafc;
1433
+ --t-input-bg: #ffffff;
1434
+ --t-input-border: #cbd5e1;
1435
+ --t-input-focus: #6366f1;
1436
+ --t-input-focus-ring: rgba(99, 102, 241, 0.2);
1437
+ --t-badge-primary-bg: #eef2ff;
1438
+ --t-badge-primary-text: #4338ca;
1439
+ --t-badge-neutral-bg: #f1f5f9;
1440
+ --t-badge-neutral-text: #475569;
1441
+ --t-card-shadow: 0 1px 3px rgba(0,0,0,0.08);
1442
+ --t-font-heading: 'Manrope', ui-sans-serif, system-ui, sans-serif;
1443
+ --t-font-body: 'Inter', ui-sans-serif, system-ui, sans-serif;
1444
+ --t-radius-sm: 8px;
1445
+ --t-radius-md: 12px;
1446
+ --t-radius-badge: 6px;
1447
+ --t-accent-bg: #eef2ff;
1448
+ --t-accent-text: #4338ca;
1449
+ --t-stat-value-color: #0f172a;
1450
+ --t-border-width: 1px;
1451
+ --t-heading-xl-size: 1.875rem;
1452
+ --t-heading-lg-size: 1.25rem;
1453
+ --t-heading-md-size: 1rem;
1454
+ --t-heading-xl-weight: 700;
1455
+ --t-heading-tracking: -0.025em;
1456
+ --t-body-size: 0.875rem;
1457
+ --t-btn-radius-primary: 8px;
1458
+ --t-btn-radius-secondary: 8px;
1459
+ --t-btn-radius-ghost: 8px;
1460
+ --t-btn-radius-danger: 8px;
1461
+ --t-btn-padding: 8px 16px;
1462
+ --t-btn-border: none;
1463
+ --t-btn-shadow: none;
1464
+ --t-card-radius: 12px;
1465
+ --t-card-border: 1px solid var(--t-border);
1466
+ }
1467
+
1468
+ /* Professional & Clean (Dark) */
1469
+ .theme-professional.dark-preview .theme-preview-wrapper {
1470
+ --t-bg: #0f172a;
1471
+ --t-bg-elevated: #1e293b;
1472
+ --t-bg-muted: #1e293b;
1473
+ --t-border: #334155;
1474
+ --t-text: #cbd5e1;
1475
+ --t-text-heading: #f8fafc;
1476
+ --t-text-muted: #94a3b8;
1477
+ --t-text-caption: #64748b;
1478
+ --t-primary: #818cf8;
1479
+ --t-primary-hover: #6366f1;
1480
+ --t-primary-light: rgba(99, 102, 241, 0.15);
1481
+ --t-secondary-bg: #334155;
1482
+ --t-secondary-text: #e2e8f0;
1483
+ --t-secondary-border: #475569;
1484
+ --t-ghost-text: #818cf8;
1485
+ --t-ghost-hover: #1e293b;
1486
+ --t-danger: #f87171;
1487
+ --t-success-light: rgba(16, 185, 129, 0.15);
1488
+ --t-success-text: #6ee7b7;
1489
+ --t-warning-light: rgba(245, 158, 11, 0.15);
1490
+ --t-warning-text: #fcd34d;
1491
+ --t-info-light: rgba(14, 165, 233, 0.15);
1492
+ --t-info-text: #7dd3fc;
1493
+ --t-danger-light: rgba(239, 68, 68, 0.15);
1494
+ --t-danger-text: #fca5a5;
1495
+ --t-sidebar-bg: #0f172a;
1496
+ --t-sidebar-border: #1e293b;
1497
+ --t-sidebar-text: #94a3b8;
1498
+ --t-sidebar-active-bg: rgba(99, 102, 241, 0.15);
1499
+ --t-sidebar-active-text: #a5b4fc;
1500
+ --t-sidebar-hover: #1e293b;
1501
+ --t-sidebar-section: #64748b;
1502
+ --t-table-header-bg: #1e293b;
1503
+ --t-table-header-text: #94a3b8;
1504
+ --t-table-border: #334155;
1505
+ --t-table-hover: #1e293b;
1506
+ --t-input-bg: #0f172a;
1507
+ --t-input-border: #475569;
1508
+ --t-badge-primary-bg: rgba(99, 102, 241, 0.2);
1509
+ --t-badge-primary-text: #a5b4fc;
1510
+ --t-badge-neutral-bg: #334155;
1511
+ --t-badge-neutral-text: #94a3b8;
1512
+ --t-card-shadow: 0 1px 3px rgba(0,0,0,0.3);
1513
+ --t-accent-bg: rgba(99, 102, 241, 0.15);
1514
+ --t-accent-text: #a5b4fc;
1515
+ --t-stat-value-color: #f8fafc;
1516
+ }
1517
+
1518
+ /* Bold & Modern (Light) */
1519
+ .theme-bold .theme-preview-wrapper {
1520
+ --t-bg: #f8fafc;
1521
+ --t-bg-elevated: #ffffff;
1522
+ --t-bg-muted: #f1f5f9;
1523
+ --t-border: #e2e8f0;
1524
+ --t-text: #334155;
1525
+ --t-text-heading: #1e293b;
1526
+ --t-text-muted: #64748b;
1527
+ --t-text-caption: #94a3b8;
1528
+ --t-primary: #7c3aed;
1529
+ --t-primary-hover: #6d28d9;
1530
+ --t-primary-light: #f5f3ff;
1531
+ --t-primary-text: #ffffff;
1532
+ --t-secondary-bg: #f1f5f9;
1533
+ --t-secondary-text: #334155;
1534
+ --t-secondary-border: #e2e8f0;
1535
+ --t-ghost-text: #7c3aed;
1536
+ --t-ghost-hover: #f5f3ff;
1537
+ --t-danger: #f43f5e;
1538
+ --t-danger-hover: #e11d48;
1539
+ --t-success: #10b981;
1540
+ --t-success-light: #ecfdf5;
1541
+ --t-success-text: #065f46;
1542
+ --t-warning: #f59e0b;
1543
+ --t-warning-light: #fffbeb;
1544
+ --t-warning-text: #92400e;
1545
+ --t-info: #a78bfa;
1546
+ --t-info-light: #f5f3ff;
1547
+ --t-info-text: #5b21b6;
1548
+ --t-danger-light: #fff1f2;
1549
+ --t-danger-text: #9f1239;
1550
+ --t-sidebar-bg: linear-gradient(to bottom, #7c3aed, #4c1d95);
1551
+ --t-sidebar-border: transparent;
1552
+ --t-sidebar-text: rgba(255,255,255,0.7);
1553
+ --t-sidebar-active-bg: rgba(255,255,255,0.15);
1554
+ --t-sidebar-active-text: #ffffff;
1555
+ --t-sidebar-active-border: #fbbf24;
1556
+ --t-sidebar-hover: rgba(255,255,255,0.1);
1557
+ --t-sidebar-section: rgba(255,255,255,0.4);
1558
+ --t-table-header-bg: #f5f3ff;
1559
+ --t-table-header-text: #4c1d95;
1560
+ --t-table-border: #f1f5f9;
1561
+ --t-table-hover: rgba(139, 92, 246, 0.04);
1562
+ --t-input-bg: #ffffff;
1563
+ --t-input-border: #cbd5e1;
1564
+ --t-input-focus: #7c3aed;
1565
+ --t-input-focus-ring: rgba(124, 58, 237, 0.2);
1566
+ --t-badge-primary-bg: #ede9fe;
1567
+ --t-badge-primary-text: #6d28d9;
1568
+ --t-badge-neutral-bg: #f1f5f9;
1569
+ --t-badge-neutral-text: #475569;
1570
+ --t-card-shadow: 0 1px 3px rgba(0,0,0,0.08);
1571
+ --t-font-heading: 'Space Grotesk', ui-sans-serif, system-ui, sans-serif;
1572
+ --t-font-body: 'Inter', ui-sans-serif, system-ui, sans-serif;
1573
+ --t-radius-sm: 8px;
1574
+ --t-radius-md: 12px;
1575
+ --t-radius-badge: 9999px;
1576
+ --t-accent-bg: #fef3c7;
1577
+ --t-accent-text: #b45309;
1578
+ --t-stat-value-color: #7c3aed;
1579
+ --t-border-width: 1px;
1580
+ --t-heading-xl-size: 1.875rem;
1581
+ --t-heading-lg-size: 1.25rem;
1582
+ --t-heading-md-size: 1rem;
1583
+ --t-heading-xl-weight: 700;
1584
+ --t-heading-tracking: -0.025em;
1585
+ --t-body-size: 0.875rem;
1586
+ --t-btn-radius-primary: 8px;
1587
+ --t-btn-radius-secondary: 8px;
1588
+ --t-btn-radius-ghost: 8px;
1589
+ --t-btn-radius-danger: 8px;
1590
+ --t-btn-padding: 8px 16px;
1591
+ --t-btn-border: none;
1592
+ --t-btn-shadow: none;
1593
+ --t-card-radius: 12px;
1594
+ --t-card-border: 1px solid var(--t-border);
1595
+ }
1596
+
1597
+ /* Bold & Modern (Dark) */
1598
+ .theme-bold.dark-preview .theme-preview-wrapper {
1599
+ --t-bg: #020617;
1600
+ --t-bg-elevated: #0f172a;
1601
+ --t-bg-muted: #1e293b;
1602
+ --t-border: #1e293b;
1603
+ --t-text: #e2e8f0;
1604
+ --t-text-heading: #ffffff;
1605
+ --t-text-muted: #94a3b8;
1606
+ --t-text-caption: #64748b;
1607
+ --t-primary: #8b5cf6;
1608
+ --t-primary-hover: #7c3aed;
1609
+ --t-primary-light: rgba(139, 92, 246, 0.15);
1610
+ --t-secondary-bg: #1e293b;
1611
+ --t-secondary-text: #e2e8f0;
1612
+ --t-secondary-border: #334155;
1613
+ --t-ghost-text: #a78bfa;
1614
+ --t-ghost-hover: rgba(139, 92, 246, 0.1);
1615
+ --t-danger: #fb7185;
1616
+ --t-success-light: rgba(16, 185, 129, 0.15);
1617
+ --t-success-text: #6ee7b7;
1618
+ --t-warning-light: rgba(245, 158, 11, 0.15);
1619
+ --t-warning-text: #fcd34d;
1620
+ --t-info-light: rgba(167, 139, 250, 0.15);
1621
+ --t-info-text: #c4b5fd;
1622
+ --t-danger-light: rgba(244, 63, 94, 0.15);
1623
+ --t-danger-text: #fda4af;
1624
+ --t-sidebar-bg: linear-gradient(to bottom, #0f172a, #020617);
1625
+ --t-sidebar-border: #1e293b;
1626
+ --t-sidebar-text: #94a3b8;
1627
+ --t-sidebar-active-bg: rgba(139, 92, 246, 0.2);
1628
+ --t-sidebar-active-text: #c4b5fd;
1629
+ --t-sidebar-active-border: #fbbf24;
1630
+ --t-sidebar-hover: rgba(139, 92, 246, 0.1);
1631
+ --t-sidebar-section: #64748b;
1632
+ --t-table-header-bg: rgba(139, 92, 246, 0.08);
1633
+ --t-table-header-text: #c4b5fd;
1634
+ --t-table-border: #1e293b;
1635
+ --t-table-hover: rgba(139, 92, 246, 0.06);
1636
+ --t-input-bg: #0f172a;
1637
+ --t-input-border: #334155;
1638
+ --t-badge-primary-bg: rgba(139, 92, 246, 0.2);
1639
+ --t-badge-primary-text: #c4b5fd;
1640
+ --t-badge-neutral-bg: #1e293b;
1641
+ --t-badge-neutral-text: #94a3b8;
1642
+ --t-card-shadow: 0 1px 3px rgba(0,0,0,0.4);
1643
+ --t-accent-bg: rgba(251, 191, 36, 0.15);
1644
+ --t-accent-text: #fbbf24;
1645
+ --t-stat-value-color: #a78bfa;
1646
+ }
1647
+
1648
+ /* ===== ASYMMETRIC BRUTALIST (Light) ===== */
1649
+ .theme-brutalist .theme-preview-wrapper {
1650
+ --t-bg: #fafaf9;
1651
+ --t-bg-elevated: #ffffff;
1652
+ --t-bg-muted: #f5f5f4;
1653
+ --t-border: #09090b;
1654
+ --t-text: #44403c;
1655
+ --t-text-heading: #09090b;
1656
+ --t-text-muted: #78716c;
1657
+ --t-text-caption: #a8a29e;
1658
+ --t-primary: #a3e635;
1659
+ --t-primary-hover: #84cc16;
1660
+ --t-primary-light: #ecfccb;
1661
+ --t-primary-text: #09090b;
1662
+ --t-secondary-bg: #fafafa;
1663
+ --t-secondary-text: #09090b;
1664
+ --t-secondary-border: #09090b;
1665
+ --t-ghost-text: #09090b;
1666
+ --t-ghost-hover: #f5f5f4;
1667
+ --t-danger: #ec4899;
1668
+ --t-danger-hover: #db2777;
1669
+ --t-success: #a3e635;
1670
+ --t-success-light: #ecfccb;
1671
+ --t-success-text: #365314;
1672
+ --t-warning: #fbbf24;
1673
+ --t-warning-light: #fef3c7;
1674
+ --t-warning-text: #92400e;
1675
+ --t-info: #38bdf8;
1676
+ --t-info-light: #e0f2fe;
1677
+ --t-info-text: #075985;
1678
+ --t-danger-light: #fce7f3;
1679
+ --t-danger-text: #9d174d;
1680
+ --t-sidebar-bg: #fafaf9;
1681
+ --t-sidebar-border: #09090b;
1682
+ --t-sidebar-text: #78716c;
1683
+ --t-sidebar-active-bg: #bef264;
1684
+ --t-sidebar-active-text: #09090b;
1685
+ --t-sidebar-active-border: #09090b;
1686
+ --t-sidebar-hover: #f5f5f4;
1687
+ --t-sidebar-section: #a8a29e;
1688
+ --t-table-header-bg: #09090b;
1689
+ --t-table-header-text: #ffffff;
1690
+ --t-table-border: #09090b;
1691
+ --t-table-hover: #ecfccb;
1692
+ --t-input-bg: #ffffff;
1693
+ --t-input-border: #09090b;
1694
+ --t-input-focus: #a3e635;
1695
+ --t-input-focus-ring: #a3e635;
1696
+ --t-badge-primary-bg: #bef264;
1697
+ --t-badge-primary-text: #09090b;
1698
+ --t-badge-neutral-bg: #e7e5e4;
1699
+ --t-badge-neutral-text: #09090b;
1700
+ --t-card-shadow: 6px 6px 0 0 #09090b;
1701
+ --t-font-heading: 'Space Grotesk', ui-sans-serif, system-ui, sans-serif;
1702
+ --t-font-body: 'JetBrains Mono', monospace;
1703
+ --t-radius-sm: 0px;
1704
+ --t-radius-md: 0px;
1705
+ --t-radius-badge: 0px;
1706
+ --t-accent-bg: #bef264;
1707
+ --t-accent-text: #09090b;
1708
+ --t-stat-value-color: #09090b;
1709
+ --t-border-width: 3px;
1710
+ --t-heading-xl-size: 2.5rem;
1711
+ --t-heading-lg-size: 1.75rem;
1712
+ --t-heading-md-size: 1.25rem;
1713
+ --t-heading-xl-weight: 700;
1714
+ --t-heading-tracking: -0.04em;
1715
+ --t-body-size: 0.9375rem;
1716
+ --t-btn-radius-primary: 9999px 4px 4px 9999px;
1717
+ --t-btn-radius-secondary: 4px 9999px 9999px 4px;
1718
+ --t-btn-radius-ghost: 0px;
1719
+ --t-btn-radius-danger: 9999px 4px 4px 9999px;
1720
+ --t-btn-padding: 12px 24px;
1721
+ --t-btn-border: 3px solid #09090b;
1722
+ --t-btn-shadow: 4px 4px 0 0 #09090b;
1723
+ --t-card-radius: 0 24px 0 24px;
1724
+ --t-card-border: 3px solid #09090b;
1725
+ }
1726
+
1727
+ /* Asymmetric Brutalist (Dark) */
1728
+ .theme-brutalist.dark-preview .theme-preview-wrapper {
1729
+ --t-bg: #09090b;
1730
+ --t-bg-elevated: #171717;
1731
+ --t-bg-muted: #262626;
1732
+ --t-border: #d6d3d1;
1733
+ --t-text: #d6d3d1;
1734
+ --t-text-heading: #ffffff;
1735
+ --t-text-muted: #a8a29e;
1736
+ --t-text-caption: #78716c;
1737
+ --t-primary: #bef264;
1738
+ --t-primary-hover: #a3e635;
1739
+ --t-primary-light: rgba(190, 242, 100, 0.15);
1740
+ --t-primary-text: #09090b;
1741
+ --t-secondary-bg: #262626;
1742
+ --t-secondary-text: #f5f5f4;
1743
+ --t-secondary-border: #d6d3d1;
1744
+ --t-ghost-text: #f5f5f4;
1745
+ --t-ghost-hover: #262626;
1746
+ --t-danger: #f472b6;
1747
+ --t-success-light: rgba(163, 230, 53, 0.15);
1748
+ --t-success-text: #bef264;
1749
+ --t-warning-light: rgba(251, 191, 36, 0.15);
1750
+ --t-warning-text: #fcd34d;
1751
+ --t-info-light: rgba(56, 189, 248, 0.15);
1752
+ --t-info-text: #7dd3fc;
1753
+ --t-danger-light: rgba(236, 72, 153, 0.15);
1754
+ --t-danger-text: #f9a8d4;
1755
+ --t-sidebar-bg: #171717;
1756
+ --t-sidebar-border: #d6d3d1;
1757
+ --t-sidebar-text: #a8a29e;
1758
+ --t-sidebar-active-bg: rgba(163, 230, 53, 0.2);
1759
+ --t-sidebar-active-text: #bef264;
1760
+ --t-sidebar-active-border: #d6d3d1;
1761
+ --t-sidebar-hover: #262626;
1762
+ --t-sidebar-section: #78716c;
1763
+ --t-table-header-bg: #262626;
1764
+ --t-table-header-text: #f5f5f4;
1765
+ --t-table-border: #d6d3d1;
1766
+ --t-table-hover: rgba(163, 230, 53, 0.08);
1767
+ --t-input-bg: #09090b;
1768
+ --t-input-border: #d6d3d1;
1769
+ --t-input-focus-ring: #bef264;
1770
+ --t-badge-primary-bg: rgba(163, 230, 53, 0.2);
1771
+ --t-badge-primary-text: #bef264;
1772
+ --t-badge-neutral-bg: #262626;
1773
+ --t-badge-neutral-text: #a8a29e;
1774
+ --t-card-shadow: 6px 6px 0 0 #d6d3d1;
1775
+ --t-accent-bg: rgba(163, 230, 53, 0.15);
1776
+ --t-accent-text: #bef264;
1777
+ --t-stat-value-color: #bef264;
1778
+ --t-btn-shadow: 4px 4px 0 0 #d6d3d1;
1779
+ }
1780
+
1781
+ /* ===== NEON TERMINAL ===== */
1782
+ .theme-neon .theme-preview-wrapper {
1783
+ --t-bg: #07080A;
1784
+ --t-bg-elevated: #0D0F14;
1785
+ --t-bg-muted: #13161D;
1786
+ --t-border: #242832;
1787
+ --t-text: #E8ECF1;
1788
+ --t-text-heading: #E8ECF1;
1789
+ --t-text-muted: #8B95A5;
1790
+ --t-text-caption: #4A5568;
1791
+ --t-primary: #00FFEE;
1792
+ --t-primary-hover: #0ABDC6;
1793
+ --t-primary-light: rgba(0, 255, 238, 0.1);
1794
+ --t-primary-text: #07080A;
1795
+ --t-secondary-bg: #13161D;
1796
+ --t-secondary-text: #E8ECF1;
1797
+ --t-secondary-border: #242832;
1798
+ --t-ghost-text: #00FFEE;
1799
+ --t-ghost-hover: rgba(0, 255, 238, 0.05);
1800
+ --t-danger: #FF00AA;
1801
+ --t-danger-hover: #cc0088;
1802
+ --t-success: #39FF14;
1803
+ --t-success-light: rgba(57, 255, 20, 0.1);
1804
+ --t-success-text: #39FF14;
1805
+ --t-warning: #FFE600;
1806
+ --t-warning-light: rgba(255, 230, 0, 0.1);
1807
+ --t-warning-text: #FFE600;
1808
+ --t-info: #BD00FF;
1809
+ --t-info-light: rgba(189, 0, 255, 0.1);
1810
+ --t-info-text: #BD00FF;
1811
+ --t-danger-light: rgba(255, 0, 170, 0.1);
1812
+ --t-danger-text: #FF00AA;
1813
+ --t-sidebar-bg: #0D0F14;
1814
+ --t-sidebar-border: #242832;
1815
+ --t-sidebar-text: #8B95A5;
1816
+ --t-sidebar-active-bg: rgba(0, 255, 238, 0.05);
1817
+ --t-sidebar-active-text: #00FFEE;
1818
+ --t-sidebar-active-border: #00FFEE;
1819
+ --t-sidebar-hover: #1A1E27;
1820
+ --t-sidebar-section: #4A5568;
1821
+ --t-table-header-bg: #13161D;
1822
+ --t-table-header-text: #4A5568;
1823
+ --t-table-border: #242832;
1824
+ --t-table-hover: #1A1E27;
1825
+ --t-input-bg: #07080A;
1826
+ --t-input-border: #242832;
1827
+ --t-input-focus: #00FFEE;
1828
+ --t-input-focus-ring: rgba(0, 255, 238, 0.15);
1829
+ --t-badge-primary-bg: rgba(0, 255, 238, 0.1);
1830
+ --t-badge-primary-text: #00FFEE;
1831
+ --t-badge-neutral-bg: #1A1E27;
1832
+ --t-badge-neutral-text: #8B95A5;
1833
+ --t-card-shadow: none;
1834
+ --t-font-heading: 'JetBrains Mono', monospace;
1835
+ --t-font-body: 'IBM Plex Sans', sans-serif;
1836
+ --t-radius-sm: 2px;
1837
+ --t-radius-md: 0px;
1838
+ --t-radius-badge: 9999px;
1839
+ --t-accent-bg: rgba(0, 255, 238, 0.08);
1840
+ --t-accent-text: #00FFEE;
1841
+ --t-stat-value-color: #00FFEE;
1842
+ --t-border-width: 1px;
1843
+ --t-heading-xl-size: 2.25rem;
1844
+ --t-heading-lg-size: 1.5rem;
1845
+ --t-heading-md-size: 1.125rem;
1846
+ --t-heading-xl-weight: 800;
1847
+ --t-heading-tracking: -0.03em;
1848
+ --t-body-size: 0.9375rem;
1849
+ --t-btn-radius-primary: 9999px;
1850
+ --t-btn-radius-secondary: 9999px;
1851
+ --t-btn-radius-ghost: 9999px;
1852
+ --t-btn-radius-danger: 9999px;
1853
+ --t-btn-padding: 10px 28px;
1854
+ --t-btn-border: none;
1855
+ --t-btn-shadow: 0 0 5px rgba(0, 255, 238, 0.4), 0 0 20px rgba(0, 255, 238, 0.15);
1856
+ --t-card-radius: 0px;
1857
+ --t-card-border: 1px solid #242832;
1858
+ }
1859
+
1860
+ /* Neon Terminal (Light -- rarely used, keep same as dark with lighter overlay) */
1861
+ .theme-neon.dark-preview .theme-preview-wrapper {
1862
+ /* Neon is dark-first, so the "dark" toggle shows a lighter variant */
1863
+ --t-bg: #13161D;
1864
+ --t-bg-elevated: #1A1E27;
1865
+ --t-bg-muted: #242832;
1866
+ --t-border: #2D3341;
1867
+ --t-sidebar-bg: #13161D;
1868
+ --t-table-header-bg: #1A1E27;
1869
+ --t-input-bg: #0D0F14;
1870
+ }
1871
+
1872
+ /* ===== GEOMETRIC MINIMAL (Light) ===== */
1873
+ .theme-geometric .theme-preview-wrapper {
1874
+ --t-bg: #FFFFFF;
1875
+ --t-bg-elevated: #FFFFFF;
1876
+ --t-bg-muted: #F5F5F0;
1877
+ --t-border: #E0E0E0;
1878
+ --t-text: #404040;
1879
+ --t-text-heading: #0A0A0A;
1880
+ --t-text-muted: #404040;
1881
+ --t-text-caption: #999999;
1882
+ --t-primary: #003DA5;
1883
+ --t-primary-hover: #002B75;
1884
+ --t-primary-light: rgba(0, 61, 165, 0.08);
1885
+ --t-primary-text: #ffffff;
1886
+ --t-secondary-bg: transparent;
1887
+ --t-secondary-text: #0A0A0A;
1888
+ --t-secondary-border: #0A0A0A;
1889
+ --t-ghost-text: #0A0A0A;
1890
+ --t-ghost-hover: #F5F5F0;
1891
+ --t-danger: #D62828;
1892
+ --t-danger-hover: #b01f1f;
1893
+ --t-success: #003DA5;
1894
+ --t-success-light: rgba(0, 61, 165, 0.08);
1895
+ --t-success-text: #003DA5;
1896
+ --t-warning: #F5B700;
1897
+ --t-warning-light: rgba(245, 183, 0, 0.1);
1898
+ --t-warning-text: #8B6914;
1899
+ --t-info: #003DA5;
1900
+ --t-info-light: rgba(0, 61, 165, 0.08);
1901
+ --t-info-text: #003DA5;
1902
+ --t-danger-light: rgba(214, 40, 40, 0.08);
1903
+ --t-danger-text: #D62828;
1904
+ --t-sidebar-bg: #0A0A0A;
1905
+ --t-sidebar-border: transparent;
1906
+ --t-sidebar-text: #999999;
1907
+ --t-sidebar-active-bg: #003DA5;
1908
+ --t-sidebar-active-text: #ffffff;
1909
+ --t-sidebar-active-border: transparent;
1910
+ --t-sidebar-hover: rgba(255,255,255,0.05);
1911
+ --t-sidebar-section: #666666;
1912
+ --t-table-header-bg: #0A0A0A;
1913
+ --t-table-header-text: #ffffff;
1914
+ --t-table-border: #E0E0E0;
1915
+ --t-table-hover: #F5F5F0;
1916
+ --t-input-bg: #ffffff;
1917
+ --t-input-border: #E0E0E0;
1918
+ --t-input-focus: #003DA5;
1919
+ --t-input-focus-ring: rgba(0, 61, 165, 0.15);
1920
+ --t-badge-primary-bg: #003DA5;
1921
+ --t-badge-primary-text: #ffffff;
1922
+ --t-badge-neutral-bg: transparent;
1923
+ --t-badge-neutral-text: #0A0A0A;
1924
+ --t-card-shadow: none;
1925
+ --t-font-heading: 'Syne', ui-sans-serif, system-ui, sans-serif;
1926
+ --t-font-body: 'Plus Jakarta Sans', ui-sans-serif, system-ui, sans-serif;
1927
+ --t-radius-sm: 0px;
1928
+ --t-radius-md: 0px;
1929
+ --t-radius-badge: 9999px;
1930
+ --t-accent-bg: #0A0A0A;
1931
+ --t-accent-text: #ffffff;
1932
+ --t-stat-value-color: #0A0A0A;
1933
+ --t-border-width: 2px;
1934
+ --t-heading-xl-size: 2.5rem;
1935
+ --t-heading-lg-size: 1.875rem;
1936
+ --t-heading-md-size: 1.25rem;
1937
+ --t-heading-xl-weight: 800;
1938
+ --t-heading-tracking: -0.02em;
1939
+ --t-body-size: 1rem;
1940
+ --t-btn-radius-primary: 9999px;
1941
+ --t-btn-radius-secondary: 0px;
1942
+ --t-btn-radius-ghost: 0px;
1943
+ --t-btn-radius-danger: 9999px;
1944
+ --t-btn-padding: 14px 36px;
1945
+ --t-btn-border: none;
1946
+ --t-btn-shadow: none;
1947
+ --t-card-radius: 0px;
1948
+ --t-card-border: 1px solid #E0E0E0;
1949
+ }
1950
+
1951
+ /* Geometric Minimal (Dark) */
1952
+ .theme-geometric.dark-preview .theme-preview-wrapper {
1953
+ --t-bg: #0A0A0A;
1954
+ --t-bg-elevated: #1A1A1A;
1955
+ --t-bg-muted: #262626;
1956
+ --t-border: #404040;
1957
+ --t-text: #E0E0E0;
1958
+ --t-text-heading: #F5F5F0;
1959
+ --t-text-muted: #999999;
1960
+ --t-text-caption: #666666;
1961
+ --t-primary: #003DA5;
1962
+ --t-primary-hover: #0050D4;
1963
+ --t-primary-light: rgba(0, 61, 165, 0.15);
1964
+ --t-secondary-bg: transparent;
1965
+ --t-secondary-text: #F5F5F0;
1966
+ --t-secondary-border: #F5F5F0;
1967
+ --t-ghost-text: #F5F5F0;
1968
+ --t-ghost-hover: #262626;
1969
+ --t-danger: #D62828;
1970
+ --t-success-light: rgba(0, 61, 165, 0.15);
1971
+ --t-success-text: #6B9FE8;
1972
+ --t-warning-light: rgba(245, 183, 0, 0.15);
1973
+ --t-warning-text: #F5B700;
1974
+ --t-info-light: rgba(0, 61, 165, 0.15);
1975
+ --t-info-text: #6B9FE8;
1976
+ --t-danger-light: rgba(214, 40, 40, 0.15);
1977
+ --t-danger-text: #E86B6B;
1978
+ --t-sidebar-bg: #0A0A0A;
1979
+ --t-sidebar-border: #404040;
1980
+ --t-sidebar-text: #666666;
1981
+ --t-sidebar-active-bg: #003DA5;
1982
+ --t-sidebar-active-text: #ffffff;
1983
+ --t-sidebar-hover: rgba(255,255,255,0.05);
1984
+ --t-sidebar-section: #555555;
1985
+ --t-table-header-bg: #1A1A1A;
1986
+ --t-table-header-text: #E0E0E0;
1987
+ --t-table-border: #404040;
1988
+ --t-table-hover: #262626;
1989
+ --t-input-bg: #0A0A0A;
1990
+ --t-input-border: #404040;
1991
+ --t-badge-primary-bg: #003DA5;
1992
+ --t-badge-primary-text: #ffffff;
1993
+ --t-badge-neutral-bg: #262626;
1994
+ --t-badge-neutral-text: #E0E0E0;
1995
+ --t-card-shadow: none;
1996
+ --t-accent-bg: #F5F5F0;
1997
+ --t-accent-text: #0A0A0A;
1998
+ --t-stat-value-color: #F5F5F0;
1999
+ }
2000
+
2001
+ /* ===== REFINED BRUTALIST (Light) ===== */
2002
+ .theme-refined .theme-preview-wrapper {
2003
+ --t-bg: #fafaf9;
2004
+ --t-bg-elevated: #ffffff;
2005
+ --t-bg-muted: #f5f5f4;
2006
+ --t-border: #262626;
2007
+ --t-text: #57534e;
2008
+ --t-text-heading: #262626;
2009
+ --t-text-muted: #78716c;
2010
+ --t-text-caption: #a8a29e;
2011
+ --t-primary: #7c9a84;
2012
+ --t-primary-hover: #63806b;
2013
+ --t-primary-light: #e8eeea;
2014
+ --t-primary-text: #ffffff;
2015
+ --t-secondary-bg: #fafaf9;
2016
+ --t-secondary-text: #262626;
2017
+ --t-secondary-border: #262626;
2018
+ --t-ghost-text: #262626;
2019
+ --t-ghost-hover: #f5f5f4;
2020
+ --t-danger: #c4818b;
2021
+ --t-danger-hover: #a8636d;
2022
+ --t-success: #7c9a84;
2023
+ --t-success-light: #e8eeea;
2024
+ --t-success-text: #3a4e3f;
2025
+ --t-warning: #c4a265;
2026
+ --t-warning-light: #eedcb5;
2027
+ --t-warning-text: #8a6000;
2028
+ --t-info: #c4a265;
2029
+ --t-info-light: #eedcb5;
2030
+ --t-info-text: #8a6000;
2031
+ --t-danger-light: #f2e4e6;
2032
+ --t-danger-text: #8c4a54;
2033
+ --t-sidebar-bg: #f5f5f4;
2034
+ --t-sidebar-border: #262626;
2035
+ --t-sidebar-text: #78716c;
2036
+ --t-sidebar-active-bg: #c5d5cb;
2037
+ --t-sidebar-active-text: #262626;
2038
+ --t-sidebar-active-border: #262626;
2039
+ --t-sidebar-hover: #e7e5e4;
2040
+ --t-sidebar-section: #a8a29e;
2041
+ --t-table-header-bg: #262626;
2042
+ --t-table-header-text: #f5f5f4;
2043
+ --t-table-border: #d6d3d1;
2044
+ --t-table-hover: #e8eeea;
2045
+ --t-input-bg: #ffffff;
2046
+ --t-input-border: #262626;
2047
+ --t-input-focus: #63806b;
2048
+ --t-input-focus-ring: #7c9a84;
2049
+ --t-badge-primary-bg: #c5d5cb;
2050
+ --t-badge-primary-text: #262626;
2051
+ --t-badge-neutral-bg: #e7e5e4;
2052
+ --t-badge-neutral-text: #262626;
2053
+ --t-card-shadow: 5px 5px 0 0 #7c9a84;
2054
+ --t-font-heading: 'Space Grotesk', ui-sans-serif, system-ui, sans-serif;
2055
+ --t-font-body: 'DM Sans', ui-sans-serif, system-ui, sans-serif;
2056
+ --t-radius-sm: 0px;
2057
+ --t-radius-md: 0px;
2058
+ --t-radius-badge: 0px;
2059
+ --t-accent-bg: #e8eeea;
2060
+ --t-accent-text: #262626;
2061
+ --t-stat-value-color: #262626;
2062
+ --t-border-width: 2px;
2063
+ --t-heading-xl-size: 2.5rem;
2064
+ --t-heading-lg-size: 1.75rem;
2065
+ --t-heading-md-size: 1.25rem;
2066
+ --t-heading-xl-weight: 700;
2067
+ --t-heading-tracking: -0.04em;
2068
+ --t-body-size: 1rem;
2069
+ --t-btn-radius-primary: 9999px 4px 4px 9999px;
2070
+ --t-btn-radius-secondary: 4px 9999px 9999px 4px;
2071
+ --t-btn-radius-ghost: 0px;
2072
+ --t-btn-radius-danger: 9999px 4px 4px 9999px;
2073
+ --t-btn-padding: 10px 24px;
2074
+ --t-btn-border: 2px solid #262626;
2075
+ --t-btn-shadow: 3px 3px 0 0 #7c9a84;
2076
+ --t-card-radius: 0 24px 0 24px;
2077
+ --t-card-border: 2px solid #262626;
2078
+ }
2079
+
2080
+ /* Refined Brutalist (Dark) */
2081
+ .theme-refined.dark-preview .theme-preview-wrapper {
2082
+ --t-bg: #171717;
2083
+ --t-bg-elevated: #262626;
2084
+ --t-bg-muted: #333333;
2085
+ --t-border: #78716c;
2086
+ --t-text: #a8a29e;
2087
+ --t-text-heading: #f5f5f4;
2088
+ --t-text-muted: #78716c;
2089
+ --t-text-caption: #57534e;
2090
+ --t-primary: #7c9a84;
2091
+ --t-primary-hover: #63806b;
2092
+ --t-primary-light: rgba(124, 154, 132, 0.15);
2093
+ --t-primary-text: #ffffff;
2094
+ --t-secondary-bg: #333333;
2095
+ --t-secondary-text: #f5f5f4;
2096
+ --t-secondary-border: #78716c;
2097
+ --t-ghost-text: #f5f5f4;
2098
+ --t-ghost-hover: #333333;
2099
+ --t-danger: #d4a0a8;
2100
+ --t-success-light: rgba(124, 154, 132, 0.15);
2101
+ --t-success-text: #7c9a84;
2102
+ --t-warning-light: rgba(196, 162, 101, 0.15);
2103
+ --t-warning-text: #c4a265;
2104
+ --t-info-light: rgba(196, 162, 101, 0.15);
2105
+ --t-info-text: #c4a265;
2106
+ --t-danger-light: rgba(196, 129, 139, 0.15);
2107
+ --t-danger-text: #d4a0a8;
2108
+ --t-sidebar-bg: #171717;
2109
+ --t-sidebar-border: #78716c;
2110
+ --t-sidebar-text: #78716c;
2111
+ --t-sidebar-active-bg: rgba(124, 154, 132, 0.15);
2112
+ --t-sidebar-active-text: #7c9a84;
2113
+ --t-sidebar-active-border: #78716c;
2114
+ --t-sidebar-hover: #333333;
2115
+ --t-sidebar-section: #57534e;
2116
+ --t-table-header-bg: #333333;
2117
+ --t-table-header-text: #e7e5e4;
2118
+ --t-table-border: #78716c;
2119
+ --t-table-hover: rgba(124, 154, 132, 0.08);
2120
+ --t-input-bg: #171717;
2121
+ --t-input-border: #78716c;
2122
+ --t-input-focus-ring: #3a4e3f;
2123
+ --t-badge-primary-bg: rgba(124, 154, 132, 0.2);
2124
+ --t-badge-primary-text: #7c9a84;
2125
+ --t-badge-neutral-bg: #333333;
2126
+ --t-badge-neutral-text: #a8a29e;
2127
+ --t-card-shadow: 5px 5px 0 0 #3a4e3f;
2128
+ --t-accent-bg: rgba(124, 154, 132, 0.15);
2129
+ --t-accent-text: #7c9a84;
2130
+ --t-stat-value-color: #7c9a84;
2131
+ --t-btn-shadow: 3px 3px 0 0 #3a4e3f;
2132
+ }
2133
+
2134
+ /* ===== NEON TERMINAL: AMBER (Dark - default) ===== */
2135
+ .theme-neonAmber .theme-preview-wrapper {
2136
+ --t-bg: #0A0806;
2137
+ --t-bg-elevated: #12100B;
2138
+ --t-bg-muted: #1A1710;
2139
+ --t-border: #302A1E;
2140
+ --t-text: #F0E6D2;
2141
+ --t-text-heading: #F0E6D2;
2142
+ --t-text-muted: #A89478;
2143
+ --t-text-caption: #5C5040;
2144
+ --t-primary: #FFB800;
2145
+ --t-primary-hover: #C48A00;
2146
+ --t-primary-light: rgba(255, 184, 0, 0.1);
2147
+ --t-primary-text: #0A0806;
2148
+ --t-secondary-bg: #1A1710;
2149
+ --t-secondary-text: #F0E6D2;
2150
+ --t-secondary-border: #302A1E;
2151
+ --t-ghost-text: #FFB800;
2152
+ --t-ghost-hover: rgba(255, 184, 0, 0.05);
2153
+ --t-danger: #FF6B00;
2154
+ --t-danger-hover: #cc5500;
2155
+ --t-success: #39FF14;
2156
+ --t-success-light: rgba(57, 255, 20, 0.1);
2157
+ --t-success-text: #39FF14;
2158
+ --t-warning: #FFE066;
2159
+ --t-warning-light: rgba(255, 224, 102, 0.1);
2160
+ --t-warning-text: #FFE066;
2161
+ --t-info: #E8782A;
2162
+ --t-info-light: rgba(232, 120, 42, 0.1);
2163
+ --t-info-text: #E8782A;
2164
+ --t-danger-light: rgba(255, 107, 0, 0.1);
2165
+ --t-danger-text: #FF6B00;
2166
+ --t-sidebar-bg: #12100B;
2167
+ --t-sidebar-border: #302A1E;
2168
+ --t-sidebar-text: #A89478;
2169
+ --t-sidebar-active-bg: rgba(255, 184, 0, 0.05);
2170
+ --t-sidebar-active-text: #FFB800;
2171
+ --t-sidebar-active-border: #FFB800;
2172
+ --t-sidebar-hover: #241F16;
2173
+ --t-sidebar-section: #5C5040;
2174
+ --t-table-header-bg: #1A1710;
2175
+ --t-table-header-text: #5C5040;
2176
+ --t-table-border: #302A1E;
2177
+ --t-table-hover: #241F16;
2178
+ --t-input-bg: #0A0806;
2179
+ --t-input-border: #302A1E;
2180
+ --t-input-focus: #FFB800;
2181
+ --t-input-focus-ring: rgba(255, 184, 0, 0.15);
2182
+ --t-badge-primary-bg: rgba(255, 184, 0, 0.1);
2183
+ --t-badge-primary-text: #FFB800;
2184
+ --t-badge-neutral-bg: #241F16;
2185
+ --t-badge-neutral-text: #A89478;
2186
+ --t-card-shadow: none;
2187
+ --t-font-heading: 'JetBrains Mono', monospace;
2188
+ --t-font-body: 'IBM Plex Sans', sans-serif;
2189
+ --t-radius-sm: 2px;
2190
+ --t-radius-md: 0px;
2191
+ --t-radius-badge: 9999px;
2192
+ --t-accent-bg: rgba(255, 184, 0, 0.08);
2193
+ --t-accent-text: #FFB800;
2194
+ --t-stat-value-color: #FFB800;
2195
+ --t-border-width: 1px;
2196
+ --t-heading-xl-size: 2.25rem;
2197
+ --t-heading-lg-size: 1.5rem;
2198
+ --t-heading-md-size: 1.125rem;
2199
+ --t-heading-xl-weight: 800;
2200
+ --t-heading-tracking: -0.03em;
2201
+ --t-body-size: 0.9375rem;
2202
+ --t-btn-radius-primary: 9999px;
2203
+ --t-btn-radius-secondary: 9999px;
2204
+ --t-btn-radius-ghost: 9999px;
2205
+ --t-btn-radius-danger: 9999px;
2206
+ --t-btn-padding: 10px 28px;
2207
+ --t-btn-border: none;
2208
+ --t-btn-shadow: 0 0 5px rgba(255, 184, 0, 0.4), 0 0 20px rgba(255, 184, 0, 0.15);
2209
+ --t-card-radius: 0px;
2210
+ --t-card-border: 1px solid #302A1E;
2211
+ }
2212
+
2213
+ /* Neon Terminal: Amber (Light) */
2214
+ .theme-neonAmber.dark-preview .theme-preview-wrapper {
2215
+ --t-bg: #FAF5EA;
2216
+ --t-bg-elevated: #F3ECDD;
2217
+ --t-bg-muted: #EBE3D0;
2218
+ --t-border: #D5C9B0;
2219
+ --t-text: #6B5D48;
2220
+ --t-text-heading: #2C2416;
2221
+ --t-text-muted: #6B5D48;
2222
+ --t-text-caption: #A89880;
2223
+ --t-primary: #B07800;
2224
+ --t-primary-hover: #8A6000;
2225
+ --t-primary-light: rgba(176, 120, 0, 0.1);
2226
+ --t-primary-text: #ffffff;
2227
+ --t-secondary-bg: #EBE3D0;
2228
+ --t-secondary-text: #2C2416;
2229
+ --t-secondary-border: #D5C9B0;
2230
+ --t-ghost-text: #B07800;
2231
+ --t-ghost-hover: #EBE3D0;
2232
+ --t-danger: #C44800;
2233
+ --t-success: #3D7A1C;
2234
+ --t-success-light: rgba(61, 122, 28, 0.1);
2235
+ --t-success-text: #3D7A1C;
2236
+ --t-warning: #A67C00;
2237
+ --t-warning-light: rgba(166, 124, 0, 0.1);
2238
+ --t-warning-text: #A67C00;
2239
+ --t-info: #9A5B20;
2240
+ --t-info-light: rgba(154, 91, 32, 0.1);
2241
+ --t-info-text: #9A5B20;
2242
+ --t-danger-light: rgba(196, 72, 0, 0.1);
2243
+ --t-danger-text: #C44800;
2244
+ --t-sidebar-bg: #F3ECDD;
2245
+ --t-sidebar-border: #D5C9B0;
2246
+ --t-sidebar-text: #A89880;
2247
+ --t-sidebar-active-bg: rgba(176, 120, 0, 0.1);
2248
+ --t-sidebar-active-text: #B07800;
2249
+ --t-sidebar-active-border: #B07800;
2250
+ --t-sidebar-hover: #E2D8C3;
2251
+ --t-sidebar-section: #A89880;
2252
+ --t-table-header-bg: #2C2416;
2253
+ --t-table-header-text: #F0E6D2;
2254
+ --t-table-border: #D5C9B0;
2255
+ --t-table-hover: #E2D8C3;
2256
+ --t-input-bg: #F3ECDD;
2257
+ --t-input-border: #D5C9B0;
2258
+ --t-badge-primary-bg: rgba(176, 120, 0, 0.12);
2259
+ --t-badge-primary-text: #B07800;
2260
+ --t-badge-neutral-bg: #E2D8C3;
2261
+ --t-badge-neutral-text: #6B5D48;
2262
+ --t-card-shadow: none;
2263
+ --t-accent-bg: rgba(176, 120, 0, 0.08);
2264
+ --t-accent-text: #B07800;
2265
+ --t-stat-value-color: #2C2416;
2266
+ --t-btn-shadow: none;
2267
+ }
2268
+
2269
+ /* ===== NEON TERMINAL: VIOLET (Dark - default) ===== */
2270
+ .theme-neonViolet .theme-preview-wrapper {
2271
+ --t-bg: #08060E;
2272
+ --t-bg-elevated: #0F0B19;
2273
+ --t-bg-muted: #161122;
2274
+ --t-border: #2A2140;
2275
+ --t-text: #EDE9FE;
2276
+ --t-text-heading: #EDE9FE;
2277
+ --t-text-muted: #9F8BBF;
2278
+ --t-text-caption: #5B4A73;
2279
+ --t-primary: #A855F7;
2280
+ --t-primary-hover: #7C3AED;
2281
+ --t-primary-light: rgba(168, 85, 247, 0.1);
2282
+ --t-primary-text: #ffffff;
2283
+ --t-secondary-bg: #161122;
2284
+ --t-secondary-text: #EDE9FE;
2285
+ --t-secondary-border: #2A2140;
2286
+ --t-ghost-text: #A855F7;
2287
+ --t-ghost-hover: rgba(168, 85, 247, 0.05);
2288
+ --t-danger: #F472B6;
2289
+ --t-danger-hover: #ec4899;
2290
+ --t-success: #34D399;
2291
+ --t-success-light: rgba(52, 211, 153, 0.1);
2292
+ --t-success-text: #34D399;
2293
+ --t-warning: #FBBF24;
2294
+ --t-warning-light: rgba(251, 191, 36, 0.1);
2295
+ --t-warning-text: #FBBF24;
2296
+ --t-info: #60A5FA;
2297
+ --t-info-light: rgba(96, 165, 250, 0.1);
2298
+ --t-info-text: #60A5FA;
2299
+ --t-danger-light: rgba(244, 114, 182, 0.1);
2300
+ --t-danger-text: #F472B6;
2301
+ --t-sidebar-bg: #0F0B19;
2302
+ --t-sidebar-border: #2A2140;
2303
+ --t-sidebar-text: #9F8BBF;
2304
+ --t-sidebar-active-bg: rgba(168, 85, 247, 0.05);
2305
+ --t-sidebar-active-text: #C084FC;
2306
+ --t-sidebar-active-border: #A855F7;
2307
+ --t-sidebar-hover: #1E172E;
2308
+ --t-sidebar-section: #5B4A73;
2309
+ --t-table-header-bg: #161122;
2310
+ --t-table-header-text: #5B4A73;
2311
+ --t-table-border: #2A2140;
2312
+ --t-table-hover: #1E172E;
2313
+ --t-input-bg: #08060E;
2314
+ --t-input-border: #2A2140;
2315
+ --t-input-focus: #A855F7;
2316
+ --t-input-focus-ring: rgba(168, 85, 247, 0.15);
2317
+ --t-badge-primary-bg: rgba(168, 85, 247, 0.1);
2318
+ --t-badge-primary-text: #C084FC;
2319
+ --t-badge-neutral-bg: #1E172E;
2320
+ --t-badge-neutral-text: #9F8BBF;
2321
+ --t-card-shadow: none;
2322
+ --t-font-heading: 'JetBrains Mono', monospace;
2323
+ --t-font-body: 'IBM Plex Sans', sans-serif;
2324
+ --t-radius-sm: 2px;
2325
+ --t-radius-md: 0px;
2326
+ --t-radius-badge: 9999px;
2327
+ --t-accent-bg: rgba(168, 85, 247, 0.08);
2328
+ --t-accent-text: #C084FC;
2329
+ --t-stat-value-color: #A855F7;
2330
+ --t-border-width: 1px;
2331
+ --t-heading-xl-size: 2.25rem;
2332
+ --t-heading-lg-size: 1.5rem;
2333
+ --t-heading-md-size: 1.125rem;
2334
+ --t-heading-xl-weight: 800;
2335
+ --t-heading-tracking: -0.03em;
2336
+ --t-body-size: 0.9375rem;
2337
+ --t-btn-radius-primary: 9999px;
2338
+ --t-btn-radius-secondary: 9999px;
2339
+ --t-btn-radius-ghost: 9999px;
2340
+ --t-btn-radius-danger: 9999px;
2341
+ --t-btn-padding: 10px 28px;
2342
+ --t-btn-border: none;
2343
+ --t-btn-shadow: 0 0 5px rgba(168, 85, 247, 0.4), 0 0 20px rgba(168, 85, 247, 0.15);
2344
+ --t-card-radius: 0px;
2345
+ --t-card-border: 1px solid #2A2140;
2346
+ }
2347
+
2348
+ /* Neon Terminal: Violet (Light) */
2349
+ .theme-neonViolet.dark-preview .theme-preview-wrapper {
2350
+ --t-bg: #F8F5FF;
2351
+ --t-bg-elevated: #FFFFFF;
2352
+ --t-bg-muted: #F3EEFF;
2353
+ --t-border: #DDD1F5;
2354
+ --t-text: #5B4A73;
2355
+ --t-text-heading: #1E103A;
2356
+ --t-text-muted: #5B4A73;
2357
+ --t-text-caption: #9F8BBF;
2358
+ --t-primary: #7C3AED;
2359
+ --t-primary-hover: #6D28D9;
2360
+ --t-primary-light: rgba(124, 58, 237, 0.1);
2361
+ --t-primary-text: #ffffff;
2362
+ --t-secondary-bg: #F3EEFF;
2363
+ --t-secondary-text: #1E103A;
2364
+ --t-secondary-border: #DDD1F5;
2365
+ --t-ghost-text: #7C3AED;
2366
+ --t-ghost-hover: #EDE5FC;
2367
+ --t-danger: #E11D48;
2368
+ --t-success: #059669;
2369
+ --t-success-light: rgba(5, 150, 105, 0.1);
2370
+ --t-success-text: #059669;
2371
+ --t-warning: #D97706;
2372
+ --t-warning-light: rgba(217, 119, 6, 0.1);
2373
+ --t-warning-text: #D97706;
2374
+ --t-info: #3B82F6;
2375
+ --t-info-light: rgba(59, 130, 246, 0.1);
2376
+ --t-info-text: #3B82F6;
2377
+ --t-danger-light: rgba(225, 29, 72, 0.1);
2378
+ --t-danger-text: #E11D48;
2379
+ --t-sidebar-bg: #FFFFFF;
2380
+ --t-sidebar-border: #DDD1F5;
2381
+ --t-sidebar-text: #9F8BBF;
2382
+ --t-sidebar-active-bg: rgba(124, 58, 237, 0.08);
2383
+ --t-sidebar-active-text: #7C3AED;
2384
+ --t-sidebar-active-border: #7C3AED;
2385
+ --t-sidebar-hover: #EDE5FC;
2386
+ --t-sidebar-section: #9F8BBF;
2387
+ --t-table-header-bg: #F3EEFF;
2388
+ --t-table-header-text: #5B4A73;
2389
+ --t-table-border: #DDD1F5;
2390
+ --t-table-hover: #EDE5FC;
2391
+ --t-input-bg: #FFFFFF;
2392
+ --t-input-border: #DDD1F5;
2393
+ --t-badge-primary-bg: rgba(124, 58, 237, 0.1);
2394
+ --t-badge-primary-text: #7C3AED;
2395
+ --t-badge-neutral-bg: #EDE5FC;
2396
+ --t-badge-neutral-text: #5B4A73;
2397
+ --t-card-shadow: 0 1px 3px rgba(0,0,0,0.06);
2398
+ --t-accent-bg: rgba(124, 58, 237, 0.08);
2399
+ --t-accent-text: #7C3AED;
2400
+ --t-stat-value-color: #1E103A;
2401
+ --t-btn-shadow: none;
2402
+ }
2403
+
2404
+ /* ===== GRADIENT FLOW (Light) ===== */
2405
+ .theme-gradient .theme-preview-wrapper {
2406
+ --t-bg: #f8fafc;
2407
+ --t-bg-elevated: #ffffff;
2408
+ --t-bg-muted: #f1f5f9;
2409
+ --t-border: #e2e8f0;
2410
+ --t-text: #64748b;
2411
+ --t-text-heading: #0f172a;
2412
+ --t-text-muted: #94a3b8;
2413
+ --t-text-caption: #94a3b8;
2414
+ --t-primary: #6366f1;
2415
+ --t-primary-hover: #4f46e5;
2416
+ --t-primary-light: #eef2ff;
2417
+ --t-primary-text: #ffffff;
2418
+ --t-secondary-bg: #f0fdfa;
2419
+ --t-secondary-text: #0d9488;
2420
+ --t-secondary-border: #99f6e4;
2421
+ --t-ghost-text: #6366f1;
2422
+ --t-ghost-hover: #f1f5f9;
2423
+ --t-danger: #e11d48;
2424
+ --t-danger-hover: #be123c;
2425
+ --t-success: #10b981;
2426
+ --t-success-light: #ecfdf5;
2427
+ --t-success-text: #059669;
2428
+ --t-warning: #f59e0b;
2429
+ --t-warning-light: #fffbeb;
2430
+ --t-warning-text: #d97706;
2431
+ --t-info: #06b6d4;
2432
+ --t-info-light: #ecfeff;
2433
+ --t-info-text: #0891b2;
2434
+ --t-danger-light: #fff1f2;
2435
+ --t-danger-text: #e11d48;
2436
+ --t-sidebar-bg: linear-gradient(180deg, #4f46e5, #8b5cf6);
2437
+ --t-sidebar-border: transparent;
2438
+ --t-sidebar-text: rgba(255,255,255,0.7);
2439
+ --t-sidebar-active-bg: rgba(255,255,255,0.15);
2440
+ --t-sidebar-active-text: #ffffff;
2441
+ --t-sidebar-active-border: #ffffff;
2442
+ --t-sidebar-hover: rgba(255,255,255,0.1);
2443
+ --t-sidebar-section: rgba(255,255,255,0.4);
2444
+ --t-table-header-bg: linear-gradient(90deg, #4f46e5, #8b5cf6);
2445
+ --t-table-header-text: #ffffff;
2446
+ --t-table-border: #f1f5f9;
2447
+ --t-table-hover: rgba(99, 102, 241, 0.04);
2448
+ --t-input-bg: #ffffff;
2449
+ --t-input-border: #e2e8f0;
2450
+ --t-input-focus: #6366f1;
2451
+ --t-input-focus-ring: rgba(99, 102, 241, 0.2);
2452
+ --t-badge-primary-bg: #eef2ff;
2453
+ --t-badge-primary-text: #4338ca;
2454
+ --t-badge-neutral-bg: #f1f5f9;
2455
+ --t-badge-neutral-text: #475569;
2456
+ --t-card-shadow: 0 1px 3px rgba(0,0,0,0.06);
2457
+ --t-font-heading: 'Plus Jakarta Sans', ui-sans-serif, system-ui, sans-serif;
2458
+ --t-font-body: 'Inter', ui-sans-serif, system-ui, sans-serif;
2459
+ --t-radius-sm: 12px;
2460
+ --t-radius-md: 16px;
2461
+ --t-radius-badge: 8px;
2462
+ --t-accent-bg: #eef2ff;
2463
+ --t-accent-text: #4f46e5;
2464
+ --t-stat-value-color: #4f46e5;
2465
+ --t-border-width: 1px;
2466
+ --t-heading-xl-size: 2.25rem;
2467
+ --t-heading-lg-size: 1.5rem;
2468
+ --t-heading-md-size: 1.25rem;
2469
+ --t-heading-xl-weight: 700;
2470
+ --t-heading-tracking: -0.03em;
2471
+ --t-body-size: 1rem;
2472
+ --t-btn-radius-primary: 12px;
2473
+ --t-btn-radius-secondary: 12px;
2474
+ --t-btn-radius-ghost: 12px;
2475
+ --t-btn-radius-danger: 12px;
2476
+ --t-btn-padding: 10px 24px;
2477
+ --t-btn-border: none;
2478
+ --t-btn-shadow: none;
2479
+ --t-card-radius: 16px;
2480
+ --t-card-border: 1px solid #e2e8f0;
2481
+ }
2482
+
2483
+ /* Gradient Flow (Dark) */
2484
+ .theme-gradient.dark-preview .theme-preview-wrapper {
2485
+ --t-bg: #020617;
2486
+ --t-bg-elevated: #0f172a;
2487
+ --t-bg-muted: #1e293b;
2488
+ --t-border: #334155;
2489
+ --t-text: #94a3b8;
2490
+ --t-text-heading: #f1f5f9;
2491
+ --t-text-muted: #64748b;
2492
+ --t-text-caption: #475569;
2493
+ --t-primary: #818cf8;
2494
+ --t-primary-hover: #6366f1;
2495
+ --t-primary-light: rgba(99, 102, 241, 0.15);
2496
+ --t-secondary-bg: rgba(13, 148, 136, 0.1);
2497
+ --t-secondary-text: #5eead4;
2498
+ --t-secondary-border: rgba(13, 148, 136, 0.3);
2499
+ --t-ghost-text: #a5b4fc;
2500
+ --t-ghost-hover: #1e293b;
2501
+ --t-danger: #fb7185;
2502
+ --t-success-light: rgba(16, 185, 129, 0.15);
2503
+ --t-success-text: #6ee7b7;
2504
+ --t-warning-light: rgba(245, 158, 11, 0.15);
2505
+ --t-warning-text: #fcd34d;
2506
+ --t-info-light: rgba(6, 182, 212, 0.15);
2507
+ --t-info-text: #67e8f9;
2508
+ --t-danger-light: rgba(225, 29, 72, 0.15);
2509
+ --t-danger-text: #fda4af;
2510
+ --t-sidebar-bg: linear-gradient(180deg, #3730a3, #6d28d9);
2511
+ --t-sidebar-border: transparent;
2512
+ --t-sidebar-text: rgba(255,255,255,0.6);
2513
+ --t-sidebar-active-bg: rgba(255,255,255,0.12);
2514
+ --t-sidebar-active-text: #ffffff;
2515
+ --t-sidebar-active-border: #ffffff;
2516
+ --t-sidebar-hover: rgba(255,255,255,0.08);
2517
+ --t-sidebar-section: rgba(255,255,255,0.35);
2518
+ --t-table-header-bg: linear-gradient(90deg, #3730a3, #6d28d9);
2519
+ --t-table-header-text: rgba(255,255,255,0.9);
2520
+ --t-table-border: #334155;
2521
+ --t-table-hover: rgba(99, 102, 241, 0.06);
2522
+ --t-input-bg: #0f172a;
2523
+ --t-input-border: #334155;
2524
+ --t-badge-primary-bg: rgba(99, 102, 241, 0.2);
2525
+ --t-badge-primary-text: #a5b4fc;
2526
+ --t-badge-neutral-bg: #334155;
2527
+ --t-badge-neutral-text: #94a3b8;
2528
+ --t-card-shadow: 0 1px 3px rgba(0,0,0,0.3);
2529
+ --t-accent-bg: rgba(99, 102, 241, 0.15);
2530
+ --t-accent-text: #a5b4fc;
2531
+ --t-stat-value-color: #a5b4fc;
2532
+ }
2533
+
2534
+ /* ===== LIQUID GLASS (Light) ===== */
2535
+ .theme-glass .theme-preview-wrapper {
2536
+ --t-bg: #EEF0F5;
2537
+ --t-bg-elevated: rgba(255, 255, 255, 0.62);
2538
+ --t-bg-muted: #F3F4F8;
2539
+ --t-border: rgba(255, 255, 255, 0.45);
2540
+ --t-text: #636366;
2541
+ --t-text-heading: #1C1C1E;
2542
+ --t-text-muted: #636366;
2543
+ --t-text-caption: #AEAEB2;
2544
+ --t-primary: #007AFF;
2545
+ --t-primary-hover: #0063D1;
2546
+ --t-primary-light: rgba(0, 122, 255, 0.1);
2547
+ --t-primary-text: #ffffff;
2548
+ --t-secondary-bg: rgba(255, 255, 255, 0.4);
2549
+ --t-secondary-text: #1C1C1E;
2550
+ --t-secondary-border: rgba(209, 213, 219, 0.35);
2551
+ --t-ghost-text: #007AFF;
2552
+ --t-ghost-hover: rgba(255, 255, 255, 0.5);
2553
+ --t-danger: #FF3B30;
2554
+ --t-danger-hover: #cc2f26;
2555
+ --t-success: #34C759;
2556
+ --t-success-light: rgba(52, 199, 89, 0.1);
2557
+ --t-success-text: #248A3D;
2558
+ --t-warning: #FF9500;
2559
+ --t-warning-light: rgba(255, 149, 0, 0.1);
2560
+ --t-warning-text: #C27500;
2561
+ --t-info: #5AC8FA;
2562
+ --t-info-light: rgba(90, 200, 250, 0.1);
2563
+ --t-info-text: #0077B5;
2564
+ --t-danger-light: rgba(255, 59, 48, 0.1);
2565
+ --t-danger-text: #D70015;
2566
+ --t-sidebar-bg: rgba(255, 255, 255, 0.62);
2567
+ --t-sidebar-border: rgba(255, 255, 255, 0.45);
2568
+ --t-sidebar-text: #636366;
2569
+ --t-sidebar-active-bg: rgba(0, 122, 255, 0.1);
2570
+ --t-sidebar-active-text: #007AFF;
2571
+ --t-sidebar-active-border: #007AFF;
2572
+ --t-sidebar-hover: rgba(255, 255, 255, 0.72);
2573
+ --t-sidebar-section: #AEAEB2;
2574
+ --t-table-header-bg: rgba(255, 255, 255, 0.5);
2575
+ --t-table-header-text: #636366;
2576
+ --t-table-border: rgba(209, 213, 219, 0.35);
2577
+ --t-table-hover: rgba(255, 255, 255, 0.72);
2578
+ --t-input-bg: rgba(255, 255, 255, 0.6);
2579
+ --t-input-border: rgba(209, 213, 219, 0.35);
2580
+ --t-input-focus: #007AFF;
2581
+ --t-input-focus-ring: rgba(0, 122, 255, 0.2);
2582
+ --t-badge-primary-bg: rgba(0, 122, 255, 0.12);
2583
+ --t-badge-primary-text: #007AFF;
2584
+ --t-badge-neutral-bg: rgba(255, 255, 255, 0.5);
2585
+ --t-badge-neutral-text: #636366;
2586
+ --t-card-shadow: 0 1px 3px rgba(0,0,0,0.04), 0 4px 12px rgba(0,0,0,0.03), inset 0 1px 0 rgba(255,255,255,0.5);
2587
+ --t-font-heading: 'Inter', ui-sans-serif, system-ui, sans-serif;
2588
+ --t-font-body: 'Inter', ui-sans-serif, system-ui, sans-serif;
2589
+ --t-radius-sm: 10px;
2590
+ --t-radius-md: 16px;
2591
+ --t-radius-badge: 8px;
2592
+ --t-accent-bg: rgba(0, 122, 255, 0.08);
2593
+ --t-accent-text: #007AFF;
2594
+ --t-stat-value-color: #1C1C1E;
2595
+ --t-border-width: 1px;
2596
+ --t-heading-xl-size: 1.75rem;
2597
+ --t-heading-lg-size: 1.375rem;
2598
+ --t-heading-md-size: 1.0625rem;
2599
+ --t-heading-xl-weight: 700;
2600
+ --t-heading-tracking: -0.02em;
2601
+ --t-body-size: 0.9375rem;
2602
+ --t-btn-radius-primary: 10px;
2603
+ --t-btn-radius-secondary: 10px;
2604
+ --t-btn-radius-ghost: 10px;
2605
+ --t-btn-radius-danger: 10px;
2606
+ --t-btn-padding: 8px 20px;
2607
+ --t-btn-border: none;
2608
+ --t-btn-shadow: none;
2609
+ --t-card-radius: 16px;
2610
+ --t-card-border: 1px solid rgba(255, 255, 255, 0.45);
2611
+ }
2612
+
2613
+ /* Liquid Glass (Dark) */
2614
+ .theme-glass.dark-preview .theme-preview-wrapper {
2615
+ --t-bg: #0A0A0F;
2616
+ --t-bg-elevated: rgba(28, 28, 30, 0.55);
2617
+ --t-bg-muted: rgba(44, 44, 46, 0.4);
2618
+ --t-border: rgba(255, 255, 255, 0.12);
2619
+ --t-text: #AEAEB2;
2620
+ --t-text-heading: #F2F2F7;
2621
+ --t-text-muted: #AEAEB2;
2622
+ --t-text-caption: #636366;
2623
+ --t-primary: #0A84FF;
2624
+ --t-primary-hover: #409CFF;
2625
+ --t-primary-light: rgba(10, 132, 255, 0.15);
2626
+ --t-secondary-bg: rgba(44, 44, 46, 0.5);
2627
+ --t-secondary-text: #F2F2F7;
2628
+ --t-secondary-border: rgba(255, 255, 255, 0.12);
2629
+ --t-ghost-text: #0A84FF;
2630
+ --t-ghost-hover: rgba(44, 44, 46, 0.5);
2631
+ --t-danger: #FF453A;
2632
+ --t-success: #30D158;
2633
+ --t-success-light: rgba(48, 209, 88, 0.15);
2634
+ --t-success-text: #30D158;
2635
+ --t-warning: #FF9F0A;
2636
+ --t-warning-light: rgba(255, 159, 10, 0.15);
2637
+ --t-warning-text: #FF9F0A;
2638
+ --t-info: #64D2FF;
2639
+ --t-info-light: rgba(100, 210, 255, 0.15);
2640
+ --t-info-text: #64D2FF;
2641
+ --t-danger-light: rgba(255, 69, 58, 0.15);
2642
+ --t-danger-text: #FF453A;
2643
+ --t-sidebar-bg: rgba(28, 28, 30, 0.55);
2644
+ --t-sidebar-border: rgba(255, 255, 255, 0.12);
2645
+ --t-sidebar-text: #AEAEB2;
2646
+ --t-sidebar-active-bg: rgba(10, 132, 255, 0.15);
2647
+ --t-sidebar-active-text: #0A84FF;
2648
+ --t-sidebar-active-border: #0A84FF;
2649
+ --t-sidebar-hover: rgba(44, 44, 46, 0.65);
2650
+ --t-sidebar-section: #636366;
2651
+ --t-table-header-bg: rgba(44, 44, 46, 0.5);
2652
+ --t-table-header-text: #AEAEB2;
2653
+ --t-table-border: rgba(255, 255, 255, 0.12);
2654
+ --t-table-hover: rgba(44, 44, 46, 0.65);
2655
+ --t-input-bg: rgba(28, 28, 30, 0.55);
2656
+ --t-input-border: rgba(255, 255, 255, 0.12);
2657
+ --t-badge-primary-bg: rgba(10, 132, 255, 0.2);
2658
+ --t-badge-primary-text: #0A84FF;
2659
+ --t-badge-neutral-bg: rgba(44, 44, 46, 0.5);
2660
+ --t-badge-neutral-text: #AEAEB2;
2661
+ --t-card-shadow: 0 1px 3px rgba(0,0,0,0.20), 0 4px 12px rgba(0,0,0,0.15), inset 0 1px 0 rgba(255,255,255,0.06);
2662
+ --t-accent-bg: rgba(10, 132, 255, 0.12);
2663
+ --t-accent-text: #0A84FF;
2664
+ --t-stat-value-color: #F2F2F7;
2665
+ --t-card-border: 1px solid rgba(255, 255, 255, 0.12);
2666
+ }
2667
+
2668
+ /* ===== STRUCTURAL STYLES ===== */
2669
+
2670
+ .theme-preview-wrapper {
2671
+ font-family: var(--t-font-body);
2672
+ color: var(--t-text);
2673
+ background-color: var(--t-bg);
2674
+ transition: all 0.3s ease;
2675
+ }
2676
+
2677
+ .theme-header {
2678
+ padding: 24px 32px;
2679
+ background-color: var(--t-bg-elevated);
2680
+ border-bottom: var(--t-border-width, 1px) solid var(--t-border);
2681
+ }
2682
+
2683
+ .theme-title {
2684
+ font-family: var(--t-font-heading);
2685
+ font-size: var(--t-heading-lg-size, 1.5rem);
2686
+ font-weight: var(--t-heading-xl-weight, 700);
2687
+ color: var(--t-text-heading);
2688
+ margin: 0;
2689
+ letter-spacing: var(--t-heading-tracking, -0.02em);
2690
+ }
2691
+
2692
+ /* Neon glow on headings for neon theme */
2693
+ .theme-neon .theme-title {
2694
+ text-shadow: 0 0 7px rgba(0, 255, 238, 0.4), 0 0 20px rgba(0, 255, 238, 0.15);
2695
+ color: #00FFEE;
2696
+ text-transform: uppercase;
2697
+ }
2698
+
2699
+ /* Neon Amber glow on headings */
2700
+ .theme-neonAmber .theme-title {
2701
+ text-shadow: 0 0 7px rgba(255, 184, 0, 0.4), 0 0 20px rgba(255, 184, 0, 0.15);
2702
+ color: #FFB800;
2703
+ text-transform: uppercase;
2704
+ }
2705
+
2706
+ .theme-neonAmber.dark-preview .theme-title {
2707
+ text-shadow: none;
2708
+ color: #B07800;
2709
+ }
2710
+
2711
+ /* Neon Violet glow on headings */
2712
+ .theme-neonViolet .theme-title {
2713
+ text-shadow: 0 0 7px rgba(168, 85, 247, 0.6), 0 0 20px rgba(168, 85, 247, 0.3);
2714
+ color: #A855F7;
2715
+ text-transform: uppercase;
2716
+ }
2717
+
2718
+ .theme-neonViolet.dark-preview .theme-title {
2719
+ text-shadow: none;
2720
+ color: #7C3AED;
2721
+ }
2722
+
2723
+ .theme-subtitle {
2724
+ font-size: 0.875rem;
2725
+ color: var(--t-text-muted);
2726
+ margin-top: 4px;
2727
+ }
2728
+
2729
+ .theme-mode-badge {
2730
+ font-size: 0.75rem;
2731
+ font-weight: 500;
2732
+ padding: 4px 12px;
2733
+ border-radius: var(--t-radius-badge);
2734
+ background-color: var(--t-badge-neutral-bg);
2735
+ color: var(--t-badge-neutral-text);
2736
+ white-space: nowrap;
2737
+ }
2738
+
2739
+ /* Brutalist badge has border */
2740
+ .theme-brutalist .theme-mode-badge {
2741
+ border: 2px solid var(--t-border);
2742
+ }
2743
+
2744
+ /* Geometric badge outline variant */
2745
+ .theme-geometric .theme-mode-badge {
2746
+ border: 2px solid var(--t-text-heading);
2747
+ }
2748
+
2749
+ /* Neon badge glow */
2750
+ .theme-neon .theme-mode-badge {
2751
+ font-family: 'JetBrains Mono', monospace;
2752
+ text-transform: uppercase;
2753
+ letter-spacing: 0.05em;
2754
+ font-size: 0.6875rem;
2755
+ border: 1px solid rgba(0, 255, 238, 0.25);
2756
+ }
2757
+
2758
+ .theme-body {
2759
+ padding: 32px;
2760
+ }
2761
+
2762
+ /* Layout Preview */
2763
+ .layout-preview {
2764
+ display: flex;
2765
+ border: var(--t-border-width, 1px) solid var(--t-border);
2766
+ border-radius: var(--t-radius-md);
2767
+ overflow: hidden;
2768
+ height: 380px;
2769
+ box-shadow: var(--t-card-shadow);
2770
+ }
2771
+
2772
+ /* Brutalist layout has slash shape */
2773
+ .theme-brutalist .layout-preview {
2774
+ border-radius: 0 24px 0 24px;
2775
+ }
2776
+
2777
+ .mini-sidebar {
2778
+ width: 200px;
2779
+ min-width: 200px;
2780
+ padding: 16px 0;
2781
+ border-right: var(--t-border-width, 1px) solid var(--t-sidebar-border, var(--t-border));
2782
+ display: flex;
2783
+ flex-direction: column;
2784
+ overflow: hidden;
2785
+ background-color: var(--t-sidebar-bg);
2786
+ }
2787
+
2788
+ /* Handle gradient background for bold theme sidebar */
2789
+ .theme-bold .mini-sidebar {
2790
+ background: linear-gradient(to bottom, #7c3aed, #4c1d95);
2791
+ }
2792
+
2793
+ .theme-bold.dark-preview .mini-sidebar {
2794
+ background: linear-gradient(to bottom, #0f172a, #020617);
2795
+ border-right-color: #1e293b;
2796
+ }
2797
+
2798
+ .theme-professional .mini-sidebar {
2799
+ background-color: var(--t-sidebar-bg);
2800
+ }
2801
+
2802
+ .theme-professional.dark-preview .mini-sidebar {
2803
+ background-color: var(--t-sidebar-bg);
2804
+ }
2805
+
2806
+ /* Neon sidebar with grid background */
2807
+ .theme-neon .mini-sidebar {
2808
+ background-color: var(--t-sidebar-bg);
2809
+ background-image: radial-gradient(circle, rgba(0, 255, 238, 0.03) 1px, transparent 1px);
2810
+ background-size: 16px 16px;
2811
+ }
2812
+
2813
+ /* Geometric sidebar */
2814
+ .theme-geometric .mini-sidebar {
2815
+ background-color: var(--t-sidebar-bg);
2816
+ color: #ffffff;
2817
+ }
2818
+
2819
+ .sidebar-logo {
2820
+ display: flex;
2821
+ align-items: center;
2822
+ gap: 8px;
2823
+ padding: 0 16px 16px;
2824
+ border-bottom: var(--t-border-width, 1px) solid var(--t-border);
2825
+ margin-bottom: 12px;
2826
+ }
2827
+
2828
+ .theme-bold .sidebar-logo {
2829
+ border-bottom-color: rgba(255,255,255,0.1);
2830
+ }
2831
+
2832
+ .theme-bold.dark-preview .sidebar-logo {
2833
+ border-bottom-color: #1e293b;
2834
+ }
2835
+
2836
+ .theme-neon .sidebar-logo {
2837
+ border-bottom-color: #242832;
2838
+ }
2839
+
2840
+ .theme-geometric .sidebar-logo {
2841
+ border-bottom-color: #333333;
2842
+ }
2843
+
2844
+ .sidebar-logo-icon {
2845
+ width: 28px;
2846
+ height: 28px;
2847
+ border-radius: 6px;
2848
+ background-color: var(--t-primary);
2849
+ color: var(--t-primary-text);
2850
+ display: flex;
2851
+ align-items: center;
2852
+ justify-content: center;
2853
+ font-family: var(--t-font-heading);
2854
+ font-weight: 700;
2855
+ font-size: 0.875rem;
2856
+ }
2857
+
2858
+ /* Neon logo glow */
2859
+ .theme-neon .sidebar-logo-icon {
2860
+ border-radius: 2px;
2861
+ box-shadow: 0 0 8px rgba(0, 255, 238, 0.4);
2862
+ }
2863
+
2864
+ /* Geometric logo is a circle */
2865
+ .theme-geometric .sidebar-logo-icon {
2866
+ border-radius: 9999px;
2867
+ }
2868
+
2869
+ /* Brutalist logo sharp */
2870
+ .theme-brutalist .sidebar-logo-icon {
2871
+ border-radius: 0;
2872
+ border: 2px solid var(--t-border);
2873
+ }
2874
+
2875
+ .sidebar-logo-text {
2876
+ font-family: var(--t-font-heading);
2877
+ font-weight: 600;
2878
+ font-size: 0.875rem;
2879
+ color: var(--t-sidebar-active-text, var(--t-text-heading));
2880
+ }
2881
+
2882
+ .theme-bold .sidebar-logo-text {
2883
+ color: #ffffff;
2884
+ }
2885
+
2886
+ .theme-neon .sidebar-logo-text {
2887
+ color: #E8ECF1;
2888
+ }
2889
+
2890
+ .theme-geometric .sidebar-logo-text {
2891
+ color: #ffffff;
2892
+ font-weight: 800;
2893
+ }
2894
+
2895
+ .sidebar-nav {
2896
+ flex: 1;
2897
+ overflow: hidden;
2898
+ }
2899
+
2900
+ .sidebar-section-label {
2901
+ padding: 12px 16px 4px;
2902
+ font-size: 0.625rem;
2903
+ font-weight: 600;
2904
+ letter-spacing: 0.08em;
2905
+ color: var(--t-sidebar-section);
2906
+ }
2907
+
2908
+ .theme-neon .sidebar-section-label {
2909
+ font-family: 'JetBrains Mono', monospace;
2910
+ font-size: 0.5625rem;
2911
+ font-weight: 700;
2912
+ letter-spacing: 0.12em;
2913
+ }
2914
+
2915
+ .sidebar-item {
2916
+ display: flex;
2917
+ align-items: center;
2918
+ gap: 8px;
2919
+ padding: 8px 16px;
2920
+ font-size: 0.8125rem;
2921
+ font-weight: 500;
2922
+ color: var(--t-sidebar-text);
2923
+ cursor: pointer;
2924
+ transition: all 0.15s ease;
2925
+ border-left: 2px solid transparent;
2926
+ }
2927
+
2928
+ /* Brutalist nav is bigger */
2929
+ .theme-brutalist .sidebar-item {
2930
+ font-family: var(--t-font-heading);
2931
+ font-size: 0.9375rem;
2932
+ font-weight: 700;
2933
+ padding: 10px 16px;
2934
+ }
2935
+
2936
+ /* Neon nav monospace */
2937
+ .theme-neon .sidebar-item {
2938
+ font-family: 'JetBrains Mono', monospace;
2939
+ font-size: 0.75rem;
2940
+ letter-spacing: 0.02em;
2941
+ }
2942
+
2943
+ /* Geometric nav */
2944
+ .theme-geometric .sidebar-item {
2945
+ font-family: 'Plus Jakarta Sans', sans-serif;
2946
+ border-left: none;
2947
+ }
2948
+
2949
+ .sidebar-item:hover {
2950
+ background-color: var(--t-sidebar-hover);
2951
+ }
2952
+
2953
+ .sidebar-item.active {
2954
+ background-color: var(--t-sidebar-active-bg);
2955
+ color: var(--t-sidebar-active-text);
2956
+ border-left-color: var(--t-sidebar-active-border);
2957
+ }
2958
+
2959
+ /* Neon active glow */
2960
+ .theme-neon .sidebar-item.active {
2961
+ text-shadow: 0 0 10px rgba(0, 255, 238, 0.3);
2962
+ }
2963
+
2964
+ /* Brutalist active has asymmetric radius */
2965
+ .theme-brutalist .sidebar-item.active {
2966
+ border-radius: 24px 0 0 0;
2967
+ border-left-width: 4px;
2968
+ }
2969
+
2970
+ /* Geometric active is full fill, no left border */
2971
+ .theme-geometric .sidebar-item.active {
2972
+ border-left: none;
2973
+ font-weight: 600;
2974
+ }
2975
+
2976
+ .sidebar-icon {
2977
+ font-size: 0.5rem;
2978
+ opacity: 0.5;
2979
+ }
2980
+
2981
+ .sidebar-item.active .sidebar-icon {
2982
+ opacity: 1;
2983
+ }
2984
+
2985
+ /* Mini Content */
2986
+ .mini-content {
2987
+ flex: 1;
2988
+ padding: 20px;
2989
+ overflow: auto;
2990
+ background-color: var(--t-bg);
2991
+ }
2992
+
2993
+ .stat-cards {
2994
+ display: grid;
2995
+ grid-template-columns: repeat(3, 1fr);
2996
+ gap: 12px;
2997
+ margin-bottom: 20px;
2998
+ }
2999
+
3000
+ .stat-card {
3001
+ padding: 16px;
3002
+ border-radius: var(--t-radius-sm);
3003
+ background-color: var(--t-bg-elevated);
3004
+ border: var(--t-border-width, 1px) solid var(--t-border);
3005
+ box-shadow: var(--t-card-shadow);
3006
+ }
3007
+
3008
+ /* Brutalist stat cards have slash shape */
3009
+ .theme-brutalist .stat-card {
3010
+ border-radius: 0 16px 0 16px;
3011
+ }
3012
+
3013
+ /* Neon stat cards with top accent */
3014
+ .theme-neon .stat-card {
3015
+ border-top: 2px solid #242832;
3016
+ }
3017
+
3018
+ .stat-card.accent {
3019
+ background-color: var(--t-accent-bg);
3020
+ border-color: transparent;
3021
+ }
3022
+
3023
+ /* Geometric accent card is solid black */
3024
+ .theme-geometric .stat-card.accent {
3025
+ background-color: #0A0A0A;
3026
+ border: none;
3027
+ }
3028
+
3029
+ .theme-geometric.dark-preview .stat-card.accent {
3030
+ background-color: #F5F5F0;
3031
+ }
3032
+
3033
+ /* Neon accent stat card */
3034
+ .theme-neon .stat-card.accent {
3035
+ border-top: 2px solid #00FFEE;
3036
+ box-shadow: 0 0 10px rgba(0, 255, 238, 0.05);
3037
+ }
3038
+
3039
+ .stat-label {
3040
+ font-size: 0.6875rem;
3041
+ font-weight: 500;
3042
+ text-transform: uppercase;
3043
+ letter-spacing: 0.05em;
3044
+ color: var(--t-text-muted);
3045
+ margin-bottom: 4px;
3046
+ }
3047
+
3048
+ .stat-card.accent .stat-label {
3049
+ color: var(--t-accent-text);
3050
+ }
3051
+
3052
+ .theme-geometric.dark-preview .stat-card.accent .stat-label {
3053
+ color: #0A0A0A;
3054
+ }
3055
+
3056
+ /* Neon stat labels are monospace */
3057
+ .theme-neon .stat-label {
3058
+ font-family: 'JetBrains Mono', monospace;
3059
+ font-size: 0.625rem;
3060
+ letter-spacing: 0.08em;
3061
+ }
3062
+
3063
+ .stat-value {
3064
+ font-family: var(--t-font-heading);
3065
+ font-size: 1.5rem;
3066
+ font-weight: var(--t-heading-xl-weight, 700);
3067
+ color: var(--t-stat-value-color);
3068
+ letter-spacing: -0.03em;
3069
+ }
3070
+
3071
+ /* Neon stat value glow */
3072
+ .theme-neon .stat-value {
3073
+ text-shadow: 0 0 10px rgba(0, 255, 238, 0.3);
3074
+ }
3075
+
3076
+ /* Brutalist oversized stat values */
3077
+ .theme-brutalist .stat-value {
3078
+ font-size: 1.75rem;
3079
+ }
3080
+
3081
+ /* Geometric oversized stat values */
3082
+ .theme-geometric .stat-value {
3083
+ font-size: 1.75rem;
3084
+ font-weight: 800;
3085
+ }
3086
+
3087
+ .stat-card.accent .stat-value {
3088
+ color: var(--t-accent-text);
3089
+ }
3090
+
3091
+ .theme-geometric.dark-preview .stat-card.accent .stat-value {
3092
+ color: #0A0A0A;
3093
+ }
3094
+
3095
+ /* Mini Table */
3096
+ .mini-table-wrapper {
3097
+ border: var(--t-border-width, 1px) solid var(--t-border);
3098
+ border-radius: var(--t-radius-sm);
3099
+ overflow: hidden;
3100
+ }
3101
+
3102
+ /* Neon / Geometric table is sharp */
3103
+ .theme-neon .mini-table-wrapper,
3104
+ .theme-geometric .mini-table-wrapper {
3105
+ border-radius: 0;
3106
+ }
3107
+
3108
+ .mini-table-header {
3109
+ display: grid;
3110
+ grid-template-columns: 1.5fr 2fr 1fr 1fr;
3111
+ padding: 8px 12px;
3112
+ background-color: var(--t-table-header-bg);
3113
+ font-size: 0.625rem;
3114
+ font-weight: 600;
3115
+ text-transform: uppercase;
3116
+ letter-spacing: 0.05em;
3117
+ color: var(--t-table-header-text);
3118
+ }
3119
+
3120
+ /* Neon table header monospace */
3121
+ .theme-neon .mini-table-header {
3122
+ font-family: 'JetBrains Mono', monospace;
3123
+ letter-spacing: 0.08em;
3124
+ }
3125
+
3126
+ /* Geometric table header */
3127
+ .theme-geometric .mini-table-header {
3128
+ font-family: 'Plus Jakarta Sans', sans-serif;
3129
+ padding: 12px 16px;
3130
+ }
3131
+
3132
+ .mini-table-row {
3133
+ display: grid;
3134
+ grid-template-columns: 1.5fr 2fr 1fr 1fr;
3135
+ padding: 10px 12px;
3136
+ font-size: 0.75rem;
3137
+ color: var(--t-text);
3138
+ border-top: 1px solid var(--t-table-border);
3139
+ transition: background-color 0.15s ease;
3140
+ align-items: center;
3141
+ }
3142
+
3143
+ /* Brutalist table rows have heavier borders */
3144
+ .theme-brutalist .mini-table-row {
3145
+ border-top: 2px solid var(--t-table-border);
3146
+ }
3147
+
3148
+ .mini-table-row.hover {
3149
+ background-color: var(--t-table-hover);
3150
+ }
3151
+
3152
+ /* Sections */
3153
+ .section {
3154
+ margin-top: 32px;
3155
+ }
3156
+
3157
+ .section-heading {
3158
+ font-family: var(--t-font-heading);
3159
+ font-size: 1.125rem;
3160
+ font-weight: 600;
3161
+ color: var(--t-text-heading);
3162
+ margin-bottom: 16px;
3163
+ padding-bottom: 8px;
3164
+ border-bottom: var(--t-border-width, 1px) solid var(--t-border);
3165
+ }
3166
+
3167
+ /* Brutalist section heading is oversized */
3168
+ .theme-brutalist .section-heading {
3169
+ font-size: 1.5rem;
3170
+ font-weight: 700;
3171
+ }
3172
+
3173
+ /* Neon section heading */
3174
+ .theme-neon .section-heading {
3175
+ text-transform: uppercase;
3176
+ letter-spacing: -0.01em;
3177
+ border-bottom-color: #242832;
3178
+ }
3179
+
3180
+ /* Geometric section heading with colored accent bar */
3181
+ .theme-geometric .section-heading {
3182
+ font-weight: 800;
3183
+ font-size: 1.375rem;
3184
+ border-bottom: 3px solid #0A0A0A;
3185
+ padding-bottom: 12px;
3186
+ }
3187
+
3188
+ .theme-geometric.dark-preview .section-heading {
3189
+ border-bottom-color: #F5F5F0;
3190
+ }
3191
+
3192
+ /* Typography Preview */
3193
+ .type-preview {
3194
+ display: flex;
3195
+ flex-direction: column;
3196
+ gap: 20px;
3197
+ }
3198
+
3199
+ .type-sample {
3200
+ display: flex;
3201
+ flex-direction: column;
3202
+ gap: 4px;
3203
+ }
3204
+
3205
+ .type-label {
3206
+ font-size: 0.6875rem;
3207
+ font-weight: 500;
3208
+ text-transform: uppercase;
3209
+ letter-spacing: 0.05em;
3210
+ color: var(--t-text-caption);
3211
+ }
3212
+
3213
+ .type-heading-xl {
3214
+ font-family: var(--t-font-heading);
3215
+ font-size: var(--t-heading-xl-size, 1.875rem);
3216
+ font-weight: var(--t-heading-xl-weight, 700);
3217
+ color: var(--t-text-heading);
3218
+ letter-spacing: var(--t-heading-tracking, -0.025em);
3219
+ }
3220
+
3221
+ /* Neon heading glow */
3222
+ .theme-neon .type-heading-xl {
3223
+ text-shadow: 0 0 7px rgba(0, 255, 238, 0.5), 0 0 20px rgba(0, 255, 238, 0.2);
3224
+ color: #00FFEE;
3225
+ text-transform: uppercase;
3226
+ }
3227
+
3228
+ .type-heading-lg {
3229
+ font-family: var(--t-font-heading);
3230
+ font-size: var(--t-heading-lg-size, 1.25rem);
3231
+ font-weight: 600;
3232
+ color: var(--t-text-heading);
3233
+ letter-spacing: -0.015em;
3234
+ }
3235
+
3236
+ /* Brutalist / Geometric headings are bolder */
3237
+ .theme-brutalist .type-heading-lg,
3238
+ .theme-geometric .type-heading-lg {
3239
+ font-weight: 700;
3240
+ }
3241
+
3242
+ .theme-geometric .type-heading-lg {
3243
+ font-weight: 800;
3244
+ }
3245
+
3246
+ .type-heading-md {
3247
+ font-family: var(--t-font-heading);
3248
+ font-size: var(--t-heading-md-size, 1rem);
3249
+ font-weight: 600;
3250
+ color: var(--t-text-heading);
3251
+ }
3252
+
3253
+ .theme-brutalist .type-heading-md,
3254
+ .theme-geometric .type-heading-md {
3255
+ font-weight: 700;
3256
+ }
3257
+
3258
+ .type-body {
3259
+ font-family: var(--t-font-body);
3260
+ font-size: var(--t-body-size, 0.875rem);
3261
+ font-weight: 400;
3262
+ color: var(--t-text);
3263
+ line-height: 1.6;
3264
+ }
3265
+
3266
+ .type-caption {
3267
+ font-family: var(--t-font-body);
3268
+ font-size: 0.75rem;
3269
+ font-weight: 400;
3270
+ color: var(--t-text-caption);
3271
+ }
3272
+
3273
+ /* Component Groups */
3274
+ .component-group {
3275
+ margin-top: 20px;
3276
+ }
3277
+
3278
+ .component-group-label {
3279
+ font-family: var(--t-font-body);
3280
+ font-size: 0.75rem;
3281
+ font-weight: 600;
3282
+ text-transform: uppercase;
3283
+ letter-spacing: 0.05em;
3284
+ color: var(--t-text-muted);
3285
+ margin-bottom: 12px;
3286
+ }
3287
+
3288
+ .component-row {
3289
+ display: flex;
3290
+ flex-wrap: wrap;
3291
+ gap: 8px;
3292
+ align-items: center;
3293
+ }
3294
+
3295
+ /* Brutalist / Geometric need more gap for bigger buttons */
3296
+ .theme-brutalist .component-row,
3297
+ .theme-geometric .component-row {
3298
+ gap: 12px;
3299
+ }
3300
+
3301
+ /* Buttons */
3302
+ .btn {
3303
+ display: inline-flex;
3304
+ align-items: center;
3305
+ justify-content: center;
3306
+ padding: var(--t-btn-padding, 8px 16px);
3307
+ font-family: var(--t-font-body);
3308
+ font-size: 0.8125rem;
3309
+ font-weight: 500;
3310
+ border-radius: var(--t-radius-sm);
3311
+ border: var(--t-btn-border, 1px solid transparent);
3312
+ cursor: pointer;
3313
+ transition: all 0.15s ease;
3314
+ line-height: 1;
3315
+ box-shadow: var(--t-btn-shadow, none);
3316
+ }
3317
+
3318
+ /* Brutalist buttons use heading font */
3319
+ .theme-brutalist .btn {
3320
+ font-family: var(--t-font-heading);
3321
+ font-weight: 700;
3322
+ font-size: 0.875rem;
3323
+ text-transform: uppercase;
3324
+ }
3325
+
3326
+ /* Neon buttons are monospace uppercase */
3327
+ .theme-neon .btn {
3328
+ font-family: 'JetBrains Mono', monospace;
3329
+ font-size: 0.75rem;
3330
+ font-weight: 600;
3331
+ letter-spacing: 0.05em;
3332
+ text-transform: uppercase;
3333
+ }
3334
+
3335
+ /* Geometric buttons are oversized */
3336
+ .theme-geometric .btn {
3337
+ font-family: 'Plus Jakarta Sans', sans-serif;
3338
+ font-size: 0.875rem;
3339
+ font-weight: 600;
3340
+ }
3341
+
3342
+ .btn-sm {
3343
+ padding: 6px 12px;
3344
+ font-size: 0.75rem;
3345
+ }
3346
+
3347
+ .btn-primary {
3348
+ background-color: var(--t-primary);
3349
+ color: var(--t-primary-text);
3350
+ border-color: var(--t-primary);
3351
+ border-radius: var(--t-btn-radius-primary, var(--t-radius-sm));
3352
+ }
3353
+
3354
+ .btn-primary:hover {
3355
+ background-color: var(--t-primary-hover);
3356
+ border-color: var(--t-primary-hover);
3357
+ }
3358
+
3359
+ /* Neon primary button glow */
3360
+ .theme-neon .btn-primary {
3361
+ box-shadow: 0 0 5px rgba(0, 255, 238, 0.4), 0 0 20px rgba(0, 255, 238, 0.15);
3362
+ }
3363
+
3364
+ /* Brutalist primary has solid shadow */
3365
+ .theme-brutalist .btn-primary {
3366
+ box-shadow: var(--t-btn-shadow);
3367
+ }
3368
+
3369
+ /* Geometric primary button */
3370
+ .theme-geometric .btn-primary {
3371
+ border: none;
3372
+ }
3373
+
3374
+ .btn-secondary {
3375
+ background-color: var(--t-secondary-bg);
3376
+ color: var(--t-secondary-text);
3377
+ border-color: var(--t-secondary-border);
3378
+ border-radius: var(--t-btn-radius-secondary, var(--t-radius-sm));
3379
+ }
3380
+
3381
+ /* Brutalist secondary has reversed pill shape */
3382
+ .theme-brutalist .btn-secondary {
3383
+ box-shadow: var(--t-btn-shadow);
3384
+ }
3385
+
3386
+ /* Geometric secondary is outlined sharp rectangle */
3387
+ .theme-geometric .btn-secondary {
3388
+ border: 2px solid var(--t-text-heading);
3389
+ }
3390
+
3391
+ .theme-geometric .btn-secondary:hover {
3392
+ background-color: var(--t-text-heading);
3393
+ color: var(--t-bg);
3394
+ }
3395
+
3396
+ .btn-ghost {
3397
+ background-color: transparent;
3398
+ color: var(--t-ghost-text);
3399
+ border-radius: var(--t-btn-radius-ghost, var(--t-radius-sm));
3400
+ }
3401
+
3402
+ .btn-ghost:hover {
3403
+ background-color: var(--t-ghost-hover);
3404
+ }
3405
+
3406
+ /* Neon ghost with border */
3407
+ .theme-neon .btn-ghost {
3408
+ border: 1px solid #242832;
3409
+ }
3410
+
3411
+ .theme-neon .btn-ghost:hover {
3412
+ border-color: #00FFEE;
3413
+ box-shadow: 0 0 10px rgba(0, 255, 238, 0.15);
3414
+ }
3415
+
3416
+ .btn-danger {
3417
+ background-color: var(--t-danger);
3418
+ color: #ffffff;
3419
+ border-color: var(--t-danger);
3420
+ border-radius: var(--t-btn-radius-danger, var(--t-radius-sm));
3421
+ }
3422
+
3423
+ .btn-danger:hover {
3424
+ background-color: var(--t-danger-hover, var(--t-danger));
3425
+ }
3426
+
3427
+ /* Neon danger glow */
3428
+ .theme-neon .btn-danger {
3429
+ box-shadow: 0 0 5px rgba(255, 0, 170, 0.4), 0 0 20px rgba(255, 0, 170, 0.15);
3430
+ }
3431
+
3432
+ /* Brutalist danger has shadow */
3433
+ .theme-brutalist .btn-danger {
3434
+ box-shadow: var(--t-btn-shadow);
3435
+ }
3436
+
3437
+ /* Use heading font for bold theme buttons */
3438
+ .theme-bold .btn {
3439
+ font-family: var(--t-font-heading);
3440
+ }
3441
+
3442
+ /* Badges */
3443
+ .badge {
3444
+ display: inline-flex;
3445
+ align-items: center;
3446
+ padding: 3px 10px;
3447
+ font-size: 0.6875rem;
3448
+ font-weight: 500;
3449
+ border-radius: var(--t-radius-badge);
3450
+ line-height: 1.4;
3451
+ }
3452
+
3453
+ /* Brutalist badges have thick border */
3454
+ .theme-brutalist .badge {
3455
+ border: 2px solid var(--t-border);
3456
+ font-family: 'JetBrains Mono', monospace;
3457
+ text-transform: uppercase;
3458
+ letter-spacing: 0.05em;
3459
+ font-size: 0.625rem;
3460
+ }
3461
+
3462
+ /* Neon badges with border glow */
3463
+ .theme-neon .badge {
3464
+ font-family: 'JetBrains Mono', monospace;
3465
+ text-transform: uppercase;
3466
+ letter-spacing: 0.05em;
3467
+ font-size: 0.625rem;
3468
+ }
3469
+
3470
+ /* Geometric badges are pill + bold */
3471
+ .theme-geometric .badge {
3472
+ font-family: 'Plus Jakarta Sans', sans-serif;
3473
+ font-weight: 600;
3474
+ text-transform: uppercase;
3475
+ letter-spacing: 0.04em;
3476
+ padding: 4px 14px;
3477
+ }
3478
+
3479
+ .badge-primary {
3480
+ background-color: var(--t-badge-primary-bg);
3481
+ color: var(--t-badge-primary-text);
3482
+ }
3483
+
3484
+ /* Neon primary badge border */
3485
+ .theme-neon .badge-primary {
3486
+ border: 1px solid rgba(0, 255, 238, 0.25);
3487
+ }
3488
+
3489
+ .badge-success {
3490
+ background-color: var(--t-success-light);
3491
+ color: var(--t-success-text);
3492
+ }
3493
+
3494
+ /* Neon success badge border */
3495
+ .theme-neon .badge-success {
3496
+ border: 1px solid rgba(57, 255, 20, 0.25);
3497
+ }
3498
+
3499
+ .badge-warning {
3500
+ background-color: var(--t-warning-light);
3501
+ color: var(--t-warning-text);
3502
+ }
3503
+
3504
+ /* Neon warning badge border */
3505
+ .theme-neon .badge-warning {
3506
+ border: 1px solid rgba(255, 230, 0, 0.25);
3507
+ }
3508
+
3509
+ .badge-danger {
3510
+ background-color: var(--t-danger-light);
3511
+ color: var(--t-danger-text);
3512
+ }
3513
+
3514
+ /* Neon danger badge border */
3515
+ .theme-neon .badge-danger {
3516
+ border: 1px solid rgba(255, 0, 170, 0.25);
3517
+ }
3518
+
3519
+ .badge-info {
3520
+ background-color: var(--t-info-light);
3521
+ color: var(--t-info-text);
3522
+ }
3523
+
3524
+ /* Neon info badge border */
3525
+ .theme-neon .badge-info {
3526
+ border: 1px solid rgba(189, 0, 255, 0.25);
3527
+ }
3528
+
3529
+ .badge-neutral {
3530
+ background-color: var(--t-badge-neutral-bg);
3531
+ color: var(--t-badge-neutral-text);
3532
+ }
3533
+
3534
+ /* Geometric neutral badge outline */
3535
+ .theme-geometric .badge-neutral {
3536
+ border: 2px solid var(--t-text-heading);
3537
+ }
3538
+
3539
+ /* Use heading font for bold theme badges */
3540
+ .theme-bold .badge {
3541
+ font-family: var(--t-font-heading);
3542
+ }
3543
+
3544
+ /* Forms */
3545
+ .form-preview {
3546
+ display: grid;
3547
+ grid-template-columns: repeat(3, 1fr);
3548
+ gap: 16px;
3549
+ }
3550
+
3551
+ .form-field {
3552
+ display: flex;
3553
+ flex-direction: column;
3554
+ gap: 6px;
3555
+ }
3556
+
3557
+ .form-label {
3558
+ font-size: 0.8125rem;
3559
+ font-weight: 500;
3560
+ color: var(--t-text);
3561
+ }
3562
+
3563
+ /* Brutalist / Neon / Geometric labels are uppercase mono */
3564
+ .theme-brutalist .form-label {
3565
+ font-family: 'JetBrains Mono', monospace;
3566
+ text-transform: uppercase;
3567
+ letter-spacing: 0.05em;
3568
+ font-size: 0.75rem;
3569
+ }
3570
+
3571
+ .theme-neon .form-label {
3572
+ font-family: 'JetBrains Mono', monospace;
3573
+ text-transform: uppercase;
3574
+ letter-spacing: 0.08em;
3575
+ font-size: 0.6875rem;
3576
+ color: var(--t-text-muted);
3577
+ }
3578
+
3579
+ .theme-geometric .form-label {
3580
+ text-transform: uppercase;
3581
+ letter-spacing: 0.04em;
3582
+ font-size: 0.8125rem;
3583
+ font-weight: 500;
3584
+ color: var(--t-text-muted);
3585
+ }
3586
+
3587
+ .form-input {
3588
+ padding: 8px 12px;
3589
+ font-family: var(--t-font-body);
3590
+ font-size: 0.875rem;
3591
+ background-color: var(--t-input-bg);
3592
+ border: var(--t-border-width, 1px) solid var(--t-input-border);
3593
+ border-radius: var(--t-radius-sm);
3594
+ color: var(--t-text);
3595
+ outline: none;
3596
+ transition: all 0.15s ease;
3597
+ }
3598
+
3599
+ .form-input::placeholder {
3600
+ color: var(--t-text-caption);
3601
+ }
3602
+
3603
+ .form-input.focused {
3604
+ border-color: var(--t-input-focus);
3605
+ box-shadow: 0 0 0 3px var(--t-input-focus-ring);
3606
+ }
3607
+
3608
+ /* Brutalist focused input has offset shadow */
3609
+ .theme-brutalist .form-input.focused {
3610
+ box-shadow: 4px 4px 0 0 var(--t-input-focus-ring);
3611
+ }
3612
+
3613
+ /* Neon focused input glow */
3614
+ .theme-neon .form-input.focused {
3615
+ box-shadow: 0 0 0 1px #00FFEE, 0 0 15px rgba(0, 255, 238, 0.15);
3616
+ }
3617
+
3618
+ /* Neon input caret color */
3619
+ .theme-neon .form-input {
3620
+ caret-color: #00FFEE;
3621
+ }
3622
+
3623
+ /* Geometric focused input -- crisp, no glow */
3624
+ .theme-geometric .form-input.focused {
3625
+ border-color: #003DA5;
3626
+ box-shadow: none;
3627
+ }
3628
+
3629
+ /* Geometric input taller */
3630
+ .theme-geometric .form-input {
3631
+ padding: 12px 16px;
3632
+ font-size: 1rem;
3633
+ border-width: 2px;
3634
+ }
3635
+
3636
+ .form-select {
3637
+ padding: 8px 12px;
3638
+ font-family: var(--t-font-body);
3639
+ font-size: 0.875rem;
3640
+ background-color: var(--t-input-bg);
3641
+ border: var(--t-border-width, 1px) solid var(--t-input-border);
3642
+ border-radius: var(--t-radius-sm);
3643
+ color: var(--t-text);
3644
+ display: flex;
3645
+ justify-content: space-between;
3646
+ align-items: center;
3647
+ }
3648
+
3649
+ .select-arrow {
3650
+ font-size: 0.75rem;
3651
+ color: var(--t-text-muted);
3652
+ }
3653
+
3654
+ /* Alerts */
3655
+ .alerts-preview {
3656
+ display: flex;
3657
+ flex-direction: column;
3658
+ gap: 12px;
3659
+ }
3660
+
3661
+ .alert {
3662
+ display: flex;
3663
+ align-items: flex-start;
3664
+ gap: 12px;
3665
+ padding: 12px 16px;
3666
+ border-radius: var(--t-radius-sm);
3667
+ border-left: 3px solid;
3668
+ }
3669
+
3670
+ /* Brutalist alerts have thick border + sharp corners */
3671
+ .theme-brutalist .alert {
3672
+ border: 3px solid var(--t-border);
3673
+ border-radius: 0 16px 0 16px;
3674
+ border-left: 6px solid;
3675
+ }
3676
+
3677
+ /* Neon alerts sharp */
3678
+ .theme-neon .alert {
3679
+ border-radius: 0px;
3680
+ background-color: var(--t-bg-muted);
3681
+ }
3682
+
3683
+ /* Geometric alerts sharp with heavy left border */
3684
+ .theme-geometric .alert {
3685
+ border-radius: 0px;
3686
+ border-left-width: 4px;
3687
+ }
3688
+
3689
+ .alert-success {
3690
+ background-color: var(--t-success-light);
3691
+ border-left-color: var(--t-success);
3692
+ }
3693
+
3694
+ .alert-danger {
3695
+ background-color: var(--t-danger-light);
3696
+ border-left-color: var(--t-danger);
3697
+ }
3698
+
3699
+ .alert-info {
3700
+ background-color: var(--t-info-light);
3701
+ border-left-color: var(--t-info, var(--t-primary));
3702
+ }
3703
+
3704
+ /* Neon alert glow */
3705
+ .theme-neon .alert-success {
3706
+ box-shadow: 0 0 10px rgba(57, 255, 20, 0.05);
3707
+ }
3708
+
3709
+ .theme-neon .alert-danger {
3710
+ box-shadow: 0 0 10px rgba(255, 0, 170, 0.05);
3711
+ }
3712
+
3713
+ .alert-icon {
3714
+ font-size: 1rem;
3715
+ line-height: 1;
3716
+ margin-top: 2px;
3717
+ }
3718
+
3719
+ .alert-success .alert-icon { color: var(--t-success); }
3720
+ .alert-danger .alert-icon { color: var(--t-danger); }
3721
+ .alert-info .alert-icon { color: var(--t-info, var(--t-primary)); }
3722
+
3723
+ .alert-title {
3724
+ font-weight: 600;
3725
+ font-size: 0.8125rem;
3726
+ color: var(--t-text-heading);
3727
+ margin-bottom: 2px;
3728
+ }
3729
+
3730
+ .alert-success .alert-title { color: var(--t-success-text); }
3731
+ .alert-danger .alert-title { color: var(--t-danger-text); }
3732
+ .alert-info .alert-title { color: var(--t-info-text); }
3733
+
3734
+ .alert-description {
3735
+ font-size: 0.8125rem;
3736
+ color: var(--t-text-muted);
3737
+ }
3738
+
3739
+ .alert-success .alert-description { color: var(--t-success-text); opacity: 0.8; }
3740
+ .alert-danger .alert-description { color: var(--t-danger-text); opacity: 0.8; }
3741
+ .alert-info .alert-description { color: var(--t-info-text); opacity: 0.8; }
3742
+
3743
+ /* Cards Preview */
3744
+ .cards-preview {
3745
+ max-width: 400px;
3746
+ }
3747
+
3748
+ .preview-card {
3749
+ border: var(--t-card-border, 1px solid var(--t-border));
3750
+ border-radius: var(--t-card-radius, var(--t-radius-md));
3751
+ overflow: hidden;
3752
+ background-color: var(--t-bg-elevated);
3753
+ box-shadow: var(--t-card-shadow);
3754
+ }
3755
+
3756
+ .theme-bold .preview-card {
3757
+ border-top: 2px solid var(--t-primary);
3758
+ }
3759
+
3760
+ /* Neon card with top accent */
3761
+ .theme-neon .preview-card {
3762
+ border-top: 2px solid #00FFEE;
3763
+ }
3764
+
3765
+ .theme-neon .preview-card:hover {
3766
+ border-color: rgba(0, 255, 238, 0.3);
3767
+ box-shadow: 0 0 20px rgba(0, 255, 238, 0.05);
3768
+ }
3769
+
3770
+ /* Geometric card with blue top accent */
3771
+ .theme-geometric .preview-card {
3772
+ border-top: 4px solid #003DA5;
3773
+ }
3774
+
3775
+ .preview-card-header {
3776
+ padding: 16px 20px 0;
3777
+ }
3778
+
3779
+ /* Brutalist card header has bottom border */
3780
+ .theme-brutalist .preview-card-header {
3781
+ padding: 16px 20px;
3782
+ border-bottom: 3px solid var(--t-border);
3783
+ }
3784
+
3785
+ .preview-card-body {
3786
+ padding: 12px 20px;
3787
+ }
3788
+
3789
+ .preview-card-footer {
3790
+ padding: 12px 20px 16px;
3791
+ display: flex;
3792
+ gap: 8px;
3793
+ border-top: 1px solid var(--t-border);
3794
+ }
3795
+
3796
+ /* Brutalist card footer has thicker border */
3797
+ .theme-brutalist .preview-card-footer {
3798
+ border-top: 3px solid var(--t-border);
3799
+ }
3800
+
3801
+ /* Color Swatches */
3802
+ .palette-groups {
3803
+ display: flex;
3804
+ flex-direction: column;
3805
+ gap: 20px;
3806
+ }
3807
+
3808
+ .swatch-row {
3809
+ display: flex;
3810
+ flex-wrap: wrap;
3811
+ gap: 8px;
3812
+ }
3813
+
3814
+ .swatch {
3815
+ text-align: center;
3816
+ }
3817
+
3818
+ .swatch-color {
3819
+ width: 52px;
3820
+ height: 40px;
3821
+ border-radius: 6px;
3822
+ border: 1px solid var(--t-border);
3823
+ }
3824
+
3825
+ /* Neon swatches have subtle glow */
3826
+ .theme-neon .swatch-color {
3827
+ border-radius: 2px;
3828
+ }
3829
+
3830
+ /* Brutalist swatches are sharp */
3831
+ .theme-brutalist .swatch-color {
3832
+ border-radius: 0;
3833
+ border: 2px solid var(--t-border);
3834
+ }
3835
+
3836
+ /* Geometric swatches -- either round or sharp */
3837
+ .theme-geometric .swatch-color {
3838
+ border-radius: 0;
3839
+ border: 1px solid var(--t-border);
3840
+ }
3841
+
3842
+ .swatch-label {
3843
+ font-size: 0.5625rem;
3844
+ font-weight: 500;
3845
+ color: var(--t-text-muted);
3846
+ margin-top: 4px;
3847
+ white-space: nowrap;
3848
+ }
3849
+
3850
+ .swatch-hex {
3851
+ font-size: 0.5rem;
3852
+ color: var(--t-text-caption);
3853
+ font-family: monospace;
3854
+ }
3855
+
3856
+ /* Config Code */
3857
+ .config-tabs {
3858
+ display: flex;
3859
+ gap: 0;
3860
+ margin-bottom: 0;
3861
+ }
3862
+
3863
+ .config-tab {
3864
+ padding: 8px 16px;
3865
+ font-family: var(--t-font-body);
3866
+ font-size: 0.75rem;
3867
+ font-weight: 500;
3868
+ background-color: var(--t-bg-muted);
3869
+ color: var(--t-text-muted);
3870
+ border: 1px solid var(--t-border);
3871
+ border-bottom: none;
3872
+ cursor: pointer;
3873
+ transition: all 0.15s ease;
3874
+ border-radius: var(--t-radius-sm) var(--t-radius-sm) 0 0;
3875
+ }
3876
+
3877
+ .config-tab.active {
3878
+ background-color: var(--t-bg-elevated);
3879
+ color: var(--t-text-heading);
3880
+ border-bottom-color: var(--t-bg-elevated);
3881
+ }
3882
+
3883
+ .config-code {
3884
+ background-color: var(--t-bg-elevated);
3885
+ border: 1px solid var(--t-border);
3886
+ border-radius: 0 var(--t-radius-sm) var(--t-radius-sm) var(--t-radius-sm);
3887
+ padding: 16px 20px;
3888
+ overflow-x: auto;
3889
+ font-family: 'JetBrains Mono', monospace;
3890
+ font-size: 0.8125rem;
3891
+ line-height: 1.6;
3892
+ color: var(--t-text);
3893
+ margin: 0;
3894
+ }
3895
+
3896
+ /* Font Info */
3897
+ .font-info {
3898
+ display: flex;
3899
+ flex-wrap: wrap;
3900
+ gap: 24px;
3901
+ }
3902
+
3903
+ .font-pair {
3904
+ flex: 1;
3905
+ min-width: 200px;
3906
+ padding: 16px;
3907
+ background-color: var(--t-bg-elevated);
3908
+ border: var(--t-border-width, 1px) solid var(--t-border);
3909
+ border-radius: var(--t-radius-sm);
3910
+ }
3911
+
3912
+ /* Brutalist font pair cards have slash shape */
3913
+ .theme-brutalist .font-pair {
3914
+ border-radius: 0 16px 0 16px;
3915
+ box-shadow: var(--t-card-shadow);
3916
+ }
3917
+
3918
+ /* Neon font pair cards */
3919
+ .theme-neon .font-pair {
3920
+ border-radius: 0;
3921
+ }
3922
+
3923
+ /* Geometric font pair cards */
3924
+ .theme-geometric .font-pair {
3925
+ border-radius: 0;
3926
+ }
3927
+
3928
+ .font-pair-label {
3929
+ font-size: 0.625rem;
3930
+ font-weight: 600;
3931
+ text-transform: uppercase;
3932
+ letter-spacing: 0.05em;
3933
+ color: var(--t-text-caption);
3934
+ margin-bottom: 4px;
3935
+ }
3936
+
3937
+ .font-pair-name {
3938
+ font-size: 1.5rem;
3939
+ color: var(--t-text-heading);
3940
+ margin-bottom: 4px;
3941
+ }
3942
+
3943
+ .font-pair-desc {
3944
+ font-size: 0.75rem;
3945
+ color: var(--t-text-muted);
3946
+ }
3947
+
3948
+ /* ===== REFINED BRUTALIST OVERRIDES ===== */
3949
+ .theme-refined .mini-sidebar {
3950
+ background-color: var(--t-sidebar-bg);
3951
+ }
3952
+
3953
+ .theme-refined .layout-preview {
3954
+ border-radius: 0 24px 0 24px;
3955
+ }
3956
+
3957
+ .theme-refined .stat-card {
3958
+ border-radius: 0 16px 0 16px;
3959
+ }
3960
+
3961
+ .theme-refined .btn {
3962
+ font-family: var(--t-font-heading);
3963
+ font-weight: 500;
3964
+ }
3965
+
3966
+ .theme-refined .btn-primary {
3967
+ box-shadow: var(--t-btn-shadow);
3968
+ }
3969
+
3970
+ .theme-refined .btn-secondary {
3971
+ box-shadow: var(--t-btn-shadow);
3972
+ }
3973
+
3974
+ .theme-refined .btn-danger {
3975
+ box-shadow: 3px 3px 0 0 #c4818b;
3976
+ }
3977
+
3978
+ .theme-refined.dark-preview .btn-danger {
3979
+ box-shadow: 3px 3px 0 0 #8c4a54;
3980
+ }
3981
+
3982
+ .theme-refined .badge {
3983
+ border: 2px solid var(--t-border);
3984
+ font-family: 'DM Sans', sans-serif;
3985
+ text-transform: uppercase;
3986
+ letter-spacing: 0.05em;
3987
+ font-size: 0.625rem;
3988
+ }
3989
+
3990
+ .theme-refined .form-label {
3991
+ font-family: 'DM Sans', sans-serif;
3992
+ text-transform: uppercase;
3993
+ letter-spacing: 0.05em;
3994
+ font-size: 0.75rem;
3995
+ font-weight: 500;
3996
+ }
3997
+
3998
+ .theme-refined .form-input.focused {
3999
+ box-shadow: 3px 3px 0 0 var(--t-input-focus-ring);
4000
+ }
4001
+
4002
+ .theme-refined .sidebar-item {
4003
+ font-family: var(--t-font-heading);
4004
+ font-size: 1.0625rem;
4005
+ font-weight: 500;
4006
+ padding: 10px 16px;
4007
+ }
4008
+
4009
+ .theme-refined .sidebar-item.active {
4010
+ border-radius: 24px 0 0 0;
4011
+ border-left-width: 3px;
4012
+ }
4013
+
4014
+ .theme-refined .sidebar-logo-icon {
4015
+ border-radius: 0;
4016
+ border: 2px solid var(--t-border);
4017
+ }
4018
+
4019
+ .theme-refined .section-heading {
4020
+ font-size: 1.5rem;
4021
+ font-weight: 700;
4022
+ }
4023
+
4024
+ .theme-refined .mini-table-wrapper {
4025
+ border-radius: 0;
4026
+ }
4027
+
4028
+ .theme-refined .mini-table-row {
4029
+ border-top: 1px solid var(--t-table-border);
4030
+ }
4031
+
4032
+ .theme-refined .alert {
4033
+ border: 2px solid var(--t-border);
4034
+ border-radius: 0 16px 0 16px;
4035
+ border-left: 4px solid;
4036
+ }
4037
+
4038
+ .theme-refined .font-pair {
4039
+ border-radius: 0 16px 0 16px;
4040
+ box-shadow: var(--t-card-shadow);
4041
+ }
4042
+
4043
+ /* ===== NEON AMBER OVERRIDES ===== */
4044
+ .theme-neonAmber .mini-sidebar {
4045
+ background-color: var(--t-sidebar-bg);
4046
+ background-image: radial-gradient(circle, rgba(255, 184, 0, 0.03) 1px, transparent 1px);
4047
+ background-size: 16px 16px;
4048
+ }
4049
+
4050
+ .theme-neonAmber.dark-preview .mini-sidebar {
4051
+ background-image: none;
4052
+ }
4053
+
4054
+ .theme-neonAmber .sidebar-logo-icon {
4055
+ border-radius: 2px;
4056
+ box-shadow: 0 0 8px rgba(255, 184, 0, 0.4);
4057
+ }
4058
+
4059
+ .theme-neonAmber.dark-preview .sidebar-logo-icon {
4060
+ box-shadow: none;
4061
+ }
4062
+
4063
+ .theme-neonAmber .sidebar-item {
4064
+ font-family: 'JetBrains Mono', monospace;
4065
+ font-size: 0.75rem;
4066
+ letter-spacing: 0.02em;
4067
+ }
4068
+
4069
+ .theme-neonAmber .sidebar-item.active {
4070
+ text-shadow: 0 0 10px rgba(255, 184, 0, 0.3);
4071
+ }
4072
+
4073
+ .theme-neonAmber.dark-preview .sidebar-item.active {
4074
+ text-shadow: none;
4075
+ }
4076
+
4077
+ .theme-neonAmber .sidebar-section-label {
4078
+ font-family: 'JetBrains Mono', monospace;
4079
+ font-size: 0.5625rem;
4080
+ font-weight: 700;
4081
+ letter-spacing: 0.12em;
4082
+ }
4083
+
4084
+ .theme-neonAmber .btn {
4085
+ font-family: 'JetBrains Mono', monospace;
4086
+ font-size: 0.75rem;
4087
+ font-weight: 600;
4088
+ letter-spacing: 0.05em;
4089
+ text-transform: uppercase;
4090
+ }
4091
+
4092
+ .theme-neonAmber .btn-primary {
4093
+ box-shadow: 0 0 5px rgba(255, 184, 0, 0.4), 0 0 20px rgba(255, 184, 0, 0.15);
4094
+ }
4095
+
4096
+ .theme-neonAmber.dark-preview .btn-primary {
4097
+ box-shadow: none;
4098
+ }
4099
+
4100
+ .theme-neonAmber .btn-danger {
4101
+ box-shadow: 0 0 5px rgba(255, 107, 0, 0.4), 0 0 20px rgba(255, 107, 0, 0.15);
4102
+ }
4103
+
4104
+ .theme-neonAmber.dark-preview .btn-danger {
4105
+ box-shadow: none;
4106
+ }
4107
+
4108
+ .theme-neonAmber .btn-ghost {
4109
+ border: 1px solid var(--t-border);
4110
+ }
4111
+
4112
+ .theme-neonAmber .badge {
4113
+ font-family: 'JetBrains Mono', monospace;
4114
+ text-transform: uppercase;
4115
+ letter-spacing: 0.05em;
4116
+ font-size: 0.625rem;
4117
+ }
4118
+
4119
+ .theme-neonAmber .badge-primary {
4120
+ border: 1px solid rgba(255, 184, 0, 0.25);
4121
+ }
4122
+
4123
+ .theme-neonAmber .badge-success {
4124
+ border: 1px solid rgba(57, 255, 20, 0.25);
4125
+ }
4126
+
4127
+ .theme-neonAmber .badge-warning {
4128
+ border: 1px solid rgba(255, 224, 102, 0.25);
4129
+ }
4130
+
4131
+ .theme-neonAmber .badge-danger {
4132
+ border: 1px solid rgba(255, 107, 0, 0.25);
4133
+ }
4134
+
4135
+ .theme-neonAmber .badge-info {
4136
+ border: 1px solid rgba(232, 120, 42, 0.25);
4137
+ }
4138
+
4139
+ .theme-neonAmber .stat-card {
4140
+ border-top: 2px solid var(--t-border);
4141
+ }
4142
+
4143
+ .theme-neonAmber .stat-card.accent {
4144
+ border-top: 2px solid #FFB800;
4145
+ box-shadow: 0 0 10px rgba(255, 184, 0, 0.05);
4146
+ }
4147
+
4148
+ .theme-neonAmber.dark-preview .stat-card.accent {
4149
+ border-top: 2px solid #B07800;
4150
+ box-shadow: none;
4151
+ }
4152
+
4153
+ .theme-neonAmber .stat-label {
4154
+ font-family: 'JetBrains Mono', monospace;
4155
+ font-size: 0.625rem;
4156
+ letter-spacing: 0.08em;
4157
+ }
4158
+
4159
+ .theme-neonAmber .stat-value {
4160
+ text-shadow: 0 0 10px rgba(255, 184, 0, 0.3);
4161
+ }
4162
+
4163
+ .theme-neonAmber.dark-preview .stat-value {
4164
+ text-shadow: none;
4165
+ }
4166
+
4167
+ .theme-neonAmber .mini-table-header {
4168
+ font-family: 'JetBrains Mono', monospace;
4169
+ letter-spacing: 0.08em;
4170
+ }
4171
+
4172
+ .theme-neonAmber .mini-table-wrapper {
4173
+ border-radius: 0;
4174
+ }
4175
+
4176
+ .theme-neonAmber .section-heading {
4177
+ text-transform: uppercase;
4178
+ letter-spacing: -0.01em;
4179
+ border-bottom-color: var(--t-border);
4180
+ }
4181
+
4182
+ .theme-neonAmber .form-label {
4183
+ font-family: 'JetBrains Mono', monospace;
4184
+ text-transform: uppercase;
4185
+ letter-spacing: 0.08em;
4186
+ font-size: 0.6875rem;
4187
+ color: var(--t-text-muted);
4188
+ }
4189
+
4190
+ .theme-neonAmber .form-input {
4191
+ caret-color: #FFB800;
4192
+ }
4193
+
4194
+ .theme-neonAmber .form-input.focused {
4195
+ box-shadow: 0 0 0 1px #FFB800, 0 0 15px rgba(255, 184, 0, 0.15);
4196
+ }
4197
+
4198
+ .theme-neonAmber.dark-preview .form-input.focused {
4199
+ box-shadow: 0 0 0 1px #B07800;
4200
+ }
4201
+
4202
+ .theme-neonAmber .alert {
4203
+ border-radius: 0px;
4204
+ background-color: var(--t-bg-muted);
4205
+ }
4206
+
4207
+ .theme-neonAmber .alert-success {
4208
+ box-shadow: 0 0 10px rgba(57, 255, 20, 0.05);
4209
+ }
4210
+
4211
+ .theme-neonAmber .alert-danger {
4212
+ box-shadow: 0 0 10px rgba(255, 107, 0, 0.05);
4213
+ }
4214
+
4215
+ .theme-neonAmber .preview-card {
4216
+ border-top: 2px solid #FFB800;
4217
+ }
4218
+
4219
+ .theme-neonAmber.dark-preview .preview-card {
4220
+ border-top: 2px solid #B07800;
4221
+ }
4222
+
4223
+ .theme-neonAmber .theme-mode-badge {
4224
+ font-family: 'JetBrains Mono', monospace;
4225
+ text-transform: uppercase;
4226
+ letter-spacing: 0.05em;
4227
+ font-size: 0.6875rem;
4228
+ border: 1px solid rgba(255, 184, 0, 0.25);
4229
+ }
4230
+
4231
+ .theme-neonAmber.dark-preview .theme-mode-badge {
4232
+ border-color: var(--t-border);
4233
+ }
4234
+
4235
+ .theme-neonAmber .font-pair {
4236
+ border-radius: 0;
4237
+ }
4238
+
4239
+ .theme-neonAmber .swatch-color {
4240
+ border-radius: 2px;
4241
+ }
4242
+
4243
+ .theme-neonAmber .type-heading-xl {
4244
+ text-shadow: 0 0 7px rgba(255, 184, 0, 0.5), 0 0 20px rgba(255, 184, 0, 0.2);
4245
+ color: #FFB800;
4246
+ text-transform: uppercase;
4247
+ }
4248
+
4249
+ .theme-neonAmber.dark-preview .type-heading-xl {
4250
+ text-shadow: none;
4251
+ color: #B07800;
4252
+ }
4253
+
4254
+ /* ===== NEON VIOLET OVERRIDES ===== */
4255
+ .theme-neonViolet .mini-sidebar {
4256
+ background-color: var(--t-sidebar-bg);
4257
+ background-image: radial-gradient(circle, rgba(168, 85, 247, 0.03) 1px, transparent 1px);
4258
+ background-size: 16px 16px;
4259
+ }
4260
+
4261
+ .theme-neonViolet.dark-preview .mini-sidebar {
4262
+ background-image: none;
4263
+ background-color: var(--t-sidebar-bg);
4264
+ }
4265
+
4266
+ .theme-neonViolet .sidebar-logo-icon {
4267
+ border-radius: 2px;
4268
+ box-shadow: 0 0 8px rgba(168, 85, 247, 0.4);
4269
+ }
4270
+
4271
+ .theme-neonViolet.dark-preview .sidebar-logo-icon {
4272
+ box-shadow: none;
4273
+ }
4274
+
4275
+ .theme-neonViolet .sidebar-item {
4276
+ font-family: 'JetBrains Mono', monospace;
4277
+ font-size: 0.75rem;
4278
+ letter-spacing: 0.02em;
4279
+ }
4280
+
4281
+ .theme-neonViolet .sidebar-item.active {
4282
+ text-shadow: 0 0 10px rgba(168, 85, 247, 0.3);
4283
+ }
4284
+
4285
+ .theme-neonViolet.dark-preview .sidebar-item.active {
4286
+ text-shadow: none;
4287
+ }
4288
+
4289
+ .theme-neonViolet .sidebar-section-label {
4290
+ font-family: 'JetBrains Mono', monospace;
4291
+ font-size: 0.5625rem;
4292
+ font-weight: 700;
4293
+ letter-spacing: 0.12em;
4294
+ }
4295
+
4296
+ .theme-neonViolet .btn {
4297
+ font-family: 'JetBrains Mono', monospace;
4298
+ font-size: 0.75rem;
4299
+ font-weight: 600;
4300
+ letter-spacing: 0.05em;
4301
+ text-transform: uppercase;
4302
+ }
4303
+
4304
+ .theme-neonViolet .btn-primary {
4305
+ box-shadow: 0 0 5px rgba(168, 85, 247, 0.4), 0 0 20px rgba(168, 85, 247, 0.15);
4306
+ }
4307
+
4308
+ .theme-neonViolet.dark-preview .btn-primary {
4309
+ box-shadow: none;
4310
+ }
4311
+
4312
+ .theme-neonViolet .btn-danger {
4313
+ box-shadow: 0 0 5px rgba(244, 114, 182, 0.4), 0 0 20px rgba(244, 114, 182, 0.15);
4314
+ }
4315
+
4316
+ .theme-neonViolet.dark-preview .btn-danger {
4317
+ box-shadow: none;
4318
+ }
4319
+
4320
+ .theme-neonViolet .btn-ghost {
4321
+ border: 1px solid var(--t-border);
4322
+ }
4323
+
4324
+ .theme-neonViolet .badge {
4325
+ font-family: 'JetBrains Mono', monospace;
4326
+ text-transform: uppercase;
4327
+ letter-spacing: 0.05em;
4328
+ font-size: 0.625rem;
4329
+ }
4330
+
4331
+ .theme-neonViolet .badge-primary {
4332
+ border: 1px solid rgba(168, 85, 247, 0.25);
4333
+ }
4334
+
4335
+ .theme-neonViolet .badge-success {
4336
+ border: 1px solid rgba(52, 211, 153, 0.25);
4337
+ }
4338
+
4339
+ .theme-neonViolet .badge-warning {
4340
+ border: 1px solid rgba(251, 191, 36, 0.25);
4341
+ }
4342
+
4343
+ .theme-neonViolet .badge-danger {
4344
+ border: 1px solid rgba(244, 114, 182, 0.25);
4345
+ }
4346
+
4347
+ .theme-neonViolet .badge-info {
4348
+ border: 1px solid rgba(96, 165, 250, 0.25);
4349
+ }
4350
+
4351
+ .theme-neonViolet .stat-card {
4352
+ border-top: 2px solid var(--t-border);
4353
+ }
4354
+
4355
+ .theme-neonViolet .stat-card.accent {
4356
+ border-top: 2px solid #A855F7;
4357
+ box-shadow: 0 0 10px rgba(168, 85, 247, 0.05);
4358
+ }
4359
+
4360
+ .theme-neonViolet.dark-preview .stat-card.accent {
4361
+ border-top: 2px solid #7C3AED;
4362
+ box-shadow: none;
4363
+ }
4364
+
4365
+ .theme-neonViolet .stat-label {
4366
+ font-family: 'JetBrains Mono', monospace;
4367
+ font-size: 0.625rem;
4368
+ letter-spacing: 0.08em;
4369
+ }
4370
+
4371
+ .theme-neonViolet .stat-value {
4372
+ text-shadow: 0 0 10px rgba(168, 85, 247, 0.3);
4373
+ }
4374
+
4375
+ .theme-neonViolet.dark-preview .stat-value {
4376
+ text-shadow: none;
4377
+ }
4378
+
4379
+ .theme-neonViolet .mini-table-header {
4380
+ font-family: 'JetBrains Mono', monospace;
4381
+ letter-spacing: 0.08em;
4382
+ }
4383
+
4384
+ .theme-neonViolet .mini-table-wrapper {
4385
+ border-radius: 0;
4386
+ }
4387
+
4388
+ .theme-neonViolet .section-heading {
4389
+ text-transform: uppercase;
4390
+ letter-spacing: -0.01em;
4391
+ border-bottom-color: var(--t-border);
4392
+ }
4393
+
4394
+ .theme-neonViolet .form-label {
4395
+ font-family: 'JetBrains Mono', monospace;
4396
+ text-transform: uppercase;
4397
+ letter-spacing: 0.08em;
4398
+ font-size: 0.6875rem;
4399
+ color: var(--t-text-muted);
4400
+ }
4401
+
4402
+ .theme-neonViolet .form-input {
4403
+ caret-color: #A855F7;
4404
+ }
4405
+
4406
+ .theme-neonViolet .form-input.focused {
4407
+ box-shadow: 0 0 0 1px #A855F7, 0 0 15px rgba(168, 85, 247, 0.15);
4408
+ }
4409
+
4410
+ .theme-neonViolet.dark-preview .form-input.focused {
4411
+ box-shadow: 0 0 0 1px #7C3AED;
4412
+ }
4413
+
4414
+ .theme-neonViolet .alert {
4415
+ border-radius: 0px;
4416
+ background-color: var(--t-bg-muted);
4417
+ }
4418
+
4419
+ .theme-neonViolet .preview-card {
4420
+ border-top: 2px solid #A855F7;
4421
+ }
4422
+
4423
+ .theme-neonViolet.dark-preview .preview-card {
4424
+ border-top: 2px solid #7C3AED;
4425
+ }
4426
+
4427
+ .theme-neonViolet .theme-mode-badge {
4428
+ font-family: 'JetBrains Mono', monospace;
4429
+ text-transform: uppercase;
4430
+ letter-spacing: 0.05em;
4431
+ font-size: 0.6875rem;
4432
+ border: 1px solid rgba(168, 85, 247, 0.25);
4433
+ }
4434
+
4435
+ .theme-neonViolet.dark-preview .theme-mode-badge {
4436
+ border-color: var(--t-border);
4437
+ }
4438
+
4439
+ .theme-neonViolet .font-pair {
4440
+ border-radius: 0;
4441
+ }
4442
+
4443
+ .theme-neonViolet .swatch-color {
4444
+ border-radius: 2px;
4445
+ }
4446
+
4447
+ .theme-neonViolet .type-heading-xl {
4448
+ text-shadow: 0 0 7px rgba(168, 85, 247, 0.5), 0 0 20px rgba(168, 85, 247, 0.2);
4449
+ color: #A855F7;
4450
+ text-transform: uppercase;
4451
+ }
4452
+
4453
+ .theme-neonViolet.dark-preview .type-heading-xl {
4454
+ text-shadow: none;
4455
+ color: #7C3AED;
4456
+ }
4457
+
4458
+ /* ===== GRADIENT FLOW OVERRIDES ===== */
4459
+ .theme-gradient .mini-sidebar {
4460
+ background: linear-gradient(180deg, #4f46e5, #8b5cf6);
4461
+ }
4462
+
4463
+ .theme-gradient.dark-preview .mini-sidebar {
4464
+ background: linear-gradient(180deg, #3730a3, #6d28d9);
4465
+ }
4466
+
4467
+ .theme-gradient .sidebar-logo-text {
4468
+ color: #ffffff;
4469
+ }
4470
+
4471
+ .theme-gradient .sidebar-logo {
4472
+ border-bottom-color: rgba(255,255,255,0.1);
4473
+ }
4474
+
4475
+ .theme-gradient .sidebar-logo-icon {
4476
+ border-radius: 8px;
4477
+ }
4478
+
4479
+ .theme-gradient .btn-primary {
4480
+ background: linear-gradient(135deg, #4f46e5, #8b5cf6);
4481
+ border-color: transparent;
4482
+ }
4483
+
4484
+ .theme-gradient .btn-primary:hover {
4485
+ background: linear-gradient(135deg, #4338ca, #7c3aed);
4486
+ }
4487
+
4488
+ .theme-gradient.dark-preview .btn-primary {
4489
+ background: linear-gradient(135deg, #3730a3, #6d28d9);
4490
+ }
4491
+
4492
+ .theme-gradient .btn-danger {
4493
+ background: linear-gradient(135deg, #e11d48, #f97316);
4494
+ border-color: transparent;
4495
+ }
4496
+
4497
+ .theme-gradient .mini-table-header {
4498
+ background: linear-gradient(90deg, #4f46e5, #8b5cf6);
4499
+ color: #ffffff;
4500
+ }
4501
+
4502
+ .theme-gradient.dark-preview .mini-table-header {
4503
+ background: linear-gradient(90deg, #3730a3, #6d28d9);
4504
+ }
4505
+
4506
+ .theme-gradient .stat-card.accent {
4507
+ background: linear-gradient(135deg, rgba(99,102,241,0.08), rgba(139,92,246,0.08));
4508
+ }
4509
+
4510
+ .theme-gradient.dark-preview .stat-card.accent {
4511
+ background: linear-gradient(135deg, rgba(99,102,241,0.15), rgba(139,92,246,0.15));
4512
+ }
4513
+
4514
+ .theme-gradient .preview-card {
4515
+ border-top: 3px solid transparent;
4516
+ border-image: linear-gradient(90deg, #4f46e5, #8b5cf6) 1;
4517
+ }
4518
+
4519
+ .theme-gradient .badge-primary {
4520
+ background: linear-gradient(135deg, rgba(99,102,241,0.12), rgba(139,92,246,0.12));
4521
+ }
4522
+
4523
+ .theme-gradient .badge-success {
4524
+ background: linear-gradient(135deg, rgba(5,150,105,0.12), rgba(16,185,129,0.12));
4525
+ }
4526
+
4527
+ .theme-gradient .badge-info {
4528
+ background: linear-gradient(135deg, rgba(13,148,136,0.12), rgba(6,182,212,0.12));
4529
+ }
4530
+
4531
+ .theme-gradient .type-heading-xl {
4532
+ background: linear-gradient(135deg, #6366f1, #a78bfa);
4533
+ -webkit-background-clip: text;
4534
+ -webkit-text-fill-color: transparent;
4535
+ background-clip: text;
4536
+ }
4537
+
4538
+ .theme-gradient.dark-preview .type-heading-xl {
4539
+ background: linear-gradient(135deg, #818cf8, #c4b5fd);
4540
+ -webkit-background-clip: text;
4541
+ -webkit-text-fill-color: transparent;
4542
+ background-clip: text;
4543
+ }
4544
+
4545
+ .theme-gradient .form-input.focused {
4546
+ border-color: #6366f1;
4547
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
4548
+ }
4549
+
4550
+ /* ===== GLASS BACKGROUND SWITCHER THUMBNAILS ===== */
4551
+ .glass-bg-thumb {
4552
+ width: 32px;
4553
+ height: 32px;
4554
+ border-radius: 8px;
4555
+ border: 2px solid transparent;
4556
+ cursor: pointer;
4557
+ transition: all 0.2s ease;
4558
+ flex-shrink: 0;
4559
+ }
4560
+
4561
+ .glass-bg-thumb:hover {
4562
+ transform: scale(1.1);
4563
+ box-shadow: 0 2px 8px rgba(0,0,0,0.15);
4564
+ }
4565
+
4566
+ .glass-bg-thumb-active {
4567
+ border-color: var(--ui-primary);
4568
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.25);
4569
+ transform: scale(1.1);
4570
+ }
4571
+
4572
+ /* ===== LIQUID GLASS OVERRIDES ===== */
4573
+
4574
+ /* --- Mesh (default) --- */
4575
+ .theme-glass.glass-bg-mesh .theme-preview-wrapper {
4576
+ background-color: #EEF0F5;
4577
+ background-image:
4578
+ radial-gradient(ellipse at 20% 0%, rgba(0, 122, 255, 0.06) 0%, transparent 50%),
4579
+ radial-gradient(ellipse at 80% 100%, rgba(175, 82, 222, 0.05) 0%, transparent 50%),
4580
+ radial-gradient(ellipse at 50% 50%, rgba(90, 200, 250, 0.03) 0%, transparent 70%);
4581
+ }
4582
+
4583
+ .theme-glass.glass-bg-mesh.dark-preview .theme-preview-wrapper {
4584
+ background-color: #0A0A0F;
4585
+ background-image:
4586
+ radial-gradient(ellipse at 15% 10%, rgba(10, 132, 255, 0.08) 0%, transparent 45%),
4587
+ radial-gradient(ellipse at 85% 90%, rgba(175, 82, 222, 0.06) 0%, transparent 45%),
4588
+ radial-gradient(ellipse at 50% 50%, rgba(90, 200, 250, 0.03) 0%, transparent 60%);
4589
+ }
4590
+
4591
+ /* --- Aurora --- */
4592
+ .theme-glass.glass-bg-aurora .theme-preview-wrapper {
4593
+ background:
4594
+ radial-gradient(ellipse at 10% 80%, rgba(16, 185, 129, 0.7) 0%, transparent 50%),
4595
+ radial-gradient(ellipse at 50% 10%, rgba(56, 189, 248, 0.6) 0%, transparent 45%),
4596
+ radial-gradient(ellipse at 80% 60%, rgba(139, 92, 246, 0.65) 0%, transparent 50%),
4597
+ radial-gradient(ellipse at 30% 40%, rgba(52, 211, 153, 0.5) 0%, transparent 40%),
4598
+ linear-gradient(170deg, #064e3b 0%, #0c4a6e 30%, #3b0764 60%, #065f46 100%);
4599
+ }
4600
+
4601
+ .theme-glass.glass-bg-aurora.dark-preview .theme-preview-wrapper {
4602
+ background:
4603
+ radial-gradient(ellipse at 10% 80%, rgba(16, 185, 129, 0.5) 0%, transparent 50%),
4604
+ radial-gradient(ellipse at 50% 10%, rgba(56, 189, 248, 0.35) 0%, transparent 45%),
4605
+ radial-gradient(ellipse at 80% 60%, rgba(139, 92, 246, 0.45) 0%, transparent 50%),
4606
+ radial-gradient(ellipse at 30% 40%, rgba(52, 211, 153, 0.3) 0%, transparent 40%),
4607
+ linear-gradient(170deg, #022c22 0%, #082f49 30%, #1e0533 60%, #022c22 100%);
4608
+ }
4609
+
4610
+ /* --- Sunset --- */
4611
+ .theme-glass.glass-bg-sunset .theme-preview-wrapper {
4612
+ background:
4613
+ radial-gradient(ellipse at 20% 20%, rgba(251, 146, 60, 0.7) 0%, transparent 45%),
4614
+ radial-gradient(ellipse at 70% 30%, rgba(244, 114, 182, 0.65) 0%, transparent 50%),
4615
+ radial-gradient(ellipse at 40% 80%, rgba(192, 38, 211, 0.5) 0%, transparent 50%),
4616
+ radial-gradient(ellipse at 90% 80%, rgba(124, 58, 237, 0.4) 0%, transparent 45%),
4617
+ linear-gradient(145deg, #ea580c 0%, #db2777 35%, #7c3aed 65%, #4c1d95 100%);
4618
+ }
4619
+
4620
+ .theme-glass.glass-bg-sunset.dark-preview .theme-preview-wrapper {
4621
+ background:
4622
+ radial-gradient(ellipse at 20% 20%, rgba(251, 146, 60, 0.45) 0%, transparent 45%),
4623
+ radial-gradient(ellipse at 70% 30%, rgba(244, 114, 182, 0.4) 0%, transparent 50%),
4624
+ radial-gradient(ellipse at 40% 80%, rgba(192, 38, 211, 0.35) 0%, transparent 50%),
4625
+ radial-gradient(ellipse at 90% 80%, rgba(124, 58, 237, 0.3) 0%, transparent 45%),
4626
+ linear-gradient(145deg, #7c2d12 0%, #831843 35%, #4c1d95 65%, #1e1b4b 100%);
4627
+ }
4628
+
4629
+ /* --- Ocean --- */
4630
+ .theme-glass.glass-bg-ocean .theme-preview-wrapper {
4631
+ background:
4632
+ radial-gradient(ellipse at 15% 15%, rgba(6, 182, 212, 0.6) 0%, transparent 45%),
4633
+ radial-gradient(ellipse at 75% 50%, rgba(20, 184, 166, 0.5) 0%, transparent 45%),
4634
+ radial-gradient(ellipse at 40% 90%, rgba(59, 130, 246, 0.4) 0%, transparent 50%),
4635
+ radial-gradient(ellipse at 85% 10%, rgba(34, 211, 238, 0.35) 0%, transparent 40%),
4636
+ linear-gradient(160deg, #0c4a6e 0%, #0d6986 25%, #115e59 50%, #164e63 75%, #0c4a6e 100%);
4637
+ }
4638
+
4639
+ .theme-glass.glass-bg-ocean.dark-preview .theme-preview-wrapper {
4640
+ background:
4641
+ radial-gradient(ellipse at 15% 15%, rgba(6, 182, 212, 0.35) 0%, transparent 45%),
4642
+ radial-gradient(ellipse at 75% 50%, rgba(20, 184, 166, 0.3) 0%, transparent 45%),
4643
+ radial-gradient(ellipse at 40% 90%, rgba(59, 130, 246, 0.25) 0%, transparent 50%),
4644
+ radial-gradient(ellipse at 85% 10%, rgba(34, 211, 238, 0.2) 0%, transparent 40%),
4645
+ linear-gradient(160deg, #042f2e 0%, #083344 25%, #052e16 50%, #0c4a6e 75%, #042f2e 100%);
4646
+ }
4647
+
4648
+ /* --- Cosmic --- */
4649
+ .theme-glass.glass-bg-cosmic .theme-preview-wrapper {
4650
+ background:
4651
+ radial-gradient(circle at 25% 25%, rgba(168, 85, 247, 0.7) 0%, transparent 35%),
4652
+ radial-gradient(circle at 75% 75%, rgba(236, 72, 153, 0.5) 0%, transparent 35%),
4653
+ radial-gradient(circle at 60% 20%, rgba(59, 130, 246, 0.4) 0%, transparent 30%),
4654
+ radial-gradient(circle at 15% 70%, rgba(6, 182, 212, 0.35) 0%, transparent 30%),
4655
+ radial-gradient(circle at 50% 50%, rgba(139, 92, 246, 0.2) 0%, transparent 50%),
4656
+ linear-gradient(135deg, #0f0c29 0%, #302b63 40%, #24243e 70%, #0f0c29 100%);
4657
+ }
4658
+
4659
+ .theme-glass.glass-bg-cosmic.dark-preview .theme-preview-wrapper {
4660
+ background:
4661
+ radial-gradient(circle at 25% 25%, rgba(168, 85, 247, 0.5) 0%, transparent 35%),
4662
+ radial-gradient(circle at 75% 75%, rgba(236, 72, 153, 0.35) 0%, transparent 35%),
4663
+ radial-gradient(circle at 60% 20%, rgba(59, 130, 246, 0.25) 0%, transparent 30%),
4664
+ radial-gradient(circle at 15% 70%, rgba(6, 182, 212, 0.2) 0%, transparent 30%),
4665
+ radial-gradient(circle at 50% 50%, rgba(139, 92, 246, 0.15) 0%, transparent 50%),
4666
+ linear-gradient(135deg, #07051a 0%, #1a1640 40%, #131127 70%, #07051a 100%);
4667
+ }
4668
+
4669
+ /* --- Abstract --- */
4670
+ .theme-glass.glass-bg-abstract .theme-preview-wrapper {
4671
+ background:
4672
+ linear-gradient(135deg, rgba(214, 40, 40, 0.8) 0%, rgba(214, 40, 40, 0.8) 18%, transparent 18%),
4673
+ linear-gradient(225deg, rgba(0, 61, 165, 0.75) 0%, rgba(0, 61, 165, 0.75) 22%, transparent 22%),
4674
+ linear-gradient(315deg, rgba(245, 183, 0, 0.7) 0%, rgba(245, 183, 0, 0.7) 20%, transparent 20%),
4675
+ radial-gradient(ellipse at 50% 50%, rgba(245, 183, 0, 0.5) 0%, transparent 60%),
4676
+ radial-gradient(ellipse at 30% 60%, rgba(214, 40, 40, 0.4) 0%, transparent 50%),
4677
+ radial-gradient(ellipse at 70% 40%, rgba(0, 61, 165, 0.45) 0%, transparent 50%),
4678
+ linear-gradient(180deg, #f0ebe3 0%, #ece6da 100%);
4679
+ }
4680
+
4681
+ .theme-glass.glass-bg-abstract.dark-preview .theme-preview-wrapper {
4682
+ background:
4683
+ linear-gradient(135deg, rgba(214, 40, 40, 0.55) 0%, rgba(214, 40, 40, 0.55) 18%, transparent 18%),
4684
+ linear-gradient(225deg, rgba(0, 61, 165, 0.5) 0%, rgba(0, 61, 165, 0.5) 22%, transparent 22%),
4685
+ linear-gradient(315deg, rgba(245, 183, 0, 0.45) 0%, rgba(245, 183, 0, 0.45) 20%, transparent 20%),
4686
+ radial-gradient(ellipse at 50% 50%, rgba(245, 183, 0, 0.25) 0%, transparent 60%),
4687
+ radial-gradient(ellipse at 30% 60%, rgba(214, 40, 40, 0.2) 0%, transparent 50%),
4688
+ radial-gradient(ellipse at 70% 40%, rgba(0, 61, 165, 0.25) 0%, transparent 50%),
4689
+ linear-gradient(180deg, #1a1a1a 0%, #111111 100%);
4690
+ }
4691
+
4692
+ /* --- Energis Orange --- */
4693
+ .theme-glass.glass-bg-energis .theme-preview-wrapper {
4694
+ background:
4695
+ radial-gradient(ellipse at 20% 15%, rgba(249, 201, 124, 0.85) 0%, transparent 50%),
4696
+ radial-gradient(ellipse at 75% 25%, rgba(242, 166, 90, 0.7) 0%, transparent 45%),
4697
+ radial-gradient(ellipse at 50% 75%, rgba(232, 137, 92, 0.6) 0%, transparent 50%),
4698
+ radial-gradient(ellipse at 85% 80%, rgba(255, 183, 107, 0.5) 0%, transparent 40%),
4699
+ radial-gradient(ellipse at 15% 60%, rgba(252, 211, 149, 0.45) 0%, transparent 45%),
4700
+ linear-gradient(155deg, #F9C97C 0%, #F2A65A 30%, #E8895C 55%, #F5B574 80%, #FCD395 100%);
4701
+ }
4702
+
4703
+ .theme-glass.glass-bg-energis.dark-preview .theme-preview-wrapper {
4704
+ background:
4705
+ radial-gradient(ellipse at 20% 15%, rgba(249, 201, 124, 0.35) 0%, transparent 50%),
4706
+ radial-gradient(ellipse at 75% 25%, rgba(242, 166, 90, 0.28) 0%, transparent 45%),
4707
+ radial-gradient(ellipse at 50% 75%, rgba(232, 137, 92, 0.22) 0%, transparent 50%),
4708
+ radial-gradient(ellipse at 85% 80%, rgba(255, 183, 107, 0.18) 0%, transparent 40%),
4709
+ radial-gradient(ellipse at 15% 60%, rgba(252, 211, 149, 0.15) 0%, transparent 45%),
4710
+ linear-gradient(155deg, #2a1a08 0%, #1f1408 30%, #1a0f08 55%, #1c1208 80%, #211808 100%);
4711
+ }
4712
+
4713
+ .theme-glass .mini-sidebar {
4714
+ background: rgba(255, 255, 255, 0.62);
4715
+ backdrop-filter: blur(16px) saturate(180%);
4716
+ -webkit-backdrop-filter: blur(16px) saturate(180%);
4717
+ }
4718
+
4719
+ .theme-glass.dark-preview .mini-sidebar {
4720
+ background: rgba(28, 28, 30, 0.55);
4721
+ backdrop-filter: blur(16px) saturate(180%);
4722
+ -webkit-backdrop-filter: blur(16px) saturate(180%);
4723
+ }
4724
+
4725
+ .theme-glass .sidebar-logo {
4726
+ border-bottom-color: rgba(209, 213, 219, 0.35);
4727
+ }
4728
+
4729
+ .theme-glass.dark-preview .sidebar-logo {
4730
+ border-bottom-color: rgba(255, 255, 255, 0.12);
4731
+ }
4732
+
4733
+ .theme-glass .sidebar-logo-icon {
4734
+ border-radius: 8px;
4735
+ }
4736
+
4737
+ .theme-glass .stat-card {
4738
+ backdrop-filter: blur(16px) saturate(180%);
4739
+ -webkit-backdrop-filter: blur(16px) saturate(180%);
4740
+ border: 1px solid rgba(255, 255, 255, 0.45);
4741
+ box-shadow: 0 1px 3px rgba(0,0,0,0.04), inset 0 1px 0 rgba(255,255,255,0.5);
4742
+ }
4743
+
4744
+ .theme-glass.dark-preview .stat-card {
4745
+ border: 1px solid rgba(255, 255, 255, 0.12);
4746
+ box-shadow: 0 1px 3px rgba(0,0,0,0.2), inset 0 1px 0 rgba(255,255,255,0.06);
4747
+ }
4748
+
4749
+ .theme-glass .preview-card {
4750
+ backdrop-filter: blur(16px) saturate(180%);
4751
+ -webkit-backdrop-filter: blur(16px) saturate(180%);
4752
+ border: 1px solid rgba(255, 255, 255, 0.45);
4753
+ box-shadow: 0 1px 3px rgba(0,0,0,0.04), inset 0 1px 0 rgba(255,255,255,0.5);
4754
+ }
4755
+
4756
+ .theme-glass.dark-preview .preview-card {
4757
+ border: 1px solid rgba(255, 255, 255, 0.12);
4758
+ box-shadow: 0 1px 3px rgba(0,0,0,0.2), inset 0 1px 0 rgba(255,255,255,0.06);
4759
+ }
4760
+
4761
+ .theme-glass .layout-preview {
4762
+ backdrop-filter: blur(8px);
4763
+ -webkit-backdrop-filter: blur(8px);
4764
+ border: 1px solid rgba(255, 255, 255, 0.45);
4765
+ }
4766
+
4767
+ .theme-glass.dark-preview .layout-preview {
4768
+ border: 1px solid rgba(255, 255, 255, 0.12);
4769
+ }
4770
+
4771
+ .theme-glass .alert {
4772
+ backdrop-filter: blur(12px) saturate(180%);
4773
+ -webkit-backdrop-filter: blur(12px) saturate(180%);
4774
+ border-radius: 10px;
4775
+ }
4776
+
4777
+ .theme-glass .form-input {
4778
+ backdrop-filter: blur(8px);
4779
+ -webkit-backdrop-filter: blur(8px);
4780
+ }
4781
+
4782
+ .theme-glass .form-select {
4783
+ backdrop-filter: blur(8px);
4784
+ -webkit-backdrop-filter: blur(8px);
4785
+ background: rgba(255, 255, 255, 0.6);
4786
+ }
4787
+
4788
+ .theme-glass.dark-preview .form-select {
4789
+ background: rgba(28, 28, 30, 0.55);
4790
+ }
4791
+
4792
+ .theme-glass .font-pair {
4793
+ backdrop-filter: blur(16px) saturate(180%);
4794
+ -webkit-backdrop-filter: blur(16px) saturate(180%);
4795
+ }
4796
+
4797
+ .theme-glass .theme-mode-badge {
4798
+ backdrop-filter: blur(8px);
4799
+ -webkit-backdrop-filter: blur(8px);
4800
+ }
4801
+ </style>