vanilla-jui 1.7.29 → 1.7.31

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