m9sh 0.2.1 → 0.2.2

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 (125) hide show
  1. checksums.yaml +4 -4
  2. data/.idea/hotcdn.iml +30 -0
  3. data/.mise.toml +2 -2
  4. data/app/assets/config/manifest.js +4 -0
  5. data/app/assets/images/icons/activity.svg +3 -0
  6. data/app/assets/images/icons/bell.svg +4 -0
  7. data/app/assets/images/icons/book.svg +4 -0
  8. data/app/assets/images/icons/chevron-down.svg +3 -0
  9. data/app/assets/images/icons/chevron-left.svg +3 -0
  10. data/app/assets/images/icons/chevron-right.svg +3 -0
  11. data/app/assets/images/icons/credit-card.svg +4 -0
  12. data/app/assets/images/icons/dollar-sign.svg +3 -0
  13. data/app/assets/images/icons/edit.svg +4 -0
  14. data/app/assets/images/icons/github.svg +3 -0
  15. data/app/assets/images/icons/home.svg +4 -0
  16. data/app/assets/images/icons/info.svg +5 -0
  17. data/app/assets/images/icons/layout.svg +6 -0
  18. data/app/assets/images/icons/logout.svg +5 -0
  19. data/app/assets/images/icons/menu.svg +5 -0
  20. data/app/assets/images/icons/moon.svg +3 -0
  21. data/app/assets/images/icons/paintbrush.svg +6 -0
  22. data/app/assets/images/icons/search.svg +4 -0
  23. data/app/assets/images/icons/settings.svg +4 -0
  24. data/app/assets/images/icons/sun.svg +11 -0
  25. data/app/assets/images/icons/user.svg +4 -0
  26. data/app/assets/images/icons/users.svg +5 -0
  27. data/app/assets/stylesheets/tailwind.css +1180 -0
  28. data/app/components/backdrop_component.rb +103 -0
  29. data/app/components/docs/code_block_component.rb +56 -0
  30. data/app/components/docs/component_api_component.rb +16 -0
  31. data/app/components/docs/component_examples_component.rb +16 -0
  32. data/app/components/docs/component_header_component.html.erb +8 -0
  33. data/app/components/docs/component_header_component.rb +14 -0
  34. data/app/components/docs/component_installation_component.html.erb +15 -0
  35. data/app/components/docs/component_installation_component.rb +13 -0
  36. data/app/components/docs/component_page_component.html.erb +9 -0
  37. data/app/components/docs/component_page_component.rb +19 -0
  38. data/app/components/docs/component_preview_component.rb +318 -0
  39. data/app/components/docs/component_usage_component.rb +18 -0
  40. data/app/components/docs/prop_table_component.rb +64 -0
  41. data/app/controllers/application_controller.rb +3 -0
  42. data/app/controllers/blocks_controller.rb +51 -0
  43. data/app/controllers/docs_controller.rb +162 -0
  44. data/app/controllers/showcase_controller.rb +42 -0
  45. data/app/helpers/blocks_helper.rb +343 -0
  46. data/app/helpers/docs_helper.rb +3807 -0
  47. data/app/helpers/m9sh/toast_helper.rb +46 -0
  48. data/app/helpers/m9sh_helper.rb +343 -0
  49. data/app/javascript/application.js +3 -0
  50. data/app/javascript/controllers/application.js +9 -0
  51. data/app/javascript/controllers/backdrop_controller.js +137 -0
  52. data/app/javascript/controllers/color_customizer_controller.js +569 -0
  53. data/app/javascript/controllers/color_theme_controller.js +120 -0
  54. data/app/javascript/controllers/docs/component_preview_controller.js +149 -0
  55. data/app/javascript/controllers/docs/copy_button_controller.js +20 -0
  56. data/app/javascript/controllers/index.js +6 -0
  57. data/app/javascript/controllers/theme_controller.js +23 -0
  58. data/app/views/blocks/_sidebar.html.erb +31 -0
  59. data/app/views/blocks/_toc.html.erb +29 -0
  60. data/app/views/blocks/examples/dashboard-01.html.erb +180 -0
  61. data/app/views/blocks/examples/dashboard-02.html.erb +190 -0
  62. data/app/views/blocks/examples/dashboard-03.html.erb +210 -0
  63. data/app/views/blocks/examples/settings-01.html.erb +220 -0
  64. data/app/views/blocks/examples/settings-02.html.erb +231 -0
  65. data/app/views/blocks/examples/settings-03.html.erb +340 -0
  66. data/app/views/blocks/index.html.erb +65 -0
  67. data/app/views/docs/_sidebar.html.erb +47 -0
  68. data/app/views/docs/_toc.html.erb +19 -0
  69. data/app/views/docs/about.html.erb +68 -0
  70. data/app/views/docs/components/accordion.html.erb +196 -0
  71. data/app/views/docs/components/alert.html.erb +272 -0
  72. data/app/views/docs/components/alert_dialog.html.erb +232 -0
  73. data/app/views/docs/components/avatar.html.erb +207 -0
  74. data/app/views/docs/components/badge.html.erb +145 -0
  75. data/app/views/docs/components/breadcrumb.html.erb +264 -0
  76. data/app/views/docs/components/button.html.erb +229 -0
  77. data/app/views/docs/components/card.html.erb +378 -0
  78. data/app/views/docs/components/checkbox.html.erb +212 -0
  79. data/app/views/docs/components/collapsible.html.erb +252 -0
  80. data/app/views/docs/components/dialog.html.erb +323 -0
  81. data/app/views/docs/components/dropdown_menu.html.erb +289 -0
  82. data/app/views/docs/components/hover_card.html.erb +220 -0
  83. data/app/views/docs/components/input.html.erb +254 -0
  84. data/app/views/docs/components/label.html.erb +128 -0
  85. data/app/views/docs/components/main.html.erb +352 -0
  86. data/app/views/docs/components/navbar.html.erb +394 -0
  87. data/app/views/docs/components/navigation_menu.html.erb +226 -0
  88. data/app/views/docs/components/popover.html.erb +267 -0
  89. data/app/views/docs/components/progress.html.erb +107 -0
  90. data/app/views/docs/components/radio_group.html.erb +209 -0
  91. data/app/views/docs/components/select.html.erb +260 -0
  92. data/app/views/docs/components/separator.html.erb +162 -0
  93. data/app/views/docs/components/sheet.html.erb +270 -0
  94. data/app/views/docs/components/sidebar.html.erb +597 -0
  95. data/app/views/docs/components/skeleton.html.erb +150 -0
  96. data/app/views/docs/components/slider.html.erb +218 -0
  97. data/app/views/docs/components/spinner.html.erb +132 -0
  98. data/app/views/docs/components/switch.html.erb +148 -0
  99. data/app/views/docs/components/table.html.erb +259 -0
  100. data/app/views/docs/components/tabs.html.erb +225 -0
  101. data/app/views/docs/components/textarea.html.erb +239 -0
  102. data/app/views/docs/components/theme_toggle.html.erb +135 -0
  103. data/app/views/docs/components/toast.html.erb +205 -0
  104. data/app/views/docs/components/toaster.html.erb +227 -0
  105. data/app/views/docs/components/toggle.html.erb +154 -0
  106. data/app/views/docs/components/tooltip.html.erb +216 -0
  107. data/app/views/docs/components/typography.html.erb +180 -0
  108. data/app/views/docs/index.html.erb +143 -0
  109. data/app/views/docs/installation.html.erb +155 -0
  110. data/app/views/docs/simple_test.html.erb +13 -0
  111. data/app/views/docs/test_accordion.html.erb +14 -0
  112. data/app/views/docs/usage.html.erb +272 -0
  113. data/app/views/layouts/application.html.erb +107 -0
  114. data/app/views/layouts/backdrop.html.erb +77 -0
  115. data/app/views/shared/_app_navbar.html.erb +240 -0
  116. data/app/views/shared/_navbar.html.erb +69 -0
  117. data/app/views/showcase/v2/_components_grid.html.erb +38 -0
  118. data/app/views/showcase/v2/_features.html.erb +59 -0
  119. data/app/views/showcase/v2/_forms.html.erb +195 -0
  120. data/app/views/showcase/v2/_hero.html.erb +55 -0
  121. data/app/views/showcase/v2/_metrics.html.erb +107 -0
  122. data/app/views/showcase/v2.html.erb +18 -0
  123. data/lib/m9sh/version.rb +1 -1
  124. data/m9sh.gemspec +1 -1
  125. metadata +120 -1
