vanilla-jui 1.3.8 → 1.3.10

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 (77) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/index.umd.js +1 -1
  3. package/dist/style.css +1 -1
  4. package/package.json +3 -2
  5. package/src/components/accordion.js +373 -0
  6. package/src/components/components.js +0 -0
  7. package/src/components/drop.js +437 -0
  8. package/src/components/flow.js +1133 -0
  9. package/src/components/form.js +585 -0
  10. package/src/components/icons.js +83 -0
  11. package/src/components/menu.js +422 -0
  12. package/src/components/modal.js +1174 -0
  13. package/src/components/offcanvas.js +332 -0
  14. package/src/components/pagination.js +536 -0
  15. package/src/components/parabola.js +295 -0
  16. package/src/components/sticky.js +271 -0
  17. package/src/components/swiper.js +1123 -0
  18. package/src/components/tabs.js +746 -0
  19. package/src/components/theme.js +353 -0
  20. package/src/components/toast.js +329 -0
  21. package/src/components/toc.js +226 -0
  22. package/src/components/tooltip.js +86 -0
  23. package/src/components/validator.js +586 -0
  24. package/src/core/Component.js +248 -0
  25. package/src/css/accordion.css +72 -0
  26. package/src/css/animation.css +177 -0
  27. package/src/css/avatar.css +62 -0
  28. package/src/css/badge.css +66 -0
  29. package/src/css/breadcrumb.css +106 -0
  30. package/src/css/button.css +296 -0
  31. package/src/css/card.css +151 -0
  32. package/src/css/color.css +1176 -0
  33. package/src/css/color_p3.css +1184 -0
  34. package/src/css/components.css +26 -0
  35. package/src/css/content.css +716 -0
  36. package/src/css/divider.css +9 -0
  37. package/src/css/drop.css +28 -0
  38. package/src/css/flow.css +86 -0
  39. package/src/css/font.css +23 -0
  40. package/src/css/form.css +919 -0
  41. package/src/css/gradient.css +211 -0
  42. package/src/css/icon.css +63 -0
  43. package/src/css/index.css +12 -0
  44. package/src/css/layout.css +782 -0
  45. package/src/css/loading.css +38 -0
  46. package/src/css/menu.css +564 -0
  47. package/src/css/modal.css +111 -0
  48. package/src/css/offcanvas.css +104 -0
  49. package/src/css/pagination.css +25 -0
  50. package/src/css/popup.css +69 -0
  51. package/src/css/skeleton.css +76 -0
  52. package/src/css/status.css +56 -0
  53. package/src/css/swiper.css +160 -0
  54. package/src/css/table.css +52 -0
  55. package/src/css/tabs.css +95 -0
  56. package/src/css/tag.css +98 -0
  57. package/src/css/theme-palette.css +59 -0
  58. package/src/css/tip.css +84 -0
  59. package/src/css/toast.css +154 -0
  60. package/src/css/toast.min.css +1 -0
  61. package/src/css/toc.css +38 -0
  62. package/src/css/tokens.css +1324 -0
  63. package/src/css/toolbar.css +115 -0
  64. package/src/css/tooltip.css +19 -0
  65. package/src/icons/index.js +30 -0
  66. package/src/index.js +45 -0
  67. package/src/locales/index.js +45 -0
  68. package/src/locales/index.min.js +1 -0
  69. package/src/utilities/browser.js +111 -0
  70. package/src/utilities/cache.js +159 -0
  71. package/src/utilities/core.js +502 -0
  72. package/src/utilities/debug.js +103 -0
  73. package/src/utilities/dom.js +313 -0
  74. package/src/utilities/events.js +69 -0
  75. package/src/utilities/http.js +30 -0
  76. package/src/utilities/legacy-dom.js +179 -0
  77. package/src/utilities/storage.js +46 -0
