@semanticus/semanticus-css 0.8.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 (166) 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 +28 -16
  29. package/src/components/_card.css +84 -0
  30. package/src/components/_sidebar.css +49 -0
  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/{_aria-busy.css → attributes/_aria-busy.css} +0 -3
  55. package/src/semantics/{_hidden.css → attributes/_hidden.css} +0 -3
  56. package/src/semantics/attributes/_popover.css +13 -0
  57. package/src/semantics/attributes/_role-group-search.css +137 -0
  58. package/src/semantics/{_role-toolbar.css → attributes/_role-toolbar.css} +2 -5
  59. package/src/semantics/{_role-tooltip.css → attributes/_role-tooltip.css} +6 -9
  60. package/src/semantics/elements/_abbr.css +5 -0
  61. package/src/semantics/elements/_address.css +7 -0
  62. package/src/semantics/elements/_article.css +3 -0
  63. package/src/semantics/elements/_aside.css +10 -0
  64. package/src/semantics/elements/_blockquote.css +18 -0
  65. package/src/semantics/elements/_body.css +5 -0
  66. package/src/semantics/{_button.css → elements/_button.css} +23 -26
  67. package/src/semantics/{_code.css → elements/_code.css} +11 -11
  68. package/src/semantics/elements/_del.css +3 -0
  69. package/src/semantics/{_details.css → elements/_details.css} +42 -43
  70. package/src/semantics/elements/_dialog.css +113 -0
  71. package/src/semantics/{_document.css → elements/_document.css} +10 -4
  72. package/src/semantics/{_embedded.css → elements/_embedded.css} +0 -3
  73. package/src/semantics/{_figure.css → elements/_figure.css} +0 -3
  74. package/src/semantics/elements/_footer.css +10 -0
  75. package/src/semantics/elements/_header.css +10 -0
  76. package/src/semantics/elements/_headings.css +24 -0
  77. package/src/semantics/elements/_hgroup.css +14 -0
  78. package/src/semantics/{_hr.css → elements/_hr.css} +1 -4
  79. package/src/semantics/{_input.css → elements/_input.css} +34 -38
  80. package/src/semantics/elements/_ins.css +4 -0
  81. package/src/semantics/elements/_links.css +61 -0
  82. package/src/semantics/elements/_lists.css +22 -0
  83. package/src/semantics/elements/_main.css +3 -0
  84. package/src/semantics/elements/_mark.css +6 -0
  85. package/src/semantics/{_nav.css → elements/_nav.css} +5 -8
  86. package/src/semantics/elements/_p.css +11 -0
  87. package/src/semantics/{_progress.css → elements/_progress.css} +5 -8
  88. package/src/semantics/elements/_section.css +4 -0
  89. package/src/semantics/elements/_small.css +3 -0
  90. package/src/semantics/elements/_strong.css +4 -0
  91. package/src/semantics/elements/_sub.css +7 -0
  92. package/src/semantics/elements/_sup.css +7 -0
  93. package/src/semantics/{_table.css → elements/_table.css} +10 -7
  94. package/src/semantics/{_type-checkbox-radio.css → elements/_type-checkbox-radio.css} +19 -22
  95. package/src/semantics/{_type-color.css → elements/_type-color.css} +2 -5
  96. package/src/semantics/{_type-date.css → elements/_type-date.css} +1 -4
  97. package/src/semantics/elements/_type-file.css +23 -0
  98. package/src/semantics/{_type-range.css → elements/_type-range.css} +11 -14
  99. package/src/semantics/elements/_type-search.css +30 -0
  100. package/src/semantics/index.css +2 -5
  101. package/src/semantics/modules.css +46 -37
  102. package/src/sizes/pico.css +21 -29
  103. package/src/utilities/_grid.css +306 -0
  104. package/src/utilities/_variables.css +27 -42
  105. package/src/utilities/borders/_border-radius.css +54 -79
  106. package/src/utilities/borders/_border-style.css +15 -5
  107. package/src/utilities/borders/_border-width.css +0 -28
  108. package/src/utilities/colors/_bg-colors.css +75 -0
  109. package/src/utilities/colors/_border-colors.css +17 -39
  110. package/src/utilities/colors/_subtle-colors.css +145 -0
  111. package/src/utilities/colors/_text-bg-colors.css +62 -0
  112. package/src/utilities/colors/_text-colors.css +32 -409
  113. package/src/utilities/effects/_focus-ring.css +33 -0
  114. package/src/utilities/effects/_shadows.css +0 -33
  115. package/src/utilities/index.css +16 -0
  116. package/src/utilities/layout/_misc.css +2 -5
  117. package/src/utilities/layout/{_grid.css → _ratio.css} +0 -19
  118. package/src/utilities/modules.css +9 -3
  119. package/src/utilities/sizing/_width.css +8 -0
  120. package/src/utilities/spacing/_gap.css +144 -144
  121. package/src/utilities/spacing/_margin.css +324 -324
  122. package/src/utilities/spacing/_padding.css +324 -324
  123. package/src/utilities/typography/_font-sizes.css +6 -6
  124. package/src/variables/_all.css +2 -20
  125. package/src/variables/_elements.css +29 -33
  126. package/src/variables/_theme.css +336 -0
  127. package/src/variants/_variables.css +24 -0
  128. package/src/variants/intent/_contrast.css +46 -0
  129. package/src/variants/intent/_danger.css +38 -0
  130. package/src/variants/intent/_info.css +38 -0
  131. package/src/variants/intent/_primary.css +38 -0
  132. package/src/variants/intent/_secondary.css +38 -0
  133. package/src/variants/intent/_success.css +38 -0
  134. package/src/variants/intent/_warning.css +38 -0
  135. package/src/variants/{_container.css → modifiers/_container.css} +3 -10
  136. package/src/variants/modifiers/_ghost.css +164 -0
  137. package/src/variants/modifiers/_striped.css +11 -0
  138. package/src/variants/modifiers/_subtle.css +133 -0
  139. package/src/variants/modules.css +12 -15
  140. package/src/_normalize.css +0 -214
  141. package/src/semantics/_article.css +0 -12
  142. package/src/semantics/_aside.css +0 -16
  143. package/src/semantics/_body.css +0 -8
  144. package/src/semantics/_dialog.css +0 -157
  145. package/src/semantics/_footer.css +0 -12
  146. package/src/semantics/_header.css +0 -12
  147. package/src/semantics/_links.css +0 -50
  148. package/src/semantics/_main.css +0 -10
  149. package/src/semantics/_role-group-search.css +0 -129
  150. package/src/semantics/_section.css +0 -9
  151. package/src/semantics/_type-file.css +0 -26
  152. package/src/semantics/_type-search.css +0 -34
  153. package/src/semantics/_typography.css +0 -146
  154. package/src/utilities/colors/_background-colors.css +0 -248
  155. package/src/variables/_colors.css +0 -366
  156. package/src/variables/_components.css +0 -318
  157. package/src/variables/_icons.css +0 -43
  158. package/src/variables/_layout.css +0 -128
  159. package/src/variants/_card.css +0 -45
  160. package/src/variants/_contained.css +0 -43
  161. package/src/variants/_contrast.css +0 -47
  162. package/src/variants/_ghost.css +0 -61
  163. package/src/variants/_panel.css +0 -18
  164. package/src/variants/_secondary.css +0 -35
  165. package/src/variants/_sidebar.css +0 -11
  166. package/src/variants/_striped.css +0 -10
