@sc-360-v2/storefront-cms-library 0.5.53 → 0.5.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/add-products-tab-details.scss +3 -0
  2. package/dist/allocation-header-quota-details.scss +520 -0
  3. package/dist/allocationDetails.scss +617 -644
  4. package/dist/allocations-quota-details.scss +454 -0
  5. package/dist/allocations.scss +8 -0
  6. package/dist/amount-estimator.scss +1088 -1083
  7. package/dist/badge.scss +396 -388
  8. package/dist/breadcrumbs.scss +17 -0
  9. package/dist/builder.js +1 -1
  10. package/dist/bulk-variant-picker.scss +4 -0
  11. package/dist/bundle copy.scss +26 -0
  12. package/dist/bundle.scss +10 -0
  13. package/dist/bundleDetails.scss +14 -0
  14. package/dist/button copy.scss +2 -0
  15. package/dist/button.scss +2 -0
  16. package/dist/buyForHeaders.scss +19 -0
  17. package/dist/cart-details.scss +101 -18
  18. package/dist/cart-summary.scss +18 -0
  19. package/dist/cart.scss +2 -0
  20. package/dist/cartAttributes.scss +4 -0
  21. package/dist/category-groups-quota-details.scss +124 -38
  22. package/dist/checkout.scss +6 -0
  23. package/dist/countdown.scss +2 -0
  24. package/dist/coupon.scss +8 -0
  25. package/dist/embroidery.scss +2 -0
  26. package/dist/employee-bulk-order.scss +5 -0
  27. package/dist/faq.scss +9 -0
  28. package/dist/filters.scss +2 -0
  29. package/dist/form-zindex-module.scss +24 -24
  30. package/dist/gallery-slider-temp.scss +205 -14
  31. package/dist/hotspot.scss +5 -1
  32. package/dist/icon-list.scss +2 -0
  33. package/dist/kitDetails.scss +2 -0
  34. package/dist/kits.scss +2 -0
  35. package/dist/language-selector.scss +2 -0
  36. package/dist/last-x-orders.scss +5 -0
  37. package/dist/login.scss +63 -9
  38. package/dist/map.scss +6 -0
  39. package/dist/mega-menu.scss +41 -0
  40. package/dist/menu-v2.scss +83 -6
  41. package/dist/order-status.scss +228 -136
  42. package/dist/past-orders.scss +989 -975
  43. package/dist/pickup-locations.scss +1172 -1167
  44. package/dist/product-image-allocation.scss +59 -0
  45. package/dist/product-inventory.scss +1381 -1378
  46. package/dist/product-promotions.scss +2768 -2759
  47. package/dist/product-sizechart.scss +4 -0
  48. package/dist/profile.scss +8 -0
  49. package/dist/quantity-selector.scss +4 -0
  50. package/dist/quick-inventory-check.scss +5 -0
  51. package/dist/quick-order-pad.scss +5 -0
  52. package/dist/quota-details.scss +99 -15
  53. package/dist/repeater copy.scss +3 -0
  54. package/dist/repeater-grid-toggle.scss +2 -0
  55. package/dist/repeater.scss +2 -0
  56. package/dist/rfqs.scss +10 -0
  57. package/dist/scroll.scss +46 -0
  58. package/dist/search.scss +4 -0
  59. package/dist/shipping-payments.scss +4 -0
  60. package/dist/social.scss +5 -0
  61. package/dist/store-locations.scss +1402 -1398
  62. package/dist/tab-v2.scss +2 -0
  63. package/dist/table-common.scss +509 -506
  64. package/dist/table.scss +687 -685
  65. package/dist/types/builder/tools/element-edit/addProductsTab.d.ts +28 -0
  66. package/dist/types/builder/tools/element-edit/allocationDetails.d.ts +5 -0
  67. package/dist/types/builder/tools/element-edit/allocations.d.ts +1 -0
  68. package/dist/types/builder/tools/element-edit/breadcrumbs.d.ts +5 -0
  69. package/dist/types/builder/tools/element-edit/bundle.d.ts +40 -0
  70. package/dist/types/builder/tools/element-edit/bundleDetails.d.ts +20 -0
  71. package/dist/types/builder/tools/element-edit/buttonInstance.d.ts +18 -0
  72. package/dist/types/builder/tools/element-edit/buyForWithTab.d.ts +1 -0
  73. package/dist/types/builder/tools/element-edit/cartAttributes.d.ts +9 -0
  74. package/dist/types/builder/tools/element-edit/cartDetails.d.ts +79 -1
  75. package/dist/types/builder/tools/element-edit/cartSummary.d.ts +259 -0
  76. package/dist/types/builder/tools/element-edit/categoryGroups.d.ts +28 -0
  77. package/dist/types/builder/tools/element-edit/checkout.d.ts +1 -0
  78. package/dist/types/builder/tools/element-edit/common.d.ts +23 -0
  79. package/dist/types/builder/tools/element-edit/countdown.d.ts +1 -0
  80. package/dist/types/builder/tools/element-edit/coupon.d.ts +19 -0
  81. package/dist/types/builder/tools/element-edit/embroidery.d.ts +9 -0
  82. package/dist/types/builder/tools/element-edit/filterResults.d.ts +10 -0
  83. package/dist/types/builder/tools/element-edit/gallery-slider.d.ts +19 -0
  84. package/dist/types/builder/tools/element-edit/icon-list.d.ts +31 -0
  85. package/dist/types/builder/tools/element-edit/iconInstace.d.ts +1 -0
  86. package/dist/types/builder/tools/element-edit/iconLibrary.d.ts +2 -7
  87. package/dist/types/builder/tools/element-edit/kitDetails.d.ts +19 -0
  88. package/dist/types/builder/tools/element-edit/kits.d.ts +9 -0
  89. package/dist/types/builder/tools/element-edit/language-menu.d.ts +0 -1
  90. package/dist/types/builder/tools/element-edit/orderStatus.d.ts +320 -168
  91. package/dist/types/builder/tools/element-edit/quickLinks.d.ts +10 -0
  92. package/dist/types/builder/tools/element-edit/quotaDetails.d.ts +1 -0
  93. package/dist/types/builder/tools/element-edit/rfqs.d.ts +5 -0
  94. package/dist/types/builder/tools/element-edit/scroll.d.ts +1 -0
  95. package/dist/types/builder/tools/element-edit/shipping-payments.d.ts +2 -0
  96. package/dist/types/builder/tools/element-edit/social.d.ts +1 -0
  97. package/dist/types/builder/tools/element-edit/table.d.ts +1 -0
  98. package/dist/types/builder/tools/element-edit/tabs.d.ts +18 -0
  99. package/dist/types/builder/tools/element-edit/tabsV2.d.ts +17 -0
  100. package/dist/types/builder/tools/element-edit/userElements.d.ts +197 -7
  101. package/dist/types/builder/tools/element-edit/video.d.ts +2 -0
  102. package/dist/user-elements.scss +263 -221
  103. package/dist/variant-picker.scss +2 -0
  104. package/dist/video.scss +2 -0
  105. package/dist/volume-pricing.scss +3 -0
  106. package/package.json +1 -1
