@designcrowd/library.brand-page 6.0.21 → 6.0.23-ast-remove

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 (92) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-C52IyXZu.js → CreatedOnBrandCrowd-de-de-C2IaS_Mb.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-DhTy_dEV.js → CreatedOnBrandCrowd-en-us-AtykytDu.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-BJelIAQ4.js → CreatedOnBrandCrowd-es-es-CBzMnp_n.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-DwJohy0T.js → CreatedOnBrandCrowd-fr-ca-Cz7WzWc3.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-DwJohy0T.js → CreatedOnBrandCrowd-fr-fr-Cz7WzWc3.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-CMzKbxdG.js → CreatedOnBrandCrowd-pt-br-DE3vjPyC.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-CMzKbxdG.js → CreatedOnBrandCrowd-pt-pt-DE3vjPyC.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-DAy1GHrw.js → CreatedOnDcom-de-de-DlcGgBF6.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-CgBDAkJN.js → CreatedOnDcom-en-us-D5jdeN_E.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-Ds9d5rem.js → CreatedOnDcom-es-es-BBB7ZE8B.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-CZL0BQ-u.js → CreatedOnDcom-fr-ca-odHmWYoP.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-BVYh5Wvo.js → CreatedOnDcom-fr-fr-DKr11T_P.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-1hsWNXfq.js → CreatedOnDcom-pt-br-s8blQRF7.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-DvM0N-3M.js → CreatedOnDcom-pt-pt-Dga4RM96.js} +1 -1
  15. package/lib/src/brand-page/components/collapsible/Collapsible.mixin.d.ts +11 -0
  16. package/lib/src/brand-page/components/collapsible/Collapsible.mixin.js +13 -1
  17. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +1 -0
  18. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +12 -3
  19. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +5 -0
  20. package/lib/src/brand-page/components/payment/Payment.mixin.js +5 -0
  21. package/lib/src/brand-page/models/index.d.ts +1 -1
  22. package/lib/src/brand-page/models/index.js +0 -3
  23. package/lib/src/brand-page/models/payment.model.d.ts +2 -0
  24. package/lib/src/brand-page/utils/button.util.d.ts +5 -0
  25. package/lib/src/brand-page/utils/button.util.js +13 -0
  26. package/lib/src/brand-page/utils/migration/migration-19.d.ts +2 -0
  27. package/lib/src/brand-page/utils/migration/migration-19.js +41 -0
  28. package/lib/src/brand-page/utils/migration.util.js +11 -0
  29. package/lib/src/brand-page/utils/view-model.util.js +1 -0
  30. package/lib/src/brand-page-maker/assessors/contact-form-visibility.assessor.d.ts +1 -0
  31. package/lib/src/brand-page-maker/assessors/contact-form-visibility.assessor.js +16 -7
  32. package/lib/src/brand-page-maker/constants/config-settings-constant.js +40 -3
  33. package/lib/src/brand-page-maker/default-getters/contact-form-card-color.default-getter.d.ts +8 -0
  34. package/lib/src/brand-page-maker/default-getters/contact-form-card-color.default-getter.js +16 -0
  35. package/lib/src/brand-page-maker/default-getters/index.d.ts +1 -0
  36. package/lib/src/brand-page-maker/default-getters/index.js +1 -0
  37. package/lib/src/brand-page-maker/models/button-styles-config.js +15 -3
  38. package/lib/src/brand-page-maker/models/content-settings-configs.d.ts +2 -1
  39. package/lib/src/brand-page-maker/models/content-settings.js +15 -3
  40. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +0 -6
  41. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +0 -2
  42. package/lib/src/css/library.brand-page-brandCrowd.min.css +96 -68
  43. package/lib/src/css/library.brand-page-brandPage.min.css +96 -68
  44. package/lib/src/css/library.brand-page-designCom.min.css +96 -68
  45. package/lib/src/css/library.brand-page-preview.min.css +96 -68
  46. package/lib/src/index.mjs +1 -1
  47. package/lib/src/{lib-CK2FPBv5.js → lib-aLiBOhnh.js} +18776 -18430
  48. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +5 -0
  49. package/lib/src/shared/content-settings/models.d.ts +1 -0
  50. package/lib/src/shared/content-settings/store/content-settings-store.js +3 -0
  51. package/lib/src/shared/template-settings/store/template-settings-store.js +4 -4
  52. package/package.json +2 -2
  53. package/src/brand-page/components/button/ButtonStyleWrapper.vue +112 -44
  54. package/src/brand-page/components/button/ButtonStyleWrapper.vue.test.ts +167 -0
  55. package/src/brand-page/components/collapsible/Collapsible.mixin.ts +14 -1
  56. package/src/brand-page/components/contact-form/ContactForm.mixin.test.ts +18 -0
  57. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +15 -3
  58. package/src/brand-page/components/contact-form/ContactForm.vue +97 -36
  59. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +6 -0
  60. package/src/brand-page/components/mailing-list/MailingList.vue +18 -10
  61. package/src/brand-page/components/payment/Payment.mixin.ts +6 -0
  62. package/src/brand-page/components/payment/Payment.vue +43 -24
  63. package/src/brand-page/components/payment/RequestPaymentStripe.vue +26 -22
  64. package/src/brand-page/components/shop/PaymentModal.vue +3 -3
  65. package/src/brand-page/components/shop/Shop.vue +17 -8
  66. package/src/brand-page/components/shop/Shop.vue.test.ts +209 -0
  67. package/src/brand-page/models/index.ts +1 -4
  68. package/src/brand-page/models/payment.model.ts +2 -0
  69. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +3 -6
  70. package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +0 -1
  71. package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +0 -2
  72. package/src/brand-page/utils/button.util.ts +17 -0
  73. package/src/brand-page/utils/migration/migration-19.test.ts +172 -0
  74. package/src/brand-page/utils/migration/migration-19.ts +65 -0
  75. package/src/brand-page/utils/migration.util.ts +12 -0
  76. package/src/brand-page/utils/view-model.util.ts +1 -0
  77. package/src/brand-page-maker/assessors/contact-form-visibility.assessor.ts +34 -26
  78. package/src/brand-page-maker/constants/config-settings-constant.ts +43 -2
  79. package/src/brand-page-maker/default-getters/contact-form-card-color.default-getter.ts +23 -0
  80. package/src/brand-page-maker/default-getters/index.ts +1 -0
  81. package/src/brand-page-maker/models/button-styles-config.ts +15 -3
  82. package/src/brand-page-maker/models/content-settings-configs.ts +4 -1
  83. package/src/brand-page-maker/models/content-settings.ts +16 -3
  84. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +0 -2
  85. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +6 -0
  86. package/src/shared/content-settings/models.ts +3 -0
  87. package/src/shared/content-settings/store/content-settings-store.ts +3 -0
  88. package/src/shared/style-settings/components/StyleSettings.vue +1 -0
  89. package/src/shared/template-settings/store/template-settings-store.ts +6 -4
  90. package/lib/src/metadata-builder/builders/reorder-pages-builder.d.ts +0 -13
  91. package/lib/src/metadata-builder/builders/reorder-pages-builder.js +0 -49
  92. package/src/metadata-builder/builders/reorder-pages-builder.ts +0 -80
