maverick-wave 4.28.0 → 5.0.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.
Files changed (138) hide show
  1. package/.claude/settings.local.json +29 -1
  2. package/.claude/skills/mw-maverick-wave/SKILL.md +39 -24
  3. package/.claude/skills/mw-maverick-wave/examples/angular-services.md +16 -4
  4. package/.claude/skills/mw-maverick-wave/examples/static-landing-page.md +13 -4
  5. package/.claude/skills/mw-maverick-wave/references/components.md +42 -5
  6. package/.claude/skills/mw-maverick-wave/references/forms.md +14 -2
  7. package/.claude/skills/mw-maverick-wave/references/javascript.md +17 -4
  8. package/.claude/skills/mw-maverick-wave/references/layout.md +53 -19
  9. package/.claude/skills/mw-maverick-wave/references/theming.md +38 -1
  10. package/.impeccable/config.local.json +5 -0
  11. package/.impeccable/hook.cache.json +1 -0
  12. package/CHANGELOG.md +11 -0
  13. package/CLAUDE.md +5 -5
  14. package/README.md +48 -4
  15. package/index.html +19 -38
  16. package/maverick-wave.min.css +14 -12
  17. package/maverick-wave.min.js +1 -1
  18. package/package.json +2 -2
  19. package/scripts/verify.js +27 -2
  20. package/src/js/main.js +223 -83
  21. package/src/partials/accordions-container.html +6 -10
  22. package/src/partials/alerts-container.html +6 -6
  23. package/src/partials/announcement-container.html +5 -5
  24. package/src/partials/avatars-container.html +85 -17
  25. package/src/partials/badges-container.html +6 -6
  26. package/src/partials/blog-posts-container.html +11 -12
  27. package/src/partials/buttons-container.html +3 -3
  28. package/src/partials/cards-container.html +26 -9
  29. package/src/partials/code-container.html +5 -5
  30. package/src/partials/content-slider-container.html +5 -4
  31. package/src/partials/divider-container.html +7 -7
  32. package/src/partials/dropdown-container.html +2 -2
  33. package/src/partials/empty-state-container.html +5 -5
  34. package/src/partials/footer-container.html +21 -18
  35. package/src/partials/form-elements-container.html +14 -14
  36. package/src/partials/gallery-container.html +16 -8
  37. package/src/partials/get-started-container.html +4 -8
  38. package/src/partials/header-container.html +18 -7
  39. package/src/partials/home-container.html +10 -20
  40. package/src/partials/input-group-container.html +11 -2
  41. package/src/partials/kbd-container.html +1 -1
  42. package/src/partials/login-container.html +5 -1
  43. package/src/partials/media-container.html +2 -2
  44. package/src/partials/modals-container.html +22 -32
  45. package/src/partials/pricing-container.html +9 -9
  46. package/src/partials/skeleton-container.html +6 -6
  47. package/src/partials/stepper-container.html +2 -2
  48. package/src/partials/tables-container.html +12 -12
  49. package/src/partials/tabs-container.html +17 -27
  50. package/src/partials/tags-container.html +23 -17
  51. package/src/partials/techstack-bucket-container.html +13 -0
  52. package/src/partials/tiles-container.html +26 -9
  53. package/src/partials/typography-container.html +7 -6
  54. package/src/partials/utilities-container.html +35 -15
  55. package/src/scss/_layers.scss +10 -0
  56. package/src/scss/abstracts/_index.scss +6 -0
  57. package/src/scss/abstracts/_mixins.scss +61 -153
  58. package/src/scss/abstracts/_variables.scss +123 -319
  59. package/src/scss/base/_base.scss +170 -190
  60. package/src/scss/base/_reset.scss +106 -104
  61. package/src/scss/base/_typography.scss +153 -151
  62. package/src/scss/components/_accordions.scss +97 -97
  63. package/src/scss/components/_alerts.scss +71 -70
  64. package/src/scss/components/_announcement.scss +71 -70
  65. package/src/scss/components/_avatars.scss +130 -142
  66. package/src/scss/components/_badge.scss +131 -132
  67. package/src/scss/components/_blog-post.scss +223 -220
  68. package/src/scss/components/_breadcrumbs.scss +93 -92
  69. package/src/scss/components/_button-bar.scss +102 -110
  70. package/src/scss/components/_buttons.scss +319 -324
  71. package/src/scss/components/_calendar.scss +251 -252
  72. package/src/scss/components/_cards.scss +359 -386
  73. package/src/scss/components/_code.scss +190 -194
  74. package/src/scss/components/_coming-soon.scss +77 -75
  75. package/src/scss/components/_content-slider.scss +90 -89
  76. package/src/scss/components/_divider.scss +55 -53
  77. package/src/scss/components/_dropdown.scss +179 -185
  78. package/src/scss/components/_empty-state.scss +57 -57
  79. package/src/scss/components/_flag.scss +294 -278
  80. package/src/scss/components/_gallery.scss +131 -133
  81. package/src/scss/components/_info.scss +151 -167
  82. package/src/scss/components/_kanban.scss +332 -341
  83. package/src/scss/components/_kbd.scss +40 -38
  84. package/src/scss/components/_lang-switch.scss +89 -97
  85. package/src/scss/components/_links.scss +21 -28
  86. package/src/scss/components/_lists.scss +510 -514
  87. package/src/scss/components/_localhost-indicator.scss +26 -24
  88. package/src/scss/components/_media.scss +22 -20
  89. package/src/scss/components/_meta-info.scss +35 -33
  90. package/src/scss/components/_modals.scss +277 -186
  91. package/src/scss/components/_pagination.scss +81 -87
  92. package/src/scss/components/_panels.scss +99 -97
  93. package/src/scss/components/_pricing.scss +183 -241
  94. package/src/scss/components/_progress.scss +112 -89
  95. package/src/scss/components/_prose.scss +35 -33
  96. package/src/scss/components/_ratings.scss +40 -38
  97. package/src/scss/components/_segmented.scss +82 -84
  98. package/src/scss/components/_skeleton.scss +66 -72
  99. package/src/scss/components/_spinners.scss +155 -159
  100. package/src/scss/components/_stepper.scss +116 -116
  101. package/src/scss/components/_tables.scss +155 -148
  102. package/src/scss/components/_tabs.scss +232 -141
  103. package/src/scss/components/_tags.scss +109 -107
  104. package/src/scss/components/_techstack-bucket.scss +123 -122
  105. package/src/scss/components/_testimonial.scss +72 -70
  106. package/src/scss/components/_theme-toggle.scss +53 -51
  107. package/src/scss/components/_tiles.scss +174 -174
  108. package/src/scss/components/_timelines.scss +282 -280
  109. package/src/scss/components/_toasts.scss +66 -72
  110. package/src/scss/form-elements/_checkbox.scss +117 -132
  111. package/src/scss/form-elements/_form.scss +149 -115
  112. package/src/scss/form-elements/_input-group.scss +99 -103
  113. package/src/scss/form-elements/_input.scss +74 -74
  114. package/src/scss/form-elements/_login.scss +48 -48
  115. package/src/scss/form-elements/_prefilled.scss +53 -51
  116. package/src/scss/form-elements/_radio.scss +95 -107
  117. package/src/scss/form-elements/_select.scss +42 -42
  118. package/src/scss/form-elements/_slider.scss +117 -132
  119. package/src/scss/form-elements/_textarea.scss +68 -54
  120. package/src/scss/form-elements/_toggle.scss +127 -140
  121. package/src/scss/layout/_footer.scss +172 -171
  122. package/src/scss/layout/_grid.scss +268 -302
  123. package/src/scss/layout/_header.scss +426 -427
  124. package/src/scss/layout/_home.scss +28 -27
  125. package/src/scss/layout/_main.scss +275 -238
  126. package/src/scss/layout/_page-header.scss +38 -36
  127. package/src/scss/layout/_section.scss +150 -124
  128. package/src/scss/main.scss +1 -1
  129. package/src/scss/utilities/_accessibility.scss +46 -45
  130. package/src/scss/utilities/_aspect.scss +22 -20
  131. package/src/scss/utilities/_corner.scss +23 -5
  132. package/src/scss/utilities/_display.scss +76 -70
  133. package/src/scss/utilities/_elevation.scss +13 -11
  134. package/src/scss/utilities/_flex.scss +83 -85
  135. package/src/scss/utilities/_reveal.scss +40 -63
  136. package/src/scss/utilities/_spacing.scss +63 -64
  137. package/src/scss/utilities/_text.scss +139 -141
  138. package/src/scss/utilities/_touch-targets.scss +130 -147
