@planningcenter/topbar 12.3.0-qa-956.0 → 12.4.0-qa-958.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.
package/dist/topbar.css CHANGED
@@ -294,34 +294,29 @@ Caused by products overriding .topbar-wrap’s z-index.
294
294
 
295
295
  .button-XMbeQ {
296
296
  --tds-btn-color: var(--topbar-nav-link-font-color);
297
- --tds-btn-bg: transparent;
298
- --tds-btn-border-color: transparent;
297
+ --tds-btn-bg: var(--t-fill-color-transparency-light-020);
298
+ --tds-btn-border-color: var(--topbar-nav-link-border-color);
299
299
  --tds-btn-color-hover: var(--topbar-nav-link-font-color);
300
- --tds-btn-bg-hover: transparent;
301
- --tds-btn-border-color-hover: transparent;
300
+ --tds-btn-bg-hover: var(--topbar-nav-link-background-color-hover);
301
+ --tds-btn-border-color-hover: var(--topbar-nav-link-border-color);
302
302
  --tds-btn-color-active: var(--topbar-nav-link-font-color);
303
- --tds-btn-bg-active: transparent;
304
- --tds-btn-border-color-active: transparent;
303
+ --tds-btn-bg-active: var(--topbar-nav-link-background-color-active);
304
+ --tds-btn-border-color-active: var(--topbar-nav-link-border-color-active);
305
305
  --tds-btn-text-decoration: none;
306
306
  --tds-btn-font-size: var(--t-font-size-md);
307
307
  --tds-btn-font-weight: var(--t-font-weight-semibold);
308
308
  --tds-btn-line-height: 2;
309
- --tds-btn-min-height: var(--topbar-height);
310
- --tds-btn-border-radius: 0;
311
- --tds-btn-padding-x: 16px;
312
- --tds-btn-padding-truncated-x: 16px;
309
+ --tds-btn-min-height: var(--topbar-nav-link-height);
310
+ --tds-btn-border-radius: var(--t-border-radius-lg);
313
311
  --tds-btn-padding-y: 0;
314
- gap: 6px;
315
312
  font-family: inherit;
316
313
  }
317
314
  .button-XMbeQ:hover, .button-XMbeQ:focus-visible {
318
315
  --tds-btn-text-decoration: none;
319
316
  }
320
-
321
- .button-XMbeQ svg:first-child {
322
- width: 24px !important;
323
- height: 24px !important;
324
- flex-shrink: 0;
317
+ .button-XMbeQ[aria-expanded=true] {
318
+ --tds-btn-bg: var(--topbar-nav-link-background-color-active);
319
+ --tds-btn-border-color: var(--topbar-nav-link-border-color-active);
325
320
  }
326
321
 
327
322
  .label-884of {
@@ -334,27 +329,10 @@ Caused by products overriding .topbar-wrap’s z-index.
334
329
  }
335
330
 
336
331
  .chevron-RRg9k {
337
- box-sizing: border-box;
338
- width: 16px !important;
339
- height: 16px !important;
340
- margin-left: -1px;
341
- padding: var(--t-spacing-fourth);
342
- border-radius: 100%;
343
- color: var(--t-text-color);
332
+ width: 1em !important;
333
+ height: 1em !important;
334
+ color: var(--t-icon-color-secondary);
344
335
  flex-shrink: 0;
345
- transition: background-color 0.12s ease-in, transform 0.12s ease-in;
346
- }
347
- .chevron-RRg9k polygon {
348
- transform: translateY(0.5px);
349
- }
350
- .button-XMbeQ[aria-expanded=true] .chevron-RRg9k {
351
- background-color: var(--t-fill-color-transparency-light-050);
352
- transform: rotate(180deg);
353
- }
354
- @media (hover: hover) {
355
- .button-XMbeQ:hover .chevron-RRg9k {
356
- background-color: var(--t-fill-color-transparency-light-050);
357
- }
358
336
  }
359
337
  .nav-y-6ML {
360
338
  display: flex;
@@ -365,8 +343,6 @@ Caused by products overriding .topbar-wrap’s z-index.
365
343
  }
366
344
 
367
345
  .popover-content-jOAAY {
368
- margin-top: -14px;
369
- margin-left: var(--t-spacing-1-half);
370
346
  min-width: calc(var(--t-spacing-6) * 6);
371
347
  border-radius: var(--t-border-radius-lg);
372
348
  }
@@ -528,24 +504,104 @@ Caused by products overriding .topbar-wrap’s z-index.
528
504
  max-height: calc(100% - var(--topbar-height) - var(--t-spacing-3));
529
505
  }