@@ -1521,9 +1521,15 @@ a.maker-anchor {
1521
1521
  .tw-min-w-8 {
1522
1522
  min-width: 2rem;
1523
1523
  }
1524
+ .tw-min-w-\[120px\] {
1525
+ min-width: 120px;
1526
+ }
1524
1527
  .tw-min-w-\[310px\] {
1525
1528
  min-width: 310px;
1526
1529
  }
1530
+ .tw-min-w-full {
1531
+ min-width: 100%;
1532
+ }
1527
1533
  .tw-max-w-0 {
1528
1534
  max-width: 0px;
1529
1535
  }
@@ -1863,16 +1869,6 @@ a.maker-anchor {
1863
1869
  -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1864
1870
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1865
1871
  }
1866
- .tw-translate-y-\[-10\%\] {
1867
- --tw-translate-y: -10%;
1868
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1869
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1870
- }
1871
- .tw-translate-y-\[-4\%\] {
1872
- --tw-translate-y: -4%;
1873
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1874
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1875
- }
1876
1872
  .tw-translate-y-px {
1877
1873
  --tw-translate-y: 1px;
1878
1874
  -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
@@ -3448,9 +3444,6 @@ a.maker-anchor {
3448
3444
  .tw-leading-tight {
3449
3445
  line-height: 1.25;
3450
3446
  }
3451
- .tw-text-\[var\(--icon-color\)\] {
3452
- color: var(--icon-color);
3453
- }
3454
3447
  .tw-text-black {
3455
3448
  --tw-text-opacity: 1;
3456
3449
  color: rgb(0 0 0 / var(--tw-text-opacity));
@@ -6273,39 +6266,72 @@ input[data-v-4cd691db]::-webkit-inner-spin-button {
6273
6266
  max-height: 45vh;
6274
6267
  }
6275
6268
 
6276
- .bp-button-paper-top[data-v-604db8c6] {
6277
- --tw-translate-y: -10%;
6278
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
6279
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
6280
- color: var(--icon-color);
6281
- }
6282
- .bp-button-paper-bottom[data-v-604db8c6] {
6283
- --tw-translate-y: -4%;
6284
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
6285
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
6286
- color: var(--icon-color);
6269
+ /* Decorative styles on submit buttons render flush at the bottom. Zero the host
6270
+ button's own margins: its decoration is positioned relative to the WRAPPER, so a
6271
+ margin on the button itself shifts it out of alignment with the decoration. The
6272
+ top gap is instead applied to the wrapper (tw-mt-4 above) so the whole decorated
6273
+ unit moves together and stays flush at the container's bottom edge (BP-5800). */
6274
+ .bp-style-wrapper--no-margin[data-v-255edfd5] button {
6275
+ margin-top: 0;
6276
+ margin-bottom: 0;
6287
6277
  }
6288
- .bp-button-paper-top[data-v-604db8c6] svg,
6289
- .bp-button-paper-bottom[data-v-604db8c6] svg {
6290
- width: 100%;
6291
- height: auto;
6278
+
6279
+ /* Brushstroke: flanking brush-end icons are transformed over the button's
6280
+ left/right edges, so they must not capture clicks (BP-5882). */
6281
+ .bp-icon-brush-left[data-v-255edfd5],
6282
+ .bp-icon-brush-right[data-v-255edfd5] {
6283
+ pointer-events: none;
6292
6284
  }
6293
- .bp-icon-brush-left[data-v-604db8c6] svg {
6285
+ .bp-icon-brush-left[data-v-255edfd5] svg {
6294
6286
  -webkit-transform: translateX(-99%);
6295
6287
  transform: translateX(-99%);
6296
6288
  width: auto;
6297
6289
  }
6298
- .bp-icon-brush-right[data-v-604db8c6] svg {
6290
+ .bp-icon-brush-right[data-v-255edfd5] svg {
6299
6291
  width: auto;
6300
6292
  }
6301
- .bp-button-arrow[data-v-604db8c6],
6302
- .device-wrapper--mobile .bp-button-arrow[data-v-604db8c6] {
6303
- clip-path: polygon(5% 100%, 0% 50%, 5% 0%, 95% 0%, 100% 50%, 95% 100%);
6293
+
6294
+ /* Torn-paper: the button-paper icon sits BEHIND the button as its shape. The
6295
+ wrapper is the positioning context; the icon is an inert inset layer that fills
6296
+ the button box exactly (inset:0 + preserveAspectRatio none) without inflating
6297
+ its size or capturing clicks (BP-5882/BP-5883). The button's own fill is made
6298
+ transparent so the icon's colour shows through. */
6299
+ .bp-button-shape[data-v-255edfd5] {
6300
+ position: relative;
6304
6301
  }
6305
- @media (min-width: 767px) {
6306
- .bp-button-arrow[data-v-604db8c6] {
6307
- clip-path: polygon(3% 100%, 0% 50%, 3% 0%, 97% 0%, 100% 50%, 97% 100%);
6302
+ .bp-icon-shape[data-v-255edfd5] {
6303
+ position: absolute;
6304
+ inset: 0;
6305
+ width: 100%;
6306
+ height: 100%;
6307
+ pointer-events: none;
6308
6308
  }
6309
+ .bp-button-shape[data-v-255edfd5] button,
6310
+ .bp-button-shape[data-v-255edfd5] a {
6311
+ position: relative; /* sit above the inert background */
6312
+ /* !important to override the host button's inline background-color. */
6313
+ background-color: transparent !important;
6314
+ }
6315
+ /* button-paper ships hardcoded fill="black"; recolour to the button's fill. CSS
6316
+ fill overrides the presentation attribute; clip-path rects are geometric so
6317
+ recolouring them is harmless. */
6318
+ .bp-icon-shape[data-v-255edfd5] path,
6319
+ .bp-icon-shape[data-v-255edfd5] rect {
6320
+ fill: currentColor;
6321
+ }
6322
+ .bp-button-arrow[data-v-255edfd5],
6323
+ .device-wrapper--mobile .bp-button-arrow[data-v-255edfd5] {
6324
+ /* Fixed-px arrowhead (not %) so the chevron is equally sharp at any button
6325
+ width — a %-based point collapses on narrow buttons (e.g. the 120px contact
6326
+ form submit) and only reads as an arrow on wide ones. */
6327
+ clip-path: polygon(
6328
+ 12px 100%,
6329
+ 0 50%,
6330
+ 12px 0,
6331
+ calc(100% - 12px) 0,
6332
+ 100% 50%,
6333
+ calc(100% - 12px) 100%
6334
+ );
6309
6335
  }
6310
6336
 
6311
6337
  .empty-para[data-v-2520851c] p:empty::after {
@@ -6419,7 +6445,7 @@ input[data-v-4cd691db]::-webkit-inner-spin-button {
6419
6445
  text-decoration: underline;
6420
6446
  }
6421
6447
 
6422
- .form-error[data-v-ddbacf5a] {
6448
+ .form-error[data-v-b7e55081] {
6423
6449
  font-size: 0.875rem;
6424
6450
  line-height: 1.25rem;
6425
6451
  color: #f21b3f
@@ -6674,14 +6700,10 @@ select[data-v-14e7c7c7] {
6674
6700
  background-position: right 12px center;
6675
6701
  }
6676
6702
 
6677
- .form-error[data-v-7731d899] {
6703
+ .form-error[data-v-0cc4cbbd] {
6678
6704
  font-size: 0.75rem;
6679
6705
  line-height: 1rem;
6680
- color: #f21b3f;
6681
- }
6682
- .pay-button-disabled[data-v-7731d899] {
6683
- opacity: 0.5 !important;
6684
- pointer-events: none;
6706
+ color: #f21b3f
6685
6707
  }
6686
6708
 
6687
6709
  /* TODO: review CSS setup, scoped CSS will not work in slot */
@@ -6777,53 +6799,59 @@ select[data-v-14e7c7c7] {
6777
6799
  width: 100%;
6778
6800
  }
6779
6801
 
6780
- .form-error[data-v-799d8060] {
6802
+ .form-error[data-v-109ad6ae] {
6781
6803
  font-size: 0.875rem;
6782
6804
  line-height: 1.25rem;
6783
6805
  color: #f21b3f;
6784
6806
  }
6785
- .contact-container[data-v-799d8060] {
6807
+ .contact-container[data-v-109ad6ae] {
6786
6808
  max-width: var(--brandsite-max-width);
6787
6809
  margin: 0 auto;
6788
6810
  }
6789
- .c-text-padding[data-v-799d8060] {
6811
+ .c-text-padding[data-v-109ad6ae] {
6790
6812
  padding-left: 1rem;
6791
6813
  padding-right: 1rem;
6792
6814
  }
6793
- .device-wrapper--mobile .c-divided-container[data-v-799d8060] {
6815
+ .device-wrapper--mobile .c-divided-container[data-v-109ad6ae] {
6794
6816
  -webkit-box-orient: vertical;
6795
6817
  -webkit-box-direction: normal;
6796
6818
  -ms-flex-direction: column;
6797
6819
  flex-direction: column;
6798
6820
  }
6799
- .device-wrapper--mobile .c-divided-container-reverse[data-v-799d8060] {
6821
+ .device-wrapper--mobile .c-divided-container-reverse[data-v-109ad6ae] {
6800
6822
  -webkit-box-orient: vertical;
6801
6823
  -webkit-box-direction: reverse;
6802
6824
  -ms-flex-direction: column-reverse;
6803
6825
  flex-direction: column-reverse;
6804
6826
  }
6805
6827
  @media (max-width: 767px) {
6806
- .c-button-full[data-v-799d8060] {
6828
+ .c-button-full[data-v-109ad6ae] {
6829
+ width: 100%;
6830
+ }
6831
+ /* Match the button's full-width on published mobile. The maker uses the
6832
+ isMobileDevice prop for this; the renderer has no such state, so the
6833
+ decorative-button wrapper is widened here via the real viewport instead. */
6834
+ [data-v-109ad6ae] .bp-style-wrapper {
6807
6835
  width: 100%;
6808
6836
  }
6809
- .c-col-span-2[data-v-799d8060] {
6837
+ .c-col-span-2[data-v-109ad6ae] {
6810
6838
  grid-column: span 2 / span 2;
6811
6839
  }
6812
- .c-mobile-padding[data-v-799d8060] {
6840
+ .c-mobile-padding[data-v-109ad6ae] {
6813
6841
  padding: 1rem;
6814
6842
  }
6815
- .c-text-padding[data-v-799d8060] {
6843
+ .c-text-padding[data-v-109ad6ae] {
6816
6844
  grid-column: span 2 / span 2;
6817
6845
  padding-left: 0px;
6818
6846
  padding-right: 0px;
6819
6847
  }
6820
- .c-divided-container[data-v-799d8060] {
6848
+ .c-divided-container[data-v-109ad6ae] {
6821
6849
  -webkit-box-orient: vertical;
6822
6850
  -webkit-box-direction: normal;
6823
6851
  -ms-flex-direction: column;
6824
6852
  flex-direction: column;
6825
6853
  }
6826
- .c-divided-container-reverse[data-v-799d8060] {
6854
+ .c-divided-container-reverse[data-v-109ad6ae] {
6827
6855
  -webkit-box-orient: vertical;
6828
6856
  -webkit-box-direction: reverse;
6829
6857
  -ms-flex-direction: column-reverse;
@@ -6831,16 +6859,16 @@ select[data-v-14e7c7c7] {
6831
6859
  }
6832
6860
  }
6833
6861
  @media (min-width: 767px) {
6834
- .c-aspect-square[data-v-799d8060] {
6862
+ .c-aspect-square[data-v-109ad6ae] {
6835
6863
  aspect-ratio: 1 / 1;
6836
6864
  }
6837
- .c-divided-container[data-v-799d8060] {
6865
+ .c-divided-container[data-v-109ad6ae] {
6838
6866
  -webkit-box-orient: horizontal;
6839
6867
  -webkit-box-direction: normal;
6840
6868
  -ms-flex-direction: row;
6841
6869
  flex-direction: row;
6842
6870
  }
6843
- .c-divided-container-reverse[data-v-799d8060] {
6871
+ .c-divided-container-reverse[data-v-109ad6ae] {
6844
6872
  -webkit-box-orient: horizontal;
6845
6873
  -webkit-box-direction: reverse;
6846
6874
  -ms-flex-direction: row-reverse;
@@ -7472,44 +7500,44 @@ select[data-v-14e7c7c7] {
7472
7500
  color: #f21b3f;
7473
7501
  }
7474
7502
 
7475
- .inner-container[data-v-24954146] {
7503
+ .inner-container[data-v-ca446a07] {
7476
7504
  max-width: var(--brandsite-max-width);
7477
7505
  margin: 0 auto;
7478
7506
  }
7479
- .outer-container[data-v-24954146] {
7507
+ .outer-container[data-v-ca446a07] {
7480
7508
  padding-left: var(--page-padding);
7481
7509
  padding-right: var(--page-padding);
7482
7510
  }
7483
- .modal-cart[data-v-24954146] .cart-image {
7511
+ .modal-cart[data-v-ca446a07] .cart-image {
7484
7512
  width: 3rem;
7485
7513
  }
7486
- .modal-cart[data-v-24954146] .cart-option {
7514
+ .modal-cart[data-v-ca446a07] .cart-option {
7487
7515
  width: 100%;
7488
7516
  }
7489
- .success-bar-container[data-v-24954146] .tw-bg-success-500 {
7517
+ .success-bar-container[data-v-ca446a07] .tw-bg-success-500 {
7490
7518
  --tw-bg-opacity: 1;
7491
7519
  background-color: rgb(36 168 16 / var(--tw-bg-opacity));
7492
7520
  }
7493
7521
  @media (min-width: 640px) {
7494
- .modal-product-detail[data-v-24954146] .modal {
7522
+ .modal-product-detail[data-v-ca446a07] .modal {
7495
7523
  min-width: 100vh;
7496
7524
  }
7497
- .modal-cart[data-v-24954146] .modal {
7525
+ .modal-cart[data-v-ca446a07] .modal {
7498
7526
  min-width: 90vh;
7499
7527
  max-height: 90vh;
7500
7528
  }
7501
- .modal-cart[data-v-24954146] .cart-image {
7529
+ .modal-cart[data-v-ca446a07] .cart-image {
7502
7530
  width: 8rem;
7503
7531
  }
7504
- .modal-cart[data-v-24954146] .cart-option {
7532
+ .modal-cart[data-v-ca446a07] .cart-option {
7505
7533
  width: 75%;
7506
7534
  }
7507
- .success-bar[data-v-24954146] {
7535
+ .success-bar[data-v-ca446a07] {
7508
7536
  width: 50%;
7509
7537
  }
7510
7538
  }
7511
7539
  @media (max-width: 640px) {
7512
- .success-bar[data-v-24954146] {
7540
+ .success-bar[data-v-ca446a07] {
7513
7541
  width: 91.666667%;
7514
7542
  }
7515
7543
  }
@@ -1130,9 +1130,15 @@ a:not(.tw-lowercase) {
1130
1130
  .tw-min-w-8 {
1131
1131
  min-width: 2rem
1132
1132
  }
1133
+ .tw-min-w-\[120px\] {
1134
+ min-width: 120px
1135
+ }
1133
1136
  .tw-min-w-\[310px\] {
1134
1137
  min-width: 310px
1135
1138
  }
1139
+ .tw-min-w-full {
1140
+ min-width: 100%
1141
+ }
1136
1142
  .tw-max-w-0 {
1137
1143
  max-width: 0px
1138
1144
  }
@@ -1472,16 +1478,6 @@ a:not(.tw-lowercase) {
1472
1478
  -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1473
1479
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
1474
1480
  }
1475
- .tw-translate-y-\[-10\%\] {
1476
- --tw-translate-y: -10%;
1477
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1478
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
1479
- }
1480
- .tw-translate-y-\[-4\%\] {
1481
- --tw-translate-y: -4%;
1482
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1483
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
1484
- }
1485
1481
  .tw-translate-y-px {
1486
1482
  --tw-translate-y: 1px;
1487
1483
  -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
@@ -3055,9 +3051,6 @@ a:not(.tw-lowercase) {
3055
3051
  .tw-leading-tight {
3056
3052
  line-height: 1.25
3057
3053
  }
3058
- .tw-text-\[var\(--icon-color\)\] {
3059
- color: var(--icon-color)
3060
- }
3061
3054
  .tw-text-black {
3062
3055
  --tw-text-opacity: 1;
3063
3056
  color: rgb(0 0 0 / var(--tw-text-opacity))
@@ -5692,39 +5685,72 @@ input[data-v-4cd691db]::-webkit-inner-spin-button {
5692
5685
  max-height: 45vh;
5693
5686
  }
5694
5687
 
5695
- .bp-button-paper-top[data-v-604db8c6] {
5696
- --tw-translate-y: -10%;
5697
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
5698
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
5699
- color: var(--icon-color);
5688
+ /* Decorative styles on submit buttons render flush at the bottom. Zero the host
5689
+ button's own margins: its decoration is positioned relative to the WRAPPER, so a
5690
+ margin on the button itself shifts it out of alignment with the decoration. The
5691
+ top gap is instead applied to the wrapper (tw-mt-4 above) so the whole decorated
5692
+ unit moves together and stays flush at the container's bottom edge (BP-5800). */
5693
+ .bp-style-wrapper--no-margin[data-v-255edfd5] button {
5694
+ margin-top: 0;
5695
+ margin-bottom: 0;
5700
5696
  }
5701
- .bp-button-paper-bottom[data-v-604db8c6] {
5702
- --tw-translate-y: -4%;
5703
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
5704
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
5705
- color: var(--icon-color);
5706
- }
5707
- .bp-button-paper-top[data-v-604db8c6] svg,
5708
- .bp-button-paper-bottom[data-v-604db8c6] svg {
5709
- width: 100%;
5710
- height: auto;
5697
+
5698
+ /* Brushstroke: flanking brush-end icons are transformed over the button's
5699
+ left/right edges, so they must not capture clicks (BP-5882). */
5700
+ .bp-icon-brush-left[data-v-255edfd5],
5701
+ .bp-icon-brush-right[data-v-255edfd5] {
5702
+ pointer-events: none;
5711
5703
  }
5712
- .bp-icon-brush-left[data-v-604db8c6] svg {
5704
+ .bp-icon-brush-left[data-v-255edfd5] svg {
5713
5705
  -webkit-transform: translateX(-99%);
5714
5706
  transform: translateX(-99%);
5715
5707
  width: auto;
5716
5708
  }
5717
- .bp-icon-brush-right[data-v-604db8c6] svg {
5709
+ .bp-icon-brush-right[data-v-255edfd5] svg {
5718
5710
  width: auto;
5719
5711
  }
5720
- .bp-button-arrow[data-v-604db8c6],
5721
- .device-wrapper--mobile .bp-button-arrow[data-v-604db8c6] {
5722
- clip-path: polygon(5% 100%, 0% 50%, 5% 0%, 95% 0%, 100% 50%, 95% 100%);
5712
+
5713
+ /* Torn-paper: the button-paper icon sits BEHIND the button as its shape. The
5714
+ wrapper is the positioning context; the icon is an inert inset layer that fills
5715
+ the button box exactly (inset:0 + preserveAspectRatio none) without inflating
5716
+ its size or capturing clicks (BP-5882/BP-5883). The button's own fill is made
5717
+ transparent so the icon's colour shows through. */
5718
+ .bp-button-shape[data-v-255edfd5] {
5719
+ position: relative;
5723
5720
  }
5724
- @media (min-width: 767px) {
5725
- .bp-button-arrow[data-v-604db8c6] {
5726
- clip-path: polygon(3% 100%, 0% 50%, 3% 0%, 97% 0%, 100% 50%, 97% 100%);
5721
+ .bp-icon-shape[data-v-255edfd5] {
5722
+ position: absolute;
5723
+ inset: 0;
5724
+ width: 100%;
5725
+ height: 100%;
5726
+ pointer-events: none;
5727
+ }
5728
+ .bp-button-shape[data-v-255edfd5] button,
5729
+ .bp-button-shape[data-v-255edfd5] a {
5730
+ position: relative; /* sit above the inert background */
5731
+ /* !important to override the host button's inline background-color. */
5732
+ background-color: transparent !important;
5727
5733
  }
5734
+ /* button-paper ships hardcoded fill="black"; recolour to the button's fill. CSS
5735
+ fill overrides the presentation attribute; clip-path rects are geometric so
5736
+ recolouring them is harmless. */
5737
+ .bp-icon-shape[data-v-255edfd5] path,
5738
+ .bp-icon-shape[data-v-255edfd5] rect {
5739
+ fill: currentColor;
5740
+ }
5741
+ .bp-button-arrow[data-v-255edfd5],
5742
+ .device-wrapper--mobile .bp-button-arrow[data-v-255edfd5] {
5743
+ /* Fixed-px arrowhead (not %) so the chevron is equally sharp at any button
5744
+ width — a %-based point collapses on narrow buttons (e.g. the 120px contact
5745
+ form submit) and only reads as an arrow on wide ones. */
5746
+ clip-path: polygon(
5747
+ 12px 100%,
5748
+ 0 50%,
5749
+ 12px 0,
5750
+ calc(100% - 12px) 0,
5751
+ 100% 50%,
5752
+ calc(100% - 12px) 100%
5753
+ );
5728
5754
  }
5729
5755
 
5730
5756
  .empty-para[data-v-2520851c] p:empty::after {
@@ -5838,7 +5864,7 @@ input[data-v-4cd691db]::-webkit-inner-spin-button {
5838
5864
  text-decoration: underline;
5839
5865
  }
5840
5866
 
5841
- .form-error[data-v-ddbacf5a] {
5867
+ .form-error[data-v-b7e55081] {
5842
5868
  font-size: 0.875rem;
5843
5869
  line-height: 1.25rem;
5844
5870
  color: #f21b3f
@@ -6093,14 +6119,10 @@ select[data-v-14e7c7c7] {
6093
6119
  background-position: right 12px center;
6094
6120
  }
6095
6121
 
6096
- .form-error[data-v-7731d899] {
6122
+ .form-error[data-v-0cc4cbbd] {
6097
6123
  font-size: 0.75rem;
6098
6124
  line-height: 1rem;
6099
- color: #f21b3f;
6100
- }
6101
- .pay-button-disabled[data-v-7731d899] {
6102
- opacity: 0.5 !important;
6103
- pointer-events: none;
6125
+ color: #f21b3f
6104
6126
  }
6105
6127
 
6106
6128
  /* TODO: review CSS setup, scoped CSS will not work in slot */
@@ -6196,53 +6218,59 @@ select[data-v-14e7c7c7] {
6196
6218
  width: 100%;
6197
6219
  }
6198
6220
 
6199
- .form-error[data-v-799d8060] {
6221
+ .form-error[data-v-109ad6ae] {
6200
6222
  font-size: 0.875rem;
6201
6223
  line-height: 1.25rem;
6202
6224
  color: #f21b3f;
6203
6225
  }
6204
- .contact-container[data-v-799d8060] {
6226
+ .contact-container[data-v-109ad6ae] {
6205
6227
  max-width: var(--brandsite-max-width);
6206
6228
  margin: 0 auto;
6207
6229
  }
6208
- .c-text-padding[data-v-799d8060] {
6230
+ .c-text-padding[data-v-109ad6ae] {
6209
6231
  padding-left: 1rem;
6210
6232
  padding-right: 1rem;
6211
6233
  }
6212
- .device-wrapper--mobile .c-divided-container[data-v-799d8060] {
6234
+ .device-wrapper--mobile .c-divided-container[data-v-109ad6ae] {
6213
6235
  -webkit-box-orient: vertical;
6214
6236
  -webkit-box-direction: normal;
6215
6237
  -ms-flex-direction: column;
6216
6238
  flex-direction: column;
6217
6239
  }
6218
- .device-wrapper--mobile .c-divided-container-reverse[data-v-799d8060] {
6240
+ .device-wrapper--mobile .c-divided-container-reverse[data-v-109ad6ae] {
6219
6241
  -webkit-box-orient: vertical;
6220
6242
  -webkit-box-direction: reverse;
6221
6243
  -ms-flex-direction: column-reverse;
6222
6244
  flex-direction: column-reverse;
6223
6245
  }
6224
6246
  @media (max-width: 767px) {
6225
- .c-button-full[data-v-799d8060] {
6247
+ .c-button-full[data-v-109ad6ae] {
6248
+ width: 100%;
6249
+ }
6250
+ /* Match the button's full-width on published mobile. The maker uses the
6251
+ isMobileDevice prop for this; the renderer has no such state, so the
6252
+ decorative-button wrapper is widened here via the real viewport instead. */
6253
+ [data-v-109ad6ae] .bp-style-wrapper {
6226
6254
  width: 100%;
6227
6255
  }
6228
- .c-col-span-2[data-v-799d8060] {
6256
+ .c-col-span-2[data-v-109ad6ae] {
6229
6257
  grid-column: span 2 / span 2;
6230
6258
  }
6231
- .c-mobile-padding[data-v-799d8060] {
6259
+ .c-mobile-padding[data-v-109ad6ae] {
6232
6260
  padding: 1rem;
6233
6261
  }
6234
- .c-text-padding[data-v-799d8060] {
6262
+ .c-text-padding[data-v-109ad6ae] {
6235
6263
  grid-column: span 2 / span 2;
6236
6264
  padding-left: 0px;
6237
6265
  padding-right: 0px;
6238
6266
  }
6239
- .c-divided-container[data-v-799d8060] {
6267
+ .c-divided-container[data-v-109ad6ae] {
6240
6268
  -webkit-box-orient: vertical;
6241
6269
  -webkit-box-direction: normal;
6242
6270
  -ms-flex-direction: column;
6243
6271
  flex-direction: column;
6244
6272
  }
6245
- .c-divided-container-reverse[data-v-799d8060] {
6273
+ .c-divided-container-reverse[data-v-109ad6ae] {
6246
6274
  -webkit-box-orient: vertical;
6247
6275
  -webkit-box-direction: reverse;
6248
6276
  -ms-flex-direction: column-reverse;
@@ -6250,16 +6278,16 @@ select[data-v-14e7c7c7] {
6250
6278
  }
6251
6279
  }
6252
6280
  @media (min-width: 767px) {
6253
- .c-aspect-square[data-v-799d8060] {
6281
+ .c-aspect-square[data-v-109ad6ae] {
6254
6282
  aspect-ratio: 1 / 1;
6255
6283
  }
6256
- .c-divided-container[data-v-799d8060] {
6284
+ .c-divided-container[data-v-109ad6ae] {
6257
6285
  -webkit-box-orient: horizontal;
6258
6286
  -webkit-box-direction: normal;
6259
6287
  -ms-flex-direction: row;
6260
6288
  flex-direction: row;
6261
6289
  }
6262
- .c-divided-container-reverse[data-v-799d8060] {
6290
+ .c-divided-container-reverse[data-v-109ad6ae] {
6263
6291
  -webkit-box-orient: horizontal;
6264
6292
  -webkit-box-direction: reverse;
6265
6293
  -ms-flex-direction: row-reverse;
@@ -6891,44 +6919,44 @@ select[data-v-14e7c7c7] {
6891
6919
  color: #f21b3f;
6892
6920
  }
6893
6921
 
6894
- .inner-container[data-v-24954146] {
6922
+ .inner-container[data-v-ca446a07] {
6895
6923
  max-width: var(--brandsite-max-width);
6896
6924
  margin: 0 auto;
6897
6925
  }
6898
- .outer-container[data-v-24954146] {
6926
+ .outer-container[data-v-ca446a07] {
6899
6927
  padding-left: var(--page-padding);
6900
6928
  padding-right: var(--page-padding);
6901
6929
  }
6902
- .modal-cart[data-v-24954146] .cart-image {
6930
+ .modal-cart[data-v-ca446a07] .cart-image {
6903
6931
  width: 3rem;
6904
6932
  }
6905
- .modal-cart[data-v-24954146] .cart-option {
6933
+ .modal-cart[data-v-ca446a07] .cart-option {
6906
6934
  width: 100%;
6907
6935
  }
6908
- .success-bar-container[data-v-24954146] .tw-bg-success-500 {
6936
+ .success-bar-container[data-v-ca446a07] .tw-bg-success-500 {
6909
6937
  --tw-bg-opacity: 1;
6910
6938
  background-color: rgb(36 168 16 / var(--tw-bg-opacity));
6911
6939
  }
6912
6940
  @media (min-width: 640px) {
6913
- .modal-product-detail[data-v-24954146] .modal {
6941
+ .modal-product-detail[data-v-ca446a07] .modal {
6914
6942
  min-width: 100vh;
6915
6943
  }
6916
- .modal-cart[data-v-24954146] .modal {
6944
+ .modal-cart[data-v-ca446a07] .modal {
6917
6945
  min-width: 90vh;
6918
6946
  max-height: 90vh;
6919
6947
  }
6920
- .modal-cart[data-v-24954146] .cart-image {
6948
+ .modal-cart[data-v-ca446a07] .cart-image {
6921
6949
  width: 8rem;
6922
6950
  }
6923
- .modal-cart[data-v-24954146] .cart-option {
6951
+ .modal-cart[data-v-ca446a07] .cart-option {
6924
6952
  width: 75%;
6925
6953
  }
6926
- .success-bar[data-v-24954146] {
6954
+ .success-bar[data-v-ca446a07] {
6927
6955
  width: 50%;
6928
6956
  }
6929
6957
  }
6930
6958
  @media (max-width: 640px) {
6931
- .success-bar[data-v-24954146] {
6959
+ .success-bar[data-v-ca446a07] {
6932
6960
  width: 91.666667%;
6933
6961
  }
6934
6962
  }