@@ -4,6 +4,36 @@
4
4
 
5
5
  $resizerId: "[data-cms-tool='cms-element-resizer']";
6
6
  $resizeActive: '[data-cms-element-resizer="true"]';
7
+ $overflowSelector: ".flex__overflow";
8
+
9
+ // Image Position stores the same compass values the image element uses (they map to
10
+ // Sirv's `canvas.position`); these are their CSS object-position equivalents.
11
+ $imagePositions: (
12
+ "north": center top,
13
+ "northeast": right top,
14
+ "northwest": left top,
15
+ "center": center center,
16
+ "south": center bottom,
17
+ "southeast": right bottom,
18
+ "southwest": left bottom,
19
+ "east": right center,
20
+ "west": left center,
21
+ );
22
+
23
+ // Every divider in this widget is an absolutely positioned pseudo-element, so it takes
24
+ // no space of its own and a thick one used to grow back over the text beside it.
25
+ // Pairing this offset with `dividerGapReserve` on the item itself keeps the whole
26
+ // divider inside the gap at any weight, with half the item spacing clear either side.
27
+ @function dividerGapOffset($spacing-var, $weight-var) {
28
+ @return calc(
29
+ -1 * (#{prepareMediaVariable($spacing-var)} / 2) - #{prepareMediaVariable($weight-var)}
30
+ );
31
+ }
32
+
33
+ @mixin dividerGapReserve($weight-var, $side: bottom) {
34
+ margin-#{$side}: prepareMediaVariable($weight-var);
35
+ }
36
+
7
37
  [data-div-type="element"] {
8
38
  &[data-element-type="userElements"] {
9
39
  // width: var(
@@ -509,23 +539,19 @@ $resizeActive: '[data-cms-element-resizer="true"]';
509
539
 
510
540
  &[data-display-type="Vertical"] {
511
541
  &[data-show-divider="true"] {
542
+ .user__element__item:not(:last-child) {
543
+ @include dividerGapReserve(--_ctm-dn-wt-se-dr-wt);
544
+ }
545
+
512
546
  .user__element__item:not(:last-child)::before {
513
547
  content: "";
514
548
  position: absolute;
515
549
  left: 0;
516
550
  right: 0;
517
- bottom: calc(
518
- -1 * (var(--_ctm-mob-lt-im-sg, var(--_ctm-tab-lt-im-sg, var(--_ctm-lt-im-sg))) / 2)
519
- );
551
+ bottom: dividerGapOffset(--_ctm-lt-im-sg, --_ctm-dn-wt-se-dr-wt);
520
552
 
521
- height: var(
522
- --_ctm-mob-dn-wt-se-dr-wt,
523
- var(--_ctm-tab-dn-wt-se-dr-wt, var(--_ctm-dn-wt-se-dr-wt))
524
- );
525
- background-color: var(
526
- --_ctm-mob-dn-wt-se-dr-cr,
527
- var(--_ctm-tab-dn-wt-se-dr-cr, var(--_ctm-dn-wt-se-dr-cr))
528
- );
553
+ height: prepareMediaVariable(--_ctm-dn-wt-se-dr-wt);
554
+ background-color: prepareMediaVariable(--_ctm-dn-wt-se-dr-cr);
529
555
  }
530
556
  }
531
557
 
@@ -622,29 +648,22 @@ $resizeActive: '[data-cms-element-resizer="true"]';
622
648
  width: 100%;
623
649
  }
624
650
  }
625
- .embla__slide:not(:last-child)::before {
626
- content: "";
627
- position: absolute;
651
+ // This row divider was drawn unconditionally, so the section's Divider
652
+ // toggle had nothing to switch off in the maximized layout.
653
+ &[data-show-divider="true"] {
654
+ .embla__slide:not(:last-child) {
655
+ @include dividerGapReserve(--_ctm-dn-qa-dn-fl-ad-oy-dr-wt, right);
656
+ }
628
657
 
629
- background-color: var(
630
- --_ctm-mob-dn-qa-dn-fl-ad-oy-dr-cr,
631
- var(--_ctm-tab-dn-qa-dn-fl-ad-oy-dr-cr, var(--_ctm-dn-qa-dn-fl-ad-oy-dr-cr))
632
- );
633
- right: calc(
634
- -1 *
635
- (
636
- var(
637
- --_ctm-mob-lt-qa-im-sg,
638
- var(--_ctm-tab-lt-qa-im-sg, var(--_ctm-lt-qa-im-sg))
639
- ) /
640
- 2
641
- )
642
- );
643
- height: 100%;
644
- width: var(
645
- --_ctm-mob-dn-qa-dn-fl-ad-oy-dr-wt,
646
- var(--_ctm-tab-dn-qa-dn-fl-ad-oy-dr-wt, var(--_ctm-dn-qa-dn-fl-ad-oy-dr-wt))
647
- );
658
+ .embla__slide:not(:last-child)::before {
659
+ content: "";
660
+ position: absolute;
661
+
662
+ background-color: prepareMediaVariable(--_ctm-dn-qa-dn-fl-ad-oy-dr-cr);
663
+ right: dividerGapOffset(--_ctm-lt-qa-im-sg, --_ctm-dn-qa-dn-fl-ad-oy-dr-wt);
664
+ height: 100%;
665
+ width: prepareMediaVariable(--_ctm-dn-qa-dn-fl-ad-oy-dr-wt);
666
+ }
648
667
  }
649
668
  .quota_label {
650
669
  white-space: nowrap;
@@ -664,30 +683,24 @@ $resizeActive: '[data-cms-element-resizer="true"]';
664
683
  .allowance_label_wrapper {
665
684
  flex-shrink: 0;
666
685
  }
667
- .embla__slide:not(:last-child)::before {
668
- content: "";
669
- position: absolute;
686
+ // Same: gated on the section's own Divider toggle.
687
+ &[data-show-divider="true"] {
688
+ .embla__slide:not(:last-child) {
689
+ @include dividerGapReserve(--_ctm-dn-ae-dn-fl-ad-oy-dr-wt, right);
690
+ }
670
691
 
671
- background-color: var(
672
- --_ctm-mob-dn-ae-dn-fl-ad-oy-dr-cr,
673
- var(--_ctm-tab-dn-ae-dn-fl-ad-oy-dr-cr, var(--_ctm-dn-ae-dn-fl-ad-oy-dr-cr))
674
- );
675
- right: calc(
676
- -1 *
677
- (
678
- var(
679
- --_ctm-mob-lt-ae-im-sg,
680
- var(--_ctm-tab-lt-ae-im-sg, var(--_ctm-lt-ae-im-sg))
681
- ) /
682
- 2
683
- )
684
- );
685
- height: 100%;
686
- width: var(
687
- --_ctm-mob-dn-qa-dn-fl-ad-oy-dr-wt,
688
- var(--_ctm-tab-dn-qa-dn-fl-ad-oy-dr-wt, var(--_ctm-dn-qa-dn-fl-ad-oy-dr-wt))
689
- );
690
- left: unset;
692
+ .embla__slide:not(:last-child)::before {
693
+ content: "";
694
+ position: absolute;
695
+
696
+ background-color: prepareMediaVariable(--_ctm-dn-ae-dn-fl-ad-oy-dr-cr);
697
+ right: dividerGapOffset(--_ctm-lt-ae-im-sg, --_ctm-dn-ae-dn-fl-ad-oy-dr-wt);
698
+ height: 100%;
699
+ // Was reading the quota weight, so Allowance > Divider Weight did nothing
700
+ // and the quota's weight drove this divider instead.
701
+ width: prepareMediaVariable(--_ctm-dn-ae-dn-fl-ad-oy-dr-wt);
702
+ left: unset;
703
+ }
691
704
  }
692
705
  .allowance_vertical_scroll_wrapper {
693
706
  width: unset;
@@ -781,23 +794,19 @@ $resizeActive: '[data-cms-element-resizer="true"]';
781
794
  }
782
795
 
783
796
  &[data-show-divider="true"] {
797
+ .user__element__item:not(:last-child) {
798
+ @include dividerGapReserve(--_ctm-dn-wt-se-dr-wt, right);
799
+ }
800
+
784
801
  .user__element__item:not(:last-child)::before {
785
802
  content: "";
786
803
  position: absolute;
787
804
  top: 0;
788
805
  bottom: 0;
789
- right: calc(
790
- -1 * (var(--_ctm-mob-lt-im-sg, var(--_ctm-tab-lt-im-sg, var(--_ctm-lt-im-sg))) / 2)
791
- );
806
+ right: dividerGapOffset(--_ctm-lt-im-sg, --_ctm-dn-wt-se-dr-wt);
792
807
 
793
- width: var(
794
- --_ctm-mob-dn-wt-se-dr-wt,
795
- var(--_ctm-tab-dn-wt-se-dr-wt, var(--_ctm-dn-wt-se-dr-wt))
796
- );
797
- background-color: var(
798
- --_ctm-mob-dn-wt-se-dr-cr,
799
- var(--_ctm-tab-dn-wt-se-dr-cr, var(--_ctm-dn-wt-se-dr-cr))
800
- );
808
+ width: prepareMediaVariable(--_ctm-dn-wt-se-dr-wt);
809
+ background-color: prepareMediaVariable(--_ctm-dn-wt-se-dr-cr);
801
810
  }
802
811
  }
803
812
  }
@@ -822,6 +831,9 @@ $resizeActive: '[data-cms-element-resizer="true"]';
822
831
  .user_elements_user_name_wrapper {
823
832
  display: flex;
824
833
  gap: 6px;
834
+ // Keeps the avatar and the trailing icon on the name's centre line instead of
835
+ // stretching them to the row height.
836
+ align-items: center;
825
837
  &[data-has-link="true"] {
826
838
  cursor: pointer;
827
839
  &:hover {
@@ -839,6 +851,49 @@ $resizeActive: '[data-cms-element-resizer="true"]';
839
851
  letter-spacing: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-ne-dn-lr-sg);
840
852
  text-align: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-ne-dn-tt-an);
841
853
  text-decoration: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-ne-dn-ue);
854
+ text-transform: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-ne-dn-tt-tm);
855
+ }
856
+
857
+ // The user's avatar, driven by its own User Logo design section.
858
+ .user_elements_user_logo {
859
+ width: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-lo-dn-wh);
860
+ height: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-lo-dn-ht);
861
+ flex-shrink: 0;
862
+ object-fit: cover;
863
+ // Padding is part of the configured size rather than added on top of it.
864
+ box-sizing: border-box;
865
+ padding: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-lo-dn-pg);
866
+ background-color: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-lo-dn-bd-cr);
867
+ border-color: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-lo-dn-br-cr);
868
+ border-style: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-lo-dn-br-se);
869
+ border-width: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-lo-dn-br-wh);
870
+ border-radius: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-lo-dn-br-rs);
871
+ box-shadow: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-lo-dn-sw-ae)
872
+ prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-lo-dn-sw-br)
873
+ prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-lo-dn-sw-sd)
874
+ prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-lo-dn-sw-cr);
875
+ // Which part of the picture survives the crop to the configured box. The
876
+ // control stores the image element's compass values, so they are mapped to
877
+ // their CSS equivalents here.
878
+ @each $point, $position in $imagePositions {
879
+ &[data-object-position="#{$point}"] {
880
+ object-position: $position;
881
+ }
882
+ }
883
+
884
+ // Mirroring. Both axes are separate attributes, so the combined case needs
885
+ // its own rule or the second transform would replace the first.
886
+ &[data-flip-x="true"] {
887
+ transform: scaleX(-1);
888
+ }
889
+
890
+ &[data-flip-y="true"] {
891
+ transform: scaleY(-1);
892
+ }
893
+
894
+ &[data-flip-x="true"][data-flip-y="true"] {
895
+ transform: scale(-1, -1);
896
+ }
842
897
  }
