@semanticus/semanticus-css 0.9.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 (144) hide show
  1. package/NOTICE +16 -16
  2. package/README.md +128 -29
  3. package/dist/semanticus-no-utilities.css +11 -0
  4. package/dist/semanticus-semantics.css +3 -4
  5. package/dist/semanticus-utilities.css +11 -0
  6. package/dist/semanticus.css +4 -12
  7. package/dist/semanticus.palette.amber.css +1 -1
  8. package/dist/semanticus.palette.azure.css +1 -0
  9. package/dist/semanticus.palette.blue.css +1 -1
  10. package/dist/semanticus.palette.cyan.css +1 -1
  11. package/dist/semanticus.palette.fuchsia.css +1 -1
  12. package/dist/semanticus.palette.green.css +1 -1
  13. package/dist/semanticus.palette.grey.css +1 -1
  14. package/dist/semanticus.palette.indigo.css +1 -1
  15. package/dist/semanticus.palette.jade.css +1 -1
  16. package/dist/semanticus.palette.lime.css +1 -1
  17. package/dist/semanticus.palette.orange.css +1 -1
  18. package/dist/semanticus.palette.pink.css +1 -1
  19. package/dist/semanticus.palette.pumpkin.css +1 -1
  20. package/dist/semanticus.palette.purple.css +1 -1
  21. package/dist/semanticus.palette.red.css +1 -1
  22. package/dist/semanticus.palette.sand.css +1 -1
  23. package/dist/semanticus.palette.slate.css +1 -1
  24. package/dist/semanticus.palette.violet.css +1 -1
  25. package/dist/semanticus.palette.yellow.css +1 -1
  26. package/dist/semanticus.palette.zinc.css +1 -1
  27. package/dist/semanticus.size.pico.css +1 -1
  28. package/package.json +24 -15
  29. package/src/components/_card.css +84 -0
  30. package/src/{variants → components}/_sidebar.css +3 -5
  31. package/src/components/modules.css +2 -0
  32. package/src/index.css +8 -10
  33. package/src/no-utilities.css +22 -0
  34. package/src/palettes/amber.css +28 -53
  35. package/src/palettes/azure.css +31 -0
  36. package/src/palettes/blue.css +28 -53
  37. package/src/palettes/cyan.css +28 -53
  38. package/src/palettes/fuchsia.css +28 -53
  39. package/src/palettes/green.css +28 -53
  40. package/src/palettes/grey.css +28 -53
  41. package/src/palettes/indigo.css +28 -53
  42. package/src/palettes/jade.css +28 -53
  43. package/src/palettes/lime.css +28 -53
  44. package/src/palettes/orange.css +28 -53
  45. package/src/palettes/pink.css +28 -53
  46. package/src/palettes/pumpkin.css +28 -53
  47. package/src/palettes/purple.css +28 -53
  48. package/src/palettes/red.css +28 -53
  49. package/src/palettes/sand.css +28 -53
  50. package/src/palettes/slate.css +28 -53
  51. package/src/palettes/violet.css +28 -53
  52. package/src/palettes/yellow.css +28 -53
  53. package/src/palettes/zinc.css +28 -53
  54. package/src/semantics/attributes/_aria-busy.css +0 -3
  55. package/src/semantics/attributes/_hidden.css +0 -3
  56. package/src/semantics/attributes/_role-group-search.css +11 -14
  57. package/src/semantics/attributes/_role-toolbar.css +2 -5
  58. package/src/semantics/attributes/_role-tooltip.css +6 -9
  59. package/src/semantics/elements/_article.css +0 -3
  60. package/src/semantics/elements/_aside.css +1 -7
  61. package/src/semantics/elements/_blockquote.css +2 -2
  62. package/src/semantics/elements/_body.css +1 -4
  63. package/src/semantics/elements/_button.css +23 -26
  64. package/src/semantics/elements/_code.css +5 -8
  65. package/src/semantics/elements/_del.css +1 -1
  66. package/src/semantics/elements/_details.css +39 -40
  67. package/src/semantics/elements/_dialog.css +13 -17
  68. package/src/semantics/elements/_document.css +10 -4
  69. package/src/semantics/elements/_embedded.css +0 -3
  70. package/src/semantics/elements/_figure.css +0 -3
  71. package/src/semantics/elements/_footer.css +0 -3
  72. package/src/semantics/elements/_header.css +0 -3
  73. package/src/semantics/elements/_headings.css +7 -17
  74. package/src/semantics/elements/_hgroup.css +1 -1
  75. package/src/semantics/elements/_hr.css +1 -4
  76. package/src/semantics/elements/_input.css +33 -36
  77. package/src/semantics/elements/_ins.css +1 -1
  78. package/src/semantics/elements/_links.css +22 -18
  79. package/src/semantics/elements/_main.css +0 -4
  80. package/src/semantics/elements/_mark.css +2 -2
  81. package/src/semantics/elements/_nav.css +5 -8
  82. package/src/semantics/elements/_progress.css +5 -8
  83. package/src/semantics/elements/_section.css +0 -3
  84. package/src/semantics/elements/_small.css +3 -0
  85. package/src/semantics/elements/_table.css +3 -5
  86. package/src/semantics/elements/_type-checkbox-radio.css +19 -22
  87. package/src/semantics/elements/_type-color.css +2 -5
  88. package/src/semantics/elements/_type-date.css +1 -4
  89. package/src/semantics/elements/_type-file.css +7 -10
  90. package/src/semantics/elements/_type-range.css +11 -14
  91. package/src/semantics/elements/_type-search.css +6 -10
  92. package/src/semantics/index.css +2 -5
  93. package/src/semantics/modules.css +1 -7
  94. package/src/sizes/pico.css +20 -33
  95. package/src/utilities/_grid.css +306 -0
  96. package/src/utilities/_variables.css +27 -42
  97. package/src/utilities/borders/_border-radius.css +54 -79
  98. package/src/utilities/borders/_border-style.css +15 -5
  99. package/src/utilities/borders/_border-width.css +0 -28
  100. package/src/utilities/colors/_bg-colors.css +75 -0
  101. package/src/utilities/colors/_border-colors.css +17 -39
  102. package/src/utilities/colors/_subtle-colors.css +145 -0
  103. package/src/utilities/colors/_text-bg-colors.css +62 -0
  104. package/src/utilities/colors/_text-colors.css +32 -409
  105. package/src/utilities/effects/_focus-ring.css +33 -0
  106. package/src/utilities/effects/_shadows.css +0 -33
  107. package/src/utilities/index.css +16 -0
  108. package/src/utilities/layout/_misc.css +2 -5
  109. package/src/utilities/layout/{_grid.css → _ratio.css} +0 -19
  110. package/src/utilities/modules.css +9 -3
  111. package/src/utilities/sizing/_width.css +8 -0
  112. package/src/utilities/spacing/_gap.css +144 -144
  113. package/src/utilities/spacing/_margin.css +324 -324
  114. package/src/utilities/spacing/_padding.css +324 -324
  115. package/src/utilities/typography/_font-sizes.css +6 -6
  116. package/src/variables/_all.css +2 -20
  117. package/src/variables/_elements.css +29 -28
  118. package/src/variables/_theme.css +336 -0
  119. package/src/variants/_variables.css +24 -0
  120. package/src/variants/intent/_contrast.css +46 -0
  121. package/src/variants/intent/_danger.css +38 -0
  122. package/src/variants/intent/_info.css +38 -0
  123. package/src/variants/intent/_primary.css +38 -0
  124. package/src/variants/intent/_secondary.css +38 -0
  125. package/src/variants/intent/_success.css +38 -0
  126. package/src/variants/intent/_warning.css +38 -0
  127. package/src/variants/{_container.css → modifiers/_container.css} +3 -10
  128. package/src/variants/modifiers/_ghost.css +164 -0
  129. package/src/variants/modifiers/_striped.css +11 -0
  130. package/src/variants/modifiers/_subtle.css +133 -0
  131. package/src/variants/modules.css +12 -14
  132. package/src/_normalize.css +0 -214
  133. package/src/semantics/_misc.css +0 -3
  134. package/src/utilities/colors/_background-colors.css +0 -248
  135. package/src/variables/_colors.css +0 -355
  136. package/src/variables/_components.css +0 -330
  137. package/src/variables/_icons.css +0 -55
  138. package/src/variables/_layout.css +0 -123
  139. package/src/variants/_contained.css +0 -43
  140. package/src/variants/_contrast.css +0 -61
  141. package/src/variants/_ghost.css +0 -68
  142. package/src/variants/_pane-panel-card.css +0 -54
  143. package/src/variants/_secondary.css +0 -48
  144. package/src/variants/_striped.css +0 -10
