@undrr/undrr-mangrove 1.3.1 → 1.3.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 (74) hide show
  1. package/README.md +4 -4
  2. package/components/BarChart.js +1 -1
  3. package/components/Fetcher.js +1 -1
  4. package/components/Gallery.js +1 -1
  5. package/components/IconCard.js +2 -2
  6. package/components/IconCard.js.LICENSE.txt +1 -1
  7. package/components/MapComponent.js +2 -2
  8. package/components/MegaMenu.js +1 -1
  9. package/components/Pager.js +1 -1
  10. package/components/QuoteHighlight.js +1 -1
  11. package/components/ScrollContainer.js +1 -1
  12. package/components/ShareButtons.js +1 -1
  13. package/components/StatsCard.js +2 -2
  14. package/components/SyndicationSearchWidget.js +2 -2
  15. package/css/style-gutenberg.css +10 -2
  16. package/css/style-gutenberg.css.map +1 -1
  17. package/css/style-irp.css +28 -69
  18. package/css/style-irp.css.map +1 -1
  19. package/css/style-mcr.css +28 -69
  20. package/css/style-mcr.css.map +1 -1
  21. package/css/style-preventionweb.css +28 -69
  22. package/css/style-preventionweb.css.map +1 -1
  23. package/css/style.css +28 -69
  24. package/css/style.css.map +1 -1
  25. package/error-pages/401.html +1 -1
  26. package/error-pages/403.html +1 -1
  27. package/error-pages/404.html +1 -1
  28. package/error-pages/429.html +1 -1
  29. package/error-pages/500.html +1 -1
  30. package/error-pages/502.html +1 -1
  31. package/error-pages/503.html +1 -1
  32. package/error-pages/504.html +1 -1
  33. package/error-pages/5xx.html +1 -1
  34. package/error-pages/challenge.html +1 -1
  35. package/error-pages/managed-challenge.html +1 -1
  36. package/js/show-more.js +15 -9
  37. package/package.json +1 -1
  38. package/scss/Atom/Tag/tag.scss +115 -0
  39. package/scss/Components/Boilerplate/boilerplate.scss +15 -0
  40. package/scss/Components/Cards/Card/card.scss +88 -23
  41. package/scss/Components/Cards/StatsCard/stats-card.scss +1 -1
  42. package/scss/Components/Footer/footer.scss +20 -3
  43. package/scss/Components/Forms/Checkbox/checkbox.scss +2 -22
  44. package/scss/Components/Forms/FormGroup/form-group.scss +24 -0
  45. package/scss/Components/Forms/InputFields/input-fields.scss +7 -177
  46. package/scss/Components/Forms/Radio/radio.scss +2 -13
  47. package/scss/Components/Forms/Select/select.scss +6 -15
  48. package/scss/Components/Forms/TextInput/text-input.scss +13 -0
  49. package/scss/Components/Forms/Textarea/textarea.scss +2 -0
  50. package/scss/Components/Forms/_form-base.scss +324 -0
  51. package/scss/Components/Forms/_form-legacy.scss +153 -0
  52. package/scss/Components/Hero/hero.scss +1 -1
  53. package/scss/Components/HighlightBox/highlight-box.scss +0 -9
  54. package/scss/Components/MegaMenu/megamenu.scss +1 -1
  55. package/scss/Components/PageHeader/page-header.scss +1 -1
  56. package/scss/Components/SyndicationSearchWidget/SyndicationSearchWidget.scss +49 -1
  57. package/scss/Utilities/EmbedContainer/embed-container.scss +58 -0
  58. package/scss/Utilities/ShowMore/ShowMore.scss +8 -17
  59. package/scss/assets/scss/_components.scss +7 -10
  60. package/scss/assets/scss/_mixins.scss +4 -68
  61. package/scss/assets/scss/_utility.scss +87 -0
  62. package/scss/assets/scss/_variables-irp.scss +12 -3
  63. package/scss/assets/scss/_variables-mcr.scss +12 -3
  64. package/scss/assets/scss/_variables-preventionweb.scss +10 -2
  65. package/scss/assets/scss/_variables.scss +37 -10
  66. package/scss/Atom/Navigation/LanguageSwitcherRow/language-switcher-row.scss +0 -12
  67. package/scss/Atom/Navigation/ProgressBarNavigation/progress-bar-navigation.scss +0 -70
  68. package/scss/Atom/Navigation/SidebarFirstLevel/sidebar-first-level.scss +0 -26
  69. package/scss/Components/Accordion/accordion.scss +0 -119
  70. package/scss/Components/Forms/Dropdowns/CustomSelect/custom-select.scss +0 -110
  71. package/scss/Components/Forms/Dropdowns/Multiselect/multi-select.scss +0 -228
  72. package/scss/Components/LanguageSwitcher/language-switcher.scss +0 -162
  73. package/scss/Components/Sidebar/sidebar.scss +0 -236
  74. package/scss/Molecules/SidebarData/sidebar-data.scss +0 -44
