@semanticus/semanticus-css 0.9.0 → 1.1.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 (148) 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 +47 -0
  30. package/src/{variants → components}/_container.css +3 -10
  31. package/src/components/_icons.css +59 -0
  32. package/src/components/_pane.css +19 -0
  33. package/src/{variants → components}/_sidebar.css +3 -5
  34. package/src/components/modules.css +5 -0
  35. package/src/index.css +8 -10
  36. package/src/no-utilities.css +22 -0
  37. package/src/palettes/amber.css +28 -53
  38. package/src/palettes/azure.css +31 -0
  39. package/src/palettes/blue.css +28 -53
  40. package/src/palettes/cyan.css +28 -53
  41. package/src/palettes/fuchsia.css +28 -53
  42. package/src/palettes/green.css +28 -53
  43. package/src/palettes/grey.css +28 -53
  44. package/src/palettes/indigo.css +28 -53
  45. package/src/palettes/jade.css +28 -53
  46. package/src/palettes/lime.css +28 -53
  47. package/src/palettes/orange.css +28 -53
  48. package/src/palettes/pink.css +28 -53
  49. package/src/palettes/pumpkin.css +28 -53
  50. package/src/palettes/purple.css +28 -53
  51. package/src/palettes/red.css +28 -53
  52. package/src/palettes/sand.css +28 -53
  53. package/src/palettes/slate.css +28 -53
  54. package/src/palettes/violet.css +28 -53
  55. package/src/palettes/yellow.css +28 -53
  56. package/src/palettes/zinc.css +28 -53
  57. package/src/semantics/attributes/_aria-busy.css +0 -3
  58. package/src/semantics/attributes/_aria-disabled.css +25 -0
  59. package/src/semantics/attributes/_hidden.css +0 -3
  60. package/src/semantics/attributes/_role-group-search.css +11 -14
  61. package/src/semantics/attributes/_role-status-alert.css +123 -0
  62. package/src/semantics/attributes/_role-toolbar.css +2 -5
  63. package/src/semantics/attributes/_role-tooltip.css +7 -10
  64. package/src/semantics/elements/_article.css +0 -3
  65. package/src/semantics/elements/_aside.css +1 -7
  66. package/src/semantics/elements/_blockquote.css +2 -2
  67. package/src/semantics/elements/_body.css +1 -4
  68. package/src/semantics/elements/_button.css +25 -31
  69. package/src/semantics/elements/_code.css +5 -8
  70. package/src/semantics/elements/_del.css +1 -1
  71. package/src/semantics/elements/_details.css +39 -40
  72. package/src/semantics/elements/_dialog.css +19 -43
  73. package/src/semantics/elements/_document.css +10 -4
  74. package/src/semantics/elements/_embedded.css +0 -3
  75. package/src/semantics/elements/_figure.css +0 -3
  76. package/src/semantics/elements/_footer.css +0 -3
  77. package/src/semantics/elements/_header.css +0 -3
  78. package/src/semantics/elements/_headings.css +7 -17
  79. package/src/semantics/elements/_hgroup.css +1 -1
  80. package/src/semantics/elements/_hr.css +1 -4
  81. package/src/semantics/elements/_input.css +33 -36
  82. package/src/semantics/elements/_ins.css +1 -1
  83. package/src/semantics/elements/_links.css +22 -18
  84. package/src/semantics/elements/_main.css +0 -4
  85. package/src/semantics/elements/_mark.css +2 -2
  86. package/src/semantics/elements/_nav.css +5 -8
  87. package/src/semantics/elements/_progress.css +5 -8
  88. package/src/semantics/elements/_section.css +0 -3
  89. package/src/semantics/elements/_small.css +3 -0
  90. package/src/semantics/elements/_table.css +3 -5
  91. package/src/semantics/elements/_type-checkbox-radio.css +19 -22
  92. package/src/semantics/elements/_type-color.css +2 -5
  93. package/src/semantics/elements/_type-date.css +1 -4
  94. package/src/semantics/elements/_type-file.css +7 -10
  95. package/src/semantics/elements/_type-range.css +11 -14
  96. package/src/semantics/elements/_type-search.css +6 -10
  97. package/src/semantics/index.css +2 -5
  98. package/src/semantics/modules.css +3 -7
  99. package/src/sizes/pico.css +20 -33
  100. package/src/utilities/_grid.css +306 -0
  101. package/src/utilities/_variables.css +27 -42
  102. package/src/utilities/borders/_border-radius.css +54 -79
  103. package/src/utilities/borders/_border-style.css +15 -5
  104. package/src/utilities/borders/_border-width.css +0 -28
  105. package/src/utilities/colors/_bg-colors.css +75 -0
  106. package/src/utilities/colors/_border-colors.css +17 -39
  107. package/src/utilities/colors/_subtle-colors.css +145 -0
  108. package/src/utilities/colors/_text-bg-colors.css +62 -0
  109. package/src/utilities/colors/_text-colors.css +32 -409
  110. package/src/utilities/effects/_focus-ring.css +33 -0
  111. package/src/utilities/effects/_shadows.css +0 -33
  112. package/src/utilities/index.css +16 -0
  113. package/src/utilities/layout/_misc.css +2 -5
  114. package/src/utilities/layout/{_grid.css → _ratio.css} +0 -19
  115. package/src/utilities/modules.css +9 -3
  116. package/src/utilities/sizing/_width.css +8 -0
  117. package/src/utilities/spacing/_gap.css +144 -144
  118. package/src/utilities/spacing/_margin.css +324 -324
  119. package/src/utilities/spacing/_padding.css +324 -324
  120. package/src/utilities/typography/_font-sizes.css +6 -6
  121. package/src/variables/_all.css +2 -20
  122. package/src/variables/_elements.css +29 -28
  123. package/src/variables/_theme.css +336 -0
  124. package/src/variants/_variables.css +24 -0
  125. package/src/variants/intent/_contrast.css +47 -0
  126. package/src/variants/intent/_danger.css +39 -0
  127. package/src/variants/intent/_info.css +39 -0
  128. package/src/variants/intent/_primary.css +39 -0
  129. package/src/variants/intent/_secondary.css +39 -0
  130. package/src/variants/intent/_success.css +39 -0
  131. package/src/variants/intent/_warning.css +39 -0
  132. package/src/variants/modifiers/_ghost.css +164 -0
  133. package/src/variants/modifiers/_striped.css +11 -0
  134. package/src/variants/modifiers/_subtle.css +133 -0
  135. package/src/variants/modules.css +11 -14
  136. package/src/_normalize.css +0 -214
  137. package/src/semantics/_misc.css +0 -3
  138. package/src/utilities/colors/_background-colors.css +0 -248
  139. package/src/variables/_colors.css +0 -355
  140. package/src/variables/_components.css +0 -330
  141. package/src/variables/_icons.css +0 -55
  142. package/src/variables/_layout.css +0 -123
  143. package/src/variants/_contained.css +0 -43
  144. package/src/variants/_contrast.css +0 -61
  145. package/src/variants/_ghost.css +0 -68
  146. package/src/variants/_pane-panel-card.css +0 -54
  147. package/src/variants/_secondary.css +0 -48
  148. package/src/variants/_striped.css +0 -10