530
506
 
531
- /* Placeholder until design lands: just enough to tell which product is selected. */
532
- .tab-dz8ki[aria-selected="true"] {
533
- background-color: var(--t-fill-color-interaction);
534
- color: var(--t-text-color-inverted);
535
- font-weight: var(--t-font-weight-semibold);
507
+ .searchButton-fYa5- {
508
+ display: inline-flex;
509
+ align-items: center;
510
+ justify-content: center;
511
+ flex-shrink: 0;
512
+ width: var(--topbar-nav-link-height);
513
+ height: var(--topbar-nav-link-height);
514
+ padding: 0;
515
+ margin-right: var(--t-spacing-half);
516
+ background-color: var(--topbar-nav-link-background-color-active);
517
+ color: var(--topbar-nav-link-font-color);
518
+ border: var(--t-border-width) solid var(--topbar-nav-link-border-color-active);
519
+ border-radius: var(--topbar-nav-link-border-radius);
520
+ cursor: pointer;
521
+ transition: var(--topbar-nav-link-transition);
536
522
  }
537
523
 
538
- /* Placeholder until design lands: just enough to see which result is highlighted. */
539
- .result-Thq2C {
540
- display: block;
524
+ /* Sits bare in the small topbar's header, the same target as the avatar's. */
525
+ .searchButton-fYa5-.mobile-ksZyA {
526
+ width: var(--t-container-size-xl);
527
+ height: var(--t-container-size-xl);
528
+ margin-right: 0;
529
+ background-color: transparent;
530
+ color: var(--t-text-color-headline);
531
+ border: 0;
532
+ border-radius: 0;
541
533
  }
542
534
 
543
- .result-Thq2C[aria-selected="true"] {
544
- background-color: var(--t-fill-color-interaction);
545
- color: var(--t-text-color-inverted);
535
+ .modal-NR3TO {
536
+ height: 640px;
537
+ max-height: calc(100vh - var(--t-spacing-3) * 2);
538
+ /* Keeps the results panel's background inside the rounded corners. */
539
+ overflow: hidden;
540
+ border: var(--t-border-width) solid var(--t-border-color);
541
+ }
542
+
543
+ /*
544
+ * On a phone, fill the screen rather than float at a desktop height, with
545
+ * tighter padding inside. The search field, product select and results panel
546
+ * read the padding from --product-search-padding. Result rows and headings
547
+ * pad themselves by --product-search-row-inset, narrower here so the
548
+ * highlight sits closer to the content, and the panel's sides take that off
549
+ * to line their images and text up with the search icon.
550
+ */
551
+ .modal-NR3TO.mobile-4e5rC {
552
+ --product-search-padding: var(--t-spacing-2);
553
+ --product-search-row-inset: var(--t-spacing-1);
554
+ --product-search-results-inset: calc(
555
+ var(--product-search-padding) - var(--product-search-row-inset)
556
+ );
557
+
558
+ height: calc(100vh - var(--t-spacing-3) * 2);
559
+ padding-block-start: var(--product-search-padding);
546
560
  }
547
561
 
548
- .visuallyHidden-S9VG5 {
562
+ /* Fits mobile Safari's visible viewport, between its toolbars. */
563
+ @supports (height: 100dvh) {
564
+ .modal-NR3TO {
565
+ max-height: calc(100dvh - var(--t-spacing-3) * 2);
566
+ }
567
+
568
+ .modal-NR3TO.mobile-4e5rC {
569
+ height: calc(100dvh - var(--t-spacing-3) * 2);
570
+ }
571
+ }
572
+
573
+ /*
574
+ * Tapestry only takes a class for the dialog, so on a phone its overlay and
575
+ * frame are reached through it: both narrow their margins to 8px, and the
576
+ * frame fills the dynamic viewport, which follows Safari's toolbars as they
577
+ * show and hide. The dialog stretches to fill the frame.
578
+ *
579
+ * Mobile Safari draws the keyboard over the page without shrinking 100dvh,
580
+ * so while it's open the frame sizes to the visible viewport instead. A
581
+ * bottom margin the keyboard's height keeps the overlay's centering above it.
582
+ */
583
+ @supports selector(:has(*)) {
584
+ .tds-modal-overlay:has(.mobile-4e5rC) {
585
+ --tds-modal-min-margin-block: var(--t-spacing-1);
586
+ }
587
+
588
+ .tds-modal-frame:has(> .mobile-4e5rC) {
589
+ --tds-modal-edge-margin-inline: var(--t-spacing-1);
590
+
591
+ height: calc(100vh - var(--t-spacing-1) * 2);
592
+ height: calc(
593
+ var(--visual-viewport-height, 100dvh) - var(--t-spacing-1) * 2
594
+ );
595
+ margin-block-end: calc(100dvh - var(--visual-viewport-height, 100dvh));
596
+ }
597
+
598
+ .modal-NR3TO.mobile-4e5rC {
599
+ height: auto;
600
+ max-height: none;
601
+ }
602
+ }
603
+
604
+ .visuallyHidden-C28ju {
549
605
  position: absolute;
550
606
  width: 1px;
551
607
  height: 1px;
@@ -554,6 +610,369 @@ Caused by products overriding .topbar-wrap’s z-index.
554
610
  white-space: nowrap;
555
611
  }
556
612
 
613
+ /* Scrolls the results under the product picker, tabs or dropdown. */
614
+ @property --scroll-shadow-offset {
615
+ syntax: "<length>";
616
+ inherits: false;
617
+ initial-value: 0px;
618
+ }
619
+
620
+ @keyframes scroll-shadow-slide-RlHcf {
621
+ to {
622
+ --scroll-shadow-offset: 12px;
623
+ }
624
+ }
625
+
626
+ .panel-HlF7S {
627
+ --scroll-shadow-cover: var(--t-surface-color-card);
628
+ --scroll-shadow: color-mix(
629
+ in srgb,
630
+ var(--t-fill-color-transparency-dark-static-010) 55%,
631
+ transparent
632
+ );
633
+
634
+ flex: 1;
635
+ min-height: 0;
636
+ padding: var(--product-search-padding, var(--t-spacing-3))
637
+ var(
638
+ --product-search-results-inset,
639
+ var(--product-search-padding, var(--t-spacing-3))
640
+ );
641
+ /* Lets results lay out by the panel's width rather than the viewport's. */
642
+ container-type: inline-size;
643
+ scroll-padding-block: var(--product-search-padding, var(--t-spacing-3));
644
+ overflow-y: auto;
645
+ overscroll-behavior: contain;
646
+ background:
647
+ linear-gradient(transparent, var(--scroll-shadow-cover) 28px) bottom /
648
+ 100% 48px no-repeat local,
649
+ radial-gradient(
650
+ farthest-side at 50% 100%,
651
+ var(--scroll-shadow),
652
+ transparent
653
+ )
654
+ left 0 bottom calc(var(--scroll-shadow-offset) * -1) / 100% 12px
655
+ no-repeat scroll;
656
+ animation: scroll-shadow-slide-RlHcf linear both;
657
+ animation-range: calc(100% - 48px) 100%;
658
+ animation-timeline: scroll(self);
659
+ }
660
+
661
+ .container-YDdM1 {
662
+ display: flex;
663
+ flex-shrink: 0;
664
+ flex-wrap: wrap;
665
+ gap: var(--t-spacing-1);
666
+ padding: var(--t-spacing-1) var(--t-spacing-1-half);
667
+ margin: 0;
668
+ list-style: none;
669
+ border-top: var(--t-border-width) solid var(--t-border-color);
670
+ }
671
+
672
+ .hint-017Rd {
673
+ display: flex;
674
+ flex-shrink: 0;
675
+ align-items: center;
676
+ gap: var(--t-spacing-1);
677
+ padding: var(--t-spacing-half) var(--t-spacing-1);
678
+ border-radius: var(--t-border-radius-lg);
679
+ transition: background-color var(--t-duration-500) var(--t-ease-out);
680
+ color: var(--t-text-color-placeholder);
681
+ font-size: var(--t-font-size-sm);
682
+ }
683
+
684
+ .keycap-ENJM2 {
685
+ --keycap-size: 24px;
686
+ --keycap-padding: 4px;
687
+
688
+ display: inline-flex;
689
+ align-items: center;
690
+ justify-content: center;
691
+ width: var(--keycap-size);
692
+ height: var(--keycap-size);
693
+ padding: var(--keycap-padding);
694
+ background-color: var(--t-fill-color-neutral-070);
695
+ color: var(--t-text-color-placeholder);
696
+ font-family: inherit;
697
+ font-size: calc(var(--keycap-size) - var(--keycap-padding) * 2);
698
+ font-weight: var(--t-font-weight-semibold);
699
+ border-radius: var(--t-border-radius-md);
700
+ }
701
+
702
+ .keycap-ENJM2 svg {
703
+ flex-shrink: 0;
704
+ width: 1.4em;
705
+ width: 2cap;
706
+ height: 1.4em;
707
+ height: 2cap;
708
+ stroke-width: 2;
709
+ }
710
+
711
+ .copied-DUFa1 {
712
+ background-color: var(--t-fill-color-status-success-ghost);
713
+ transition: none;
714
+ }
715
+
716
+ .icon-XKLvN {
717
+ position: relative;
718
+ display: block;
719
+ flex-shrink: 0;
720
+ }
721
+
722
+ .icon-XKLvN::before {
723
+ content: "";
724
+ position: absolute;
725
+ inset: 12.5%;
726
+ background-color: hsl(0, 0%, 100%);
727
+ border-radius: 20%;
728
+ }
729
+
730
+ .squircle-JCHr6 {
731
+ position: absolute;
732
+ inset: 0;
733
+ mask-size: 100%;
734
+ }
735
+
736
+ .picker-iuzzj {
737
+ flex-shrink: 0;
738
+ padding: 0 var(--product-search-padding, var(--t-spacing-3)) var(--t-spacing-2);
739
+ border-bottom: var(--t-border-width) solid var(--t-border-color);
740
+ }
741
+
742
+ .option--7LXg {
743
+ display: inline-flex;
744
+ align-items: center;
745
+ gap: var(--t-spacing-1);
746
+ }
747
+
748
+ .tablist-7ASvc {
749
+ display: flex;
750
+ flex-shrink: 0;
751
+ gap: var(--t-spacing-half);
752
+ padding-inline: var(--t-spacing-2);
753
+ padding-top: var(--t-spacing-2);
754
+ border-bottom: var(--t-border-width) solid var(--t-border-color);
755
+ }
756
+
757
+ .tab-dz8ki {
758
+ position: relative;
759
+ display: inline-flex;
760
+ align-items: center;
761
+ justify-content: center;
762
+ gap: var(--t-spacing-1);
763
+ min-width: 48px;
764
+ height: 40px;
765
+ padding: 0 var(--t-spacing-2);
766
+ margin-bottom: calc(var(--t-border-width) * -1);
767
+ background-color: var(--t-fill-color-neutral-070);
768
+ color: var(--t-text-color-secondary);
769
+ font-size: var(--t-font-size-md);
770
+ border: var(--t-border-width) solid transparent;
771
+ border-bottom-color: var(--t-border-color);
772
+ border-radius: var(--t-border-radius-md) var(--t-border-radius-md) 0 0;
773
+ cursor: pointer;
774
+ }
775
+
776
+ .tab-dz8ki:hover {
777
+ background-color: var(--t-fill-color-neutral-060);
778
+ }
779
+
780
+ .tab-dz8ki:focus-visible {
781
+ z-index: 1;
782
+ outline: none;
783
+ }
784
+
785
+ .tab-dz8ki:focus-visible::after {
786
+ content: "";
787
+ position: absolute;
788
+ /* Measured from inside the tab's border, so step out past it too. */
789
+ inset: calc((var(--t-focus-ring-offset) + var(--t-border-width)) * -1);
790
+ border-radius: calc(var(--t-border-radius-md) + var(--t-focus-ring-offset));
791
+ box-shadow: 0 0 0 var(--t-focus-ring-width) var(--t-focus-ring-color);
792
+ pointer-events: none;
793
+ }
794
+
795
+ .tab-dz8ki[aria-selected="true"] {
796
+ background-color: var(--t-surface-color-card);
797
+ border-color: var(--t-border-color);
798
+ border-bottom-color: var(--t-surface-color-card);
799
+ cursor: default;
800
+ }
801
+
802
+ .result-Thq2C {
803
+ display: flex;
804
+ align-items: center;
805
+ gap: 12px;
806
+ min-height: 56px;
807
+ padding: var(--t-spacing-1) var(--product-search-row-inset, 12px);
808
+ color: var(--t-text-color);
809
+ text-decoration: none;
810
+ border-radius: var(--t-border-radius-lg);
811
+ /* Taps get the highlight below instead of the browser's grey flash. */
812
+ -webkit-tap-highlight-color: transparent;
813
+ }
814
+
815
+ .result-Thq2C:hover,
816
+ .result-Thq2C:focus,
817
+ .result-Thq2C:active,
818
+ .result-Thq2C:visited {
819
+ color: var(--t-text-color);
820
+ text-decoration: none;
821
+ }
822
+
823
+ .result-Thq2C[aria-selected="true"],
824
+ .result-Thq2C:active {
825
+ background-color: var(--t-fill-color-button-interaction-ghost-hover);
826
+ }
827
+
828
+ .title-KYUEn {
829
+ flex-shrink: 0;
830
+ max-width: 60%;
831
+ overflow: hidden;
832
+ font-size: var(--t-font-size-lg);
833
+ text-overflow: ellipsis;
834
+ white-space: nowrap;
835
+ }
836
+
837
+ .subtitle-R2haq {
838
+ min-width: 0;
839
+ overflow: hidden;
840
+ color: var(--t-text-color-secondary);
841
+ font-size: var(--t-font-size-sm);
842
+ text-overflow: ellipsis;
843
+ white-space: nowrap;
844
+ }
845
+
846
+ .image-KVDor {
847
+ --result-image-size: 32px;
848
+
849
+ position: relative;
850
+ flex-shrink: 0;
851
+ width: var(--result-image-size);
852
+ height: var(--result-image-size);
853
+ }
854
+
855
+ .avatar-6Gh62,
856
+ .photo-FZR3Q {
857
+ display: block;
858
+ width: 100%;
859
+ height: 100%;
860
+ object-fit: cover;
861
+ }
862
+
863
+ .avatar-6Gh62 {
864
+ border-radius: 50%;
865
+ }
866
+
867
+ .photo-FZR3Q {
868
+ border-radius: var(--t-border-radius-md);
869
+ }
870
+
871
+ .badge-trUKt {
872
+ position: absolute;
873
+ right: -4px;
874
+ bottom: -4px;
875
+ filter: drop-shadow(0 1px 1px var(--t-fill-color-transparency-dark-static-010));
876
+ }
877
+
878
+
879
+ /*
880
+ * Too narrow for the title and meta to share a line, as on a phone, so they
881
+ * stack beside a smaller image.
882
+ */
883
+ @container (max-width: 480px) {
884
+ .result-Thq2C {
885
+ display: grid;
886
+ grid-template-columns: auto minmax(0, 1fr);
887
+ align-content: center;
888
+ gap: 0 12px;
889
+ }
890
+
891
+ .image-KVDor {
892
+ --result-image-size: 28px;
893
+
894
+ grid-row: span 2;
895
+ align-self: center;
896
+ }
897
+
898
+ .title-KYUEn {
899
+ max-width: none;
900
+ }
901
+ }
902
+
903
+ .message-1-PP- {
904
+ margin: 0;
905
+ padding-block: var(--t-spacing-5);
906
+ color: var(--t-text-color-secondary);
907
+ text-align: center;
908
+ }
909
+
910
+ .heading-LioUF {
911
+ padding: var(--t-spacing-1) var(--product-search-row-inset, 12px);
912
+ color: var(--t-text-color-secondary);
913
+ font-size: var(--t-font-size-sm);
914
+ }
915
+
916
+ .heading-LioUF:not(:first-child) {
917
+ margin-top: var(--t-spacing-2);
918
+ }
919
+
920
+ .header-sXEyG {
921
+ display: flex;
922
+ flex-shrink: 0;
923
+ align-items: center;
924
+ gap: var(--t-spacing-1);
925
+ padding: 0 var(--product-search-padding, var(--t-spacing-3)) var(--t-spacing-2);
926
+ cursor: text;
927
+ }
928
+
929
+ .input-YQkTC {
930
+ flex: 1;
931
+ min-width: 0;
932
+ padding: 0;
933
+ background: none;
934
+ color: var(--t-text-color);
935
+ font: inherit;
936
+ font-size: var(--t-font-size-xl);
937
+ border: 0;
938
+ outline: none;
939
+ }
940
+
941
+ .input-YQkTC::placeholder {
942
+ color: var(--t-text-color-placeholder);
943
+ }
944
+
945
+ .input-YQkTC::-webkit-search-cancel-button {
946
+ appearance: none;
947
+ }
948
+
949
+ .clearButton-9Yh9w {
950
+ --clear-button-size: 20px;
951
+
952
+ display: inline-flex;
953
+ align-items: center;
954
+ justify-content: center;
955
+ flex-shrink: 0;
956
+ width: var(--clear-button-size);
957
+ height: var(--clear-button-size);
958
+ padding: 0;
959
+ background: var(--t-fill-color-neutral-030);
960
+ color: #fff;
961
+ border: 0;
962
+ border-radius: var(--t-border-radius-round);
963
+ cursor: pointer;
964
+ transition: var(--topbar-slight-transition-background);
965
+ }
966
+
967
+ .clearButton-9Yh9w:hover {
968
+ background-color: var(--t-fill-color-neutral-040);
969
+ }
970
+
971
+ .clearButton-9Yh9w svg {
972
+ height: calc(var(--clear-button-size) * 0.65);
973
+ width: calc(var(--clear-button-size) * 0.65);
974
+ }
975
+
557
976
  .route--8BWe {
558
977
  font-size: var(--topbar-nav-link-font-size);
559
978
  font-family: inherit;
@@ -600,6 +1019,9 @@ Caused by products overriding .topbar-wrap’s z-index.
600
1019
  }
601
1020
 
602
1021
  .trigger-wrap-Jd-KR {
1022
+ /* Lets the trigger shrink, truncating the org name, when the nav runs out
1023
+ of room */
1024
+ min-width: 0;
603
1025
  margin-left: var(--t-spacing-1);
604
1026
  position: relative;
605
1027
  white-space: nowrap;
@@ -615,6 +1037,7 @@ Caused by products overriding .topbar-wrap’s z-index.
615
1037
  border: var(--t-border-width) solid var(--topbar-nav-link-border-color-active);
616
1038
  border-radius: var(--topbar-nav-link-border-radius);
617
1039
  min-width: var(--t-container-size-md);
1040
+ max-width: 100%;
618
1041
  transition: var(--topbar-nav-link-transition);
619
1042
  display: flex;
620
1043
  align-items: center;
@@ -625,6 +1048,7 @@ Caused by products overriding .topbar-wrap’s z-index.
625
1048
  }
626
1049
 
627
1050
  .trigger-WgRT5 svg {
1051
+ flex-shrink: 0;
628
1052
  transition: transform var(--topbar-slight-transition);
629
1053
  /* Negative margin ensures button is a circle when orgname isn’t visible */
630
1054
  margin-left: calc(var(--t-spacing-1) * -1);
@@ -939,13 +1363,35 @@ Caused by products overriding .topbar-wrap’s z-index.
939
1363
  background-color: var(--t-fill-color-button-interaction-outline-active);
940
1364
  }
941
1365
 
1366
+ /*
1367
+ * Spaces the header's buttons on the right. Each is the same touch target;
1368
+ * the padding keeps the avatar, and the title's width, where they were
1369
+ * before search joined it.
1370
+ */
1371
+ .actions-INQ7- {
1372
+ display: flex;
1373
+ flex-shrink: 0;
1374
+ align-items: center;
1375
+ padding-inline: var(--t-spacing-1-half) var(--t-spacing-1);
1376
+ }
1377
+
942
1378
  .profile-button-a2WO2 {
1379
+ display: flex;
1380
+ align-items: center;
1381
+ justify-content: center;
1382
+ width: var(--t-container-size-xl);
1383
+ height: var(--t-container-size-xl);
1384
+ padding: 0;
943
1385
  background-color: transparent;
944
1386
  border-width: 0;
945
- padding: var(--t-spacing-2);
946
1387
  appearance: none;
947
1388
  }
948
1389
 
1390
+ /* Centers the avatar in its target, without its own leading margin. */
1391
+ .profile-button-a2WO2 > div {
1392
+ margin-left: 0;
1393
+ }
1394
+
949
1395
  .debug-pco-resource-sLteM {
950
1396
  display: flex;
951
1397
  flex-direction: column;
@@ -1435,4 +1881,70 @@ Caused by products overriding .topbar-wrap’s z-index.
1435
1881
  color: var(--t-icon-color-status-neutral-secondary);
1436
1882
  }
1437
1883
 
1884
+ .button-2NVI1 {
1885
+ --local-ask-ai-gradient: linear-gradient(
1886
+ 163.5deg,
1887
+ var(--t-fill-color-tag-teal-040) 0%,
1888
+ var(--t-fill-color-tag-blue-040) 35.27%,
1889
+ var(--t-fill-color-tag-purple-040) 65.62%,
1890
+ var(--t-fill-color-tag-orange-040) 100%
1891
+ );
1892
+
1893
+ position: relative;
1894
+ display: inline-flex;
1895
+ align-items: center;
1896
+ justify-content: center;
1897
+ gap: var(--t-spacing-half);
1898
+ height: var(--t-container-size-md);
1899
+ padding: 0 var(--t-spacing-1);
1900
+ border: var(--t-border-width) solid transparent;
1901
+ border-radius: var(--t-border-radius-md);
1902
+ background:
1903
+ linear-gradient(
1904
+ var(--t-fill-color-button-neutral-outline),
1905
+ var(--t-fill-color-button-neutral-outline)
1906
+ )
1907
+ padding-box,
1908
+ var(--local-ask-ai-gradient) border-box;
1909
+ overflow: hidden;
1910
+ cursor: pointer;
1911
+ font: inherit;
1912
+ appearance: none;
1913
+ -webkit-appearance: none;
1914
+ }
1915
+
1916
+ .button-2NVI1::before {
1917
+ content: "";
1918
+ position: absolute;
1919
+ inset: 0;
1920
+ background-image: var(--local-ask-ai-gradient);
1921
+ opacity: 0;
1922
+ pointer-events: none;
1923
+ }
1924
+
1925
+ .button-2NVI1:hover::before {
1926
+ opacity: 0.15;
1927
+ }
1928
+
1929
+ .button-2NVI1:active::before {
1930
+ opacity: 0.25;
1931
+ }
1932
+
1933
+ .button-2NVI1:focus-visible {
1934
+ outline: var(--t-focus-ring-outline);
1935
+ outline-offset: var(--t-focus-ring-offset);
1936
+ }
1937
+
1938
+ .sparkle-ruJGP {
1939
+ position: relative;
1940
+ flex-shrink: 0;
1941
+ }
1942
+
1943
+ .label-4NUGB {
1944
+ position: relative;
1945
+ font-size: var(--t-font-size-sm);
1946
+ line-height: 1.35;
1947
+ color: var(--t-text-color);
1948
+ }
1949
+
1438
1950
  /*# sourceMappingURL=topbar.css.map */