@@ -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],
@@ -80,25 +77,25 @@ button:focus, button:is([aria-current]:not([aria-current=false])):focus,
80
77
  [type=reset],
81
78
  [type=file]::file-selector-button,
82
79
  [aria-label="Close"] {
83
- --color-background: var(--color-secondary-bg);
84
- --border-color: var(--color-secondary-border);
85
- --color-text: var(--color-secondary-inverse);
80
+ --color-background: var(--color-secondary-fill);
81
+ --border-color: var(--color-secondary-fill);
82
+ --color-text: var(--color-secondary-on-fill);
86
83
  cursor: pointer;
87
84
  }
88
85
 
89
86
  [type=reset]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
90
87
  [type=file]::file-selector-button:is(:hover, :active, :focus),
91
88
  [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);
89
+ --color-background: var(--color-secondary-fill-hover);
90
+ --border-color: var(--color-secondary-fill-hover);
91
+ --color-text: var(--color-secondary-on-fill);
95
92
  }
96
93
 
97
94
  [type=reset]:focus,
98
95
  [aria-label="Close"]:focus,
99
96
  [type=reset]:is([aria-current]:not([aria-current=false])):focus,
100
97
  [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);
98
+ --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
99
  }
103
100
 
104
101
  :is(button, [type=submit], [type=reset], [type=button], [role=button])[disabled],