843
898
 
844
899
  .icon {
@@ -848,6 +903,8 @@ $resizeActive: '[data-cms-element-resizer="true"]';
848
903
  height: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-ne-dn-in-se);
849
904
  path {
850
905
  stroke: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-ne-dn-in-c1);
906
+ // Overrides the stroke-width presentation attribute baked into the icon markup.
907
+ stroke-width: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-ne-dn-se-wh, 1.25);
851
908
  }
852
909
  }
853
910
  }
@@ -878,6 +935,7 @@ $resizeActive: '[data-cms-element-resizer="true"]';
878
935
  letter-spacing: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-id-dn-lr-sg);
879
936
  text-align: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-id-dn-tt-an);
880
937
  text-decoration: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-id-dn-ue);
938
+ text-transform: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-id-dn-tt-tm);
881
939
 
882
940
  .icon {
883
941
  cursor: pointer;
@@ -886,6 +944,8 @@ $resizeActive: '[data-cms-element-resizer="true"]';
886
944
  height: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-id-dn-in-se);
887
945
  path {
888
946
  stroke: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-id-dn-in-c1);
947
+ // Overrides the stroke-width presentation attribute baked into the icon markup.
948
+ stroke-width: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-id-dn-se-wh, 1.25);
889
949
  }
890
950
  }
