baseline-scss 0.5.0 → 1.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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/lib/baseline_scss/version.rb +1 -1
  4. data/lib/baseline_scss.rb +3 -5
  5. data/src/baseline-scss/_helpers.scss +23 -7
  6. data/src/baseline-scss/_mixins.scss +65 -7
  7. data/src/baseline-scss/_reboot.scss +16 -172
  8. data/src/baseline-scss/_variables.scss +63 -127
  9. data/src/baseline-scss/content/_buttons.scss +77 -24
  10. data/src/baseline-scss/content/_code.scss +23 -10
  11. data/src/baseline-scss/content/_forms.scss +167 -53
  12. data/src/baseline-scss/content/_index.scss +8 -0
  13. data/src/baseline-scss/content/_lists.scss +4 -3
  14. data/src/baseline-scss/content/_multimedia.scss +13 -0
  15. data/src/baseline-scss/content/_tables.scss +21 -1
  16. data/src/baseline-scss/content/_typography.scss +68 -41
  17. data/src/baseline-scss.scss +5 -11
  18. metadata +4 -59
  19. data/src/_baseline.scss +0 -5
  20. data/src/baseline-scss/_content.scss +0 -7
  21. data/src/baseline-scss/mixins/_.scss +0 -4
  22. data/src/baseline-scss/mixins/_after_border.scss +0 -12
  23. data/src/baseline-scss/mixins/_clearfix.scss +0 -7
  24. data/src/baseline-scss/mixins/_font_awesome.scss +0 -12
  25. data/src/baseline-scss/mixins/_max_width_container.scss +0 -15
  26. data/src/baseline-scss/mixins/_outline.scss +0 -5
  27. data/src/baseline-scss/mixins/_sr_only.scss +0 -17
  28. data/src/vendors/_bourbon.scss +0 -54
  29. data/src/vendors/_include-media.scss +0 -591
  30. data/src/vendors/bourbon/helpers/_buttons-list.scss +0 -14
  31. data/src/vendors/bourbon/helpers/_scales.scss +0 -27
  32. data/src/vendors/bourbon/helpers/_text-inputs-list.scss +0 -26
  33. data/src/vendors/bourbon/library/_border-color.scss +0 -26
  34. data/src/vendors/bourbon/library/_border-radius.scss +0 -85
  35. data/src/vendors/bourbon/library/_border-style.scss +0 -25
  36. data/src/vendors/bourbon/library/_border-width.scss +0 -25
  37. data/src/vendors/bourbon/library/_buttons.scss +0 -84
  38. data/src/vendors/bourbon/library/_clearfix.scss +0 -25
  39. data/src/vendors/bourbon/library/_contrast-switch.scss +0 -81
  40. data/src/vendors/bourbon/library/_ellipsis.scss +0 -36
  41. data/src/vendors/bourbon/library/_font-face.scss +0 -65
  42. data/src/vendors/bourbon/library/_font-stacks.scss +0 -248
  43. data/src/vendors/bourbon/library/_hide-text.scss +0 -24
  44. data/src/vendors/bourbon/library/_hide-visually.scss +0 -70
  45. data/src/vendors/bourbon/library/_margin.scss +0 -37
  46. data/src/vendors/bourbon/library/_modular-scale.scss +0 -120
  47. data/src/vendors/bourbon/library/_overflow-wrap.scss +0 -25
  48. data/src/vendors/bourbon/library/_padding.scss +0 -36
  49. data/src/vendors/bourbon/library/_position.scss +0 -62
  50. data/src/vendors/bourbon/library/_prefixer.scss +0 -37
  51. data/src/vendors/bourbon/library/_shade.scss +0 -32
  52. data/src/vendors/bourbon/library/_size.scss +0 -50
  53. data/src/vendors/bourbon/library/_strip-unit.scss +0 -17
  54. data/src/vendors/bourbon/library/_text-inputs.scss +0 -163
  55. data/src/vendors/bourbon/library/_timing-functions.scss +0 -36
  56. data/src/vendors/bourbon/library/_tint.scss +0 -32
  57. data/src/vendors/bourbon/library/_triangle.scss +0 -82
  58. data/src/vendors/bourbon/library/_value-prefixer.scss +0 -37
  59. data/src/vendors/bourbon/settings/_settings.scss +0 -75
  60. data/src/vendors/bourbon/utilities/_assign-inputs.scss +0 -28
  61. data/src/vendors/bourbon/utilities/_compact-shorthand.scss +0 -42
  62. data/src/vendors/bourbon/utilities/_contrast-ratio.scss +0 -31
  63. data/src/vendors/bourbon/utilities/_directional-property.scss +0 -68
  64. data/src/vendors/bourbon/utilities/_fetch-bourbon-setting.scss +0 -16
  65. data/src/vendors/bourbon/utilities/_font-source-declaration.scss +0 -52
  66. data/src/vendors/bourbon/utilities/_gamma.scss +0 -24
  67. data/src/vendors/bourbon/utilities/_lightness.scss +0 -24
  68. data/src/vendors/bourbon/utilities/_unpack-shorthand.scss +0 -29
  69. data/src/vendors/bourbon/validators/_contains-falsy.scss +0 -20
  70. data/src/vendors/bourbon/validators/_contains.scss +0 -26
  71. data/src/vendors/bourbon/validators/_is-color.scss +0 -13
  72. data/src/vendors/bourbon/validators/_is-length.scss +0 -20
  73. data/src/vendors/bourbon/validators/_is-number.scss +0 -15
  74. data/src/vendors/bourbon/validators/_is-size.scss +0 -18
