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.
- package/.claude/settings.local.json +29 -1
- package/.claude/skills/mw-maverick-wave/SKILL.md +39 -24
- package/.claude/skills/mw-maverick-wave/examples/angular-services.md +16 -4
- package/.claude/skills/mw-maverick-wave/examples/static-landing-page.md +13 -4
- package/.claude/skills/mw-maverick-wave/references/components.md +42 -5
- package/.claude/skills/mw-maverick-wave/references/forms.md +14 -2
- package/.claude/skills/mw-maverick-wave/references/javascript.md +17 -4
- package/.claude/skills/mw-maverick-wave/references/layout.md +53 -19
- package/.claude/skills/mw-maverick-wave/references/theming.md +38 -1
- package/.impeccable/config.local.json +5 -0
- package/.impeccable/hook.cache.json +1 -0
- package/CHANGELOG.md +11 -0
- package/CLAUDE.md +5 -5
- package/README.md +48 -4
- package/index.html +19 -38
- package/maverick-wave.min.css +14 -12
- package/maverick-wave.min.js +1 -1
- package/package.json +2 -2
- package/scripts/verify.js +27 -2
- package/src/js/main.js +223 -83
- package/src/partials/accordions-container.html +6 -10
- package/src/partials/alerts-container.html +6 -6
- package/src/partials/announcement-container.html +5 -5
- package/src/partials/avatars-container.html +85 -17
- package/src/partials/badges-container.html +6 -6
- package/src/partials/blog-posts-container.html +11 -12
- package/src/partials/buttons-container.html +3 -3
- package/src/partials/cards-container.html +26 -9
- package/src/partials/code-container.html +5 -5
- package/src/partials/content-slider-container.html +5 -4
- package/src/partials/divider-container.html +7 -7
- package/src/partials/dropdown-container.html +2 -2
- package/src/partials/empty-state-container.html +5 -5
- package/src/partials/footer-container.html +21 -18
- package/src/partials/form-elements-container.html +14 -14
- package/src/partials/gallery-container.html +16 -8
- package/src/partials/get-started-container.html +4 -8
- package/src/partials/header-container.html +18 -7
- package/src/partials/home-container.html +10 -20
- package/src/partials/input-group-container.html +11 -2
- package/src/partials/kbd-container.html +1 -1
- package/src/partials/login-container.html +5 -1
- package/src/partials/media-container.html +2 -2
- package/src/partials/modals-container.html +22 -32
- package/src/partials/pricing-container.html +9 -9
- package/src/partials/skeleton-container.html +6 -6
- package/src/partials/stepper-container.html +2 -2
- package/src/partials/tables-container.html +12 -12
- package/src/partials/tabs-container.html +17 -27
- package/src/partials/tags-container.html +23 -17
- package/src/partials/techstack-bucket-container.html +13 -0
- package/src/partials/tiles-container.html +26 -9
- package/src/partials/typography-container.html +7 -6
- package/src/partials/utilities-container.html +35 -15
- package/src/scss/_layers.scss +10 -0
- package/src/scss/abstracts/_index.scss +6 -0
- package/src/scss/abstracts/_mixins.scss +61 -153
- package/src/scss/abstracts/_variables.scss +123 -319
- package/src/scss/base/_base.scss +170 -190
- package/src/scss/base/_reset.scss +106 -104
- package/src/scss/base/_typography.scss +153 -151
- package/src/scss/components/_accordions.scss +97 -97
- package/src/scss/components/_alerts.scss +71 -70
- package/src/scss/components/_announcement.scss +71 -70
- package/src/scss/components/_avatars.scss +130 -142
- package/src/scss/components/_badge.scss +131 -132
- package/src/scss/components/_blog-post.scss +223 -220
- package/src/scss/components/_breadcrumbs.scss +93 -92
- package/src/scss/components/_button-bar.scss +102 -110
- package/src/scss/components/_buttons.scss +319 -324
- package/src/scss/components/_calendar.scss +251 -252
- package/src/scss/components/_cards.scss +359 -386
- package/src/scss/components/_code.scss +190 -194
- package/src/scss/components/_coming-soon.scss +77 -75
- package/src/scss/components/_content-slider.scss +90 -89
- package/src/scss/components/_divider.scss +55 -53
- package/src/scss/components/_dropdown.scss +179 -185
- package/src/scss/components/_empty-state.scss +57 -57
- package/src/scss/components/_flag.scss +294 -278
- package/src/scss/components/_gallery.scss +131 -133
- package/src/scss/components/_info.scss +151 -167
- package/src/scss/components/_kanban.scss +332 -341
- package/src/scss/components/_kbd.scss +40 -38
- package/src/scss/components/_lang-switch.scss +89 -97
- package/src/scss/components/_links.scss +21 -28
- package/src/scss/components/_lists.scss +510 -514
- package/src/scss/components/_localhost-indicator.scss +26 -24
- package/src/scss/components/_media.scss +22 -20
- package/src/scss/components/_meta-info.scss +35 -33
- package/src/scss/components/_modals.scss +277 -186
- package/src/scss/components/_pagination.scss +81 -87
- package/src/scss/components/_panels.scss +99 -97
- package/src/scss/components/_pricing.scss +183 -241
- package/src/scss/components/_progress.scss +112 -89
- package/src/scss/components/_prose.scss +35 -33
- package/src/scss/components/_ratings.scss +40 -38
- package/src/scss/components/_segmented.scss +82 -84
- package/src/scss/components/_skeleton.scss +66 -72
- package/src/scss/components/_spinners.scss +155 -159
- package/src/scss/components/_stepper.scss +116 -116
- package/src/scss/components/_tables.scss +155 -148
- package/src/scss/components/_tabs.scss +232 -141
- package/src/scss/components/_tags.scss +109 -107
- package/src/scss/components/_techstack-bucket.scss +123 -122
- package/src/scss/components/_testimonial.scss +72 -70
- package/src/scss/components/_theme-toggle.scss +53 -51
- package/src/scss/components/_tiles.scss +174 -174
- package/src/scss/components/_timelines.scss +282 -280
- package/src/scss/components/_toasts.scss +66 -72
- package/src/scss/form-elements/_checkbox.scss +117 -132
- package/src/scss/form-elements/_form.scss +149 -115
- package/src/scss/form-elements/_input-group.scss +99 -103
- package/src/scss/form-elements/_input.scss +74 -74
- package/src/scss/form-elements/_login.scss +48 -48
- package/src/scss/form-elements/_prefilled.scss +53 -51
- package/src/scss/form-elements/_radio.scss +95 -107
- package/src/scss/form-elements/_select.scss +42 -42
- package/src/scss/form-elements/_slider.scss +117 -132
- package/src/scss/form-elements/_textarea.scss +68 -54
- package/src/scss/form-elements/_toggle.scss +127 -140
- package/src/scss/layout/_footer.scss +172 -171
- package/src/scss/layout/_grid.scss +268 -302
- package/src/scss/layout/_header.scss +426 -427
- package/src/scss/layout/_home.scss +28 -27
- package/src/scss/layout/_main.scss +275 -238
- package/src/scss/layout/_page-header.scss +38 -36
- package/src/scss/layout/_section.scss +150 -124
- package/src/scss/main.scss +1 -1
- package/src/scss/utilities/_accessibility.scss +46 -45
- package/src/scss/utilities/_aspect.scss +22 -20
- package/src/scss/utilities/_corner.scss +23 -5
- package/src/scss/utilities/_display.scss +76 -70
- package/src/scss/utilities/_elevation.scss +13 -11
- package/src/scss/utilities/_flex.scss +83 -85
- package/src/scss/utilities/_reveal.scss +40 -63
- package/src/scss/utilities/_spacing.scss +63 -64
- package/src/scss/utilities/_text.scss +139 -141
- package/src/scss/utilities/_touch-targets.scss +130 -147
package/src/scss/base/_base.scss
CHANGED
|
@@ -1,213 +1,193 @@
|
|
|
1
1
|
@use '../abstracts' as *;
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
$_active-
|
|
3
|
+
@layer mw.base {
|
|
4
|
+
// Active theme set and its token prefix, derived from $mw-theme-mode
|
|
5
|
+
$_active-theme: $dark-theme-colors;
|
|
6
|
+
$_active-prefix: 'dark';
|
|
6
7
|
|
|
7
|
-
@if $mw-theme-mode == 'light' {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
// CSS Variables for theming and overriding
|
|
13
|
-
:root {
|
|
14
|
-
// Brand and neutral colors
|
|
15
|
-
@each $name, $value in $base-colors {
|
|
16
|
-
--mw-#{$name}: #{$value};
|
|
8
|
+
@if $mw-theme-mode == 'light' {
|
|
9
|
+
$_active-theme: $light-theme-colors;
|
|
10
|
+
$_active-prefix: 'light';
|
|
17
11
|
}
|
|
18
12
|
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
13
|
+
// CSS Variables for theming and overriding
|
|
14
|
+
:root {
|
|
15
|
+
// Brand and neutral colors
|
|
16
|
+
@each $name, $value in $base-colors {
|
|
17
|
+
--mw-#{$name}: #{$value};
|
|
18
|
+
}
|
|
23
19
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
// Status colors
|
|
21
|
+
@each $name, $value in $status-colors {
|
|
22
|
+
--mw-#{$name}: #{$value};
|
|
23
|
+
}
|
|
28
24
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
// Header/navbar colors (fixed across themes, but overridable on their own)
|
|
26
|
+
@each $name, $value in $header-colors {
|
|
27
|
+
--mw-header-#{$name}: #{$value};
|
|
28
|
+
}
|
|
33
29
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
// Dark theme colors
|
|
31
|
+
@each $name, $value in $dark-theme-colors {
|
|
32
|
+
--mw-dark-#{$name}: #{$value};
|
|
33
|
+
}
|
|
38
34
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
color
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
);
|
|
128
|
-
--mw-container-width: min(
|
|
129
|
-
1200px,
|
|
130
|
-
calc(100% - 2 * var(--mw-container-gutter))
|
|
131
|
-
);
|
|
132
|
-
--mw-section-padding-block: #{spacing('10')};
|
|
133
|
-
--mw-section-title-gap: #{spacing('7')};
|
|
134
|
-
--mw-scroll-hint-offset: #{spacing('9')};
|
|
135
|
-
--mw-scroll-hint-inline: var(--mw-container-gutter);
|
|
136
|
-
--mw-scroll-hint-reserve: #{spacing('10')};
|
|
137
|
-
|
|
138
|
-
// Active theme - aliases onto the dark or light set above
|
|
139
|
-
@each $name, $value in $_active-theme {
|
|
140
|
-
--mw-#{$name}: var(--mw-#{$_active-prefix}-#{$name});
|
|
35
|
+
// Light theme colors
|
|
36
|
+
@each $name, $value in $light-theme-colors {
|
|
37
|
+
--mw-light-#{$name}: #{$value};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// The scale lives in the variables file - these are the runtime knobs
|
|
41
|
+
--mw-duration-instant: #{$duration-instant};
|
|
42
|
+
--mw-duration-fast: #{$duration-fast};
|
|
43
|
+
--mw-duration-base: #{$duration-base};
|
|
44
|
+
--mw-duration-slow: #{$duration-slow};
|
|
45
|
+
--mw-duration-slower: #{$duration-slower};
|
|
46
|
+
--mw-duration-zoom: #{$duration-zoom};
|
|
47
|
+
--mw-ease-out: #{$ease-out};
|
|
48
|
+
--mw-ease-in-out: #{$ease-in-out};
|
|
49
|
+
--mw-ease-spring: #{$ease-spring};
|
|
50
|
+
|
|
51
|
+
// Every hover, focus and active state. transition-list() repeats the duration
|
|
52
|
+
// on every property - a shorthand list only reads it on the entry behind it.
|
|
53
|
+
--mw-transition: #{transition-list('--mw-duration-base')};
|
|
54
|
+
// Same list, for a state that should feel instant rather than animated
|
|
55
|
+
--mw-transition-fast: #{transition-list('--mw-duration-fast')};
|
|
56
|
+
|
|
57
|
+
// Custom properties, so an application can tighten its forms without recompiling
|
|
58
|
+
--mw-control-height-sm: #{$control-height-sm};
|
|
59
|
+
--mw-control-height: #{$control-height};
|
|
60
|
+
--mw-control-height-lg: #{$control-height-lg};
|
|
61
|
+
--mw-control-font-sm: #{$control-font-sm};
|
|
62
|
+
--mw-control-font: #{$control-font};
|
|
63
|
+
--mw-control-font-lg: #{$control-font-lg};
|
|
64
|
+
--mw-control-line-height: #{$control-line-height};
|
|
65
|
+
|
|
66
|
+
// Focus ring
|
|
67
|
+
--mw-focus-ring-width: #{$focus-ring-width};
|
|
68
|
+
--mw-focus-ring-offset: #{$focus-ring-offset};
|
|
69
|
+
--mw-focus-ring-color: var(--mw-primary-text-color);
|
|
70
|
+
--mw-focus-halo-size: #{$focus-halo-size};
|
|
71
|
+
--mw-focus-halo-opacity: #{$focus-halo-opacity};
|
|
72
|
+
|
|
73
|
+
// The only way the chrome the browser draws itself follows the theme:
|
|
74
|
+
// scrollbars, the select popup, the date picker panel, number spinners
|
|
75
|
+
@if $mw-theme-mode == 'light' {
|
|
76
|
+
color-scheme: light;
|
|
77
|
+
} @else {
|
|
78
|
+
color-scheme: dark;
|
|
79
|
+
}
|
|
80
|
+
// Native controls the framework does not paint over take the brand, not OS blue
|
|
81
|
+
accent-color: var(--mw-primary-color);
|
|
82
|
+
|
|
83
|
+
// theme for theme-toggle
|
|
84
|
+
--mw-internal-theme-mode: #{$mw-theme-mode};
|
|
85
|
+
|
|
86
|
+
// hero background image and the ink that sits on it
|
|
87
|
+
--mw-hero-background: #{$mw-hero-image};
|
|
88
|
+
--mw-hero-text-color: #{$mw-hero-text-color};
|
|
89
|
+
|
|
90
|
+
// header height
|
|
91
|
+
--mw-header-height: #{$header-height};
|
|
92
|
+
|
|
93
|
+
// Read by the anchor offset of anything the sticky section nav can cover
|
|
94
|
+
--mw-section-nav-height: 3.7rem;
|
|
95
|
+
|
|
96
|
+
// The anchor scroll offset is calculated from it, so a taller ribbon raises
|
|
97
|
+
// this token rather than fighting the offset
|
|
98
|
+
--mw-announcement-height: 2.7rem;
|
|
99
|
+
|
|
100
|
+
// Fluid rather than stepped: ~24px at 375px up to 64px, where the 1200px cap
|
|
101
|
+
// takes over. Stepping at a breakpoint makes the container jump *backwards*
|
|
102
|
+
// there, because the gutter grows faster than the viewport does.
|
|
103
|
+
// max() against the safe-area insets keeps a notched phone clear of the cutout.
|
|
104
|
+
--mw-container-gutter: max(
|
|
105
|
+
clamp(1rem, 4.2vw + 0.5rem, 4rem),
|
|
106
|
+
env(safe-area-inset-left, 0px),
|
|
107
|
+
env(safe-area-inset-right, 0px)
|
|
108
|
+
);
|
|
109
|
+
--mw-container-width: min(
|
|
110
|
+
1200px,
|
|
111
|
+
calc(100% - 2 * var(--mw-container-gutter))
|
|
112
|
+
);
|
|
113
|
+
--mw-section-padding-block: #{spacing('10')};
|
|
114
|
+
--mw-section-title-gap: #{spacing('7')};
|
|
115
|
+
--mw-scroll-hint-offset: #{spacing('9')};
|
|
116
|
+
--mw-scroll-hint-inline: var(--mw-container-gutter);
|
|
117
|
+
--mw-scroll-hint-reserve: #{spacing('10')};
|
|
118
|
+
|
|
119
|
+
// Active theme - aliases onto the dark or light set above
|
|
120
|
+
@each $name, $value in $_active-theme {
|
|
121
|
+
--mw-#{$name}: var(--mw-#{$_active-prefix}-#{$name});
|
|
122
|
+
}
|
|
141
123
|
}
|
|
142
|
-
}
|
|
143
124
|
|
|
144
|
-
@if $mw-theme-mode == 'switchable' {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
125
|
+
@if $mw-theme-mode == 'switchable' {
|
|
126
|
+
.mw-theme-light {
|
|
127
|
+
// Light theme variables for switching
|
|
128
|
+
@each $name, $value in $light-theme-colors {
|
|
129
|
+
--mw-#{$name}: var(--mw-light-#{$name});
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
color-scheme: light;
|
|
149
133
|
}
|
|
134
|
+
}
|
|
150
135
|
|
|
136
|
+
// Form controls are deliberately light in both themes - see
|
|
137
|
+
// $form-elements-background - so they opt back out of the page's colour scheme.
|
|
138
|
+
// Without this the browser draws their built-in parts for a dark surface and a
|
|
139
|
+
// date field ends up with a white calendar icon on a near-white background.
|
|
140
|
+
input,
|
|
141
|
+
select,
|
|
142
|
+
textarea,
|
|
143
|
+
.mw-input,
|
|
144
|
+
.mw-select,
|
|
145
|
+
.mw-textarea,
|
|
146
|
+
.mw-input-group {
|
|
151
147
|
color-scheme: light;
|
|
152
148
|
}
|
|
153
|
-
}
|
|
154
149
|
|
|
155
|
-
//
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
.mw-select,
|
|
164
|
-
.mw-textarea,
|
|
165
|
-
.mw-input-group {
|
|
166
|
-
color-scheme: light;
|
|
167
|
-
}
|
|
150
|
+
// A scroll hint inside a card has to fade into the card, not into the page
|
|
151
|
+
.mw-card,
|
|
152
|
+
.mw-panel,
|
|
153
|
+
.mw-modal,
|
|
154
|
+
.mw-tile,
|
|
155
|
+
.mw-calendar:not(.mw-calendar-plain) {
|
|
156
|
+
--mw-scroll-hint-cover: var(--mw-card-background);
|
|
157
|
+
}
|
|
168
158
|
|
|
169
|
-
//
|
|
170
|
-
//
|
|
171
|
-
//
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
159
|
+
// The duration tokens cover everything built on them, the blanket rule below
|
|
160
|
+
// the few animations that name their own timing. 1ms and not 0: a zero-length
|
|
161
|
+
// transition never fires transitionend, and a script waiting for it would hang.
|
|
162
|
+
@media (prefers-reduced-motion: reduce) {
|
|
163
|
+
:root {
|
|
164
|
+
--mw-duration-instant: 1ms;
|
|
165
|
+
--mw-duration-fast: 1ms;
|
|
166
|
+
--mw-duration-base: 1ms;
|
|
167
|
+
--mw-duration-slow: 1ms;
|
|
168
|
+
--mw-duration-slower: 1ms;
|
|
169
|
+
}
|
|
179
170
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
// removing itself - would wait forever.
|
|
190
|
-
// ---------------------------------------------------------------------------
|
|
191
|
-
@media (prefers-reduced-motion: reduce) {
|
|
192
|
-
:root {
|
|
193
|
-
--mw-duration-instant: 1ms;
|
|
194
|
-
--mw-duration-fast: 1ms;
|
|
195
|
-
--mw-duration-base: 1ms;
|
|
196
|
-
--mw-duration-slow: 1ms;
|
|
197
|
-
--mw-duration-slower: 1ms;
|
|
198
|
-
}
|
|
171
|
+
*,
|
|
172
|
+
*::before,
|
|
173
|
+
*::after {
|
|
174
|
+
animation-duration: 1ms !important;
|
|
175
|
+
animation-delay: 0ms !important;
|
|
176
|
+
animation-iteration-count: 1 !important;
|
|
177
|
+
transition-duration: 1ms !important;
|
|
178
|
+
transition-delay: 0ms !important;
|
|
179
|
+
}
|
|
199
180
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
animation-duration: 1ms !important;
|
|
204
|
-
animation-delay: 0ms !important;
|
|
205
|
-
animation-iteration-count: 1 !important;
|
|
206
|
-
transition-duration: 1ms !important;
|
|
207
|
-
transition-delay: 0ms !important;
|
|
181
|
+
html {
|
|
182
|
+
scroll-behavior: auto;
|
|
183
|
+
}
|
|
208
184
|
}
|
|
209
185
|
|
|
210
|
-
|
|
211
|
-
|
|
186
|
+
// Without this a theme flip starts ~5900 concurrent transitions at once
|
|
187
|
+
.mw-theme-switching,
|
|
188
|
+
.mw-theme-switching *,
|
|
189
|
+
.mw-theme-switching *::before,
|
|
190
|
+
.mw-theme-switching *::after {
|
|
191
|
+
transition: none !important;
|
|
212
192
|
}
|
|
213
193
|
}
|
|
@@ -1,125 +1,127 @@
|
|
|
1
1
|
@use '../abstracts' as *;
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*::
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
@layer mw.reset {
|
|
4
|
+
*,
|
|
5
|
+
*::before,
|
|
6
|
+
*::after {
|
|
7
|
+
margin: 0;
|
|
8
|
+
padding: 0;
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
}
|
|
10
11
|
|
|
11
|
-
html {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
12
|
+
html {
|
|
13
|
+
scroll-behavior: smooth;
|
|
14
|
+
min-width: 320px;
|
|
15
|
+
scroll-padding-top: var(--mw-header-height);
|
|
16
|
+
-webkit-text-size-adjust: 100%;
|
|
17
|
+
text-size-adjust: 100%;
|
|
18
|
+
@include scrollbar(var(--mw-border), transparent);
|
|
19
|
+
}
|
|
19
20
|
|
|
20
|
-
body {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
body {
|
|
22
|
+
background: var(--mw-page-background);
|
|
23
|
+
overflow-wrap: break-word;
|
|
24
|
+
-webkit-font-smoothing: antialiased;
|
|
25
|
+
-moz-osx-font-smoothing: grayscale;
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
&:has(.mw-modal-open) {
|
|
28
|
+
overflow: hidden;
|
|
29
|
+
height: 100vh;
|
|
30
|
+
}
|
|
29
31
|
}
|
|
30
|
-
}
|
|
31
32
|
|
|
32
|
-
// The UA rule behind the `hidden` attribute is `[hidden] { display: none }`, and
|
|
33
|
-
// every component in here that sets its own `display` beats it on specificity -
|
|
34
|
-
// a hidden `mw-tag` or `mw-btn` stays on screen. `!important` is the only thing
|
|
35
|
-
// that wins against a class, and it is also what Angular's `[hidden]` binding
|
|
36
|
-
// and every `el.hidden = true` in an application expect to happen.
|
|
37
|
-
[hidden] {
|
|
38
|
-
|
|
39
|
-
}
|
|
33
|
+
// The UA rule behind the `hidden` attribute is `[hidden] { display: none }`, and
|
|
34
|
+
// every component in here that sets its own `display` beats it on specificity -
|
|
35
|
+
// a hidden `mw-tag` or `mw-btn` stays on screen. `!important` is the only thing
|
|
36
|
+
// that wins against a class, and it is also what Angular's `[hidden]` binding
|
|
37
|
+
// and every `el.hidden = true` in an application expect to happen.
|
|
38
|
+
[hidden] {
|
|
39
|
+
display: none !important;
|
|
40
|
+
}
|
|
40
41
|
|
|
41
|
-
// A selection in the browser default blue on a deep blue page is the one bit of
|
|
42
|
-
// chrome that gives away that nobody looked. Brand tint, kept translucent so it
|
|
43
|
-
// works over a card, a code block and an image caption alike.
|
|
44
|
-
::selection {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
42
|
+
// A selection in the browser default blue on a deep blue page is the one bit of
|
|
43
|
+
// chrome that gives away that nobody looked. Brand tint, kept translucent so it
|
|
44
|
+
// works over a card, a code block and an image caption alike.
|
|
45
|
+
::selection {
|
|
46
|
+
background: color-mix(in srgb, var(--mw-primary-color) 55%, transparent);
|
|
47
|
+
color: var(--mw-text-color);
|
|
48
|
+
}
|
|
48
49
|
|
|
49
|
-
a {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
50
|
+
a {
|
|
51
|
+
text-decoration: none;
|
|
52
|
+
color: var(--mw-text-muted-color);
|
|
53
|
+
transition: var(--mw-transition);
|
|
54
|
+
@include tappable;
|
|
55
|
+
@include focus-ring(2px);
|
|
56
|
+
}
|
|
56
57
|
|
|
57
|
-
ul {
|
|
58
|
-
|
|
59
|
-
}
|
|
58
|
+
ul {
|
|
59
|
+
list-style: none;
|
|
60
|
+
}
|
|
60
61
|
|
|
61
|
-
hr {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
62
|
+
hr {
|
|
63
|
+
margin: spacing('3') 0;
|
|
64
|
+
color: var(--mw-text-muted-color);
|
|
65
|
+
border: 0;
|
|
66
|
+
border-top: 1px solid currentcolor;
|
|
67
|
+
opacity: 0.35;
|
|
68
|
+
}
|
|
68
69
|
|
|
69
|
-
img {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
70
|
+
img {
|
|
71
|
+
max-width: 100%;
|
|
72
|
+
height: auto;
|
|
73
|
+
display: block;
|
|
74
|
+
}
|
|
74
75
|
|
|
75
|
-
button {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
76
|
+
button {
|
|
77
|
+
background: none;
|
|
78
|
+
border: none;
|
|
79
|
+
cursor: pointer;
|
|
80
|
+
font-family: inherit;
|
|
81
|
+
color: inherit;
|
|
82
|
+
@include tappable;
|
|
83
|
+
}
|
|
83
84
|
|
|
84
|
-
input,
|
|
85
|
-
textarea,
|
|
86
|
-
select {
|
|
87
|
-
|
|
88
|
-
}
|
|
85
|
+
input,
|
|
86
|
+
textarea,
|
|
87
|
+
select {
|
|
88
|
+
font-family: inherit;
|
|
89
|
+
}
|
|
89
90
|
|
|
90
|
-
// A control the framework has no component for - a bare <summary>, a
|
|
91
|
-
// contenteditable, an element carrying tabindex - still gets a ring.
|
|
92
|
-
:focus-visible {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
91
|
+
// A control the framework has no component for - a bare <summary>, a
|
|
92
|
+
// contenteditable, an element carrying tabindex - still gets a ring.
|
|
93
|
+
:focus-visible {
|
|
94
|
+
outline: var(--mw-focus-ring-width) solid var(--mw-focus-ring-color);
|
|
95
|
+
outline-offset: var(--mw-focus-ring-offset);
|
|
96
|
+
}
|
|
96
97
|
|
|
97
|
-
// Media that has to fit its box without distorting. `height: auto` alone keeps
|
|
98
|
-
// the aspect ratio only while nothing else sets a height.
|
|
99
|
-
img,
|
|
100
|
-
svg,
|
|
101
|
-
video,
|
|
102
|
-
canvas {
|
|
103
|
-
|
|
104
|
-
}
|
|
98
|
+
// Media that has to fit its box without distorting. `height: auto` alone keeps
|
|
99
|
+
// the aspect ratio only while nothing else sets a height.
|
|
100
|
+
img,
|
|
101
|
+
svg,
|
|
102
|
+
video,
|
|
103
|
+
canvas {
|
|
104
|
+
max-width: 100%;
|
|
105
|
+
}
|
|
105
106
|
|
|
106
|
-
table {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
107
|
+
table {
|
|
108
|
+
border-collapse: collapse;
|
|
109
|
+
width: 100%;
|
|
110
|
+
}
|
|
110
111
|
|
|
111
|
-
th,
|
|
112
|
-
td {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
112
|
+
th,
|
|
113
|
+
td {
|
|
114
|
+
border: 1px solid var(--mw-border);
|
|
115
|
+
padding: spacing('1') spacing('2');
|
|
116
|
+
text-align: left;
|
|
117
|
+
}
|
|
117
118
|
|
|
118
|
-
th {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
119
|
+
th {
|
|
120
|
+
background: var(--mw-primary-color);
|
|
121
|
+
color: var(--mw-primary-accent-text-color);
|
|
122
|
+
}
|
|
122
123
|
|
|
123
|
-
tbody tr:nth-child(even) {
|
|
124
|
-
|
|
124
|
+
tbody tr:nth-child(even) {
|
|
125
|
+
background: var(--mw-gray-background);
|
|
126
|
+
}
|
|
125
127
|
}
|