@undrr/undrr-mangrove 1.8.2 → 2.0.0-alpha.2

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 (145) hide show
  1. package/components/BookCard.js +2 -2
  2. package/components/BookCard.js.LICENSE.txt +1 -1
  3. package/components/Breadcrumbs.js +3 -2
  4. package/components/Checkbox.js +3 -2
  5. package/components/Chips.js +3 -2
  6. package/components/CtaButton.js +3 -2
  7. package/components/EmbedContainer.js +3 -2
  8. package/components/Footer.js +2 -2
  9. package/components/Footer.js.LICENSE.txt +1 -1
  10. package/components/FormAction.js +6 -0
  11. package/components/FormAction.js.LICENSE.txt +9 -0
  12. package/components/FormErrorSummary.js +3 -2
  13. package/components/FormGroup.js +3 -2
  14. package/components/FullWidth.js +3 -2
  15. package/components/Gallery.js +2 -2
  16. package/components/Gallery.js.LICENSE.txt +1 -1
  17. package/components/Hero.js +2 -2
  18. package/components/Hero.js.LICENSE.txt +1 -1
  19. package/components/HighlightBox.js +3 -2
  20. package/components/HorizontalBookCard.js +2 -2
  21. package/components/HorizontalBookCard.js.LICENSE.txt +1 -1
  22. package/components/HorizontalCard.js +2 -2
  23. package/components/HorizontalCard.js.LICENSE.txt +1 -1
  24. package/components/IconCard.js +2 -2
  25. package/components/IconCard.js.LICENSE.txt +1 -1
  26. package/components/Loader.js +3 -2
  27. package/components/MegaMenu.js +2 -2
  28. package/components/MegaMenu.js.LICENSE.txt +1 -1
  29. package/components/PageHeader.js +3 -2
  30. package/components/Pager.js +2 -2
  31. package/components/Pager.js.LICENSE.txt +1 -1
  32. package/components/QuoteHighlight.js +3 -2
  33. package/components/Radio.js +3 -2
  34. package/components/ScrollContainer.js +3 -2
  35. package/components/Select.js +3 -2
  36. package/components/ShareButtons.js +2 -2
  37. package/components/ShareButtons.js.LICENSE.txt +1 -1
  38. package/components/ShowMore.js +3 -2
  39. package/components/StatsCard.js +2 -2
  40. package/components/StatsCard.js.LICENSE.txt +10 -0
  41. package/components/SyndicationSearchWidget.js +2 -2
  42. package/components/SyndicationSearchWidget.js.LICENSE.txt +1 -1
  43. package/components/Tab.js +3 -2
  44. package/components/TextCta.js +2 -2
  45. package/components/TextCta.js.LICENSE.txt +10 -0
  46. package/components/TextInput.js +3 -2
  47. package/components/Textarea.js +3 -2
  48. package/components/UserFeedback.js +6 -0
  49. package/components/UserFeedback.js.LICENSE.txt +9 -0
  50. package/components/VerticalCard.js +2 -2
  51. package/components/VerticalCard.js.LICENSE.txt +1 -1
  52. package/components/hydrate.js +1 -1
  53. package/css/style-all.css +422 -0
  54. package/css/style-all.css.map +1 -0
  55. package/css/style-delta.css +122 -171
  56. package/css/style-delta.css.map +1 -1
  57. package/css/style-gutenberg.css +55 -89
  58. package/css/style-gutenberg.css.map +1 -1
  59. package/css/style-irp.css +122 -161
  60. package/css/style-irp.css.map +1 -1
  61. package/css/style-mcr.css +122 -161
  62. package/css/style-mcr.css.map +1 -1
  63. package/css/style-preventionweb.css +122 -161
  64. package/css/style-preventionweb.css.map +1 -1
  65. package/css/style.css +121 -154
  66. package/css/style.css.map +1 -1
  67. package/package.json +2 -2
  68. package/scss/Atom/BaseTypography/Abbr/abbr.scss +1 -1
  69. package/scss/Atom/BaseTypography/Code/code.scss +41 -36
  70. package/scss/Atom/BaseTypography/Mark/mark.scss +2 -2
  71. package/scss/Atom/Images/AuthorImage/author-image.scss +8 -8
  72. package/scss/Atom/Images/ImageCaptionCredit/image-caption-credit.scss +9 -9
  73. package/scss/Atom/Layout/Container/container.scss +2 -4
  74. package/scss/Atom/Layout/Grid/grid.scss +15 -15
  75. package/scss/Atom/Navigation/MenuItems/menu-items.scss +10 -3
  76. package/scss/Atom/ReachElement/Details/details.scss +44 -39
  77. package/scss/Atom/Table/table.scss +22 -10
  78. package/scss/Atom/Tag/tag.scss +32 -32
  79. package/scss/Components/Boilerplate/boilerplate.scss +7 -7
  80. package/scss/Components/Breadcrumbs/breadcrumbs.scss +9 -9
  81. package/scss/Components/Buttons/Chips/chips.scss +63 -23
  82. package/scss/Components/Buttons/CtaButton/cta-button.scss +142 -20
  83. package/scss/Components/Buttons/ShareButtons/share-buttons.scss +16 -16
  84. package/scss/Components/Cards/Card/card.scss +77 -50
  85. package/scss/Components/Cards/StatsCard/stats-card.scss +32 -34
  86. package/scss/Components/CookieConsentBanner/cookie-consent-banner.scss +75 -74
  87. package/scss/Components/ErrorPages/error-pages.scss +9 -9
  88. package/scss/Components/Footer/footer.scss +12 -12
  89. package/scss/Components/Forms/FormAction/form-action.scss +50 -0
  90. package/scss/Components/Forms/FormGroup/form-group.scss +18 -7
  91. package/scss/Components/Forms/Select/select.scss +1 -1
  92. package/scss/Components/Forms/TextInput/text-input.scss +1 -1
  93. package/scss/Components/Forms/_form-base.scss +68 -61
  94. package/scss/Components/Gallery/gallery.scss +71 -70
  95. package/scss/Components/Hero/hero.scss +241 -74
  96. package/scss/Components/HighlightBox/highlight-box.scss +3 -3
  97. package/scss/Components/MegaMenu/mega-menu.scss +73 -76
  98. package/scss/Components/OnThisPageNav/on-this-page-nav.scss +36 -37
  99. package/scss/Components/PageHeader/page-header.scss +7 -7
  100. package/scss/Components/Pager/pager.scss +85 -62
  101. package/scss/Components/PreviewAccess/preview-access.scss +35 -35
  102. package/scss/Components/QuoteHighlight/quote-highlight.scss +32 -32
  103. package/scss/Components/ScrollContainer/scroll-container.scss +52 -32
  104. package/scss/Components/Snackbar/snackbar.scss +24 -31
  105. package/scss/Components/SyndicationSearchWidget/syndication-search-widget.scss +147 -139
  106. package/scss/Components/Tab/tab.scss +215 -34
  107. package/scss/Components/TableOfContents/table-of-contents.scss +6 -6
  108. package/scss/Components/TextCta/text-cta.scss +69 -23
  109. package/scss/Components/UserFeedback/user-feedback.scss +69 -0
  110. package/scss/Molecules/ImageCaption/image-caption.scss +16 -16
  111. package/scss/Molecules/SectionHeader/section-header.scss +1 -1
  112. package/scss/Utilities/FullWidth/full-width.scss +1 -1
  113. package/scss/Utilities/Loader/loader.scss +4 -4
  114. package/scss/assets/scss/_components.scss +3 -2
  115. package/scss/assets/scss/_foundational.scss +44 -26
  116. package/scss/assets/scss/_mixins.scss +34 -1
  117. package/scss/assets/scss/_theme-delta.scss +68 -0
  118. package/scss/assets/scss/_theme-irp.scss +39 -0
  119. package/scss/assets/scss/_theme-mcr.scss +56 -0
  120. package/scss/assets/scss/_theme-preventionweb.scss +37 -0
  121. package/scss/assets/scss/_utility.scss +112 -112
  122. package/scss/assets/scss/_variables.scss +358 -354
  123. package/scss/assets/scss/style-all.scss +19 -0
  124. package/scss/assets/scss/style-delta.scss +1 -1
  125. package/scss/assets/scss/style-irp.scss +1 -1
  126. package/scss/assets/scss/style-mcr.scss +1 -1
  127. package/scss/assets/scss/style-preventionweb.scss +1 -1
  128. package/css/style-irp-legacy.css +0 -476
  129. package/css/style-irp-legacy.css.map +0 -1
  130. package/css/style-legacy.css +0 -469
  131. package/css/style-legacy.css.map +0 -1
  132. package/css/style-mcr-legacy.css +0 -476
  133. package/css/style-mcr-legacy.css.map +0 -1
  134. package/css/style-preventionweb-legacy.css +0 -476
  135. package/css/style-preventionweb-legacy.css.map +0 -1
  136. package/scss/Components/Forms/_form-legacy.scss +0 -152
  137. package/scss/Components/Pagination/pagination.scss +0 -112
  138. package/scss/assets/scss/_variables-delta.scss +0 -110
  139. package/scss/assets/scss/_variables-irp.scss +0 -50
  140. package/scss/assets/scss/_variables-mcr.scss +0 -65
  141. package/scss/assets/scss/_variables-preventionweb.scss +0 -48
  142. package/scss/assets/scss/style-irp-legacy.scss +0 -20
  143. package/scss/assets/scss/style-legacy.scss +0 -20
  144. package/scss/assets/scss/style-mcr-legacy.scss +0 -20
  145. package/scss/assets/scss/style-preventionweb-legacy.scss +0 -20