891
951
  }
@@ -905,6 +965,7 @@ $resizeActive: '[data-cms-element-resizer="true"]';
905
965
  letter-spacing: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-el-dn-lr-sg);
906
966
  text-align: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-el-dn-tt-an);
907
967
  text-decoration: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-el-dn-ue);
968
+ text-transform: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-el-dn-tt-tm);
908
969
 
909
970
  .icon {
910
971
  cursor: pointer;
@@ -913,6 +974,8 @@ $resizeActive: '[data-cms-element-resizer="true"]';
913
974
  height: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-el-dn-in-se);
914
975
  path {
915
976
  stroke: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-el-dn-in-c1);
977
+ // Overrides the stroke-width presentation attribute baked into the icon markup.
978
+ stroke-width: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-el-dn-se-wh, 1.25);
916
979
  }
917
980
  }
918
981
  }
@@ -932,6 +995,7 @@ $resizeActive: '[data-cms-element-resizer="true"]';
932
995
  letter-spacing: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-pe-dn-lr-sg);
933
996
  text-align: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-pe-dn-tt-an);
934
997
  text-decoration: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-pe-dn-ue);
998
+ text-transform: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-pe-dn-tt-tm);
935
999
 
936
1000
  .icon {
937
1001
  cursor: pointer;
@@ -940,6 +1004,8 @@ $resizeActive: '[data-cms-element-resizer="true"]';
940
1004
  height: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-pe-dn-in-se);
941
1005
  path {
942
1006
  stroke: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-pe-dn-in-c1);
1007
+ // Overrides the stroke-width presentation attribute baked into the icon markup.
1008
+ stroke-width: prepareMediaVariable(--_ctm-dn-ur-io-dn-ur-pe-dn-se-wh, 1.25);
943
1009
  }
944
1010
  }
945
1011
  }
@@ -954,39 +1020,25 @@ $resizeActive: '[data-cms-element-resizer="true"]';
954
1020
  content: "";
955
1021
  margin-left: calc(prepareMediaVariable(--_ctm-dn-ur-io-dn-fl-ad-oy-im-gp) / 2);
956
1022
  // margin-top: 3px;
957
- width: 6px;
958
- height: 6px;
959
- // width: var(--line-w, 1px);
960
- // height: 20px;
961
- background-color: var(
962
- --_ctm-mob-dn-ur-io-dn-fl-ad-oy-dr-cr,
963
- var(--_ctm-tab-dn-ur-io-dn-fl-ad-oy-dr-cr, var(--_ctm-dn-ur-io-dn-fl-ad-oy-dr-cr))
964
- );
1023
+ // The divider is a dot, so Divider Weight is its diameter. Both sizes were
1024
+ // fixed here, which is why the Divider Weight control did nothing.
1025
+ width: prepareMediaVariable(--_ctm-dn-ur-io-dn-fl-ad-oy-dr-wt);
1026
+ height: prepareMediaVariable(--_ctm-dn-ur-io-dn-fl-ad-oy-dr-wt);
1027
+ flex-shrink: 0;
1028
+ background-color: prepareMediaVariable(--_ctm-dn-ur-io-dn-fl-ad-oy-dr-cr);
965
1029
  margin-block: auto;
1030
+ // Divider Shape. Round is the shape the widget has always used, so it is
1031
+ // what an element without the setting still gets.
966
1032
  border-radius: 50%;
967
- // content: "";
968
- // position: absolute;
969
- // left: 0;
970
- // right: 0;
971
- // bottom: calc(
972
- // -1 *
973
- // (
974
- // var(
975
- // --_ctm-mob-lt-ur-io-im-sg,
976
- // var(--_ctm-tab-lt-ur-io-im-sg, var(--_ctm-lt-ur-io-im-sg))
977
- // ) /
978
- // 2
979
- // )
980
- // );
1033
+ }
981
1034
 
982
- // height: var(
983
- // --_ctm-mob-dn-ur-io-dn-fl-ad-oy-dr-wt,
984
- // var(--_ctm-tab-dn-ur-io-dn-fl-ad-oy-dr-wt, var(--_ctm-dn-ur-io-dn-fl-ad-oy-dr-wt))
985
- // );
986
- // background-color: var(
987
- // --_ctm-mob-dn-ur-io-dn-fl-ad-oy-dr-cr,
988
- // var(--_ctm-tab-dn-ur-io-dn-fl-ad-oy-dr-cr, var(--_ctm-dn-ur-io-dn-fl-ad-oy-dr-cr))
989
- // );
1035
+ // Divider Shape: a plain rule spanning the row instead of a dot. Weight is
1036
+ // its thickness, so only the cross-axis size changes.
1037
+ &[data-divider-shape="Divider"] .child:not(:last-child)::after {
1038
+ height: auto;
1039
+ align-self: stretch;
1040
+ margin-block: 0;
1041
+ border-radius: 0;
990
1042
  }
991
1043
  // .user_elements_user_name_wrapper {
992
1044
  // width: 100%;