@@ -118,13 +115,13 @@ aside {
118
115
 
119
116
  nav {
120
117
  :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-vertical) - var(--border-width) * 2);
122
- --form-element-spacing-horizontal: var(--nav-link-spacing-horizontal);
118
+ --input-spacing-vertical: calc(var(--nav-link-gap) - var(--border-size) * 2);
119
+ --input-spacing-horizontal: var(--nav-link-gap);
123
120
 
124
121
  height: auto;
125
122
  margin-right: inherit;
126
123
  margin-bottom: 0;
127
124
  margin-left: inherit;
128
- padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);
125
+ padding: var(--input-spacing-vertical) var(--input-spacing-horizontal);
129
126
  }
130
127
  }
@@ -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(--color-code-bg);
12
- color: var(--color-code-text);
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
  }
@@ -23,10 +20,13 @@ samp {
23
20
 
24
21
  pre {
25
22
  -ms-overflow-style: scrollbar;
26
- overflow: auto;
23
+ color: var(--color-text);
27
24
  display: block;
28
- margin-bottom: var(--spacing);
29
- overflow-x: auto;
25
+ font-style: normal;
26
+ font-weight: var(--font-weight);
27
+ margin-bottom: var(--typography-spacing-vertical);
28
+ margin-top: 0;
29
+ overflow: auto;
30
30
 
31
31
  & code,
32
32
  & samp {
@@ -44,7 +44,7 @@ pre {
44
44
  }
45
45
 
46
46
  kbd {
47
- background-color: var(--color-kbd-bg);
48
- color: var(--color-kbd-text);
47
+ background-color: var(--kbd-fill);
48
+ color: var(--kbd-text);
49
49
  vertical-align: baseline;
50
50
  }
@@ -0,0 +1,3 @@
1
+ del {
2
+ color: var(--color-danger-text);
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,13 +170,13 @@ 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(--dropdown-border);
177
- border-radius: var(--border-radius);
178
- background-color: var(--dropdown-bg);
179
- box-shadow: var(--dropdown-shadow);
180
- color: var(--dropdown-text);
175
+ border: var(--border-size) solid var(--menu-border);
176
+ border-radius: var(--radius);
177
+ background-color: var(--menu-fill);
178
+ box-shadow: var(--menu-shadow);
179
+ color: var(--menu-text);
181
180
  white-space: nowrap;
182
181
  opacity: 0;
183
182
  transition: opacity var(--transition), transform 0s ease-in-out 1s;
@@ -191,24 +190,24 @@ 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
- color: var(--dropdown-text);
210
+ color: var(--menu-text);
212
211
  text-decoration: none;
213
212
  text-overflow: ellipsis;
214
213
 
@@ -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(--dropdown-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(--dropdown-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-vertical) - var(--border-width) * 2) var(--nav-link-spacing-horizontal);
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-vertical) - var(--border-width) * 2) var(--nav-link-spacing-horizontal);
288
+ padding: calc(var(--nav-link-gap) - var(--border-size) * 2) var(--nav-link-gap);
290
289
  }
291
290
  }