@@ -0,0 +1,1324 @@
1
+ /* ============================================
2
+ Design Tokens - Unified Token System
3
+ vanilla-jui v2
4
+ ============================================ */
5
+
6
+ @layer config {
7
+
8
+ /* ============================================
9
+ 1. Layout Tokens
10
+ ============================================ */
11
+
12
+ :root {
13
+ /* --- Z-Index --- */
14
+ --z-index-0: 0;
15
+ --z-index-1: 1;
16
+ --z-index-badge: 2;
17
+ --z-index-toolbar: 2;
18
+ --z-index-submenu: 5;
19
+ --z-index-drop: 9900;
20
+ --z-index-overlay: 9950;
21
+ --z-index-offcanvas: 9960;
22
+ --z-index-popup: 9970;
23
+ --z-index-toast: 9980;
24
+
25
+ /* --- Spacing --- */
26
+ --space: 0.25rem;
27
+
28
+ /* --- Transitions --- */
29
+ --speed-sm: 0.15s;
30
+ --speed-md: 0.25s;
31
+ --speed-lg: 0.5s;
32
+ --speed-xl: 0.75s;
33
+
34
+ /* --- Typography Scale --- */
35
+ --text-xs: 0.75rem;
36
+ --text-sm: 0.875rem;
37
+ --text-md: 1rem;
38
+ --text-lg: 1.125rem;
39
+ --text-xl: 1.25rem;
40
+ --text-2xl: 1.5rem;
41
+ --text-3xl: 1.875rem;
42
+ --text-4xl: 2.25rem;
43
+ --text-5xl: 3rem;
44
+
45
+ /* --- Font Weight --- */
46
+ --font-thin: 100;
47
+ --font-extraLight: 200;
48
+ --font-light: 300;
49
+ --font-normal: 400;
50
+ --font-medium: 500;
51
+ --font-semiBold: 600;
52
+ --font-bold: 700;
53
+ --font-extraBold: 800;
54
+ --font-black: 900;
55
+
56
+ /* --- Line Height --- */
57
+ --line-height: 1.5;
58
+ --line-height-paragraph: 1.5;
59
+ --line-height-pre: 1.4;
60
+ --line-height-heading: 1.25;
61
+ --line-height-self: 1;
62
+
63
+ /* --- Breakpoints --- */
64
+ --screen-sm: 576px;
65
+ --screen-md: 768px;
66
+ --screen-lg: 992px;
67
+ --screen-xl: 1200px;
68
+
69
+ /* --- Container Widths --- */
70
+ --columns-xs: 20rem;
71
+ --columns-sm: 24rem;
72
+ --columns-md: 28rem;
73
+ --columns-lg: 32rem;
74
+ --columns-xl: 36rem;
75
+ --columns-2xl: 42rem;
76
+ --columns-3xl: 48rem;
77
+ --columns-4xl: 56rem;
78
+ --columns-5xl: 64rem;
79
+
80
+ /* --- Border Radius --- */
81
+ /* 2px */
82
+ --radius-2xs: 0.125rem;
83
+ /* 4px */
84
+ --radius-xs: 0.25rem;
85
+ /* 6px */
86
+ --radius-sm: 0.375rem;
87
+ /* 8px */
88
+ --radius-md: 0.5rem;
89
+ /* 12px */
90
+ --radius-lg: 0.75rem;
91
+ /* 16px */
92
+ --radius-xl: 1rem;
93
+ /* 24px */
94
+ --radius-2xl: 1.5rem;
95
+ --radius-full: 9999px;
96
+
97
+ /* --- Element Heights --- */
98
+ --el-height-3xs: 1rem;
99
+ --el-height-2xs: 1.25rem;
100
+ --el-height-xs: 1.5rem;
101
+ --el-height-sm: 1.75rem;
102
+ --el-height-md: 2rem;
103
+ --el-height-lg: 2.25rem;
104
+ --el-height-xl: 2.5rem;
105
+
106
+ /* --- Font Sizes --- */
107
+ --font-size-xs: 0.625rem;
108
+ --font-size-sm: 0.75rem;
109
+ --font-size-md: 0.875rem;
110
+ --font-size-lg: 1rem;
111
+ --font-size-xl: 1.125rem;
112
+ --font-size-2xl: 1.25rem;
113
+
114
+ /* Shadows */
115
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
116
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1);
117
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
118
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
119
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
120
+ }
121
+
122
+
123
+ /* ============================================
124
+ 2. Color Tokens - Light Mode
125
+ ============================================ */
126
+
127
+ :root,
128
+ .light,
129
+ .light-theme {
130
+ /* UI Structure */
131
+ --ui-bg: #ffffff;
132
+ --ui-bg-subtle: #f9fafb;
133
+ --ui-bg-muted: #f3f4f6;
134
+ --ui-surface: #ffffff;
135
+ --ui-surface-subtle: #f9fafb;
136
+ --ui-surface-muted: #f3f4f6;
137
+ --ui-surface-hover: rgba(0, 0, 0, 0.02);
138
+ --ui-surface-active: rgba(0, 0, 0, 0.04);
139
+ --ui-surface-raised: #ffffff;
140
+ --ui-surface-overlay: rgba(255, 255, 255, 0.9);
141
+ --ui-fg: #111827;
142
+ --ui-fg-muted: #6b7280;
143
+ --ui-fg-soft: #9ca3af;
144
+ --ui-fg-subtle: #d1d5db;
145
+ --ui-border-subtle: rgba(0, 0, 0, 0.06);
146
+ --ui-border: rgba(0, 0, 0, 0.1);
147
+ --ui-border-strong: rgba(0, 0, 0, 0.2);
148
+ --ui-outline: rgba(0, 0, 0, 0.15);
149
+ --ui-placeholder: #9ca3af;
150
+ --ui-disabled-bg: rgba(0, 0, 0, 0.04);
151
+ --ui-disabled-fg: #9ca3af;
152
+ --ui-overlay: rgba(0, 0, 0, 0.5);
153
+ --ui-overlay-muted: rgba(0, 0, 0, 0.25);
154
+ --ui-popup-background: rgba(0, 0, 0, 0.0625);
155
+ --ui-input-color: #111827;
156
+ --ui-input-border: rgba(0, 0, 0, 0.15);
157
+ --ui-input-focus-border: #3b82f6;
158
+ --ui-input-placeholder: #9ca3af;
159
+ --ui-input-focus-ring: rgba(59, 130, 246, 0.25);
160
+ --ui-tooltip-bg: #1f2937;
161
+ --ui-tooltip-fg: #f9fafb;
162
+
163
+ /* --- Fixed Theme Colors (15 themes) --- */
164
+ --ui-gray: #374151;
165
+ --ui-gray-light: #6b7280;
166
+ --ui-gray-heavy: #111827;
167
+ --ui-olive: #717762;
168
+ --ui-olive-light: #8a927d;
169
+ --ui-olive-heavy: #4d5440;
170
+ --ui-tomato: #ef4444;
171
+ --ui-tomato-light: #f87171;
172
+ --ui-tomato-heavy: #b91c1c;
173
+ --ui-ruby: #f43f5e;
174
+ --ui-ruby-light: #fb7185;
175
+ --ui-ruby-heavy: #be123c;
176
+ --ui-pink: #ec4899;
177
+ --ui-pink-light: #f472b6;
178
+ --ui-pink-heavy: #be185d;
179
+ --ui-violet: #8b5cf6;
180
+ --ui-violet-light: #a78bfa;
181
+ --ui-violet-heavy: #6d28d9;
182
+ --ui-indigo: #6366f1;
183
+ --ui-indigo-light: #818cf8;
184
+ --ui-indigo-heavy: #4338ca;
185
+ --ui-blue: #3b82f6;
186
+ --ui-blue-light: #60a5fa;
187
+ --ui-blue-heavy: #1d4ed8;
188
+ --ui-teal: #14b8a6;
189
+ --ui-teal-light: #2dd4bf;
190
+ --ui-teal-heavy: #0f766e;
191
+ --ui-grass: #22c55e;
192
+ --ui-grass-light: #4ade80;
193
+ --ui-grass-heavy: #15803d;
194
+ --ui-mint: #06b6d4;
195
+ --ui-mint-light: #22d3ee;
196
+ --ui-mint-heavy: #0e7490;
197
+ --ui-lime: #84cc16;
198
+ --ui-lime-light: #a3e635;
199
+ --ui-lime-heavy: #4d7c0f;
200
+ --ui-yellow: #eab308;
201
+ --ui-yellow-light: #facc15;
202
+ --ui-yellow-heavy: #a16207;
203
+ --ui-orange: #f97316;
204
+ --ui-orange-light: #fb923c;
205
+ --ui-orange-heavy: #c2410c;
206
+ --ui-gold: #b45309;
207
+ --ui-gold-light: #d97706;
208
+ --ui-gold-heavy: #78350f;
209
+ --ui-gray-tint: var(--ui-gray-light);
210
+ --ui-gray-shade: var(--ui-gray-heavy);
211
+ --ui-olive-tint: var(--ui-olive-light);
212
+ --ui-olive-shade: var(--ui-olive-heavy);
213
+ --ui-tomato-tint: var(--ui-tomato-light);
214
+ --ui-tomato-shade: var(--ui-tomato-heavy);
215
+ --ui-ruby-tint: var(--ui-ruby-light);
216
+ --ui-ruby-shade: var(--ui-ruby-heavy);
217
+ --ui-pink-tint: var(--ui-pink-light);
218
+ --ui-pink-shade: var(--ui-pink-heavy);
219
+ --ui-violet-tint: var(--ui-violet-light);
220
+ --ui-violet-shade: var(--ui-violet-heavy);
221
+ --ui-indigo-tint: var(--ui-indigo-light);
222
+ --ui-indigo-shade: var(--ui-indigo-heavy);
223
+ --ui-blue-tint: var(--ui-blue-light);
224
+ --ui-blue-shade: var(--ui-blue-heavy);
225
+ --ui-teal-tint: var(--ui-teal-light);
226
+ --ui-teal-shade: var(--ui-teal-heavy);
227
+ --ui-grass-tint: var(--ui-grass-light);
228
+ --ui-grass-shade: var(--ui-grass-heavy);
229
+ --ui-mint-tint: var(--ui-mint-light);
230
+ --ui-mint-shade: var(--ui-mint-heavy);
231
+ --ui-lime-tint: var(--ui-lime-light);
232
+ --ui-lime-shade: var(--ui-lime-heavy);
233
+ --ui-yellow-tint: var(--ui-yellow-light);
234
+ --ui-yellow-shade: var(--ui-yellow-heavy);
235
+ --ui-orange-tint: var(--ui-orange-light);
236
+ --ui-orange-shade: var(--ui-orange-heavy);
237
+ --ui-gold-tint: var(--ui-gold-light);
238
+ --ui-gold-shade: var(--ui-gold-heavy);
239
+
240
+ /* Theme Color (default indigo) */
241
+ --tone-subtle: rgba(99, 102, 241, 0.05);
242
+ --tone-soft: rgba(99, 102, 241, 0.08);
243
+ --tone-muted: rgba(99, 102, 241, 0.12);
244
+ --tone-weak: #ececf7;
245
+ --tone-wash: rgba(99, 102, 241, 0.03);
246
+ --tone-border: rgba(99, 102, 241, 0.2);
247
+ --tone-border-strong: rgba(99, 102, 241, 0.35);
248
+ --tone-solid: #6366f1;
249
+ --tone-solid-hover: #4f46e5;
250
+ --tone-solid-active: #4338ca;
251
+ --tone-text: #4f46e5;
252
+ --tone-text-hover: #4338ca;
253
+ --tone-fg: #ffffff;
254
+ --tone-ring: rgba(99, 102, 241, 0.4);
255
+ --tone-highlight: #fef08a;
256
+ --tone-highlight-fg: #854d0e;
257
+
258
+ /* Typography */
259
+ --tone-heading: #111827;
260
+ --tone-subtitle: #374151;
261
+ --tone-body: #4b5563;
262
+ --tone-caption: #6b7280;
263
+ --tone-muted: #9ca3af;
264
+ --tone-disabled: #d1d5db;
265
+
266
+ /* Links */
267
+ --tone-link: #4f46e5;
268
+ --tone-link-hover: #4338ca;
269
+ --tone-link-visited: #7c3aed;
270
+ --tone-link-active: #dc2626;
271
+ --tone-link-disabled: #9ca3af;
272
+
273
+ /* Card */
274
+ --tone-card: rgba(255, 255, 255, 0.8);
275
+ --tone-card-hover: rgba(255, 255, 255, 0.9);
276
+ --tone-card-border: rgba(0, 0, 0, 0.08);
277
+ --tone-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
278
+
279
+ /* Code */
280
+ --tone-code-bg: #f3f4f6;
281
+ --tone-code-fg: #374151;
282
+
283
+ /* States */
284
+ --state-danger: #ef4444;
285
+ --state-danger-hover: #dc2626;
286
+ --state-danger-active: #b91c1c;
287
+ --state-danger-fg: #ffffff;
288
+ --state-danger-text: #dc2626;
289
+ --state-danger-subtle: rgba(239, 68, 68, 0.08);
290
+ --state-danger-soft: rgba(239, 68, 68, 0.12);
291
+ --state-danger-muted: rgba(239, 68, 68, 0.16);
292
+ --state-danger-weak: #FCE1E1;
293
+ --state-danger-border: rgba(239, 68, 68, 0.25);
294
+ --state-danger-ring: rgba(239, 68, 68, 0.3);
295
+
296
+ --state-success: #22c55e;
297
+ --state-success-hover: #16a34a;
298
+ --state-success-active: #15803d;
299
+ --state-success-fg: #ffffff;
300
+ --state-success-text: #16a34a;
301
+ --state-success-subtle: rgba(34, 197, 94, 0.08);
302
+ --state-success-soft: rgba(34, 197, 94, 0.12);
303
+ --state-success-muted: rgba(34, 197, 94, 0.16);
304
+ --state-success-weak: #DCF6E5;
305
+ --state-success-border: rgba(34, 197, 94, 0.25);
306
+ --state-success-ring: rgba(34, 197, 94, 0.3);
307
+
308
+ --state-warning: #f59e0b;
309
+ --state-warning-hover: #d97706;
310
+ --state-warning-active: #b45309;
311
+ --state-warning-fg: #ffffff;
312
+ --state-warning-text: #d97706;
313
+ --state-warning-subtle: rgba(245, 158, 11, 0.08);
314
+ --state-warning-soft: rgba(245, 158, 11, 0.12);
315
+ --state-warning-muted: rgba(245, 158, 11, 0.16);
316
+ --state-warning-weak: #FDF0D8;
317
+ --state-warning-border: rgba(245, 158, 11, 0.25);
318
+ --state-warning-ring: rgba(245, 158, 11, 0.3);
319
+
320
+ --state-info: #3b82f6;
321
+ --state-info-hover: #2563eb;
322
+ --state-info-active: #1d4ed8;
323
+ --state-info-fg: #ffffff;
324
+ --state-info-text: #2563eb;
325
+ --state-info-subtle: rgba(59, 130, 246, 0.08);
326
+ --state-info-soft: rgba(59, 130, 246, 0.12);
327
+ --state-info-muted: rgba(59, 130, 246, 0.16);
328
+ --state-info-border: rgba(59, 130, 246, 0.25);
329
+ --state-info-ring: rgba(59, 130, 246, 0.3);
330
+
331
+ /* Component Aliases */
332
+ --state-danger-solid: var(--state-danger);
333
+ --state-danger-surface: var(--state-danger-subtle);
334
+ --state-success-solid: var(--state-success);
335
+ --state-success-surface: var(--state-success-subtle);
336
+ --state-warning-solid: var(--state-warning);
337
+ --state-warning-surface: var(--state-warning-subtle);
338
+ --state-info-solid: var(--state-info);
339
+ --state-info-surface: var(--state-info-subtle);
340
+ }
341
+
342
+
343
+ /* ============================================
344
+ 3. Color Tokens - Dark Mode
345
+ ============================================ */
346
+
347
+ .dark,
348
+ .dark-theme {
349
+ /* UI Structure */
350
+ --ui-bg: #0b0f14;
351
+ --ui-bg-subtle: #11161d;
352
+ --ui-bg-muted: #181e27;
353
+ --ui-surface: #0b0f14;
354
+ --ui-surface-subtle: #11161d;
355
+ --ui-surface-muted: #181e27;
356
+ --ui-surface-hover: rgba(255, 255, 255, 0.04);
357
+ --ui-surface-active: rgba(255, 255, 255, 0.07);
358
+ --ui-surface-raised: #151b24;
359
+ --ui-surface-overlay: rgba(7, 10, 15, 0.96);
360
+ --ui-fg: #f9fafb;
361
+ --ui-fg-muted: #cbd5e1;
362
+ --ui-fg-soft: #94a3b8;
363
+ --ui-fg-subtle: #64748b;
364
+ --ui-border-subtle: rgba(148, 163, 184, 0.12);
365
+ --ui-border: rgba(148, 163, 184, 0.18);
366
+ --ui-border-strong: rgba(148, 163, 184, 0.28);
367
+ --ui-outline: rgba(148, 163, 184, 0.2);
368
+ --ui-placeholder: #64748b;
369
+ --ui-disabled-bg: rgba(255, 255, 255, 0.04);
370
+ --ui-disabled-fg: #64748b;
371
+ --ui-overlay: rgba(2, 6, 23, 0.7);
372
+ --ui-overlay-muted: rgba(2, 6, 23, 0.45);
373
+ --ui-popup-background: rgba(17, 24, 39, 0.82);
374
+ --ui-input-color: #f9fafb;
375
+ --ui-input-border: rgba(148, 163, 184, 0.2);
376
+ --ui-input-focus-border: #a78bfa;
377
+ --ui-input-placeholder: #64748b;
378
+ --ui-input-focus-ring: rgba(167, 139, 250, 0.28);
379
+ --ui-tooltip-bg: #11161d;
380
+ --ui-tooltip-fg: #f8fafc;
381
+
382
+ /* --- Fixed Theme Colors (15 themes) --- */
383
+ --ui-gray: #e5e7eb;
384
+ --ui-gray-light: #f3f4f6;
385
+ --ui-gray-heavy: #9ca3af;
386
+ --ui-olive: #d4d9cc;
387
+ --ui-olive-light: #e5e7db;
388
+ --ui-olive-heavy: #a8b092;
389
+ --ui-tomato: #fca5a5;
390
+ --ui-tomato-light: #fecaca;
391
+ --ui-tomato-heavy: #f87171;
392
+ --ui-ruby: #fda4af;
393
+ --ui-ruby-light: #fecdd3;
394
+ --ui-ruby-heavy: #fb7185;
395
+ --ui-pink: #f9a8d4;
396
+ --ui-pink-light: #fbcfe8;
397
+ --ui-pink-heavy: #f472b6;
398
+ --ui-violet: #c4b5fd;
399
+ --ui-violet-light: #ddd6fe;
400
+ --ui-violet-heavy: #a78bfa;
401
+ --ui-indigo: #a5b4fc;
402
+ --ui-indigo-light: #c7d2fe;
403
+ --ui-indigo-heavy: #818cf8;
404
+ --ui-blue: #93c5fd;
405
+ --ui-blue-light: #bfdbfe;
406
+ --ui-blue-heavy: #60a5fa;
407
+ --ui-teal: #5eead4;
408
+ --ui-teal-light: #99f6e4;
409
+ --ui-teal-heavy: #2dd4bf;
410
+ --ui-grass: #86efac;
411
+ --ui-grass-light: #bbf7d0;
412
+ --ui-grass-heavy: #4ade80;
413
+ --ui-mint: #67e8f9;
414
+ --ui-mint-light: #a5f3fc;
415
+ --ui-mint-heavy: #22d3ee;
416
+ --ui-lime: #bef264;
417
+ --ui-lime-light: #d9f99d;
418
+ --ui-lime-heavy: #a3e635;
419
+ --ui-yellow: #fde047;
420
+ --ui-yellow-light: #fef08a;
421
+ --ui-yellow-heavy: #facc15;
422
+ --ui-orange: #fdba74;
423
+ --ui-orange-light: #fed7aa;
424
+ --ui-orange-heavy: #fb923c;
425
+ --ui-gold: #fbbf24;
426
+ --ui-gold-light: #fcd34d;
427
+ --ui-gold-heavy: #d97706;
428
+ --ui-gray-tint: var(--ui-gray-light);
429
+ --ui-gray-shade: var(--ui-gray-heavy);
430
+ --ui-olive-tint: var(--ui-olive-light);
431
+ --ui-olive-shade: var(--ui-olive-heavy);
432
+ --ui-tomato-tint: var(--ui-tomato-light);
433
+ --ui-tomato-shade: var(--ui-tomato-heavy);
434
+ --ui-ruby-tint: var(--ui-ruby-light);
435
+ --ui-ruby-shade: var(--ui-ruby-heavy);
436
+ --ui-pink-tint: var(--ui-pink-light);
437
+ --ui-pink-shade: var(--ui-pink-heavy);
438
+ --ui-violet-tint: var(--ui-violet-light);
439
+ --ui-violet-shade: var(--ui-violet-heavy);
440
+ --ui-indigo-tint: var(--ui-indigo-light);
441
+ --ui-indigo-shade: var(--ui-indigo-heavy);
442
+ --ui-blue-tint: var(--ui-blue-light);
443
+ --ui-blue-shade: var(--ui-blue-heavy);
444
+ --ui-teal-tint: var(--ui-teal-light);
445
+ --ui-teal-shade: var(--ui-teal-heavy);
446
+ --ui-grass-tint: var(--ui-grass-light);
447
+ --ui-grass-shade: var(--ui-grass-heavy);
448
+ --ui-mint-tint: var(--ui-mint-light);
449
+ --ui-mint-shade: var(--ui-mint-heavy);
450
+ --ui-lime-tint: var(--ui-lime-light);
451
+ --ui-lime-shade: var(--ui-lime-heavy);
452
+ --ui-yellow-tint: var(--ui-yellow-light);
453
+ --ui-yellow-shade: var(--ui-yellow-heavy);
454
+ --ui-orange-tint: var(--ui-orange-light);
455
+ --ui-orange-shade: var(--ui-orange-heavy);
456
+ --ui-gold-tint: var(--ui-gold-light);
457
+ --ui-gold-shade: var(--ui-gold-heavy);
458
+
459
+ /* Theme Color (default indigo) */
460
+ --tone-subtle: rgba(129, 140, 248, 0.1);
461
+ --tone-soft: rgba(129, 140, 248, 0.15);
462
+ --tone-muted: rgba(129, 140, 248, 0.2);
463
+ --tone-weak: #151b23;
464
+ --tone-wash: rgba(129, 140, 248, 0.05);
465
+ --tone-border: rgba(129, 140, 248, 0.25);
466
+ --tone-border-strong: rgba(129, 140, 248, 0.4);
467
+ --tone-solid: #818cf8;
468
+ --tone-solid-hover: #a5b4fc;
469
+ --tone-solid-active: #c7d2fe;
470
+ --tone-text: #a5b4fc;
471
+ --tone-text-hover: #c7d2fe;
472
+ --tone-fg: #1e1b4b;
473
+ --tone-ring: rgba(129, 140, 248, 0.5);
474
+ --tone-highlight: #fbbf24;
475
+ --tone-highlight-fg: #78350f;
476
+
477
+ /* Typography */
478
+ --tone-heading: #f9fafb;
479
+ --tone-subtitle: #e5e7eb;
480
+ --tone-body: #d1d5db;
481
+ --tone-caption: #9ca3af;
482
+ --tone-muted: #6b7280;
483
+ --tone-disabled: #4b5563;
484
+
485
+ /* Links */
486
+ --tone-link: #818cf8;
487
+ --tone-link-hover: #a5b4fc;
488
+ --tone-link-visited: #a78bfa;
489
+ --tone-link-active: #f87171;
490
+ --tone-link-disabled: #4b5563;
491
+
492
+ /* Card */
493
+ --tone-card: rgba(17, 24, 39, 0.82);
494
+ --tone-card-hover: rgba(17, 24, 39, 0.92);
495
+ --tone-card-border: rgba(148, 163, 184, 0.12);
496
+ --tone-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.28);
497
+
498
+ /* Code */
499
+ --tone-code-bg: #11161d;
500
+ --tone-code-fg: #e5e7eb;
501
+
502
+ /* States */
503
+ --state-danger: #f87171;
504
+ --state-danger-hover: #fca5a5;
505
+ --state-danger-active: #fecaca;
506
+ --state-danger-fg: #030712;
507
+ --state-danger-text: #fca5a5;
508
+ --state-danger-subtle: rgba(248, 113, 113, 0.1);
509
+ --state-danger-soft: rgba(248, 113, 113, 0.15);
510
+ --state-danger-muted: rgba(248, 113, 113, 0.2);
511
+ --state-danger-weak: #291111;
512
+ --state-danger-border: rgba(248, 113, 113, 0.25);
513
+ --state-danger-ring: rgba(248, 113, 113, 0.4);
514
+
515
+ --state-success: #4ade80;
516
+ --state-success-hover: #86efac;
517
+ --state-success-active: #bbf7d0;
518
+ --state-success-fg: #030712;
519
+ --state-success-text: #86efac;
520
+ --state-success-subtle: rgba(74, 222, 128, 0.1);
521
+ --state-success-soft: rgba(74, 222, 128, 0.15);
522
+ --state-success-muted: rgba(74, 222, 128, 0.2);
523
+ --state-success-weak: #08251E;
524
+ --state-success-border: rgba(74, 222, 128, 0.25);
525
+ --state-success-ring: rgba(74, 222, 128, 0.4);
526
+
527
+ --state-warning: #fbbf24;
528
+ --state-warning-hover: #fcd34d;
529
+ --state-warning-active: #fde68a;
530
+ --state-warning-fg: #030712;
531
+ --state-warning-text: #fcd34d;
532
+ --state-warning-subtle: rgba(251, 191, 36, 0.1);
533
+ --state-warning-soft: rgba(251, 191, 36, 0.15);
534
+ --state-warning-muted: rgba(251, 191, 36, 0.2);
535
+ --state-warning-weak: #2A1F11;
536
+ --state-warning-border: rgba(251, 191, 36, 0.25);
537
+ --state-warning-ring: rgba(251, 191, 36, 0.4);
538
+
539
+ --state-info: #60a5fa;
540
+ --state-info-hover: #93bbfd;
541
+ --state-info-active: #bfdbfe;
542
+ --state-info-fg: #030712;
543
+ --state-info-text: #93bbfd;
544
+ --state-info-subtle: rgba(96, 165, 250, 0.1);
545
+ --state-info-soft: rgba(96, 165, 250, 0.15);
546
+ --state-info-muted: rgba(96, 165, 250, 0.2);
547
+ --state-info-border: rgba(96, 165, 250, 0.25);
548
+ --state-info-ring: rgba(96, 165, 250, 0.4);
549
+
550
+ /* shadow */
551
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.3);
552
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.4), 0 1px 2px -1px rgb(0 0 0 / 0.3);
553
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.3);
554
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.4);
555
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.5), 0 8px 10px -6px rgb(0 0 0 / 0.4);
556
+ }
557
+
558
+
559
+ /* ============================================
560
+ 5. Theme Variants (15 themes)
561
+ ============================================ */
562
+
563
+ /* --- Gray --- */
564
+ .j-theme-gray {
565
+ --tone-subtle: rgba(0, 0, 0, 0.04);
566
+ --tone-soft: rgba(0, 0, 0, 0.06);
567
+ --tone-muted: rgba(0, 0, 0, 0.1);
568
+ --tone-wash: rgba(0, 0, 0, 0.02);
569
+ --tone-border: rgba(0, 0, 0, 0.12);
570
+ --tone-border-strong: rgba(0, 0, 0, 0.2);
571
+ --tone-solid: #374151;
572
+ --tone-solid-hover: #4b5563;
573
+ --tone-solid-active: #6b7280;
574
+ --tone-text: #374151;
575
+ --tone-text-hover: #4b5563;
576
+ --tone-fg: #ffffff;
577
+ --tone-ring: rgba(55, 65, 81, 0.3);
578
+ --tone-link: #374151;
579
+ --tone-link-hover: #4b5563;
580
+ --tone-link-visited: #6b7280;
581
+ }
582
+
583
+ /* --- Olive --- */
584
+ .j-theme-olive {
585
+ --tone-subtle: rgba(113, 119, 98, 0.06);
586
+ --tone-soft: rgba(113, 119, 98, 0.1);
587
+ --tone-muted: rgba(113, 119, 98, 0.15);
588
+ --tone-wash: rgba(113, 119, 98, 0.03);
589
+ --tone-border: rgba(113, 119, 98, 0.2);
590
+ --tone-border-strong: rgba(113, 119, 98, 0.35);
591
+ --tone-solid: #717762;
592
+ --tone-solid-hover: #5f6651;
593
+ --tone-solid-active: #4d5440;
594
+ --tone-text: #5f6651;
595
+ --tone-text-hover: #4d5440;
596
+ --tone-fg: #ffffff;
597
+ --tone-ring: rgba(113, 119, 98, 0.4);
598
+ --tone-link: #5f6651;
599
+ --tone-link-hover: #4d5440;
600
+ --tone-link-visited: #3d4530;
601
+ }
602
+
603
+ /* --- Tomato --- */
604
+ .j-theme-tomato {
605
+ --tone-subtle: rgba(239, 68, 68, 0.06);
606
+ --tone-soft: rgba(239, 68, 68, 0.1);
607
+ --tone-muted: rgba(239, 68, 68, 0.15);
608
+ --tone-wash: rgba(239, 68, 68, 0.03);
609
+ --tone-border: rgba(239, 68, 68, 0.2);
610
+ --tone-border-strong: rgba(239, 68, 68, 0.35);
611
+ --tone-solid: #ef4444;
612
+ --tone-solid-hover: #dc2626;
613
+ --tone-solid-active: #b91c1c;
614
+ --tone-text: #dc2626;
615
+ --tone-text-hover: #b91c1c;
616
+ --tone-fg: #ffffff;
617
+ --tone-ring: rgba(239, 68, 68, 0.4);
618
+ --tone-link: #dc2626;
619
+ --tone-link-hover: #b91c1c;
620
+ --tone-link-visited: #991b1b;
621
+ }
622
+
623
+ /* --- Ruby --- */
624
+ .j-theme-ruby {
625
+ --tone-subtle: rgba(244, 63, 94, 0.06);
626
+ --tone-soft: rgba(244, 63, 94, 0.1);
627
+ --tone-muted: rgba(244, 63, 94, 0.15);
628
+ --tone-wash: rgba(244, 63, 94, 0.03);
629
+ --tone-border: rgba(244, 63, 94, 0.2);
630
+ --tone-border-strong: rgba(244, 63, 94, 0.35);
631
+ --tone-solid: #f43f5e;
632
+ --tone-solid-hover: #e11d48;
633
+ --tone-solid-active: #be123c;
634
+ --tone-text: #e11d48;
635
+ --tone-text-hover: #be123c;
636
+ --tone-fg: #ffffff;
637
+ --tone-ring: rgba(244, 63, 94, 0.4);
638
+ --tone-link: #e11d48;
639
+ --tone-link-hover: #be123c;
640
+ --tone-link-visited: #9f1239;
641
+ }
642
+
643
+ /* --- Pink --- */
644
+ .j-theme-pink {
645
+ --tone-subtle: rgba(236, 72, 153, 0.06);
646
+ --tone-soft: rgba(236, 72, 153, 0.1);
647
+ --tone-muted: rgba(236, 72, 153, 0.15);
648
+ --tone-wash: rgba(236, 72, 153, 0.03);
649
+ --tone-border: rgba(236, 72, 153, 0.2);
650
+ --tone-border-strong: rgba(236, 72, 153, 0.35);
651
+ --tone-solid: #ec4899;
652
+ --tone-solid-hover: #db2777;
653
+ --tone-solid-active: #be185d;
654
+ --tone-text: #db2777;
655
+ --tone-text-hover: #be185d;
656
+ --tone-fg: #ffffff;
657
+ --tone-ring: rgba(236, 72, 153, 0.4);
658
+ --tone-link: #db2777;
659
+ --tone-link-hover: #be185d;
660
+ --tone-link-visited: #9d174d;
661
+ }
662
+
663
+ /* --- Violet --- */
664
+ .j-theme-violet {
665
+ --tone-subtle: rgba(139, 92, 246, 0.06);
666
+ --tone-soft: rgba(139, 92, 246, 0.1);
667
+ --tone-muted: rgba(139, 92, 246, 0.15);
668
+ --tone-wash: rgba(139, 92, 246, 0.03);
669
+ --tone-border: rgba(139, 92, 246, 0.2);
670
+ --tone-border-strong: rgba(139, 92, 246, 0.35);
671
+ --tone-solid: #8b5cf6;
672
+ --tone-solid-hover: #7c3aed;
673
+ --tone-solid-active: #6d28d9;
674
+ --tone-text: #7c3aed;
675
+ --tone-text-hover: #6d28d9;
676
+ --tone-fg: #ffffff;
677
+ --tone-ring: rgba(139, 92, 246, 0.4);
678
+ --tone-link: #7c3aed;
679
+ --tone-link-hover: #6d28d9;
680
+ --tone-link-visited: #5b21b6;
681
+ }
682
+
683
+ /* --- Indigo --- */
684
+ .j-theme-indigo {
685
+ --tone-subtle: rgba(99, 102, 241, 0.06);
686
+ --tone-soft: rgba(99, 102, 241, 0.1);
687
+ --tone-muted: rgba(99, 102, 241, 0.15);
688
+ --tone-wash: rgba(99, 102, 241, 0.03);
689
+ --tone-border: rgba(99, 102, 241, 0.2);
690
+ --tone-border-strong: rgba(99, 102, 241, 0.35);
691
+ --tone-solid: #6366f1;
692
+ --tone-solid-hover: #4f46e5;
693
+ --tone-solid-active: #4338ca;
694
+ --tone-text: #4f46e5;
695
+ --tone-text-hover: #4338ca;
696
+ --tone-fg: #ffffff;
697
+ --tone-ring: rgba(99, 102, 241, 0.4);
698
+ --tone-link: #4f46e5;
699
+ --tone-link-hover: #4338ca;
700
+ --tone-link-visited: #3730a3;
701
+ }
702
+
703
+ /* --- Blue --- */
704
+ .j-theme-blue {
705
+ --tone-subtle: rgba(59, 130, 246, 0.06);
706
+ --tone-soft: rgba(59, 130, 246, 0.1);
707
+ --tone-muted: rgba(59, 130, 246, 0.15);
708
+ --tone-wash: rgba(59, 130, 246, 0.03);
709
+ --tone-border: rgba(59, 130, 246, 0.2);
710
+ --tone-border-strong: rgba(59, 130, 246, 0.35);
711
+ --tone-solid: #3b82f6;
712
+ --tone-solid-hover: #2563eb;
713
+ --tone-solid-active: #1d4ed8;
714
+ --tone-text: #2563eb;
715
+ --tone-text-hover: #1d4ed8;
716
+ --tone-fg: #ffffff;
717
+ --tone-ring: rgba(59, 130, 246, 0.4);
718
+ --tone-link: #2563eb;
719
+ --tone-link-hover: #1d4ed8;
720
+ --tone-link-visited: #1e40af;
721
+ }
722
+
723
+ /* --- Teal --- */
724
+ .j-theme-teal {
725
+ --tone-subtle: rgba(20, 184, 166, 0.06);
726
+ --tone-soft: rgba(20, 184, 166, 0.1);
727
+ --tone-muted: rgba(20, 184, 166, 0.15);
728
+ --tone-wash: rgba(20, 184, 166, 0.03);
729
+ --tone-border: rgba(20, 184, 166, 0.2);
730
+ --tone-border-strong: rgba(20, 184, 166, 0.35);
731
+ --tone-solid: #14b8a6;
732
+ --tone-solid-hover: #0d9488;
733
+ --tone-solid-active: #0f766e;
734
+ --tone-text: #0d9488;
735
+ --tone-text-hover: #0f766e;
736
+ --tone-fg: #ffffff;
737
+ --tone-ring: rgba(20, 184, 166, 0.4);
738
+ --tone-link: #0d9488;
739
+ --tone-link-hover: #0f766e;
740
+ --tone-link-visited: #115e59;
741
+ }
742
+
743
+ /* --- Grass --- */
744
+ .j-theme-grass {
745
+ --tone-subtle: rgba(34, 197, 94, 0.06);
746
+ --tone-soft: rgba(34, 197, 94, 0.1);
747
+ --tone-muted: rgba(34, 197, 94, 0.15);
748
+ --tone-wash: rgba(34, 197, 94, 0.03);
749
+ --tone-border: rgba(34, 197, 94, 0.2);
750
+ --tone-border-strong: rgba(34, 197, 94, 0.35);
751
+ --tone-solid: #22c55e;
752
+ --tone-solid-hover: #16a34a;
753
+ --tone-solid-active: #15803d;
754
+ --tone-text: #16a34a;
755
+ --tone-text-hover: #15803d;
756
+ --tone-fg: #ffffff;
757
+ --tone-ring: rgba(34, 197, 94, 0.4);
758
+ --tone-link: #16a34a;
759
+ --tone-link-hover: #15803d;
760
+ --tone-link-visited: #166534;
761
+ }
762
+
763
+ /* --- Mint --- */
764
+ .j-theme-mint {
765
+ --tone-subtle: rgba(6, 182, 212, 0.06);
766
+ --tone-soft: rgba(6, 182, 212, 0.1);
767
+ --tone-muted: rgba(6, 182, 212, 0.15);
768
+ --tone-wash: rgba(6, 182, 212, 0.03);
769
+ --tone-border: rgba(6, 182, 212, 0.2);
770
+ --tone-border-strong: rgba(6, 182, 212, 0.35);
771
+ --tone-solid: #06b6d4;
772
+ --tone-solid-hover: #0891b2;
773
+ --tone-solid-active: #0e7490;
774
+ --tone-text: #0891b2;
775
+ --tone-text-hover: #0e7490;
776
+ --tone-fg: #ffffff;
777
+ --tone-ring: rgba(6, 182, 212, 0.4);
778
+ --tone-link: #0891b2;
779
+ --tone-link-hover: #0e7490;
780
+ --tone-link-visited: #155e75;
781
+ }
782
+
783
+ /* --- Lime --- */
784
+ .j-theme-lime {
785
+ --tone-subtle: rgba(132, 204, 22, 0.06);
786
+ --tone-soft: rgba(132, 204, 22, 0.1);
787
+ --tone-muted: rgba(132, 204, 22, 0.15);
788
+ --tone-wash: rgba(132, 204, 22, 0.03);
789
+ --tone-border: rgba(132, 204, 22, 0.2);
790
+ --tone-border-strong: rgba(132, 204, 22, 0.35);
791
+ --tone-solid: #84cc16;
792
+ --tone-solid-hover: #65a30d;
793
+ --tone-solid-active: #4d7c0f;
794
+ --tone-text: #65a30d;
795
+ --tone-text-hover: #4d7c0f;
796
+ --tone-fg: #ffffff;
797
+ --tone-ring: rgba(132, 204, 22, 0.4);
798
+ --tone-link: #65a30d;
799
+ --tone-link-hover: #4d7c0f;
800
+ --tone-link-visited: #3f6212;
801
+ }
802
+
803
+ /* --- Yellow --- */
804
+ .j-theme-yellow {
805
+ --tone-subtle: rgba(234, 179, 8, 0.06);
806
+ --tone-soft: rgba(234, 179, 8, 0.1);
807
+ --tone-muted: rgba(234, 179, 8, 0.15);
808
+ --tone-wash: rgba(234, 179, 8, 0.03);
809
+ --tone-border: rgba(234, 179, 8, 0.2);
810
+ --tone-border-strong: rgba(234, 179, 8, 0.35);
811
+ --tone-solid: #eab308;
812
+ --tone-solid-hover: #ca8a04;
813
+ --tone-solid-active: #a16207;
814
+ --tone-text: #ca8a04;
815
+ --tone-text-hover: #a16207;
816
+ --tone-fg: #ffffff;
817
+ --tone-ring: rgba(234, 179, 8, 0.4);
818
+ --tone-link: #ca8a04;
819
+ --tone-link-hover: #a16207;
820
+ --tone-link-visited: #854d0e;
821
+ }
822
+
823
+ /* --- Orange --- */
824
+ .j-theme-orange {
825
+ --tone-subtle: rgba(249, 115, 22, 0.06);
826
+ --tone-soft: rgba(249, 115, 22, 0.1);
827
+ --tone-muted: rgba(249, 115, 22, 0.15);
828
+ --tone-wash: rgba(249, 115, 22, 0.03);
829
+ --tone-border: rgba(249, 115, 22, 0.2);
830
+ --tone-border-strong: rgba(249, 115, 22, 0.35);
831
+ --tone-solid: #f97316;
832
+ --tone-solid-hover: #ea580c;
833
+ --tone-solid-active: #c2410c;
834
+ --tone-text: #ea580c;
835
+ --tone-text-hover: #c2410c;
836
+ --tone-fg: #ffffff;
837
+ --tone-ring: rgba(249, 115, 22, 0.4);
838
+ --tone-link: #ea580c;
839
+ --tone-link-hover: #c2410c;
840
+ --tone-link-visited: #9a3412;
841
+ }
842
+
843
+ /* --- Gold --- */
844
+ .j-theme-gold {
845
+ --tone-subtle: rgba(180, 83, 9, 0.06);
846
+ --tone-soft: rgba(180, 83, 9, 0.1);
847
+ --tone-muted: rgba(180, 83, 9, 0.15);
848
+ --tone-wash: rgba(180, 83, 9, 0.03);
849
+ --tone-border: rgba(180, 83, 9, 0.2);
850
+ --tone-border-strong: rgba(180, 83, 9, 0.35);
851
+ --tone-solid: #b45309;
852
+ --tone-solid-hover: #92400e;
853
+ --tone-solid-active: #78350f;
854
+ --tone-text: #92400e;
855
+ --tone-text-hover: #78350f;
856
+ --tone-fg: #ffffff;
857
+ --tone-ring: rgba(180, 83, 9, 0.4);
858
+ --tone-link: #92400e;
859
+ --tone-link-hover: #78350f;
860
+ --tone-link-visited: #653008;
861
+ }
862
+
863
+
864
+ /* ============================================
865
+ 6. Dark Theme Variants
866
+ ============================================ */
867
+
868
+ .dark.j-theme-gray,
869
+ .dark-theme.j-theme-gray {
870
+ --tone-subtle: rgba(255, 255, 255, 0.06);
871
+ --tone-soft: rgba(255, 255, 255, 0.1);
872
+ --tone-muted: rgba(255, 255, 255, 0.15);
873
+ --tone-wash: rgba(255, 255, 255, 0.03);
874
+ --tone-border: rgba(255, 255, 255, 0.12);
875
+ --tone-border-strong: rgba(255, 255, 255, 0.2);
876
+ --tone-solid: #e5e7eb;
877
+ --tone-solid-hover: #d1d5db;
878
+ --tone-solid-active: #9ca3af;
879
+ --tone-text: #e5e7eb;
880
+ --tone-text-hover: #d1d5db;
881
+ --tone-fg: #111827;
882
+ --tone-ring: rgba(229, 231, 235, 0.3);
883
+ --tone-link: #e5e7eb;
884
+ --tone-link-hover: #d1d5db;
885
+ --tone-link-visited: #9ca3af;
886
+ }
887
+
888
+ .dark.j-theme-olive,
889
+ .dark-theme.j-theme-olive {
890
+ --tone-subtle: rgba(180, 188, 162, 0.1);
891
+ --tone-soft: rgba(180, 188, 162, 0.15);
892
+ --tone-muted: rgba(180, 188, 162, 0.2);
893
+ --tone-wash: rgba(180, 188, 162, 0.05);
894
+ --tone-border: rgba(180, 188, 162, 0.25);
895
+ --tone-border-strong: rgba(180, 188, 162, 0.4);
896
+ --tone-solid: #b4bc9e;
897
+ --tone-solid-hover: #c8cfb5;
898
+ --tone-solid-active: #dce2cc;
899
+ --tone-text: #c8cfb5;
900
+ --tone-text-hover: #dce2cc;
901
+ --tone-fg: #1a1d16;
902
+ --tone-ring: rgba(180, 188, 162, 0.4);
903
+ --tone-link: #c8cfb5;
904
+ --tone-link-hover: #dce2cc;
905
+ --tone-link-visited: #a8b092;
906
+ }
907
+
908
+ .dark.j-theme-tomato,
909
+ .dark-theme.j-theme-tomato {
910
+ --tone-subtle: rgba(248, 113, 113, 0.1);
911
+ --tone-soft: rgba(248, 113, 113, 0.15);
912
+ --tone-muted: rgba(248, 113, 113, 0.2);
913
+ --tone-wash: rgba(248, 113, 113, 0.05);
914
+ --tone-border: rgba(248, 113, 113, 0.25);
915
+ --tone-border-strong: rgba(248, 113, 113, 0.4);
916
+ --tone-solid: #f87171;
917
+ --tone-solid-hover: #fca5a5;
918
+ --tone-solid-active: #fecaca;
919
+ --tone-text: #fca5a5;
920
+ --tone-text-hover: #fecaca;
921
+ --tone-fg: #7f1d1d;
922
+ --tone-ring: rgba(248, 113, 113, 0.4);
923
+ --tone-link: #fca5a5;
924
+ --tone-link-hover: #fecaca;
925
+ --tone-link-visited: #f87171;
926
+ }
927
+
928
+ .dark.j-theme-ruby,
929
+ .dark-theme.j-theme-ruby {
930
+ --tone-subtle: rgba(251, 113, 133, 0.1);
931
+ --tone-soft: rgba(251, 113, 133, 0.15);
932
+ --tone-muted: rgba(251, 113, 133, 0.2);
933
+ --tone-wash: rgba(251, 113, 133, 0.05);
934
+ --tone-border: rgba(251, 113, 133, 0.25);
935
+ --tone-border-strong: rgba(251, 113, 133, 0.4);
936
+ --tone-solid: #fb7185;
937
+ --tone-solid-hover: #fda4af;
938
+ --tone-solid-active: #fecdd3;
939
+ --tone-text: #fda4af;
940
+ --tone-text-hover: #fecdd3;
941
+ --tone-fg: #881337;
942
+ --tone-ring: rgba(251, 113, 133, 0.4);
943
+ --tone-link: #fda4af;
944
+ --tone-link-hover: #fecdd3;
945
+ --tone-link-visited: #fb7185;
946
+ }
947
+
948
+ .dark.j-theme-pink,
949
+ .dark-theme.j-theme-pink {
950
+ --tone-subtle: rgba(244, 114, 182, 0.1);
951
+ --tone-soft: rgba(244, 114, 182, 0.15);
952
+ --tone-muted: rgba(244, 114, 182, 0.2);
953
+ --tone-wash: rgba(244, 114, 182, 0.05);
954
+ --tone-border: rgba(244, 114, 182, 0.25);
955
+ --tone-border-strong: rgba(244, 114, 182, 0.4);
956
+ --tone-solid: #f472b6;
957
+ --tone-solid-hover: #f9a8d4;
958
+ --tone-solid-active: #fbcfe8;
959
+ --tone-text: #f9a8d4;
960
+ --tone-text-hover: #fbcfe8;
961
+ --tone-fg: #831843;
962
+ --tone-ring: rgba(244, 114, 182, 0.4);
963
+ --tone-link: #f9a8d4;
964
+ --tone-link-hover: #fbcfe8;
965
+ --tone-link-visited: #f472b6;
966
+ }
967
+
968
+ .dark.j-theme-violet,
969
+ .dark-theme.j-theme-violet {
970
+ --tone-subtle: rgba(167, 139, 250, 0.1);
971
+ --tone-soft: rgba(167, 139, 250, 0.15);
972
+ --tone-muted: rgba(167, 139, 250, 0.2);
973
+ --tone-wash: rgba(167, 139, 250, 0.05);
974
+ --tone-border: rgba(167, 139, 250, 0.25);
975
+ --tone-border-strong: rgba(167, 139, 250, 0.4);
976
+ --tone-solid: #a78bfa;
977
+ --tone-solid-hover: #c4b5fd;
978
+ --tone-solid-active: #ddd6fe;
979
+ --tone-text: #c4b5fd;
980
+ --tone-text-hover: #ddd6fe;
981
+ --tone-fg: #2e1065;
982
+ --tone-ring: rgba(167, 139, 250, 0.4);
983
+ --tone-link: #c4b5fd;
984
+ --tone-link-hover: #ddd6fe;
985
+ --tone-link-visited: #a78bfa;
986
+ }
987
+
988
+ .dark.j-theme-indigo,
989
+ .dark-theme.j-theme-indigo {
990
+ --tone-subtle: rgba(129, 140, 248, 0.1);
991
+ --tone-soft: rgba(129, 140, 248, 0.15);
992
+ --tone-muted: rgba(129, 140, 248, 0.2);
993
+ --tone-wash: rgba(129, 140, 248, 0.05);
994
+ --tone-border: rgba(129, 140, 248, 0.25);
995
+ --tone-border-strong: rgba(129, 140, 248, 0.4);
996
+ --tone-solid: #818cf8;
997
+ --tone-solid-hover: #a5b4fc;
998
+ --tone-solid-active: #c7d2fe;
999
+ --tone-text: #a5b4fc;
1000
+ --tone-text-hover: #c7d2fe;
1001
+ --tone-fg: #1e1b4b;
1002
+ --tone-ring: rgba(129, 140, 248, 0.4);
1003
+ --tone-link: #a5b4fc;
1004
+ --tone-link-hover: #c7d2fe;
1005
+ --tone-link-visited: #818cf8;
1006
+ }
1007
+
1008
+ .dark.j-theme-blue,
1009
+ .dark-theme.j-theme-blue {
1010
+ --tone-subtle: rgba(96, 165, 250, 0.1);
1011
+ --tone-soft: rgba(96, 165, 250, 0.15);
1012
+ --tone-muted: rgba(96, 165, 250, 0.2);
1013
+ --tone-wash: rgba(96, 165, 250, 0.05);
1014
+ --tone-border: rgba(96, 165, 250, 0.25);
1015
+ --tone-border-strong: rgba(96, 165, 250, 0.4);
1016
+ --tone-solid: #60a5fa;
1017
+ --tone-solid-hover: #93bbfd;
1018
+ --tone-solid-active: #bfdbfe;
1019
+ --tone-text: #93bbfd;
1020
+ --tone-text-hover: #bfdbfe;
1021
+ --tone-fg: #1e3a5f;
1022
+ --tone-ring: rgba(96, 165, 250, 0.4);
1023
+ --tone-link: #93bbfd;
1024
+ --tone-link-hover: #bfdbfe;
1025
+ --tone-link-visited: #60a5fa;
1026
+ }
1027
+
1028
+ .dark.j-theme-teal,
1029
+ .dark-theme.j-theme-teal {
1030
+ --tone-subtle: rgba(45, 212, 191, 0.1);
1031
+ --tone-soft: rgba(45, 212, 191, 0.15);
1032
+ --tone-muted: rgba(45, 212, 191, 0.2);
1033
+ --tone-wash: rgba(45, 212, 191, 0.05);
1034
+ --tone-border: rgba(45, 212, 191, 0.25);
1035
+ --tone-border-strong: rgba(45, 212, 191, 0.4);
1036
+ --tone-solid: #2dd4bf;
1037
+ --tone-solid-hover: #5eead4;
1038
+ --tone-solid-active: #99f6e4;
1039
+ --tone-text: #5eead4;
1040
+ --tone-text-hover: #99f6e4;
1041
+ --tone-fg: #134e4a;
1042
+ --tone-ring: rgba(45, 212, 191, 0.4);
1043
+ --tone-link: #5eead4;
1044
+ --tone-link-hover: #99f6e4;
1045
+ --tone-link-visited: #2dd4bf;
1046
+ }
1047
+
1048
+ .dark.j-theme-grass,
1049
+ .dark-theme.j-theme-grass {
1050
+ --tone-subtle: rgba(74, 222, 128, 0.1);
1051
+ --tone-soft: rgba(74, 222, 128, 0.15);
1052
+ --tone-muted: rgba(74, 222, 128, 0.2);
1053
+ --tone-wash: rgba(74, 222, 128, 0.05);
1054
+ --tone-border: rgba(74, 222, 128, 0.25);
1055
+ --tone-border-strong: rgba(74, 222, 128, 0.4);
1056
+ --tone-solid: #4ade80;
1057
+ --tone-solid-hover: #86efac;
1058
+ --tone-solid-active: #bbf7d0;
1059
+ --tone-text: #86efac;
1060
+ --tone-text-hover: #bbf7d0;
1061
+ --tone-fg: #14532d;
1062
+ --tone-ring: rgba(74, 222, 128, 0.4);
1063
+ --tone-link: #86efac;
1064
+ --tone-link-hover: #bbf7d0;
1065
+ --tone-link-visited: #4ade80;
1066
+ }
1067
+
1068
+ .dark.j-theme-mint,
1069
+ .dark-theme.j-theme-mint {
1070
+ --tone-subtle: rgba(34, 211, 238, 0.1);
1071
+ --tone-soft: rgba(34, 211, 238, 0.15);
1072
+ --tone-muted: rgba(34, 211, 238, 0.2);
1073
+ --tone-wash: rgba(34, 211, 238, 0.05);
1074
+ --tone-border: rgba(34, 211, 238, 0.25);
1075
+ --tone-border-strong: rgba(34, 211, 238, 0.4);
1076
+ --tone-solid: #22d3ee;
1077
+ --tone-solid-hover: #67e8f9;
1078
+ --tone-solid-active: #a5f3fc;
1079
+ --tone-text: #67e8f9;
1080
+ --tone-text-hover: #a5f3fc;
1081
+ --tone-fg: #164e63;
1082
+ --tone-ring: rgba(34, 211, 238, 0.4);
1083
+ --tone-link: #67e8f9;
1084
+ --tone-link-hover: #a5f3fc;
1085
+ --tone-link-visited: #22d3ee;
1086
+ }
1087
+
1088
+ .dark.j-theme-lime,
1089
+ .dark-theme.j-theme-lime {
1090
+ --tone-subtle: rgba(163, 230, 53, 0.1);
1091
+ --tone-soft: rgba(163, 230, 53, 0.15);
1092
+ --tone-muted: rgba(163, 230, 53, 0.2);
1093
+ --tone-wash: rgba(163, 230, 53, 0.05);
1094
+ --tone-border: rgba(163, 230, 53, 0.25);
1095
+ --tone-border-strong: rgba(163, 230, 53, 0.4);
1096
+ --tone-solid: #a3e635;
1097
+ --tone-solid-hover: #bef264;
1098
+ --tone-solid-active: #d9f99d;
1099
+ --tone-text: #bef264;
1100
+ --tone-text-hover: #d9f99d;
1101
+ --tone-fg: #365314;
1102
+ --tone-ring: rgba(163, 230, 53, 0.4);
1103
+ --tone-link: #bef264;
1104
+ --tone-link-hover: #d9f99d;
1105
+ --tone-link-visited: #a3e635;
1106
+ }
1107
+
1108
+ .dark.j-theme-yellow,
1109
+ .dark-theme.j-theme-yellow {
1110
+ --tone-subtle: rgba(250, 204, 21, 0.1);
1111
+ --tone-soft: rgba(250, 204, 21, 0.15);
1112
+ --tone-muted: rgba(250, 204, 21, 0.2);
1113
+ --tone-wash: rgba(250, 204, 21, 0.05);
1114
+ --tone-border: rgba(250, 204, 21, 0.25);
1115
+ --tone-border-strong: rgba(250, 204, 21, 0.4);
1116
+ --tone-solid: #facc15;
1117
+ --tone-solid-hover: #fde047;
1118
+ --tone-solid-active: #fef08a;
1119
+ --tone-text: #fde047;
1120
+ --tone-text-hover: #fef08a;
1121
+ --tone-fg: #713f12;
1122
+ --tone-ring: rgba(250, 204, 21, 0.4);
1123
+ --tone-link: #fde047;
1124
+ --tone-link-hover: #fef08a;
1125
+ --tone-link-visited: #facc15;
1126
+ }
1127
+
1128
+ .dark.j-theme-orange,
1129
+ .dark-theme.j-theme-orange {
1130
+ --tone-subtle: rgba(251, 146, 60, 0.1);
1131
+ --tone-soft: rgba(251, 146, 60, 0.15);
1132
+ --tone-muted: rgba(251, 146, 60, 0.2);
1133
+ --tone-wash: rgba(251, 146, 60, 0.05);
1134
+ --tone-border: rgba(251, 146, 60, 0.25);
1135
+ --tone-border-strong: rgba(251, 146, 60, 0.4);
1136
+ --tone-solid: #fb923c;
1137
+ --tone-solid-hover: #fdba74;
1138
+ --tone-solid-active: #fed7aa;
1139
+ --tone-text: #fdba74;
1140
+ --tone-text-hover: #fed7aa;
1141
+ --tone-fg: #7c2d12;
1142
+ --tone-ring: rgba(251, 146, 60, 0.4);
1143
+ --tone-link: #fdba74;
1144
+ --tone-link-hover: #fed7aa;
1145
+ --tone-link-visited: #fb923c;
1146
+ }
1147
+
1148
+ .dark.j-theme-gold,
1149
+ .dark-theme.j-theme-gold {
1150
+ --tone-subtle: rgba(217, 119, 6, 0.1);
1151
+ --tone-soft: rgba(217, 119, 6, 0.15);
1152
+ --tone-muted: rgba(217, 119, 6, 0.2);
1153
+ --tone-wash: rgba(217, 119, 6, 0.05);
1154
+ --tone-border: rgba(217, 119, 6, 0.25);
1155
+ --tone-border-strong: rgba(217, 119, 6, 0.4);
1156
+ --tone-solid: #d97706;
1157
+ --tone-solid-hover: #f59e0b;
1158
+ --tone-solid-active: #fbbf24;
1159
+ --tone-text: #f59e0b;
1160
+ --tone-text-hover: #fbbf24;
1161
+ --tone-fg: #78350f;
1162
+ --tone-ring: rgba(217, 119, 6, 0.4);
1163
+ --tone-link: #f59e0b;
1164
+ --tone-link-hover: #fbbf24;
1165
+ --tone-link-visited: #d97706;
1166
+ }
1167
+
1168
+
1169
+ /* ============================================
1170
+ 7. Radius Themes
1171
+ ============================================ */
1172
+
1173
+ .j-radius-none {
1174
+ --radius-xs: 0;
1175
+ --radius-sm: 0;
1176
+ --radius-md: 0;
1177
+ --radius-lg: 0;
1178
+ --radius-xl: 0;
1179
+ --radius-2xl: 0;
1180
+ }
1181
+
1182
+ .j-radius-sm {
1183
+ --radius-xs: 0.0625rem;
1184
+ --radius-sm: 0.125rem;
1185
+ --radius-md: 0.25rem;
1186
+ --radius-lg: 0.5rem;
1187
+ --radius-xl: 0.75rem;
1188
+ --radius-2xl: 1rem;
1189
+ }
1190
+
1191
+ .j-radius-md {
1192
+ --radius-xs: 0.125rem;
1193
+ --radius-sm: 0.25rem;
1194
+ --radius-md: 0.5rem;
1195
+ --radius-lg: 0.75rem;
1196
+ --radius-xl: 1rem;
1197
+ --radius-2xl: 1.25rem;
1198
+ }
1199
+
1200
+ .j-radius-lg {
1201
+ --radius-xs: 0.25rem;
1202
+ --radius-sm: 0.5rem;
1203
+ --radius-md: 0.75rem;
1204
+ --radius-lg: 1rem;
1205
+ --radius-xl: 1.25rem;
1206
+ --radius-2xl: 1.5rem;
1207
+ }
1208
+
1209
+ .j-radius-xl {
1210
+ --radius-xs: 0.5rem;
1211
+ --radius-sm: 0.75rem;
1212
+ --radius-md: 1rem;
1213
+ --radius-lg: 1.25rem;
1214
+ --radius-xl: 1.5rem;
1215
+ --radius-2xl: 1.75rem;
1216
+ }
1217
+
1218
+ .j-radius-round {
1219
+ --radius-xs: 9999px;
1220
+ --radius-sm: 9999px;
1221
+ --radius-md: 9999px;
1222
+ --radius-lg: 9999px;
1223
+ --radius-xl: 9999px;
1224
+ --radius-2xl: 9999px;
1225
+ }
1226
+
1227
+
1228
+ /* ============================================
1229
+ 8. Shadow Themes
1230
+ ============================================ */
1231
+
1232
+ .j-shadow-none {
1233
+ --shadow-xs: none;
1234
+ --shadow-sm: none;
1235
+ --shadow-md: none;
1236
+ --shadow-lg: none;
1237
+ --shadow-xl: none;
1238
+ }
1239
+
1240
+ .j-shadow-sm {
1241
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.03);
1242
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.06);
1243
+ --shadow-md: 0 2px 3px -1px rgb(0 0 0 / 0.08);
1244
+ --shadow-lg: 0 4px 6px -1px rgb(0 0 0 / 0.1);
1245
+ --shadow-xl: 0 8px 10px -3px rgb(0 0 0 / 0.1);
1246
+ }
1247
+
1248
+ .j-shadow-md {
1249
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
1250
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1);
1251
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
1252
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
1253
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
1254
+ }
1255
+
1256
+ .j-shadow-lg {
1257
+ --shadow-xs: 0 1px 3px 0 rgb(0 0 0 / 0.08);
1258
+ --shadow-sm: 0 2px 4px 0 rgb(0 0 0 / 0.12);
1259
+ --shadow-md: 0 4px 8px -2px rgb(0 0 0 / 0.15);
1260
+ --shadow-lg: 0 12px 20px -4px rgb(0 0 0 / 0.18);
1261
+ --shadow-xl: 0 24px 38px -6px rgb(0 0 0 / 0.2);
1262
+ }
1263
+
1264
+ .dark .j-shadow-sm {
1265
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.2);
1266
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.3);
1267
+ --shadow-md: 0 2px 3px -1px rgb(0 0 0 / 0.4);
1268
+ --shadow-lg: 0 4px 6px -1px rgb(0 0 0 / 0.5);
1269
+ --shadow-xl: 0 8px 10px -3px rgb(0 0 0 / 0.5);
1270
+ }
1271
+
1272
+ .dark .j-shadow-md {
1273
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.25);
1274
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.35);
1275
+ --shadow-md: 0 4px 6px -2px rgb(0 0 0 / 0.45);
1276
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.5);
1277
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.55);
1278
+ }
1279
+
1280
+ .dark .j-shadow-lg {
1281
+ --shadow-xs: 0 1px 3px 0 rgb(0 0 0 / 0.3);
1282
+ --shadow-sm: 0 2px 4px 0 rgb(0 0 0 / 0.4);
1283
+ --shadow-md: 0 4px 8px -2px rgb(0 0 0 / 0.55);
1284
+ --shadow-lg: 0 12px 20px -4px rgb(0 0 0 / 0.6);
1285
+ --shadow-xl: 0 24px 38px -6px rgb(0 0 0 / 0.65);
1286
+ }
1287
+
1288
+
1289
+ /* ============================================
1290
+ 9. Font Themes
1291
+ ============================================ */
1292
+
1293
+ .j-font-sm {
1294
+ --font-size-xs: 0.625rem;
1295
+ --font-size-sm: 0.75rem;
1296
+ --font-size-md: 0.875rem;
1297
+ --font-size-lg: 1rem;
1298
+ --font-size-xl: 1.125rem;
1299
+ --font-size-2xl: 1.25rem;
1300
+ --el-height-3xs: 1rem;
1301
+ --el-height-2xs: 1.25rem;
1302
+ --el-height-xs: 1.5rem;
1303
+ --el-height-sm: 1.75rem;
1304
+ --el-height-md: 2rem;
1305
+ --el-height-lg: 2.25rem;
1306
+ --el-height-xl: 2.5rem;
1307
+ }
1308
+
1309
+ .j-font-md {
1310
+ --font-size-xs: 0.75rem;
1311
+ --font-size-sm: 0.875rem;
1312
+ --font-size-md: 1rem;
1313
+ --font-size-lg: 1.125rem;
1314
+ --font-size-xl: 1.25rem;
1315
+ --font-size-2xl: 1.5rem;
1316
+ --el-height-3xs: 1.25rem;
1317
+ --el-height-2xs: 1.5rem;
1318
+ --el-height-xs: 1.75rem;
1319
+ --el-height-sm: 2rem;
1320
+ --el-height-md: 2.25rem;
1321
+ --el-height-lg: 2.5rem;
1322
+ --el-height-xl: 2.75rem;
1323
+ }
1324
+ }