@@ -1,3 +1,3 @@
1
1
  del {
2
- color: rgb(var(--color-danger-rgb));
2
+ color: var(--color-danger-text);
3
3
  }
@@ -1,6 +1,7 @@
1
- /**
2
- * Accordion (<details>)
3
- */
1
+ summary {
2
+ display: list-item; /* modern-normalize */
3
+ }
4
+
4
5
  details {
5
6
  display: block;
6
7
  margin-bottom: var(--spacing);
@@ -12,7 +13,7 @@ details {
12
13
  transition: color var(--transition);
13
14
 
14
15
  &:not([role]) {
15
- color: var(--accordion-closed-summary);
16
+ color: var(--details-summary-text);
16
17
  }
17
18
 
18
19
  &::-webkit-details-marker {
@@ -46,14 +47,14 @@ details {
46
47
  outline: none;
47
48
 
48
49
  &:not([role]) {
49
- color: var(--accordion-active-summary);
50
+ color: var(--details-summary-text-hover);
50
51
  }
51
52
  }
52
53
 
53
54
  &:focus-visible:not([role]) {
54
- outline: var(--outline-width) solid var(--color-primary-focus);
55
+ outline: var(--outline-size) solid var(--color-primary-focus-ring);
55
56
  outline-offset: calc(var(--spacing, 1rem) * 0.5);
56
- color: rgb(var(--color-primary-rgb));
57
+ color: var(--color-primary-text);
57
58
  }
58
59
 
59
60
  &[role=button] {
@@ -61,7 +62,7 @@ details {
61
62
  text-align: left;
62
63
 
63
64
  &:focus-visible {
64
- outline: var(--outline-width) solid var(--color-primary-focus);
65
+ outline: var(--outline-size) solid var(--color-primary-focus-ring);
65
66
  outline-offset: calc(var(--spacing, 1rem) * 0.5);
66
67
  }
67
68
 
@@ -76,7 +77,7 @@ details {
76
77
  margin-bottom: var(--spacing);
77
78
 
78
79
  &:not([role]):not(:focus) {
79
- color: var(--accordion-open-summary);
80
+ color: var(--details-summary-text-open);
80
81
  }
81
82
 
82
83
  &::after {
@@ -119,18 +120,18 @@ details:has(> summary[aria-haspopup="menu"]) {
119
120
  }
120
121
 
121
122
  & summary:not([role="button"]) {
122
- --outline-width: 0.0625rem;
123
+ --outline-size: 0.0625rem;
123
124
  }
124
125
 
125
126
  & > :where(summary:not([role])) {
126
127
  display: flex;
127
128
  align-items: center;
128
- height: calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2);
129
- padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);
130
- border: var(--border-width) solid var(--form-border-color);
131
- border-radius: var(--border-radius);
132
- background-color: var(--form-bg);
133
- color: var(--form-placeholder-color);
129
+ height: calc(1rem * var(--line-height) + var(--input-spacing-vertical) * 2 + var(--border-size) * 2);
130
+ padding: var(--input-spacing-vertical) var(--input-spacing-horizontal);
131
+ border: var(--border-size) solid var(--input-border);
132
+ border-radius: var(--radius);
133
+ background-color: var(--input-fill);
134
+ color: var(--input-placeholder-text);
134
135
  line-height: inherit;
135
136
  cursor: pointer;
136
137
  user-select: none;
@@ -138,12 +139,12 @@ details:has(> summary[aria-haspopup="menu"]) {
138
139
  }
139
140
 
140
141
  & > :where(summary:not([role]):active, summary:not([role]):focus) {
141
- border-color: var(--form-active-border);
142
- background-color: var(--form-active-bg);
142
+ border-color: var(--input-border-focus);
143
+ background-color: var(--input-fill-active);
143
144
  }
144
145
 
145
146
  & > :where(summary:not([role]):focus) {
146
- box-shadow: 0 0 0 var(--outline-width) var(--form-focus);
147
+ box-shadow: 0 0 0 var(--outline-size) var(--input-border-focus);
147
148
  }
148
149
 
149
150
  & > :where(summary:not([role]):focus-visible) {
@@ -151,15 +152,13 @@ details:has(> summary[aria-haspopup="menu"]) {
151
152
  }
152
153
 
153
154
  & > :where(summary:not([role])[aria-invalid=false]) {
154
- --form-border-color: var(--form-valid-border);
155
- --form-active-border: var(--form-valid-focus);
156
- --form-focus: var(--form-valid-focus);
155
+ --input-border: var(--color-success-fill);
156
+ --input-border-focus: var(--color-success-fill-hover);
157
157
  }
158
158
 
159
159
  & > :where(summary:not([role])[aria-invalid=true]) {
160
- --form-border-color: var(--form-invalid-border);
161
- --form-active-border: var(--form-invalid-focus);
162
- --form-focus: var(--form-invalid-focus);
160
+ --input-border: var(--color-danger-fill);
161
+ --input-border-focus: var(--color-danger-fill-hover);
163
162
  }
164
163
 
165
164
  & > :where(summary + ul[role="menu"]) {
@@ -171,11 +170,11 @@ details:has(> summary[aria-haspopup="menu"]) {
171
170
  width: 100%;
172
171
  min-width: fit-content;
173
172
  margin: 0;
174
- margin-top: var(--outline-width);
173
+ margin-top: var(--outline-size);
175
174
  padding: 0;
176
- border: var(--border-width) solid var(--menu-border);
177
- border-radius: var(--border-radius);
178
- background-color: var(--menu-bg);
175
+ border: var(--border-size) solid var(--menu-border);
176
+ border-radius: var(--radius);
177
+ background-color: var(--menu-fill);
179
178
  box-shadow: var(--menu-shadow);
180
179
  color: var(--menu-text);
181
180
  white-space: nowrap;
@@ -191,21 +190,21 @@ details:has(> summary[aria-haspopup="menu"]) {
191
190
  & > summary + ul[role="menu"] li {
192
191
  width: 100%;
193
192
  margin-bottom: 0;
194
- padding: calc(var(--form-element-spacing-vertical) * 0.5) var(--form-element-spacing-horizontal);
193
+ padding: calc(var(--input-spacing-vertical) * 0.5) var(--input-spacing-horizontal);
195
194
  list-style: none;
196
195
 
197
196
  &:first-of-type {
198
- margin-top: calc(var(--form-element-spacing-vertical) * 0.5);
197
+ margin-top: calc(var(--input-spacing-vertical) * 0.5);
199
198
  }
200
199
 
201
200
  &:last-of-type {
202
- margin-bottom: calc(var(--form-element-spacing-vertical) * 0.5);
201
+ margin-bottom: calc(var(--input-spacing-vertical) * 0.5);
203
202
  }
204
203
 
205
204
  & a {
206
205
  display: block;
207
- margin: calc(var(--form-element-spacing-vertical) * -0.5) calc(var(--form-element-spacing-horizontal) * -1);
208
- padding: calc(var(--form-element-spacing-vertical) * 0.5) var(--form-element-spacing-horizontal);
206
+ margin: calc(var(--input-spacing-vertical) * -0.5) calc(var(--input-spacing-horizontal) * -1);
207
+ padding: calc(var(--input-spacing-vertical) * 0.5) var(--input-spacing-horizontal);
209
208
  overflow: hidden;
210
209
  border-radius: 0;
211
210
  color: var(--menu-text);
@@ -217,7 +216,7 @@ details:has(> summary[aria-haspopup="menu"]) {
217
216
  &:active,
218
217
  &:focus-visible,
219
218
  &[aria-current]:not([aria-current=false]) {
220
- background-color: var(--menu-hover-bg);
219
+ background-color: var(--menu-fill-hover);
221
220
  }
222
221
  }
223
222
 
@@ -226,7 +225,7 @@ details:has(> summary[aria-haspopup="menu"]) {
226
225
  }
227
226
 
228
227
  &:has(label):hover {
229
- background-color: var(--menu-hover-bg);
228
+ background-color: var(--menu-fill-hover);
230
229
  }
231
230
  }
232
231
 
@@ -269,15 +268,15 @@ nav details:has(> summary[aria-haspopup="menu"]) {
269
268
  display: flex;
270
269
  align-items: center;
271
270
  height: auto;
272
- padding: calc(var(--nav-link-spacing) - var(--border-width) * 2) var(--nav-link-spacing);
271
+ padding: calc(var(--nav-link-gap) - var(--border-size) * 2) var(--nav-link-gap);
273
272
  }
274
273
 
275
274
  & > :where(summary:not([role]):focus-visible) {
276
- box-shadow: 0 0 0 var(--outline-width) var(--color-primary-focus);
275
+ box-shadow: 0 0 0 var(--outline-size) var(--color-primary-focus-ring);
277
276
  }
278
277
 
279
278
  & summary:focus-visible {
280
- --outline-width: 0.125rem;
279
+ --outline-size: 0.125rem;
281
280
  }
282
281
 
283
282
  /* Styles for dropdowns with role="button" inside nav */
@@ -286,6 +285,6 @@ nav details:has(> summary[aria-haspopup="menu"]) {
286
285
  align-items: center;
287
286
  width: auto;
288
287
  height: auto;
289
- padding: calc(var(--nav-link-spacing) - var(--border-width) * 2) var(--nav-link-spacing);
288
+ padding: calc(var(--nav-link-gap) - var(--border-size) * 2) var(--nav-link-gap);
290
289
  }
291
290
  }
@@ -1,7 +1,3 @@
1
- /**
2
- * Modal (<dialog>)
3
- */
4
-
5
1
  /* Prevent body scroll and interaction when modal is open */
6
2
  body:has(dialog[open]) {
7
3
  overflow: hidden;
@@ -20,9 +16,9 @@ dialog {
20
16
  margin: auto;
21
17
  overflow: auto;
22
18
  padding: var(--spacing);
23
- border-radius: var(--border-radius);
24
- background: var(--pane-bg);
25
- box-shadow: var(--pane-shadow);
19
+ border-radius: var(--radius);
20
+ background: var(--dialog-fill);
21
+ box-shadow: var(--dialog-shadow);
26
22
  border: 0;
27
23
 
28
24
  /* Opening animation using @starting-style (Chrome 117+, Firefox 129+, Safari 17.4+) */
@@ -45,8 +41,8 @@ dialog {
45
41
 
46
42
  /* Backdrop overlay */
47
43
  &::backdrop {
48
- backdrop-filter: var(--backdrop-overlay-filter);
49
- background-color: var(--backdrop-overlay-bg);
44
+ backdrop-filter: blur(0.375rem);
45
+ background-color: var(--dialog-overlay);
50
46
  transition: backdrop-filter 0.2s ease-in-out, background-color 0.2s ease-in-out;
51
47
  }
52
48
 
@@ -55,26 +51,26 @@ dialog {
55
51
  width: auto;
56
52
  margin-inline: calc(var(--spacing) * -1);
57
53
  padding-inline: var(--spacing);
58
- background-color: var(--pane-section-bg);
54
+ background-color: var(--dialog-section-fill);
59
55
  }
60
56
 
61
57
  /* Header styling */
62
58
  > header {
63
59
  margin-top: calc(var(--spacing) * -1);
64
- border-bottom: var(--border-width) solid var(--pane-section-border);
65
- border-top-right-radius: var(--border-radius);
66
- border-top-left-radius: var(--border-radius);
60
+ border-bottom: var(--border-size) solid var(--dialog-section-border);
61
+ border-top-right-radius: var(--radius);
62
+ border-top-left-radius: var(--radius);
67
63
  }
68
64
 
69
65
  /* Footer styling */
70
66
  > footer {
71
67
  margin-bottom: calc(var(--spacing) * -1);
72
- border-top: var(--border-width) solid var(--pane-section-border);
73
- border-bottom-right-radius: var(--border-radius);
74
- border-bottom-left-radius: var(--border-radius);
68
+ border-top: var(--border-size) solid var(--dialog-section-border);
69
+ border-bottom-right-radius: var(--radius);
70
+ border-bottom-left-radius: var(--radius);
75
71
  display: flex;
76
72
  justify-content: end;
77
- gap: calc(var(--nav-link-spacing) * 1.5);
73
+ gap: calc(var(--nav-link-gap) * 1.5);
78
74
  }
79
75
 
80
76
  /* Close button styling */
@@ -1,7 +1,4 @@
1
- /**
2
- * Document
3
- * Semantic document-level styles (variables applied)
4
- */
1
+
5
2
 
6
3
  :where(:root),
7
4
  :where(:host) {
@@ -16,3 +13,12 @@
16
13
  overflow-wrap: break-word;
17
14
  tab-size: 4;
18
15
  }
16
+
17
+ /* modern-normalize */
18
+ *, ::before, ::after {
19
+ box-sizing: border-box;
20
+ }
21
+
22
+ html {
23
+ -webkit-text-size-adjust: 100%
24
+ }
@@ -1,6 +1,3 @@
1
- /**
2
- * Embedded content
3
- */
4
1
  :where(audio, canvas, iframe, img, svg, video) {
5
2
  vertical-align: middle;
6
3
  }
@@ -1,6 +1,3 @@
1
- /**
2
- * Figure
3
- */
4
1
  figure {
5
2
  display: block;
6
3
  margin: 0;
@@ -1,6 +1,3 @@
1
- /**
2
- * Footer
3
- */
4
1
  footer {
5
2
  width: 100%;
6
3
  padding-block: var(--spacing);
@@ -1,6 +1,3 @@
1
- /**
2
- * Header
3
- */
4
1
  header {
5
2
  width: 100%;
6
3
  padding-block: var(--spacing);
@@ -6,29 +6,19 @@ h5,
6
6
  h6 {
7
7
  margin-top: 0;
8
8
  margin-bottom: var(--typography-spacing-vertical);
9
- color: var(--color-text);
10
9
  font-weight: var(--font-weight);
11
10
  font-size: var(--font-size);
12
11
  line-height: var(--line-height);
13
12
  font-family: var(--font-family);
14
13
  }
15
14
 
16
- /* Headings - progressive lightness using color-mix */
17
- h1 { --color-text: var(--color-heading-base); }
18
- h2 { --color-text: color-mix(in srgb, var(--color-heading-base), white 12%); }
19
- h3 { --color-text: color-mix(in srgb, var(--color-heading-base), white 22%); }
20
- h4 { --color-text: color-mix(in srgb, var(--color-heading-base), white 32%); }
21
- h5 { --color-text: color-mix(in srgb, var(--color-heading-base), white 45%); }
22
- h6 { --color-text: color-mix(in srgb, var(--color-heading-base), white 55%); }
23
-
24
- /* Dark mode headings - base is lightest, mix in black for lower levels */
25
- [data-theme="dark"] h1 { --color-text: var(--color-heading-base); }
26
- [data-theme="dark"] h2 { --color-text: color-mix(in srgb, var(--color-heading-base), black 8%); }
27
- [data-theme="dark"] h3 { --color-text: color-mix(in srgb, var(--color-heading-base), black 18%); }
28
- [data-theme="dark"] h4 { --color-text: color-mix(in srgb, var(--color-heading-base), black 28%); }
29
- [data-theme="dark"] h5 { --color-text: color-mix(in srgb, var(--color-heading-base), black 38%); }
30
- [data-theme="dark"] h6 { --color-text: color-mix(in srgb, var(--color-heading-base), black 48%); }
15
+ h1 { color: var(--color-text); }
16
+ h2 { color: color-mix(in srgb, var(--color-text) 90%, light-dark(white, black)); }
17
+ h3 { color: color-mix(in srgb, var(--color-text) 80%, light-dark(white, black)); }
18
+ h4 { color: color-mix(in srgb, var(--color-text) 70%, light-dark(white, black)); }
19
+ h5 { color: color-mix(in srgb, var(--color-text) 60%, light-dark(white, black)); }
20
+ h6 { color: color-mix(in srgb, var(--color-text) 65%, light-dark(white, black)); }
31
21
 
32
22
  :where(article, address, blockquote, dl, figure, form, ol, p, pre, table, ul, hr) ~ :is(h1, h2, h3, h4, h5, h6) {
33
- margin-top: var(--typography-spacing-top);
23
+ margin-top: var(--heading-gap-top);
34
24
  }
@@ -6,7 +6,7 @@ hgroup {
6
6
  margin-bottom: 0;
7
7
 
8
8
  &:not(:first-child):last-child {
9
- color: color-mix(in srgb, var(--color-text), rgb(128, 128, 128) 70%);
9
+ color: var(--color-text-muted);
10
10
  --font-weight: unset;
11
11
  font-size: 1rem;
12
12
  }
@@ -1,10 +1,7 @@
1
- /**
2
- * Horizontal Rule
3
- */
4
1
  hr {
5
2
  height: 0;
6
3
  margin: var(--typography-spacing-vertical) 0;
7
4
  border: 0;
8
- border-top: 1px solid var(--color-border-muted);
5
+ border-top: 1px solid var(--color-border);
9
6
  color: inherit;
10
7
  }
@@ -1,6 +1,3 @@
1
- /**
2
- * Basics form elements
3
- */
4
1
  input,
5
2
  optgroup,
6
3
  select,
@@ -79,7 +76,7 @@ textarea {
79
76
  }
80
77
 
81
78
  input:not([type=checkbox], [type=radio], [type=range]) {
82
- height: calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2);
79
+ height: calc(1rem * var(--line-height) + var(--input-spacing-vertical) * 2 + var(--border-size) * 2);
83
80
  }
84
81
 
85
82
  fieldset {
@@ -112,21 +109,21 @@ input:not([type=checkbox], [type=radio], [type=range], [type=file]),
112
109
  select,
113
110
  textarea {
114
111
  appearance: none;
115
- padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);
112
+ padding: var(--input-spacing-vertical) var(--input-spacing-horizontal);
116
113
  }
117
114
 
118
115
  input,
119
116
  select,
120
117
  textarea {
121
- --color-background: var(--form-bg);
122
- --border-color: var(--form-border-color);
123
- --color-text: var(--form-text-color);
124
- --shadow-lg: none;
125
- border: var(--border-width) solid var(--border-color);
126
- border-radius: var(--border-radius);
118
+ --color-background: var(--input-fill);
119
+ --border-color: var(--input-border);
120
+ --color-text: var(--input-text);
121
+ --shadow: none;
122
+ border: var(--border-size) solid var(--border-color);
123
+ border-radius: var(--radius);
127
124
  outline: none;
128
125
  background-color: var(--color-background);
129
- box-shadow: var(--shadow-lg);
126
+ box-shadow: var(--shadow);
130
127
  color: var(--color-text);
131
128
  font-weight: var(--font-weight);
132
129
  transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
@@ -139,12 +136,12 @@ input:not([type=submit],
139
136
  [type=radio],
140
137
  [readonly]):is(:active, :focus),
141
138
  :where(select, textarea):not([readonly]):is(:active, :focus) {
142
- --color-background: var(--form-active-bg);
139
+ --color-background: var(--input-fill-active);
143
140
  }
144
141
 
145
142
  input:not([type=submit], [type=button], [type=reset], [role=switch], [readonly]):is(:active, :focus),
146
143
  :where(select, textarea):not([readonly]):is(:active, :focus) {
147
- --border-color: var(--form-active-border);
144
+ --border-color: var(--input-border-focus);
148
145
  }
149
146
 
150
147
  input:not([type=submit],
@@ -154,7 +151,7 @@ input:not([type=submit],
154
151
  [type=file],
155
152
  [readonly]):focus,
156
153
  :where(select, textarea):not([readonly]):focus {
157
- --shadow-lg: 0 0 0 var(--outline-width) var(--form-focus);
154
+ --shadow: 0 0 0 var(--outline-size) var(--input-border-focus);
158
155
  }
159
156
 
160
157
  input:not([type=submit], [type=button], [type=reset])[disabled],
@@ -162,7 +159,7 @@ select[disabled],
162
159
  textarea[disabled],
163
160
  label[aria-disabled=true],
164
161
  :where(fieldset[disabled]) :is(input:not([type=submit], [type=button], [type=reset]), select, textarea) {
165
- opacity: var(--form-disabled-opacity);
162
+ opacity: var(--input-opacity-disabled);
166
163
  pointer-events: none;
167
164
  }
168
165
 
@@ -178,10 +175,10 @@ label[aria-disabled=true] input[disabled] {
178
175
  [type=time],
179
176
  [type=week],
180
177
  [type=range])[aria-invalid]) {
181
- padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem);
182
- padding-left: var(--form-element-spacing-horizontal);
183
- padding-inline-start: var(--form-element-spacing-horizontal);
184
- padding-inline-end: calc(var(--form-element-spacing-horizontal) + 1.5rem);
178
+ padding-right: calc(var(--input-spacing-horizontal) + 1.5rem);
179
+ padding-left: var(--input-spacing-horizontal);
180
+ padding-inline-start: var(--input-spacing-horizontal);
181
+ padding-inline-end: calc(var(--input-spacing-horizontal) + 1.5rem);
185
182
  background-position: center right 0.75rem;
186
183
  background-size: 1rem auto;
187
184
  background-repeat: no-repeat;
@@ -208,23 +205,23 @@ label[aria-disabled=true] input[disabled] {
208
205
  }
209
206
 
210
207
  :is(input, select, textarea)[aria-invalid=false] {
211
- --border-color: var(--form-valid-border);
208
+ --border-color: var(--color-success-fill);
212
209
  }
213
210
  :is(input, select, textarea)[aria-invalid=false]:is(:active, :focus) {
214
- --border-color: var(--form-valid-active-border);
211
+ --border-color: var(--color-success-fill-hover);
215
212
  }
216
213
  input:not([type=checkbox], [type=radio])[aria-invalid=false]:is(:active, :focus), select[aria-invalid=false]:is(:active, :focus), textarea[aria-invalid=false]:is(:active, :focus) {
217
- --shadow-lg: 0 0 0 var(--outline-width) var(--form-valid-focus);
214
+ --shadow: 0 0 0 var(--outline-size) var(--color-success-fill);
218
215
  }
219
216
 
220
217
  :is(input, select, textarea)[aria-invalid=true] {
221
- --border-color: var(--form-invalid-border);
218
+ --border-color: var(--color-danger-fill);
222
219
  }
223
220
  :is(input, select, textarea)[aria-invalid=true]:is(:active, :focus) {
224
- --border-color: var(--form-invalid-active-border);
221
+ --border-color: var(--color-danger-fill-hover);
225
222
  }
226
223
  input:not([type=checkbox], [type=radio])[aria-invalid=true]:is(:active, :focus), select[aria-invalid=true]:is(:active, :focus), textarea[aria-invalid=true]:is(:active, :focus) {
227
- --shadow-lg: 0 0 0 var(--outline-width) var(--form-invalid-focus);
224
+ --shadow: 0 0 0 var(--outline-size) var(--color-danger-fill);
228
225
  }
229
226
 
230
227
  :where([dir=rtl] :is(input, select, textarea):not([type=checkbox], [type=radio]):is([aria-invalid], [aria-invalid=true], [aria-invalid=false])) {
@@ -236,7 +233,7 @@ input::-webkit-input-placeholder,
236
233
  textarea::placeholder,
237
234
  textarea::-webkit-input-placeholder,
238
235
  select:invalid {
239
- color: var(--form-placeholder-color);
236
+ color: var(--input-placeholder-text);
240
237
  opacity: 1;
241
238
  }
242
239
 
@@ -253,10 +250,10 @@ select {
253
250
  }
254
251
 
255
252
  &:not([multiple], [size]) {
256
- padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem);
257
- padding-left: var(--form-element-spacing-horizontal);
258
- padding-inline-start: var(--form-element-spacing-horizontal);
259
- padding-inline-end: calc(var(--form-element-spacing-horizontal) + 1.5rem);
253
+ padding-right: calc(var(--input-spacing-horizontal) + 1.5rem);
254
+ padding-left: var(--input-spacing-horizontal);
255
+ padding-inline-start: var(--input-spacing-horizontal);
256
+ padding-inline-end: calc(var(--input-spacing-horizontal) + 1.5rem);
260
257
  background-image: var(--icon-chevron);
261
258
  background-position: center right 0.75rem;
262
259
  background-size: 1rem auto;
@@ -264,8 +261,8 @@ select {
264
261
  }
265
262
 
266
263
  &[multiple] option:checked {
267
- background: var(--form-selected-bg);
268
- color: var(--form-text-color);
264
+ background: var(--input-fill-selected);
265
+ color: var(--input-text);
269
266
  }
270
267
  }
271
268
 
@@ -279,7 +276,7 @@ textarea {
279
276
  }
280
277
 
281
278
  :where(textarea[aria-invalid]) {
282
- --icon-height: calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2);
279
+ --icon-height: calc(1rem * var(--line-height) + var(--input-spacing-vertical) * 2 + var(--border-size) * 2);
283
280
  background-position: top right 0.75rem;
284
281
  background-size: 1rem var(--icon-height);
285
282
  }
@@ -293,11 +290,11 @@ textarea {
293
290
  }
294
291
 
295
292
  :where(input, select, textarea, fieldset)[aria-invalid=false] + small {
296
- color: rgb(var(--color-success-rgb));
293
+ color: var(--color-success-text);
297
294
  }
298
295
 
299
296
  :where(input, select, textarea, fieldset)[aria-invalid=true] + small {
300
- color: rgb(var(--color-danger-rgb));
297
+ color: var(--color-danger-text);
301
298
  }
302
299
 
303
300
  label > :where(input, select, textarea) {
@@ -1,4 +1,4 @@
1
1
  ins {
2
- color: rgb(var(--color-success-rgb));
2
+ color: var(--color-success-text);
3
3
  text-decoration: none;
4
4
  }
@@ -1,37 +1,41 @@
1
- /**
2
- * Link
3
- */
4
1
  :where(a:not([role=button])),
5
2
  [role=link] {
6
3
  --color-background: transparent;
7
4
  --border-color: transparent;
8
- --color-text: rgb(var(--color-primary-rgb));
9
- --shadow-lg: transparent;
10
- --underline: var(--color-primary-underline);
5
+ --color-text: var(--color-primary-text);
6
+ --shadow: transparent;
11
7
  outline: none;
12
8
  padding: 0;
13
9
  background-color: var(--color-background);
14
10
  color: var(--color-text);
15
- text-decoration: var(--text-decoration);
16
- text-decoration-color: var(--underline);
11
+ text-decoration: var(--a-decoration);
12
+ text-decoration-color: oklch(from var(--color-text) l c h / 0.3);
17
13
  text-underline-offset: 0.125em;
18
- transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition);
14
+ transition: background-color var(--transition), color var(--transition), text-decoration-color var(--transition), text-decoration var(--transition), box-shadow var(--transition);
19
15
 
20
- &:is(:hover, :active, :focus) {
16
+ &:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
21
17
  --color-background: transparent;
22
18
  --border-color: transparent;
23
- --color-text: rgb(var(--color-primary-rgb));
24
- --shadow-lg: transparent;
19
+ --color-text: var(--color-primary-text-hover);
20
+ --shadow: transparent;
21
+ text-decoration-color: oklch(from var(--color-text) l c h / 0.85);
25
22
  }
26
23
 
27
- &:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
28
- --color-text: var(--color-primary-hover);
29
- --underline: var(--color-primary-hover-underline);
30
- --text-decoration: underline;
24
+ &:is([aria-current]:not([aria-current=false])) {
25
+ font-weight: 500;
26
+ text-decoration-color: oklch(from var(--color-text) l c h / 0.6);
31
27
  }
32
28
 
33
29
  &:focus-visible {
34
- box-shadow: 0 0 0 var(--outline-width) var(--color-primary-focus);
30
+ box-shadow: 0 0 0 var(--outline-size) var(--color-primary-focus-ring);
31
+ }
32
+ }
33
+
34
+ [role=link] {
35
+ cursor: pointer;
36
+
37
+ &button {
38
+ display: inline-flex;
35
39
  }
36
40
  }
37
41
 
@@ -51,7 +55,7 @@ aside {
51
55
  nav {
52
56
  a:not([role=button]), [role=link] {
53
57
  &:not(:hover) {
54
- text-decoration: none;
58
+ --a-decoration: none;
55
59
  }
56
60
  }
57
61
  }
@@ -1,7 +1,3 @@
1
- /**
2
- * Main fills up the available width, and has a height defined by its content.
3
- * Stacks its children vertically.
4
- */
5
1
  main {
6
2
  width: 100%;
7
3
  }
@@ -1,6 +1,6 @@
1
1
  mark {
2
2
  padding: 0.125rem 0.25rem;
3
- background-color: var(--color-mark-bg);
4
- color: var(--color-mark-text);
3
+ background-color: var(--color-warning-fill);
4
+ color: var(--color-warning-on-fill);
5
5
  vertical-align: baseline;
6
6
  }