@@ -0,0 +1,113 @@
1
+ /* Prevent body scroll and interaction when modal is open */
2
+ body:has(dialog[open]) {
3
+ overflow: hidden;
4
+ pointer-events: none;
5
+ touch-action: none;
6
+
7
+ & dialog[open],
8
+ & dialog:target {
9
+ pointer-events: auto;
10
+ touch-action: auto;
11
+ }
12
+ }
13
+
14
+ dialog {
15
+ max-height: calc(100vh - var(--spacing) * 2);
16
+ margin: auto;
17
+ overflow: auto;
18
+ padding: var(--spacing);
19
+ border-radius: var(--radius);
20
+ background: var(--dialog-fill);
21
+ box-shadow: var(--dialog-shadow);
22
+ border: 0;
23
+
24
+ /* Opening animation using @starting-style (Chrome 117+, Firefox 129+, Safari 17.4+) */
25
+ /* Gracefully degrades to instant appearance in unsupported browsers */
26
+ transition: opacity 0.2s ease-in-out, transform 0.2s ease-in-out;
27
+
28
+ @media (--breakpoint-sm) {
29
+ max-width: 510px;
30
+ }
31
+
32
+ @media (--breakpoint-md) {
33
+ max-width: 700px;
34
+ }
35
+
36
+ /* Hidden state */
37
+ &:not([open]),
38
+ &[open=false] {
39
+ display: none;
40
+ }
41
+
42
+ /* Backdrop overlay */
43
+ &::backdrop {
44
+ backdrop-filter: blur(0.375rem);
45
+ background-color: var(--dialog-overlay);
46
+ transition: backdrop-filter 0.2s ease-in-out, background-color 0.2s ease-in-out;
47
+ }
48
+
49
+ > header,
50
+ > footer {
51
+ width: auto;
52
+ margin-inline: calc(var(--spacing) * -1);
53
+ padding-inline: var(--spacing);
54
+ background-color: var(--dialog-section-fill);
55
+ }
56
+
57
+ /* Header styling */
58
+ > header {
59
+ margin-top: calc(var(--spacing) * -1);
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);
63
+ }
64
+
65
+ /* Footer styling */
66
+ > footer {
67
+ margin-bottom: calc(var(--spacing) * -1);
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);
71
+ display: flex;
72
+ justify-content: end;
73
+ gap: calc(var(--nav-link-gap) * 1.5);
74
+ }
75
+
76
+ /* Close button styling */
77
+ [rel=prev] {
78
+ margin: 0;
79
+ padding: 0;
80
+ position: absolute;
81
+ display: block;
82
+ width: 1rem;
83
+ height: 1rem;
84
+ top: calc(var(--spacing) * .66);
85
+ right: var(--spacing);
86
+ border: none;
87
+ border-radius: 0;
88
+ background-image: var(--icon-close);
89
+ background-position: center;
90
+ background-size: auto 1rem;
91
+ background-repeat: no-repeat;
92
+ background-color: transparent;
93
+ box-shadow: none;
94
+ opacity: 0.5;
95
+ transition: opacity var(--transition);
96
+
97
+ &:hover {
98
+ opacity: 1;
99
+ }
100
+ }
101
+ }
102
+
103
+ @starting-style {
104
+ dialog[open] {
105
+ opacity: 0;
106
+ transform: translateY(-20px);
107
+ }
108
+
109
+ dialog[open]::backdrop {
110
+ backdrop-filter: none;
111
+ background-color: transparent;
112
+ }
113
+ }
@@ -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;
@@ -0,0 +1,10 @@
1
+ footer {
2
+ width: 100%;
3
+ padding-block: var(--spacing);
4
+ margin-top: var(--spacing);
5
+
6
+ & > * {
7
+ margin-top: 0 !important;
8
+ margin-bottom: 0 !important;
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ header {
2
+ width: 100%;
3
+ padding-block: var(--spacing);
4
+ margin-bottom: var(--spacing);
5
+
6
+ & > * {
7
+ margin-top: 0 !important;
8
+ margin-bottom: 0 !important;
9
+ }
10
+ }
@@ -0,0 +1,24 @@
1
+ h1,
2
+ h2,
3
+ h3,
4
+ h4,
5
+ h5,
6
+ h6 {
7
+ margin-top: 0;
8
+ margin-bottom: var(--typography-spacing-vertical);
9
+ font-weight: var(--font-weight);
10
+ font-size: var(--font-size);
11
+ line-height: var(--line-height);
12
+ font-family: var(--font-family);
13
+ }
14
+
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)); }
21
+
22
+ :where(article, address, blockquote, dl, figure, form, ol, p, pre, table, ul, hr) ~ :is(h1, h2, h3, h4, h5, h6) {
23
+ margin-top: var(--heading-gap-top);
24
+ }
@@ -0,0 +1,14 @@
1
+ hgroup {
2
+ margin-bottom: var(--typography-spacing-vertical);
3
+
4
+ & > * {
5
+ margin-top: 0;
6
+ margin-bottom: 0;
7
+
8
+ &:not(:first-child):last-child {
9
+ color: var(--color-text-muted);
10
+ --font-weight: unset;
11
+ font-size: 1rem;
12
+ }
13
+ }
14
+ }
@@ -1,10 +1,7 @@
1
- /**
2
- * Misc
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
  }