@@ -1157,58 +1209,33 @@ $resizeActive: '[data-cms-element-resizer="true"]';
1157
1209
  }
1158
1210
 
1159
1211
  &[data-show-divider="true"] {
1212
+ .quote_item_wrapper:not(:last-child) {
1213
+ @include dividerGapReserve(--_ctm-dn-qa-dn-fl-ad-oy-dr-wt);
1214
+ }
1215
+
1160
1216
  .quote_item_wrapper:not(:last-child)::before {
1161
1217
  content: "";
1162
1218
  position: absolute;
1163
1219
  left: 0;
1164
1220
  right: 0;
1165
- bottom: calc(
1166
- -1 *
1167
- (
1168
- var(
1169
- --_ctm-mob-lt-qa-im-sg,
1170
- var(--_ctm-tab-lt-qa-im-sg, var(--_ctm-lt-qa-im-sg))
1171
- ) /
1172
- 2
1173
- )
1174
- );
1221
+ bottom: dividerGapOffset(--_ctm-lt-qa-im-sg, --_ctm-dn-qa-dn-fl-ad-oy-dr-wt);
1175
1222
 
1176
- height: var(
1177
- --_ctm-mob-dn-qa-dn-fl-ad-oy-dr-wt,
1178
- var(--_ctm-tab-dn-qa-dn-fl-ad-oy-dr-wt, var(--_ctm-dn-qa-dn-fl-ad-oy-dr-wt))
1179
- );
1180
- background-color: var(
1181
- --_ctm-mob-dn-qa-dn-fl-ad-oy-dr-cr,
1182
- var(--_ctm-tab-dn-qa-dn-fl-ad-oy-dr-cr, var(--_ctm-dn-qa-dn-fl-ad-oy-dr-cr))
1183
- );
1223
+ height: prepareMediaVariable(--_ctm-dn-qa-dn-fl-ad-oy-dr-wt);
1224
+ background-color: prepareMediaVariable(--_ctm-dn-qa-dn-fl-ad-oy-dr-cr);
1184
1225
  }
1185
1226
  &[data-content-alignment="Vertical"] {
1186
1227
  .quota_label_wrapper {
1187
1228
  width: 100%;
1188
1229
  position: relative;
1230
+ @include dividerGapReserve(--_ctm-dn-qa-dn-fl-ad-oy-dr-wt);
1189
1231
  &::after {
1190
1232
  content: "";
1191
1233
  position: absolute;
1192
1234
  left: 0;
1193
1235
  right: 0;
1194
- bottom: calc(
1195
- -1 *
1196
- (
1197
- var(
1198
- --_ctm-mob-lt-qa-im-sg,
1199
- var(--_ctm-tab-lt-qa-im-sg, var(--_ctm-lt-qa-im-sg))
1200
- ) /
1201
- 2
1202
- )
1203
- );
1204
- height: var(
1205
- --_ctm-mob-dn-qa-dn-fl-ad-oy-dr-wt,
1206
- var(--_ctm-tab-dn-qa-dn-fl-ad-oy-dr-wt, var(--_ctm-dn-qa-dn-fl-ad-oy-dr-wt))
1207
- );
1208
- background-color: var(
1209
- --_ctm-mob-dn-qa-dn-fl-ad-oy-dr-cr,
1210
- var(--_ctm-tab-dn-qa-dn-fl-ad-oy-dr-cr, var(--_ctm-dn-qa-dn-fl-ad-oy-dr-cr))
1211
- );
1236
+ bottom: dividerGapOffset(--_ctm-lt-qa-im-sg, --_ctm-dn-qa-dn-fl-ad-oy-dr-wt);
1237
+ height: prepareMediaVariable(--_ctm-dn-qa-dn-fl-ad-oy-dr-wt);
1238
+ background-color: prepareMediaVariable(--_ctm-dn-qa-dn-fl-ad-oy-dr-cr);
1212
1239
  }
1213
1240
  }
1214
1241
  }
@@ -1371,59 +1398,34 @@ $resizeActive: '[data-cms-element-resizer="true"]';
1371
1398
  }
1372
1399
  }
1373
1400
  &[data-show-divider="true"] {
1401
+ .allowance_item_wrapper:not(:last-child) {
1402
+ @include dividerGapReserve(--_ctm-dn-ae-dn-fl-ad-oy-dr-wt);
1403
+ }
1404
+
1374
1405
  .allowance_item_wrapper:not(:last-child)::before {
1375
1406
  content: "";
1376
1407
  position: absolute;
1377
1408
  left: 0;
1378
1409
  right: 0;
1379
- bottom: calc(
1380
- -1 *
1381
- (
1382
- var(
1383
- --_ctm-mob-lt-ae-im-sg,
1384
- var(--_ctm-tab-lt-ae-im-sg, var(--_ctm-lt-ae-im-sg))
1385
- ) /
1386
- 2
1387
- )
1388
- );
1410
+ bottom: dividerGapOffset(--_ctm-lt-ae-im-sg, --_ctm-dn-ae-dn-fl-ad-oy-dr-wt);
1389
1411
 
1390
- height: var(
1391
- --_ctm-mob-dn-ae-dn-fl-ad-oy-dr-wt,
1392
- var(--_ctm-tab-dn-ae-dn-fl-ad-oy-dr-wt, var(--_ctm-dn-ae-dn-fl-ad-oy-dr-wt))
1393
- );
1394
- background-color: var(
1395
- --_ctm-mob-dn-ae-dn-fl-ad-oy-dr-cr,
1396
- var(--_ctm-tab-dn-ae-dn-fl-ad-oy-dr-cr, var(--_ctm-dn-ae-dn-fl-ad-oy-dr-cr))
1397
- );
1412
+ height: prepareMediaVariable(--_ctm-dn-ae-dn-fl-ad-oy-dr-wt);
1413
+ background-color: prepareMediaVariable(--_ctm-dn-ae-dn-fl-ad-oy-dr-cr);
1398
1414
  }
1399
1415
  &[data-content-alignment="Vertical"] {
1400
1416
  .allowance_label_wrapper {
1401
1417
  width: 100%;
1402
1418
  position: relative;
1403
1419
  gap: 10px;
1420
+ @include dividerGapReserve(--_ctm-dn-ae-dn-fl-ad-oy-dr-wt);
1404
1421
  &::after {
1405
1422
  content: "";
1406
1423
  position: absolute;
1407
1424
  left: 0;
1408
1425
  right: 0;
1409
- bottom: calc(
1410
- -1 *
1411
- (
1412
- var(
1413
- --_ctm-mob-lt-ae-im-sg,
1414
- var(--_ctm-tab-lt-ae-im-sg, var(--_ctm-lt-ae-im-sg))
1415
- ) /
1416
- 2
1417
- )
1418
- );
1419
- height: var(
1420
- --_ctm-mob-dn-ae-dn-fl-ad-oy-dr-wt,
1421
- var(--_ctm-tab-dn-ae-dn-fl-ad-oy-dr-wt, var(--_ctm-dn-ae-dn-fl-ad-oy-dr-wt))
1422
- );
1423
- background-color: var(
1424
- --_ctm-mob-dn-ae-dn-fl-ad-oy-dr-cr,
1425
- var(--_ctm-tab-dn-ae-dn-fl-ad-oy-dr-cr, var(--_ctm-dn-ae-dn-fl-ad-oy-dr-cr))
1426
- );
1426
+ bottom: dividerGapOffset(--_ctm-lt-ae-im-sg, --_ctm-dn-ae-dn-fl-ad-oy-dr-wt);
1427
+ height: prepareMediaVariable(--_ctm-dn-ae-dn-fl-ad-oy-dr-wt);
1428
+ background-color: prepareMediaVariable(--_ctm-dn-ae-dn-fl-ad-oy-dr-cr);
1427
1429
  }
1428
1430
  }
1429
1431
  }
@@ -1505,6 +1507,11 @@ $resizeActive: '[data-cms-element-resizer="true"]';
1505
1507
  letter-spacing: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-hg-dn-lr-sg);