@@ -1,37 +1,90 @@
1
- #{$all-buttons} {
2
- background-color: var(--button_background_color);
3
- border: var(--button_border_width) var(--button_border_style) var(--button_border_color);
4
- border-radius: var(--button_border_radius);
5
- color: var(--button_color);
6
- height: var(--button_height);
7
- line-height: 1;
8
- padding: var(--button_padding);
1
+ @use 'baseline-scss/mixins' as _;
2
+
3
+ button,
4
+ [type='button'],
5
+ [type='reset'],
6
+ [type='submit'],
7
+ .button {
8
+ --_button_background_color: var(--button_background_color);
9
+ --_button_border_color: var(--button_border_color);
10
+ --_button_border_width: var(--button_border_width, .1rem);
11
+ --_button_color: var(--button_color);
12
+
13
+ background-color: var(--_button_background_color, var(--gray_200));
14
+ border-color: var(--_button_border_color, var(--gray_600));
15
+ border-radius: var(--button_border_radius, .3rem);
16
+ border-style: var(--button_border_style, solid);
17
+ border-width: var(--_button_border_width);
18
+ color: var(--_button_color, var(--body_color));
19
+ display: var(--button_display, inline-block);
20
+ font-size: var(--button_font_size, var(--body_font_size));
21
+ font-weight: var(--button_font_weight, var(--font_weight_normal));
22
+ line-height: var(--button_line_height, calc(2 * (var(--_) - var(--_button_border_width))));
23
+ padding: var(--button_padding, 0 .5em);
24
+ text-decoration: var(--button_text-decoration, none);
25
+ white-space: var(--button_white_space, nowrap);
9
26
 
10
27
  &:hover {
11
- background-color: var(--button_background_color_hover);
12
- border-color: var(--button_border_color_hover);
13
- color: var(--button_color_hover);
28
+ --_button_background_color: var(--button_background_color_hover, var(--button_background_color, var(--gray_300)));
29
+ --_button_border_color: var(--button_border_color_hover, var(--button_border_color, var(--gray_800)));
30
+ --_button_color: var(--button_color_hover, var(--button_color));
14
31
  }
15
32
 
16
33
  &:focus {
17
- @include outline();
34
+ --_button_background_color: var(--button_background_color_focus, var(--button_background_color));
35
+ --_button_border_color: var(--button_border_color_focus, var(--button_border_color, var(--gray_600)));
36
+ --_button_color: var(--button_color_focus, var(--button_color));
18
37
 
19
- background-color: var(--button_background_color_focus);
20
- border-color: var(--button_border_color_focus);
21
- color: var(--button_color_focus);
38
+ &:not(:focus-visible) {
39
+ outline: 0; // Explicitly remove focus outline in Chromium.
40
+ }
22
41
  }
42
+ }
23
43
 