@@ -7,67 +7,154 @@
7
7
  // margin: 0 auto;
8
8
  // }
9
9
  .mg-hero {
10
+ --mg-hero-cta-color: var(--mg-color-hero);
11
+ --mg-hero-gradient-color: var(--mg-color-blue-900);
12
+ --mg-hero-gradient-start: var(--mg-hero-gradient-start-opacity);
13
+ --mg-hero-gradient-middle: var(--mg-hero-gradient-middle-opacity);
14
+ --mg-hero-gradient-end: var(--mg-hero-gradient-end-opacity);
15
+
10
16
  background-size: cover;
11
17
  background-position: center;
12
- color: $mg-color-neutral-0;
18
+ color: rgb(var(--mg-color-neutral-0));
13
19
  display: grid;
14
20
  grid-template-columns: 1fr;
15
21
  position: relative;
16
22
  margin-left: calc(50% - (50vw)); // to expand out of the parent container
17
- padding-left: $mg-spacing-100;
23
+ padding-left: var(--mg-spacing-100);
18
24
  width: 100vw;
19
25
 
26
+ &:not(.mg-hero--split)::before {
27
+ background: linear-gradient(
28
+ 90deg,
29
+ rgb(var(--mg-hero-gradient-color) / var(--mg-hero-gradient-start)) 0%,
30
+ rgb(var(--mg-hero-gradient-color) / var(--mg-hero-gradient-middle)) 48%,
31
+ rgb(var(--mg-hero-gradient-color) / var(--mg-hero-gradient-end)) 100%
32
+ );
33
+ content: "";
34
+ inset: 0;
35
+ pointer-events: none;
36
+ position: absolute;
37
+
38
+ @media (max-width: $mg-breakpoint-tablet) {
39
+ background: linear-gradient(
40
+ 0deg,
41
+ rgb(var(--mg-hero-gradient-color) / var(--mg-hero-gradient-start)) 0%,
42
+ rgb(var(--mg-hero-gradient-color) / var(--mg-hero-gradient-middle)) 68%,
43
+ rgb(var(--mg-hero-gradient-color) / var(--mg-hero-gradient-end)) 100%
44
+ );
45
+ }
46
+ }
47
+
20
48
  @media (min-width: $mg-breakpoint-tablet) {
21
49
  aspect-ratio: 16 / 4; // we use 16:4, which is closer to the real crop ratio
22
- padding-left: calc(50vw - calc($mg-breakpoint-desktop / 2)); // to keep the overlay fixed
50
+ padding-left: calc(
51
+ 50vw - calc($mg-breakpoint-desktop / 2)
52
+ ); // to keep the overlay fixed
23
53
  }
24
54
 
25
55
  @media (min-width: $mg-breakpoint-desktop-wide) {
26
- padding-left: calc(50vw - calc($mg-breakpoint-desktop-wide / 2)); // to keep the overlay fixed
56
+ padding-left: calc(
57
+ 50vw - calc($mg-breakpoint-desktop-wide / 2)
58
+ ); // to keep the overlay fixed
59
+ }
60
+
61
+ &--contained {
62
+ margin-inline: 0;
63
+ padding-inline: 0;
64
+ width: 100%;
65
+ }
66
+
67
+ &--immersive:not(.mg-hero--split) {
68
+ align-items: end;
69
+ aspect-ratio: unset;
70
+ min-height: clamp(mg-rem(496), 62vw, mg-rem(688));
71
+
72
+ .mg-hero__overlay {
73
+ align-items: end;
74
+ margin: 0;
75
+ max-width: mg-rem(768);
76
+ padding: clamp(mg-rem(32), 6vw, mg-rem(80));
77
+ }
78
+
79
+ .mg-hero__title,
80
+ .mg-hero__title .text-xxl {
81
+ font-size: clamp(mg-rem(38), 6vw, mg-rem(80));
82
+ letter-spacing: -0.045em;
83
+ line-height: 0.98;
84
+ max-width: 12ch;
85
+ }
86
+
87
+ .mg-hero__summaryText {
88
+ font-size: clamp(mg-rem(16), 1.8vw, mg-rem(21));
89
+ line-height: 1.55;
90
+ max-width: 37rem;
91
+ }
27
92
  }
28
93
 
29
94
  // Button overrides
30
95
  a.mg-button,
31
96
  a.mg-button:hover,
32
97
  a.mg-button:visited {
33
- color: $mg-color-hero;
98
+ color: rgb(var(--mg-color-hero));
34
99
  }
35
100
 
36
101
  a.mg-button-primary {
37
- background-color: $mg-color-neutral-0;
102
+ background-color: rgb(var(--mg-color-neutral-0));
38
103
  }
39
104
 
40
- a.mg-button-secondary,
41
- a.mg-button-secondary:hover,
42
- a.mg-button-secondary:visited {
43
- background-color: $mg-color-hero-button-secondary-background;
44
- color: $mg-color-hero-button-secondary-color;
45
- border-color: $mg-border-color-hero-button-secondary;
105
+ // Editorial link-style CTA used by CtaButton.
106
+ a.mg-button.mg-button-cta,
107
+ a.mg-button.mg-button-cta:hover,
108
+ a.mg-button.mg-button-cta:visited {
109
+ background: transparent;
110
+ border-color: transparent;
111
+ color: rgb(var(--mg-color-neutral-0));
112
+
113
+ &::after {
114
+ background: rgb(var(--mg-color-neutral-0));
115
+ color: rgb(var(--mg-hero-cta-color));
116
+ }
117
+ }
118
+
119
+ a.mg-button-secondary:not(.mg-button-cta),
120
+ a.mg-button-secondary:not(.mg-button-cta):hover,
121
+ a.mg-button-secondary:not(.mg-button-cta):visited {
122
+ background-color: var(--mg-color-hero-button-secondary-background);
123
+ color: rgb(var(--mg-color-hero-button-secondary-color));
124
+ border-color: rgb(var(--mg-border-color-hero-button-secondary));
46
125
  }
47
126
 
48
127
  a.mg-button:focus-visible {
49
- box-shadow: 0 0 0 2px $mg-color-neutral-0;
50
- outline: 2px solid $mg-color-neutral-0;
128
+ box-shadow: 0 0 0 2px rgb(var(--mg-color-neutral-0));
129
+ outline: 2px solid rgb(var(--mg-color-neutral-0));
51
130
  outline-offset: 2px;
52
131
  }
53
132
 
54
133
  &__overlay {
55
134
  align-items: center;
56
- background-color: rgba($mg-color-hero, $mg-opacity-hero);
135
+ background: transparent;
57
136
  display: grid;
58
- margin: $mg-spacing-hero-overlay;
59
- max-width: $mg-hero-overlay-max-width;
60
- padding: $mg-hero-overlay-padding;
137
+ margin: var(--mg-spacing-hero-overlay);
138
+ max-width: var(--mg-hero-overlay-max-width);
139
+ padding: var(--mg-hero-overlay-padding);
140
+ position: relative;
141
+ z-index: 1;
61
142
  }
62
143
 
63
144
  &__content {
64
145
  display: grid;
65
- margin-top: $mg-spacing-25;
146
+ margin-top: var(--mg-spacing-25);
66
147
  row-gap: mg-rem(10);
67
148
  }
68
149
 
150
+ &__logo {
151
+ height: auto;
152
+ margin-bottom: clamp(var(--mg-spacing-300), 10vw, var(--mg-spacing-800));
153
+ width: min(mg-rem(208), 52vw);
154
+ }
155
+
69
156
  &__meta {
70
- padding-bottom: $mg-spacing-25;
157
+ padding-bottom: var(--mg-spacing-25);
71
158
 
72
159
  &.meta-detail {
73
160
  display: flex;
@@ -80,8 +167,8 @@
80
167
  font-family: $mg-font-family-headings;
81
168
  font-size: $mg-font-tag;
82
169
  font-weight: bold;
83
- margin-right: $mg-spacing-25;
84
- padding: $mg-spacing-25 0;
170
+ margin-right: var(--mg-spacing-25);
171
+ padding: var(--mg-spacing-25) 0;
85
172
 
86
173
  &.detail {
87
174
  font-weight: normal;
@@ -92,23 +179,25 @@
92
179
  a,
93
180
  a:hover,
94
181
  a:visited {
95
- color: $mg-color-neutral-0;
182
+ color: rgb(var(--mg-color-neutral-0));
96
183
  }
97
184
 
98
185
  // Title styles (for both <h1> and <a>)
99
186
  &__title {
100
- color: $mg-color-hero-title;
101
- margin-bottom: $mg-spacing-25;
187
+ color: rgb(var(--mg-color-hero-title));
188
+ margin-bottom: var(--mg-spacing-25);
102
189
  display: inline-block;
103
190
  font-family: $mg-font-family-headings;
104
191
  font-weight: bold;
105
192
  font-size: $mg-font-size-600;
106
193
  line-height: 1.2;
194
+ max-width: 18ch;
195
+ text-wrap: balance;
107
196
 
108
197
  a,
109
198
  a:hover,
110
199
  a:visited {
111
- color: $mg-color-hero-title;
200
+ color: rgb(var(--mg-color-hero-title));
112
201
  }
113
202
 
114
203
  // General text styles for larger text
@@ -135,7 +224,7 @@
135
224
  h4,
136
225
  h5,
137
226
  h6 {
138
- color: $mg-color-hero-title;
227
+ color: rgb(var(--mg-color-hero-title));
139
228
  font-weight: bold;
140
229
  font-size: $mg-font-size-600;
141
230
 
@@ -156,19 +245,54 @@
156
245
  }
157
246
  }
158
247
  }
248
+
249
+ // Preserve heading typography when CMS content is wrapped in the inline
250
+ // span used by HeroTitle; host-page span rules must not shrink the title.
251
+ h1 > span,
252
+ h2 > span,
253
+ h3 > span,
254
+ h4 > span,
255
+ h5 > span,
256
+ h6 > span,
257
+ a > span {
258
+ font-family: inherit;
259
+ font-size: inherit;
260
+ font-weight: inherit;
261
+ letter-spacing: inherit;
262
+ line-height: inherit;
263
+ }
159
264
  }
160
265
 
161
266
  &__summaryText {
162
267
  @include mg-typography("small");
163
268
 
164
- margin-bottom: $mg-spacing-25;
269
+ margin-bottom: var(--mg-spacing-25);
270
+ max-width: 62ch;
271
+ text-wrap: pretty;
165
272
  }
166
273
  }
167
274
 
168
275
  .mg-hero__buttons {
169
- padding-top: $mg-spacing-75;
170
276
  display: flex;
171
- padding-bottom: $mg-spacing-50;
277
+ flex-wrap: wrap;
278
+ gap: var(--mg-spacing-100) var(--mg-spacing-250);
279
+ padding-bottom: var(--mg-spacing-50);
280
+ padding-top: var(--mg-spacing-75);
281
+
282
+ @media (max-width: $mg-breakpoint-tablet) {
283
+ align-items: flex-start;
284
+ flex-direction: column;
285
+ flex-wrap: nowrap;
286
+
287
+ .mg-button.mg-button-cta {
288
+ inline-size: fit-content;
289
+ max-inline-size: 100%;
290
+ }
291
+ }
292
+
293
+ .mg-button + .mg-button {
294
+ margin-inline-start: 0;
295
+ }
172
296
  }
173
297
 
174
298
  // Child variant
@@ -179,29 +303,32 @@
179
303
  }
180
304
 
181
305
  // Stylistic variants
182
- $variant-colours: (
183
- "secondary": $mg-color-hero--secondary,
184
- "tertiary": $mg-color-hero--tertiary,
185
- "quaternary": $mg-color-hero--quaternary,
306
+ $variant-colour-props: (
307
+ "secondary": "--mg-color-orange-800",
308
+ "tertiary": "--mg-color-neutral-900",
309
+ "quaternary": "--mg-color-red-800",
186
310
  );
187
311
 
188
- @each $name, $color in $variant-colours {
189
- .mg-hero--#{$name} .mg-hero__overlay {
190
- background-color: rgba($color, $mg-opacity-hero);
312
+ @each $name, $prop in $variant-colour-props {
313
+ .mg-hero--#{$name} {
314
+ --mg-hero-cta-color: var(#{$prop});
315
+ --mg-hero-gradient-color: var(#{$prop});
191
316
 
192
- a.mg-button,
193
- a.mg-button:hover,
194
- a.mg-button:visited {
195
- color: #{$color};
196
- }
317
+ .mg-hero__overlay {
318
+ a.mg-button:not(.mg-button-cta),
319
+ a.mg-button:not(.mg-button-cta):hover,
320
+ a.mg-button:not(.mg-button-cta):visited {
321
+ color: rgb(var(#{$prop}));
322
+ }
197
323
 
198
- // Preserve secondary button's dedicated tokens over the generic color above
199
- a.mg-button-secondary,
200
- a.mg-button-secondary:hover,
201
- a.mg-button-secondary:visited {
202
- background-color: $mg-color-hero-button-secondary-background;
203
- color: $mg-color-hero-button-secondary-color;
204
- border-color: $mg-border-color-hero-button-secondary;
324
+ // Preserve secondary button's dedicated tokens over the generic color above
325
+ a.mg-button-secondary:not(.mg-button-cta),
326
+ a.mg-button-secondary:not(.mg-button-cta):hover,
327
+ a.mg-button-secondary:not(.mg-button-cta):visited {
328
+ background-color: var(--mg-color-hero-button-secondary-background);
329
+ color: rgb(var(--mg-color-hero-button-secondary-color));
330
+ border-color: rgb(var(--mg-border-color-hero-button-secondary));
331
+ }
205
332
  }
206
333
  }
207
334
  }
@@ -209,17 +336,44 @@ $variant-colours: (
209
336
  // RTL tweaks (background layout only)
210
337
  [dir="rtl"] .mg-hero:not(.mg-hero--split) {
211
338
  margin-right: calc(50% - (50vw)); // to expand out of the parent container
212
- padding-right: $mg-spacing-100;
339
+ padding-right: var(--mg-spacing-100);
340
+
341
+ &::before {
342
+ background: linear-gradient(
343
+ 270deg,
344
+ rgb(var(--mg-hero-gradient-color) / var(--mg-hero-gradient-start)) 0%,
345
+ rgb(var(--mg-hero-gradient-color) / var(--mg-hero-gradient-middle)) 48%,
346
+ rgb(var(--mg-hero-gradient-color) / var(--mg-hero-gradient-end)) 100%
347
+ );
348
+
349
+ @media (max-width: $mg-breakpoint-tablet) {
350
+ background: linear-gradient(
351
+ 0deg,
352
+ rgb(var(--mg-hero-gradient-color) / var(--mg-hero-gradient-start)) 0%,
353
+ rgb(var(--mg-hero-gradient-color) / var(--mg-hero-gradient-middle)) 68%,
354
+ rgb(var(--mg-hero-gradient-color) / var(--mg-hero-gradient-end)) 100%
355
+ );
356
+ }
357
+ }
213
358
 
214
359
  @media (min-width: $mg-breakpoint-tablet) {
215
- padding-right: calc(50vw - calc($mg-breakpoint-desktop / 2)); // to keep the overlay fixed
360
+ padding-right: calc(
361
+ 50vw - calc($mg-breakpoint-desktop / 2)
362
+ ); // to keep the overlay fixed
216
363
  }
217
364
 
218
365
  @media (min-width: $mg-breakpoint-desktop-wide) {
219
- padding-right: calc(50vw - calc($mg-breakpoint-desktop-wide / 2)); // to keep the overlay fixed
366
+ padding-right: calc(
367
+ 50vw - calc($mg-breakpoint-desktop-wide / 2)
368
+ ); // to keep the overlay fixed
220
369
  }
221
370
  }
222
371
 
372
+ [dir="rtl"] .mg-hero--contained:not(.mg-hero--split) {
373
+ margin-inline: 0;
374
+ padding-inline: 0;
375
+ }
376
+
223
377
  // Split layout variant
224
378
  .mg-hero--split {
225
379
  background-image: none;
@@ -227,31 +381,44 @@ $variant-colours: (
227
381
 
228
382
  // Reset background-layout padding offsets
229
383
  padding-left: 0;
230
- background-color: $mg-color-hero;
384
+ background-color: rgb(var(--mg-color-hero));
231
385
 
232
386
  // Button/CTA overrides (mirrors background layout, but scoped to split section
233
387
  // since there is no __overlay to target)
234
388
  a.mg-button,
235
389
  a.mg-button:hover,
236
390
  a.mg-button:visited {
237
- color: $mg-color-hero;
391
+ color: rgb(var(--mg-color-hero));
238
392
  }
239
393
 
240
394
  a.mg-button-primary {
241
- background-color: $mg-color-neutral-0;
395
+ background-color: rgb(var(--mg-color-neutral-0));
396
+ }
397
+
398
+ a.mg-button.mg-button-cta,
399
+ a.mg-button.mg-button-cta:hover,
400
+ a.mg-button.mg-button-cta:visited {
401
+ background: transparent;
402
+ border-color: transparent;
403
+ color: rgb(var(--mg-color-neutral-0));
404
+
405
+ &::after {
406
+ background: rgb(var(--mg-color-neutral-0));
407
+ color: rgb(var(--mg-hero-cta-color));
408
+ }
242
409
  }
243
410
 
244
- a.mg-button-secondary,
245
- a.mg-button-secondary:hover,
246
- a.mg-button-secondary:visited {
247
- background-color: $mg-color-hero-button-secondary-background;
248
- color: $mg-color-hero-button-secondary-color;
249
- border-color: $mg-border-color-hero-button-secondary;
411
+ a.mg-button-secondary:not(.mg-button-cta),
412
+ a.mg-button-secondary:not(.mg-button-cta):hover,
413
+ a.mg-button-secondary:not(.mg-button-cta):visited {
414
+ background-color: var(--mg-color-hero-button-secondary-background);
415
+ color: rgb(var(--mg-color-hero-button-secondary-color));
416
+ border-color: rgb(var(--mg-border-color-hero-button-secondary));
250
417
  }
251
418
 
252
419
  a.mg-button:focus-visible {
253
- box-shadow: 0 0 0 2px $mg-color-neutral-0;
254
- outline: 2px solid $mg-color-neutral-0;
420
+ box-shadow: 0 0 0 2px rgb(var(--mg-color-neutral-0));
421
+ outline: 2px solid rgb(var(--mg-color-neutral-0));
255
422
  outline-offset: 2px;
256
423
  }
257
424
 
@@ -286,7 +453,7 @@ $variant-colours: (
286
453
  .mg-hero__content {
287
454
  display: grid;
288
455
  row-gap: mg-rem(10);
289
- padding: $mg-spacing-200 $mg-spacing-100;
456
+ padding: var(--mg-spacing-200) var(--mg-spacing-100);
290
457
  align-content: center;
291
458
  }
292
459
 
@@ -332,13 +499,13 @@ $variant-colours: (
332
499
  position: absolute;
333
500
  inset-inline: 0;
334
501
  inset-block-end: 0;
335
- background: rgba($mg-color-neutral-900, 0.75);
336
- color: $mg-color-neutral-0;
337
- padding: $mg-spacing-50 $mg-spacing-100;
502
+ background: rgb(var(--mg-color-neutral-900) / 0.75);
503
+ color: rgb(var(--mg-color-neutral-0));
504
+ padding: var(--mg-spacing-50) var(--mg-spacing-100);
338
505
  display: flex;
339
506
  justify-content: space-between;
340
507
  align-items: center;
341
- gap: $mg-spacing-100;
508
+ gap: var(--mg-spacing-100);
342
509
  }
343
510
  }
344
511
  }
@@ -359,14 +526,14 @@ $variant-colours: (
359
526
  }
360
527
 
361
528
  // Variant colours at full opacity for split (no rgba wrapper needed — no photo underneath)
362
- @each $name, $color in $variant-colours {
529
+ @each $name, $prop in $variant-colour-props {
363
530
  .mg-hero--split.mg-hero--#{$name} {
364
- background-color: $color;
531
+ background-color: rgb(var(#{$prop}));
365
532
 
366
- a.mg-button,
367
- a.mg-button:hover,
368
- a.mg-button:visited {
369
- color: #{$color};
533
+ a.mg-button:not(.mg-button-cta),
534
+ a.mg-button:not(.mg-button-cta):hover,
535
+ a.mg-button:not(.mg-button-cta):visited {
536
+ color: rgb(var(#{$prop}));
370
537
  }
371
538
  }
372
539
  }
@@ -21,18 +21,18 @@
21
21
 
22
22
  // Tone variants
23
23
  .mg-highlight-box--primary {
24
- background: var(--button-color-background, #{$mg-color-blue-900});
24
+ background: var(--button-color-background, #{rgb(var(--mg-color-blue-900))});
25
25
  }
26
26
 
27
27
  .mg-highlight-box--secondary {
28
- background: var(--tag-color-background-purple, #{$sendai-purple});
28
+ background: var(--tag-color-background-purple, var(--sendai-purple));
29
29
  }
30
30
 
31
31
  .mg-highlight-box.mg-highlight-box--primary,
32
32
  .mg-highlight-box.mg-highlight-box--secondary {
33
33
  border: none;
34
34
  box-shadow: inset 0 -8px 0 0 rgb(255 255 255 / 0.5);
35
- color: $mg-color-white;
35
+ color: rgb(var(--mg-color-white));
36
36
 
37
37
  // Force every descendant to inherit the variant's white color. The double
38
38
  // class selector and descendant `*` give us specificity (0,2,1) so we beat