1506
1508
  text-align: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-hg-dn-tt-an);
1507
1509
  text-decoration: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-hg-dn-ue);
1510
+ text-transform: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-hg-dn-tt-tm);
1511
+
1512
+ &#{$overflowSelector} {
1513
+ @include restrictToLinesShow(#{var(--_sf-line-clamp, 1)});
1514
+ }
1508
1515
  }
1509
1516
 
1510
1517
  .label {
@@ -1517,6 +1524,11 @@ $resizeActive: '[data-cms-element-resizer="true"]';
1517
1524
  letter-spacing: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-ll-dn-lr-sg);
1518
1525
  text-align: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-ll-dn-tt-an);
1519
1526
  text-decoration: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-ll-dn-ue);
1527
+ text-transform: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-ll-dn-tt-tm);
1528
+
1529
+ &#{$overflowSelector} {
1530
+ @include restrictToLinesShow(#{var(--_sf-line-clamp, 1)});
1531
+ }
1520
1532
  }
1521
1533
  .value {
1522
1534
  color: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-ve-dn-cr);
@@ -1528,6 +1540,11 @@ $resizeActive: '[data-cms-element-resizer="true"]';
1528
1540
  letter-spacing: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-ve-dn-lr-sg);
1529
1541
  text-align: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-ve-dn-tt-an);
1530
1542
  text-decoration: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-ve-dn-ue);
1543
+ text-transform: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ur-sy-io-ve-dn-tt-tm);
1544
+
1545
+ &#{$overflowSelector} {
1546
+ @include restrictToLinesShow(#{var(--_sf-line-clamp, 1)});
1547
+ }
1531
1548
  }
1532
1549
 
1533
1550
  .secondary_info_divider {
@@ -1802,6 +1819,8 @@ $resizeActive: '[data-cms-element-resizer="true"]';
1802
1819
  var(--_ctm-dn-ur-sy-io-dn-ct-in-in-c1)
1803
1820
  )
1804
1821
  );
1822
+ // Overrides the stroke-width presentation attribute baked into the icon markup.
1823
+ stroke-width: prepareMediaVariable(--_ctm-dn-ur-sy-io-dn-ct-in-se-wh, 1.25);
1805
1824
  }
1806
1825
  }
1807
1826
  }
@@ -2138,10 +2157,8 @@ $resizeActive: '[data-cms-element-resizer="true"]';
2138
2157
  var(--_ctm-tab-dn-dn-se-wt-se-br-se, var(--_ctm-dn-dn-se-wt-se-br-se))
2139
2158
  );
2140
2159
 
2141
- border-width: var(
2142
- --_ctm-mob-dn-dn-se-wt-se-br-wh,
2143
- var(--_ctm-tab-dn-dn-se-dn-se-wt-se-br-wh, var(--_ctm-dn-dn-se-wt-se-br-wh))
2144
- );
2160
+ // The tablet name carried a doubled `dn-se-`, so tablet fell through to desktop.
2161
+ border-width: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-br-wh);
2145
2162
 
2146
2163
  // border: 1px solid
2147
2164
  // var(
@@ -2179,9 +2196,9 @@ $resizeActive: '[data-cms-element-resizer="true"]';
2179
2196
  // var(--_ctm-tab-dn-dn-se-lt-ss-it-ad-mn-qy-sg, var(--_ctm-dn-dn-se-lt-ss-it-ad-mn-qy-sg))
2180
2197
  // );
2181
2198
  display: flex;
2182
- gap: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-im-gp);
2183
2199
 