24
- &:active {
25
- background-color: var(--button_background_color_active);
26
- border-color: var(--button_border_color_active);
27
- color: var(--button_color_active);
44
+ button:active,
45
+ [type='button']:active,
46
+ [type='reset']:active,
47
+ [type='submit']:active,
48
+ .button:has(:checked) {
49
+ --_button_background_color: var(--button_background_color_active, var(--button_background_color, var(--gray_100)));
50
+ --_button_border_color: var(--button_border_color_active, var(--button_border_color, var(--gray_500)));
51
+ --_button_color: var(--button_color_active, var(--button_color));
52
+ }
53
+
54
+ button:disabled,
55
+ [type='button']:disabled,
56
+ [type='reset']:disabled,
57
+ [type='submit']:disabled,
58
+ .button:has(:disabled),
59
+ .button._disabled {
60
+ --_button_background_color: var(--button_background_color_disabled, var(--button_background_color));
61
+ --_button_border_color: var(--button_border_color_disabled, var(--button_border_color, var(--gray_300)));
62
+ --_button_color: var(--button_color_disabled, var(--button_color, var(--gray_400)));
63
+
64
+ pointer-events: none;
65
+ }
66
+
67
+ button,
68
+ [type='button'],
69
+ [type='reset'],
70
+ [type='submit'] {
71
+ &:not(:disabled) {
72
+ cursor: pointer; // Add 'hand' cursor to non-disabled button elements.
28
73
  }
74
+ }
29
75
 
30
- &:disabled {
31
- background-color: var(--button_background_color_disabled);
32
- border-color: var(--button_border_color_disabled);
33
- color: var(--button_color_disabled);
34
- pointer-events: none;
76
+ button:not(:disabled),
77
+ .button:not(._disabled) {
78
+ &:focus {
79
+ @include _.outline();
35
80
  }
36
81
  }
37
82
 
83
+ a.button {
84
+ --link_color: var(--_button_color, var(--body_color));
85
+ --link_text_decoration: var(--button_text-decoration, none);
86
+ }
87
+
88
+ [role='button'] {
89
+ cursor: pointer; // Set the cursor for non-`<button>` buttons.
90
+ }
@@ -1,15 +1,28 @@
1
- pre {
2
- @include _(var(--font_size_code), var(--font_size_code_lines));
3
- @include margin(0 null var(--_));
4
-
5
- font-family: var(--font_family_code);
6
- }
7
-
1
+ pre,
8
2
  code,
9
3
  kbd,
10
4
  samp {
11
- font-family: var(--font_family_code);
12
- font-size: var(--font_size_code);
13
- vertical-align: bottom;
5
+ font-family: var(--code_font_family);
6
+ font-size: var(--code_font_size);
7
+ }
8
+
9
+ pre {
10
+ display: block;
11
+ line-height: var(--code_line_height);
12
+ margin: 0 0 var(--_);
13
+ overflow: auto;
14
+
15
+ code {
16
+ color: inherit;
17
+ font-size: inherit;
18
+ word-break: normal;
19
+ }
14
20
  }
15
21
 
22
+ code {
23
+ word-wrap: break-word;
24
+
25
+ a > & {
26
+ color: inherit; // Avoid broken underline and more when inside anchors.
27
+ }
28
+ }
@@ -1,94 +1,208 @@
1
+ @use 'baseline-scss/mixins' as _;
2
+
1
3
  form {
2
- margin: 0 0 var(--_);
4
+ margin-bottom: var(--_);
5
+
6
+ > fieldset:last-child {
7
+ margin-bottom: 0;
8
+ }
3
9
  }
4
10
 
5
11
  fieldset {
6
- @include after_border();
7
-
8
- border: 0;
9
- padding: var(--_) var(--fieldset_padding_h);
12
+ border: 0; // Don't affect page layout.
10
13
  margin: 0 0 var(--_);
14
+ min-width: 0; // Behave like a standard block element.
15
+ padding: var(--_) .5em;
11
16
 
12
- &::after {
13
- top: calc(-1 * var(--_));
14
- z-index: -1;
15
- }
16
-
17
- > :last-child {
18
- margin-bottom: 0;
17
+ &:has(> legend:first-child) {
18
+ @include _.inset_border();
19
19
  }
20
20
  }
21
21
 
22
22
  legend {
23
23
  background-color: var(--body_background_color);
24
- padding: var(--legend_padding_h);
24
+ padding: 0 .5em;
25
25
  }
26
26
 
27
- #{$all-text-inputs},
28
- select {
29
- background-color: var(--input_background_color);
30
- border: var(--input_border_width) var(--input_border_style) var(--input_border_color);
31
- border-radius: var(--input_border_radius);
32
- color: var(--input_color);
33
- height: var(--input_height);
27
+ label {
28
+ display: inline-block; // Allow labels to use `margin` for spacing.
29
+ }
34
30
 
35
- &:hover {
36
- background-color: var(--input_background_color_hover);
37
- border-color: var(--input_border_color_hover);
38
- color: var(--input_color_hover);
31
+ input,
32
+ optgroup,
33
+ select,
34
+ textarea {
35
+ font-size: inherit;
36
+ line-height: inherit;
37
+
38
+ &:disabled {
39
+ pointer-events: none;
39
40
  }
41
+ }
40
42
 
43
+ input,
44
+ select,
45
+ textarea {
41
46
  &:focus {
42
- @include outline();
47
+ @include _.outline();
48
+ }
49
+ }
50
+
51
+ [type='color'],
52
+ [type='date'],
53
+ [type='datetime'],
54
+ [type='datetime-local'],
55
+ [type='email'],
56
+ [type='month'],
57
+ [type='number'],
58
+ [type='password'],
59
+ [type='search'],
60
+ [type='tel'],
61
+ [type='text'],
62
+ [type='time'],
63
+ [type='url'],
64
+ [type='week'],
65
+ input:not([type]),
66
+ select,
67
+ textarea {
68
+ --_input_background_color: var(--input_background_color);
69
+ --_input_border_color: var(--input_border_color);
70
+ --_input_border_width: var(--input_border_width, .1rem);
71
+ --_input_color: var(--input_color);
72
+
73
+ background-color: var(--_input_background_color, var(--body_background_color));
74
+ border-color: var(--_input_border_color, var(--gray_600));
75
+ border-radius: var(--input_border_radius, 0);
76
+ border-style: var(--input_border_style, solid);
77
+ border-width: var(--_input_border_width);
78
+ color: var(--_input_color, var(--body_color));
79
+ font-size: var(--input_font_size, var(--body_font_size));
80
+ font-weight: var(--input_font_weight, var(--font_weight_normal));
81
+ line-height: var(--input_line_height, calc(2 * (var(--_) - var(--_input_border_width))));
82
+ padding: var(--input_padding, 0 .25em);
83
+
84
+ &:hover {
85
+ --_input_background_color: var(--input_background_color_hover, var(--input_background_color));
86
+ --_input_border_color: var(--input_border_color_hover, var(--input_border_color, var(--gray_800)));
87
+ --_input_color: var(--input_color_hover, var(--input_color));
88
+ }
43
89
 
44
- background-color: var(--input_background_color_focus);
45
- border-color: var(--input_border_color_focus);
46
- color: var(--input_color_focus);
90
+ &:focus {
91
+ --_input_background_color: var(--input_background_color_focus, var(--input_background_color));
92
+ --_input_border_color: var(--input_border_color_focus, var(--input_border_color));
93
+ --_input_color: var(--input_color_focus, var(--input_color));
47
94
  }
48
95
 
49
96
  &:active {
50
- background-color: var(--input_background_color_active);
51
- border-color: var(--input_border_color_active);
52
- color: var(--input_color_active);
97
+ --_input_background_color: var(--input_background_color_active, var(--input_background_color));
98
+ --_input_border_color: var(--input_border_color_active, var(--input_border_color, var(--gray_500)));
99
+ --_input_color: var(--input_color_active, var(--input_color));
53
100
  }
54
101
 
55
- &:disabled {
56
- background-color: var(--input_background_color_disabled);
57
- border-color: var(--input_border_color_disabled);
58
- color: var(--input_color_disabled);
59
- pointer-events: none;
102
+ &[aria-activedescendant] {
103
+ outline: 0;
60
104
  }
61
105
 
62
- &:read-only {
63
- background-color: var(--input_background_color_read_only);
64
- border-color: var(--input_border_color_read_only);
65
- color: var(--input_color_read_only);
106
+ &[aria-invalid='true'] {
107
+ --_input_background_color: var(--input_background_color_invalid, var(--invalid_background_color));
108
+ --_input_border_color: var(--input_border_color_invalid, var(--invalid_border_color));
66
109
  }
67
110
  }
68
111
 
69
- #{$all-text-inputs} {
70
- padding: var(--input_padding);
112
+ [type='color'],
113
+ [type='date'],
114
+ [type='datetime'],
115
+ [type='datetime-local'],
116
+ [type='email'],
117
+ [type='month'],
118
+ [type='number'],
119
+ [type='password'],
120
+ [type='search'],
121
+ [type='tel'],
122
+ [type='text'],
123
+ [type='time'],
124
+ [type='url'],
125
+ [type='week'],
126
+ input:not([type]),
127
+ textarea {
128
+ &:focus:invalid {
129
+ --_input_background_color: var(--input_background_color_warning, var(--warning_background_color));
130
+ --_input_border_color: var(--input_border_color_warningd, var(--warning_border_color));
131
+ }
132
+
133
+ &::placeholder {
134
+ color: var(--input_placeholder_color, var(--gray_600));
135
+ }
136
+
137
+ &:read-only {
138
+ --_input_background_color: var(--input_background_color_read_only, var(--input_background_color, var(--gray_200)));
139
+ --_input_border_color: var(--input_border_color_read_only, var(--input_border_color, var(--gray_300)));
140
+ --_input_color: var(--input_color_read_only, var(--input_color, var(--gray_400)));
141
+ }
142
+
143
+ &:user-invalid {
144
+ --_input_background_color: var(--input_background_color_invalid, var(--invalid_background_color));
145
+ --_input_border_color: var(--input_border_color_invalid, var(--invalid_border_color));
146
+ }
147
+
148
+ &:user-valid {
149
+ --_input_background_color: var(--input_background_color_valid, var(--valid_background_color));
150
+ --_input_border_color: var(--input_border_color_valid, var(--valid_border_color));
151
+ }
71
152
  }
72
153
 
73
- input[type='checkbox'],
74
- input[type='radio'],
75
- input[type='range'] {
76
- &:focus {
77
- @include outline();
154
+ [type='color'],
155
+ [type='date'],
156
+ [type='datetime'],
157
+ [type='datetime-local'],
158
+ [type='email'],
159
+ [type='month'],
160
+ [type='number'],
161
+ [type='password'],
162
+ [type='search'],
163
+ [type='tel'],
164
+ [type='text'],
165
+ [type='time'],
166
+ [type='url'],
167
+ [type='week'],
168
+ input:not([type]),
169
+ select,
170
+ textarea {
171
+ &:disabled { // put here to override :read-only
172
+ --_input_background_color: var(--input_background_color_disabled, var(--input_background_color, var(--gray_200)));
173
+ --_input_border_color: var(--input_border_color_disabled, var(--input_border_color, var(--gray_300)));
174
+ --_input_color: var(--input_color_disabled, var(--input_color, var(--gray_400)));
78
175
  }
79
176
  }
80
177
 
81
- input[type='checkbox'],
82
- input[type='radio'] {
83
- vertical-align: baseline;
178
+ [type='range'] {
179
+ vertical-align: middle;
180
+ }
181
+
182
+ [type='search'] {
183
+ outline-offset: -.2rem;
84
184
  }
85
185
 
86
- input[type='range'] {
87
- vertical-align: text-top;
186
+ select {
187
+ height: var(--select_height, calc(2 * var(--_)));
188
+ margin-top: calc(var(--_input_border_width) / -2);
189
+ word-wrap: normal; // Remove the inheritance of word-wrap in Safari.
190
+
191
+ &:disabled {
192
+ opacity: 1; // Undo the opacity change from Chrome.
193
+ }
88
194
  }
89
195
 
90
196
  textarea {
197
+ --input_line_height: var(--body_line_height);
198
+ --input_padding: calc(var(--_half) - var(--_input_border_width)) .25em;
199
+
91
200
  height: auto;
92
- padding: calc(var(--_half_ceil) - var(--input_border_width)) var(--textarea_padding_h) calc(var(--_half_floor) - var(--input_border_width));
201
+ resize: vertical; // Don't break its (horizontal) containers.
202
+ vertical-align: top;
93
203
  }
94
204
 
205
+ ::file-selector-button {
206
+ font: inherit; // Inherit font family and line height for file input buttons.
207
+ -webkit-appearance: button; // Correct the inability to style clickable types in iOS and Safari.
208
+ }
@@ -0,0 +1,8 @@
1
+ @use '_buttons';
2
+ @use '_code';
3
+ @use '_forms';
4
+ @use '_lists';
5
+ @use '_multimedia';
6
+ @use '_tables';
7
+ @use '_typography';
8
+
@@ -1,5 +1,6 @@
1
1
  dl, ol, ul {
2
- @include margin(0 null var(--_));
2
+ margin-top: 0;
3
+ margin-bottom: var(--_);
3
4
 
4
5
  & & {
5
6
  margin-bottom: 0;
@@ -7,7 +8,7 @@ dl, ol, ul {
7
8
  }
8
9
 
9
10
  dl dl {
10
- margin-left: var(--dl_margin_l);
11
+ margin-left: 1.5em;
11
12
  }
12
13
 
13
14
  dt {
@@ -19,5 +20,5 @@ dd {
19
20
  }
20
21
 
21
22
  ol, ul {
22
- padding-left: var(--list_padding_l);
23
+ padding-left: 1.5em;
23
24
  }
@@ -2,7 +2,20 @@ figure {
2
2
  margin: 0 0 var(--_);
3
3
  }
4
4
 
5
+ audio,
6
+ canvas,
7
+ iframe,
8
+ img,
9
+ svg,
10
+ video {
11
+ vertical-align: middle; // Remove gap between the bottom of their containers.
12
+ }
13
+
5
14
  img {
6
15
  display: inline-block;
7
16
  max-width: 100%;
8
17
  }
18
+
19
+ svg {
20
+ overflow: hidden; // Workaround for the SVG overflow bug in IE10/11.
21
+ }
@@ -1,4 +1,6 @@
1
1
  table {
2
+ border-collapse: collapse; // Prevent double borders.
3
+ border-color: currentcolor;
2
4
  margin-bottom: var(--_);
3
5
  width: 100%;
4
6
  }
@@ -7,13 +9,25 @@ caption {
7
9
  font-weight: var(--font_weight_bold);
8
10
  }
9
11
 
12
+ thead,
13
+ tbody,
14
+ tfoot,
15
+ tr,
16
+ td,
17
+ th {
18
+ border-color: inherit;
19
+ border-style: solid;
20
+ border-width: 0;
21
+ }
22
+
10
23
  thead th {
11
24
  font-weight: var(--font_weight_bold);
12
25
  vertical-align: bottom;
13
26
  }
14
27
 
15
28
  td, th {
16
- padding: var(--table_cell_padding);
29
+ padding-block: var(--table_cell_padding_block, 0);
30
+ padding-inline: var(--table_cell_padding_inline, .25em);
17
31
  vertical-align: top;
18
32
 
19
33
  > dl,
@@ -25,3 +39,9 @@ td, th {
25
39
  }
26
40
  }
27
41
  }
42
+
43
+ th {
44
+ font-weight: inherit;
45
+ text-align: inherit; // Matches default `<td>` alignment.
46
+ text-align: -webkit-match-parent; // Fix alignment for Safari.
47
+ }
@@ -1,9 +1,13 @@
1
+ @use 'baseline-scss/mixins' as _;
2
+
1
3
  address {
2
- @include margin(0 null var(--_));
4
+ font-style: normal;
5
+ line-height: inherit;
6
+ margin-bottom: var(--_);
3
7
  }
4
8
 
5
9
  blockquote {
6
- @include margin(0 var(--blockquote_margin_h) var(--_));
10
+ margin: 0 2em var(--_);
7
11
  }
8
12
 
9
13
  h1, ._h1,
@@ -12,86 +16,109 @@ h3, ._h3,
12
16
  h4, ._h4,
13
17
  h5, ._h5,
14
18
  h6, ._h6 {
15
- @include margin(0 null var(--_));
16
-
17
- font-family: var(--font_family_h);
18
- font-weight: var(--font_weight_h);
19
+ font-family: var(--h_font_family);
20
+ font-weight: var(--h_font_weight);
21
+ margin-top: 0;
22
+ margin-bottom: var(--_);
19
23
 
20
24
  small, ._small {
21
- font-weight: var(--font_weight);
25
+ font-weight: var(--font_weight_normal);
22
26
  }
23
27
  }
24
28
 
25
29
  h1, ._h1 {
26
- @include _(var(--font_size_h1), var(--font_size_h1_lines));
30
+ font-size: var(--h1_font_size);
31
+ line-height: var(--h1_line_height);
27
32
  }
28
33
 
29
34
  h2, ._h2 {
30
- @include _(var(--font_size_h2), var(--font_size_h2_lines));
35
+ font-size: var(--h2_font_size);
36
+ line-height: var(--h2_line_height);
31
37
  }
32
38
 
33
39
  h3, ._h3 {
34
- @include _(var(--font_size_h3), var(--font_size_h3_lines));
40
+ font-size: var(--h3_font_size);
41
+ line-height: var(--h3_line_height);
35
42
  }
36
43
 
37
44
  h4, ._h4 {
38
- @include _(var(--font_size_h4), var(--font_size_h4_lines));
45
+ font-size: var(--h4_font_size);
46
+ line-height: var(--h4_line_height);
39
47
  }
40
48
 
41
49
  h5, ._h5 {
42
- @include _(var(--font_size_h5), var(--font_size_h5_lines));
50
+ font-size: var(--h5_font_size);
51
+ line-height: var(--h5_line_height);
43
52
  }
44
53
 
45
54
  h6, ._h6 {
46
- @include _(var(--font_size_h6), var(--font_size_h6_lines));
55
+ font-size: var(--h6_font_size);
56
+ line-height: var(--h6_line_height);
47
57
  }
48
58
 
49
59
  p, ._p {
50
- @include margin(0 null var(--_));
60
+ margin-top: 0;
61
+ margin-bottom: var(--_);
51
62
  }
52
63
 
53
64
  hr {
54
- @include margin(0 null);
55
-
56
65
  border: 0;
57
- border-top: var(--hr_border_width) var(--hr_border_style) var(--hr_border_color);
58
- height: var(--hr_height);
66
+ border-top: var(--hr_border_size, .1rem) var(--hr_border_style, solid) var(--hr_border_color, var(--body_color));
67
+ box-sizing: border-box;
68
+ height: var(--hr_height, var(--_));
69
+ margin: 0;
59
70
  }
60
71
 
61
72
  a {
62
- &:link {
63
- color: var(--link_color);
73
+ &:any-link {
74
+ --_link_color: var(--link_color);
75
+ --_link_text_decoration: var(--link_text_decoration);
76
+
77
+ color: var(--_link_color, #00e);
78
+ text-decoration: var(--_link_text_decoration, underline);
79
+
80
+ &:visited {
81
+ --_link_color: var(--link_color_visited, var(--link_color, #528));
82
+ --_link_text_decoration: var(--link_text_decoration_visited, var(--link_text_decoration));
83
+ }
84
+
85
+ &:hover {
86
+ --_link_color: var(--link_color_hover, var(--link_color, #00f));
87
+ --_link_text_decoration: var(--link_text_decoration_hover, var(--link_text_decoration));
88
+ }
89
+
90
+ &:focus {
91
+ --_link_color: var(--link_color_focus, var(--link_color));
92
+ --_link_text_decoration: var(--link_text_decoration_focus, var(--link_text_decoration));
93
+
94
+ @include _.outline();
95
+
96
+ &._disabled {
97
+ outline: 0;
98
+ }
99
+ }
100
+
101
+ &:active {
102
+ --_link_color: var(--link_color_active, var(--link_color, #f00));
103
+ --_link_text_decoration: var(--link_text_decoration_active, var(--link_text_decoration));
104
+ }
64
105
  }
65
106
 
66
- &:visited {
67
- color: var(--link_visited_color);
68
- }
69
-
70
- &[href]:hover {
71
- color: var(--link_hover_color);
72
- }
73
-
74
- &:focus {
75
- @include outline();
76
-
77
- color: var(--link_focus_color);
78
- }
79
-
80
- &[href]:active {
81
- color: var(--link_active_color);
107
+ &:not([href]):not([tabindex]):focus {
108
+ outline: 0; // Plain anchors don't need an outline.
82
109
  }
83
110
  }
84
111
 
85
- ._large {
86
- font-size: var(--font_size_large);
87
- line-height: 1;
112
+ abbr[title] {
113
+ cursor: help; // Add explicit cursor to indicate changed behavior.
114
+ text-decoration-skip-ink: none; // Prevent the text-decoration to be skipped.
88
115
  }
89
116
 
90
117
  mark {
91
- background-color: var(--mark_background_color);
118
+ background-color: var(--mark_background_color, #ff0);
92
119
  }
93
120
 
94
- small, ._small,
121
+ small,
95
122
  sub,
96
123
  sup {
97
124
  font-size: var(--font_size_small);