@24vlh/vds 0.1.9 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/components/action-bar.css +111 -0
  2. package/dist/components/action-bar.min.css +1 -0
  3. package/dist/components/authoring.css +262 -42
  4. package/dist/components/authoring.min.css +1 -1
  5. package/dist/components/avatar.css +229 -0
  6. package/dist/components/avatar.min.css +1 -0
  7. package/dist/components/badge-tag.css +235 -0
  8. package/dist/components/badge-tag.min.css +1 -0
  9. package/dist/components/buttons.css +90 -98
  10. package/dist/components/buttons.min.css +1 -1
  11. package/dist/components/command.css +846 -2
  12. package/dist/components/command.min.css +1 -1
  13. package/dist/components/content-blocks.css +328 -6
  14. package/dist/components/content-blocks.min.css +1 -1
  15. package/dist/components/description-list.css +117 -0
  16. package/dist/components/description-list.min.css +1 -0
  17. package/dist/components/feedback.css +106 -4
  18. package/dist/components/feedback.min.css +1 -1
  19. package/dist/components/flows.css +60 -47
  20. package/dist/components/flows.min.css +1 -1
  21. package/dist/components/forms-advanced.css +575 -4
  22. package/dist/components/forms-advanced.min.css +1 -1
  23. package/dist/components/forms.css +244 -0
  24. package/dist/components/forms.min.css +1 -1
  25. package/dist/components/guidance.css +989 -0
  26. package/dist/components/guidance.min.css +1 -0
  27. package/dist/components/header-footer.css +178 -18
  28. package/dist/components/header-footer.min.css +1 -1
  29. package/dist/components/hero.css +148 -14
  30. package/dist/components/hero.min.css +1 -1
  31. package/dist/components/icons.css +23 -11
  32. package/dist/components/icons.min.css +1 -1
  33. package/dist/components/navigation.css +67 -7
  34. package/dist/components/navigation.min.css +1 -1
  35. package/dist/components/overlays.css +121 -19
  36. package/dist/components/overlays.min.css +1 -1
  37. package/dist/components/progress.css +322 -0
  38. package/dist/components/progress.min.css +1 -0
  39. package/dist/components/sections.css +181 -41
  40. package/dist/components/sections.min.css +1 -1
  41. package/dist/components/skeleton.css +22 -3
  42. package/dist/components/skeleton.min.css +1 -1
  43. package/dist/components/state.css +172 -0
  44. package/dist/components/state.min.css +1 -0
  45. package/dist/components/tables.css +93 -15
  46. package/dist/components/tables.min.css +1 -1
  47. package/dist/components/tabs.css +116 -4
  48. package/dist/components/tabs.min.css +1 -1
  49. package/dist/components/toasts.css +115 -41
  50. package/dist/components/toasts.min.css +1 -1
  51. package/dist/components/tooltips-popovers.css +135 -93
  52. package/dist/components/tooltips-popovers.min.css +1 -1
  53. package/dist/components/utilities.css +33 -3
  54. package/dist/components/utilities.min.css +1 -1
  55. package/dist/core.css +43 -21
  56. package/dist/core.min.css +1 -1
  57. package/dist/identity.css +107 -1
  58. package/dist/identity.min.css +1 -1
  59. package/dist/vds.css +10058 -4141
  60. package/dist/vds.min.css +1 -1
  61. package/package.json +1 -1
@@ -33,13 +33,14 @@
33
33
  border-radius: var(--radius-md);
34
34
  border-width: var(--border-width);
35
35
  border-style: solid;
36
+ --button-text-color: var(--color-text);
36
37
  font-family: inherit;
37
38
  font-size: var(--text-sm);
38
39
  font-weight: var(--font-weight-medium);
39
40
  line-height: var(--line-height-xl-tight);
40
41
  background: var(--color-surface);
41
42
  border-color: var(--color-border-subtle);
42
- color: var(--color-text);
43
+ color: var(--button-text-color);
43
44
  cursor: pointer;
44
45
  -webkit-text-decoration: none;
45
46
  text-decoration: none;
@@ -87,6 +88,17 @@
87
88
  2. SIZE SCALE
88
89
  --------------------------------------------------------- */
89
90
 
91
+ .button--xs {
92
+ padding-top: var(--space-1_5);
93
+ padding-bottom: var(--space-1_5);
94
+ padding-left: var(--space-2_5);
95
+ padding-right: var(--space-2_5);
96
+ border-radius: var(--radius-sm);
97
+ font-size: var(--text-xs);
98
+ font-weight: var(--font-weight-semibold);
99
+ gap: var(--space-1_5);
100
+ }
101
+
90
102
  .button--sm {
91
103
  padding-top: var(--space-1_5);
92
104
  padding-bottom: var(--space-1_5);
@@ -127,7 +139,8 @@
127
139
  height: 100%;
128
140
  }
129
141
 