2184
2200
  .option:hover {
2201
+ --_sf-hr-txt-tr: prepareMediaVariable(--_ctm-dn-dn-se-im-se-hr-se-tt-tm);
2185
2202
  --_sf-hr-bd-cr: var(
2186
2203
  --_ctm-mob-dn-dn-se-im-se-hr-se-bd-cr,
2187
2204
  var(--_ctm-tab-dn-dn-se-im-se-hr-se-bd-cr, var(--_ctm-dn-dn-se-im-se-hr-se-bd-cr))
@@ -2206,11 +2223,6 @@ $resizeActive: '[data-cms-element-resizer="true"]';
2206
2223
  --_ctm-mob-dn-dn-se-im-se-hr-se-pg,
2207
2224
  var(--_ctm-tab-dn-dn-se-im-se-hr-se-pg, var(--_ctm-dn-dn-se-im-se-hr-se-pg))
2208
2225
  );
2209
- --_sf-hr-im-gp: var(
2210
- --_ctm-mob-dn-dn-se-im-se-hr-se-im-gp,
2211
- var(--_ctm-tab-dn-dn-se-im-se-hr-se-im-gp, var(--_ctm-dn-dn-se-im-se-hr-se-im-gp))
2212
- );
2213
-
2214
2226
  // for shadow
2215
2227
  --_sf-hr-sw-ae: var(
2216
2228
  --_ctm-mob-dn-dn-se-im-se-hr-se-sw-ae,
@@ -2271,6 +2283,7 @@ $resizeActive: '[data-cms-element-resizer="true"]';
2271
2283
  }
2272
2284
 
2273
2285
  .option[data-selected="true"] {
2286
+ --_sf-sd-txt-tr: prepareMediaVariable(--_ctm-dn-dn-se-im-se-sd-se-tt-tm);
2274
2287
  --_sf-sd-bd-cr: var(
2275
2288
  --_ctm-mob-dn-dn-se-im-se-sd-se-bd-cr,
2276
2289
  var(--_ctm-tab-dn-dn-se-im-se-sd-se-bd-cr, var(--_ctm-dn-dn-se-im-se-sd-se-bd-cr))
@@ -2371,8 +2384,9 @@ $resizeActive: '[data-cms-element-resizer="true"]';
2371
2384
  position: relative;
2372
2385
  box-sizing: border-box;
2373
2386
 
2387
+ // An option holds a single label, so Item Style has no items to space — the
2388
+ // gap was dropped from the schema rather than left as a control doing nothing.
2374
2389
  padding: var(--_sf-hr-pg, prepareMediaVariable(--_ctm-dn-dn-se-im-se-dt-se-pg));
2375
- gap: var(--_sf-hr-im-gp, prepareMediaVariable(--_ctm-dn-dn-se-im-se-dt-se-im-gp));
2376
2390
  border-color: var(--_sf-hr-br-cr, prepareMediaVariable(--_ctm-dn-dn-se-im-se-dt-se-br-cr));
2377
2391
 
2378
2392
  background-color: var(
@@ -2443,6 +2457,10 @@ $resizeActive: '[data-cms-element-resizer="true"]';
2443
2457
  prepareMediaVariable(--_ctm-dn-dn-se-im-se-dt-se-le-ht-dc)
2444
2458
  );
2445
2459
  text-decoration: var(--_sf-sd-ue, prepareMediaVariable(--_ctm-dn-dn-se-im-se-dt-se-ue));
2460
+ text-transform: var(
2461
+ --_sf-sd-txt-tr,
2462
+ prepareMediaVariable(--_ctm-dn-dn-se-im-se-dt-se-tt-tm)
2463
+ );
2446
2464
  }
2447
2465
  }
2448
2466
  }
@@ -2458,57 +2476,39 @@ $resizeActive: '[data-cms-element-resizer="true"]';
2458
2476
  &[data-flex-direction="row"] {
2459
2477
  overflow-x: auto;
2460
2478
  }
2479
+ // Both offsets used to be measured off `--_ctm-dn-dn-se-lt-ss-gp-bn-is`, which
2480
+ // belongs to the commented-out `dropdownStyle.layoutSettings` and is therefore
2481
+ // never emitted. The calc was invalid, so the divider never positioned at all.
2482
+ // The list's own item gap is the spacing these options actually sit in.
2461
2483
  &[data-show-divider="true"] {
2462
2484
  &[data-flex-direction="row"] {
2485
+ .option:not(:last-child) {
2486
+ @include dividerGapReserve(--_ctm-dn-dn-se-wt-se-dr-wt, right);
2487
+ }
2488
+
2463
2489
  .option:not(:last-child)::before {
2464
2490
  content: "";
2465
2491
  position: absolute;
2466
2492
  top: 0;
2467
2493
  bottom: 0; /* For full height divider */
2468
- right: calc(
2469
- -1 *
2470
- (
2471
- var(
2472
- --_ctm-mob-dn-dn-se-lt-ss-gp-bn-is,
2473
- var(--_ctm-tab-dn-dn-se-lt-ss-gp-bn-is, var(--_ctm-dn-dn-se-lt-ss-gp-bn-is))
2474
- ) /
2475
- 2
2476
- )
2477
- ); /* Half of your gap, assuming divider is centered in the gap */
2478
- width: var(
2479
- --_ctm-mob-dn-dn-se-wt-se-dr-wt,
2480
- var(--_ctm-tab-dn-dn-se-wt-se-dr-wt, var(--_ctm-dn-dn-se-wt-se-dr-wt))
2481
- ); /* Divider thickness */
2482
- background-color: var(
2483
- --_ctm-mob-dn-dn-se-wt-se-dr-cr,
2484
- var(--_ctm-tab-dn-dn-se-wt-se-dr-cr, var(--_ctm-dn-dn-se-wt-se-dr-cr))
2485
- ); /* Divider color */
2494
+ right: dividerGapOffset(--_ctm-dn-dn-se-wt-dn-im-gp, --_ctm-dn-dn-se-wt-se-dr-wt);
2495
+ width: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-dr-wt); /* Divider thickness */
2496
+ background-color: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-dr-cr); /* Divider color */
2486
2497
  }
2487
2498
  }
2488
2499
  &[data-flex-direction="column"] {
2500
+ .option:not(:last-child) {
2501
+ @include dividerGapReserve(--_ctm-dn-dn-se-wt-se-dr-wt);
2502
+ }
2503
+
2489
2504
  .option:not(:last-child)::before {
2490
2505
  content: "";
2491
2506
  position: absolute;
2492
2507
  left: 0;
2493
2508
  right: 0;
2494
- bottom: calc(
2495
- -1 *
2496
- (
2497
- var(
2498
- --_ctm-mob-dn-dn-se-lt-ss-gp-bn-is,
2499
- var(--_ctm-tab-dn-dn-se-lt-ss-gp-bn-is, var(--_ctm-dn-dn-se-lt-ss-gp-bn-is))
2500
- ) /
2501
- 2
2502
- )
2503
- );
2504
- height: var(
2505
- --_ctm-mob-dn-dn-se-wt-se-dr-wt,
2506
- var(--_ctm-tab-dn-dn-se-wt-se-dr-wt, var(--_ctm-dn-dn-se-wt-se-dr-wt))
2507
- );
2508
- background-color: var(
2509
- --_ctm-mob-dn-dn-se-wt-se-dr-cr,
2510
- var(--_ctm-tab-dn-dn-se-wt-se-dr-cr, var(--_ctm-dn-dn-se-wt-se-dr-cr))
2511
- );
2509
+ bottom: dividerGapOffset(--_ctm-dn-dn-se-wt-dn-im-gp, --_ctm-dn-dn-se-wt-se-dr-wt);
2510
+ height: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-dr-wt);
2511
+ background-color: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-dr-cr);
2512
2512
  }
