@threadlabs/looma 0.26.4 → 0.26.5

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.
@@ -312,6 +312,10 @@ svg[data-v-abaeb064] {
312
312
  syntax: "*";
313
313
  inherits: false;
314
314
  }
315
+ @property --ui-badge-circle-opacity {
316
+ syntax: "*";
317
+ inherits: false;
318
+ }
315
319
  @property --ui-badge-dot-size {
316
320
  syntax: "*";
317
321
  inherits: false;
@@ -356,7 +360,7 @@ svg[data-v-abaeb064] {
356
360
  syntax: "*";
357
361
  inherits: false;
358
362
  }
359
- [data-component~="ui-badge"][data-v-4d2f1396] {
363
+ [data-component~="ui-badge"][data-v-57826cf9] {
360
364
  --_badge-surface: color-mix(in srgb, var(--ui-surface-subtle) 80%, var(--ui-surface-default));
361
365
  --_badge-text: var(--ui-text-secondary);
362
366
  /* Sit between the soft fill and its stronger theme ink. */
@@ -402,27 +406,27 @@ svg[data-v-abaeb064] {
402
406
 
403
407
  /* A constrained badge keeps its surface intact and ellipsizes only its label. The full
404
408
  text stays in the DOM for accessible names and consumers' selected values. */
405
- .label[data-v-4d2f1396] {
409
+ .label[data-v-57826cf9] {
406
410
  display: block;
407
411
  min-inline-size: 0;
408
412
  overflow: hidden;
409
413
  text-overflow: ellipsis;
410
414
  }
411
- .label[data-v-4d2f1396]:empty {
415
+ .label[data-v-57826cf9]:empty {
412
416
  display: none;
413
417
  }
414
418
 
415
419
  /* Icon content has its own flex item so label ellipsis never clips its strokes. */
416
- .icon[data-v-4d2f1396] {
420
+ .icon[data-v-57826cf9] {
417
421
  display: inline-flex;
418
422
  align-items: center;
419
423
  justify-content: center;
420
424
  flex: none;
421
425
  }
422
- .icon[data-v-4d2f1396]:empty {
426
+ .icon[data-v-57826cf9]:empty {
423
427
  display: none;
424
428
  }
425
- .icon svg[data-v-4d2f1396-s] {
429
+ .icon svg[data-v-57826cf9-s] {
426
430
  display: block;
427
431
  inline-size: 1em;
428
432
  block-size: 1em;
@@ -430,39 +434,39 @@ svg[data-v-abaeb064] {
430
434
  }
431
435
 
432
436
  /* Ordinary icon-plus-text children keep inline ellipsis, with explicit glyph spacing. */
433
- .label svg[data-v-4d2f1396-s] {
437
+ .label svg[data-v-57826cf9-s] {
434
438
  inline-size: 1em;
435
439
  block-size: 1em;
436
440
  vertical-align: middle;
437
441
  margin-inline-end: var(--ui-space-1);
438
442
  }
439
- .label[data-v-4d2f1396]:has(svg) {
443
+ .label[data-v-57826cf9]:has(svg) {
440
444
  text-box-trim: none;
441
445
  }
442
446
 
443
447
  /* Center the capital/baseline text box, while clipping only inline overflow for ellipsis.
444
448
  Vertical ink remains visible so trimming never cuts off ascenders or descenders. */
445
449
  @supports (text-box-trim: trim-both) {
446
- [data-component~="ui-badge"][data-v-4d2f1396] {
450
+ [data-component~="ui-badge"][data-v-57826cf9] {
447
451
  display: inline-block;
448
452
  min-block-size: var(--ui-badge-min-block-size, 1.5rem);
449
453
  text-align: center;
450
454
  align-content: center;
451
455
  text-box-trim: none;
452
456
  }
453
- [data-component~="ui-badge"][data-v-4d2f1396]:has(.icon:not(:empty)),
454
- [data-component~="ui-badge"][data-v-4d2f1396]:has(.label svg) {
457
+ [data-component~="ui-badge"][data-v-57826cf9]:has(.icon:not(:empty)),
458
+ [data-component~="ui-badge"][data-v-57826cf9]:has(.label svg) {
455
459
  display: inline-flex;
456
460
  text-box-trim: none;
457
461
  }
458
- .label[data-v-4d2f1396]:not(:has(svg)) {
462
+ .label[data-v-57826cf9]:not(:has(svg)) {
459
463
  text-box-trim: trim-both;
460
464
  text-box-edge: cap alphabetic;
461
465
  overflow-x: clip;
462
466
  overflow-y: visible;
463
467
  }
464
468
  }
465
- [data-component~="ui-badge"][data-ui-badge-state~="size=xs"][data-v-4d2f1396] {
469
+ [data-component~="ui-badge"][data-ui-badge-state~="size=xs"][data-v-57826cf9] {
466
470
  box-sizing: border-box;
467
471
  min-inline-size: 1rem;
468
472
  min-block-size: var(--ui-badge-min-block-size, 1rem);
@@ -470,52 +474,56 @@ svg[data-v-abaeb064] {
470
474
  font-size: var(--ui-badge-font-size, var(--ui-font-size-2xs));
471
475
  line-height: var(--ui-badge-line-height, 1);
472
476
  }
473
- [data-component~="ui-badge"][data-ui-badge-state~="tone=accent"][data-v-4d2f1396] {
477
+ [data-component~="ui-badge"][data-ui-badge-state~="size=sm"][data-v-57826cf9] {
478
+ font-size: var(--ui-badge-font-size, var(--ui-font-size-2xs));
479
+ line-height: var(--ui-badge-line-height, 1);
480
+ }
481
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=accent"][data-v-57826cf9] {
474
482
  --_badge-surface: var(--ui-accent-strong-surface, var(--ui-accent-solid));
475
483
  --_badge-border: var(--ui-accent-strong-surface, var(--ui-accent-solid));
476
484
  --_badge-text: var(--ui-accent-on-strong, var(--ui-text-on-accent));
477
485
  }
478
- [data-component~="ui-badge"][data-ui-badge-state~="tone=danger"][data-v-4d2f1396] {
486
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=danger"][data-v-57826cf9] {
479
487
  --_badge-surface: var(--ui-danger-strong-surface, var(--ui-danger-solid));
480
488
  --_badge-border: var(--ui-danger-strong-surface, var(--ui-danger-solid));
481
489
  --_badge-text: var(--ui-danger-on-strong, var(--ui-text-on-accent));
482
490
  }
483
- [data-component~="ui-badge"][data-ui-badge-state~="tone=success"][data-v-4d2f1396] {
491
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=success"][data-v-57826cf9] {
484
492
  --_badge-surface: var(--ui-success-strong-surface, var(--ui-success-solid));
485
493
  --_badge-border: var(--ui-success-strong-surface, var(--ui-success-solid));
486
494
  --_badge-text: var(--ui-success-on-strong, var(--ui-text-on-accent));
487
495
  }
488
- [data-component~="ui-badge"][data-ui-badge-state~="tone=warning"][data-v-4d2f1396] {
496
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=warning"][data-v-57826cf9] {
489
497
  --_badge-surface: var(--ui-warning-strong-surface, var(--ui-warning-solid));
490
498
  --_badge-border: var(--ui-warning-strong-surface, var(--ui-warning-solid));
491
499
  --_badge-text: var(--ui-warning-on-strong, var(--ui-text-on-accent));
492
500
  }
493
- [data-component~="ui-badge"][data-ui-badge-state~="tone=info"][data-v-4d2f1396] {
501
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=info"][data-v-57826cf9] {
494
502
  --_badge-surface: var(--ui-info-strong-surface, var(--ui-info-solid));
495
503
  --_badge-border: var(--ui-info-strong-surface, var(--ui-info-solid));
496
504
  --_badge-text: var(--ui-info-on-strong, var(--ui-text-on-accent));
497
505
  }
498
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=accent"][data-v-4d2f1396] {
506
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=accent"][data-v-57826cf9] {
499
507
  --_badge-surface: color-mix(in srgb, var(--ui-accent-solid) 19%, var(--ui-surface-default));
500
508
  --_badge-border: color-mix(in srgb, var(--ui-accent-solid) 25%, var(--ui-surface-default));
501
509
  --_badge-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
502
510
  }
503
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=danger"][data-v-4d2f1396] {
511
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=danger"][data-v-57826cf9] {
504
512
  --_badge-surface: color-mix(in srgb, var(--ui-danger-solid) 19%, var(--ui-surface-default));
505
513
  --_badge-border: color-mix(in srgb, var(--ui-danger-solid) 25%, var(--ui-surface-default));
506
514
  --_badge-text: var(--ui-danger-subtle-text, var(--ui-danger-solid));
507
515
  }
508
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=success"][data-v-4d2f1396] {
516
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=success"][data-v-57826cf9] {
509
517
  --_badge-surface: color-mix(in srgb, var(--ui-success-solid) 19%, var(--ui-surface-default));
510
518
  --_badge-border: color-mix(in srgb, var(--ui-success-solid) 25%, var(--ui-surface-default));
511
519
  --_badge-text: var(--ui-success-subtle-text, var(--ui-success-solid));
512
520
  }
513
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=warning"][data-v-4d2f1396] {
521
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=warning"][data-v-57826cf9] {
514
522
  --_badge-surface: color-mix(in srgb, var(--ui-warning-solid) 19%, var(--ui-surface-default));
515
523
  --_badge-border: color-mix(in srgb, var(--ui-warning-solid) 25%, var(--ui-surface-default));
516
524
  --_badge-text: var(--ui-warning-subtle-text, var(--ui-warning-solid));
517
525
  }
518
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=info"][data-v-4d2f1396] {
526
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=info"][data-v-57826cf9] {
519
527
  --_badge-surface: color-mix(in srgb, var(--ui-info-solid) 19%, var(--ui-surface-default));
520
528
  --_badge-border: color-mix(in srgb, var(--ui-info-solid) 25%, var(--ui-surface-default));
521
529
  --_badge-text: var(--ui-info-subtle-text, var(--ui-info-solid));
@@ -523,7 +531,7 @@ svg[data-v-abaeb064] {
523
531
 
524
532
  /* A solid colour fills with the ink. Its text is the page surface, mixed at 0% only so that it too is
525
533
  invalid while the hook is unset. */
526
- [data-component~="ui-badge"][data-ui-badge-state~="variant=solid"][data-v-4d2f1396] {
534
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=solid"][data-v-57826cf9] {
527
535
  --_badge-color-surface: var(--_badge-color-ink);
528
536
  --_badge-color-border: var(--_badge-color-ink);
529
537
  --_badge-color-text: color-mix(in oklab, var(--_ui-badge-color) 0%, var(--ui-surface-default));
@@ -531,7 +539,7 @@ svg[data-v-abaeb064] {
531
539
 
532
540
  /* A translucent inverse surface picks up its filled control's tone. Deepen the tone ink
533
541
  toward the theme text to retain contrast against that composed surface. */
534
- [data-component~="ui-badge"][data-ui-badge-state~="variant=inverse"][data-v-4d2f1396] {
542
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=inverse"][data-v-57826cf9] {
535
543
  --_badge-color-surface: color-mix(
536
544
  in srgb,
537
545
  color-mix(in oklab, var(--_ui-badge-color) 0%, var(--ui-surface-default)) 88%,
@@ -554,16 +562,81 @@ svg[data-v-abaeb064] {
554
562
  /* Paint each translucent layer once, including the border, without a bright double-painted ring. */
555
563
  background-clip: padding-box;
556
564
  }
557
- [data-component~="ui-badge"][data-ui-badge-state~="variant=inverse"][data-ui-badge-state~="shape=circle"][data-v-4d2f1396] {
558
- box-shadow: var(--ui-shadow-sm);
565
+
566
+ /* A circular count has a tone-tinted surface, a separate lighter rim and readable tone ink.
567
+ Dark controls retain a shaded surface and theme ink with a quieter rim. */
568
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=inverse"][data-ui-badge-state~="shape=circle"][data-v-57826cf9] {
569
+ --_badge-color-surface: light-dark(
570
+ color-mix(
571
+ in srgb,
572
+ color-mix(in oklab, var(--_ui-badge-color) 0%, var(--ui-surface-default)) var(
573
+ --ui-badge-circle-opacity,
574
+ 66%
575
+ ),
576
+ transparent
577
+ ),
578
+ color-mix(
579
+ in srgb,
580
+ color-mix(in oklab, var(--_ui-badge-color) 0%, var(--ui-surface-default)) var(
581
+ --ui-badge-circle-opacity,
582
+ 56%
583
+ ),
584
+ transparent
585
+ )
586
+ );
587
+ --_badge-color-border: light-dark(
588
+ color-mix(
589
+ in srgb,
590
+ color-mix(in oklab, var(--_ui-badge-color) 0%, var(--ui-surface-default)) 88%,
591
+ transparent
592
+ ),
593
+ color-mix(
594
+ in srgb,
595
+ color-mix(in oklab, var(--_ui-badge-color) 0%, var(--ui-surface-default)) 44%,
596
+ transparent
597
+ )
598
+ );
599
+ --_badge-color-text: light-dark(
600
+ color-mix(in srgb, var(--_badge-color-ink) 65%, var(--ui-text-primary)),
601
+ color-mix(in oklab, var(--_ui-badge-color) 0%, var(--ui-text-primary))
602
+ );
603
+ --_badge-count-surface: light-dark(
604
+ color-mix(in srgb, var(--_badge-text) var(--ui-badge-circle-opacity, 66%), transparent),
605
+ color-mix(in srgb, var(--_badge-text) var(--ui-badge-circle-opacity, 56%), transparent)
606
+ );
607
+ --_badge-outline-surface: var(
608
+ --ui-badge-surface,
609
+ var(--_badge-color-surface, var(--_badge-count-surface))
610
+ );
611
+ border-color: var(
612
+ --ui-badge-border,
613
+ var(
614
+ --_badge-color-border,
615
+ light-dark(
616
+ color-mix(in srgb, var(--_badge-text) 88%, transparent),
617
+ color-mix(in srgb, var(--_badge-text) 44%, transparent)
618
+ )
619
+ )
620
+ );
621
+ color: var(
622
+ --ui-badge-text,
623
+ var(
624
+ --_badge-color-text,
625
+ light-dark(
626
+ color-mix(in srgb, var(--_badge-surface) 65%, var(--ui-text-primary)),
627
+ var(--ui-text-primary)
628
+ )
629
+ )
630
+ );
631
+ box-shadow: 0 1px 1px light-dark(rgb(0 0 0 / 0.08), rgb(0 0 0 / 0.12));
559
632
  }
560
633
 
561
634
  /* Neutral reverses a subtle surface/ink pair rather than a strong tone. Keep its original
562
635
  surface ink: moving it toward dark-theme primary text would reduce overlay contrast. */
563
- [data-component~="ui-badge"][data-ui-badge-state~="variant=inverse"][data-ui-badge-state~="tone=neutral"][data-v-4d2f1396] {
636
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=inverse"][data-ui-badge-state~="tone=neutral"][data-v-57826cf9] {
564
637
  color: var(--ui-badge-text, var(--_badge-color-text, var(--_badge-surface)));
565
638
  }
566
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-v-4d2f1396] {
639
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-v-57826cf9] {
567
640
  --_badge-surface: var(--ui-surface-default);
568
641
  --_badge-border: var(--ui-border-strong);
569
642
  --_badge-text: var(--ui-text-secondary);
@@ -571,29 +644,29 @@ svg[data-v-abaeb064] {
571
644
  --_badge-color-surface: initial;
572
645
  --_badge-color-border: var(--_badge-color-ink);
573
646
  }
574
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=accent"][data-v-4d2f1396] {
647
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=accent"][data-v-57826cf9] {
575
648
  --_badge-border: var(--ui-accent-solid);
576
649
  --_badge-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
577
650
  }
578
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=danger"][data-v-4d2f1396] {
651
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=danger"][data-v-57826cf9] {
579
652
  --_badge-border: var(--ui-danger-solid);
580
653
  --_badge-text: var(--ui-danger-subtle-text, var(--ui-danger-solid));
581
654
  }
582
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=success"][data-v-4d2f1396] {
655
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=success"][data-v-57826cf9] {
583
656
  --_badge-border: var(--ui-success-solid);
584
657
  --_badge-text: var(--ui-success-subtle-text, var(--ui-success-solid));
585
658
  }
586
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=warning"][data-v-4d2f1396] {
659
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=warning"][data-v-57826cf9] {
587
660
  --_badge-border: var(--ui-warning-solid);
588
661
  --_badge-text: var(--ui-warning-subtle-text, var(--ui-warning-solid));
589
662
  }
590
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=info"][data-v-4d2f1396] {
663
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=info"][data-v-57826cf9] {
591
664
  --_badge-border: var(--ui-info-solid);
592
665
  --_badge-text: var(--ui-info-subtle-text, var(--ui-info-solid));
593
666
  }
594
667
 
595
668
  /* An icon mark keeps the existing tone recipe and follows the global spacing and radius. */
596
- [data-component~="ui-badge"][data-ui-badge-state~="shape=square"][data-v-4d2f1396] {
669
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=square"][data-v-57826cf9] {
597
670
  --_badge-square-size: var(--ui-badge-square-size, calc(var(--ui-space-4) * 2));
598
671
  display: inline-flex;
599
672
  box-sizing: border-box;
@@ -606,29 +679,29 @@ svg[data-v-abaeb064] {
606
679
  border-radius: var(--ui-radius-md);
607
680
  text-box-trim: none;
608
681
  }
609
- [data-component~="ui-badge"][data-ui-badge-state~="shape=square"][data-ui-badge-state~="size=xs"][data-v-4d2f1396] {
682
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=square"][data-ui-badge-state~="size=xs"][data-v-57826cf9] {
610
683
  --_badge-square-size: var(--ui-badge-square-size, calc(var(--ui-space-3) * 2));
611
684
  }
612
- [data-component~="ui-badge"][data-ui-badge-state~="shape=square"][data-ui-badge-state~="size=lg"][data-v-4d2f1396] {
685
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=square"][data-ui-badge-state~="size=lg"][data-v-57826cf9] {
613
686
  --_badge-square-size: var(
614
687
  --ui-badge-square-size,
615
688
  calc(var(--ui-space-4) * 2 + var(--ui-space-2))
616
689
  );
617
690
  }
618
- [data-component~="ui-badge"][data-ui-badge-state~="shape=square"] .label[data-v-4d2f1396] {
691
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=square"] .label[data-v-57826cf9] {
619
692
  display: inline-flex;
620
693
  align-items: center;
621
694
  justify-content: center;
622
695
  }
623
- [data-component~="ui-badge"][data-ui-badge-state~="shape=square"] .label svg[data-v-4d2f1396-s] {
696
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=square"] .label svg[data-v-57826cf9-s] {
624
697
  margin-inline-end: 0;
625
698
  }
626
- [data-component~="ui-badge"][data-ui-badge-state~="shape=square"] .label[data-v-4d2f1396]:empty {
699
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=square"] .label[data-v-57826cf9]:empty {
627
700
  display: none;
628
701
  }
629
702
 
630
703
  /* A visible glyph needs fixed geometry, unlike a content-sized pill or a hidden-label dot. */
631
- [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"][data-v-4d2f1396] {
704
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"][data-v-57826cf9] {
632
705
  --_badge-circle-size: var(--ui-badge-circle-size, calc(var(--ui-space-3) * 2));
633
706
  display: inline-flex;
634
707
  flex: none;
@@ -640,31 +713,31 @@ svg[data-v-abaeb064] {
640
713
  border-radius: var(--ui-radius-round);
641
714
  text-box-trim: none;
642
715
  }
643
- [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"][data-ui-badge-state~="size=xs"][data-v-4d2f1396] {
716
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"][data-ui-badge-state~="size=xs"][data-v-57826cf9] {
644
717
  --_badge-circle-size: var(--ui-badge-circle-size, var(--ui-space-4));
645
718
  }
646
- [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"][data-ui-badge-state~="size=lg"][data-v-4d2f1396] {
719
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"][data-ui-badge-state~="size=lg"][data-v-57826cf9] {
647
720
  --_badge-circle-size: var(--ui-badge-circle-size, calc(var(--ui-space-4) * 2));
648
721
  }
649
- [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"] .label[data-v-4d2f1396] {
722
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"] .label[data-v-57826cf9] {
650
723
  display: inline-flex;
651
724
  align-items: center;
652
725
  justify-content: center;
653
726
  line-height: 1;
654
727
  text-box-trim: none;
655
728
  }
656
- [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"] .label svg[data-v-4d2f1396-s] {
729
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"] .label svg[data-v-57826cf9-s] {
657
730
  margin-inline-end: 0;
658
731
  }
659
- [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"] .label[data-v-4d2f1396]:empty {
732
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"] .label[data-v-57826cf9]:empty {
660
733
  display: none;
661
734
  }
662
735
 
663
736
  /* Center capital and numeral ink, rather than the font's ascent/descent line box.
664
737
  Icon labels retain flex geometry; untrimmed browsers keep that fallback too. */
665
738
  @supports (text-box-trim: trim-both) {
666
- [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"] .label[data-v-4d2f1396]:not(:has(svg)),
667
- [data-component~="ui-badge"][data-ui-badge-state~="shape=square"] .label[data-v-4d2f1396]:not(:has(svg)) {
739
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=circle"] .label[data-v-57826cf9]:not(:has(svg)),
740
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=square"] .label[data-v-57826cf9]:not(:has(svg)) {
668
741
  display: block;
669
742
  text-box-trim: trim-both;
670
743
  text-box-edge: cap alphabetic;
@@ -673,7 +746,7 @@ svg[data-v-abaeb064] {
673
746
  }
674
747
 
675
748
  /* A dot uses the badge's tone recipe; only its silhouette and visible label change. */
676
- [data-component~="ui-badge"][data-ui-badge-state~="shape=dot"][data-v-4d2f1396] {
749
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=dot"][data-v-57826cf9] {
677
750
  position: relative;
678
751
  box-sizing: border-box;
679
752
  flex: none;
@@ -685,7 +758,7 @@ svg[data-v-abaeb064] {
685
758
  border-radius: var(--ui-radius-round);
686
759
  text-box-trim: none;
687
760
  }
688
- [data-component~="ui-badge"][data-ui-badge-state~="shape=dot"] .label[data-v-4d2f1396] {
761
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=dot"] .label[data-v-57826cf9] {
689
762
  position: absolute;
690
763
  inline-size: 1px;
691
764
  block-size: 1px;
@@ -696,7 +769,7 @@ svg[data-v-abaeb064] {
696
769
 
697
770
  /* The clipped point needs an inset surface over an outer border-colour shape: a native border
698
771
  has no diagonal edge to follow. Keep this edge for every tag variant. */
699
- [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-4d2f1396] {
772
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-57826cf9] {
700
773
  --_badge-point: var(--ui-badge-point, var(--ui-space-2));
701
774
 
702
775
  position: relative;
@@ -713,7 +786,7 @@ svg[data-v-abaeb064] {
713
786
  0 100%
714
787
  );
715
788
  }
716
- [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-4d2f1396]::before {
789
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-57826cf9]::before {
717
790
  content: "";
718
791
  position: absolute;
719
792
  inset: 0;
@@ -728,37 +801,37 @@ svg[data-v-abaeb064] {
728
801
  );
729
802
  pointer-events: none;
730
803
  }
731
- [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-ui-badge-state~="variant=inverse"][data-v-4d2f1396] {
804
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-ui-badge-state~="variant=inverse"][data-v-57826cf9] {
732
805
  background: var(--ui-badge-border, var(--_badge-color-border, var(--_badge-text)));
733
806
  }
734
- [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-4d2f1396]:dir(rtl) {
807
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-57826cf9]:dir(rtl) {
735
808
  padding-inline-end: var(--ui-badge-padding-inline, var(--ui-space-2));
736
809
  padding-inline-start: calc(
737
810
  var(--ui-badge-padding-inline, var(--ui-space-2)) + var(--_badge-point)
738
811
  );
739
812
  clip-path: polygon(var(--_badge-point) 0, 100% 0, 100% 100%, var(--_badge-point) 100%, 0 50%);
740
813
  }
741
- [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-4d2f1396]:dir(rtl)::before {
814
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-57826cf9]:dir(rtl)::before {
742
815
  clip-path: polygon(var(--_badge-point) 0, 100% 0, 100% 100%, var(--_badge-point) 100%, 0 50%);
743
816
  }
744
817
  @media (forced-colors: active) {
745
- [data-component~="ui-badge"][data-ui-badge-state~="shape=dot"][data-v-4d2f1396] {
818
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=dot"][data-v-57826cf9] {
746
819
  forced-color-adjust: none;
747
820
  border-color: CanvasText;
748
821
  background: CanvasText;
749
822
  }
750
- [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-4d2f1396] {
823
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-57826cf9] {
751
824
  forced-color-adjust: none;
752
825
  background: CanvasText;
753
826
  color: CanvasText;
754
827
  }
755
- [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-4d2f1396]::before {
828
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-57826cf9]::before {
756
829
  background: Canvas;
757
830
  }
758
831
  }
759
832
 
760
833
  /* A component that sets its display still honours the hidden attribute on its root. */
761
- [data-component~="ui-badge"][hidden][data-v-4d2f1396] {
834
+ [data-component~="ui-badge"][hidden][data-v-57826cf9] {
762
835
  display: none;
763
836
  }
764
837
 
@@ -968,7 +1041,22 @@ svg[data-v-6551ff4d],
968
1041
  syntax: "*";
969
1042
  inherits: false;
970
1043
  }
971
- [data-component~="ui-button"][data-v-37d5b9a2] {
1044
+ [data-component~="ui-button"][data-v-e56c4e01] {
1045
+ /* Optional inherited action-group values keep text and icon actions under the same light.
1046
+ One fine top/start highlight follows the bottom/end lowlight at a joined action seam.
1047
+ A single ambient lift avoids stacking a face gradient or another inset bevel. */
1048
+ --_ui-action-start: 1px;
1049
+ --_ui-action-edge: var(
1050
+ --ui-action-edge,
1051
+ inset var(--_ui-action-start) 1px 0 light-dark(
1052
+ rgb(255 255 255 / 0.08),
1053
+ rgb(255 255 255 / 0.06)
1054
+ ),
1055
+ inset calc(-1 * var(--_ui-action-start)) -1px 0 light-dark(rgb(0 0 0 / 0.08), rgb(0 0 0 / 0.08))
1056
+ );
1057
+ --_ui-action-shadow:
1058
+ var(--_ui-action-edge),
1059
+ 0 1px 2px light-dark(rgb(0 0 0 / 0.10), rgb(0 0 0 / 0.20));
972
1060
  --_hue: var(--ui-accent);
973
1061
  --_hue-hover: var(--ui-accent-hover);
974
1062
  --_hue-active: var(--ui-accent-active);
@@ -988,15 +1076,18 @@ svg[data-v-6551ff4d],
988
1076
  vertical-align: middle;
989
1077
  color: var(--_tone-text);
990
1078
  }
991
- [data-component~="ui-button"][data-ui-button-state~="align=start"][data-v-37d5b9a2] {
1079
+ [data-component~="ui-button"][data-v-e56c4e01]:dir(rtl) {
1080
+ --_ui-action-start: -1px;
1081
+ }
1082
+ [data-component~="ui-button"][data-ui-button-state~="align=start"][data-v-e56c4e01] {
992
1083
  justify-content: flex-start;
993
1084
  text-align: start;
994
1085
  }
995
- [data-component~="ui-button"][data-ui-button-state~="stretch"][data-v-37d5b9a2] {
1086
+ [data-component~="ui-button"][data-ui-button-state~="stretch"][data-v-e56c4e01] {
996
1087
  display: flex;
997
1088
  inline-size: 100%;
998
1089
  }
999
- [data-component~="ui-button"][data-v-37d5b9a2] {
1090
+ [data-component~="ui-button"][data-v-e56c4e01] {
1000
1091
  appearance: none;
1001
1092
  min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
1002
1093
  border-style: solid;
@@ -1012,8 +1103,8 @@ svg[data-v-6551ff4d],
1012
1103
  white-space: var(--ui-button-white-space, inherit);
1013
1104
  line-height: var(--ui-line-height-tight);
1014
1105
  padding: var(--ui-space-2) var(--ui-space-3);
1015
- background-image: var(--ui-raised-highlight);
1016
- box-shadow: var(--ui-button-shadow, var(--ui-raised));
1106
+ background-image: none;
1107
+ box-shadow: var(--ui-button-shadow, var(--ui-action-shadow, var(--_ui-action-shadow)));
1017
1108
  cursor: pointer;
1018
1109
  transition:
1019
1110
  background-color var(--ui-motion-fast) var(--ui-motion-ease),
@@ -1024,34 +1115,48 @@ svg[data-v-6551ff4d],
1024
1115
  }
1025
1116
 
1026
1117
  /* An anchor keeps the boxed button look even when an app styles ordinary links. */
1027
- [data-component~="ui-button"][data-v-37d5b9a2]:is(a) {
1118
+ [data-component~="ui-button"][data-v-e56c4e01]:is(a) {
1028
1119
  text-decoration: none;
1029
1120
  }
1030
- .spinner-wrap[data-v-37d5b9a2] {
1121
+ .spinner-wrap[data-v-e56c4e01] {
1031
1122
  display: inline-flex;
1032
1123
  flex: none;
1033
1124
  vertical-align: middle;
1034
1125
  }
1126
+
1127
+ /* A count is an adornment, not another line of label text. Keep the standard control height
1128
+ with enough inset for a 24px mark; large content can still grow the button naturally. */
1129
+ [data-component~="ui-button"][data-v-e56c4e01]:not([variant="link"]):has(.badge:not(:empty)) {
1130
+ padding-block: var(--ui-space-0-5);
1131
+ }
1132
+ .badge[data-v-e56c4e01] {
1133
+ display: inline-flex;
1134
+ align-items: center;
1135
+ flex: none;
1136
+ }
1137
+ .badge[data-v-e56c4e01]:empty {
1138
+ display: none;
1139
+ }
1035
1140
  @supports (text-box-trim: trim-both) {
1036
- [data-component~="ui-button"][data-v-37d5b9a2] {
1141
+ [data-component~="ui-button"][data-v-e56c4e01] {
1037
1142
  text-box-trim: trim-both;
1038
1143
  text-box-edge: cap alphabetic;
1039
1144
  }
1040
1145
  }
1041
- [data-component~="ui-button"][data-ui-button-state~="size=xs"][data-v-37d5b9a2] {
1146
+ [data-component~="ui-button"][data-ui-button-state~="size=xs"][data-v-e56c4e01] {
1042
1147
  min-block-size: 1.5rem;
1043
1148
  padding: calc(var(--ui-space-0-5) * 1.5) calc(var(--ui-space-1) * 1.25);
1044
1149
  font-size: var(--ui-font-size-xs);
1045
1150
  }
1046
- [data-component~="ui-button"][data-ui-button-state~="shape=pill"][data-v-37d5b9a2] {
1151
+ [data-component~="ui-button"][data-ui-button-state~="shape=pill"][data-v-e56c4e01] {
1047
1152
  border-radius: var(--ui-button-radius, var(--ui-radius-round));
1048
1153
  }
1049
- [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-37d5b9a2] {
1154
+ [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-e56c4e01] {
1050
1155
  min-block-size: var(--ui-control-size-sm);
1051
1156
  padding: var(--ui-space-1) var(--ui-space-2);
1052
1157
  font-size: var(--ui-font-size-sm);
1053
1158
  }
1054
- [data-component~="ui-button"][data-ui-button-state~="size=lg"][data-v-37d5b9a2] {
1159
+ [data-component~="ui-button"][data-ui-button-state~="size=lg"][data-v-e56c4e01] {
1055
1160
  min-block-size: var(--ui-control-size-lg);
1056
1161
  padding: var(--ui-space-3) var(--ui-space-4);
1057
1162
  font-size: var(--ui-font-size-md);
@@ -1059,7 +1164,7 @@ svg[data-v-6551ff4d],
1059
1164
 
1060
1165
  /* Card actions inherit Button's palette and behavior; only their shared layout changes.
1061
1166
  The icon may contain any decorative composition. Empty icons remove their column. */
1062
- [data-component~="ui-button"][data-ui-button-state~="variant=card"][data-v-37d5b9a2] {
1167
+ [data-component~="ui-button"][data-ui-button-state~="variant=card"][data-v-e56c4e01] {
1063
1168
  display: grid;
1064
1169
  grid-template-columns: auto minmax(0, 1fr) auto;
1065
1170
  align-content: center;
@@ -1072,23 +1177,23 @@ svg[data-v-6551ff4d],
1072
1177
  box-shadow: none;
1073
1178
  background-image: none;
1074
1179
  }
1075
- [data-component~="ui-button"][data-ui-button-state~="variant=card"][data-ui-button-state~="size=lg"][data-v-37d5b9a2] {
1180
+ [data-component~="ui-button"][data-ui-button-state~="variant=card"][data-ui-button-state~="size=lg"][data-v-e56c4e01] {
1076
1181
  min-block-size: max(var(--ui-control-min-block-size), var(--ui-control-size-lg));
1077
1182
  }
1078
- [data-component~="ui-button"][data-ui-button-state~="variant=card"][data-v-37d5b9a2]:has(.card-icon:empty) {
1183
+ [data-component~="ui-button"][data-ui-button-state~="variant=card"][data-v-e56c4e01]:has(.card-icon:empty) {
1079
1184
  grid-template-columns: minmax(0, 1fr) auto;
1080
1185
  }
1081
- .card-icon[data-v-37d5b9a2] {
1186
+ .card-icon[data-v-e56c4e01] {
1082
1187
  display: flex;
1083
1188
  align-items: flex-start;
1084
1189
  }
1085
- .card-icon[data-v-37d5b9a2]:empty {
1190
+ .card-icon[data-v-e56c4e01]:empty {
1086
1191
  display: none;
1087
1192
  }
1088
- .card-content[data-v-37d5b9a2] {
1193
+ .card-content[data-v-e56c4e01] {
1089
1194
  min-inline-size: 0;
1090
1195
  }
1091
- .card-action[data-v-37d5b9a2] {
1196
+ .card-action[data-v-e56c4e01] {
1092
1197
  display: flex;
1093
1198
  align-items: center;
1094
1199
  align-self: center;
@@ -1096,29 +1201,37 @@ svg[data-v-6551ff4d],
1096
1201
 
1097
1202
  /* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
1098
1203
  is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
1099
- [data-component~="ui-button"][data-v-37d5b9a2]:hover:not(:disabled, [aria-disabled="true"]) {
1204
+ [data-component~="ui-button"][data-v-e56c4e01]:hover:not(:disabled, [aria-disabled="true"]) {
1100
1205
  border-color: var(--ui-button-hover-border, var(--_tone-hover));
1101
1206
  background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
1102
1207
  }
1103
1208
 
1209
+ /* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
1210
+ [data-component~="ui-button"][data-ui-button-state~="variant=card"][data-ui-button-state~="tone=neutral"][data-v-e56c4e01] {
1211
+ border-color: var(--ui-button-border, var(--ui-border));
1212
+ }
1213
+ [data-component~="ui-button"][data-ui-button-state~="variant=card"][data-ui-button-state~="tone=neutral"][data-v-e56c4e01]:hover:not(:disabled, [aria-disabled="true"]) {
1214
+ border-color: var(--ui-button-hover-border, var(--ui-border-strong));
1215
+ }
1216
+
1104
1217
  /* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
1105
- [data-component~="ui-button"][data-v-37d5b9a2]:active:not(:disabled, [aria-disabled="true"]) {
1218
+ [data-component~="ui-button"][data-v-e56c4e01]:active:not(:disabled, [aria-disabled="true"]) {
1106
1219
  background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / 18%));
1107
1220
  background-image: none;
1108
1221
  box-shadow: var(--ui-pressed);
1109
1222
  }
1110
- [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-37d5b9a2],
1111
- [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-37d5b9a2] {
1223
+ [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-e56c4e01],
1224
+ [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-e56c4e01] {
1112
1225
  border-color: var(--_tone);
1113
1226
  background-color: var(--_tone);
1114
1227
  color: var(--_on-tone);
1115
- box-shadow: var(--ui-button-solid-shadow, var(--ui-raised));
1228
+ box-shadow: var(--ui-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow)));
1116
1229
  }
1117
- :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-37d5b9a2], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-37d5b9a2]):hover:not(:disabled, [aria-disabled="true"]) {
1230
+ :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-e56c4e01], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-e56c4e01]):hover:not(:disabled, [aria-disabled="true"]) {
1118
1231
  background-color: var(--_tone-hover);
1119
1232
  border-color: var(--_tone-hover);
1120
1233
  }
1121
- :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-37d5b9a2], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-37d5b9a2]):active:not(:disabled, [aria-disabled="true"]) {
1234
+ :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-e56c4e01], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-e56c4e01]):active:not(:disabled, [aria-disabled="true"]) {
1122
1235
  background-color: var(--_tone-active);
1123
1236
  border-color: var(--_tone-active);
1124
1237
  background-image: none;
@@ -1127,43 +1240,43 @@ svg[data-v-6551ff4d],
1127
1240
 
1128
1241
  /* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
1129
1242
  destructive secondary action, not a special case. */
1130
- [data-component~="ui-button"][data-ui-button-state~="tone=neutral"][data-v-37d5b9a2] {
1243
+ [data-component~="ui-button"][data-ui-button-state~="tone=neutral"][data-v-e56c4e01] {
1131
1244
  --_hue: var(--ui-text);
1132
1245
  --_hue-hover: var(--ui-text);
1133
1246
  --_hue-active: var(--ui-text);
1134
1247
  --_hue-text: var(--ui-text);
1135
1248
  --_on-hue: var(--ui-surface);
1136
1249
  }
1137
- [data-component~="ui-button"][data-ui-button-state~="tone=danger"][data-v-37d5b9a2],
1138
- [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-37d5b9a2] {
1250
+ [data-component~="ui-button"][data-ui-button-state~="tone=danger"][data-v-e56c4e01],
1251
+ [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-e56c4e01] {
1139
1252
  --_hue: var(--ui-danger);
1140
1253
  --_hue-hover: var(--ui-danger-hover);
1141
1254
  --_hue-active: var(--ui-danger-hover);
1142
1255
  --_hue-text: var(--ui-danger-hover);
1143
1256
  --_on-hue: var(--ui-on-danger);
1144
1257
  }
1145
- [data-component~="ui-button"][data-ui-button-state~="tone=success"][data-v-37d5b9a2] {
1258
+ [data-component~="ui-button"][data-ui-button-state~="tone=success"][data-v-e56c4e01] {
1146
1259
  --_hue: var(--ui-success);
1147
1260
  --_hue-hover: color-mix(in srgb, var(--ui-success) 85%, #000);
1148
1261
  --_hue-active: color-mix(in srgb, var(--ui-success) 75%, #000);
1149
1262
  --_hue-text: color-mix(in srgb, var(--ui-success) 85%, #000);
1150
1263
  --_on-hue: var(--ui-surface);
1151
1264
  }
1152
- [data-component~="ui-button"][data-ui-button-state~="tone=warning"][data-v-37d5b9a2] {
1265
+ [data-component~="ui-button"][data-ui-button-state~="tone=warning"][data-v-e56c4e01] {
1153
1266
  --_hue: var(--ui-warning);
1154
1267
  --_hue-hover: color-mix(in srgb, var(--ui-warning) 85%, #000);
1155
1268
  --_hue-active: color-mix(in srgb, var(--ui-warning) 75%, #000);
1156
1269
  --_hue-text: color-mix(in srgb, var(--ui-warning) 85%, #000);
1157
1270
  --_on-hue: var(--ui-surface);
1158
1271
  }
1159
- [data-component~="ui-button"][data-ui-button-state~="tone=info"][data-v-37d5b9a2] {
1272
+ [data-component~="ui-button"][data-ui-button-state~="tone=info"][data-v-e56c4e01] {
1160
1273
  --_hue: var(--ui-info);
1161
1274
  --_hue-hover: color-mix(in srgb, var(--ui-info) 85%, #000);
1162
1275
  --_hue-active: color-mix(in srgb, var(--ui-info) 75%, #000);
1163
1276
  --_hue-text: color-mix(in srgb, var(--ui-info) 85%, #000);
1164
1277
  --_on-hue: var(--ui-surface);
1165
1278
  }
1166
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-37d5b9a2] {
1279
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-e56c4e01] {
1167
1280
  border-color: transparent;
1168
1281
  background: transparent;
1169
1282
  box-shadow: none;
@@ -1171,14 +1284,14 @@ svg[data-v-6551ff4d],
1171
1284
  }
1172
1285
 
1173
1286
  /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
1174
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-37d5b9a2]:hover:not(:disabled, [aria-disabled="true"]) {
1287
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-e56c4e01]:hover:not(:disabled, [aria-disabled="true"]) {
1175
1288
  background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / 10%));
1176
1289
  border-color: transparent;
1177
1290
  }
1178
1291
 
1179
1292
  /* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
1180
1293
  edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
1181
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-37d5b9a2]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]) {
1294
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-e56c4e01]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]) {
1182
1295
  background-color: var(
1183
1296
  --ui-button-ghost-active-surface,
1184
1297
  color-mix(in oklch, var(--ui-surface), var(--_tone) 3%)
@@ -1190,21 +1303,24 @@ svg[data-v-6551ff4d],
1190
1303
  }
1191
1304
 
1192
1305
  /* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
1193
- [data-component~="ui-button"][data-v-37d5b9a2]:focus-visible {
1306
+ [data-component~="ui-button"][data-v-e56c4e01]:focus-visible {
1194
1307
  outline: none;
1195
1308
  box-shadow:
1196
- var(--ui-button-shadow, var(--ui-raised)),
1309
+ var(--ui-button-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
1197
1310
  var(--ui-focus-halo);
1198
1311
  }
1199
- [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-37d5b9a2]:focus-visible {
1312
+ [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-e56c4e01]:focus-visible {
1200
1313
  box-shadow:
1201
- var(--ui-button-solid-shadow, var(--ui-raised)),
1314
+ var(--ui-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
1202
1315
  var(--ui-focus-halo);
1203
1316
  }
1317
+ :is([data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-e56c4e01], [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-e56c4e01], [data-component~="ui-button"][data-ui-button-state~="variant=card"][data-v-e56c4e01]):focus-visible {
1318
+ box-shadow: var(--ui-focus-halo);
1319
+ }
1204
1320
 
1205
1321
  /* A loading action stays visually active; only an explicitly disabled action takes the
1206
1322
  neutral disabled palette. Its flat surface and muted ink make the state unambiguous. */
1207
- [data-component~="ui-button"][data-v-37d5b9a2]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
1323
+ [data-component~="ui-button"][data-v-e56c4e01]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
1208
1324
  border-color: var(--ui-disabled-border);
1209
1325
  background-color: var(--ui-disabled-surface);
1210
1326
  color: var(--ui-disabled-text);
@@ -1214,19 +1330,19 @@ svg[data-v-6551ff4d],
1214
1330
  background-image: none;
1215
1331
  box-shadow: none;
1216
1332
  }
1217
- :is([data-component~="ui-button"][data-ui-button-state~="loading"][data-v-37d5b9a2], [data-component~="ui-button"][data-ui-button-state~="pending"][data-v-37d5b9a2]):focus-visible {
1333
+ :is([data-component~="ui-button"][data-ui-button-state~="loading"][data-v-e56c4e01], [data-component~="ui-button"][data-ui-button-state~="pending"][data-v-e56c4e01]):focus-visible {
1218
1334
  box-shadow: var(--ui-focus-halo);
1219
1335
  }
1220
1336
 
1221
1337
  /* Ghost keeps no border, but gains the same neutral surface as other disabled buttons. */
1222
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-37d5b9a2]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
1338
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-e56c4e01]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
1223
1339
  background-color: var(--ui-disabled-surface);
1224
1340
  border-color: transparent;
1225
1341
  }
1226
1342
 
1227
1343
  /* The size states outrank :host, so sm is named too, or a small button would stay small. */
1228
1344
  @media (pointer: coarse) {
1229
- [data-component~="ui-button"][data-v-37d5b9a2], [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-37d5b9a2] {
1345
+ [data-component~="ui-button"][data-v-e56c4e01], [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-e56c4e01] {
1230
1346
  min-block-size: var(--ui-control-min-block-size);
1231
1347
  }
1232
1348
  }
@@ -1237,15 +1353,15 @@ svg[data-v-6551ff4d],
1237
1353
  area. xs sits inside a line of text the same way, so it keeps its size and gains the area too.
1238
1354
  Only these need it: a hit area on every button would reach over its neighbours. */
1239
1355
  html[data-ui-input-modality="touch"]
1240
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-37d5b9a2],
1356
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-e56c4e01],
1241
1357
  html[data-ui-input-modality="touch"]
1242
- [data-component~="ui-button"][data-ui-button-state~="size=xs"][data-v-37d5b9a2] {
1358
+ [data-component~="ui-button"][data-ui-button-state~="size=xs"][data-v-e56c4e01] {
1243
1359
  position: relative;
1244
1360
  }
1245
1361
  html[data-ui-input-modality="touch"]
1246
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-37d5b9a2]::after,
1362
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-e56c4e01]::after,
1247
1363
  html[data-ui-input-modality="touch"]
1248
- [data-component~="ui-button"][data-ui-button-state~="size=xs"][data-v-37d5b9a2]::after {
1364
+ [data-component~="ui-button"][data-ui-button-state~="size=xs"][data-v-e56c4e01]::after {
1249
1365
  position: absolute;
1250
1366
  inset: 50% auto auto 50%;
1251
1367
  inline-size: max(100%, var(--ui-control-min-block-size));
@@ -1256,7 +1372,7 @@ html[data-ui-input-modality="touch"]
1256
1372
 
1257
1373
  /* Link: an inline text action. No box, padding, or minimum height (inline targets are exempt under
1258
1374
  WCAG 2.5.8); the inherited font; an underline that strengthens on hover; a visible focus ring. */
1259
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-37d5b9a2] {
1375
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-e56c4e01] {
1260
1376
  display: inline;
1261
1377
  min-block-size: 0;
1262
1378
  padding: 0;
@@ -1274,21 +1390,21 @@ html[data-ui-input-modality="touch"]
1274
1390
  color var(--ui-motion-fast) var(--ui-motion-ease),
1275
1391
  text-decoration-color var(--ui-motion-fast) var(--ui-motion-ease);
1276
1392
  }
1277
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-37d5b9a2]:hover:not(:disabled, [aria-disabled="true"]) {
1393
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-e56c4e01]:hover:not(:disabled, [aria-disabled="true"]) {
1278
1394
  color: var(--ui-button-link-hover-text, var(--ui-text-primary));
1279
1395
  text-decoration-color: currentColor;
1280
1396
  background: none;
1281
1397
  transform: none;
1282
1398
  }
1283
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-37d5b9a2]:active:not(:disabled, [aria-disabled="true"]) {
1399
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-e56c4e01]:active:not(:disabled, [aria-disabled="true"]) {
1284
1400
  background: none;
1285
1401
  transform: none;
1286
1402
  }
1287
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-37d5b9a2]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
1403
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-e56c4e01]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
1288
1404
  background: none;
1289
1405
  border-color: transparent;
1290
1406
  }
1291
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-37d5b9a2]:focus-visible {
1407
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-e56c4e01]:focus-visible {
1292
1408
  box-shadow: none;
1293
1409
  /* Fallback keeps the ring if the token is missing: an unresolved var() would void the outline. */
1294
1410
  outline: var(--ui-focus-width) solid var(--ui-focus-ring);
@@ -1296,7 +1412,7 @@ html[data-ui-input-modality="touch"]
1296
1412
  }
1297
1413
 
1298
1414
  /* A component that sets its display still honours the hidden attribute on its root. */
1299
- [data-component~="ui-button"][hidden][data-v-37d5b9a2] {
1415
+ [data-component~="ui-button"][hidden][data-v-e56c4e01] {
1300
1416
  display: none;
1301
1417
  }
1302
1418
 
@@ -4801,7 +4917,22 @@ svg[data-v-955cfa65-s] {
4801
4917
  syntax: "*";
4802
4918
  inherits: false;
4803
4919
  }
4804
- [data-component~="ui-icon-button"][data-v-b66a1661] {
4920
+ [data-component~="ui-icon-button"][data-v-219fa683] {
4921
+ /* Optional inherited action-group values keep text and icon actions under the same light.
4922
+ One fine top/start highlight follows the bottom/end lowlight at a joined action seam.
4923
+ A single ambient lift avoids stacking a face gradient or another inset bevel. */
4924
+ --_ui-action-start: 1px;
4925
+ --_ui-action-edge: var(
4926
+ --ui-action-edge,
4927
+ inset var(--_ui-action-start) 1px 0 light-dark(
4928
+ rgb(255 255 255 / 0.08),
4929
+ rgb(255 255 255 / 0.06)
4930
+ ),
4931
+ inset calc(-1 * var(--_ui-action-start)) -1px 0 light-dark(rgb(0 0 0 / 0.08), rgb(0 0 0 / 0.08))
4932
+ );
4933
+ --_ui-action-shadow:
4934
+ var(--_ui-action-edge),
4935
+ 0 1px 2px light-dark(rgb(0 0 0 / 0.10), rgb(0 0 0 / 0.20));
4805
4936
  /* Hooks do not inherit, so the parts below read them from the root. */
4806
4937
  --_ui-icon-button-icon-size: var(--ui-icon-button-icon-size);
4807
4938
  --_ui-icon-button-icon-stroke-width: var(--ui-icon-button-icon-stroke-width);
@@ -4809,7 +4940,10 @@ svg[data-v-955cfa65-s] {
4809
4940
  display: inline-flex;
4810
4941
  color: var(--ui-text-secondary);
4811
4942
  }
4812
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="tone=accent"][data-v-b66a1661] {
4943
+ [data-component~="ui-icon-button"][data-v-219fa683]:dir(rtl) {
4944
+ --_ui-action-start: -1px;
4945
+ }
4946
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="tone=accent"][data-v-219fa683] {
4813
4947
  --_icon-button-border: var(--ui-accent-solid);
4814
4948
  --_icon-button-hover-border: var(--ui-accent-hover);
4815
4949
  --_icon-button-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
@@ -4822,15 +4956,15 @@ svg[data-v-955cfa65-s] {
4822
4956
  }
4823
4957
 
4824
4958
  /* Omitted tone retains the existing accent solid; explicit neutral is additive. */
4825
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="tone=neutral"][data-v-b66a1661] {
4959
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="tone=neutral"][data-v-219fa683] {
4826
4960
  --_icon-button-solid-surface: var(--ui-text-primary);
4827
4961
  --_icon-button-solid-hover-surface: var(--ui-text-primary);
4828
4962
  --_icon-button-solid-text: var(--ui-surface-default);
4829
4963
  }
4830
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-b66a1661] {
4964
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-219fa683] {
4831
4965
  position: relative;
4832
4966
  }
4833
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-b66a1661]::before {
4967
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-219fa683]::before {
4834
4968
  content: "";
4835
4969
  position: absolute;
4836
4970
  inset: 50% auto auto 50%;
@@ -4844,13 +4978,13 @@ svg[data-v-955cfa65-s] {
4844
4978
  transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
4845
4979
  pointer-events: none;
4846
4980
  }
4847
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-b66a1661]:disabled::before {
4981
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-219fa683]:disabled::before {
4848
4982
  opacity: 0;
4849
4983
  }
4850
4984
 
4851
4985
  /* At rest an anticipatory button shows only its guide dot. The icon grows into place when
4852
4986
  proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
4853
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-b66a1661] {
4987
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-219fa683] {
4854
4988
  opacity: 1;
4855
4989
  transform: scale(1);
4856
4990
  transition:
@@ -4858,22 +4992,22 @@ svg[data-v-955cfa65-s] {
4858
4992
  transform calc(var(--ui-motion-fast) * 2) cubic-bezier(0.2, 1.4, 0.35, 1);
4859
4993
  }
4860
4994
  @media (hover: hover) and (pointer: fine) {
4861
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-b66a1661]:not([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"], :disabled, [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible) {
4995
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-219fa683]:not([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"], :disabled, [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible) {
4862
4996
  border-color: transparent;
4863
4997
  background-color: transparent;
4864
4998
  box-shadow: none;
4865
4999
  }
4866
5000
  [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"]:not([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"], :disabled, [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible)
4867
- .content[data-v-b66a1661] {
5001
+ .content[data-v-219fa683] {
4868
5002
  opacity: 0;
4869
5003
  transform: scale(0.65);
4870
5004
  transition-duration: var(--ui-motion-fast);
4871
5005
  }
4872
5006
  }
4873
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-b66a1661]:is([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
5007
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-219fa683]:is([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
4874
5008
  opacity: 0;
4875
5009
  }
4876
- [data-component~="ui-icon-button"][data-v-b66a1661] {
5010
+ [data-component~="ui-icon-button"][data-v-219fa683] {
4877
5011
  /* The size prop resolves here; --ui-icon-button-size overrides it on an element. */
4878
5012
  --_size: 2rem;
4879
5013
  appearance: none;
@@ -4899,7 +5033,7 @@ svg[data-v-955cfa65-s] {
4899
5033
  transform var(--ui-motion-fast) var(--ui-motion-ease);
4900
5034
  }
4901
5035
  @media (hover: none), (pointer: coarse) {
4902
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-b66a1661]::before {
5036
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-219fa683]::before {
4903
5037
  opacity: 0;
4904
5038
  }
4905
5039
  }
@@ -4907,10 +5041,10 @@ svg[data-v-955cfa65-s] {
4907
5041
  /* A touch target without a bigger button: an invisible hit area, at least the control
4908
5042
  minimum, centred on the button (::before is the anticipatory guide). */
4909
5043
  @media (pointer: coarse) {
4910
- [data-component~="ui-icon-button"][data-v-b66a1661] {
5044
+ [data-component~="ui-icon-button"][data-v-219fa683] {
4911
5045
  position: relative;
4912
5046
  }
4913
- [data-component~="ui-icon-button"][data-v-b66a1661]::after {
5047
+ [data-component~="ui-icon-button"][data-v-219fa683]::after {
4914
5048
  content: "";
4915
5049
  position: absolute;
4916
5050
  inset: 50% auto auto 50%;
@@ -4919,10 +5053,10 @@ svg[data-v-955cfa65-s] {
4919
5053
  transform: translate(-50%, -50%);
4920
5054
  }
4921
5055
  }
4922
- html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-b66a1661] {
5056
+ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-219fa683] {
4923
5057
  position: relative;
4924
5058
  }
4925
- html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-b66a1661]::after {
5059
+ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-219fa683]::after {
4926
5060
  content: "";
4927
5061
  position: absolute;
4928
5062
  inset: 50% auto auto 50%;
@@ -4930,14 +5064,14 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-b
4930
5064
  block-size: max(100%, var(--ui-control-min-block-size));
4931
5065
  transform: translate(-50%, -50%);
4932
5066
  }
4933
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-b66a1661] {
5067
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-219fa683] {
4934
5068
  --_size: 1.75rem;
4935
5069
  inline-size: var(--ui-icon-button-size, var(--_size));
4936
5070
  block-size: var(--ui-icon-button-size, var(--_size));
4937
5071
  min-inline-size: var(--ui-icon-button-size, var(--_size));
4938
5072
  min-block-size: var(--ui-icon-button-size, var(--_size));
4939
5073
  }
4940
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-b66a1661] {
5074
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-219fa683] {
4941
5075
  --_size: 2.5rem;
4942
5076
  inline-size: var(--ui-icon-button-size, var(--_size));
4943
5077
  block-size: var(--ui-icon-button-size, var(--_size));
@@ -4946,19 +5080,19 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-b
4946
5080
  }
4947
5081
 
4948
5082
  /* A text button's companion uses control geometry; compact icon buttons keep their own density. */
4949
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-v-b66a1661] {
5083
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-v-219fa683] {
4950
5084
  --_size: var(--ui-control-size-md);
4951
5085
  block-size: auto;
4952
5086
  align-self: stretch;
4953
5087
  }
4954
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-ui-icon-button-state~="size=sm"][data-v-b66a1661] {
5088
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-ui-icon-button-state~="size=sm"][data-v-219fa683] {
4955
5089
  --_size: var(--ui-control-size-sm);
4956
5090
  }
4957
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-ui-icon-button-state~="size=lg"][data-v-b66a1661] {
5091
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-ui-icon-button-state~="size=lg"][data-v-219fa683] {
4958
5092
  --_size: var(--ui-control-size-lg);
4959
5093
  }
4960
5094
  @media (pointer: coarse) {
4961
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-v-b66a1661] {
5095
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-v-219fa683] {
4962
5096
  inline-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
4963
5097
  min-inline-size: max(
4964
5098
  var(--ui-icon-button-size, var(--_size)),
@@ -4967,10 +5101,10 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-b
4967
5101
  min-block-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
4968
5102
  }
4969
5103
  }
4970
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="round"][data-v-b66a1661] {
5104
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="round"][data-v-219fa683] {
4971
5105
  border-radius: var(--ui-radius-round);
4972
5106
  }
4973
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-b66a1661] {
5107
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-219fa683] {
4974
5108
  border-color: var(
4975
5109
  --ui-icon-button-border,
4976
5110
  var(--_icon-button-border, var(--ui-control-border, var(--ui-border-strong)))
@@ -4979,23 +5113,20 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-b
4979
5113
  --ui-icon-button-outline-surface,
4980
5114
  var(--_icon-button-outline-surface, var(--ui-surface-default))
4981
5115
  );
4982
- background-image: var(--ui-raised-highlight);
5116
+ background-image: none;
4983
5117
  color: var(--ui-icon-button-outline-text, var(--_icon-button-text, var(--ui-text-primary)));
4984
- box-shadow: var(--ui-raised);
5118
+ box-shadow: var(--ui-action-shadow, var(--_ui-action-shadow));
4985
5119
  }
4986
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-b66a1661] {
5120
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-219fa683] {
4987
5121
  background-color: var(
4988
5122
  --ui-icon-button-solid-surface,
4989
5123
  var(--_icon-button-solid-surface, var(--ui-accent-solid))
4990
5124
  );
4991
- background-image: var(--ui-raised-highlight);
5125
+ background-image: none;
4992
5126
  color: var(--ui-icon-button-solid-text, var(--_icon-button-solid-text, var(--ui-text-on-accent)));
4993
- box-shadow: var(
4994
- --ui-icon-button-solid-shadow,
4995
- 0 1px 2px color-mix(in srgb, var(--ui-accent-solid) 18%, transparent)
4996
- );
5127
+ box-shadow: var(--ui-icon-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow)));
4997
5128
  }
4998
- [data-component~="ui-icon-button"][data-v-b66a1661]:hover:enabled:not([aria-disabled="true"]) {
5129
+ [data-component~="ui-icon-button"][data-v-219fa683]:hover:enabled:not([aria-disabled="true"]) {
4999
5130
  /* Derived from the text colour so the ghost hover shows on any background. */
5000
5131
  background-color: var(
5001
5132
  --ui-icon-button-hover-surface,
@@ -5003,23 +5134,23 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-b
5003
5134
  );
5004
5135
  color: var(--ui-icon-button-hover-text, var(--_icon-button-text, var(--ui-text-primary)));
5005
5136
  }
5006
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-b66a1661]:hover:enabled:not([aria-disabled="true"]) {
5137
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-219fa683]:hover:enabled:not([aria-disabled="true"]) {
5007
5138
  border-color: var(
5008
5139
  --ui-icon-button-hover-border,
5009
5140
  var(--_icon-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border)))
5010
5141
  );
5011
5142
  }
5012
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-b66a1661]:hover:enabled:not([aria-disabled="true"]) {
5143
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-219fa683]:hover:enabled:not([aria-disabled="true"]) {
5013
5144
  background-color: var(
5014
5145
  --ui-icon-button-solid-hover-surface,
5015
5146
  var(--_icon-button-solid-hover-surface, var(--ui-accent-hover))
5016
5147
  );
5017
5148
  }
5018
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-ui-icon-button-state~="tone=accent"][data-v-b66a1661]:hover:enabled:not([aria-disabled="true"]),
5019
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-ui-icon-button-state~="tone=neutral"][data-v-b66a1661]:hover:enabled:not([aria-disabled="true"]) {
5149
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-ui-icon-button-state~="tone=accent"][data-v-219fa683]:hover:enabled:not([aria-disabled="true"]),
5150
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-ui-icon-button-state~="tone=neutral"][data-v-219fa683]:hover:enabled:not([aria-disabled="true"]) {
5020
5151
  color: var(--ui-icon-button-solid-text, var(--_icon-button-solid-text, var(--ui-text-on-accent)));
5021
5152
  }
5022
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][aria-expanded="true"][data-v-b66a1661]:enabled:not([aria-disabled="true"]) {
5153
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][aria-expanded="true"][data-v-219fa683]:enabled:not([aria-disabled="true"]) {
5023
5154
  background-color: var(
5024
5155
  --ui-icon-button-active-surface,
5025
5156
  color-mix(in srgb, currentColor 16%, transparent)
@@ -5029,7 +5160,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-b
5029
5160
  }
5030
5161
 
5031
5162
  /* Native toggle state persists after pointer release, including during loading. */
5032
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][aria-pressed="true"][data-v-b66a1661]:enabled {
5163
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][aria-pressed="true"][data-v-219fa683]:enabled {
5033
5164
  background-color: var(
5034
5165
  --ui-icon-button-active-surface,
5035
5166
  color-mix(in srgb, currentColor 12%, var(--ui-surface-default))
@@ -5037,47 +5168,61 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-b
5037
5168
  background-image: none;
5038
5169
  box-shadow: var(--ui-pressed);
5039
5170
  }
5040
- [data-component~="ui-icon-button"][data-v-b66a1661]:active:enabled:not([aria-disabled="true"]) {
5171
+ [data-component~="ui-icon-button"][data-v-219fa683]:active:enabled:not([aria-disabled="true"]) {
5041
5172
  transform: scale(var(--ui-icon-button-active-scale, 0.96));
5042
5173
  }
5043
- :is([data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"][data-v-b66a1661], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"][data-v-b66a1661]) {
5174
+ :is([data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"][data-v-219fa683], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"][data-v-219fa683]) {
5044
5175
  cursor: progress;
5045
5176
  }
5046
- .content[data-v-b66a1661] {
5177
+ .content[data-v-219fa683] {
5047
5178
  display: inline-flex;
5048
5179
  align-items: center;
5049
5180
  justify-content: center;
5050
5181
  }
5051
5182
  :is([data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"])
5052
- .content[data-v-b66a1661] {
5183
+ .content[data-v-219fa683] {
5053
5184
  display: none;
5054
5185
  }
5055
5186
  @media (prefers-reduced-motion: reduce) {
5056
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-b66a1661] {
5187
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-219fa683] {
5057
5188
  transition: none;
5058
5189
  }
5059
5190
  }
5060
- [data-component~="ui-icon-button"][data-v-b66a1661]:focus-visible {
5191
+ [data-component~="ui-icon-button"][data-v-219fa683]:focus-visible {
5061
5192
  outline: none;
5062
5193
  box-shadow: var(--ui-focus-halo);
5063
5194
  }
5064
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][aria-pressed="true"][data-v-b66a1661]:enabled:focus-visible {
5195
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-219fa683]:focus-visible {
5196
+ box-shadow:
5197
+ var(--ui-action-shadow, var(--_ui-action-shadow)),
5198
+ var(--ui-focus-halo);
5199
+ }
5200
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-219fa683]:focus-visible {
5201
+ box-shadow:
5202
+ var(--ui-icon-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
5203
+ var(--ui-focus-halo);
5204
+ }
5205
+ [data-component~="ui-icon-button"][data-v-219fa683]:is([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"]):active:enabled:not([aria-disabled="true"]) {
5206
+ background-image: none;
5207
+ box-shadow: var(--ui-pressed);
5208
+ }
5209
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][aria-pressed="true"][data-v-219fa683]:enabled:focus-visible {
5065
5210
  box-shadow:
5066
5211
  var(--ui-pressed),
5067
5212
  var(--ui-focus-halo);
5068
5213
  }
5069
5214
  @media (forced-colors: active) {
5070
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][aria-pressed="true"][data-v-b66a1661]:enabled {
5215
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][aria-pressed="true"][data-v-219fa683]:enabled {
5071
5216
  outline: var(--ui-focus-width) solid Highlight;
5072
5217
  outline-offset: calc(-2 * var(--ui-focus-width));
5073
5218
  }
5074
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][aria-pressed="true"][data-v-b66a1661]:enabled:focus-visible {
5219
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][aria-pressed="true"][data-v-219fa683]:enabled:focus-visible {
5075
5220
  outline-offset: var(--ui-focus-width);
5076
5221
  }
5077
5222
  }
5078
5223
 
5079
5224
  /* Disabled is a flat neutral control, independent of the active variant's tone. */
5080
- [data-component~="ui-icon-button"][data-v-b66a1661]:disabled {
5225
+ [data-component~="ui-icon-button"][data-v-219fa683]:disabled {
5081
5226
  border-color: var(--ui-disabled-border);
5082
5227
  background-color: var(--ui-disabled-surface);
5083
5228
  color: var(--ui-disabled-text);
@@ -5087,23 +5232,23 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-b
5087
5232
  box-shadow: none;
5088
5233
  background-image: none;
5089
5234
  }
5090
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][data-v-b66a1661]:disabled {
5235
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][data-v-219fa683]:disabled {
5091
5236
  border-color: transparent;
5092
5237
  }
5093
- [data-component~="ui-icon-button"][data-v-b66a1661] {
5238
+ [data-component~="ui-icon-button"][data-v-219fa683] {
5094
5239
  --_icon-button-icon-default: var(--ui-icon-size-md);
5095
5240
  /* A slotted ui-icon is its own component, out of reach of the svg rule below; these are its
5096
5241
  defaults, which its own --ui-icon-* hooks still override. */
5097
5242
  --_ui-default-icon-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
5098
5243
  --_ui-default-icon-stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
5099
5244
  }
5100
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-b66a1661] {
5245
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-219fa683] {
5101
5246
  --_icon-button-icon-default: var(--ui-icon-size-sm);
5102
5247
  }
5103
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-b66a1661] {
5248
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-219fa683] {
5104
5249
  --_icon-button-icon-default: var(--ui-icon-size-lg);
5105
5250
  }
5106
- svg[data-v-b66a1661-s] {
5251
+ svg[data-v-219fa683-s] {
5107
5252
  inline-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
5108
5253
  block-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
5109
5254
  flex-shrink: 0;
@@ -5111,7 +5256,7 @@ svg[data-v-b66a1661-s] {
5111
5256
  }
5112
5257
 
5113
5258
  /* A component that sets its display still honours the hidden attribute on its root. */
5114
- [data-component~="ui-icon-button"][hidden][data-v-b66a1661] {
5259
+ [data-component~="ui-icon-button"][hidden][data-v-219fa683] {
5115
5260
  display: none;
5116
5261
  }
5117
5262
 
@@ -5491,7 +5636,7 @@ svg[data-v-b66a1661-s] {
5491
5636
  whole value is. The action slot takes one button at the end, inside the border, for the one
5492
5637
  thing the field is for ("Continue" after a site's address), so it reads as the field's action
5493
5638
  and not the form's. */
5494
- [data-component~="ui-input-group"][data-v-a7fb387e] {
5639
+ [data-component~="ui-input-group"][data-v-ac4d8095] {
5495
5640
  /* The group's own border and height stand for the input's, so the group is a lone Input's height.
5496
5641
  Hooks do not inherit, so these are defaults for the input; its own hooks still win. */
5497
5642
  --_ui-default-input-border-width: 0;
@@ -5536,38 +5681,43 @@ svg[data-v-b66a1661-s] {
5536
5681
  border-color var(--ui-motion-fast) var(--ui-motion-ease),
5537
5682
  box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
5538
5683
  }
5684
+ [data-component~="ui-input-group"][data-ui-input-group-state~="variant=subtle"][data-v-ac4d8095] {
5685
+ border-color: var(--ui-border);
5686
+ background: var(--ui-surface-muted);
5687
+ box-shadow: none;
5688
+ }
5539
5689
 
5540
5690
  /* The frame takes its input's size, so a small group lines up with small buttons and fields. */
5541
- [data-component~="ui-input-group"][data-v-a7fb387e]:has(.field [data-ui-input-state~="size=sm"]) {
5691
+ [data-component~="ui-input-group"][data-v-ac4d8095]:has(.field [data-ui-input-state~="size=sm"]) {
5542
5692
  min-block-size: var(--ui-control-size-sm);
5543
5693
  }
5544
- [data-component~="ui-input-group"][data-v-a7fb387e]:has(.field [data-ui-input-state~="size=lg"]) {
5694
+ [data-component~="ui-input-group"][data-v-ac4d8095]:has(.field [data-ui-input-state~="size=lg"]) {
5545
5695
  min-block-size: var(--ui-control-size-lg);
5546
5696
  }
5547
5697
  @media (pointer: coarse) {
5548
- [data-component~="ui-input-group"][data-v-a7fb387e]:has(.field [data-ui-input-state~="size=sm"]) {
5698
+ [data-component~="ui-input-group"][data-v-ac4d8095]:has(.field [data-ui-input-state~="size=sm"]) {
5549
5699
  min-block-size: var(--ui-control-min-block-size);
5550
5700
  }
5551
5701
  }
5552
- [data-component~="ui-input-group"][data-v-a7fb387e]:hover:not(:has(:is(input, textarea):focus, :is(input, textarea):disabled, :is(input, textarea):read-only, [aria-invalid="true"], :is(:user-invalid, [data-user-invalid]))) {
5702
+ [data-component~="ui-input-group"][data-v-ac4d8095]:hover:not(:has(:is(input, textarea):focus, :is(input, textarea):disabled, :is(input, textarea):read-only, [aria-invalid="true"], :is(:user-invalid, [data-user-invalid]))) {
5553
5703
  border-color: var(--ui-control-border-hover, var(--ui-text-secondary));
5554
5704
  }
5555
5705
 
5556
5706
  /* The ring shows when the field's input would show its own: when it is focus-visible, which a
5557
5707
  text input is for a pointer as well as a keyboard. A focused action button draws its own. */
5558
- [data-component~="ui-input-group"][data-v-a7fb387e]:has(.field :is(input, textarea):focus-visible) {
5708
+ [data-component~="ui-input-group"][data-v-ac4d8095]:has(.field :is(input, textarea):focus-visible) {
5559
5709
  border-color: var(--ui-control-focus, var(--ui-accent-solid));
5560
5710
  box-shadow:
5561
5711
  var(--ui-control-inset),
5562
5712
  var(--ui-control-focus-halo-shadow);
5563
5713
  }
5564
- [data-component~="ui-input-group"][data-v-a7fb387e]:has([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])) {
5714
+ [data-component~="ui-input-group"][data-v-ac4d8095]:has([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])) {
5565
5715
  border-color: var(
5566
5716
  --ui-input-group-invalid-border,
5567
5717
  var(--ui-field-danger, var(--ui-danger-solid))
5568
5718
  );
5569
5719
  }
5570
- [data-component~="ui-input-group"][data-v-a7fb387e]:has(:is(input, textarea):is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible) {
5720
+ [data-component~="ui-input-group"][data-v-ac4d8095]:has(:is(input, textarea):is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible) {
5571
5721
  box-shadow: var(
5572
5722
  --ui-input-group-invalid-focus-shadow,
5573
5723
  var(--ui-control-inset),
@@ -5581,23 +5731,23 @@ svg[data-v-b66a1661-s] {
5581
5731
 
5582
5732
  /* Forced colors drop box shadows, so the focus ring becomes an outline. */
5583
5733
  @media (forced-colors: active) {
5584
- [data-component~="ui-input-group"][data-v-a7fb387e]:has(:is(input, textarea):focus-visible) {
5734
+ [data-component~="ui-input-group"][data-v-ac4d8095]:has(:is(input, textarea):focus-visible) {
5585
5735
  outline: var(--ui-focus-width) solid Highlight;
5586
5736
  outline-offset: var(--ui-border-width);
5587
5737
  }
5588
5738
  }
5589
- [data-component~="ui-input-group"][data-ui-input-group-state~="disabled"][data-v-a7fb387e],
5590
- [data-component~="ui-input-group"][data-v-a7fb387e]:has(:is(input, textarea):disabled) {
5739
+ [data-component~="ui-input-group"][data-ui-input-group-state~="disabled"][data-v-ac4d8095],
5740
+ [data-component~="ui-input-group"][data-v-ac4d8095]:has(:is(input, textarea):disabled) {
5591
5741
  background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
5592
5742
  box-shadow: none;
5593
5743
  cursor: not-allowed;
5594
5744
  }
5595
- .field[data-v-a7fb387e] {
5745
+ .field[data-v-ac4d8095] {
5596
5746
  display: flex;
5597
5747
  flex: 1;
5598
5748
  min-inline-size: 0;
5599
5749
  }
5600
- .affix[data-v-a7fb387e] {
5750
+ .affix[data-v-ac4d8095] {
5601
5751
  display: inline-flex;
5602
5752
  flex: none;
5603
5753
  align-items: center;
@@ -5609,21 +5759,21 @@ svg[data-v-b66a1661-s] {
5609
5759
  }
5610
5760
 
5611
5761
  /* Fixed text is part of the value, but should not look editable. */
5612
- .affix[data-v-a7fb387e]:has([slot="prefix"]),
5613
- .affix[data-v-a7fb387e]:has([slot="suffix"]) {
5762
+ .affix[data-v-ac4d8095]:has([slot="prefix"]),
5763
+ .affix[data-v-ac4d8095]:has([slot="suffix"]) {
5614
5764
  background: var(--ui-surface-muted);
5615
5765
  }
5616
- .affix[data-v-a7fb387e]:has([slot="prefix"]) {
5766
+ .affix[data-v-ac4d8095]:has([slot="prefix"]) {
5617
5767
  border-inline-end: var(--ui-border-width) solid var(--ui-border-divider);
5618
5768
  }
5619
- .affix[data-v-a7fb387e]:has([slot="suffix"]) {
5769
+ .affix[data-v-ac4d8095]:has([slot="suffix"]) {
5620
5770
  border-inline-start: var(--ui-border-width) solid var(--ui-border-divider);
5621
5771
  }
5622
- [data-component~="ui-input-group"][data-ui-input-group-state~="prefixKind=icon"][data-v-a7fb387e] {
5772
+ [data-component~="ui-input-group"][data-ui-input-group-state~="prefixKind=icon"][data-v-ac4d8095] {
5623
5773
  --_ui-default-input-padding-inline-start: var(--ui-space-2);
5624
5774
  }
5625
5775
  [data-component~="ui-input-group"][data-ui-input-group-state~="prefixKind=icon"]
5626
- .affix[data-v-a7fb387e]:first-child {
5776
+ .affix[data-v-ac4d8095]:first-child {
5627
5777
  padding-inline-end: 0;
5628
5778
  border-inline-end: 0;
5629
5779
  background: transparent;
@@ -5631,7 +5781,7 @@ svg[data-v-b66a1661-s] {
5631
5781
 
5632
5782
  /* Centred rather than padded above and below: the group is exactly a lone Input's height, so a
5633
5783
  small button sits inside it with the difference split evenly, and the field keeps its height. */
5634
- .action[data-v-a7fb387e] {
5784
+ .action[data-v-ac4d8095] {
5635
5785
  display: flex;
5636
5786
  flex: none;
5637
5787
  align-items: center;
@@ -5639,14 +5789,14 @@ svg[data-v-b66a1661-s] {
5639
5789
  }
5640
5790
 
5641
5791
  /* Multiline text owns the first row; its action remains inside the same frame below it. */
5642
- [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"][data-v-a7fb387e] {
5792
+ [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"][data-v-ac4d8095] {
5643
5793
  display: grid;
5644
5794
  grid-template-columns: auto minmax(0, 1fr) auto;
5645
5795
  }
5646
- [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"] .field[data-v-a7fb387e] {
5796
+ [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"] .field[data-v-ac4d8095] {
5647
5797
  grid-column: 2;
5648
5798
  }
5649
- [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"] .action[data-v-a7fb387e] {
5799
+ [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"] .action[data-v-ac4d8095] {
5650
5800
  grid-column: 1 / -1;
5651
5801
  justify-content: end;
5652
5802
  padding: var(--ui-space-2);
@@ -5655,30 +5805,30 @@ svg[data-v-b66a1661-s] {
5655
5805
 
5656
5806
  /* The same textarea keeps its full resizeable box. Its text reserves the action's live width,
5657
5807
  so a translated label or pending indicator cannot cover what the person types. */
5658
- [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"][data-ui-input-group-state~="actionPosition=top-end"][data-v-a7fb387e] {
5808
+ [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"][data-ui-input-group-state~="actionPosition=top-end"][data-v-ac4d8095] {
5659
5809
  --_ui-default-textarea-padding-inline-end: calc(
5660
5810
  var(--_ui-input-group-action-inline-size, 7rem) + var(--ui-space-3)
5661
5811
  );
5662
5812
  }
5663
5813
  [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"][data-ui-input-group-state~="actionPosition=top-end"]
5664
- .field[data-v-a7fb387e] {
5814
+ .field[data-v-ac4d8095] {
5665
5815
  grid-row: 1;
5666
5816
  }
5667
5817
  [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"][data-ui-input-group-state~="actionPosition=top-end"]
5668
- .action[data-v-a7fb387e] {
5818
+ .action[data-v-ac4d8095] {
5669
5819
  grid-column: 2;
5670
5820
  grid-row: 1;
5671
5821
  align-self: start;
5672
5822
  justify-self: end;
5673
5823
  padding: var(--ui-space-2);
5674
5824
  }
5675
- .affix[data-v-a7fb387e]:empty,
5676
- .action[data-v-a7fb387e]:empty {
5825
+ .affix[data-v-ac4d8095]:empty,
5826
+ .action[data-v-ac4d8095]:empty {
5677
5827
  display: none;
5678
5828
  }
5679
5829
 
5680
5830
  /* A component that sets its display still honours the hidden attribute on its root. */
5681
- [data-component~="ui-input-group"][hidden][data-v-a7fb387e] {
5831
+ [data-component~="ui-input-group"][hidden][data-v-ac4d8095] {
5682
5832
  display: none;
5683
5833
  }
5684
5834