@@ -1,8 +1,5 @@
1
- /**
2
- * Body fills up the available width, and has the same height as the viewport.
3
- * Stacks its children vertically.
4
- */
5
1
  body {
6
2
  width: 100%;
7
3
  min-height: 100svh;
4
+ margin: 0; /* modern-normalize */
8
5
  }
@@ -1,6 +1,3 @@
1
- /**
2
- * Button
3
- */
4
1
  button {
5
2
  margin: 0;
6
3
  overflow: visible;
@@ -21,16 +18,16 @@ button,
21
18
  [type=button],
22
19
  [type=file]::file-selector-button,
23
20
  [role=button] {
24
- --color-background: var(--color-primary-bg);
25
- --border-color: var(--color-primary-border);
26
- --color-text: var(--color-primary-inverse);
27
- --shadow-lg: var(--button-shadow, 0 0 0 rgba(0, 0, 0, 0));
28
- padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);
29
- border: var(--border-width) solid var(--border-color);
30
- border-radius: var(--border-radius);
21
+ --color-background: var(--color-primary-fill);
22
+ --border-color: var(--color-primary-fill);
23
+ --color-text: var(--color-primary-on-fill);
24
+ --shadow: var(--button-shadow, 0 0 0 rgba(0, 0, 0, 0));
25
+ padding: var(--input-spacing-vertical) var(--input-spacing-horizontal);
26
+ border: var(--border-size) solid var(--border-color);
27
+ border-radius: var(--radius);
31
28
  outline: none;
32
29
  background-color: var(--color-background);
33
- box-shadow: var(--shadow-lg);
30
+ box-shadow: var(--shadow);
34
31
  color: var(--color-text);
35
32
  font-weight: var(--font-weight);
36
33
  font-size: 1rem;
@@ -52,10 +49,10 @@ button:is([aria-current]:not([aria-current=false])), button:is(:hover, :active,
52
49
  [type=file]::file-selector-button:is(:hover, :active, :focus),
53
50
  [role=button]:is([aria-current]:not([aria-current=false])),
54
51
  [role=button]:is(:hover, :active, :focus) {
55
- --color-background: var(--color-primary-hover-bg);
56
- --border-color: var(--color-primary-hover-border);
57
- --shadow-lg: var(--button-shadow-hover, 0 0 0 rgba(0, 0, 0, 0));
58
- --color-text: var(--color-primary-inverse);
52
+ --color-background: var(--color-primary-fill-hover);
53
+ --border-color: var(--color-primary-fill-hover);
54
+ --shadow: var(--button-shadow-hover, 0 0 0 rgba(0, 0, 0, 0));
55
+ --color-text: var(--color-primary-on-fill);
59
56
  }
60
57
 
61
58
  button:focus, button:is([aria-current]:not([aria-current=false])):focus,
@@ -68,7 +65,7 @@ button:focus, button:is([aria-current]:not([aria-current=false])):focus,
68
65
  [type=file]::file-selector-button:focus,
69
66
  [role=button]:focus,
70
67
  [role=button]:is([aria-current]:not([aria-current=false])):focus {
71
- --shadow-lg: var(--button-shadow-hover, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--color-primary-focus);
68
+ --shadow: var(--button-shadow-hover, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-size) var(--color-primary-focus-ring);
72
69
  }
73
70
 
74
71
  [type=submit],
@@ -78,27 +75,24 @@ button:focus, button:is([aria-current]:not([aria-current=false])):focus,
78
75
  }
79
76
 
80
77
  [type=reset],
81
- [type=file]::file-selector-button,
82
- [aria-label="Close"] {
83
- --color-background: var(--color-secondary-bg);
84
- --border-color: var(--color-secondary-border);
85
- --color-text: var(--color-secondary-inverse);
78
+ [type=file]::file-selector-button {
79
+ --color-background: var(--color-secondary-fill);
80
+ --border-color: var(--color-secondary-fill);
81
+ --color-text: var(--color-secondary-on-fill);
86
82
  cursor: pointer;
87
83
  }
88
84
 
89
85
  [type=reset]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
90
- [type=file]::file-selector-button:is(:hover, :active, :focus),
91
- [aria-label="Close"]:is(:hover, :active, :focus) {
92
- --color-background: var(--color-secondary-hover-bg);
93
- --border-color: var(--color-secondary-hover-border);
94
- --color-text: var(--color-secondary-inverse);
86
+ [type=file]::file-selector-button:is(:hover, :active, :focus) {
87
+ --color-background: var(--color-secondary-fill-hover);
88
+ --border-color: var(--color-secondary-fill-hover);
89
+ --color-text: var(--color-secondary-on-fill);
95
90
  }
96
91
 
97
92
  [type=reset]:focus,
98
- [aria-label="Close"]:focus,
99
93
  [type=reset]:is([aria-current]:not([aria-current=false])):focus,
100
94
  [type=file]::file-selector-button:focus {
101
- --shadow-lg: var(--button-shadow-hover, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--color-secondary-focus);
95
+ --shadow: var(--button-shadow-hover, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-size) var(--color-secondary-focus-ring);
102
96
  }
103
97
 
104
98
  :is(button, [type=submit], [type=reset], [type=button], [role=button])[disabled],
@@ -118,13 +112,13 @@ aside {
118
112
 
119
113
  nav {
120
114
  :where(button, [role=button], [type=button], input:not([type=checkbox], [type=radio], [type=range], [type=file]), select) {
121
- --form-element-spacing-vertical: calc(var(--nav-link-spacing) - var(--border-width) * 2);
122
- --form-element-spacing-horizontal: var(--nav-link-spacing);
115
+ --input-spacing-vertical: calc(var(--nav-link-gap) - var(--border-size) * 2);
116
+ --input-spacing-horizontal: var(--nav-link-gap);
123
117
 
124
118
  height: auto;
125
119
  margin-right: inherit;
126
120
  margin-bottom: 0;
127
121
  margin-left: inherit;
128
- padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);
122
+ padding: var(--input-spacing-vertical) var(--input-spacing-horizontal);
129
123
  }
130
124
  }
@@ -1,15 +1,12 @@
1
- /**
2
- * Code
3
- */
4
1
  pre,
5
2
  code,
6
3
  kbd,
7
4
  samp {
8
5
  font-size: 0.875em;
9
6
  font-family: var(--font-family);
10
- border-radius: var(--border-radius);
11
- background: var(--code-bg);
12
- color: var(--code-color);
7
+ border-radius: var(--radius);
8
+ background: var(--code-fill);
9
+ color: var(--code-text);
13
10
  font-weight: var(--font-weight);
14
11
  line-height: initial;
15
12
  }
@@ -47,7 +44,7 @@ pre {
47
44
  }
48
45
 
49
46
  kbd {
50
- background-color: var(--kbd-bg);
51
- color: var(--kbd-color);
47
+ background-color: var(--kbd-fill);
48
+ color: var(--kbd-text);
52
49
  vertical-align: baseline;
53
50
  }
@@ -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,10 +16,10 @@ 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);
26
- border: 0;
19
+ border-radius: var(--radius);
20
+ background: var(--dialog-fill);
21
+ box-shadow: var(--dialog-shadow);
22
+ border: var(--border-size) solid var(--border-color);
27
23
 
28
24
  /* Opening animation using @starting-style (Chrome 117+, Firefox 129+, Safari 17.4+) */
29
25
  /* Gracefully degrades to instant appearance in unsupported browsers */
@@ -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,52 +51,32 @@ 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);
55
+ display: flex;
56
+ gap: calc(var(--nav-link-gap) * 1.5);
57
+ align-items: center;
59
58
  }
