@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
@@ -1,15 +1,15 @@
1
1
  .mg-mega-wrapper {
2
2
  position: relative;
3
- background: $mg-color-white;
4
- box-shadow: 0 2px 3px 0 rgb(51 51 51 / 0.31);
5
- z-index: $mg-z-index-nav;
3
+ background: rgb(var(--mg-color-white));
4
+ box-shadow: inset 0 -1px 0 rgb(var(--mg-color-neutral-600) / 0.24);
5
+ z-index: var(--mg-z-index-nav);
6
6
  }
7
7
 
8
8
  .mg-mega-topbar {
9
9
  width: 100%;
10
10
  display: flex;
11
11
  align-items: flex-start;
12
- z-index: $mg-z-index-nav;
12
+ z-index: var(--mg-z-index-nav);
13
13
  padding: 0;
14
14
  max-width: $mg-breakpoint-desktop;
15
15
  margin: 0 auto;
@@ -38,12 +38,12 @@
38
38
  position: relative;
39
39
  width: auto;
40
40
  margin-inline-start: auto;
41
- background: $mg-color-white;
41
+ background: rgb(var(--mg-color-white));
42
42
  flex-shrink: 0;
43
43
  box-shadow: -3px 0 6px -2px rgb(0 0 0 / 0.15);
44
44
 
45
45
  &:has(.mg-icon-angle-circled-left) {
46
- background: $mg-color-white;
46
+ background: rgb(var(--mg-color-white));
47
47
  box-shadow: -3px 0 6px -2px rgb(0 0 0 / 0.15);
48
48
  }
49
49
  }
@@ -65,7 +65,7 @@
65
65
  min-width: 0; // allow shrinking below intrinsic size
66
66
  display: flex;
67
67
  align-items: center;
68
- padding: $mg-spacing-100 $mg-spacing-150;
68
+ padding: var(--mg-spacing-100) var(--mg-spacing-150);
69
69
  }
70
70
 
71
71
  // Logo image
@@ -110,7 +110,7 @@
110
110
  }
111
111
 
112
112
  font-size: $mg-font-size-300;
113
- color: $mg-color-interactive;
113
+ color: rgb(var(--mg-color-interactive));
114
114
  font-weight: bold;
115
115
  list-style: none;
116
116
  padding: 0;
@@ -122,7 +122,7 @@
122
122
 
123
123
  > a,