@@ -1,177 +1,164 @@
1
+ @use 'sass:map';
1
2
  @use '../abstracts' as *;
2
3
 
3
- $_mw-toggle-colors: (
4
- primary: var(--mw-primary-color),
5
- secondary: var(--mw-secondary-color),
6
- success: var(--mw-success-color),
7
- warning: var(--mw-warning-color),
8
- danger: var(--mw-danger-color),
9
- );
10
-
11
- // Track dimensions
12
- $_track-w: 42px;
13
- $_track-h: 22px;
14
- $_knob-size: 16px;
15
- $_knob-offset: 3px;
16
- $_knob-travel: calc(#{$_track-w} - #{$_knob-size} - #{$_knob-offset * 2});
17
-
18
- $_track-w-sm: 34px;
19
- $_track-h-sm: 18px;
20
- $_knob-size-sm: 12px;
21
- $_knob-travel-sm: calc(
22
- #{$_track-w-sm} - #{$_knob-size-sm} - #{$_knob-offset * 2}
23
- );
24
-
25
- $_track-w-lg: 56px;
26
- $_track-h-lg: 30px;
27
- $_knob-size-lg: 22px;
28
- $_knob-offset-lg: 4px;
29
- $_knob-travel-lg: calc(
30
- #{$_track-w-lg} - #{$_knob-size-lg} - #{$_knob-offset-lg * 2}
31
- );
32
-
33
- .mw-toggle {
34
- display: inline-flex;
35
- align-items: center;
36
- gap: spacing('2');
37
- min-height: 1.5rem;
38
- cursor: pointer;
39
- user-select: none;
40
- position: relative;
41
-
42
- // Hide native checkbox
43
- input[type='checkbox'] {
44
- position: absolute;
45
- opacity: 0;
46
- width: 0;
47
- height: 0;
48
- margin: spacing('0');
49
- }
50
-
51
- // The switch track
52
- .mw-toggle-track {
53
- --toggle-fill: var(--mw-primary-color);
54
-
4
+ @layer mw.forms {
5
+ $_track-w: 42px;
6
+ $_track-h: 22px;
7
+ $_knob-size: 16px;
8
+ $_knob-offset: 3px;
9
+ $_knob-travel: calc(#{$_track-w} - #{$_knob-size} - #{$_knob-offset * 2});
10
+
11
+ $_track-w-sm: 34px;
12
+ $_track-h-sm: 18px;
13
+ $_knob-size-sm: 12px;
14
+ $_knob-travel-sm: calc(
15
+ #{$_track-w-sm} - #{$_knob-size-sm} - #{$_knob-offset * 2}
16
+ );
17
+
18
+ $_track-w-lg: 56px;
19
+ $_track-h-lg: 30px;
20
+ $_knob-size-lg: 22px;
21
+ $_knob-offset-lg: 4px;
22
+ $_knob-travel-lg: calc(
23
+ #{$_track-w-lg} - #{$_knob-size-lg} - #{$_knob-offset-lg * 2}
24
+ );
25
+
26
+ .mw-toggle {
27
+ display: inline-flex;
28
+ align-items: center;
29
+ gap: spacing('2');
30
+ min-height: 1.5rem;
31
+ cursor: pointer;
32
+ user-select: none;
55
33
  position: relative;
56
- width: $_track-w;
57
- height: $_track-h;
58
- background: var(--mw-border);
59
- border-radius: radius('lg');
60
- transition:
61
- background var(--mw-duration-base) var(--mw-ease-out),
62
- box-shadow var(--mw-duration-base) var(--mw-ease-out);
63
- flex-shrink: 0;
64
-
65
- // The sliding knob
66
- &::after {
67
- content: '';
34
+
35
+ input[type='checkbox'] {
68
36
  position: absolute;
69
- top: $_knob-offset;
70
- left: $_knob-offset;
71
- width: $_knob-size;
72
- height: $_knob-size;
73
- // The shared token, not a per-color one: the knob has to read on the
74
- // fill *and* on the empty track, so it cannot follow the fill color
75
- background: var(--mw-accent-text-color);
76
- border-radius: radius('full');
77
- transition: transform var(--mw-duration-base) var(--mw-ease-out);
78
- box-shadow: var(--mw-elevation-1);
37
+ opacity: 0;
38
+ width: 0;
39
+ height: 0;
40
+ margin: spacing('0');
79
41
  }
80
- }
81
42
 
82
- input[type='checkbox']:checked + .mw-toggle-track {
83
- background: var(--toggle-fill);
43
+ .mw-toggle-track {
44
+ --toggle-fill: var(--mw-primary-color);
45
+
46
+ position: relative;
47
+ width: $_track-w;
48
+ height: $_track-h;
49
+ background: var(--mw-border);
50
+ border-radius: radius('lg');
51
+ transition:
52
+ background var(--mw-duration-base) var(--mw-ease-out),
53
+ box-shadow var(--mw-duration-base) var(--mw-ease-out);
54
+ flex-shrink: 0;
84
55
 
85
- &::after {
86
- transform: translateX($_knob-travel);
56
+ &::after {
57
+ content: '';
58
+ position: absolute;
59
+ top: $_knob-offset;
60
+ left: $_knob-offset;
61
+ width: $_knob-size;
62
+ height: $_knob-size;
63
+ // The shared token, not a per-color one: the knob has to read on the
64
+ // fill *and* on the empty track, so it cannot follow the fill color
65
+ background: var(--mw-accent-text-color);
66
+ border-radius: radius('full');
67
+ transition: transform var(--mw-duration-base) var(--mw-ease-out);
68
+ box-shadow: var(--mw-elevation-1);
69
+ }
87
70
  }
88
- }
89
71
 
90
- input[type='checkbox']:focus-visible + .mw-toggle-track {
91
- @include focus-halo;
92
- }
93
-
94
- .mw-toggle-label {
95
- font-size: font-size('base');
96
- color: var(--mw-text-color);
97
- line-height: 1.3;
98
- }
99
-
100
- // Size variants
101
- &-sm {
102
- .mw-toggle-track {
103
- width: $_track-w-sm;
104
- height: $_track-h-sm;
72
+ input[type='checkbox']:checked + .mw-toggle-track {
73
+ background: var(--toggle-fill);
105
74
 
106
75
  &::after {
107
- width: $_knob-size-sm;
108
- height: $_knob-size-sm;
76
+ transform: translateX($_knob-travel);
109
77
  }
110
78
  }
111
79
 
112
- input[type='checkbox']:checked + .mw-toggle-track::after {
113
- transform: translateX($_knob-travel-sm);
80
+ input[type='checkbox']:focus-visible + .mw-toggle-track {
81
+ @include focus-halo;
114
82
  }
115
83
 
116
84
  .mw-toggle-label {
117
- font-size: font-size('sm');
85
+ font-size: font-size('base');
86
+ color: var(--mw-text-color);
87
+ line-height: 1.3;
118
88
  }
119
- }
120
89
 
121
- &-lg {
122
- .mw-toggle-track {
123
- width: $_track-w-lg;
124
- height: $_track-h-lg;
90
+ &-sm {
91
+ .mw-toggle-track {
92
+ width: $_track-w-sm;
93
+ height: $_track-h-sm;
125
94
 
126
- &::after {
127
- top: $_knob-offset-lg;
128
- left: $_knob-offset-lg;
129
- width: $_knob-size-lg;
130
- height: $_knob-size-lg;
95
+ &::after {
96
+ width: $_knob-size-sm;
97
+ height: $_knob-size-sm;
98
+ }
131
99
  }
132
- }
133
100
 
134
- input[type='checkbox']:checked + .mw-toggle-track::after {
135
- transform: translateX($_knob-travel-lg);
136
- }
101
+ input[type='checkbox']:checked + .mw-toggle-track::after {
102
+ transform: translateX($_knob-travel-sm);
103
+ }
137
104
 
138
- .mw-toggle-label {
139
- font-size: font-size('md');
105
+ .mw-toggle-label {
106
+ font-size: font-size('sm');
107
+ }
140
108
  }
141
- }
142
109
 
143
- // Color variants
144
- @each $name, $col in $_mw-toggle-colors {
145
- &-#{$name} .mw-toggle-track {
146
- --toggle-fill: #{$col};
110
+ &-lg {
111
+ .mw-toggle-track {
112
+ width: $_track-w-lg;
113
+ height: $_track-h-lg;
114
+
115
+ &::after {
116
+ top: $_knob-offset-lg;
117
+ left: $_knob-offset-lg;
118
+ width: $_knob-size-lg;
119
+ height: $_knob-size-lg;
120
+ }
121
+ }
122
+
123
+ input[type='checkbox']:checked + .mw-toggle-track::after {
124
+ transform: translateX($_knob-travel-lg);
125
+ }
126
+
127
+ .mw-toggle-label {
128
+ font-size: font-size('md');
129
+ }
147
130
  }
148
- }
149
131
 
150
- // Disabled
151
- &-disabled {
152
- cursor: not-allowed;
153
- opacity: 0.45;
132
+ @each $name, $col in map.remove($semantic-colors, 'info') {
133
+ &-#{$name} .mw-toggle-track {
134
+ --toggle-fill: #{$col};
135
+ }
136
+ }
154
137
 
155
- input[type='checkbox'] {
138
+ &-disabled {
156
139
  cursor: not-allowed;
140
+ opacity: 0.45;
141
+
142
+ input[type='checkbox'] {
143
+ cursor: not-allowed;
144
+ }
157
145
  }
158
146
  }
159
- }
160
-
161
- // Group layout
162
- .mw-toggle-group {
163
- display: flex;
164
- flex-direction: column;
165
- gap: spacing('3');
166
147
 
167
- &-inline {
168
- flex-direction: row;
169
- flex-wrap: wrap;
170
- align-items: center;
171
- gap: spacing('2') spacing('6');
148
+ .mw-toggle-group {
149
+ display: flex;
150
+ flex-direction: column;
151
+ gap: spacing('3');
172
152
 
173
- @include media-down('sm') {
153
+ &-inline {
154
+ flex-direction: row;
155
+ flex-wrap: wrap;
156
+ align-items: center;
174
157
  gap: spacing('2') spacing('4');
158
+
159
+ @include media-up('sm') {
160
+ gap: spacing('2') spacing('6');
161
+ }
175
162
  }
176
163
  }
177
164
  }
@@ -1,220 +1,221 @@
1
1
  @use 'sass:map';
2
2
  @use '../abstracts' as *;
3
3
 
4
- .mw-footer {
5
- background: var(--mw-footer-background);
6
- padding: spacing('7') spacing('0');
7
- border-top: 1px solid var(--mw-border-accent);
8
-
9
- &-top {
10
- display: grid;
11
- grid-template-columns: repeat(4, 1fr);
12
- gap: spacing('6');
13
- margin-bottom: spacing('6');
14
-
15
- @include media-down('lg') {
16
- grid-template-columns: repeat(2, 1fr);
17
- }
4
+ @layer mw.layout {
5
+ .mw-footer {
6
+ background: var(--mw-footer-background);
7
+ padding: spacing('7') spacing('0');
8
+ border-top: 1px solid var(--mw-border-accent);
18
9
 
19
- @include media-down('sm') {
10
+ &-top {
11
+ display: grid;
20
12
  grid-template-columns: 1fr;
21
- }
22
- }
23
-
24
- &-column {
25
- h3 {
26
- font-size: font-size('lg');
27
- margin-bottom: spacing('4');
28
- color: var(--mw-primary-text-color);
29
- }
30
-
31
- p {
32
- color: var(--mw-text-muted-color);
33
- margin-bottom: spacing('3');
34
- }
35
-
36
- ul {
37
- padding: spacing('0');
38
- margin: spacing('0');
39
-
40
- li {
41
- margin-bottom: spacing('2');
42
-
43
- a {
44
- display: inline-block;
45
- position: relative;
46
- color: var(--mw-text-muted-color);
47
- text-decoration: none;
48
- padding-bottom: 2px;
49
-
50
- // subtle default underline via box‐shadow
51
- &::after {
52
- content: '';
53
- position: absolute;
54
- left: 0;
55
- bottom: 1px;
56
- width: 100%;
57
- height: 1px;
58
- background: currentColor;
59
- opacity: 0.4;
60
- transform: scaleX(1);
61
- transform-origin: left;
62
- transition:
63
- transform var(--mw-duration-fast) var(--mw-ease-out),
64
- opacity var(--mw-duration-fast) var(--mw-ease-out);
65
- }
13
+ gap: spacing('6');
14
+ margin-bottom: spacing('6');
66
15
 
67
- &:hover {
68
- color: var(--mw-primary-text-color);
69
-
70
- &::after {
71
- opacity: 1;
72
- height: 2px;
73
- transform: scaleX(1.1);
74
- }
75
- }
76
- }
16
+ @include media-up('sm') {
17
+ grid-template-columns: repeat(2, 1fr);
77
18
  }
78
- }
79
- }
80
19
 
81
- .mw-social-links {
82
- display: flex;
83
- flex-wrap: wrap;
84
- justify-content: center;
85
- align-items: center;
86
- column-gap: spacing('8');
87
- row-gap: spacing('4');
88
- margin: spacing('6') auto;
89
-
90
- // Modifier for more elements
91
- &.mod-wrap {
92
- width: 510px;
93
- max-width: 100%;
20
+ @include media-up('lg') {
21
+ grid-template-columns: repeat(4, 1fr);
22
+ }
94
23
  }
95
24
 
96
- a {
97
- position: relative;
98
- display: flex;
99
- align-items: center;
100
- justify-content: center;
101
- width: 48px;
102
- height: 48px;
103
- border-radius: radius('full');
104
- background: var(--mw-card-background);
105
- color: var(--mw-text-color);
106
- font-size: font-size('xl');
107
- transition: var(--mw-transition);
108
- border: 1px solid var(--mw-border-accent);
109
- box-shadow: var(--mw-elevation-3);
110
- text-decoration: none;
111
-
112
- &:hover {
113
- background: var(--mw-primary-color);
114
- color: var(--mw-primary-accent-text-color);
115
- border-color: var(--mw-primary-color);
25
+ &-column {
26
+ h3 {
27
+ font-size: font-size('lg');
28
+ margin-bottom: spacing('4');
29
+ color: var(--mw-primary-text-color);
116
30
  }
117
31
 
118
- @include hover {
119
- transform: translateY(-2px);
32
+ p {
33
+ color: var(--mw-text-muted-color);
34
+ margin-bottom: spacing('3');
120
35
  }
121
36
 
122
- &:active {
123
- transform: scale(0.92);
124
- transition-duration: var(--mw-duration-instant);
125
- }
126
- }
127
- }
37
+ ul {
38
+ padding: spacing('0');
39
+ margin: spacing('0');
128
40
 
129
- .mw-disclaimer {
130
- text-align: center;
131
- color: var(--mw-text-muted-color);
132
- font-size: font-size('sm');
133
- width: min(85%, 700px);
134
- margin: spacing('0') auto spacing('3') auto;
135
- line-height: 1.4;
136
- }
41
+ li {
42
+ margin-bottom: spacing('2');
137
43
 
138
- .mw-copyright {
139
- text-align: center;
140
- color: var(--mw-text-muted-color);
141
- font-size: font-size('sm');
142
- padding-top: spacing('4');
143
- margin: spacing('7') auto spacing('1') auto;
144
- width: 100%;
145
- border-top: 1px solid var(--mw-border-accent);
146
- }
44
+ a {
45
+ display: inline-block;
46
+ position: relative;
47
+ color: var(--mw-text-muted-color);
48
+ text-decoration: none;
49
+ padding-bottom: 2px;
147
50
 
148
- .mw-last-updated {
149
- text-align: center;
150
- color: var(--mw-text-muted-color);
151
- font-size: font-size('xs');
152
- padding-top: spacing('0');
153
- margin: spacing('1') auto;
154
- }
51
+ // subtle default underline via box‐shadow
52
+ &::after {
53
+ content: '';
54
+ position: absolute;
55
+ left: 0;
56
+ bottom: 1px;
57
+ width: 100%;
58
+ height: 1px;
59
+ background: currentColor;
60
+ opacity: 0.4;
61
+ transform: scaleX(1);
62
+ transform-origin: left;
63
+ transition:
64
+ transform var(--mw-duration-fast) var(--mw-ease-out),
65
+ opacity var(--mw-duration-fast) var(--mw-ease-out);
66
+ }
155
67
 
156
- @include media-down('lg') {
157
- .mw-social-links {
158
- &.mod-wrap {
159
- width: 420px;
68
+ &:hover {
69
+ color: var(--mw-primary-text-color);
70
+
71
+ &::after {
72
+ opacity: 1;
73
+ height: 2px;
74
+ transform: scaleX(1.1);
75
+ }
76
+ }
77
+ }
78
+ }
160
79
  }
161
80
  }
162
- }
163
81
 
164
- @include media-down('md') {
165
82
  .mw-social-links {
83
+ display: flex;
84
+ flex-wrap: wrap;
85
+ justify-content: center;
86
+ align-items: center;
166
87
  column-gap: spacing('6');
167
88
  row-gap: spacing('3');
89
+ margin: spacing('6') auto;
168
90
 
169
91
  &.mod-wrap {
170
92
  width: 330px;
93
+ max-width: 100%;
171
94
  }
172
95
 
173
96
  a {
97
+ position: relative;
98
+ display: flex;
99
+ align-items: center;
100
+ justify-content: center;
174
101
  width: 40px;
175
102
  height: 40px;
103
+ border-radius: radius('full');
104
+ background: var(--mw-card-background);
105
+ color: var(--mw-text-color);
176
106
  font-size: font-size('md');
177
- }
178
- }
179
- }
107
+ transition: var(--mw-transition);
108
+ border: 1px solid var(--mw-border-accent);
109
+ box-shadow: var(--mw-elevation-3);
110
+ text-decoration: none;
111
+
112
+ &:hover {
113
+ background: var(--mw-primary-color);
114
+ color: var(--mw-primary-accent-text-color);
115
+ border-color: var(--mw-primary-color);
116
+ }
180
117
 
181
- @include media-down('sm') {
182
- &-column {
183
- h3 {
184
- font-size: font-size('md');
185
- margin-bottom: spacing('3');
186
- }
118
+ @include hover {
119
+ transform: translateY(-2px);
120
+ }
187
121
 
188
- p {
189
- margin-bottom: spacing('2');
122
+ &:active {
123
+ transform: scale(0.92);
124
+ transition-duration: var(--mw-duration-instant);
125
+ }
190
126
  }
191
127
  }
192
128
 
193
- .mw-social-links {
194
- gap: spacing('3');
195
-
196
- &.mod-wrap {
197
- column-gap: spacing('6');
198
- row-gap: spacing('3');
199
- max-width: 100%;
200
- padding: spacing('0') spacing('4');
201
- }
129
+ .mw-disclaimer {
130
+ text-align: center;
131
+ color: var(--mw-text-muted-color);
132
+ font-size: font-size('sm');
133
+ width: min(85%, 700px);
134
+ margin: spacing('0') auto spacing('3') auto;
135
+ line-height: 1.4;
202
136
  }
203
137
 
204
- // A second 15% inset inside a container that already keeps a gutter only
205
- // narrows the line to no purpose
206
- .mw-disclaimer {
138
+ .mw-copyright {
139
+ text-align: center;
140
+ color: var(--mw-text-muted-color);
141
+ font-size: font-size('sm');
142
+ padding-top: spacing('4');
143
+ margin: spacing('7') auto spacing('1') auto;
207
144
  width: 100%;
208
- font-size: font-size('xs');
145
+ border-top: 1px solid var(--mw-border-accent);
209
146
  }
210
147
 
211
- .mw-copyright {
212
- margin-top: spacing('5');
148
+ .mw-last-updated {
149
+ text-align: center;
150
+ color: var(--mw-text-muted-color);
213
151
  font-size: font-size('xs');
152
+ padding-top: spacing('0');
153
+ margin: spacing('1') auto;
214
154
  }
215
155
 
216
- .mw-last-updated {
217
- font-size: font-size('2xs');
156
+ @include media-up('md') {
157
+ .mw-social-links {
158
+ column-gap: spacing('8');
159
+ row-gap: spacing('4');
160
+
161
+ &.mod-wrap {
162
+ width: 420px;
163
+ }
164
+
165
+ a {
166
+ width: 48px;
167
+ height: 48px;
168
+ font-size: font-size('xl');
169
+ }
170
+ }
171
+ }
172
+
173
+ @include media-up('lg') {
174
+ .mw-social-links {
175
+ &.mod-wrap {
176
+ width: 510px;
177
+ }
178
+ }
179
+ }
180
+
181
+ @include media-down('sm') {
182
+ &-column {
183
+ h3 {
184
+ font-size: font-size('md');
185
+ margin-bottom: spacing('3');
186
+ }
187
+
188
+ p {
189
+ margin-bottom: spacing('2');
190
+ }
191
+ }
192
+
193
+ .mw-social-links {
194
+ gap: spacing('3');
195
+
196
+ &.mod-wrap {
197
+ column-gap: spacing('6');
198
+ row-gap: spacing('3');
199
+ max-width: 100%;
200
+ padding: spacing('0') spacing('4');
201
+ }
202
+ }
203
+
204
+ // A second 15% inset inside a container that already keeps a gutter only
205
+ // narrows the line to no purpose
206
+ .mw-disclaimer {
207
+ width: 100%;
208
+ font-size: font-size('xs');
209
+ }
210
+
211
+ .mw-copyright {
212
+ margin-top: spacing('5');
213
+ font-size: font-size('xs');
214
+ }
215
+
216
+ .mw-last-updated {
217
+ font-size: font-size('2xs');
218
+ }
218
219
  }
219
220
  }
220
221
  }