2513
2513
  }
2514
2514
  }
@@ -2519,7 +2519,10 @@ $resizeActive: '[data-cms-element-resizer="true"]';
2519
2519
  align-items: center;
2520
2520
  position: relative;
2521
2521
  .language__name {
2522
- padding-right: 20px;
2522
+ // Clearance for the absolutely positioned caret. It was `padding-right`,
2523
+ // which the section's own padding would have had to fight with; as a margin
2524
+ // the Padding control owns all four sides cleanly.
2525
+ margin-right: 20px;
2523
2526
  font-family: prepareMediaVariable(--_ctm-dn-dn-se-wt-pr-tt-ft-fy);
2524
2527
  font-size: prepareMediaVariable(--_ctm-dn-dn-se-wt-pr-tt-ft-se);
2525
2528
  color: prepareMediaVariable(--_ctm-dn-dn-se-wt-pr-tt-cr);
@@ -2529,6 +2532,13 @@ $resizeActive: '[data-cms-element-resizer="true"]';
2529
2532
  text-align: prepareMediaVariable(--_ctm-dn-dn-se-wt-pr-tt-tt-an);
2530
2533
  letter-spacing: prepareMediaVariable(--_ctm-dn-dn-se-wt-pr-tt-lr-sg);
2531
2534
  line-height: prepareMediaVariable(--_ctm-dn-dn-se-wt-pr-tt-le-ht);
2535
+ // Padding and Text Transform were declared in the schema but read nowhere.
2536
+ padding: prepareMediaVariable(--_ctm-dn-dn-se-wt-pr-tt-pg);
2537
+ text-transform: prepareMediaVariable(--_ctm-dn-dn-se-wt-pr-tt-tt-tm);
2538
+
2539
+ &#{$overflowSelector} {
2540
+ @include restrictToLinesShow(#{var(--_sf-line-clamp, 1)});
2541
+ }
2532
2542
  }
2533
2543
  }
2534
2544
 
@@ -2548,14 +2558,41 @@ $resizeActive: '[data-cms-element-resizer="true"]';
2548
2558
  );
2549
2559
  line-height: var(--_sf-hr-le-ht, prepareMediaVariable(--_ctm-dn-dn-se-im-se-dt-se-le-ht));
2550
2560
  text-decoration: var(--_sf-hr-ue, prepareMediaVariable(--_ctm-dn-dn-se-im-se-dt-se-ue));
2561
+ text-transform: var(
2562
+ --_sf-hr-txt-tr,
2563
+ prepareMediaVariable(--_ctm-dn-dn-se-im-se-dt-se-tt-tm)
2564
+ );
2551
2565
  white-space: nowrap;
2566
+
2567
+ // Item Style clamps the option label. `white-space: nowrap` above would stop
2568
+ // the box ever wrapping, so the clamp resets it.
2569
+ &#{$overflowSelector} {
2570
+ white-space: normal;
2571
+ @include restrictToLinesShow(#{var(--_sf-line-clamp, 1)});
2572
+ }
2552
2573
  }
2553
2574
 
2554
2575
  //Dropdown
2576
+ // The placeholder shown while nothing is selected. Widget Style's typography tab
2577
+ // is labelled "Placeholder Text" and drives it — none of it was read before.
2555
2578
  .value__selected__new {
2556
2579
  width: 100%;
2557
2580
  // padding: 8px 12px;
2558
2581
  text-align: left;
2582
+ font-family: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-ft-fy);
2583
+ font-size: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-ft-se);
2584
+ color: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-cr);
2585
+ font-weight: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-ft-wt);
2586
+ font-style: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-ft-se-ic);
2587
+ text-decoration: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-ue);
2588
+ text-align: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-tt-an);
2589
+ letter-spacing: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-lr-sg);
2590
+ line-height: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-le-ht);
2591
+ text-transform: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-tt-tm);
2592
+
2593
+ &#{$overflowSelector} {
2594
+ @include restrictToLinesShow(#{var(--_sf-line-clamp, 1)});
2595
+ }
2559
2596
  }
2560
2597
  .est__dropdown__main {
2561
2598
  position: relative;
@@ -2590,6 +2627,10 @@ $resizeActive: '[data-cms-element-resizer="true"]';
2590
2627
  align-items: center;
2591
2628
  width: 100%;
2592
2629
  padding: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-pg);
2630
+ // Item Gap used to sit on `.language__conatiner`, which wraps a single
2631
+ // child, so it spaced nothing. The button is where the widget's own items
2632
+ // (icon and label) sit — same place the variant picker applies it.
2633
+ gap: prepareMediaVariable(--_ctm-dn-dn-se-wt-se-im-gp);
2593
2634
  }
2594
2635
 
2595
2636
  .est__dropdown__icon {
@@ -2624,10 +2665,11 @@ $resizeActive: '[data-cms-element-resizer="true"]';
2624
2665
  border-width: prepareMediaVariable(--_ctm-dn-dn-se-wt-dn-br-wh);
2625
2666
  border-style: prepareMediaVariable(--_ctm-dn-dn-se-wt-dn-br-se);
2626
2667
  border-color: prepareMediaVariable(--_ctm-dn-dn-se-wt-dn-br-cr);
2627
- // margin-top: var(
2628
- // --_ctm-mob-lt-gp-bn-is,
2629
- // var(--_ctm-tab-lt-gp-bn-is, var(--_ctm-lt-gp-bn-is))
2630
- // );
2668
+ // Gap between the trigger box (Widget Style) and this panel, from
2669
+ // Widget Dropdown > Top Spacing. The offset used to borrow the layout's
2670
+ // option/label spacing, which is a different concept and is no longer
2671
+ // emitted at all.
2672
+ margin-top: prepareMediaVariable(--_ctm-dn-dn-se-wt-dn-tp-sg);
2631
2673
  gap: prepareMediaVariable(--_ctm-dn-dn-se-wt-dn-im-gp);
2632
2674
  // padding: 2px;
2633
2675
  // border-radius: 4px;