@@ -0,0 +1,324 @@
1
+ // Shared BEM-scoped form styles for Mangrove form components.
2
+ // All form components import this partial for consistent base styling.
3
+
4
+ // -----------------------------------------------------------------------------
5
+ // Field wrapper
6
+ // -----------------------------------------------------------------------------
7
+ .mg-form-field {
8
+ display: block;
9
+ margin-bottom: $mg-spacing-100;
10
+ }
11
+
12
+ // -----------------------------------------------------------------------------
13
+ // Label
14
+ // -----------------------------------------------------------------------------
15
+ .mg-form-label {
16
+ display: block;
17
+ font-size: $mg-font-size-300;
18
+
19
+ &--disabled {
20
+ color: $mg-color-neutral-400;
21
+ }
22
+
23
+ &--required::after {
24
+ color: $mg-color-red-900;
25
+ content: " *";
26
+ }
27
+ }
28
+
29
+ // -----------------------------------------------------------------------------
30
+ // Text input
31
+ // -----------------------------------------------------------------------------
32
+ %mg-form-input-base {
33
+ @extend %background-white;
34
+
35
+ appearance: none;
36
+ border: 2px solid $mg-color-black;
37
+ border-radius: $mg-radius-form-input;
38
+ box-sizing: border-box;
39
+ display: block;
40
+ font-family: $mg-font-family;
41
+ font-size: $mg-font-size-300;
42
+ height: 46px;
43
+ margin-top: $mg-spacing-25;
44
+ padding: 0.625rem;
45
+ width: 100%;
46
+
47
+ &::placeholder {
48
+ color: $mg-color-neutral-500;
49
+ }
50
+
51
+ &:focus-visible {
52
+ box-shadow: 0 0 4px $mg-color-form-focus;
53
+ outline: 0;
54
+ }
55
+ }
56
+
57
+ .mg-form-input {
58
+ @extend %mg-form-input-base;
59
+
60
+ &--disabled {
61
+ background-color: $mg-color-white;
62
+ border-color: $mg-color-neutral-400;
63
+ color: $mg-color-neutral-400;
64
+
65
+ &::placeholder {
66
+ color: $mg-color-neutral-400;
67
+ }
68
+ }
69
+
70
+ &--error {
71
+ border-color: $mg-color-red-900;
72
+ }
73
+ }
74
+
75
+ // -----------------------------------------------------------------------------
76
+ // Textarea
77
+ // -----------------------------------------------------------------------------
78
+ .mg-form-textarea {
79
+ @extend %mg-form-input-base;
80
+
81
+ height: auto;
82
+ max-width: 100%;
83
+ resize: vertical;
84
+
85
+ &--disabled {
86
+ background-color: $mg-color-white;
87
+ border-color: $mg-color-neutral-400;
88
+ color: $mg-color-neutral-400;
89
+
90
+ &::placeholder {
91
+ color: $mg-color-neutral-400;
92
+ }
93
+ }
94
+
95
+ &--error {
96
+ border-color: $mg-color-red-900;
97
+ }
98
+ }
99
+
100
+ // -----------------------------------------------------------------------------
101
+ // Select
102
+ // -----------------------------------------------------------------------------
103
+ .mg-form-select {
104
+ @extend %background-white;
105
+
106
+ appearance: none;
107
+ border: 2px solid $mg-color-black;
108
+ border-radius: $mg-radius-form-input;
109
+ box-sizing: border-box;
110
+ cursor: pointer;
111
+ display: block;
112
+ font-family: $mg-font-family;
113
+ font-size: $mg-font-size-300;
114
+ height: 46px;
115
+ margin-top: $mg-spacing-25;
116
+ padding: 0.625rem;
117
+ padding-right: $mg-spacing-200;
118
+ width: 100%;
119
+
120
+ // Custom dropdown arrow
121
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%231a1a1a' d='M1.41 0L6 4.58 10.59 0 12 1.41l-6 6-6-6z'/%3E%3C/svg%3E");
122
+ background-position: right 0.625rem center;
123
+ background-repeat: no-repeat;
124
+
125
+ &:focus-visible {
126
+ box-shadow: 0 0 4px $mg-color-form-focus;
127
+ outline: 0;
128
+ }
129
+
130
+ &--disabled {
131
+ background-color: $mg-color-white;
132
+ border-color: $mg-color-neutral-400;
133
+ color: $mg-color-neutral-400;
134
+ cursor: default;
135
+ }
136
+
137
+ &--error {
138
+ border-color: $mg-color-red-900;
139
+ }
140
+ }
141
+
142
+ // -----------------------------------------------------------------------------
143
+ // Checkbox / Radio shared (check group)
144
+ // -----------------------------------------------------------------------------
145
+ .mg-form-check {
146
+ align-items: center;
147
+ display: flex;
148
+ position: relative;
149
+
150
+ // Base input (shared between checkbox and radio)
151
+ &__input {
152
+ appearance: none;
153
+ border: 2px solid $mg-color-form-check;
154
+ cursor: pointer;
155
+ height: 16px;
156
+ margin: 0;
157
+ width: 16px;
158
+
159
+ &:hover {
160
+ border-color: $mg-color-form-check--hover;
161
+ }
162
+
163
+ &:focus-visible {
164
+ box-shadow: 0 0 4px $mg-color-form-focus;
165
+ outline: 0;
166
+ }
167
+
168
+ &--checkbox {
169
+ border-radius: 0;
170
+ }
171
+
172
+ &--radio {
173
+ background-color: transparent;
174
+ border-radius: 100%;
175
+ box-shadow: inset 0 0 0 $mg-color-white;
176
+ }
177
+
178
+ &--disabled {
179
+ border-color: $mg-color-neutral-400;
180
+ cursor: default;
181
+
182
+ &:hover {
183
+ border-color: $mg-color-neutral-400;
184
+ }
185
+ }
186
+
187
+ &--error {
188
+ border-color: $mg-color-red-900;
189
+
190
+ &:hover {
191
+ border-color: $mg-color-red-900;
192
+ }
193
+ }
194
+ }
195
+
196
+ // Label next to checkbox/radio
197
+ &__label {
198
+ cursor: pointer;
199
+ font-size: $mg-font-size-300;
200
+ padding: 0 7px;
201
+ }
202
+ }
203
+
204
+ // Checked states (must be outside BEM nesting for specificity)
205
+ .mg-form-check__input--checkbox:checked {
206
+ background-color: $mg-color-form-check--checked;
207
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' d='M3.5 8l3 3 6-6'/%3E%3C/svg%3E");
208
+ border-color: $mg-color-form-check--checked;
209
+ }
210
+
211
+ .mg-form-check__input--radio:checked {
212
+ background-color: $mg-color-form-check--checked;
213
+ box-shadow: inset 0 0 0 3px $mg-color-white;
214
+ }
215
+
216
+ // -----------------------------------------------------------------------------
217
+ // Help text
218
+ // -----------------------------------------------------------------------------
219
+ .mg-form-help {
220
+ color: $mg-color-neutral-500;
221
+ font-size: $mg-font-size-200;
222
+ margin-bottom: 0;
223
+ margin-top: $mg-spacing-25;
224
+ }
225
+
226
+ // -----------------------------------------------------------------------------
227
+ // Error text
228
+ // -----------------------------------------------------------------------------
229
+ .mg-form-error {
230
+ color: $mg-color-red-900;
231
+ font-size: $mg-font-size-300;
232
+ margin-bottom: 0;
233
+ margin-top: $mg-spacing-25;
234
+ }
235
+
236
+ // -----------------------------------------------------------------------------
237
+ // Form error summary
238
+ // -----------------------------------------------------------------------------
239
+ .mg-form-error-summary {
240
+ background-color: $mg-color-red-50;
241
+ border-left: 4px solid $mg-color-red-900;
242
+ margin-bottom: $mg-spacing-200;
243
+ padding: $mg-spacing-150;
244
+
245
+ &:focus {
246
+ outline: 3px solid $mg-color-blue-800;
247
+ outline-offset: 0;
248
+ }
249
+
250
+ &__title {
251
+ color: $mg-color-red-900;
252
+ font-size: $mg-font-size-300;
253
+ font-weight: 700;
254
+ margin-bottom: $mg-spacing-75;
255
+ margin-top: 0;
256
+ }
257
+
258
+ &__list {
259
+ margin: 0;
260
+ padding-left: $mg-spacing-100;
261
+
262
+ li {
263
+ margin-bottom: $mg-spacing-50;
264
+
265
+ &:last-child {
266
+ margin-bottom: 0;
267
+ }
268
+ }
269
+
270
+ a {
271
+ color: $mg-color-red-900;
272
+ font-weight: 600;
273
+ text-decoration: underline;
274
+ }
275
+ }
276
+ }
277
+
278
+ // -----------------------------------------------------------------------------
279
+ // Screen-reader-only utility
280
+ // -----------------------------------------------------------------------------
281
+ .mg-u-sr-only {
282
+ border: 0;
283
+ clip-path: inset(50%);
284
+ height: 1px;
285
+ margin: -1px;
286
+ overflow: hidden;
287
+ padding: 0;
288
+ position: absolute;
289
+ white-space: nowrap;
290
+ width: 1px;
291
+ }
292
+
293
+ // -----------------------------------------------------------------------------
294
+ // RTL overrides
295
+ // -----------------------------------------------------------------------------
296
+ [dir="rtl"] {
297
+ .mg-form-select {
298
+ background-position: left 0.625rem center;
299
+ padding-left: $mg-spacing-200;
300
+ padding-right: 0.625rem;
301
+ }
302
+
303
+ .mg-form-input[type="date"]::-webkit-calendar-picker-indicator {
304
+ left: inherit;
305
+ position: absolute;
306
+ right: 27px;
307
+ }
308
+
309
+ .mg-form-input[type="date"]::-webkit-date-and-time-value {
310
+ margin-right: 0;
311
+ text-align: right;
312
+ }
313
+ }
314
+
315
+ // -----------------------------------------------------------------------------
316
+ // Arabic font override
317
+ // -----------------------------------------------------------------------------
318
+ :lang(ar) {
319
+ .mg-form-input,
320
+ .mg-form-textarea,
321
+ .mg-form-select {
322
+ font-family: $mg-font-family-arabic-body;
323
+ }
324
+ }
@@ -0,0 +1,153 @@
1
+ // DEPRECATED — February 2026
2
+ // These bare element selectors are provided for backward compatibility only.
3
+ // Migrate to BEM classes (.mg-form-input, .mg-form-label, etc.) from _form-base.scss.
4
+ // Scheduled for removal: August 2026.
5
+ @warn "_form-legacy.scss is deprecated. Migrate to BEM classes from _form-base.scss. Removal: August 2026.";
6
+
7
+ label {
8
+ @extend %paragraph-font-300;
9
+
10
+ display: block;
11
+
12
+ &.error {
13
+ @extend %paragraph-font-300;
14
+
15
+ color: $mg-color-black;
16
+ margin-top: 0;
17
+ }
18
+
19
+ &.disabled {
20
+ color: $mg-color-neutral-400;
21
+ }
22
+ }
23
+
24
+ .help {
25
+ color: $mg-color-neutral-500;
26
+ display: block;
27
+ font-size: $mg-font-size-200;
28
+ margin-bottom: 0;
29
+ margin-top: $mg-spacing-25;
30
+ }
31
+
32
+ .error {
33
+ color: $mg-color-red-900;
34
+ font-size: $mg-font-size-300;
35
+ margin-bottom: 0;
36
+ margin-top: $mg-spacing-25;
37
+ }
38
+
39
+ input[type="text"],
40
+ input[type="number"],
41
+ input[type="email"],
42
+ input[type="password"],
43
+ input[type="search"],
44
+ input[type="tel"],
45
+ input[type="date"],
46
+ textarea {
47
+ @extend %background-white;
48
+
49
+ appearance: none;
50
+ border: 2px solid $mg-color-black;
51
+ border-radius: 0;
52
+ box-sizing: border-box;
53
+ display: block;
54
+ font-family: $mg-font-family;
55
+ font-size: $mg-font-size-300;
56
+ height: 46px;
57
+ margin-top: $mg-spacing-25;
58
+ padding: 0.625rem;
59
+ width: 100%;
60
+
61
+ &::placeholder {
62
+ color: $mg-color-neutral-500;
63
+ }
64
+
65
+ &:focus {
66
+ box-shadow: 0 0 4px $mg-color-blue-800;
67
+ outline: 0;
68
+ }
69
+
70
+ input[type="date"],
71
+ input[type="search"] {
72
+ position: relative;
73
+ }
74
+
75
+ &.disabled {
76
+ background-color: $mg-color-white;
77
+ border: 2px solid $mg-color-neutral-400;
78
+ color: $mg-color-neutral-400;
79
+
80
+ &::placeholder {
81
+ color: $mg-color-neutral-400;
82
+ }
83
+ }
84
+
85
+ &.error {
86
+ border: 2px solid $mg-color-red-900;
87
+ }
88
+ }
89
+
90
+ input[type="date"] {
91
+ background-color: $mg-color-white;
92
+ color: $mg-color-neutral-500;
93
+ }
94
+
95
+ .help {
96
+ &.disabled {
97
+ color: $mg-color-neutral-400;
98
+ }
99
+ }
100
+
101
+ textarea {
102
+ height: auto;
103
+ max-width: 100%;
104
+ resize: vertical;
105
+ }
106
+
107
+ input[type="date"]::-webkit-calendar-picker-indicator {
108
+ appearance: none;
109
+ left: 3px;
110
+ opacity: 0;
111
+ position: absolute;
112
+ }
113
+
114
+ [dir="rtl"] {
115
+ input[type="text"],
116
+ input[type="number"],
117
+ input[type="email"],
118
+ input[type="password"],
119
+ input[type="search"],
120
+ input[type="tel"],
121
+ input[type="date"],
122
+ textarea {
123
+ @media (hover: none) and (pointer: coarse) {
124
+ input[type="date"] {
125
+ padding-right: $mg-spacing-100;
126
+ }
127
+ }
128
+ }
129
+
130
+ input[type="date"]::-webkit-calendar-picker-indicator {
131
+ left: inherit;
132
+ position: absolute;
133
+ right: 27px;
134
+ }
135
+
136
+ input::-webkit-date-and-time-value {
137
+ margin-right: 0;
138
+ text-align: right;
139
+ }
140
+ }
141
+
142
+ :lang(ar) {
143
+ input[type="text"],
144
+ input[type="number"],
145
+ input[type="email"],
146
+ input[type="password"],
147
+ input[type="search"],
148
+ input[type="tel"],
149
+ input[type="date"],
150
+ textarea {
151
+ font-family: $mg-font-family-arabic-body;
152
+ }
153
+ }
@@ -69,7 +69,7 @@
69
69
 