@@ -0,0 +1,1180 @@
1
+ /*
2
+ * Tailwind CSS v4 Source File
3
+ *
4
+ * This is the source file for Tailwind CSS v4.
5
+ * It gets compiled to application.css using the Tailwind CLI.
6
+ *
7
+ * Build commands:
8
+ * npm run build:css - Build once
9
+ * npm run watch:css - Watch for changes
10
+ */
11
+
12
+ @import "tailwindcss";
13
+
14
+ /* Define theme colors using Tailwind v4 @theme directive */
15
+ @theme {
16
+ /* NEUTRAL THEME (Default) - Light mode colors */
17
+ --color-background: oklch(0.96 0 0);
18
+ --color-foreground: oklch(0.23 0.01 255);
19
+ --color-card: oklch(1 0 0);
20
+ --color-card-foreground: oklch(0.23 0.01 255);
21
+ --color-popover: oklch(1 0 0);
22
+ --color-popover-foreground: oklch(0.23 0.01 255);
23
+ --color-primary: oklch(0.27 0.01 255);
24
+ --color-primary-foreground: oklch(0.98 0 0);
25
+ --color-secondary: oklch(0.96 0.01 255);
26
+ --color-secondary-foreground: oklch(0.27 0.01 255);
27
+ --color-muted: oklch(0.96 0.01 255);
28
+ --color-muted-foreground: oklch(0.55 0.01 255);
29
+ --color-accent: oklch(0.96 0.01 255);
30
+ --color-accent-foreground: oklch(0.27 0.01 255);
31
+ --color-destructive: oklch(0.65 0.25 25);
32
+ --color-destructive-foreground: oklch(0.98 0 0);
33
+ --color-border: oklch(0.922 0 0);
34
+ --color-input: oklch(0.922 0 0);
35
+ --color-ring: oklch(0.27 0.01 255);
36
+ --color-sidebar-background: oklch(0.96 0.01 255 / 0);
37
+ --color-sidebar-foreground: oklch(0.40 0.01 255);
38
+ --color-sidebar-primary: oklch(0.27 0.01 255);
39
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
40
+ --color-sidebar-accent: oklch(0.90 0.01 255 / 0.5);
41
+ --color-sidebar-accent-foreground: oklch(0.27 0.01 255);
42
+ --color-sidebar-border: oklch(0.90 0.01 255 / 0.3);
43
+ --color-sidebar-ring: oklch(0.27 0.01 255);
44
+
45
+ /* Border radius */
46
+ --radius-sm: 0.125rem;
47
+ --radius-md: calc(0.5rem - 2px);
48
+ --radius-lg: 0.5rem;
49
+ --radius-xl: 0.75rem;
50
+ --radius-2xl: 1rem;
51
+
52
+ /* Font family */
53
+ --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
54
+ }
55
+
56
+ /* Dark mode theme overrides - NEUTRAL THEME */
57
+ .dark {
58
+ --color-background: oklch(0.18 0.04 255);
59
+ --color-foreground: oklch(0.93 0.02 240);
60
+ --color-card: oklch(0.15 0.04 255);
61
+ --color-card-foreground: oklch(0.93 0.02 240);
62
+ --color-popover: oklch(0.15 0.04 255);
63
+ --color-popover-foreground: oklch(0.93 0.02 240);
64
+ --color-primary: oklch(0.93 0.02 240);
65
+ --color-primary-foreground: oklch(0.20 0.03 255);
66
+ --color-secondary: oklch(0.27 0.02 250);
67
+ --color-secondary-foreground: oklch(0.93 0.02 240);
68
+ --color-muted: oklch(0.27 0.02 250);
69
+ --color-muted-foreground: oklch(0.70 0.01 245);
70
+ --color-accent: oklch(0.27 0.02 250);
71
+ --color-accent-foreground: oklch(0.93 0.02 240);
72
+ --color-destructive: oklch(0.45 0.15 25);
73
+ --color-destructive-foreground: oklch(0.93 0.02 240);
74
+ --color-border: oklch(0.27 0 0);
75
+ --color-input: oklch(0.27 0 0);
76
+ --color-ring: oklch(0.83 0.02 245);
77
+ --color-sidebar-background: oklch(0.17 0.01 255 / 0);
78
+ --color-sidebar-foreground: oklch(0.96 0.01 255);
79
+ --color-sidebar-primary: oklch(0.60 0.15 250);
80
+ --color-sidebar-primary-foreground: oklch(1 0 0);
81
+ --color-sidebar-accent: oklch(0.25 0.02 255 / 0.5);
82
+ --color-sidebar-accent-foreground: oklch(0.96 0.01 255);
83
+ --color-sidebar-border: oklch(0.25 0.02 255 / 0.3);
84
+ --color-sidebar-ring: oklch(0.70 0.12 250);
85
+ }
86
+
87
+ /* ============================================ */
88
+ /* INDIGO THEME - Professional Blue/Indigo Palette */
89
+ /* ============================================ */
90
+ [data-theme="indigo"] {
91
+ --color-background: oklch(0.97 0.01 260);
92
+ --color-foreground: oklch(0.25 0.03 260);
93
+ --color-card: oklch(1 0 0);
94
+ --color-card-foreground: oklch(0.25 0.03 260);
95
+ --color-popover: oklch(1 0 0);
96
+ --color-popover-foreground: oklch(0.25 0.03 260);
97
+ --color-primary: oklch(0.55 0.20 260);
98
+ --color-primary-foreground: oklch(0.98 0 0);
99
+ --color-secondary: oklch(0.92 0.03 260);
100
+ --color-secondary-foreground: oklch(0.30 0.05 260);
101
+ --color-muted: oklch(0.94 0.02 260);
102
+ --color-muted-foreground: oklch(0.50 0.05 260);
103
+ --color-accent: oklch(0.94 0.03 260);
104
+ --color-accent-foreground: oklch(0.30 0.05 260);
105
+ --color-destructive: oklch(0.60 0.25 25);
106
+ --color-destructive-foreground: oklch(0.98 0 0);
107
+ --color-border: oklch(0.922 0 0);
108
+ --color-input: oklch(0.922 0 0);
109
+ --color-ring: oklch(0.55 0.20 260);
110
+ --color-sidebar-background: oklch(0.94 0.02 260 / 0);
111
+ --color-sidebar-foreground: oklch(0.40 0.05 260);
112
+ --color-sidebar-primary: oklch(0.55 0.20 260);
113
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
114
+ --color-sidebar-accent: oklch(0.88 0.03 260 / 0.5);
115
+ --color-sidebar-accent-foreground: oklch(0.30 0.05 260);
116
+ --color-sidebar-border: oklch(0.88 0.02 260 / 0.3);
117
+ --color-sidebar-ring: oklch(0.55 0.20 260);
118
+ }
119
+
120
+ [data-theme="indigo"].dark {
121
+ --color-background: oklch(0.16 0.05 260);
122
+ --color-foreground: oklch(0.92 0.03 250);
123
+ --color-card: oklch(0.14 0.05 260);
124
+ --color-card-foreground: oklch(0.92 0.03 250);
125
+ --color-popover: oklch(0.14 0.05 260);
126
+ --color-popover-foreground: oklch(0.92 0.03 250);
127
+ --color-primary: oklch(0.65 0.22 260);
128
+ --color-primary-foreground: oklch(0.98 0 0);
129
+ --color-secondary: oklch(0.25 0.05 260);
130
+ --color-secondary-foreground: oklch(0.92 0.03 250);
131
+ --color-muted: oklch(0.25 0.05 260);
132
+ --color-muted-foreground: oklch(0.65 0.10 250);
133
+ --color-accent: oklch(0.25 0.05 260);
134
+ --color-accent-foreground: oklch(0.92 0.03 250);
135
+ --color-destructive: oklch(0.48 0.18 25);
136
+ --color-destructive-foreground: oklch(0.92 0.03 250);
137
+ --color-border: oklch(0.27 0 0);
138
+ --color-input: oklch(0.27 0 0);
139
+ --color-ring: oklch(0.65 0.22 260);
140
+ --color-sidebar-background: oklch(0.15 0.04 260 / 0);
141
+ --color-sidebar-foreground: oklch(0.94 0.02 255);
142
+ --color-sidebar-primary: oklch(0.65 0.22 260);
143
+ --color-sidebar-primary-foreground: oklch(1 0 0);
144
+ --color-sidebar-accent: oklch(0.23 0.05 260 / 0.5);
145
+ --color-sidebar-accent-foreground: oklch(0.94 0.02 255);
146
+ --color-sidebar-border: oklch(0.23 0.05 260 / 0.3);
147
+ --color-sidebar-ring: oklch(0.65 0.22 260);
148
+ }
149
+
150
+ /* ============================================ */
151
+ /* PARTY THEME - Vibrant Multi-Color Palette */
152
+ /* ============================================ */
153
+ [data-theme="party"] {
154
+ --color-background: oklch(0.97 0.02 330);
155
+ --color-foreground: oklch(0.25 0.05 330);
156
+ --color-card: oklch(1 0 0);
157
+ --color-card-foreground: oklch(0.25 0.05 330);
158
+ --color-popover: oklch(1 0 0);
159
+ --color-popover-foreground: oklch(0.25 0.05 330);
160
+ --color-primary: oklch(0.60 0.28 330);
161
+ --color-primary-foreground: oklch(0.98 0 0);
162
+ --color-secondary: oklch(0.93 0.05 40);
163
+ --color-secondary-foreground: oklch(0.30 0.08 40);
164
+ --color-muted: oklch(0.94 0.03 330);
165
+ --color-muted-foreground: oklch(0.50 0.12 320);
166
+ --color-accent: oklch(0.94 0.05 280);
167
+ --color-accent-foreground: oklch(0.30 0.10 280);
168
+ --color-destructive: oklch(0.62 0.26 25);
169
+ --color-destructive-foreground: oklch(0.98 0 0);
170
+ --color-border: oklch(0.922 0 0);
171
+ --color-input: oklch(0.922 0 0);
172
+ --color-ring: oklch(0.60 0.28 330);
173
+ --color-sidebar-background: oklch(0.94 0.03 330 / 0);
174
+ --color-sidebar-foreground: oklch(0.40 0.10 320);
175
+ --color-sidebar-primary: oklch(0.60 0.28 330);
176
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
177
+ --color-sidebar-accent: oklch(0.88 0.06 280 / 0.5);
178
+ --color-sidebar-accent-foreground: oklch(0.30 0.10 280);
179
+ --color-sidebar-border: oklch(0.88 0.04 320 / 0.3);
180
+ --color-sidebar-ring: oklch(0.60 0.28 330);
181
+ }
182
+
183
+ [data-theme="party"].dark {
184
+ --color-background: oklch(0.16 0.06 330);
185
+ --color-foreground: oklch(0.92 0.05 320);
186
+ --color-card: oklch(0.14 0.06 330);
187
+ --color-card-foreground: oklch(0.92 0.05 320);
188
+ --color-popover: oklch(0.14 0.06 330);
189
+ --color-popover-foreground: oklch(0.92 0.05 320);
190
+ --color-primary: oklch(0.70 0.30 330);
191
+ --color-primary-foreground: oklch(0.98 0 0);
192
+ --color-secondary: oklch(0.65 0.25 40);
193
+ --color-secondary-foreground: oklch(0.98 0 0);
194
+ --color-muted: oklch(0.25 0.08 330);
195
+ --color-muted-foreground: oklch(0.70 0.15 320);
196
+ --color-accent: oklch(0.60 0.25 280);
197
+ --color-accent-foreground: oklch(0.98 0 0);
198
+ --color-destructive: oklch(0.50 0.20 25);
199
+ --color-destructive-foreground: oklch(0.92 0.05 320);
200
+ --color-border: oklch(0.27 0 0);
201
+ --color-input: oklch(0.27 0 0);
202
+ --color-ring: oklch(0.70 0.30 330);
203
+ --color-sidebar-background: oklch(0.15 0.05 330 / 0);
204
+ --color-sidebar-foreground: oklch(0.94 0.04 320);
205
+ --color-sidebar-primary: oklch(0.70 0.30 330);
206
+ --color-sidebar-primary-foreground: oklch(1 0 0);
207
+ --color-sidebar-accent: oklch(0.60 0.25 280 / 0.5);
208
+ --color-sidebar-accent-foreground: oklch(0.98 0 0);
209
+ --color-sidebar-border: oklch(0.23 0.08 330 / 0.3);
210
+ --color-sidebar-ring: oklch(0.70 0.30 330);
211
+ }
212
+
213
+ /* ============================================ */
214
+ /* SUNSET THEME - Warm Orange & Red Gradient */
215
+ /* ============================================ */
216
+ [data-theme="sunset"] {
217
+ --color-background: oklch(0.97 0.02 50);
218
+ --color-foreground: oklch(0.25 0.04 30);
219
+ --color-card: oklch(1 0 0);
220
+ --color-card-foreground: oklch(0.25 0.04 30);
221
+ --color-popover: oklch(1 0 0);
222
+ --color-popover-foreground: oklch(0.25 0.04 30);
223
+ --color-primary: oklch(0.62 0.24 40);
224
+ --color-primary-foreground: oklch(0.98 0 0);
225
+ --color-secondary: oklch(0.92 0.06 30);
226
+ --color-secondary-foreground: oklch(0.30 0.08 30);
227
+ --color-muted: oklch(0.94 0.03 50);
228
+ --color-muted-foreground: oklch(0.50 0.10 40);
229
+ --color-accent: oklch(0.93 0.06 20);
230
+ --color-accent-foreground: oklch(0.30 0.08 20);
231
+ --color-destructive: oklch(0.60 0.25 25);
232
+ --color-destructive-foreground: oklch(0.98 0 0);
233
+ --color-border: oklch(0.922 0 0);
234
+ --color-input: oklch(0.922 0 0);
235
+ --color-ring: oklch(0.62 0.24 40);
236
+ --color-sidebar-background: oklch(0.94 0.03 50 / 0);
237
+ --color-sidebar-foreground: oklch(0.40 0.08 35);
238
+ --color-sidebar-primary: oklch(0.62 0.24 40);
239
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
240
+ --color-sidebar-accent: oklch(0.88 0.06 30 / 0.5);
241
+ --color-sidebar-accent-foreground: oklch(0.30 0.08 30);
242
+ --color-sidebar-border: oklch(0.88 0.04 40 / 0.3);
243
+ --color-sidebar-ring: oklch(0.62 0.24 40);
244
+ }
245
+
246
+ [data-theme="sunset"].dark {
247
+ --color-background: oklch(0.16 0.05 30);
248
+ --color-foreground: oklch(0.92 0.04 40);
249
+ --color-card: oklch(0.14 0.05 30);
250
+ --color-card-foreground: oklch(0.92 0.04 40);
251
+ --color-popover: oklch(0.14 0.05 30);
252
+ --color-popover-foreground: oklch(0.92 0.04 40);
253
+ --color-primary: oklch(0.70 0.26 40);
254
+ --color-primary-foreground: oklch(0.98 0 0);
255
+ --color-secondary: oklch(0.65 0.22 30);
256
+ --color-secondary-foreground: oklch(0.98 0 0);
257
+ --color-muted: oklch(0.25 0.06 30);
258
+ --color-muted-foreground: oklch(0.70 0.12 35);
259
+ --color-accent: oklch(0.60 0.20 20);
260
+ --color-accent-foreground: oklch(0.98 0 0);
261
+ --color-destructive: oklch(0.50 0.20 25);
262
+ --color-destructive-foreground: oklch(0.92 0.04 40);
263
+ --color-border: oklch(0.27 0 0);
264
+ --color-input: oklch(0.27 0 0);
265
+ --color-ring: oklch(0.70 0.26 40);
266
+ --color-sidebar-background: oklch(0.15 0.04 30 / 0);
267
+ --color-sidebar-foreground: oklch(0.94 0.03 40);
268
+ --color-sidebar-primary: oklch(0.70 0.26 40);
269
+ --color-sidebar-primary-foreground: oklch(1 0 0);
270
+ --color-sidebar-accent: oklch(0.60 0.20 30 / 0.5);
271
+ --color-sidebar-accent-foreground: oklch(0.98 0 0);
272
+ --color-sidebar-border: oklch(0.23 0.06 30 / 0.3);
273
+ --color-sidebar-ring: oklch(0.70 0.26 40);
274
+ }
275
+
276
+ /* ============================================ */
277
+ /* OCEAN THEME - Deep Blue & Teal Waters */
278
+ /* ============================================ */
279
+ [data-theme="ocean"] {
280
+ --color-background: oklch(0.97 0.02 220);
281
+ --color-foreground: oklch(0.25 0.04 210);
282
+ --color-card: oklch(1 0 0);
283
+ --color-card-foreground: oklch(0.25 0.04 210);
284
+ --color-popover: oklch(1 0 0);
285
+ --color-popover-foreground: oklch(0.25 0.04 210);
286
+ --color-primary: oklch(0.55 0.18 220);
287
+ --color-primary-foreground: oklch(0.98 0 0);
288
+ --color-secondary: oklch(0.92 0.04 190);
289
+ --color-secondary-foreground: oklch(0.30 0.08 190);
290
+ --color-muted: oklch(0.94 0.03 220);
291
+ --color-muted-foreground: oklch(0.50 0.08 210);
292
+ --color-accent: oklch(0.93 0.05 200);
293
+ --color-accent-foreground: oklch(0.30 0.08 200);
294
+ --color-destructive: oklch(0.60 0.25 25);
295
+ --color-destructive-foreground: oklch(0.98 0 0);
296
+ --color-border: oklch(0.922 0 0);
297
+ --color-input: oklch(0.922 0 0);
298
+ --color-ring: oklch(0.55 0.18 220);
299
+ --color-sidebar-background: oklch(0.94 0.03 220 / 0);
300
+ --color-sidebar-foreground: oklch(0.40 0.08 210);
301
+ --color-sidebar-primary: oklch(0.55 0.18 220);
302
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
303
+ --color-sidebar-accent: oklch(0.88 0.05 200 / 0.5);
304
+ --color-sidebar-accent-foreground: oklch(0.30 0.08 200);
305
+ --color-sidebar-border: oklch(0.88 0.03 215 / 0.3);
306
+ --color-sidebar-ring: oklch(0.55 0.18 220);
307
+ }
308
+
309
+ [data-theme="ocean"].dark {
310
+ --color-background: oklch(0.16 0.05 220);
311
+ --color-foreground: oklch(0.92 0.04 210);
312
+ --color-card: oklch(0.14 0.05 220);
313
+ --color-card-foreground: oklch(0.92 0.04 210);
314
+ --color-popover: oklch(0.14 0.05 220);
315
+ --color-popover-foreground: oklch(0.92 0.04 210);
316
+ --color-primary: oklch(0.65 0.20 220);
317
+ --color-primary-foreground: oklch(0.98 0 0);
318
+ --color-secondary: oklch(0.62 0.18 190);
319
+ --color-secondary-foreground: oklch(0.98 0 0);
320
+ --color-muted: oklch(0.25 0.06 220);
321
+ --color-muted-foreground: oklch(0.70 0.12 210);
322
+ --color-accent: oklch(0.58 0.18 200);
323
+ --color-accent-foreground: oklch(0.98 0 0);
324
+ --color-destructive: oklch(0.50 0.20 25);
325
+ --color-destructive-foreground: oklch(0.92 0.04 210);
326
+ --color-border: oklch(0.27 0 0);
327
+ --color-input: oklch(0.27 0 0);
328
+ --color-ring: oklch(0.65 0.20 220);
329
+ --color-sidebar-background: oklch(0.15 0.04 220 / 0);
330
+ --color-sidebar-foreground: oklch(0.94 0.03 210);
331
+ --color-sidebar-primary: oklch(0.65 0.20 220);
332
+ --color-sidebar-primary-foreground: oklch(1 0 0);
333
+ --color-sidebar-accent: oklch(0.58 0.18 200 / 0.5);
334
+ --color-sidebar-accent-foreground: oklch(0.98 0 0);
335
+ --color-sidebar-border: oklch(0.23 0.06 220 / 0.3);
336
+ --color-sidebar-ring: oklch(0.65 0.20 220);
337
+ }
338
+
339
+ /* ============================================ */
340
+ /* FOREST THEME - Natural Green & Earth Tones */
341
+ /* ============================================ */
342
+ [data-theme="forest"] {
343
+ --color-background: oklch(0.97 0.02 140);
344
+ --color-foreground: oklch(0.25 0.04 140);
345
+ --color-card: oklch(1 0 0);
346
+ --color-card-foreground: oklch(0.25 0.04 140);
347
+ --color-popover: oklch(1 0 0);
348
+ --color-popover-foreground: oklch(0.25 0.04 140);
349
+ --color-primary: oklch(0.55 0.16 145);
350
+ --color-primary-foreground: oklch(0.98 0 0);
351
+ --color-secondary: oklch(0.92 0.04 130);
352
+ --color-secondary-foreground: oklch(0.30 0.08 130);
353
+ --color-muted: oklch(0.94 0.03 140);
354
+ --color-muted-foreground: oklch(0.50 0.08 140);
355
+ --color-accent: oklch(0.93 0.05 150);
356
+ --color-accent-foreground: oklch(0.30 0.08 150);
357
+ --color-destructive: oklch(0.60 0.25 25);
358
+ --color-destructive-foreground: oklch(0.98 0 0);
359
+ --color-border: oklch(0.922 0 0);
360
+ --color-input: oklch(0.922 0 0);
361
+ --color-ring: oklch(0.55 0.16 145);
362
+ --color-sidebar-background: oklch(0.94 0.03 140 / 0);
363
+ --color-sidebar-foreground: oklch(0.40 0.08 140);
364
+ --color-sidebar-primary: oklch(0.55 0.16 145);
365
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
366
+ --color-sidebar-accent: oklch(0.88 0.05 150 / 0.5);
367
+ --color-sidebar-accent-foreground: oklch(0.30 0.08 150);
368
+ --color-sidebar-border: oklch(0.88 0.03 140 / 0.3);
369
+ --color-sidebar-ring: oklch(0.55 0.16 145);
370
+ }
371
+
372
+ [data-theme="forest"].dark {
373
+ --color-background: oklch(0.16 0.04 140);
374
+ --color-foreground: oklch(0.92 0.03 140);
375
+ --color-card: oklch(0.14 0.04 140);
376
+ --color-card-foreground: oklch(0.92 0.03 140);
377
+ --color-popover: oklch(0.14 0.04 140);
378
+ --color-popover-foreground: oklch(0.92 0.03 140);
379
+ --color-primary: oklch(0.65 0.18 145);
380
+ --color-primary-foreground: oklch(0.98 0 0);
381
+ --color-secondary: oklch(0.62 0.16 130);
382
+ --color-secondary-foreground: oklch(0.98 0 0);
383
+ --color-muted: oklch(0.25 0.05 140);
384
+ --color-muted-foreground: oklch(0.70 0.10 140);
385
+ --color-accent: oklch(0.58 0.16 150);
386
+ --color-accent-foreground: oklch(0.98 0 0);
387
+ --color-destructive: oklch(0.50 0.20 25);
388
+ --color-destructive-foreground: oklch(0.92 0.03 140);
389
+ --color-border: oklch(0.27 0 0);
390
+ --color-input: oklch(0.27 0 0);
391
+ --color-ring: oklch(0.65 0.18 145);
392
+ --color-sidebar-background: oklch(0.15 0.03 140 / 0);
393
+ --color-sidebar-foreground: oklch(0.94 0.02 140);
394
+ --color-sidebar-primary: oklch(0.65 0.18 145);
395
+ --color-sidebar-primary-foreground: oklch(1 0 0);
396
+ --color-sidebar-accent: oklch(0.58 0.16 150 / 0.5);
397
+ --color-sidebar-accent-foreground: oklch(0.98 0 0);
398
+ --color-sidebar-border: oklch(0.23 0.05 140 / 0.3);
399
+ --color-sidebar-ring: oklch(0.65 0.18 145);
400
+ }
401
+
402
+ /* ============================================ */
403
+ /* CYBERPUNK THEME - Neon Purple & Cyan */
404
+ /* ============================================ */
405
+ [data-theme="cyberpunk"] {
406
+ --color-background: oklch(0.97 0.02 300);
407
+ --color-foreground: oklch(0.25 0.05 300);
408
+ --color-card: oklch(1 0 0);
409
+ --color-card-foreground: oklch(0.25 0.05 300);
410
+ --color-popover: oklch(1 0 0);
411
+ --color-popover-foreground: oklch(0.25 0.05 300);
412
+ --color-primary: oklch(0.62 0.28 300);
413
+ --color-primary-foreground: oklch(0.98 0 0);
414
+ --color-secondary: oklch(0.92 0.06 190);
415
+ --color-secondary-foreground: oklch(0.30 0.10 190);
416
+ --color-muted: oklch(0.94 0.03 300);
417
+ --color-muted-foreground: oklch(0.50 0.12 295);
418
+ --color-accent: oklch(0.93 0.06 200);
419
+ --color-accent-foreground: oklch(0.30 0.10 200);
420
+ --color-destructive: oklch(0.62 0.26 25);
421
+ --color-destructive-foreground: oklch(0.98 0 0);
422
+ --color-border: oklch(0.922 0 0);
423
+ --color-input: oklch(0.922 0 0);
424
+ --color-ring: oklch(0.62 0.28 300);
425
+ --color-sidebar-background: oklch(0.94 0.03 300 / 0);
426
+ --color-sidebar-foreground: oklch(0.40 0.10 295);
427
+ --color-sidebar-primary: oklch(0.62 0.28 300);
428
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
429
+ --color-sidebar-accent: oklch(0.88 0.06 200 / 0.5);
430
+ --color-sidebar-accent-foreground: oklch(0.30 0.10 200);
431
+ --color-sidebar-border: oklch(0.88 0.04 295 / 0.3);
432
+ --color-sidebar-ring: oklch(0.62 0.28 300);
433
+ }
434
+
435
+ [data-theme="cyberpunk"].dark {
436
+ --color-background: oklch(0.16 0.06 300);
437
+ --color-foreground: oklch(0.92 0.05 295);
438
+ --color-card: oklch(0.14 0.06 300);
439
+ --color-card-foreground: oklch(0.92 0.05 295);
440
+ --color-popover: oklch(0.14 0.06 300);
441
+ --color-popover-foreground: oklch(0.92 0.05 295);
442
+ --color-primary: oklch(0.72 0.30 300);
443
+ --color-primary-foreground: oklch(0.98 0 0);
444
+ --color-secondary: oklch(0.68 0.24 190);
445
+ --color-secondary-foreground: oklch(0.98 0 0);
446
+ --color-muted: oklch(0.25 0.08 300);
447
+ --color-muted-foreground: oklch(0.70 0.16 295);
448
+ --color-accent: oklch(0.62 0.22 200);
449
+ --color-accent-foreground: oklch(0.98 0 0);
450
+ --color-destructive: oklch(0.50 0.20 25);
451
+ --color-destructive-foreground: oklch(0.92 0.05 295);
452
+ --color-border: oklch(0.27 0 0);
453
+ --color-input: oklch(0.27 0 0);
454
+ --color-ring: oklch(0.72 0.30 300);
455
+ --color-sidebar-background: oklch(0.15 0.05 300 / 0);
456
+ --color-sidebar-foreground: oklch(0.94 0.04 295);
457
+ --color-sidebar-primary: oklch(0.72 0.30 300);
458
+ --color-sidebar-primary-foreground: oklch(1 0 0);
459
+ --color-sidebar-accent: oklch(0.62 0.22 200 / 0.5);
460
+ --color-sidebar-accent-foreground: oklch(0.98 0 0);
461
+ --color-sidebar-border: oklch(0.23 0.08 300 / 0.3);
462
+ --color-sidebar-ring: oklch(0.72 0.30 300);
463
+ }
464
+
465
+ /* ============================================ */
466
+ /* THUNDER THEME - Energetic Yellow & Black for Workouts */
467
+ /* ============================================ */
468
+ [data-theme="thunder"] {
469
+ --color-background: oklch(0.98 0.02 90);
470
+ --color-foreground: oklch(0.20 0.02 90);
471
+ --color-card: oklch(1 0 0);
472
+ --color-card-foreground: oklch(0.20 0.02 90);
473
+ --color-popover: oklch(1 0 0);
474
+ --color-popover-foreground: oklch(0.20 0.02 90);
475
+ --color-primary: oklch(0.85 0.20 95);
476
+ --color-primary-foreground: oklch(0.15 0.02 90);
477
+ --color-secondary: oklch(0.22 0.02 90);
478
+ --color-secondary-foreground: oklch(0.95 0.08 95);
479
+ --color-muted: oklch(0.92 0.02 90);
480
+ --color-muted-foreground: oklch(0.45 0.05 90);
481
+ --color-accent: oklch(0.88 0.18 95);
482
+ --color-accent-foreground: oklch(0.18 0.02 90);
483
+ --color-destructive: oklch(0.58 0.24 25);
484
+ --color-destructive-foreground: oklch(0.98 0 0);
485
+ --color-border: oklch(0.922 0 0);
486
+ --color-input: oklch(0.922 0 0);
487
+ --color-ring: oklch(0.85 0.20 95);
488
+ --color-sidebar-background: oklch(0.20 0.02 90 / 0.95);
489
+ --color-sidebar-foreground: oklch(0.90 0.08 95);
490
+ --color-sidebar-primary: oklch(0.85 0.20 95);
491
+ --color-sidebar-primary-foreground: oklch(0.15 0.02 90);
492
+ --color-sidebar-accent: oklch(0.30 0.04 90 / 0.8);
493
+ --color-sidebar-accent-foreground: oklch(0.90 0.10 95);
494
+ --color-sidebar-border: oklch(0.35 0.04 90 / 0.5);
495
+ --color-sidebar-ring: oklch(0.85 0.20 95);
496
+ }
497
+
498
+ [data-theme="thunder"].dark {
499
+ --color-background: oklch(0.12 0.02 90);
500
+ --color-foreground: oklch(0.95 0.06 95);
501
+ --color-card: oklch(0.16 0.02 90);
502
+ --color-card-foreground: oklch(0.95 0.06 95);
503
+ --color-popover: oklch(0.16 0.02 90);
504
+ --color-popover-foreground: oklch(0.95 0.06 95);
505
+ --color-primary: oklch(0.88 0.22 95);
506
+ --color-primary-foreground: oklch(0.12 0.02 90);
507
+ --color-secondary: oklch(0.25 0.04 90);
508
+ --color-secondary-foreground: oklch(0.92 0.08 95);
509
+ --color-muted: oklch(0.22 0.03 90);
510
+ --color-muted-foreground: oklch(0.65 0.08 92);
511
+ --color-accent: oklch(0.82 0.20 95);
512
+ --color-accent-foreground: oklch(0.15 0.02 90);
513
+ --color-destructive: oklch(0.52 0.20 25);
514
+ --color-destructive-foreground: oklch(0.95 0.06 95);
515
+ --color-border: oklch(0.27 0 0);
516
+ --color-input: oklch(0.27 0 0);
517
+ --color-ring: oklch(0.88 0.22 95);
518
+ --color-sidebar-background: oklch(0.10 0.02 90 / 0.95);
519
+ --color-sidebar-foreground: oklch(0.92 0.08 95);
520
+ --color-sidebar-primary: oklch(0.88 0.22 95);
521
+ --color-sidebar-primary-foreground: oklch(0.12 0.02 90);
522
+ --color-sidebar-accent: oklch(0.25 0.05 90 / 0.8);
523
+ --color-sidebar-accent-foreground: oklch(0.90 0.10 95);
524
+ --color-sidebar-border: oklch(0.25 0.04 90 / 0.5);
525
+ --color-sidebar-ring: oklch(0.88 0.22 95);
526
+ }
527
+
528
+ /* ============================================ */
529
+ /* ROSE THEME - Elegant Pink & Wine */
530
+ /* ============================================ */
531
+ [data-theme="rose"] {
532
+ --color-background: oklch(0.97 0.02 350);
533
+ --color-foreground: oklch(0.25 0.04 350);
534
+ --color-card: oklch(1 0 0);
535
+ --color-card-foreground: oklch(0.25 0.04 350);
536
+ --color-popover: oklch(1 0 0);
537
+ --color-popover-foreground: oklch(0.25 0.04 350);
538
+ --color-primary: oklch(0.58 0.22 350);
539
+ --color-primary-foreground: oklch(0.98 0 0);
540
+ --color-secondary: oklch(0.92 0.04 340);
541
+ --color-secondary-foreground: oklch(0.30 0.08 340);
542
+ --color-muted: oklch(0.94 0.03 350);
543
+ --color-muted-foreground: oklch(0.50 0.10 345);
544
+ --color-accent: oklch(0.93 0.05 360);
545
+ --color-accent-foreground: oklch(0.30 0.08 360);
546
+ --color-destructive: oklch(0.60 0.25 25);
547
+ --color-destructive-foreground: oklch(0.98 0 0);
548
+ --color-border: oklch(0.922 0 0);
549
+ --color-input: oklch(0.922 0 0);
550
+ --color-ring: oklch(0.58 0.22 350);
551
+ --color-sidebar-background: oklch(0.94 0.03 350 / 0);
552
+ --color-sidebar-foreground: oklch(0.40 0.08 345);
553
+ --color-sidebar-primary: oklch(0.58 0.22 350);
554
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
555
+ --color-sidebar-accent: oklch(0.88 0.05 360 / 0.5);
556
+ --color-sidebar-accent-foreground: oklch(0.30 0.08 360);
557
+ --color-sidebar-border: oklch(0.88 0.04 345 / 0.3);
558
+ --color-sidebar-ring: oklch(0.58 0.22 350);
559
+ }
560
+
561
+ [data-theme="rose"].dark {
562
+ --color-background: oklch(0.16 0.05 350);
563
+ --color-foreground: oklch(0.92 0.04 345);
564
+ --color-card: oklch(0.14 0.05 350);
565
+ --color-card-foreground: oklch(0.92 0.04 345);
566
+ --color-popover: oklch(0.14 0.05 350);
567
+ --color-popover-foreground: oklch(0.92 0.04 345);
568
+ --color-primary: oklch(0.68 0.24 350);
569
+ --color-primary-foreground: oklch(0.98 0 0);
570
+ --color-secondary: oklch(0.62 0.20 340);
571
+ --color-secondary-foreground: oklch(0.98 0 0);
572
+ --color-muted: oklch(0.25 0.06 350);
573
+ --color-muted-foreground: oklch(0.70 0.12 345);
574
+ --color-accent: oklch(0.60 0.18 360);
575
+ --color-accent-foreground: oklch(0.98 0 0);
576
+ --color-destructive: oklch(0.50 0.20 25);
577
+ --color-destructive-foreground: oklch(0.92 0.04 345);
578
+ --color-border: oklch(0.27 0 0);
579
+ --color-input: oklch(0.27 0 0);
580
+ --color-ring: oklch(0.68 0.24 350);
581
+ --color-sidebar-background: oklch(0.15 0.04 350 / 0);
582
+ --color-sidebar-foreground: oklch(0.94 0.03 345);
583
+ --color-sidebar-primary: oklch(0.68 0.24 350);
584
+ --color-sidebar-primary-foreground: oklch(1 0 0);
585
+ --color-sidebar-accent: oklch(0.60 0.18 360 / 0.5);
586
+ --color-sidebar-accent-foreground: oklch(0.98 0 0);
587
+ --color-sidebar-border: oklch(0.23 0.06 350 / 0.3);
588
+ --color-sidebar-ring: oklch(0.68 0.24 350);
589
+ }
590
+
591
+ /* ============================================ */
592
+ /* MIAMI VICE THEME - Neon Pink & Teal 80s Aesthetic */
593
+ /* ============================================ */
594
+ [data-theme="miami"] {
595
+ --color-background: oklch(0.97 0.03 320);
596
+ --color-foreground: oklch(0.25 0.05 320);
597
+ --color-card: oklch(1 0 0);
598
+ --color-card-foreground: oklch(0.25 0.05 320);
599
+ --color-popover: oklch(1 0 0);
600
+ --color-popover-foreground: oklch(0.25 0.05 320);
601
+ --color-primary: oklch(0.65 0.32 330);
602
+ --color-primary-foreground: oklch(0.98 0 0);
603
+ --color-secondary: oklch(0.92 0.08 190);
604
+ --color-secondary-foreground: oklch(0.25 0.12 190);
605
+ --color-muted: oklch(0.94 0.04 320);
606
+ --color-muted-foreground: oklch(0.50 0.14 315);
607
+ --color-accent: oklch(0.93 0.08 180);
608
+ --color-accent-foreground: oklch(0.25 0.12 180);
609
+ --color-destructive: oklch(0.62 0.26 25);
610
+ --color-destructive-foreground: oklch(0.98 0 0);
611
+ --color-border: oklch(0.922 0 0);
612
+ --color-input: oklch(0.922 0 0);
613
+ --color-ring: oklch(0.65 0.32 330);
614
+ --color-sidebar-background: oklch(0.94 0.04 320 / 0);
615
+ --color-sidebar-foreground: oklch(0.40 0.12 315);
616
+ --color-sidebar-primary: oklch(0.65 0.32 330);
617
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
618
+ --color-sidebar-accent: oklch(0.88 0.08 180 / 0.5);
619
+ --color-sidebar-accent-foreground: oklch(0.25 0.12 180);
620
+ --color-sidebar-border: oklch(0.88 0.05 315 / 0.3);
621
+ --color-sidebar-ring: oklch(0.65 0.32 330);
622
+ }
623
+
624
+ [data-theme="miami"].dark {
625
+ --color-background: oklch(0.15 0.08 310);
626
+ --color-foreground: oklch(0.92 0.06 320);
627
+ --color-card: oklch(0.13 0.08 310);
628
+ --color-card-foreground: oklch(0.92 0.06 320);
629
+ --color-popover: oklch(0.13 0.08 310);
630
+ --color-popover-foreground: oklch(0.92 0.06 320);
631
+ --color-primary: oklch(0.75 0.34 330);
632
+ --color-primary-foreground: oklch(0.98 0 0);
633
+ --color-secondary: oklch(0.68 0.28 190);
634
+ --color-secondary-foreground: oklch(0.98 0 0);
635
+ --color-muted: oklch(0.24 0.10 310);
636
+ --color-muted-foreground: oklch(0.70 0.18 315);
637
+ --color-accent: oklch(0.65 0.28 180);
638
+ --color-accent-foreground: oklch(0.98 0 0);
639
+ --color-destructive: oklch(0.50 0.20 25);
640
+ --color-destructive-foreground: oklch(0.92 0.06 320);
641
+ --color-border: oklch(0.27 0 0);
642
+ --color-input: oklch(0.27 0 0);
643
+ --color-ring: oklch(0.75 0.34 330);
644
+ --color-sidebar-background: oklch(0.14 0.06 310 / 0);
645
+ --color-sidebar-foreground: oklch(0.94 0.05 320);
646
+ --color-sidebar-primary: oklch(0.75 0.34 330);
647
+ --color-sidebar-primary-foreground: oklch(1 0 0);
648
+ --color-sidebar-accent: oklch(0.65 0.28 180 / 0.5);
649
+ --color-sidebar-accent-foreground: oklch(0.98 0 0);
650
+ --color-sidebar-border: oklch(0.22 0.10 310 / 0.3);
651
+ --color-sidebar-ring: oklch(0.75 0.34 330);
652
+ }
653
+
654
+ /* ============================================ */
655
+ /* LAVENDER DREAMS THEME - Sophisticated Purple/Violet */
656
+ /* ============================================ */
657
+ [data-theme="lavender"] {
658
+ --color-background: oklch(0.97 0.03 290);
659
+ --color-foreground: oklch(0.25 0.05 285);
660
+ --color-card: oklch(1 0 0);
661
+ --color-card-foreground: oklch(0.25 0.05 285);
662
+ --color-popover: oklch(1 0 0);
663
+ --color-popover-foreground: oklch(0.25 0.05 285);
664
+ --color-primary: oklch(0.62 0.26 285);
665
+ --color-primary-foreground: oklch(0.98 0 0);
666
+ --color-secondary: oklch(0.92 0.06 295);
667
+ --color-secondary-foreground: oklch(0.28 0.10 295);
668
+ --color-muted: oklch(0.94 0.04 290);
669
+ --color-muted-foreground: oklch(0.50 0.12 285);
670
+ --color-accent: oklch(0.93 0.07 280);
671
+ --color-accent-foreground: oklch(0.28 0.10 280);
672
+ --color-destructive: oklch(0.62 0.26 25);
673
+ --color-destructive-foreground: oklch(0.98 0 0);
674
+ --color-border: oklch(0.922 0 0);
675
+ --color-input: oklch(0.922 0 0);
676
+ --color-ring: oklch(0.62 0.26 285);
677
+ --color-sidebar-background: oklch(0.94 0.04 290 / 0);
678
+ --color-sidebar-foreground: oklch(0.40 0.10 285);
679
+ --color-sidebar-primary: oklch(0.62 0.26 285);
680
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
681
+ --color-sidebar-accent: oklch(0.88 0.07 280 / 0.5);
682
+ --color-sidebar-accent-foreground: oklch(0.28 0.10 280);
683
+ --color-sidebar-border: oklch(0.88 0.05 285 / 0.3);
684
+ --color-sidebar-ring: oklch(0.62 0.26 285);
685
+ }
686
+
687
+ [data-theme="lavender"].dark {
688
+ --color-background: oklch(0.16 0.06 285);
689
+ --color-foreground: oklch(0.92 0.05 290);
690
+ --color-card: oklch(0.14 0.06 285);
691
+ --color-card-foreground: oklch(0.92 0.05 290);
692
+ --color-popover: oklch(0.14 0.06 285);
693
+ --color-popover-foreground: oklch(0.92 0.05 290);
694
+ --color-primary: oklch(0.70 0.28 285);
695
+ --color-primary-foreground: oklch(0.98 0 0);
696
+ --color-secondary: oklch(0.65 0.24 295);
697
+ --color-secondary-foreground: oklch(0.98 0 0);
698
+ --color-muted: oklch(0.25 0.08 285);
699
+ --color-muted-foreground: oklch(0.70 0.16 290);
700
+ --color-accent: oklch(0.62 0.24 280);
701
+ --color-accent-foreground: oklch(0.98 0 0);
702
+ --color-destructive: oklch(0.50 0.20 25);
703
+ --color-destructive-foreground: oklch(0.92 0.05 290);
704
+ --color-border: oklch(0.27 0 0);
705
+ --color-input: oklch(0.27 0 0);
706
+ --color-ring: oklch(0.70 0.28 285);
707
+ --color-sidebar-background: oklch(0.15 0.05 285 / 0);
708
+ --color-sidebar-foreground: oklch(0.94 0.04 290);
709
+ --color-sidebar-primary: oklch(0.70 0.28 285);
710
+ --color-sidebar-primary-foreground: oklch(1 0 0);
711
+ --color-sidebar-accent: oklch(0.62 0.24 280 / 0.5);
712
+ --color-sidebar-accent-foreground: oklch(0.98 0 0);
713
+ --color-sidebar-border: oklch(0.23 0.08 285 / 0.3);
714
+ --color-sidebar-ring: oklch(0.70 0.28 285);
715
+ }
716
+
717
+ /* ============================================ */
718
+ /* MINT LUXURY THEME - Fresh Mint Green with Gold Accents */
719
+ /* ============================================ */
720
+ [data-theme="mint"] {
721
+ --color-background: oklch(0.97 0.03 165);
722
+ --color-foreground: oklch(0.25 0.04 160);
723
+ --color-card: oklch(1 0 0);
724
+ --color-card-foreground: oklch(0.25 0.04 160);
725
+ --color-popover: oklch(1 0 0);
726
+ --color-popover-foreground: oklch(0.25 0.04 160);
727
+ --color-primary: oklch(0.68 0.22 165);
728
+ --color-primary-foreground: oklch(0.98 0 0);
729
+ --color-secondary: oklch(0.92 0.06 80);
730
+ --color-secondary-foreground: oklch(0.28 0.12 80);
731
+ --color-muted: oklch(0.94 0.04 165);
732
+ --color-muted-foreground: oklch(0.50 0.10 160);
733
+ --color-accent: oklch(0.93 0.08 170);
734
+ --color-accent-foreground: oklch(0.28 0.10 170);
735
+ --color-destructive: oklch(0.62 0.26 25);
736
+ --color-destructive-foreground: oklch(0.98 0 0);
737
+ --color-border: oklch(0.922 0 0);
738
+ --color-input: oklch(0.922 0 0);
739
+ --color-ring: oklch(0.68 0.22 165);
740
+ --color-sidebar-background: oklch(0.94 0.04 165 / 0);
741
+ --color-sidebar-foreground: oklch(0.40 0.08 160);
742
+ --color-sidebar-primary: oklch(0.68 0.22 165);
743
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
744
+ --color-sidebar-accent: oklch(0.88 0.08 170 / 0.5);
745
+ --color-sidebar-accent-foreground: oklch(0.28 0.10 170);
746
+ --color-sidebar-border: oklch(0.88 0.04 165 / 0.3);
747
+ --color-sidebar-ring: oklch(0.68 0.22 165);
748
+ }
749
+
750
+ [data-theme="mint"].dark {
751
+ --color-background: oklch(0.16 0.05 160);
752
+ --color-foreground: oklch(0.92 0.04 165);
753
+ --color-card: oklch(0.14 0.05 160);
754
+ --color-card-foreground: oklch(0.92 0.04 165);
755
+ --color-popover: oklch(0.14 0.05 160);
756
+ --color-popover-foreground: oklch(0.92 0.04 165);
757
+ --color-primary: oklch(0.72 0.24 165);
758
+ --color-primary-foreground: oklch(0.98 0 0);
759
+ --color-secondary: oklch(0.75 0.20 85);
760
+ --color-secondary-foreground: oklch(0.15 0.04 80);
761
+ --color-muted: oklch(0.25 0.06 160);
762
+ --color-muted-foreground: oklch(0.70 0.14 165);
763
+ --color-accent: oklch(0.68 0.22 170);
764
+ --color-accent-foreground: oklch(0.98 0 0);
765
+ --color-destructive: oklch(0.50 0.20 25);
766
+ --color-destructive-foreground: oklch(0.92 0.04 165);
767
+ --color-border: oklch(0.27 0 0);
768
+ --color-input: oklch(0.27 0 0);
769
+ --color-ring: oklch(0.72 0.24 165);
770
+ --color-sidebar-background: oklch(0.15 0.04 160 / 0);
771
+ --color-sidebar-foreground: oklch(0.94 0.03 165);
772
+ --color-sidebar-primary: oklch(0.72 0.24 165);
773
+ --color-sidebar-primary-foreground: oklch(1 0 0);
774
+ --color-sidebar-accent: oklch(0.68 0.22 170 / 0.5);
775
+ --color-sidebar-accent-foreground: oklch(0.98 0 0);
776
+ --color-sidebar-border: oklch(0.23 0.06 160 / 0.3);
777
+ --color-sidebar-ring: oklch(0.72 0.24 165);
778
+ }
779
+
780
+ /* ============================================ */
781
+ /* CORAL REEF THEME - Warm Coral & Turquoise */
782
+ /* ============================================ */
783
+ [data-theme="coral"] {
784
+ --color-background: oklch(0.97 0.03 30);
785
+ --color-foreground: oklch(0.25 0.04 25);
786
+ --color-card: oklch(1 0 0);
787
+ --color-card-foreground: oklch(0.25 0.04 25);
788
+ --color-popover: oklch(1 0 0);
789
+ --color-popover-foreground: oklch(0.25 0.04 25);
790
+ --color-primary: oklch(0.68 0.24 15);
791
+ --color-primary-foreground: oklch(0.98 0 0);
792
+ --color-secondary: oklch(0.92 0.08 200);
793
+ --color-secondary-foreground: oklch(0.25 0.12 200);
794
+ --color-muted: oklch(0.94 0.04 30);
795
+ --color-muted-foreground: oklch(0.50 0.12 25);
796
+ --color-accent: oklch(0.93 0.08 195);
797
+ --color-accent-foreground: oklch(0.25 0.12 195);
798
+ --color-destructive: oklch(0.62 0.26 25);
799
+ --color-destructive-foreground: oklch(0.98 0 0);
800
+ --color-border: oklch(0.922 0 0);
801
+ --color-input: oklch(0.922 0 0);
802
+ --color-ring: oklch(0.68 0.24 15);
803
+ --color-sidebar-background: oklch(0.94 0.04 30 / 0);
804
+ --color-sidebar-foreground: oklch(0.40 0.10 25);
805
+ --color-sidebar-primary: oklch(0.68 0.24 15);
806
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
807
+ --color-sidebar-accent: oklch(0.88 0.08 195 / 0.5);
808
+ --color-sidebar-accent-foreground: oklch(0.25 0.12 195);
809
+ --color-sidebar-border: oklch(0.88 0.04 30 / 0.3);
810
+ --color-sidebar-ring: oklch(0.68 0.24 15);
811
+ }
812
+
813
+ [data-theme="coral"].dark {
814
+ --color-background: oklch(0.16 0.06 20);
815
+ --color-foreground: oklch(0.92 0.05 30);
816
+ --color-card: oklch(0.14 0.06 20);
817
+ --color-card-foreground: oklch(0.92 0.05 30);
818
+ --color-popover: oklch(0.14 0.06 20);
819
+ --color-popover-foreground: oklch(0.92 0.05 30);
820
+ --color-primary: oklch(0.72 0.26 15);
821
+ --color-primary-foreground: oklch(0.98 0 0);
822
+ --color-secondary: oklch(0.68 0.26 200);
823
+ --color-secondary-foreground: oklch(0.98 0 0);
824
+ --color-muted: oklch(0.25 0.08 20);
825
+ --color-muted-foreground: oklch(0.70 0.16 25);
826
+ --color-accent: oklch(0.65 0.26 195);
827
+ --color-accent-foreground: oklch(0.98 0 0);
828
+ --color-destructive: oklch(0.50 0.20 25);
829
+ --color-destructive-foreground: oklch(0.92 0.05 30);
830
+ --color-border: oklch(0.27 0 0);
831
+ --color-input: oklch(0.27 0 0);
832
+ --color-ring: oklch(0.72 0.26 15);
833
+ --color-sidebar-background: oklch(0.15 0.05 20 / 0);
834
+ --color-sidebar-foreground: oklch(0.94 0.04 30);
835
+ --color-sidebar-primary: oklch(0.72 0.26 15);
836
+ --color-sidebar-primary-foreground: oklch(1 0 0);
837
+ --color-sidebar-accent: oklch(0.65 0.26 195 / 0.5);
838
+ --color-sidebar-accent-foreground: oklch(0.98 0 0);
839
+ --color-sidebar-border: oklch(0.23 0.08 20 / 0.3);
840
+ --color-sidebar-ring: oklch(0.72 0.26 15);
841
+ }
842
+
843
+ /* ============================================ */
844
+ /* ARCTIC AURORA THEME - Cool Blues & Purples Like Northern Lights */
845
+ /* ============================================ */
846
+ [data-theme="arctic"] {
847
+ --color-background: oklch(0.97 0.02 240);
848
+ --color-foreground: oklch(0.25 0.04 235);
849
+ --color-card: oklch(1 0 0);
850
+ --color-card-foreground: oklch(0.25 0.04 235);
851
+ --color-popover: oklch(1 0 0);
852
+ --color-popover-foreground: oklch(0.25 0.04 235);
853
+ --color-primary: oklch(0.60 0.24 245);
854
+ --color-primary-foreground: oklch(0.98 0 0);
855
+ --color-secondary: oklch(0.92 0.06 270);
856
+ --color-secondary-foreground: oklch(0.28 0.10 270);
857
+ --color-muted: oklch(0.94 0.03 240);
858
+ --color-muted-foreground: oklch(0.50 0.10 240);
859
+ --color-accent: oklch(0.93 0.06 265);
860
+ --color-accent-foreground: oklch(0.28 0.10 265);
861
+ --color-destructive: oklch(0.62 0.26 25);
862
+ --color-destructive-foreground: oklch(0.98 0 0);
863
+ --color-border: oklch(0.922 0 0);
864
+ --color-input: oklch(0.922 0 0);
865
+ --color-ring: oklch(0.60 0.24 245);
866
+ --color-sidebar-background: oklch(0.94 0.03 240 / 0);
867
+ --color-sidebar-foreground: oklch(0.40 0.08 240);
868
+ --color-sidebar-primary: oklch(0.60 0.24 245);
869
+ --color-sidebar-primary-foreground: oklch(0.98 0 0);
870
+ --color-sidebar-accent: oklch(0.88 0.06 265 / 0.5);
871
+ --color-sidebar-accent-foreground: oklch(0.28 0.10 265);
872
+ --color-sidebar-border: oklch(0.88 0.04 240 / 0.3);
873
+ --color-sidebar-ring: oklch(0.60 0.24 245);
874
+ }
875
+
876
+ [data-theme="arctic"].dark {
877
+ --color-background: oklch(0.15 0.05 235);
878
+ --color-foreground: oklch(0.92 0.04 245);
879
+ --color-card: oklch(0.13 0.05 235);
880
+ --color-card-foreground: oklch(0.92 0.04 245);
881
+ --color-popover: oklch(0.13 0.05 235);
882
+ --color-popover-foreground: oklch(0.92 0.04 245);
883
+ --color-primary: oklch(0.68 0.26 245);
884
+ --color-primary-foreground: oklch(0.98 0 0);
885
+ --color-secondary: oklch(0.65 0.24 270);
886
+ --color-secondary-foreground: oklch(0.98 0 0);
887
+ --color-muted: oklch(0.24 0.06 235);
888
+ --color-muted-foreground: oklch(0.70 0.14 240);
889
+ --color-accent: oklch(0.62 0.24 265);
890
+ --color-accent-foreground: oklch(0.98 0 0);
891
+ --color-destructive: oklch(0.50 0.20 25);
892
+ --color-destructive-foreground: oklch(0.92 0.04 245);
893
+ --color-border: oklch(0.27 0 0);
894
+ --color-input: oklch(0.27 0 0);
895
+ --color-ring: oklch(0.68 0.26 245);
896
+ --color-sidebar-background: oklch(0.14 0.04 235 / 0);
897
+ --color-sidebar-foreground: oklch(0.94 0.03 245);
898
+ --color-sidebar-primary: oklch(0.68 0.26 245);
899
+ --color-sidebar-primary-foreground: oklch(1 0 0);
900
+ --color-sidebar-accent: oklch(0.62 0.24 265 / 0.5);
901
+ --color-sidebar-accent-foreground: oklch(0.98 0 0);
902
+ --color-sidebar-border: oklch(0.22 0.06 235 / 0.3);
903
+ --color-sidebar-ring: oklch(0.68 0.26 245);
904
+ }
905
+
906
+ /* Additional runtime variables that don't need utility classes */
907
+ :root {
908
+ --content-height: auto;
909
+ }
910
+
911
+ /* Custom sidebar utilities - hover states */
912
+ @layer utilities {
913
+ .hover\:bg-sidebar-accent:hover {
914
+ background-color: var(--color-sidebar-accent);
915
+ }
916
+
917
+ .hover\:text-sidebar-accent-foreground:hover {
918
+ color: var(--color-sidebar-accent-foreground);
919
+ }
920
+ }
921
+
922
+ /* Custom animations */
923
+ @keyframes accordion-down {
924
+ from {
925
+ height: 0;
926
+ }
927
+ to {
928
+ height: var(--content-height);
929
+ }
930
+ }
931
+
932
+ @keyframes accordion-up {
933
+ from {
934
+ height: var(--content-height);
935
+ }
936
+ to {
937
+ height: 0;
938
+ }
939
+ }
940
+
941
+ @keyframes slide-in {
942
+ from {
943
+ transform: translateX(100%);
944
+ }
945
+ to {
946
+ transform: translateX(0);
947
+ }
948
+ }
949
+
950
+ @keyframes slide-out {
951
+ from {
952
+ transform: translateX(0);
953
+ }
954
+ to {
955
+ transform: translateX(100%);
956
+ }
957
+ }
958
+
959
+ @keyframes fade-in {
960
+ from {
961
+ opacity: 0;
962
+ }
963
+ to {
964
+ opacity: 1;
965
+ }
966
+ }
967
+
968
+ @keyframes fade-out {
969
+ from {
970
+ opacity: 1;
971
+ }
972
+ to {
973
+ opacity: 0;
974
+ }
975
+ }
976
+
977
+ @keyframes aurora-move-1 {
978
+ 0%, 100% {
979
+ transform: translate(0, 0) scale(1);
980
+ opacity: 0.6;
981
+ }
982
+ 33% {
983
+ transform: translate(20px, 10px) scale(1.1);
984
+ opacity: 0.7;
985
+ }
986
+ 66% {
987
+ transform: translate(-20px, 15px) scale(0.95);
988
+ opacity: 0.5;
989
+ }
990
+ }
991
+
992
+ @keyframes aurora-move-2 {
993
+ 0%, 100% {
994
+ transform: translate(0, 0) scale(1);
995
+ opacity: 0.6;
996
+ }
997
+ 33% {
998
+ transform: translate(-25px, -10px) scale(1.15);
999
+ opacity: 0.7;
1000
+ }
1001
+ 66% {
1002
+ transform: translate(15px, -15px) scale(0.9);
1003
+ opacity: 0.5;
1004
+ }
1005
+ }
1006
+
1007
+ @keyframes aurora-move-3 {
1008
+ 0%, 100% {
1009
+ transform: translateX(-50%) scale(1);
1010
+ opacity: 0.6;
1011
+ }
1012
+ 33% {
1013
+ transform: translateX(-45%) scale(1.1);
1014
+ opacity: 0.7;
1015
+ }
1016
+ 66% {
1017
+ transform: translateX(-55%) scale(0.95);
1018
+ opacity: 0.5;
1019
+ }
1020
+ }
1021
+
1022
+ /* Device frame mockups for component preview */
1023
+ .ios-frame {
1024
+ position: relative;
1025
+ }
1026
+
1027
+ .ios-frame::before {
1028
+ content: "";
1029
+ position: absolute;
1030
+ top: 0;
1031
+ left: 50%;
1032
+ transform: translateX(-50%);
1033
+ width: 200px;
1034
+ height: 30px;
1035
+ background: #1a1a1a;
1036
+ border-bottom-left-radius: 1.5rem;
1037
+ border-bottom-right-radius: 1.5rem;
1038
+ z-index: 10;
1039
+ }
1040
+
1041
+ .android-frame {
1042
+ position: relative;
1043
+ }
1044
+
1045
+ /* Fullscreen mode adjustments */
1046
+ :fullscreen .ios-frame,
1047
+ :fullscreen .android-frame {
1048
+ max-width: none;
1049
+ max-height: none;
1050
+ }
1051
+
1052
+ /* Preview theme toggle - scoped dark mode */
1053
+ [data-docs--component-preview-target="previewContainer"].dark {
1054
+ color-scheme: dark;
1055
+ }
1056
+
1057
+ [data-docs--component-preview-target="previewContainer"].dark .bg-background {
1058
+ background-color: oklch(0.2 0 0);
1059
+ }
1060
+
1061
+ [data-docs--component-preview-target="previewContainer"].dark .text-foreground {
1062
+ color: oklch(0.98 0 0);
1063
+ }
1064
+
1065
+ [data-docs--component-preview-target="previewContainer"].dark .border-border {
1066
+ border-color: oklch(0.25 0 0);
1067
+ }
1068
+
1069
+ /* Navbar blur effect - transparent */
1070
+ .navbar-blur {
1071
+ background-color: transparent;
1072
+ }
1073
+
1074
+ /* Aurora Borealis Animation */
1075
+ .aurora-container {
1076
+ position: absolute;
1077
+ top: 50%;
1078
+ left: 50%;
1079
+ transform: translate(-50%, -50%);
1080
+ width: 800px;
1081
+ height: 300px;
1082
+ overflow: visible;
1083
+ opacity: 0.7;
1084
+ pointer-events: none;
1085
+ }
1086
+
1087
+ .aurora {
1088
+ position: absolute;
1089
+ width: 600px;
1090
+ height: 400px;
1091
+ filter: blur(60px);
1092
+ opacity: 0.6;
1093
+ }
1094
+
1095
+ .aurora-1 {
1096
+ background: radial-gradient(ellipse at center,
1097
+ oklch(0.80 0.25 310) 0%,
1098
+ oklch(0.75 0.22 290) 30%,
1099
+ transparent 60%);
1100
+ top: 0;
1101
+ left: -100px;
1102
+ animation: aurora-move-1 20s ease-in-out infinite;
1103
+ }
1104
+
1105
+ .aurora-2 {
1106
+ background: radial-gradient(ellipse at center,
1107
+ oklch(0.75 0.20 220) 0%,
1108
+ oklch(0.70 0.18 200) 30%,
1109
+ transparent 60%);
1110
+ top: 20px;
1111
+ right: -100px;
1112
+ animation: aurora-move-2 25s ease-in-out infinite;
1113
+ }
1114
+
1115
+ .aurora-3 {
1116
+ background: radial-gradient(ellipse at center,
1117
+ oklch(0.75 0.20 160) 0%,
1118
+ oklch(0.70 0.18 180) 30%,
1119
+ transparent 60%);
1120
+ bottom: 0;
1121
+ left: 50%;
1122
+ transform: translateX(-50%);
1123
+ animation: aurora-move-3 30s ease-in-out infinite;
1124
+ }
1125
+
1126
+ /* Dark mode aurora - more vibrant */
1127
+ .dark .aurora-container {
1128
+ opacity: 0.5;
1129
+ }
1130
+
1131
+ .dark .aurora-1 {
1132
+ background: radial-gradient(ellipse at center,
1133
+ oklch(0.60 0.28 310) 0%,
1134
+ oklch(0.55 0.25 290) 30%,
1135
+ transparent 60%);
1136
+ }
1137
+
1138
+ .dark .aurora-2 {
1139
+ background: radial-gradient(ellipse at center,
1140
+ oklch(0.60 0.22 220) 0%,
1141
+ oklch(0.55 0.20 200) 30%,
1142
+ transparent 60%);
1143
+ }
1144
+
1145
+ .dark .aurora-3 {
1146
+ background: radial-gradient(ellipse at center,
1147
+ oklch(0.60 0.22 160) 0%,
1148
+ oklch(0.55 0.20 180) 30%,
1149
+ transparent 60%);
1150
+ }
1151
+
1152
+ /* Responsive aurora - hide on mobile */
1153
+ @media (max-width: 768px) {
1154
+ .aurora-container {
1155
+ display: none;
1156
+ }
1157
+ }
1158
+
1159
+ /* Skeleton loading animations */
1160
+ @keyframes skeleton-pulse {
1161
+ 0%, 100% {
1162
+ opacity: 1;
1163
+ }
1164
+ 50% {
1165
+ opacity: 0.5;
1166
+ }
1167
+ }
1168
+
1169
+ @keyframes shimmer {
1170
+ 0% {
1171
+ transform: translateX(-100%);
1172
+ }
1173
+ 100% {
1174
+ transform: translateX(100%);
1175
+ }
1176
+ }
1177
+
1178
+ .animate-shimmer {
1179
+ animation: shimmer 2s infinite;
1180
+ }