@undrr/undrr-mangrove 1.4.0 → 1.5.0
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.
- package/README.md +5 -8
- package/components/BarChart.js +1 -1
- package/components/BookCard.js +2 -2
- package/components/Breadcrumbs.js +2 -2
- package/components/Checkbox.js +1 -1
- package/components/Chips.js +1 -1
- package/components/CtaButton.js +2 -2
- package/components/EmbedContainer.js +1 -1
- package/components/Fetcher.js +1 -1
- package/components/Footer.js +1 -1
- package/components/FormErrorSummary.js +1 -1
- package/components/FormGroup.js +1 -1
- package/components/FullWidth.js +1 -1
- package/components/Gallery.js +1 -1
- package/components/Hero.js +2 -2
- package/components/HighlightBox.js +1 -1
- package/components/HorizontalBookCard.js +2 -2
- package/components/HorizontalCard.js +2 -2
- package/components/IconCard.js +2 -2
- package/components/Loader.js +1 -1
- package/components/MapComponent.js +1 -1
- package/components/MegaMenu.js +2 -2
- package/components/PageHeader.js +1 -1
- package/components/Pager.js +1 -1
- package/components/QuoteHighlight.js +1 -1
- package/components/Radio.js +1 -1
- package/components/ScrollContainer.js +1 -1
- package/components/Select.js +1 -1
- package/components/ShareButtons.js +2 -2
- package/components/ShowMore.js +2 -2
- package/components/StatsCard.js +1 -1
- package/components/SyndicationSearchWidget.js +2 -2
- package/components/Tab.js +2 -2
- package/components/TextCta.js +1 -1
- package/components/TextInput.js +1 -1
- package/components/Textarea.js +1 -1
- package/components/VerticalCard.js +2 -2
- package/components/hydrate.js +1 -1
- package/css/style-delta.css +15 -12
- package/css/style-delta.css.map +1 -1
- package/css/style-gutenberg.css +6 -3
- package/css/style-gutenberg.css.map +1 -1
- package/css/style-irp-legacy.css +14 -11
- package/css/style-irp-legacy.css.map +1 -1
- package/css/style-irp.css +14 -11
- package/css/style-irp.css.map +1 -1
- package/css/style-legacy.css +14 -11
- package/css/style-legacy.css.map +1 -1
- package/css/style-mcr-legacy.css +14 -11
- package/css/style-mcr-legacy.css.map +1 -1
- package/css/style-mcr.css +14 -11
- package/css/style-mcr.css.map +1 -1
- package/css/style-preventionweb-legacy.css +14 -11
- package/css/style-preventionweb-legacy.css.map +1 -1
- package/css/style-preventionweb.css +14 -11
- package/css/style-preventionweb.css.map +1 -1
- package/css/style.css +14 -11
- package/css/style.css.map +1 -1
- package/error-pages/401.html +1 -1
- package/error-pages/403.html +1 -1
- package/error-pages/404.html +1 -1
- package/error-pages/429.html +1 -1
- package/error-pages/500.html +1 -1
- package/error-pages/502.html +1 -1
- package/error-pages/503.html +1 -1
- package/error-pages/504.html +1 -1
- package/error-pages/5xx.html +1 -1
- package/error-pages/challenge.html +1 -1
- package/error-pages/managed-challenge.html +1 -1
- package/js/README.md +57 -0
- package/js/__tests__/show-more.test.js +76 -0
- package/js/__tests__/table-of-contents.test.js +198 -0
- package/js/on-this-page-nav.js +571 -0
- package/js/show-more.js +24 -3
- package/js/table-of-contents.js +168 -0
- package/js/tabs.js +18 -2
- package/package.json +1 -1
- package/scss/Atom/Icons/_icon-definitions.scss +319 -0
- package/scss/Atom/Icons/icons.scss +153 -232
- package/scss/Atom/Table/table.scss +1 -1
- package/scss/Components/Breadcrumbs/breadcrumbs.scss +25 -9
- package/scss/Components/Buttons/CtaButton/cta-button.scss +4 -29
- package/scss/Components/Buttons/ShareButtons/share-buttons.scss +0 -6
- package/scss/Components/Cards/Card/card.scss +7 -7
- package/scss/Components/Cards/StatsCard/stats-card.scss +2 -2
- package/scss/Components/Gallery/gallery.scss +3 -3
- package/scss/Components/Hero/hero.scss +25 -6
- package/scss/Components/MegaMenu/mega-menu.scss +26 -13
- package/scss/Components/OnThisPageNav/on-this-page-nav.scss +206 -0
- package/scss/Components/PageHeader/page-header.scss +1 -1
- package/scss/Components/ScrollContainer/scroll-container.scss +1 -1
- package/scss/Components/Snackbar/snackbar.scss +1 -1
- package/scss/Components/SyndicationSearchWidget/syndication-search-widget.scss +4 -4
- package/scss/Components/Tab/tab.scss +2 -2
- package/scss/Components/TableOfContents/TableOfContents.scss +3 -0
- package/scss/Components/TextCta/text-cta.scss +16 -6
- package/scss/Utilities/FullWidth/full-width.scss +1 -1
- package/scss/Utilities/ShowMore/show-more.scss +1 -1
- package/scss/assets/scss/_components.scss +4 -0
- package/scss/assets/scss/_variables-delta.scss +6 -1
- package/scss/assets/scss/_variables.scss +35 -2
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
// Mangrove Icon System
|
|
2
|
-
//
|
|
2
|
+
// Icons render via CSS mask-image backed by SVG data URIs (Lucide, OCHA, custom sources).
|
|
3
|
+
// The icon font is retained as a fallback for legacy fa-* selectors during migration.
|
|
3
4
|
// Usage:
|
|
4
|
-
// <span class="mg-icon mg-icon-globe"></span>
|
|
5
|
-
// <span class="mg-icon
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
//
|
|
5
|
+
// <span class="mg-icon mg-icon-globe"></span> (Preferred)
|
|
6
|
+
// <span class="mg-icon mg-icon-globe" style="color: orange"></span>
|
|
7
|
+
// <span class="mg-icon fa-globe"></span> (Legacy, still supported via font)
|
|
8
|
+
// See: https://github.com/unisdr/undrr-mangrove/issues/906
|
|
9
|
+
|
|
10
|
+
// Icon definitions (auto-generated by scripts/icon-build.cjs).
|
|
11
|
+
// Must be imported before any rules to satisfy CSS @import ordering.
|
|
12
|
+
@import "icon-definitions";
|
|
13
|
+
|
|
14
|
+
// Font fallback (kept for fa-* selectors — removed in phase 4)
|
|
10
15
|
|
|
11
16
|
@font-face {
|
|
12
17
|
font-family: FontAwesome;
|
|
13
18
|
font-weight: normal;
|
|
14
19
|
src:
|
|
15
|
-
url("#{$mgIconFontPath}/mangrove-icon-set.
|
|
16
|
-
url("#{$mgIconFontPath}/mangrove-icon-set.
|
|
20
|
+
url("#{$mgIconFontPath}/mangrove-icon-set.woff2") format("woff2"),
|
|
21
|
+
url("#{$mgIconFontPath}/mangrove-icon-set.ttf") format("truetype");
|
|
17
22
|
}
|
|
18
23
|
|
|
24
|
+
// Font-family applies to .mg-icon unconditionally. For mask-image icons this
|
|
25
|
+
// is harmless — the ::before pseudo-element uses content: "" which renders
|
|
26
|
+
// nothing from the font. For fa-* icons this is required for glyph rendering.
|
|
27
|
+
// This avoids the [class*="mg-icon-"] selector which falsely matches BEM
|
|
28
|
+
// modifiers like mg-icon--lg.
|
|
19
29
|
.mg-icon,
|
|
20
30
|
.fa-before:before,
|
|
21
31
|
.fab,
|
|
@@ -25,16 +35,6 @@
|
|
|
25
35
|
font-style: normal;
|
|
26
36
|
}
|
|
27
37
|
|
|
28
|
-
.mg-icon {
|
|
29
|
-
// Improve font rendering quality
|
|
30
|
-
font-smooth: never;
|
|
31
|
-
-webkit-font-smoothing: antialiased;
|
|
32
|
-
-moz-osx-font-smoothing: grayscale;
|
|
33
|
-
text-rendering: optimizeLegibility;
|
|
34
|
-
transform: translateZ(0); // Force hardware acceleration
|
|
35
|
-
backface-visibility: hidden; // Prevent blur during transforms
|
|
36
|
-
}
|
|
37
|
-
|
|
38
38
|
.fa-before:before {
|
|
39
39
|
padding-right: 0.5em;
|
|
40
40
|
}
|
|
@@ -43,231 +43,152 @@
|
|
|
43
43
|
font-size: 2em;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
-
|
|
51
|
-
// RSS
|
|
52
|
-
.mg-icon-rss:before,
|
|
53
|
-
.fa-rss:before {
|
|
54
|
-
content: "\f09e";
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// File/Document
|
|
58
|
-
.mg-icon-file-alt:before,
|
|
59
|
-
.fa-file-alt:before {
|
|
60
|
-
content: "\f15c";
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.mg-icon-file:before,
|
|
64
|
-
.fa-file:before {
|
|
65
|
-
content: "\f15b";
|
|
66
|
-
}
|
|
46
|
+
// Legacy fa-* icon definitions (font-based, removed in phase 4)
|
|
47
|
+
// These keep the font rendering path alive for code that uses fa-* classes.
|
|
48
|
+
// Bare fa-* selectors (specificity 0,1,1) are safe because the base mask rule
|
|
49
|
+
// uses :not([class*="fa-"]) (specificity 0,2,1) and is excluded for these elements.
|
|
67
50
|
|
|
68
|
-
|
|
69
|
-
.
|
|
70
|
-
.fa-
|
|
71
|
-
|
|
72
|
-
}
|
|
51
|
+
.fa-rss:before { content: "\f09e"; }
|
|
52
|
+
.fa-file-alt:before { content: "\f15c"; }
|
|
53
|
+
.fa-file:before { content: "\f15b"; }
|
|
54
|
+
.fa-facebook:before { content: "\f230"; }
|
|
73
55
|
|
|
74
|
-
.mg-icon-x-social:before,
|
|
75
|
-
.mg-icon-twitter:before,
|
|
76
56
|
.fa-x-social:before,
|
|
77
|
-
.fa-twitter:before {
|
|
78
|
-
content: "\f099";
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.mg-icon-linkedin:before,
|
|
82
|
-
.fa-linkedin:before {
|
|
83
|
-
content: "\f0e1";
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
.mg-icon-flickr:before,
|
|
87
|
-
.fa-flickr:before {
|
|
88
|
-
content: "\f16e";
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.mg-icon-youtube:before,
|
|
92
|
-
.fa-youtube:before {
|
|
93
|
-
content: "\f16a";
|
|
94
|
-
}
|
|
57
|
+
.fa-twitter:before { content: "\f099"; }
|
|
95
58
|
|
|
96
|
-
|
|
97
|
-
.
|
|
98
|
-
.fa-
|
|
99
|
-
|
|
100
|
-
}
|
|
59
|
+
.fa-linkedin:before { content: "\f0e1"; }
|
|
60
|
+
.fa-flickr:before { content: "\f16e"; }
|
|
61
|
+
.fa-youtube:before { content: "\f16a"; }
|
|
62
|
+
.fa-search:before { content: "\e808"; }
|
|
101
63
|
|
|
102
|
-
// Communication
|
|
103
|
-
.mg-icon-envelope:before,
|
|
104
64
|
.fa-envelope:before,
|
|
105
|
-
.fa-envelope-o:before {
|
|
106
|
-
content: "\e806";
|
|
107
|
-
}
|
|
65
|
+
.fa-envelope-o:before { content: "\e806"; }
|
|
108
66
|
|
|
109
|
-
|
|
110
|
-
.mg-icon-newspaper:before,
|
|
111
|
-
.fa-newspaper:before {
|
|
112
|
-
content: "\f1ea";
|
|
113
|
-
}
|
|
67
|
+
.fa-newspaper:before { content: "\f1ea"; }
|
|
114
68
|
|
|
115
|
-
// Charts & Data
|
|
116
|
-
.mg-icon-chart-bar:before,
|
|
117
|
-
.mg-icon-bar-chart:before,
|
|
118
69
|
.fa-chart-bar:before,
|
|
119
|
-
.fa-bar-chart:before {
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
.
|
|
125
|
-
.fa-
|
|
126
|
-
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
.
|
|
131
|
-
.mg-icon-calendar-alt:before,
|
|
132
|
-
.fa-calendar-alt:before {
|
|
133
|
-
content: "\f133";
|
|
134
|
-
}
|
|
70
|
+
.fa-bar-chart:before { content: "\e80B"; }
|
|
71
|
+
|
|
72
|
+
.fa-graduation-cap:before { content: "\f19D"; }
|
|
73
|
+
.fa-calendar-alt:before { content: "\f133"; }
|
|
74
|
+
.fa-building:before { content: "\f0F7"; }
|
|
75
|
+
.fa-landmark:before { content: "\f19c"; }
|
|
76
|
+
.fa-pen-nib:before { content: "\f0f6"; }
|
|
77
|
+
.fa-business-time:before { content: "\e809"; }
|
|
78
|
+
.fa-code-branch:before { content: "\f126"; }
|
|
79
|
+
.fa-life-ring:before { content: "\f1cd"; }
|
|
80
|
+
.fa-lightbulb:before { content: "\f0eb"; }
|
|
81
|
+
.fa-cubes:before { content: "\f1b3"; }
|
|
135
82
|
|
|
136
|
-
// Buildings & Landmarks
|
|
137
|
-
.mg-icon-building:before,
|
|
138
|
-
.fa-building:before {
|
|
139
|
-
content: "\f0F7";
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
.mg-icon-landmark:before,
|
|
143
|
-
.fa-landmark:before {
|
|
144
|
-
content: "\f19c";
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// Writing & Editing
|
|
148
|
-
.mg-icon-pen-nib:before,
|
|
149
|
-
.fa-pen-nib:before {
|
|
150
|
-
content: "\f0f6";
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// Business
|
|
154
|
-
.mg-icon-business-time:before,
|
|
155
|
-
.fa-business-time:before {
|
|
156
|
-
content: "\e809";
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// Development
|
|
160
|
-
.mg-icon-code-branch:before,
|
|
161
|
-
.fa-code-branch:before {
|
|
162
|
-
content: "\f126";
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// Support
|
|
166
|
-
.mg-icon-life-ring:before,
|
|
167
|
-
.fa-life-ring:before {
|
|
168
|
-
content: "\f1cd";
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
// Ideas
|
|
172
|
-
.mg-icon-lightbulb:before,
|
|
173
|
-
.fa-lightbulb:before {
|
|
174
|
-
content: "\f0eb";
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
// Objects
|
|
178
|
-
.mg-icon-cubes:before,
|
|
179
|
-
.fa-cubes:before {
|
|
180
|
-
content: "\f1b3";
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
// Sorting & Organization
|
|
184
|
-
.mg-icon-sort-alpha-down:before,
|
|
185
|
-
.mg-icon-tags:before,
|
|
186
83
|
.fa-sort-alpha-down:before,
|
|
187
|
-
.fa-tags:before {
|
|
188
|
-
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
.
|
|
193
|
-
.fa-
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
.
|
|
199
|
-
.fa-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
//
|
|
204
|
-
.mg-icon-
|
|
205
|
-
.
|
|
206
|
-
|
|
207
|
-
content: "\f00d";
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
.mg-icon-link:before,
|
|
211
|
-
.fa-link:before {
|
|
212
|
-
content: "\e802";
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
.mg-icon-clone:before,
|
|
216
|
-
.mg-icon-copy:before,
|
|
217
|
-
.fa-clone:before {
|
|
218
|
-
content: "\f24d";
|
|
219
|
-
}
|
|
84
|
+
.fa-tags:before { content: "\e800"; }
|
|
85
|
+
|
|
86
|
+
.fa-power-off:before { content: "\f090"; }
|
|
87
|
+
.fa-user:before { content: "\e805"; }
|
|
88
|
+
.fa-times:before { content: "\f00d"; }
|
|
89
|
+
.fa-link:before { content: "\e802"; }
|
|
90
|
+
.fa-clone:before { content: "\f24d"; }
|
|
91
|
+
.fa-share:before { content: "\f1e0"; }
|
|
92
|
+
.fa-globe:before { content: "\f0ac"; }
|
|
93
|
+
.fa-qrcode:before { content: "\e899"; }
|
|
94
|
+
.fa-left:before { content: "\f177"; }
|
|
95
|
+
.fa-right:before { content: "\f178"; }
|
|
96
|
+
.fa-angle-circled-right:before { content: "\f138"; }
|
|
97
|
+
.fa-angle-circled-left:before { content: "\f137"; }
|
|
98
|
+
.fa-menu:before { content: "\f0c9"; }
|
|
99
|
+
|
|
100
|
+
// Mask-image icon system
|
|
101
|
+
// content: "" and background-color: currentColor live in .mg-icon:not([class*="fa-"])::before
|
|
102
|
+
// (specificity 0,2,1). The :not() excludes fa-* elements, so font glyphs render
|
|
103
|
+
// correctly without a separate background-color reset.
|
|
220
104
|
|
|
221
|
-
.mg-icon
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
.
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
.
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
//
|
|
262
|
-
.mg-icon
|
|
263
|
-
|
|
264
|
-
.
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
//
|
|
269
|
-
//
|
|
270
|
-
//
|
|
105
|
+
.mg-icon {
|
|
106
|
+
vertical-align: -0.125em;
|
|
107
|
+
forced-color-adjust: none;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.mg-icon:not([class*="fa-"])::before {
|
|
111
|
+
display: inline-block;
|
|
112
|
+
content: "";
|
|
113
|
+
width: 1em;
|
|
114
|
+
height: 1em;
|
|
115
|
+
background-color: currentColor;
|
|
116
|
+
|
|
117
|
+
// No -webkit-mask-* prefixes: unprefixed mask-* is supported by all browsers
|
|
118
|
+
// in our target matrix (Chrome 120+, Safari 17.4+, Firefox 53+, Edge 120+).
|
|
119
|
+
// Prefixes were deliberately removed as part of PR #907. Do not re-add them.
|
|
120
|
+
mask-image: var(--mg-icon-svg);
|
|
121
|
+
mask-size: contain;
|
|
122
|
+
mask-repeat: no-repeat;
|
|
123
|
+
mask-position: center;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Windows High Contrast Mode (WHCM) strategy — keep both halves together:
|
|
127
|
+
// (1) forced-color-adjust: none on .mg-icon prevents WHCM from overriding
|
|
128
|
+
// background-color on the ::before pseudo-element. Without it, the browser
|
|
129
|
+
// sets background-color to a system colour that breaks the mask-image
|
|
130
|
+
// rendering (the icon becomes invisible or a solid rectangle).
|
|
131
|
+
// (2) background-color: CanvasText in the forced-colors media query explicitly
|
|
132
|
+
// paints the icon with the WHCM foreground system colour. This ensures the
|
|
133
|
+
// icon is visible and correctly coloured even when currentColor has been
|
|
134
|
+
// overridden by a WHCM-adjusted ancestor.
|
|
135
|
+
// Neither rule is sufficient alone — forced-color-adjust: none without the
|
|
136
|
+
// CanvasText fallback can leave icons the wrong colour; CanvasText without
|
|
137
|
+
// forced-color-adjust: none has no effect because WHCM overrides it first.
|
|
138
|
+
@media (forced-colors: active) {
|
|
139
|
+
.mg-icon:not([class*="fa-"])::before {
|
|
140
|
+
background-color: CanvasText;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Multi-color modifier: renders the SVG with its original colors instead of
|
|
145
|
+
// using currentColor through a mask.
|
|
146
|
+
// WHCM note: forced-color-adjust: none is inherited from .mg-icon, so the
|
|
147
|
+
// browser does not override background-image in forced-colors mode. The SVG
|
|
148
|
+
// renders with its embedded fill colors (e.g. SDG wheel segments). This is
|
|
149
|
+
// intentional for brand logos and multi-color assets — the forced-colors
|
|
150
|
+
// background-color: CanvasText rule on .mg-icon:not([class*="fa-"])::before
|
|
151
|
+
// (specificity 0,2,1) is overridden by .mg-icon--multicolor::before
|
|
152
|
+
// (same specificity 0,2,1, but later in source order), which resets
|
|
153
|
+
// background-color to transparent. Result: multicolor icons
|
|
154
|
+
// retain their original colors in WHCM. Always pair multicolor icons with a
|
|
155
|
+
// visible text label so the color meaning is not the sole conveyor of information.
|
|
156
|
+
.mg-icon--multicolor::before {
|
|
157
|
+
background-color: transparent;
|
|
158
|
+
background-image: var(--mg-icon-svg);
|
|
159
|
+
background-size: contain;
|
|
160
|
+
background-repeat: no-repeat;
|
|
161
|
+
background-position: center;
|
|
162
|
+
mask-image: none;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// RTL: flip directional icons horizontally. Icons with an inherent left→right
|
|
166
|
+
// direction must reverse in RTL layouts so they point the correct way.
|
|
167
|
+
[dir="rtl"] {
|
|
168
|
+
.mg-icon-left::before,
|
|
169
|
+
.mg-icon-arrow-left::before,
|
|
170
|
+
.mg-icon-right::before,
|
|
171
|
+
.mg-icon-arrow-right::before,
|
|
172
|
+
.mg-icon-angle-circled-left::before,
|
|
173
|
+
.mg-icon-angle-circled-right::before {
|
|
174
|
+
transform: scaleX(-1);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Print: restore background-color so mask-image icons remain visible.
|
|
179
|
+
// Generic print resets (e.g. HTML5 Boilerplate) set `background: transparent !important`
|
|
180
|
+
// on all elements. Font glyphs were unaffected because they use `color`, but mask-image
|
|
181
|
+
// icons are painted via `background-color: currentColor` — without this override every
|
|
182
|
+
// icon is invisible when printing.
|
|
183
|
+
@media print {
|
|
184
|
+
.mg-icon:not([class*="fa-"])::before {
|
|
185
|
+
// Specificity 0,2,1 with !important beats any 0,0,1 universal reset.
|
|
186
|
+
background-color: #000 !important; // sass-lint:disable-line no-important
|
|
187
|
+
print-color-adjust: exact;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// Icon size modifiers
|
|
271
192
|
|
|
272
193
|
.mg-icon--sm {
|
|
273
194
|
font-size: 0.875em;
|
|
@@ -39,11 +39,20 @@
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
li + li:before {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
// CSS-only chevron separator (replaces font codepoint \f105)
|
|
43
|
+
content: "";
|
|
44
|
+
display: inline-block;
|
|
45
|
+
width: 0.4em;
|
|
46
|
+
height: 0.4em;
|
|
47
|
+
border-right: 0.125em solid $mg-color-text;
|
|
48
|
+
border-top: 0.125em solid $mg-color-text;
|
|
49
|
+
transform: rotate(45deg);
|
|
50
|
+
|
|
51
|
+
// Asymmetric margin: left side is larger to optically center the rotated
|
|
52
|
+
// chevron box within the text line. em units scale with font-size.
|
|
53
|
+
// At 16px base: right = 0.75em (12px), left = 0.875em (14px).
|
|
54
|
+
margin: 0 0.75em 0 0.875em;
|
|
55
|
+
vertical-align: middle;
|
|
47
56
|
}
|
|
48
57
|
|
|
49
58
|
li + li:has(a:empty):before {
|
|
@@ -70,7 +79,15 @@
|
|
|
70
79
|
}
|
|
71
80
|
|
|
72
81
|
li + li:before {
|
|
73
|
-
color: $mg-color-white;
|
|
82
|
+
border-color: $mg-color-white;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Forced-colors mode: white variant chevrons could map to Canvas (background)
|
|
87
|
+
// and become invisible. Force CanvasText for visibility.
|
|
88
|
+
@media (forced-colors: active) {
|
|
89
|
+
.mg-breadcrumb.mg-breadcrumb--white li + li:before {
|
|
90
|
+
border-color: CanvasText;
|
|
74
91
|
}
|
|
75
92
|
}
|
|
76
93
|
|
|
@@ -98,9 +115,8 @@
|
|
|
98
115
|
}
|
|
99
116
|
|
|
100
117
|
li + li:before {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
padding: 0 14px 0 12px;
|
|
118
|
+
transform: rotate(225deg);
|
|
119
|
+
margin: 0 0.875em 0 0.75em;
|
|
104
120
|
}
|
|
105
121
|
}
|
|
106
122
|
}
|
|
@@ -55,45 +55,20 @@ button {
|
|
|
55
55
|
color: $mg-color-button;
|
|
56
56
|
background-color: $mg-color-button-background--hover;
|
|
57
57
|
}
|
|
58
|
-
|
|
59
|
-
// &.button-arrow {
|
|
60
|
-
// &::after {
|
|
61
|
-
// @include transition(0.2s ease);
|
|
62
|
-
|
|
63
|
-
// background: url(#{$img-path-Iconfourback}/chevron-right-black.svg)
|
|
64
|
-
// no-repeat left center;
|
|
65
|
-
// content: '';
|
|
66
|
-
// height: 20px;
|
|
67
|
-
// margin-left: $mg-spacing-25;
|
|
68
|
-
// width: 13px;
|
|
69
|
-
// }
|
|
70
|
-
|
|
71
|
-
// &:hover::after {
|
|
72
|
-
// @include translate(70%, 0);
|
|
73
|
-
// }
|
|
74
|
-
|
|
75
|
-
// &.disabled {
|
|
76
|
-
// &::after {
|
|
77
|
-
// background: url(#{$img-path-Iconfourback}/chevron-right-white.svg)
|
|
78
|
-
// no-repeat left center;
|
|
79
|
-
// content: '';
|
|
80
|
-
// }
|
|
81
|
-
// }
|
|
82
|
-
// }
|
|
83
58
|
}
|
|
84
59
|
|
|
85
60
|
.mg-button-secondary {
|
|
86
|
-
background-color: $mg-color-
|
|
61
|
+
background-color: $mg-color-button-secondary-background;
|
|
87
62
|
|
|
88
63
|
&:hover {
|
|
89
64
|
color: $mg-color-button;
|
|
90
|
-
background-color: $mg-color-
|
|
65
|
+
background-color: $mg-color-button-secondary-background--hover;
|
|
91
66
|
}
|
|
92
67
|
}
|
|
93
68
|
|
|
94
69
|
.mg-button.disabled {
|
|
95
|
-
background-color: $mg-color-neutral-
|
|
96
|
-
color: $mg-color-neutral-
|
|
70
|
+
background-color: $mg-color-neutral-500;
|
|
71
|
+
color: $mg-color-neutral-0;
|
|
97
72
|
pointer-events: none;
|
|
98
73
|
}
|
|
99
74
|
|
|
@@ -36,12 +36,6 @@
|
|
|
36
36
|
cursor: pointer;
|
|
37
37
|
border: $mg-border-width-button solid $mg-border-color-button;
|
|
38
38
|
|
|
39
|
-
// Improve icon rendering quality
|
|
40
|
-
.mg-icon {
|
|
41
|
-
font-weight: 100;
|
|
42
|
-
-webkit-text-stroke: 0.25px $mg-color-button-background;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
39
|
&:hover {
|
|
46
40
|
background-color: rgba($mg-color-button-background--hover, 0.8);
|
|
47
41
|
}
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
&__image {
|
|
91
91
|
object-fit: cover;
|
|
92
92
|
width: 100%;
|
|
93
|
-
align-self:
|
|
93
|
+
align-self: flex-start;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
&__label {
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
position: absolute;
|
|
135
135
|
right: 0;
|
|
136
136
|
top: 0;
|
|
137
|
-
z-index: 100;
|
|
137
|
+
z-index: 100; // stretched-link cover — local to card stacking context
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
// Inline chevron indicator (CSS border triangle)
|
|
@@ -227,7 +227,7 @@ $card-variant-colours: (
|
|
|
227
227
|
.mg-card__label,
|
|
228
228
|
.mg-card .mg-button {
|
|
229
229
|
position: relative;
|
|
230
|
-
z-index: 101;
|
|
230
|
+
z-index: 101; // above stretched-link cover — local to card stacking context
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
.mg-card__label {
|
|
@@ -293,7 +293,7 @@ $card-variant-colours: (
|
|
|
293
293
|
width: 100%;
|
|
294
294
|
display: flex;
|
|
295
295
|
flex-direction: column;
|
|
296
|
-
align-items:
|
|
296
|
+
align-items: flex-start;
|
|
297
297
|
justify-content: flex-start;
|
|
298
298
|
overflow: visible;
|
|
299
299
|
container-type: inline-size; // Enable container queries for icon scaling
|
|
@@ -420,7 +420,7 @@ $card-variant-colours: (
|
|
|
420
420
|
content: "";
|
|
421
421
|
position: absolute;
|
|
422
422
|
inset: 0;
|
|
423
|
-
z-index: 1;
|
|
423
|
+
z-index: 1; // stretched-link cover for logo card — local to icon-card stacking context
|
|
424
424
|
}
|
|
425
425
|
|
|
426
426
|
&:hover {
|
|
@@ -483,7 +483,7 @@ $card-variant-colours: (
|
|
|
483
483
|
color: $mg-color-interactive;
|
|
484
484
|
text-decoration: none;
|
|
485
485
|
position: relative;
|
|
486
|
-
z-index: 101;
|
|
486
|
+
z-index: 101; // above stretched-link cover — local to card stacking context
|
|
487
487
|
|
|
488
488
|
&:hover {
|
|
489
489
|
text-decoration: underline;
|
|
@@ -500,7 +500,7 @@ $card-variant-colours: (
|
|
|
500
500
|
// Bordered variant (colored border via CSS custom property)
|
|
501
501
|
&--bordered {
|
|
502
502
|
border: 2px solid var(--mg-card-border);
|
|
503
|
-
padding: max($mg-card-padding
|
|
503
|
+
padding: max($mg-card-padding, $mg-spacing-150);
|
|
504
504
|
}
|
|
505
505
|
|
|
506
506
|
// Centered variant
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
content: "";
|
|
63
63
|
position: absolute;
|
|
64
64
|
inset: 0;
|
|
65
|
-
z-index: 1;
|
|
65
|
+
z-index: 1; // stretched-link cover — local to stats-card stacking context
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
// Focus styles for linked cards
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
color: $mg-color-interactive;
|
|
106
106
|
text-decoration: underline;
|
|
107
107
|
position: relative;
|
|
108
|
-
z-index: 2;
|
|
108
|
+
z-index: 2; // above stretched-link cover — local to stats-card stacking context
|
|
109
109
|
transition: opacity 200ms ease;
|
|
110
110
|
|
|
111
111
|
&:hover {
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
top: 50%;
|
|
99
99
|
left: 50%;
|
|
100
100
|
transform: translate(-50%, -50%);
|
|
101
|
-
z-index: 3;
|
|
101
|
+
z-index: 3; // loading spinner above nav buttons — local to gallery stacking context
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
&__spinner {
|
|
@@ -352,7 +352,7 @@
|
|
|
352
352
|
color: $mg-color-white;
|
|
353
353
|
font-size: $mg-font-size-400;
|
|
354
354
|
cursor: pointer;
|
|
355
|
-
z-index: 2;
|
|
355
|
+
z-index: 2; // nav button above gallery images — local to gallery stacking context
|
|
356
356
|
display: flex;
|
|
357
357
|
align-items: center;
|
|
358
358
|
justify-content: center;
|
|
@@ -409,7 +409,7 @@
|
|
|
409
409
|
right: $mg-spacing-100;
|
|
410
410
|
display: flex;
|
|
411
411
|
gap: $mg-spacing-100;
|
|
412
|
-
z-index: 2;
|
|
412
|
+
z-index: 2; // arrow controls above gallery images — local to gallery stacking context
|
|
413
413
|
}
|
|
414
414
|
|
|
415
415
|
&__arrow-button {
|