60
59
 
61
60
  /* Header styling */
62
61
  > header {
63
62
  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);
63
+ border-bottom: var(--border-size) solid var(--dialog-section-border);
64
+ border-top-right-radius: var(--radius);
65
+ border-top-left-radius: var(--radius);
66
+ justify-content: space-between;
67
67
  }
68
68
 
69
69
  /* Footer styling */
70
70
  > footer {
71
71
  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);
75
- display: flex;
72
+ border-top: var(--border-size) solid var(--dialog-section-border);
73
+ border-bottom-right-radius: var(--radius);
74
+ border-bottom-left-radius: var(--radius);
76
75
  justify-content: end;
77
- gap: calc(var(--nav-link-spacing) * 1.5);
78
76
  }
79
77
 
80
- /* Close button styling */
81
- [rel=prev] {
82
- margin: 0;
83
- padding: 0;
84
- position: absolute;
85
- display: block;
86
- width: 1rem;
87
- height: 1rem;
88
- top: calc(var(--spacing) * .66);
89
- right: var(--spacing);
90
- border: none;
91
- border-radius: 0;
92
- background-image: var(--icon-close);
93
- background-position: center;
94
- background-size: auto 1rem;
95
- background-repeat: no-repeat;
96
- background-color: transparent;
97
- box-shadow: none;
98
- opacity: 0.5;
99
- transition: opacity var(--transition);
100
-
101
- &:hover {
102
- opacity: 1;
103
- }
78
+ > :last-child:is(hgroup, h1, h2, h3, h4, h5, h6) {
79
+ margin-bottom: 0;
104
80
  }
105
81
  }
106
82
 
@@ -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
  }