130
- .button--icon {
142
+ .button--icon,
143
+ .button--icon-only {
131
144
  padding: var(--space-2);
132
145
  min-width: var(--space-8);
133
146
  min-height: var(--space-8);
@@ -141,12 +154,14 @@
141
154
  justify-content: center;
142
155
  }
143
156
 
144
- .button__icon--left {
145
- margin-right: var(--space-2);
146
- }
157
+ @supports not (gap: 1rem) {
158
+ .button__icon--left {
159
+ margin-right: var(--space-2);
160
+ }
147
161
 
148
- .button__icon--right {
149
- margin-left: var(--space-2);
162
+ .button__icon--right {
163
+ margin-left: var(--space-2);
164
+ }
150
165
  }
151
166
 
152
167
  /* ---------------------------------------------------------
@@ -156,7 +171,7 @@
156
171
  .button--primary {
157
172
  background: var(--color-accent);
158
173
  border-color: var(--color-accent-strong);
159
- color: var(--color-on-accent);
174
+ --button-text-color: var(--color-on-accent);
160
175
  }
161
176
 
162
177
  .button--primary:hover:not(:disabled):not([aria-disabled="true"]) {
@@ -182,7 +197,7 @@
182
197
  .button--secondary {
183
198
  background: var(--color-surface);
184
199
  border-color: var(--color-border-subtle);
185
- color: var(--color-text);
200
+ --button-text-color: var(--color-text);
186
201
  }
187
202
 
188
203
  .button--secondary:hover:not(:disabled):not([aria-disabled="true"]) {
@@ -203,7 +218,7 @@
203
218
  .button--soft {
204
219
  background-color: var(--color-surface-subtle);
205
220
  border-color: var(--button-soft-border, var(--color-border-subtle));
206
- color: var(--button-soft-text, var(--color-text));
221
+ --button-text-color: var(--button-soft-text, var(--color-text));
207
222
  }
208
223
 
209
224
  .button--soft:hover:not(:disabled):not([aria-disabled="true"]) {
@@ -224,7 +239,7 @@
224
239
  .button--ghost {
225
240
  background: transparent;
226
241
  border-color: transparent;
227
- color: var(--color-text);
242
+ --button-text-color: var(--color-text);
228
243
  }
229
244
 
230
245
  .button--ghost:hover:not(:disabled):not([aria-disabled="true"]) {
@@ -245,17 +260,17 @@
245
260
  .button--subtle {
246
261
  background: transparent;
247
262
  border-color: transparent;
248
- color: var(--color-text-muted);
263
+ --button-text-color: var(--color-text-muted);
249
264
  }
250
265
 
251
266
  .button--subtle:hover:not(:disabled):not([aria-disabled="true"]) {
252
267
  background: var(--color-muted-bg);
253
- color: var(--color-text);
268
+ --button-text-color: var(--color-text);
254
269
  }
255
270
 
256
271
  .button--subtle:active:not(:disabled):not([aria-disabled="true"]) {
257
272
  background: var(--color-muted-bg);
258
- color: var(--color-text);
273
+ --button-text-color: var(--color-text);
259
274
  }
260
275
 
261
276
  .button--subtle:focus-visible {
@@ -270,13 +285,13 @@
270
285
  .button--success {
271
286
  background: var(--color-success);
272
287
  border-color: var(--color-success-strong);
273
- color: var(--color-on-success);
288
+ --button-text-color: var(--color-on-success);
274
289
  }
275
290
 
276
291
  .button--success:hover:not(:disabled):not([aria-disabled="true"]) {
277
292
  background-color: var(--success-soft-surface-strong, var(--color-success-soft-hover));
278
293
  border-color: var(--color-success-strong);
279
- color: var(--success-soft-on);
294
+ --button-text-color: var(--success-soft-on);
280
295
  }
281
296
 
282
297
  .button--success:active:not(:disabled):not([aria-disabled="true"]) {
@@ -292,13 +307,13 @@
292
307
  .button--warning {
293
308
  background: var(--color-warning);
294
309
  border-color: var(--color-warning-strong);
295
- color: var(--color-on-warning);
310
+ --button-text-color: var(--color-on-warning);
296
311
  }
297
312
 
298
313
  .button--warning:hover:not(:disabled):not([aria-disabled="true"]) {
299
314
  background-color: var(--warning-soft-surface-strong, var(--color-warning-soft-hover));
300
315
  border-color: var(--color-warning-strong);
301
- color: var(--warning-soft-on);
316
+ --button-text-color: var(--warning-soft-on);
302
317
  }
303
318
 
304
319
  .button--warning:active:not(:disabled):not([aria-disabled="true"]) {
@@ -314,13 +329,13 @@
314
329
  .button--info {
315
330
  background: var(--color-info);
316
331
  border-color: var(--color-info-strong);
317
- color: var(--color-on-info);
332
+ --button-text-color: var(--color-on-info);
318
333
  }
319
334
 
320
335
  .button--info:hover:not(:disabled):not([aria-disabled="true"]) {
321
336
  background-color: var(--info-soft-surface-strong, var(--color-info-soft-hover));
322
337
  border-color: var(--color-info-strong);
323
- color: var(--info-soft-on);
338
+ --button-text-color: var(--info-soft-on);
324
339
  }
325
340
 
326
341
  .button--info:active:not(:disabled):not([aria-disabled="true"]) {
@@ -336,13 +351,13 @@
336
351
  .button--danger {
337
352
  background: var(--color-danger);
338
353
  border-color: var(--color-danger-strong);
339
- color: var(--color-on-danger);
354
+ --button-text-color: var(--color-on-danger);
340
355
  }
341
356
 
342
357
  .button--danger:hover:not(:disabled):not([aria-disabled="true"]) {
343
358
  background-color: var(--danger-soft-surface-strong, var(--color-danger-soft-hover));
344
359
  border-color: var(--color-danger-strong);
345
- color: var(--danger-soft-on);
360
+ --button-text-color: var(--danger-soft-on);
346
361
  }
347
362
 
348
363
  .button--danger:active:not(:disabled):not([aria-disabled="true"]) {
@@ -356,13 +371,38 @@
356
371
  }
357
372
 
358
373
  /* ---------------------------------------------------------
359
- 6. OUTLINE VARIANTS
374
+ 6. NEUTRAL (SOFT SURFACE)
375
+ --------------------------------------------------------- */
376
+
377
+ .button--neutral {
378
+ background: var(--color-surface-subtle);
379
+ border-color: var(--color-border-subtle);
380
+ --button-text-color: var(--color-text-on-soft, var(--color-text));
381
+ }
382
+
383
+ .button--neutral:hover:not(:disabled):not([aria-disabled="true"]) {
384
+ background: var(--color-surface-hover);
385
+ border-color: var(--color-border-strong, var(--color-border-subtle));
386
+ }
387
+
388
+ .button--neutral:active:not(:disabled):not([aria-disabled="true"]) {
389
+ background: var(--color-surface-hover);
390
+ border-color: var(--color-border-strong, var(--color-border-subtle));
391
+ }
392
+
393
+ .button--neutral:focus-visible {
394
+ box-shadow: 0 0 0 1px var(--color-surface),
395
+ 0 0 0 3px var(--focus-ring-color, var(--color-accent-soft));
396
+ }
397
+
398
+ /* ---------------------------------------------------------
399
+ 7. OUTLINE VARIANTS
360
400
  --------------------------------------------------------- */
361
401
 
362
402
  .button--outline {
363
403
  background: transparent;
364
404
  border-color: var(--color-border-subtle);
365
- color: var(--color-text);
405
+ --button-text-color: var(--color-text);
366
406
  }
367
407
 
368
408
  .button--outline:hover:not(:disabled):not([aria-disabled="true"]) {
@@ -383,7 +423,7 @@
383
423
  .button--outline-accent {
384
424
  background: transparent;
385
425
  border-color: var(--color-accent);
386
- color: var(--color-accent);
426
+ --button-text-color: var(--color-accent);
387
427
  }
388
428
 
389
429
  .button--outline-accent:hover:not(:disabled):not([aria-disabled="true"]) {
@@ -404,7 +444,7 @@
404
444
  .button--outline-danger {
405
445
  background: transparent;
406
446
  border-color: var(--color-danger);
407
- color: var(--color-danger);
447
+ --button-text-color: var(--color-danger);
408
448
  }
409
449
 
410
450
  .button--outline-danger:hover:not(:disabled):not([aria-disabled="true"]) {
@@ -425,7 +465,7 @@
425
465
  .button--outline-success {
426
466
  background: transparent;
427
467
  border-color: var(--color-success);
428
- color: var(--color-success);
468
+ --button-text-color: var(--color-success);
429
469
  }
430
470
 
431
471
  .button--outline-success:hover:not(:disabled):not([aria-disabled="true"]) {
@@ -446,7 +486,7 @@
446
486
  .button--outline-warning {
447
487
  background: transparent;
448
488
  border-color: var(--color-warning);
449
- color: var(--color-warning);
489
+ --button-text-color: var(--color-warning);
450
490
  }
451
491
 
452
492
  .button--outline-warning:hover:not(:disabled):not([aria-disabled="true"]) {
@@ -467,7 +507,7 @@
467
507
  .button--outline-info {
468
508
  background: transparent;
469
509
  border-color: var(--color-info);
470
- color: var(--color-info);
510
+ --button-text-color: var(--color-info);
471
511
  }
472
512
 
473
513
  .button--outline-info:hover:not(:disabled):not([aria-disabled="true"]) {
@@ -486,13 +526,13 @@
486
526
  }
487
527
 
488
528
  /* ---------------------------------------------------------
489
- 7. LINK BUTTON
529
+ 8. LINK BUTTON
490
530
  --------------------------------------------------------- */
491
531
 
492
532
  .button--link {
493
533
  background: transparent;
494
- border-color: transparent;
495
- color: var(--color-accent);
534
+ border: 0;
535
+ --button-text-color: var(--color-accent);
496
536
  padding-left: 0;
497
537
  padding-right: 0;
498
538
  padding-top: 0;
@@ -528,7 +568,7 @@
528
568
  }
529
569
 
530
570
  /* ---------------------------------------------------------
531
- 8. LOADING STATE
571
+ 9. LOADING STATE
532
572
  --------------------------------------------------------- */
533
573
 
534
574
  .button--loading {
@@ -568,7 +608,7 @@
568
608
  }
569
609
 
570
610
  /* ---------------------------------------------------------
571
- 9. REDUCED MOTION
611
+ 10. REDUCED MOTION
572
612
  --------------------------------------------------------- */
573
613
 
574
614
  @media (prefers-reduced-motion: reduce) {
@@ -583,7 +623,7 @@
583
623
  }
584
624
 
585
625
  /* ---------------------------------------------------------
586
- 10. HELPERS
626
+ 11. HELPERS
587
627
  --------------------------------------------------------- */
588
628
 
589
629
  .button--contrast-hover:hover:not(:disabled):not([aria-disabled="true"]) {
@@ -591,15 +631,23 @@
591
631
  border-color: currentColor;
592
632
  }
593
633
 
634
+ .button--lift:hover:not(:disabled):not([aria-disabled="true"]) {
635
+ transform: translateY(-1px);
636
+ }
637
+
638
+ .button--lift:active:not(:disabled):not([aria-disabled="true"]) {
639
+ transform: translateY(0);
640
+ }
641
+
594
642
  /* ---------------------------------------------------------
595
- 11. LINK RESETS
643
+ 12. LINK RESETS
596
644
  --------------------------------------------------------- */
597
645
 
598
646
  a.button,
599
647
  a.button:hover,
600
648
  a.button:focus,
601
649
  a.button:active {
602
- color: inherit;
650
+ color: var(--button-text-color, var(--color-text));
603
651
  -webkit-text-decoration: none;
604
652
  text-decoration: none;
605
653
  }
@@ -614,67 +662,11 @@ a.button[aria-disabled="true"]:active {
614
662
  text-decoration: none;
615
663
  }
616
664
 
617
- a.button--primary,
618
- a.button--primary:hover,
619
- a.button--primary:focus,
620
- a.button--primary:active {
621
- color: var(--color-on-accent);
622
- }
623
-
624
- a.button--secondary,
625
- a.button--secondary:hover,
626
- a.button--secondary:focus,
627
- a.button--secondary:active {
628
- color: var(--color-accent-strong);
629
- }
630
-
631
- a.button--ghost,
632
- a.button--ghost:hover,
633
- a.button--ghost:focus,
634
- a.button--ghost:active {
635
- color: var(--color-accent-soft);
636
- }
637
-
638
- a.button--subtle,
639
- a.button--subtle:hover,
640
- a.button--subtle:focus,
641
- a.button--subtle:active {
642
- color: var(--color-text);
643
- }
644
-
645
- a.button--neutral,
646
- a.button--neutral:hover,
647
- a.button--neutral:focus,
648
- a.button--neutral:active {
649
- color: var(--color-text-on-soft);
650
- }
651
-
652
- a.button--danger,
653
- a.button--danger:hover,
654
- a.button--danger:focus,
655
- a.button--danger:active {
656
- color: var(--color-on-danger);
657
- }
658
-
659
- a.button--warning,
660
- a.button--warning:hover,
661
- a.button--warning:focus,
662
- a.button--warning:active {
663
- color: var(--color-on-warning);
664
- }
665
-
666
- a.button--success,
667
- a.button--success:hover,
668
- a.button--success:focus,
669
- a.button--success:active {
670
- color: var(--color-on-success);
671
- }
672
-
673
- a.button--info,
674
- a.button--info:hover,
675
- a.button--info:focus,
676
- a.button--info:active {
677
- color: var(--color-on-info);
665
+ a.button--link:hover,
666
+ a.button--link:focus,
667
+ a.button--link:active {
668
+ -webkit-text-decoration: underline;
669
+ text-decoration: underline;
678
670
  }
679
671
 
680
672
  a.button:hover {
@@ -1 +1 @@
1
- .button{align-items:center;background:var(--color-surface);border-color:var(--color-border-subtle);border-radius:var(--radius-md);border-style:solid;border-width:var(--border-width);color:var(--color-text);cursor:pointer;display:inline-flex;font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-medium);gap:var(--space-2);justify-content:center;line-height:var(--line-height-xl-tight);padding:var(--space-2_5) var(--space-5);-webkit-text-decoration:none;text-decoration:none;transition:background-color var(--transition-normal),border-color var(--transition-normal),color var(--transition-normal),box-shadow var(--transition-normal),transform var(--transition-fast);-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:normal}.button:focus-visible{box-shadow:0 0 0 1px var(--color-surface),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft));outline:none}.button:active:not(:disabled):not([aria-disabled=true]),.button:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-surface-subtle,var(--color-muted-bg))}.button:active:not(:disabled):not([aria-disabled=true]){border-color:var(--color-border-strong,var(--color-border-subtle));transform:translateY(1px)}.button:disabled,.button[aria-disabled=true]{background-color:var(--color-surface-subtle);border-color:var(--color-border-subtle);box-shadow:none;color:var(--color-text-muted);cursor:not-allowed;opacity:.6;transform:none}.button--selected,.button[aria-pressed=true]{box-shadow:0 0 0 1px var(--color-surface),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--sm{padding:var(--space-1_5) var(--space-3)}.button--md{padding:var(--space-2_5) var(--space-5)}.button--lg{padding:var(--space-3_5) var(--space-7)}.button--nowrap{white-space:nowrap}.button--block{align-items:center;display:flex;justify-content:center;width:100%}.button--full-height{height:100%}.button--icon{border-radius:var(--radius-full);min-height:var(--space-8);min-width:var(--space-8);padding:var(--space-2)}.button__icon{align-items:center;display:inline-flex;flex-shrink:0;justify-content:center}.button__icon--left{margin-right:var(--space-2)}.button__icon--right{margin-left:var(--space-2)}.button--primary{background:var(--color-accent);border-color:var(--color-accent-strong);color:var(--color-on-accent)}.button--primary:active:not(:disabled):not([aria-disabled=true]),.button--primary:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-accent-strong);border-color:var(--color-accent-strong)}.button--primary:focus-visible{box-shadow:0 0 0 1px var(--color-accent-strong),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--primary:active:focus-visible{box-shadow:0 0 0 1px var(--color-accent-strong),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--secondary{background:var(--color-surface);border-color:var(--color-border-subtle);color:var(--color-text)}.button--secondary:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-surface-subtle,var(--color-muted-bg));border-color:var(--color-border-subtle)}.button--secondary:active:not(:disabled):not([aria-disabled=true]){background:var(--color-surface-subtle,var(--color-muted-bg));border-color:var(--color-border-strong,var(--color-border-subtle))}.button--secondary:focus-visible{box-shadow:0 0 0 1px var(--color-surface),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--soft{background-color:var(--color-surface-subtle);border-color:var(--button-soft-border,var(--color-border-subtle));color:var(--button-soft-text,var(--color-text))}.button--soft:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-accent-soft-hover,var(--color-accent-soft));border-color:var(--button-soft-border-hover,var(--color-border-strong))}.button--soft:active:not(:disabled):not([aria-disabled=true]){background:var(--color-accent-soft-hover,var(--color-accent-soft));border-color:transparent}.button--soft:focus-visible{box-shadow:0 0 0 1px var(--color-accent-soft),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--ghost{background:transparent;border-color:transparent;color:var(--color-text)}.button--ghost:active:not(:disabled):not([aria-disabled=true]),.button--ghost:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-muted-bg);border-color:transparent}.button--ghost:focus-visible{box-shadow:0 0 0 1px var(--color-muted-bg),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--subtle{background:transparent;border-color:transparent;color:var(--color-text-muted)}.button--subtle:active:not(:disabled):not([aria-disabled=true]),.button--subtle:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-muted-bg);color:var(--color-text)}.button--subtle:focus-visible{box-shadow:0 0 0 1px var(--color-muted-bg),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--success{background:var(--color-success);border-color:var(--color-success-strong);color:var(--color-on-success)}.button--success:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--success-soft-surface-strong,var(--color-success-soft-hover));border-color:var(--color-success-strong);color:var(--success-soft-on)}.button--success:active:not(:disabled):not([aria-disabled=true]){background:var(--color-success-strong);border-color:var(--color-success-strong)}.button--success:focus-visible{box-shadow:0 0 0 1px var(--color-success-strong),0 0 0 3px var(--focus-ring-color,var(--color-success-soft))}.button--warning{background:var(--color-warning);border-color:var(--color-warning-strong);color:var(--color-on-warning)}.button--warning:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--warning-soft-surface-strong,var(--color-warning-soft-hover));border-color:var(--color-warning-strong);color:var(--warning-soft-on)}.button--warning:active:not(:disabled):not([aria-disabled=true]){background:var(--color-warning-strong);border-color:var(--color-warning-strong)}.button--warning:focus-visible{box-shadow:0 0 0 1px var(--color-warning-strong),0 0 0 3px var(--focus-ring-color,var(--color-warning-soft))}.button--info{background:var(--color-info);border-color:var(--color-info-strong);color:var(--color-on-info)}.button--info:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--info-soft-surface-strong,var(--color-info-soft-hover));border-color:var(--color-info-strong);color:var(--info-soft-on)}.button--info:active:not(:disabled):not([aria-disabled=true]){background:var(--color-info-strong);border-color:var(--color-info-strong)}.button--info:focus-visible{box-shadow:0 0 0 1px var(--color-info-strong),0 0 0 3px var(--focus-ring-color,var(--color-info-soft))}.button--danger{background:var(--color-danger);border-color:var(--color-danger-strong);color:var(--color-on-danger)}.button--danger:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--danger-soft-surface-strong,var(--color-danger-soft-hover));border-color:var(--color-danger-strong);color:var(--danger-soft-on)}.button--danger:active:not(:disabled):not([aria-disabled=true]){background:var(--color-danger-strong);border-color:var(--color-danger-strong)}.button--danger:focus-visible{box-shadow:0 0 0 1px var(--color-danger-strong),0 0 0 3px var(--focus-ring-color,var(--color-danger-soft))}.button--outline{background:transparent;border-color:var(--color-border-subtle);color:var(--color-text)}.button--outline:active:not(:disabled):not([aria-disabled=true]),.button--outline:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-surface-subtle,var(--color-muted-bg));border-color:var(--color-border-strong,var(--color-border-subtle))}.button--outline:focus-visible{box-shadow:0 0 0 1px var(--color-border-strong,var(--color-border-subtle)),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--outline-accent{background:transparent;border-color:var(--color-accent);color:var(--color-accent)}.button--outline-accent:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--button-outline-accent-hover-bg);border-color:var(--button-outline-accent-hover-border,var(--color-accent-strong))}.button--outline-accent:active:not(:disabled):not([aria-disabled=true]){background:var(--color-accent-soft);border-color:var(--color-accent-strong)}.button--outline-accent:focus-visible{box-shadow:0 0 0 1px var(--color-accent-strong),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--outline-danger{background:transparent;border-color:var(--color-danger);color:var(--color-danger)}.button--outline-danger:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--button-outline-danger-hover-bg);border-color:var(--button-outline-danger-hover-border,var(--color-danger-strong))}.button--outline-danger:active:not(:disabled):not([aria-disabled=true]){background:var(--color-danger-soft);border-color:var(--color-danger-strong)}.button--outline-danger:focus-visible{box-shadow:0 0 0 1px var(--color-danger-strong),0 0 0 3px var(--focus-ring-color,var(--color-danger-soft))}.button--outline-success{background:transparent;border-color:var(--color-success);color:var(--color-success)}.button--outline-success:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--button-outline-success-hover-bg);border-color:var(--button-outline-success-hover-border,var(--color-success-strong))}.button--outline-success:active:not(:disabled):not([aria-disabled=true]){background:var(--color-success-soft);border-color:var(--color-success-strong)}.button--outline-success:focus-visible{box-shadow:0 0 0 1px var(--color-success-strong),0 0 0 3px var(--focus-ring-color,var(--color-success-soft))}.button--outline-warning{background:transparent;border-color:var(--color-warning);color:var(--color-warning)}.button--outline-warning:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--button-outline-warning-hover-bg);border-color:var(--button-outline-warning-hover-border,var(--color-warning-strong))}.button--outline-warning:active:not(:disabled):not([aria-disabled=true]){background:var(--color-warning-soft);border-color:var(--color-warning-strong)}.button--outline-warning:focus-visible{box-shadow:0 0 0 1px var(--color-warning-strong),0 0 0 3px var(--focus-ring-color,var(--color-warning-soft))}.button--outline-info{background:transparent;border-color:var(--color-info);color:var(--color-info)}.button--outline-info:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--button-outline-info-hover-bg);border-color:var(--button-outline-info-hover-border,var(--color-info-strong))}.button--outline-info:active:not(:disabled):not([aria-disabled=true]){background:var(--color-info-soft);border-color:var(--color-info-strong)}.button--outline-info:focus-visible{box-shadow:0 0 0 1px var(--color-info-strong),0 0 0 3px var(--focus-ring-color,var(--color-info-soft))}.button--link{background:transparent;border-color:transparent;color:var(--color-accent);font-weight:500;padding:0}.button--link:active:not(:disabled):not([aria-disabled=true]),.button--link:hover:not(:disabled):not([aria-disabled=true]){background:transparent;-webkit-text-decoration:underline;text-decoration:underline}.button--link:focus-visible{box-shadow:0 0 0 1px transparent,0 0 0 3px var(--focus-ring-color,var(--color-accent-soft));-webkit-text-decoration:underline;text-decoration:underline}.button--link:disabled,.button--link[aria-disabled=true]{cursor:not-allowed;opacity:.6;-webkit-text-decoration:none;text-decoration:none}.button--loading{pointer-events:none;position:relative}.button--loading>*{visibility:hidden}.button--loading:after{animation:button-spinner .8s linear infinite;border:2px solid;border-radius:50%;border-top:2px solid transparent;bottom:0;content:"";height:1em;left:0;margin:auto;position:absolute;right:0;top:0;width:1em}.button--loading:focus-visible{box-shadow:0 0 0 1px var(--color-surface),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}@keyframes button-spinner{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.button{transition:none}.button--loading:after{animation:none;border-top-color:currentColor}}.button--contrast-hover:hover:not(:disabled):not([aria-disabled=true]){background:rgba(0,0,0,.12);border-color:currentColor}a.button,a.button:active,a.button:focus,a.button:hover{color:inherit;-webkit-text-decoration:none;text-decoration:none}a.button[aria-disabled=true],a.button[aria-disabled=true]:active,a.button[aria-disabled=true]:focus,a.button[aria-disabled=true]:hover{color:var(--color-text-muted);pointer-events:none;-webkit-text-decoration:none;text-decoration:none}a.button--primary,a.button--primary:active,a.button--primary:focus,a.button--primary:hover{color:var(--color-on-accent)}a.button--secondary,a.button--secondary:active,a.button--secondary:focus,a.button--secondary:hover{color:var(--color-accent-strong)}a.button--ghost,a.button--ghost:active,a.button--ghost:focus,a.button--ghost:hover{color:var(--color-accent-soft)}a.button--subtle,a.button--subtle:active,a.button--subtle:focus,a.button--subtle:hover{color:var(--color-text)}a.button--neutral,a.button--neutral:active,a.button--neutral:focus,a.button--neutral:hover{color:var(--color-text-on-soft)}a.button--danger,a.button--danger:active,a.button--danger:focus,a.button--danger:hover{color:var(--color-on-danger)}a.button--warning,a.button--warning:active,a.button--warning:focus,a.button--warning:hover{color:var(--color-on-warning)}a.button--success,a.button--success:active,a.button--success:focus,a.button--success:hover{color:var(--color-on-success)}a.button--info,a.button--info:active,a.button--info:focus,a.button--info:hover{color:var(--color-on-info)}a.button:hover{-webkit-text-decoration:none;text-decoration:none}
1
+ .button{--button-text-color:var(--color-text);align-items:center;background:var(--color-surface);border-color:var(--color-border-subtle);border-radius:var(--radius-md);border-style:solid;border-width:var(--border-width);color:var(--button-text-color);cursor:pointer;display:inline-flex;font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-medium);gap:var(--space-2);justify-content:center;line-height:var(--line-height-xl-tight);padding:var(--space-2_5) var(--space-5);-webkit-text-decoration:none;text-decoration:none;transition:background-color var(--transition-normal),border-color var(--transition-normal),color var(--transition-normal),box-shadow var(--transition-normal),transform var(--transition-fast);-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:normal}.button:focus-visible{box-shadow:0 0 0 1px var(--color-surface),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft));outline:none}.button:active:not(:disabled):not([aria-disabled=true]),.button:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-surface-subtle,var(--color-muted-bg))}.button:active:not(:disabled):not([aria-disabled=true]){border-color:var(--color-border-strong,var(--color-border-subtle));transform:translateY(1px)}.button:disabled,.button[aria-disabled=true]{background-color:var(--color-surface-subtle);border-color:var(--color-border-subtle);box-shadow:none;color:var(--color-text-muted);cursor:not-allowed;opacity:.6;transform:none}.button--selected,.button[aria-pressed=true]{box-shadow:0 0 0 1px var(--color-surface),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--xs{border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);gap:var(--space-1_5);padding:var(--space-1_5) var(--space-2_5)}.button--sm{padding:var(--space-1_5) var(--space-3)}.button--md{padding:var(--space-2_5) var(--space-5)}.button--lg{padding:var(--space-3_5) var(--space-7)}.button--nowrap{white-space:nowrap}.button--block{align-items:center;display:flex;justify-content:center;width:100%}.button--full-height{height:100%}.button--icon,.button--icon-only{border-radius:var(--radius-full);min-height:var(--space-8);min-width:var(--space-8);padding:var(--space-2)}.button__icon{align-items:center;display:inline-flex;flex-shrink:0;justify-content:center}@supports not (gap:1rem){.button__icon--left{margin-right:var(--space-2)}.button__icon--right{margin-left:var(--space-2)}}.button--primary{--button-text-color:var(--color-on-accent);background:var(--color-accent);border-color:var(--color-accent-strong)}.button--primary:active:not(:disabled):not([aria-disabled=true]),.button--primary:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-accent-strong);border-color:var(--color-accent-strong)}.button--primary:focus-visible{box-shadow:0 0 0 1px var(--color-accent-strong),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--primary:active:focus-visible{box-shadow:0 0 0 1px var(--color-accent-strong),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--secondary{--button-text-color:var(--color-text);background:var(--color-surface);border-color:var(--color-border-subtle)}.button--secondary:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-surface-subtle,var(--color-muted-bg));border-color:var(--color-border-subtle)}.button--secondary:active:not(:disabled):not([aria-disabled=true]){background:var(--color-surface-subtle,var(--color-muted-bg));border-color:var(--color-border-strong,var(--color-border-subtle))}.button--secondary:focus-visible{box-shadow:0 0 0 1px var(--color-surface),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--soft{--button-text-color:var(--button-soft-text,var(--color-text));background-color:var(--color-surface-subtle);border-color:var(--button-soft-border,var(--color-border-subtle))}.button--soft:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-accent-soft-hover,var(--color-accent-soft));border-color:var(--button-soft-border-hover,var(--color-border-strong))}.button--soft:active:not(:disabled):not([aria-disabled=true]){background:var(--color-accent-soft-hover,var(--color-accent-soft));border-color:transparent}.button--soft:focus-visible{box-shadow:0 0 0 1px var(--color-accent-soft),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--ghost{--button-text-color:var(--color-text);background:transparent;border-color:transparent}.button--ghost:active:not(:disabled):not([aria-disabled=true]),.button--ghost:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-muted-bg);border-color:transparent}.button--ghost:focus-visible{box-shadow:0 0 0 1px var(--color-muted-bg),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--subtle{--button-text-color:var(--color-text-muted);background:transparent;border-color:transparent}.button--subtle:active:not(:disabled):not([aria-disabled=true]),.button--subtle:hover:not(:disabled):not([aria-disabled=true]){--button-text-color:var(--color-text);background:var(--color-muted-bg)}.button--subtle:focus-visible{box-shadow:0 0 0 1px var(--color-muted-bg),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--success{--button-text-color:var(--color-on-success);background:var(--color-success);border-color:var(--color-success-strong)}.button--success:hover:not(:disabled):not([aria-disabled=true]){--button-text-color:var(--success-soft-on);background-color:var(--success-soft-surface-strong,var(--color-success-soft-hover));border-color:var(--color-success-strong)}.button--success:active:not(:disabled):not([aria-disabled=true]){background:var(--color-success-strong);border-color:var(--color-success-strong)}.button--success:focus-visible{box-shadow:0 0 0 1px var(--color-success-strong),0 0 0 3px var(--focus-ring-color,var(--color-success-soft))}.button--warning{--button-text-color:var(--color-on-warning);background:var(--color-warning);border-color:var(--color-warning-strong)}.button--warning:hover:not(:disabled):not([aria-disabled=true]){--button-text-color:var(--warning-soft-on);background-color:var(--warning-soft-surface-strong,var(--color-warning-soft-hover));border-color:var(--color-warning-strong)}.button--warning:active:not(:disabled):not([aria-disabled=true]){background:var(--color-warning-strong);border-color:var(--color-warning-strong)}.button--warning:focus-visible{box-shadow:0 0 0 1px var(--color-warning-strong),0 0 0 3px var(--focus-ring-color,var(--color-warning-soft))}.button--info{--button-text-color:var(--color-on-info);background:var(--color-info);border-color:var(--color-info-strong)}.button--info:hover:not(:disabled):not([aria-disabled=true]){--button-text-color:var(--info-soft-on);background-color:var(--info-soft-surface-strong,var(--color-info-soft-hover));border-color:var(--color-info-strong)}.button--info:active:not(:disabled):not([aria-disabled=true]){background:var(--color-info-strong);border-color:var(--color-info-strong)}.button--info:focus-visible{box-shadow:0 0 0 1px var(--color-info-strong),0 0 0 3px var(--focus-ring-color,var(--color-info-soft))}.button--danger{--button-text-color:var(--color-on-danger);background:var(--color-danger);border-color:var(--color-danger-strong)}.button--danger:hover:not(:disabled):not([aria-disabled=true]){--button-text-color:var(--danger-soft-on);background-color:var(--danger-soft-surface-strong,var(--color-danger-soft-hover));border-color:var(--color-danger-strong)}.button--danger:active:not(:disabled):not([aria-disabled=true]){background:var(--color-danger-strong);border-color:var(--color-danger-strong)}.button--danger:focus-visible{box-shadow:0 0 0 1px var(--color-danger-strong),0 0 0 3px var(--focus-ring-color,var(--color-danger-soft))}.button--neutral{--button-text-color:var(--color-text-on-soft,var(--color-text));background:var(--color-surface-subtle);border-color:var(--color-border-subtle)}.button--neutral:active:not(:disabled):not([aria-disabled=true]),.button--neutral:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-surface-hover);border-color:var(--color-border-strong,var(--color-border-subtle))}.button--neutral:focus-visible{box-shadow:0 0 0 1px var(--color-surface),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--outline{--button-text-color:var(--color-text);background:transparent;border-color:var(--color-border-subtle)}.button--outline:active:not(:disabled):not([aria-disabled=true]),.button--outline:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-surface-subtle,var(--color-muted-bg));border-color:var(--color-border-strong,var(--color-border-subtle))}.button--outline:focus-visible{box-shadow:0 0 0 1px var(--color-border-strong,var(--color-border-subtle)),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--outline-accent{--button-text-color:var(--color-accent);background:transparent;border-color:var(--color-accent)}.button--outline-accent:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--button-outline-accent-hover-bg);border-color:var(--button-outline-accent-hover-border,var(--color-accent-strong))}.button--outline-accent:active:not(:disabled):not([aria-disabled=true]){background:var(--color-accent-soft);border-color:var(--color-accent-strong)}.button--outline-accent:focus-visible{box-shadow:0 0 0 1px var(--color-accent-strong),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}.button--outline-danger{--button-text-color:var(--color-danger);background:transparent;border-color:var(--color-danger)}.button--outline-danger:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--button-outline-danger-hover-bg);border-color:var(--button-outline-danger-hover-border,var(--color-danger-strong))}.button--outline-danger:active:not(:disabled):not([aria-disabled=true]){background:var(--color-danger-soft);border-color:var(--color-danger-strong)}.button--outline-danger:focus-visible{box-shadow:0 0 0 1px var(--color-danger-strong),0 0 0 3px var(--focus-ring-color,var(--color-danger-soft))}.button--outline-success{--button-text-color:var(--color-success);background:transparent;border-color:var(--color-success)}.button--outline-success:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--button-outline-success-hover-bg);border-color:var(--button-outline-success-hover-border,var(--color-success-strong))}.button--outline-success:active:not(:disabled):not([aria-disabled=true]){background:var(--color-success-soft);border-color:var(--color-success-strong)}.button--outline-success:focus-visible{box-shadow:0 0 0 1px var(--color-success-strong),0 0 0 3px var(--focus-ring-color,var(--color-success-soft))}.button--outline-warning{--button-text-color:var(--color-warning);background:transparent;border-color:var(--color-warning)}.button--outline-warning:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--button-outline-warning-hover-bg);border-color:var(--button-outline-warning-hover-border,var(--color-warning-strong))}.button--outline-warning:active:not(:disabled):not([aria-disabled=true]){background:var(--color-warning-soft);border-color:var(--color-warning-strong)}.button--outline-warning:focus-visible{box-shadow:0 0 0 1px var(--color-warning-strong),0 0 0 3px var(--focus-ring-color,var(--color-warning-soft))}.button--outline-info{--button-text-color:var(--color-info);background:transparent;border-color:var(--color-info)}.button--outline-info:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--button-outline-info-hover-bg);border-color:var(--button-outline-info-hover-border,var(--color-info-strong))}.button--outline-info:active:not(:disabled):not([aria-disabled=true]){background:var(--color-info-soft);border-color:var(--color-info-strong)}.button--outline-info:focus-visible{box-shadow:0 0 0 1px var(--color-info-strong),0 0 0 3px var(--focus-ring-color,var(--color-info-soft))}.button--link{--button-text-color:var(--color-accent);background:transparent;border:0;font-weight:500;padding:0}.button--link:active:not(:disabled):not([aria-disabled=true]),.button--link:hover:not(:disabled):not([aria-disabled=true]){background:transparent;-webkit-text-decoration:underline;text-decoration:underline}.button--link:focus-visible{box-shadow:0 0 0 1px transparent,0 0 0 3px var(--focus-ring-color,var(--color-accent-soft));-webkit-text-decoration:underline;text-decoration:underline}.button--link:disabled,.button--link[aria-disabled=true]{cursor:not-allowed;opacity:.6;-webkit-text-decoration:none;text-decoration:none}.button--loading{pointer-events:none;position:relative}.button--loading>*{visibility:hidden}.button--loading:after{animation:button-spinner .8s linear infinite;border:2px solid;border-radius:50%;border-top:2px solid transparent;bottom:0;content:"";height:1em;left:0;margin:auto;position:absolute;right:0;top:0;width:1em}.button--loading:focus-visible{box-shadow:0 0 0 1px var(--color-surface),0 0 0 3px var(--focus-ring-color,var(--color-accent-soft))}@keyframes button-spinner{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.button{transition:none}.button--loading:after{animation:none;border-top-color:currentColor}}.button--contrast-hover:hover:not(:disabled):not([aria-disabled=true]){background:rgba(0,0,0,.12);border-color:currentColor}.button--lift:hover:not(:disabled):not([aria-disabled=true]){transform:translateY(-1px)}.button--lift:active:not(:disabled):not([aria-disabled=true]){transform:translateY(0)}a.button,a.button:active,a.button:focus,a.button:hover{color:var(--button-text-color,var(--color-text));-webkit-text-decoration:none;text-decoration:none}a.button[aria-disabled=true],a.button[aria-disabled=true]:active,a.button[aria-disabled=true]:focus,a.button[aria-disabled=true]:hover{color:var(--color-text-muted);pointer-events:none;-webkit-text-decoration:none;text-decoration:none}a.button--link:active,a.button--link:focus,a.button--link:hover{-webkit-text-decoration:underline;text-decoration:underline}a.button:hover{-webkit-text-decoration:none;text-decoration:none}