124
124
  > button {
125
- padding: $mg-spacing-150;
125
+ padding: var(--mg-spacing-150);
126
126
  display: block;
127
127
  cursor: pointer;
128
128
  line-height: mg-rem(18); // normalization
@@ -135,16 +135,16 @@
135
135
 
136
136
  @media screen and (min-width: $mg-breakpoint-tablet) {
137
137
  &--active {
138
- background: rgba($mg-color-interactive, 0.2);
138
+ box-shadow: inset 0 -3px 0 rgb(var(--mg-color-interactive));
139
139
 
140
140
  a,
141
141
  .mg-mega-topbar__item-link {
142
- color: $mg-color-interactive;
142
+ color: rgb(var(--mg-color-interactive));
143
143
  text-decoration: none;
144
144
  }
145
145
 
146
146
  a.mg-button-primary {
147
- color: $mg-color-white;
147
+ color: rgb(var(--mg-color-white));
148
148
  text-decoration: none;
149
149
  }
150
150
 
@@ -157,7 +157,7 @@
157
157
 
158
158
  &__item-link {
159
159
  font-family: $mg-font-family-headings;
160
- color: $mg-color-interactive;
160
+ color: rgb(var(--mg-color-interactive));
161
161
  background: none;
162
162
  border: none;
163
163
  font-weight: bold;
@@ -189,10 +189,10 @@
189
189
  top: 1px;
190
190
  align-items: flex-start;
191
191
  justify-content: start;
192
- background-color: rgba($mg-color-mega-content-bg, 0.7);
193
- backdrop-filter: blur(10px);
194
- border-radius: $mg-radius-tab;
195
- box-shadow: -1px 5px 10px -1px rgb(0 0 0 / 0.25);
192
+ background-color: rgb(var(--mg-color-neutral-0));
193
+ box-shadow:
194
+ inset 0 1px 0 rgb(var(--mg-color-neutral-600) / 0.2),
195
+ 0 18px 45px rgb(var(--mg-color-neutral-900) / 0.14);
196
196
  inset-inline-start: 0;
197
197
  z-index: 1; // submenu floats above page content within mega-menu stacking context
198
198
  width: 100%;
@@ -221,7 +221,7 @@
221
221
  &__left {
222
222
  height: 100%;
223
223
  width: 100%; // mobile-first
224
- background-color: rgba($mg-color-mega-content-bg, 0.8);
224
+ background-color: rgb(var(--mg-color-neutral-0) / 0.8);
225
225
 
226
226
  @media screen and (min-width: $mg-breakpoint-tablet) {
227
227
  flex-basis: 33%;
@@ -231,12 +231,12 @@
231
231
  }
232
232
  }
233
233
  &__banner {
234
- padding: $mg-spacing-250;
234
+ padding: var(--mg-spacing-250);
235
235
  header {
236
236
  font-family: $mg-font-family-headings;
237
237
  font-size: $mg-font-size-500;
238
238
  font-weight: bold;
239
- padding-bottom: $mg-spacing-100;
239
+ padding-bottom: var(--mg-spacing-100);
240
240
  }
241
241
  p {
242
242
  a {
@@ -260,10 +260,8 @@
260
260
  }
261
261
 
262
262
  .mg-mega-content__left {
263
- box-shadow: inset 0 5px 5px -3px rgb(0 0 0 / 0.2);
264
-
265
263
  // RTL-friendly border
266
- border-inline-end: 2px solid rgba($mg-color-black, 0.2);
264
+ border-inline-end: 1px solid rgb(var(--mg-color-neutral-600) / 0.24);
267
265
 
268
266
  // Mobile-first: Hide section list on mobile
269
267
  .mg-mega-content__section-list {
@@ -276,12 +274,12 @@
276
274
 
277
275
  .mg-mega-content__section-list-link:hover,
278
276
  .mg-mega-content__section-list-link {
279
- color: $mg-color-interactive-active;
277
+ color: rgb(var(--mg-color-interactive-active));
280
278
  }
281
279
  }
282
280
 
283
281
  .mg-mega-content__section-list {
284
- padding-inline: $mg-spacing-200;
282
+ padding-inline: var(--mg-spacing-200);
285
283
  }
286
284
 
287
285
  .mg-mega-content__section-list-item {
@@ -296,8 +294,8 @@
296
294
  // RTL-friendly: Use logical properties for better improvements
297
295
  letter-spacing: 0.2px;
298
296
  position: relative;
299
- padding: $mg-spacing-150 $mg-spacing-250;
300
- margin-inline: -$mg-spacing-200; // extend hit area to both edges
297
+ padding: var(--mg-spacing-150) var(--mg-spacing-250);
298
+ margin-inline: calc(-1 * var(--mg-spacing-200)); // extend hit area to both edges
301
299
  font-weight: 600;
302
300
  transition:
303
301
  background-color 150ms ease,
@@ -306,7 +304,7 @@
306
304
 
307
305
  &:hover,
308
306
  &:focus-visible {
309
- background: rgba($mg-color-interactive, 0.15);
307
+ background: rgb(var(--mg-color-blue-900) / 0.15);
310
308
  text-decoration: underline;
311
309
  }
312
310
 
@@ -317,8 +315,8 @@
317
315
  position: absolute;
318
316
  font-size: mg-rem(30);
319
317
  inset-inline-end: auto;
320
- padding-inline-start: $mg-spacing-150;
321
- margin-inline-end: $mg-spacing-150;
318
+ padding-inline-start: var(--mg-spacing-150);
319
+ margin-inline-end: var(--mg-spacing-150);
322
320
  transition:
323
321
  transform 150ms ease,
324
322
  inset-inline-start 200ms cubic-bezier(0.4, 0, 0.2, 1),
@@ -328,11 +326,11 @@
328
326
  }
329
327
 
330
328
  &--active {
331
- padding: $mg-spacing-150 $mg-spacing-250;
332
- margin-inline-start: -$mg-spacing-200;
333
- border-inline-start: 4px solid $mg-color-interactive; // RTL-friendly vertical rule
329
+ padding: var(--mg-spacing-150) var(--mg-spacing-250);
330
+ margin-inline-start: calc(-1 * var(--mg-spacing-200));
331
+ border-inline-start: 4px solid rgb(var(--mg-color-interactive)); // RTL-friendly vertical rule
334
332
  text-decoration: underline;
335
- background: rgba($mg-color-interactive, 0.15);
333
+ background: rgb(var(--mg-color-blue-900) / 0.15);
336
334
 
337
335
  &::after {
338
336
  opacity: 1;
@@ -353,18 +351,18 @@
353
351
  @keyframes mg-mega-tab-pulse {
354
352
  0% {
355
353
  box-shadow:
356
- inset 4px 0 0 0 $mg-color-button,
357
- 0 0 0 0 rgba($mg-color-interactive, 0);
354
+ inset 4px 0 0 0 rgb(var(--mg-color-button)),
355
+ 0 0 0 0 rgb(var(--mg-color-blue-900) / 0);
358
356
  }
359
357
  60% {
360
358
  box-shadow:
361
- inset 4px 0 0 0 $mg-color-button,
362
- 0 0 0 8px rgba($mg-color-interactive, 0.12);
359
+ inset 4px 0 0 0 rgb(var(--mg-color-button)),
360
+ 0 0 0 8px rgb(var(--mg-color-blue-900) / 0.12);
363
361
  }
364
362
  100% {
365
363
  box-shadow:
366
- inset 4px 0 0 0 $mg-color-button,
367
- 0 0 0 0 rgba($mg-color-interactive, 0);
364
+ inset 4px 0 0 0 rgb(var(--mg-color-button)),
365
+ 0 0 0 0 rgb(var(--mg-color-blue-900) / 0);
368
366
  }
369
367
  }
370
368
 
@@ -390,12 +388,11 @@
390
388
 
391
389
  /* Stronger keyboard focus ring for accessibility */
392
390
  .mg-mega-content__section-list-link:focus-visible {
393
- outline: 2px solid $mg-color-white;
391
+ outline: 2px solid rgb(var(--mg-color-white));
394
392
  outline-offset: -2px;
395
393
  }
396
394
 
397
395
  .mg-mega-content__right {
398
- box-shadow: inset 0 5px 5px -3px rgb(0 0 0 / 0.2);
399
396
  flex: 1;
400
397
  display: flex;
401
398
 
@@ -449,7 +446,7 @@
449
446
 
450
447
  ul {
451
448
  flex: 1;
452
- padding: $mg-spacing-150;
449
+ padding: var(--mg-spacing-150);
453
450
  list-style: none;
454
451
 
455
452
  // Multicolumn layout only on desktop. This is primarily a Safari fix:
@@ -466,14 +463,14 @@
466
463
  // 300px was too wide — 3 columns never formed within the normal
467
464
  // constrained layout. See https://github.com/unisdr/undrr-mangrove/issues/970.
468
465
  column-width: 280px;
469
- column-gap: $mg-spacing-200;
466
+ column-gap: var(--mg-spacing-200);
470
467
  column-fill: balance;
471
468
  }
472
469
 
473
470
  // nested menus - RTL-friendly
474
471
  ul {
475
472
  padding-block: 0;
476
- padding-inline: $mg-spacing-150;
473
+ padding-inline: var(--mg-spacing-150);
477
474
  opacity: 0.8;
478
475
  break-inside: avoid;
479
476
  }
@@ -485,15 +482,15 @@
485
482
 
486
483
  a {
487
484
  display: block;
488
- padding: $mg-spacing-50;
485
+ padding: var(--mg-spacing-50);
489
486
  overflow: hidden;
490
487
  white-space: wrap;
491
488
  text-overflow: clip;
492
- color: $mg-color-black;
489
+ color: rgb(var(--mg-color-black));
493
490
  font-weight: bold;
494
491
 
495
492
  &:hover {
496
- color: $mg-color-black;
493
+ color: rgb(var(--mg-color-black));
497
494
  text-decoration: underline;
498
495
  }
499
496
  }
@@ -506,7 +503,7 @@
506
503
  0% {
507
504
  background: linear-gradient(
508
505
  to bottom,
509
- rgba($mg-color-interactive, 0.06) 0%,
506
+ rgb(var(--mg-color-blue-900) / 0.06) 0%,
510
507
  transparent 100%
511
508
  );
512
509
  }
@@ -528,7 +525,7 @@
528
525
  }
529
526
 
530
527
  .mg-icon-button {
531
- padding: $mg-spacing-100;
528
+ padding: var(--mg-spacing-100);
532
529
  background-color: transparent;
533
530
  border: none;
534
531
  cursor: pointer;
@@ -537,7 +534,7 @@
537
534
  justify-content: center;
538
535
 
539
536
  &:hover {
540
- background-color: $mg-color-interactive-active;
537
+ background-color: rgb(var(--mg-color-interactive-active));
541
538
  }
542
539
  }
543
540
 
@@ -554,17 +551,17 @@
554
551
 
555
552
  ol li {
556
553
  list-style: none;
557
- padding-block: $mg-spacing-50;
558
- padding-inline-start: $mg-spacing-300; // RTL-friendly
554
+ padding-block: var(--mg-spacing-50);
555
+ padding-inline-start: var(--mg-spacing-300); // RTL-friendly
559
556
  margin: 0;
560
557
 
561
558
  a {
562
- color: $mg-color-white;
559
+ color: rgb(var(--mg-color-white));
563
560
  text-decoration: none;
564
561
  }
565
562
 
566
563
  &:hover {
567
- background: $mg-color-interactive-active;
564
+ background: rgb(var(--mg-color-interactive-active));
568
565
  }
569
566
  }
570
567
  }
@@ -574,15 +571,15 @@
574
571
  display: flex;
575
572
  align-items: center;
576
573
  justify-content: space-between;
577
- color: $mg-color-white;
574
+ color: rgb(var(--mg-color-white));
578
575
  cursor: pointer;
579
- padding: $mg-spacing-100 $mg-spacing-250;
576
+ padding: var(--mg-spacing-100) var(--mg-spacing-250);
580
577
 
581
578
  // Mobile-first: Start with mobile styles
582
- background: $mg-color-interactive;
579
+ background: rgb(var(--mg-color-interactive));
583
580
  width: 100%;
584
581
  border: none;
585
- border-block-end: 1px solid $mg-color-white; // RTL-friendly
582
+ border-block-end: 1px solid rgb(var(--mg-color-white)); // RTL-friendly
586
583
 
587
584
  // Desktop: Remove mobile-specific styles
588
585
  @media screen and (min-width: $mg-breakpoint-tablet) {
@@ -591,8 +588,8 @@
591
588
  }
592
589
 
593
590
  &:hover {
594
- background: $mg-color-interactive-active;
595
- color: $mg-color-white;
591
+ background: rgb(var(--mg-color-interactive-active));
592
+ color: rgb(var(--mg-color-white));
596
593
  }
597
594
 
598
595
  &:focus-visible {
@@ -624,8 +621,8 @@
624
621
  .mg-mega-sidebar {
625
622
  position: absolute;
626
623
  overflow: auto;
627
- background-color: $mg-color-interactive-active;
628
- z-index: $mg-z-index-nav;
624
+ background-color: rgb(var(--mg-color-interactive-active));
625
+ z-index: var(--mg-z-index-nav);
629
626
 
630
627
  // Mobile-first: Full-width mobile sidebar
631
628
  width: 100%;
@@ -659,7 +656,7 @@
659
656
  }
660
657
 
661
658
  .mg-mega-sidebar__list {
662
- background: $mg-color-white;
659
+ background: rgb(var(--mg-color-white));
663
660
  display: flex;
664
661
  flex-direction: column;
665
662
  padding: 0;
@@ -673,12 +670,12 @@
673
670
  display: flex;
674
671
  align-items: center;
675
672
  justify-content: space-between;
676
- padding: $mg-spacing-150 $mg-spacing-300;
677
- color: $mg-color-white;
673
+ padding: var(--mg-spacing-150) var(--mg-spacing-300);
674
+ color: rgb(var(--mg-color-white));
678
675
  cursor: pointer;
679
676
 
680
677
  &:hover {
681
- background: $mg-color-interactive-active;
678
+ background: rgb(var(--mg-color-interactive-active));
682
679
  }
683
680
  }
684
681
 
@@ -687,16 +684,16 @@
687
684
  position: absolute;
688
685
  inset-inline-end: 0; // RTL-friendly
689
686
  background: rgb(0 0 0 / 0); // we let the menu items show through to advertise the contents
690
- color: $mg-color-interactive;
687
+ color: rgb(var(--mg-color-interactive));
691
688
  font-size: mg-rem(20);
692
689
  width: 100vw;
693
690
  height: 100%;
694
- padding: $mg-spacing-100;
691
+ padding: var(--mg-spacing-100);
695
692
  border: none;
696
693
  cursor: pointer;
697
694
  align-items: start;
698
695
  justify-content: start;
699
- z-index: $mg-z-index-nav-toggle;
696
+ z-index: var(--mg-z-index-nav-toggle);
700
697
  display: flex;
701
698
 
702
699
  // Hide mobile button on desktop
@@ -705,8 +702,8 @@
705
702
  }
706
703
 
707
704
  &:hover {
708
- // background: $mg-color-interactive-active;
709
- color: rgba($mg-color-interactive, 0.9);
705
+ // background: rgb(var(--mg-color-interactive-active));
706
+ color: rgb(var(--mg-color-blue-900) / 0.9);
710
707
  }
711
708
 
712
709
  .mg-mega-topbar {
@@ -715,7 +712,7 @@
715
712
 
716
713
  &:has(.mg-icon-angle-circled-left) {
717
714
  background: rgb(255 255 255 / 0.8);
718
- color: $mg-color-interactive-active;
715
+ color: rgb(var(--mg-color-interactive-active));
719
716
  box-shadow: 0 0 4px rgb(0 0 0 / 0.2);
720
717
  }
721
718
  }
@@ -727,10 +724,10 @@
727
724
  position: absolute;
728
725
  top: 0;
729
726
  inset-inline-start: 0; // RTL-friendly
730
- z-index: $mg-z-index-nav - 1;
727
+ z-index: calc(var(--mg-z-index-nav) - 1);
731
728
  display: block;
732
729
  overflow: auto;
733
- background-color: $mg-color-interactive;
730
+ background-color: rgb(var(--mg-color-interactive));
734
731
  max-height: 80vh;
735
732
  height: 80vh;
736
733
  transform: translateY(-100vh);
@@ -757,7 +754,7 @@
757
754
  border: none;
758
755
  padding: 0;
759
756
  cursor: pointer;
760
- z-index: $mg-z-index-nav - 1;
757
+ z-index: calc(var(--mg-z-index-nav) - 1);
761
758
 
762
759
  // Desktop: Hide
763
760
  @media screen and (min-width: $mg-breakpoint-tablet) {
@@ -9,12 +9,12 @@
9
9
  // Set this in your theme CSS to dock below a sticky MegaMenu or header.
10
10
  position: sticky;
11
11
  top: var(--mg-on-this-page-nav-offset, 0);
12
- z-index: $mg-z-index-sticky; // above MegaMenu, below PageHeader
12
+ z-index: var(--mg-z-index-sticky); // above MegaMenu, below PageHeader
13
13
  display: flex;
14
14
  align-items: center;
15
- background: $mg-color-neutral-0;
16
- box-shadow: 0 2px 3px 0 rgb(51 51 51 / 0.31);
17
- padding: 0 $mg-container-spacer;
15
+ background: rgb(var(--mg-color-neutral-0));
16
+ box-shadow: inset 0 -1px 0 rgb(var(--mg-color-neutral-600) / 0.24);
17
+ padding: 0 var(--mg-container-spacer);
18
18
 
19
19
  // Full-bleed: break out of any parent container to span the viewport.
20
20
  // Works even when nested inside an mg-container or Drupal content column.
@@ -27,11 +27,11 @@
27
27
  @media screen and (height <= 400px) {
28
28
  position: static;
29
29
  box-shadow: none;
30
- border-bottom: 1px solid $mg-color-neutral-50;
30
+ border-bottom: 1px solid rgb(var(--mg-color-neutral-50));
31
31
  }
32
32
 
33
33
  @media screen and (min-width: $mg-breakpoint-tablet) {
34
- padding: 0 $mg-spacing-200;
34
+ padding: 0 var(--mg-spacing-200);
35
35
  }
36
36
 
37
37
  &--hidden {
@@ -51,9 +51,9 @@
51
51
  // Fade gradient on the trailing edge signals more content is scrollable.
52
52
  // Uses mask-image so the fade is transparent (works on any background).
53
53
  // padding-inline-end gives the fade space so text isn't masked mid-character.
54
- padding-inline-end: $mg-spacing-300;
55
- -webkit-mask-image: linear-gradient(to right, #000 calc(100% - #{$mg-spacing-500}), transparent);
56
- mask-image: linear-gradient(to right, #000 calc(100% - #{$mg-spacing-500}), transparent);
54
+ padding-inline-end: var(--mg-spacing-300);
55
+ -webkit-mask-image: linear-gradient(to right, #000 calc(100% - var(--mg-spacing-500)), transparent);
56
+ mask-image: linear-gradient(to right, #000 calc(100% - var(--mg-spacing-500)), transparent);
57
57
 
58
58
  // Hide scrollbar but keep functional
59
59
  scrollbar-width: none;
@@ -65,9 +65,9 @@
65
65
  // When content is scrolled left, also fade the leading edge so users know
66
66
  // items are hidden behind the scroll button on that side.
67
67
  .mg-on-this-page-nav--has-left-overflow & {
68
- padding-inline-start: $mg-spacing-300;
69
- -webkit-mask-image: linear-gradient(to right, transparent, #000 #{$mg-spacing-500}, #000 calc(100% - #{$mg-spacing-500}), transparent);
70
- mask-image: linear-gradient(to right, transparent, #000 #{$mg-spacing-500}, #000 calc(100% - #{$mg-spacing-500}), transparent);
68
+ padding-inline-start: var(--mg-spacing-300);
69
+ -webkit-mask-image: linear-gradient(to right, transparent, #000 var(--mg-spacing-500), #000 calc(100% - var(--mg-spacing-500)), transparent);
70
+ mask-image: linear-gradient(to right, transparent, #000 var(--mg-spacing-500), #000 calc(100% - var(--mg-spacing-500)), transparent);
71
71
  }
72
72
  }
73
73
 
@@ -78,67 +78,67 @@
78
78
 
79
79
  &__link {
80
80
  display: block;
81
- padding: $mg-spacing-150 $mg-spacing-150;
81
+ padding: var(--mg-spacing-150) var(--mg-spacing-150);
82
82
  font-family: $mg-font-family-headings;
83
83
  font-size: $mg-font-size-300;
84
84
  font-weight: 600;
85
- color: $mg-color-neutral-600;
85
+ color: rgb(var(--mg-color-neutral-600));
86
86
  text-decoration: none;
87
87
  white-space: nowrap;
88
88
  border-bottom: 3px solid transparent;
89
- transition: color 0.2s ease, border-color 0.2s ease;
89
+ transition:
90
+ border-color var(--mg-motion-duration-fast) var(--mg-motion-easing-standard),
91
+ color var(--mg-motion-duration-fast) var(--mg-motion-easing-standard);
90
92
 
91
93
  @media (prefers-reduced-motion: reduce) {
92
94
  transition: none;
93
95
  }
94
96
 
95
97
  &:hover {
96
- color: $mg-color-interactive-active;
97
- border-bottom-color: $mg-color-interactive-active;
98
+ color: rgb(var(--mg-color-interactive-active));
99
+ border-bottom-color: rgb(var(--mg-color-interactive-active));
98
100
  text-decoration: none;
99
101
  }
100
102
 
101
103
  &:focus-visible {
102
- outline: 2px solid $mg-color-interactive;
103
- outline-offset: -2px;
104
+ @include mg-focus-ring;
104
105
  }
105
106
 
106
107
  // Active state and active+hover — active wins over hover
107
108
  &--active,
108
109
  &--active:hover {
109
- color: $mg-color-interactive;
110
- border-bottom-color: $mg-color-interactive;
110
+ color: rgb(var(--mg-color-interactive));
111
+ border-bottom-color: rgb(var(--mg-color-interactive));
111
112
  }
112
113
  }
113
114
 
114
115
  &__cta {
115
116
  flex-shrink: 0;
116
117
  margin-inline-start: auto;
117
- padding: $mg-spacing-150 $mg-spacing-150;
118
+ padding: var(--mg-spacing-150) var(--mg-spacing-150);
118
119
  font-family: $mg-font-family-headings;
119
120
  font-size: $mg-font-size-300;
120
121
  font-weight: 600;
121
- color: $mg-color-neutral-0;
122
- background: $mg-color-interactive;
122
+ color: rgb(var(--mg-color-neutral-0));
123
+ background: rgb(var(--mg-color-interactive));
123
124
  text-decoration: none;
124
125
  white-space: nowrap;
125
126
  border: 0;
126
127
  cursor: pointer;
127
- transition: background-color 0.2s ease;
128
+ transition: background-color var(--mg-motion-duration-fast) var(--mg-motion-easing-standard);
128
129
 
129
130
  @media (prefers-reduced-motion: reduce) {
130
131
  transition: none;
131
132
  }
132
133
 
133
134
  &:hover {
134
- background: $mg-color-interactive-active;
135
+ background: rgb(var(--mg-color-interactive-active));
135
136
  text-decoration: none;
136
- color: $mg-color-neutral-0;
137
+ color: rgb(var(--mg-color-neutral-0));
137
138
  }
138
139
 
139
140
  &:focus-visible {
140
- outline: 2px solid $mg-color-interactive;
141
- outline-offset: 2px;
141
+ @include mg-focus-ring;
142
142
  }
143
143
  }
144
144
 
@@ -150,13 +150,13 @@
150
150
  display: flex;
151
151
  align-items: center;
152
152
  justify-content: center;
153
- min-width: $mg-spacing-250; // WCAG 2.5.8 minimum touch target (24px)
154
- padding: 0 $mg-spacing-150;
153
+ min-width: var(--mg-spacing-250); // WCAG 2.5.8 minimum touch target (24px)
154
+ padding: 0 var(--mg-spacing-150);
155
155
  border: 0;
156
- background: $mg-color-neutral-0;
156
+ background: rgb(var(--mg-color-neutral-0));
157
157
  cursor: pointer;
158
- color: $mg-color-neutral-600;
159
- transition: color 0.2s ease;
158
+ color: rgb(var(--mg-color-neutral-600));
159
+ transition: color var(--mg-motion-duration-fast) var(--mg-motion-easing-standard);
160
160
 
161
161
  // display:flex above would otherwise override the UA [hidden]{display:none} rule
162
162
  // since author styles always beat the user-agent stylesheet.
@@ -169,12 +169,11 @@
169
169
  }
170
170
 
171
171
  &:hover {
172
- color: $mg-color-interactive-active;
172
+ color: rgb(var(--mg-color-interactive-active));
173
173
  }
174
174
 
175
175
  &:focus-visible {
176
- outline: 2px solid $mg-color-interactive;
177
- outline-offset: -2px;
176
+ @include mg-focus-ring;
178
177
  }
179
178
 
180
179
  svg {
@@ -12,7 +12,7 @@
12
12
  url(//www.undrr.org/themes/custom/undrr_common/images/toolbar-background.png)
13
13
  no-repeat center center;
14
14
  box-shadow: 0 2px 4px 0 rgb(0 0 0 / 0.3);
15
- z-index: $mg-z-index-header;
15
+ z-index: var(--mg-z-index-header);
16
16
 
17
17
  @media (width >= $mg-breakpoint-tablet) {
18
18
  .mg-page-header__container {
@@ -110,19 +110,19 @@
110
110
  display: inline-block;
111
111
 
112
112
  &:nth-child(1) {
113
- background: $sendai-red-900;
113
+ background: var(--sendai-red-900);
114
114
  }
115
115
 
116
116
  &:nth-child(2) {
117
- background: $sendai-purple-900;
117
+ background: var(--sendai-purple-900);
118
118
  }
119
119
 
120
120
  &:nth-child(3) {
121
- background: $sendai-orange-900;
121
+ background: var(--sendai-orange-900);
122
122
  }
123
123
 
124
124
  &:nth-child(4) {
125
- background: $sendai-turquoise-900;
125
+ background: var(--sendai-turquoise-900);
126
126
  }
127
127
  }
128
128
  }
@@ -132,8 +132,8 @@
132
132
  display: inline-block;
133
133
  font-size: $mg-font-tag;
134
134
  font-weight: bold;
135
- margin-right: $mg-spacing-25;
136
- padding: $mg-spacing-25 0;
135
+ margin-right: var(--mg-spacing-25);
136
+ padding: var(--mg-spacing-25) 0;
137
137
 
138
138
  @media (max-width: $mg-breakpoint-tablet) {
139
139
  display: none;