70
70
  &__label {
71
71
  display: inline-block;
72
- font-size: $mg-font-label;
72
+ font-size: $mg-font-tag;
73
73
  font-weight: bold;
74
74
  margin-right: $mg-spacing-25;
75
75
  padding: $mg-spacing-25 0;
@@ -12,16 +12,7 @@
12
12
  width: 100%;
13
13
  border: 1px solid rgb(0 0 0 / 0.3);
14
14
 
15
- // Responsive embed for iframes inside highlight-box
16
- &:has(iframe) {
17
- position: relative;
18
- max-width: 100%;
19
- aspect-ratio: 16 / 9;
20
- height: 100%;
21
- }
22
15
  iframe {
23
- width: 100%;
24
- height: 100%;
25
16
  border: 0;
26
17
  display: block;
27
18
  max-width: 100%;
@@ -338,7 +338,7 @@
338
338
  li {
339
339
  animation: mg-mega-item-slide-in 250ms ease-out both;
340
340
 
341
- @for $i from 1 through 12 {
341
+ @for $i from 1 through 25 {
342
342
  &:nth-child(#{$i}) {
343
343
  animation-delay: #{($i - 1) * 30}ms;
344
344
  }
@@ -130,7 +130,7 @@
130
130
 
131
131
  .mg-page-header__label {
132
132
  display: inline-block;
133
- font-size: $mg-font-label;
133
+ font-size: $mg-font-tag;
134
134
  font-weight: bold;
135
135
  margin-right: $mg-spacing-25;
136
136
  padding: $mg-spacing-25 0;
@@ -689,10 +689,22 @@ $search-input-padding-x: $mg-spacing-250;
689
689
  // Result teaser HTML overrides
690
690
  // ========================================
691
691
 
692
+ // Type badge and site name badges injected before the title in teaser results
693
+ .mg-search__result-badges {
694
+ display: inline-flex;
695
+ flex-wrap: wrap;
696
+ align-items: center;
697
+ gap: $mg-spacing-50;
698
+ margin-bottom: $mg-spacing-25;
699
+ }
700
+
701
+ // Content type badge — uses the system-level .mg-tag atom.
702
+ // No additional styles needed; the class is applied in ResultItem.jsx.
703
+
692
704
  // Site name label in search results
693
705
  .mg-search__result-site-name {
694
706
  display: inline-block;
695
- margin: 0 0 $mg-spacing-25;
707
+ margin: 0;
696
708
  padding: $mg-spacing-25 $mg-spacing-50;
697
709
  font-size: $mg-font-size-200;
698
710
  color: $search-text-muted;
@@ -719,6 +731,42 @@ $search-input-padding-x: $mg-spacing-250;
719
731
  }
720
732
  }
721
733
 
734
+ // ========================================
735
+ // Teaser Field Visibility
736
+ // ========================================
737
+ // Modifier classes on the results container hide specific teaser fields
738
+ // via the visibleTeaserFields config option.
739
+ // Title (.mg-card__title) is intentionally not toggleable.
740
+ // Teaser HTML uses standard mg-card__* BEM wrapper classes added by
741
+ // Drupal teaser templates (see web-backlog#2660).
742
+
743
+ .mg-search--hide-image .mg-card__visual { display: none; }
744
+ .mg-search--hide-contentType .mg-card__tag { display: none; }
745
+ .mg-search--hide-publicationType .mg-card__publication-type { display: none; }
746
+ .mg-search--hide-date .mg-card__date { display: none; }
747
+ .mg-search--hide-siteName .mg-search__result-site-name { display: none; }
748
+ .mg-search--hide-summary .mg-card__description { display: none; }
749
+ .mg-search--hide-organization .mg-card__organization { display: none; }
750
+
751
+ // ========================================
752
+ // Card Display Mode (mg-grid layout)
753
+ // ========================================
754
+
755
+ .mg-search__results-grid {
756
+ gap: $mg-spacing-150;
757
+
758
+ // Card items within grid
759
+ > [role="listitem"] {
760
+ display: flex;
761
+ }
762
+
763
+ // Remove list-style dividers in grid/card mode
764
+ .mg-search__result {
765
+ padding-bottom: 0;
766
+ border-bottom: 0;
767
+ }
768
+ }
769
+
722
770
  // ========================================
723
771
  // Result Animations
724
772
  // Sequential fade-in and slide from left for search results.
@@ -0,0 +1,58 @@
1
+ // Responsive embed container
2
+ // Provides aspect-ratio wrapper for iframes, videos, and other embedded media.
3
+ // Default aspect ratio is 16:9. Use modifier classes for other ratios.
4
+ // Usage: <div class="mg-embed-container"><iframe ...></iframe></div>
5
+
6
+ .mg-embed-container {
7
+ position: relative;
8
+ width: 100%;
9
+ padding-bottom: 56.25%; // 16:9 fallback for older browsers
10
+ height: 0;
11
+ overflow: hidden;
12
+
13
+ @supports (aspect-ratio: 16 / 9) {
14
+ aspect-ratio: 16 / 9;
15
+ padding-bottom: 0;
16
+ height: auto;
17
+ }
18
+
19
+ iframe,
20
+ object,
21
+ embed,
22
+ video {
23
+ position: absolute;
24
+ top: 0;
25
+ left: 0;
26
+ width: 100%;
27
+ height: 100%;
28
+ border: 0;
29
+ }
30
+ }
31
+
32
+ // Aspect ratio variants (mg-embed-container only)
33
+ .mg-embed-container--4x3 {
34
+ padding-bottom: 75%; // 4:3 fallback
35
+
36
+ @supports (aspect-ratio: 4 / 3) {
37
+ aspect-ratio: 4 / 3;
38
+ padding-bottom: 0;
39
+ }
40
+ }
41
+
42
+ .mg-embed-container--1x1 {
43
+ padding-bottom: 100%; // 1:1 fallback
44
+
45
+ @supports (aspect-ratio: 1 / 1) {
46
+ aspect-ratio: 1 / 1;
47
+ padding-bottom: 0;
48
+ }
49
+ }
50
+
51
+ .mg-embed-container--21x9 {
52
+ padding-bottom: 42.857%; // 21:9 fallback
53
+
54
+ @supports (aspect-ratio: 21 / 9) {
55
+ aspect-ratio: 21 / 9;
56
+ padding-bottom: 0;
57
+ }
58
+ }
@@ -6,26 +6,17 @@
6
6
  max-height: 200px;
7
7
  max-height: var(--mg-show-more-height);
8
8
  overflow: hidden;
9
- }
10
-
11
- .mg-show-more--collapsed {
12
9
  position: relative;
13
- margin-bottom: -1rem;
14
- }
15
- .mg-show-more--collapsed:before {
16
- content: "";
17
- cursor: s-resize;
18
- display: block;
19
- position: absolute;
20
- background-image: linear-gradient(
10
+ mask-image: linear-gradient(
11
+ to bottom,
12
+ black calc(var(--mg-show-more-height) - 80px),
13
+ transparent var(--mg-show-more-height)
14
+ );
15
+ -webkit-mask-image: linear-gradient(
21
16
  to bottom,
22
- rgb(255 255 255 / 0),
23
- rgb(255 255 255 / 1)
17
+ black calc(var(--mg-show-more-height) - 80px),
18
+ transparent var(--mg-show-more-height)
24
19
  );
25
- height: 200px;
26
- width: 100%;
27
- z-index: 1;
28
- margin-top: calc(var(--mg-show-more-height) - 200px);
29
20
  }
30
21
 
31
22
  .mg-show-more--button {