@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,17 +1,17 @@
1
1
  /* image caption start */
2
2
  .mg-image-caption {
3
- border-bottom: 2px solid $mg-color-black;
3
+ border-bottom: 2px solid rgb(var(--mg-color-black));
4
4
 
5
5
  @include devicebreak(medium) {
6
6
  display: flex;
7
7
  justify-content: space-between;
8
- padding-bottom: $mg-spacing-150;
8
+ padding-bottom: var(--mg-spacing-150);
9
9
  }
10
10
 
11
11
  p {
12
- color: $mg-color-neutral-600;
12
+ color: rgb(var(--mg-color-neutral-600));
13
13
  font-size: $mg-font-size-200;
14
- margin-bottom: $mg-spacing-50;
14
+ margin-bottom: var(--mg-spacing-50);
15
15
 
16
16
  @include devicebreak(medium) {
17
17
  border: 0;
@@ -20,20 +20,20 @@
20
20
  }
21
21
 
22
22
  + .mg-credits {
23
- border-top: 1px solid $mg-color-neutral-500;
23
+ border-top: 1px solid rgb(var(--mg-color-neutral-500));
24
24
  display: flex;
25
25
  flex-shrink: 0;
26
26
  flex-wrap: wrap;
27
- margin-bottom: $mg-spacing-50;
28
- padding-top: $mg-spacing-50;
27
+ margin-bottom: var(--mg-spacing-50);
28
+ padding-top: var(--mg-spacing-50);
29
29
 
30
30
  @include devicebreak(medium) {
31
- border-left: 1px solid $mg-color-neutral-500;
31
+ border-left: 1px solid rgb(var(--mg-color-neutral-500));
32
32
  border-top: 0;
33
33
  display: block;
34
34
  margin-bottom: 0;
35
- margin-left: $mg-spacing-150;
36
- padding-left: $mg-spacing-150;
35
+ margin-left: var(--mg-spacing-150);
36
+ padding-left: var(--mg-spacing-150);
37
37
  padding-top: 0;
38
38
  }
39
39
  }
@@ -41,7 +41,7 @@
41
41
 
42
42
  .mg-credits {
43
43
  display: flex;
44
- margin-bottom: $mg-spacing-50;
44
+ margin-bottom: var(--mg-spacing-50);
45
45
 
46
46
  @include devicebreak(medium) {
47
47
  border-top: 0;
@@ -51,7 +51,7 @@
51
51
  }
52
52
 
53
53
  strong {
54
- margin-left: $mg-spacing-25;
54
+ margin-left: var(--mg-spacing-25);
55
55
 
56
56
  @include devicebreak(medium) {
57
57
  margin-left: 0;
@@ -69,11 +69,11 @@
69
69
 
70
70
  + .mg-credits {
71
71
  @include devicebreak(medium) {
72
- border-right: 1px solid $mg-color-neutral-500;
72
+ border-right: 1px solid rgb(var(--mg-color-neutral-500));
73
73
  border-top: 0;
74
74
  display: block;
75
- margin-right: $mg-spacing-150;
76
- padding-right: $mg-spacing-150;
75
+ margin-right: var(--mg-spacing-150);
76
+ padding-right: var(--mg-spacing-150);
77
77
  padding-top: 0;
78
78
  }
79
79
  }
@@ -87,7 +87,7 @@
87
87
  }
88
88
 
89
89
  strong {
90
- margin-right: $mg-spacing-25;
90
+ margin-right: var(--mg-spacing-25);
91
91
 
92
92
  @include devicebreak(medium) {
93
93
  margin-right: 0;
@@ -1,7 +1,7 @@
1
1
  /* header section start */
2
2
  .mg-section-header {
3
3
  h2 {
4
- margin-bottom: $mg-spacing-100;
4
+ margin-bottom: var(--mg-spacing-100);
5
5
  }
6
6
  }
7
7
 
@@ -15,7 +15,7 @@
15
15
  position: absolute;
16
16
  top: 0;
17
17
  width: 100vw;
18
- z-index: $mg-z-index-behind; // pseudo-element background sits behind sibling content
18
+ z-index: var(--mg-z-index-behind); // pseudo-element background sits behind sibling content
19
19
  }
20
20
 
21
21
  [dir="rtl"] .mg-container-full-width::before {
@@ -14,15 +14,15 @@
14
14
  .mg-loader {
15
15
  @include animation(loader-animation 2s linear infinite);
16
16
 
17
- border: 8px solid $mg-color-blue-600;
17
+ border: 8px solid rgb(var(--mg-color-blue-600));
18
18
  border-radius: 50%;
19
- border-top: 8px solid $mg-color-neutral-300;
19
+ border-top: 8px solid rgb(var(--mg-color-neutral-300));
20
20
  height: 40px;
21
21
  width: 40px;
22
22
 
23
23
  @include devicebreak(medium) {
24
- border: 14px solid $mg-color-blue-600;
25
- border-top: 14px solid $mg-color-neutral-300;
24
+ border: 14px solid rgb(var(--mg-color-blue-600));
25
+ border-top: 14px solid rgb(var(--mg-color-neutral-300));
26
26
  height: 96px;
27
27
  width: 96px;
28
28
  }
@@ -35,7 +35,7 @@
35
35
  // Components
36
36
  @import "../../Components/Boilerplate/boilerplate";
37
37
  @import "../../Components/Forms/form-base";
38
- @import "../../Components/Forms/form-legacy";
38
+ @import "../../Components/Forms/FormAction/form-action";
39
39
  @import "../../Components/Forms/FormGroup/form-group";
40
40
  @import "../../Components/Forms/TextInput/text-input";
41
41
  @import "../../Components/Forms/Textarea/textarea";
@@ -45,7 +45,6 @@
45
45
  @import "../../Components/Breadcrumbs/breadcrumbs";
46
46
 
47
47
  // Deprecated (February 2026) — removal planned by end of 2026. Use Pager instead.
48
- // @import "../../Components/Pagination/pagination";
49
48
  @import "../../Components/Pager/pager";
50
49
  @import "../../Components/Gallery/gallery";
51
50
  @import "../../Components/HighlightBox/highlight-box";
@@ -58,10 +57,12 @@
58
57
  @import "../../Components/Cards/Card/card";
59
58
  @import "../../Components/Cards/StatsCard/stats-card";
60
59
  @import "../../Components/Snackbar/snackbar";
60
+ @import "../../Components/CookieConsentBanner/cookie-consent-banner";
61
61
  @import "../../Components/Hero/hero";
62
62
  @import "../../Components/TextCta/text-cta";
63
63
  @import "../../Components/ScrollContainer/scroll-container";
64
64
  @import "../../Components/Tab/tab";
65
+ @import "../../Components/UserFeedback/user-feedback";
65
66
 
66
67
  // CSS+vanilla-JS component — Drupal integration via Gutenberg block, not a React export.
67
68
  @import "../../Components/TableOfContents/table-of-contents";
@@ -7,18 +7,15 @@
7
7
  }
8
8
 
9
9
  html {
10
- // Only override the browser default when using the legacy 10px root.
11
- // When $mg-html-font-size is 16, skip the override entirely so the
12
- // browser default (or user-configured) root font-size is respected.
13
- @if $mg-html-font-size != 16 {
14
- font-size: $mg-html-font-size * 1px;
15
- }
16
-
10
+ // No root font-size override: Mangrove uses the browser-standard 16px root
11
+ // (or the user's configured default). The legacy 10px root was removed in 2.0.
17
12
  -webkit-tap-highlight-color: transparent;
13
+ -webkit-font-smoothing: antialiased;
14
+ -moz-osx-font-smoothing: grayscale;
18
15
  }
19
16
 
20
17
  body {
21
- color: $mg-color-text;
18
+ color: rgb(var(--mg-color-text));
22
19
  font-family: $mg-font-family;
23
20
  font-size: $mg-font-size-300;
24
21
  line-height: $mg-font-line-height-700;
@@ -35,8 +32,9 @@ h4,
35
32
  h5,
36
33
  h6,
37
34
  caption {
38
- margin: $mg-spacing-100 $mg-spacing-0;
39
- padding: $mg-spacing-0;
35
+ margin: var(--mg-spacing-100) var(--mg-spacing-0);
36
+ padding: var(--mg-spacing-0);
37
+ text-wrap: balance;
40
38
  }
41
39
 
42
40
  // h1-h6 inherit Roboto from body. Roboto Condensed is reserved for compact UI
@@ -49,7 +47,6 @@ h1 {
49
47
  font-size: $mg-font-size-600;
50
48
  letter-spacing: 0.02em;
51
49
  line-height: 1.08;
52
- text-wrap: balance;
53
50
  font-weight: 700;
54
51
  }
55
52
 
@@ -85,38 +82,38 @@ p {
85
82
 
86
83
  ul,
87
84
  ol {
88
- margin: 0 0 $mg-spacing-100;
89
- padding-left: $mg-spacing-200;
85
+ margin: 0 0 var(--mg-spacing-100);
86
+ padding-left: var(--mg-spacing-200);
90
87
  list-style-position: outside;
91
88
 
92
89
  li {
93
- margin-bottom: $mg-spacing-0;
94
- padding-left: $mg-spacing-0;
90
+ margin-bottom: var(--mg-spacing-0);
91
+ padding-left: var(--mg-spacing-0);
95
92
  }
96
93
  }
97
94
 
98
95
  dl {
99
96
  line-height: 1.37;
100
- margin: $mg-spacing-0;
97
+ margin: var(--mg-spacing-0);
101
98
  }
102
99
 
103
100
  dt {
104
101
  font-weight: 600;
105
- margin-bottom: $mg-spacing-25;
102
+ margin-bottom: var(--mg-spacing-25);
106
103
  }
107
104
 
108
105
  dd {
109
- margin-bottom: $mg-spacing-50;
110
- margin-inline-start: $mg-spacing-200;
106
+ margin-bottom: var(--mg-spacing-50);
107
+ margin-inline-start: var(--mg-spacing-200);
111
108
 
112
109
  @include devicebreak(medium) {
113
- margin-bottom: $mg-spacing-100;
114
- margin-inline-start: $mg-spacing-300;
110
+ margin-bottom: var(--mg-spacing-100);
111
+ margin-inline-start: var(--mg-spacing-300);
115
112
  }
116
113
  }
117
114
 
118
115
  dd + dt {
119
- margin-block-start: $mg-spacing-100;
116
+ margin-block-start: var(--mg-spacing-100);
120
117
  }
121
118
 
122
119
  header {
@@ -125,8 +122,8 @@ header {
125
122
 
126
123
  hr {
127
124
  border: 0;
128
- border-block-start: 2px solid $mg-color-neutral-400; // #808080 — 3.95:1 on white (non-text contrast)
129
- margin-block: $mg-spacing-200;
125
+ border-block-start: 2px solid rgb(var(--mg-color-neutral-400)); // #808080 — 3.95:1 on white (non-text contrast)
126
+ margin-block: var(--mg-spacing-200);
130
127
  }
131
128
 
132
129
  img {
@@ -135,13 +132,34 @@ img {
135
132
  }
136
133
 
137
134
  a {
138
- color: $mg-color-interactive;
135
+ color: rgb(var(--mg-color-interactive));
139
136
  text-decoration: none;
140
137
 
138
+ @media (prefers-reduced-motion: no-preference) {
139
+ transition: color 150ms ease;
140
+ }
141
+
141
142
  &:hover {
142
- color: $mg-color-interactive-active;
143
+ color: rgb(var(--mg-color-interactive-active));
143
144
  text-decoration: underline;
144
145
  }
146
+
147
+ &:focus-visible {
148
+ @include mg-focus-ring;
149
+
150
+ text-decoration: underline;
151
+ }
152
+ }
153
+
154
+ @media (prefers-reduced-motion: reduce) {
155
+ *,
156
+ *::before,
157
+ *::after {
158
+ animation-duration: 0.01ms !important;
159
+ animation-iteration-count: 1 !important;
160
+ scroll-behavior: auto !important;
161
+ transition-duration: 0.01ms !important;
162
+ }
145
163
  }
146
164
 
147
165
  [dir="rtl"] {
@@ -65,6 +65,39 @@
65
65
  background: linear-gradient($direction, $list);
66
66
  }
67
67
 
68
+ // Focus ring — token-driven, theme-adaptive visible focus for keyboard users.
69
+ // Emits a consistent WCAG 2.2 AA focus indicator wherever an interactive
70
+ // element needs one. The ring colour follows `--mg-color-interactive`, so it
71
+ // adapts per theme automatically. On links, pair with an explicit
72
+ // `text-decoration: underline` so the affordance is not colour-only.
73
+ @mixin mg-focus-ring {
74
+ border-radius: var(--mg-focus-ring-radius);
75
+ outline: var(--mg-focus-ring-width) solid rgb(var(--mg-color-focus-ring));
76
+ outline-offset: var(--mg-focus-ring-offset);
77
+ }
78
+
79
+ // Card image hover zoom — a subtle, modern "state affordance". Include inside
80
+ // a card variant whose visual has `overflow: hidden` so the scale stays framed.
81
+ // Motion is gated behind prefers-reduced-motion so it never animates for users
82
+ // who opt out.
83
+ @mixin mg-card-image-zoom {
84
+ .mg-card__image {
85
+ @media (prefers-reduced-motion: no-preference) {
86
+ transition:
87
+ opacity var(--mg-motion-duration-medium) var(--mg-motion-easing-standard),
88
+ transform var(--mg-motion-duration-medium) var(--mg-motion-easing-standard);
89
+ }
90
+ }
91
+
92
+ &:hover .mg-card__image {
93
+ opacity: 0.78;
94
+
95
+ @media (prefers-reduced-motion: no-preference) {
96
+ transform: scale(1.04);
97
+ }
98
+ }
99
+ }
100
+
68
101
  /* mixing end */
69
102
 
70
103
  /* placeholder start */
@@ -94,7 +127,7 @@
94
127
  }
95
128
 
96
129
  %border-bottom {
97
- border-bottom: 1px solid $mg-color-neutral-400;
130
+ border-bottom: 1px solid rgb(var(--mg-color-neutral-400));
98
131
  }
99
132
 
100
133
  %img-cover {
@@ -0,0 +1,68 @@
1
+ // Delta Resilience theme — runtime CSS custom property overrides.
2
+ // Applied when .mg-theme-delta is present on <body> or a wrapping element.
3
+ $_delta-color-primary--raw: 19 46 72;
4
+ $_delta-color-primary-800--raw: 12 30 48;
5
+ $_delta-color-dark--raw: 24 24 35;
6
+ $_delta-color-card-bg--raw: 250 250 250;
7
+
8
+ .mg-theme-delta {
9
+ // Runtime marker: lets JS/tooling detect that this brand theme is active
10
+ // (guards the sub-brand body-class trap). See docs/RELEASE-2.0.md.
11
+ --mg-theme-loaded: delta;
12
+ --mg-color-interactive: #{$_delta-color-primary--raw};
13
+ --mg-color-interactive-active: #{$_delta-color-primary--raw};
14
+ --mg-color-tag: var(--mg-color-interactive);
15
+ --mg-color-tag--hover: var(--mg-color-interactive-active);
16
+ --mg-radius-tag: var(--mg-spacing-50);
17
+ --mg-color-button: #{$_delta-color-primary--raw};
18
+ --mg-color-button--hover: #{$_delta-color-primary-800--raw};
19
+ --mg-color-button-background: transparent;
20
+ --mg-color-button-background--hover: rgb(#{$_delta-color-primary--raw} / 0.06);
21
+ --mg-color-button-secondary-background: transparent;
22
+ --mg-color-button-secondary-background--hover: rgb(#{$_delta-color-primary--raw} / 0.06);
23
+ --mg-color-button-outline-primary: #{$_delta-color-primary--raw};
24
+ --mg-color-button-outline-primary--hover: #{$_delta-color-primary-800--raw};
25
+ --mg-color-button-outline-secondary: #{$_delta-color-primary--raw};
26
+ --mg-color-button-outline-secondary--hover: #{$_delta-color-primary-800--raw};
27
+ --mg-color-text-button: #{$_delta-color-primary--raw};
28
+ --mg-border-color-button: #{$_delta-color-primary--raw};
29
+ --mg-radius-button: var(--mg-spacing-50);
30
+ --mg-border-width-button: 1px;
31
+ --mg-padding-button: var(--mg-spacing-100) var(--mg-spacing-200);
32
+ --mg-font-size-button: #{$mg-font-size-250};
33
+ --mg-card-background: rgb(#{$_delta-color-card-bg--raw});
34
+ --mg-card-padding: var(--mg-spacing-150);
35
+ --mg-card-border-radius: var(--mg-spacing-50);
36
+ --mg-card-icon-badge-radius: 15%;
37
+ --mg-color-form-check: var(--mg-color-interactive);
38
+ --mg-color-form-check--hover: var(--mg-color-interactive-active);
39
+ --mg-color-form-check--checked: var(--mg-color-interactive);
40
+ --mg-color-form-focus: var(--mg-color-interactive);
41
+ --mg-radius-form-input: var(--mg-spacing-50);
42
+ --mg-color-mega-content-bg: var(--mg-color-white);
43
+ --mg-color-hero: #{$_delta-color-primary--raw};
44
+ --mg-opacity-hero: 1;
45
+ --mg-hero-overlay-max-width: var(--mg-width-600);
46
+ --mg-hero-overlay-padding: var(--mg-spacing-400);
47
+ --mg-color-hero-title: oklch(68.5% 0.169 237.323);
48
+ --mg-color-hero--tertiary: rgb(#{$_delta-color-dark--raw});
49
+ --mg-color-hero-button-secondary-background: rgb(#{$_delta-color-primary--raw});
50
+ --mg-color-hero-button-secondary-color: var(--mg-color-white);
51
+ --mg-border-color-hero-button-secondary: var(--mg-color-white);
52
+ --mg-spacing-hero-overlay: #{mg-rem(20)} 0;
53
+ --mg-color-tabbar-background: none;
54
+ --mg-color-tab-background: rgb(#{$_delta-color-primary--raw});
55
+ --mg-color-tab-background--inactive: var(--mg-color-white);
56
+ --mg-color-tab-border: var(--mg-color-blue-200);
57
+ --mg-color-tab-border--hover: rgb(#{$_delta-color-primary-800--raw});
58
+ --mg-color-tab-border--active: var(--mg-color-blue-200);
59
+ --mg-color-tab-background--hover: rgb(#{$_delta-color-primary--raw} / 0.7);
60
+ --mg-radius-tab: var(--mg-spacing-50) var(--mg-spacing-50) 0 0;
61
+ --mg-padding-tab: var(--mg-spacing-150) var(--mg-spacing-200);
62
+ --mg-color-text-tab: var(--mg-color-neutral-700);
63
+ --mg-color-text-tab--hover: var(--mg-color-white);
64
+ --mg-color-text-tab-active: var(--mg-color-white);
65
+ --mg-padding-tab-section: var(--mg-spacing-300);
66
+ --mg-radius-tab-section: var(--mg-spacing-50);
67
+ --mg-box-shadow-tab-section: none;
68
+ }
@@ -0,0 +1,39 @@
1
+ // IRP theme — runtime CSS custom property overrides.
2
+ // Applied when .mg-theme-irp is present on <body> or a wrapping element.
3
+ $_irp-color-primary--raw: 15 120 191;
4
+ $_irp-color-green--raw: 140 198 63;
5
+
6
+ .mg-theme-irp {
7
+ // Runtime marker: lets JS/tooling detect that this brand theme is active
8
+ // (guards the sub-brand body-class trap). See docs/RELEASE-2.0.md.
9
+ --mg-theme-loaded: irp;
10
+ --mg-color-interactive: #{$_irp-color-primary--raw};
11
+ --mg-color-interactive-active: #{$_irp-color-primary--raw};
12
+ --mg-color-tag: var(--mg-color-interactive);
13
+ --mg-color-tag--hover: var(--mg-color-interactive-active);
14
+ --mg-radius-tag: var(--mg-spacing-50);
15
+ --mg-color-button-background: #{$_irp-color-primary--raw};
16
+ --mg-color-button-background--hover: var(--mg-color-orange-900);
17
+ --mg-color-button-outline-primary: #{$_irp-color-primary--raw};
18
+ --mg-color-button-outline-primary--hover: var(--mg-color-orange-900);
19
+ --mg-color-button-outline-secondary: var(--mg-color-button-secondary-background);
20
+ --mg-color-button-outline-secondary--hover: var(--mg-color-button-secondary-background--hover);
21
+ --mg-radius-button: var(--mg-spacing-50);
22
+ --mg-color-form-check: var(--mg-color-interactive);
23
+ --mg-color-form-check--hover: var(--mg-color-interactive-active);
24
+ --mg-color-form-check--checked: var(--mg-color-interactive);
25
+ --mg-color-form-focus: var(--mg-color-interactive);
26
+ --mg-radius-form-input: var(--mg-spacing-50);
27
+ --mg-color-hero: var(--mg-color-interactive);
28
+ --mg-spacing-hero-overlay: #{mg-rem(20)} 0;
29
+ --mg-color-tabbar-background: rgb(#{$_irp-color-green--raw} / 0.1);
30
+ --mg-color-text-tab: var(--mg-color-neutral-500);
31
+ --mg-color-text-tab-active: var(--mg-color-neutral-700);
32
+ --mg-color-tab-background: rgb(#{$_irp-color-green--raw} / 0.3);
33
+ --mg-color-tab-background--inactive: var(--mg-color-tabbar-background);
34
+ --mg-color-tab-background--hover: rgb(#{$_irp-color-green--raw});
35
+ --mg-radius-tab: var(--mg-spacing-0) var(--mg-spacing-0) 0 0;
36
+ --mg-color-tab-border: var(--mg-color-neutral-300);
37
+ --mg-color-tab-border--hover: rgb(#{$_irp-color-green--raw} / 0.1);
38
+ --mg-color-tab-border--active: rgb(#{$_irp-color-green--raw} / 0.1);
39
+ }
@@ -0,0 +1,56 @@
1
+ // MCR theme — runtime CSS custom property overrides.
2
+ // Applied when .mg-theme-mcr is present on <body> or a wrapping element.
3
+ // As v2.0 migration progresses, sections move from _variables-mcr.scss into here.
4
+ // When _variables-mcr.scss contains only comments, delete it.
5
+
6
+ // MCR brand palette (local to this file — not emitted as global :root properties)
7
+ $_mcr-purple--raw: 89 26 97;
8
+ $_mcr-purple-800--raw: 110 38 119;
9
+ $_mcr-purple-200--raw: 222 208 215;
10
+
11
+ .mg-theme-mcr {
12
+ // Runtime marker: lets JS/tooling detect that this brand theme is active
13
+ // (guards the sub-brand body-class trap). See docs/RELEASE-2.0.md.
14
+ --mg-theme-loaded: mcr;
15
+
16
+ // Tab overrides (migrated from _variables-mcr.scss)
17
+ --mg-color-tabbar-background: none;
18
+ --mg-color-tab-background: rgb(#{$_mcr-purple-800--raw});
19
+ --mg-color-tab-background--inactive: rgb(var(--mg-color-neutral-0));
20
+ --mg-color-tab-border: rgb(#{$_mcr-purple-200--raw});
21
+ --mg-color-tab-border--hover: rgb(#{$_mcr-purple-800--raw});
22
+ --mg-color-tab-border--active: rgb(#{$_mcr-purple-200--raw});
23
+ --mg-color-tab-background--hover: rgb(#{$_mcr-purple-800--raw} / 0.6);
24
+ --mg-radius-tab: var(--mg-spacing-150) var(--mg-spacing-150) 0 0;
25
+ --mg-padding-tab: var(--mg-spacing-200) var(--mg-spacing-300);
26
+ --mg-color-text-tab: rgb(var(--mg-color-neutral-700));
27
+ --mg-color-text-tab--hover: rgb(var(--mg-color-neutral-0));
28
+ --mg-color-text-tab-active: rgb(var(--mg-color-neutral-0));
29
+ --mg-padding-tab-section: var(--mg-spacing-500);
30
+ --mg-radius-tab-section: var(--mg-spacing-200);
31
+ --mg-box-shadow-tab-section: rgb(var(--mg-color-neutral-900) / 0.24) 0 6px 5px 0;
32
+
33
+ // Interactive + component overrides (moved from _variables-mcr.scss)
34
+ --mg-color-interactive: #{$_mcr-purple--raw};
35
+ --mg-color-interactive-active: #{$_mcr-purple--raw};
36
+ --mg-color-tag: var(--mg-color-interactive);
37
+ --mg-color-tag--hover: var(--mg-color-interactive-active);
38
+ --mg-radius-tag: var(--mg-spacing-100);
39
+ --mg-color-button-background: #{$_mcr-purple--raw};
40
+ --mg-color-button-background--hover: #{$_mcr-purple-800--raw};
41
+ --mg-color-button-outline-primary: #{$_mcr-purple--raw};
42
+ --mg-color-button-outline-primary--hover: #{$_mcr-purple-800--raw};
43
+ --mg-color-button-outline-secondary: var(--mg-color-button-secondary-background);
44
+ --mg-color-button-outline-secondary--hover: var(--mg-color-button-secondary-background--hover);
45
+ --mg-radius-button: var(--mg-spacing-300);
46
+ --mg-border-width-button: 2px;
47
+ --mg-padding-button: var(--mg-spacing-150) var(--mg-spacing-300);
48
+ --mg-font-size-button: #{$mg-font-size-400};
49
+ --mg-color-form-check: var(--mg-color-interactive);
50
+ --mg-color-form-check--hover: var(--mg-color-interactive-active);
51
+ --mg-color-form-check--checked: var(--mg-color-interactive);
52
+ --mg-color-form-focus: var(--mg-color-interactive);
53
+ --mg-radius-form-input: var(--mg-spacing-100);
54
+ --mg-color-hero: var(--mg-color-interactive);
55
+ --mg-spacing-hero-overlay: #{mg-rem(20)} 0;
56
+ }
@@ -0,0 +1,37 @@
1
+ // PreventionWeb theme — runtime CSS custom property overrides.
2
+ // Applied when .mg-theme-preventionweb is present on <body> or a wrapping element.
3
+ $_pw-color-primary--raw: 10 105 105;
4
+
5
+ .mg-theme-preventionweb {
6
+ // Runtime marker: lets JS/tooling detect that this brand theme is active
7
+ // (guards the sub-brand body-class trap). See docs/RELEASE-2.0.md.
8
+ --mg-theme-loaded: preventionweb;
9
+ --mg-color-interactive: #{$_pw-color-primary--raw};
10
+ --mg-color-interactive-active: #{$_pw-color-primary--raw};
11
+ --mg-color-tag: var(--mg-color-interactive);
12
+ --mg-color-tag--hover: var(--mg-color-interactive-active);
13
+ --mg-color-button-background: #{$_pw-color-primary--raw};
14
+ --mg-color-button-background--hover: var(--mg-color-orange-900);
15
+ --mg-color-button-outline-primary: #{$_pw-color-primary--raw};
16
+ --mg-color-button-outline-primary--hover: var(--mg-color-orange-900);
17
+ --mg-color-button-outline-secondary: var(--mg-color-button-secondary-background);
18
+ --mg-color-button-outline-secondary--hover: var(--mg-color-button-secondary-background--hover);
19
+ --mg-radius-button: var(--mg-spacing-50);
20
+ --mg-color-form-check: var(--mg-color-interactive);
21
+ --mg-color-form-check--hover: var(--mg-color-interactive-active);
22
+ --mg-color-form-check--checked: var(--mg-color-interactive);
23
+ --mg-color-form-focus: var(--mg-color-interactive);
24
+ --mg-color-hero: var(--mg-color-interactive);
25
+ --mg-spacing-hero-overlay: #{mg-rem(20)} 0;
26
+ --mg-color-tabbar-background: rgb(#{$_pw-color-primary--raw} / 0.1);
27
+ --mg-color-tab-background: rgb(#{$_pw-color-primary--raw} / 0.1);
28
+ --mg-color-tab-border: var(--mg-color-interactive);
29
+ --mg-color-tab-border--hover: var(--mg-color-interactive);
30
+ --mg-color-tab-border--active: var(--mg-color-tab-background);
31
+ --mg-color-tab-background--inactive: var(--mg-color-tabbar-background);
32
+ --mg-color-tab-background--hover: rgb(#{$_pw-color-primary--raw} / 0.2);
33
+ --mg-radius-tab: var(--mg-spacing-50) var(--mg-spacing-50) 0 0;
34
+ --mg-color-text-tab: var(--mg-color-neutral-700);
35
+ --mg-color-text-tab--hover: var(--mg-color-neutral-700);
36
+ --mg-color-text-tab-active: var(--mg-color-neutral-900);
37
+ }