@cirthcss/cirth 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -52,7 +52,7 @@
52
52
  Include one stylesheet and write ordinary semantic HTML.
53
53
 
54
54
  ```html
55
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@cirthcss/cirth@0.5.0/dist/cirth.min.css">
55
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@cirthcss/cirth@0.6.0/dist/cirth.min.css">
56
56
  ```
57
57
 
58
58
  ```html
@@ -106,7 +106,7 @@ The main generated stylesheets are:
106
106
 
107
107
  All four builds share Cirth's one official theme (amber), with light and
108
108
  dark variants. `cobalt` and `coral` are optional presets, not separate theme
109
- builds — see [Presets](#presets) below and [Colors](docs/colors.md).
109
+ builds — see [Presets](#presets) below and [Colors](docs/src/pages/colors.mdx).
110
110
 
111
111
  ### Classless
112
112
 
@@ -159,7 +159,7 @@ OS — no `@import`, no webfont, zero network requests.
159
159
  import "@cirthcss/cirth/presets/cobalt";
160
160
  ```
161
161
 
162
- See [Colors](docs/colors.md) for what each preset changes.
162
+ See [Colors](docs/src/pages/colors.mdx) for what each preset changes.
163
163
 
164
164
  ## Customization
165
165
 
@@ -187,7 +187,7 @@ For scoped builds, put the overrides on the scoped root:
187
187
  ```
188
188
 
189
189
  The generated CSS in `dist/cirth.css` is the most reliable reference for the
190
- current custom property surface. The [Customization](docs/customization.md)
190
+ current custom property surface. The [Customization](docs/src/pages/customization.mdx)
191
191
  page covers the token layers, color groups, and light/dark switching in
192
192
  detail.
193
193
 
@@ -195,7 +195,7 @@ detail.
195
195
 
196
196
  The full documentation is published at
197
197
  [cirthcss.github.io/cirth](https://cirthcss.github.io/cirth/), built from
198
- [`docs/`](docs/) as a [VitePress](https://vitepress.dev) site with live
198
+ [`docs/`](docs/) as an [Astro](https://astro.build) site with live
199
199
  examples. The site itself is styled with Cirth's own default build — the
200
200
  header, sidebar, prose, and every demo are ordinary semantic HTML dogfooding
201
201
  the framework.
@@ -208,62 +208,62 @@ npm run docs:dev
208
208
  ```
209
209
 
210
210
  - **Getting started** —
211
- [Get Started](docs/get-started.md) ·
212
- [Customization](docs/customization.md) ·
213
- [Colors](docs/colors.md) ·
214
- [About Cirth](docs/about.md)
211
+ [Get Started](docs/src/pages/get-started.mdx) ·
212
+ [Customization](docs/src/pages/customization.mdx) ·
213
+ [Colors](docs/src/pages/colors.mdx) ·
214
+ [About Cirth](docs/src/pages/about.mdx)
215
215
  - **Layout** —
216
- [Document](docs/layout/document.md) ·
217
- [Landmarks](docs/layout/landmarks.md) ·
218
- [Section](docs/layout/section.md) ·
219
- [Container](docs/layout/container.md) ·
220
- [Grid](docs/layout/grid.md) ·
221
- [Overflow auto](docs/layout/overflow-auto.md)
216
+ [Document](docs/src/pages/layout/document.mdx) ·
217
+ [Landmarks](docs/src/pages/layout/landmarks.mdx) ·
218
+ [Section](docs/src/pages/layout/section.mdx) ·
219
+ [Container](docs/src/pages/layout/container.mdx) ·
220
+ [Grid](docs/src/pages/layout/grid.mdx) ·
221
+ [Overflow auto](docs/src/pages/layout/overflow-auto.mdx)
222
222
  - **Content** —
223
- [Typography](docs/content/typography.md) ·
224
- [Link](docs/content/link.md) ·
225
- [Button](docs/content/button.md) ·
226
- [Table](docs/content/table.md) ·
227
- [Code](docs/content/code.md) ·
228
- [Figure](docs/content/figure.md) ·
229
- [Embedded content](docs/content/embedded.md) ·
230
- [Misc](docs/content/misc.md)
223
+ [Typography](docs/src/pages/content/typography.mdx) ·
224
+ [Link](docs/src/pages/content/link.mdx) ·
225
+ [Button](docs/src/pages/content/button.mdx) ·
226
+ [Table](docs/src/pages/content/table.mdx) ·
227
+ [Code](docs/src/pages/content/code.mdx) ·
228
+ [Figure](docs/src/pages/content/figure.mdx) ·
229
+ [Embedded content](docs/src/pages/content/embedded.mdx) ·
230
+ [Misc](docs/src/pages/content/misc.mdx)
231
231
  - **Forms** —
232
- [Overview](docs/forms/index.md) ·
233
- [Checkbox, radio, switch](docs/forms/checkbox-radio-switch.md) ·
234
- [Input color](docs/forms/input-color.md) ·
235
- [Input date](docs/forms/input-date.md) ·
236
- [Input file](docs/forms/input-file.md) ·
237
- [Input range](docs/forms/input-range.md) ·
238
- [Input search](docs/forms/input-search.md)
232
+ [Overview](docs/src/pages/forms/index.mdx) ·
233
+ [Checkbox, radio, switch](docs/src/pages/forms/checkbox-radio-switch.mdx) ·
234
+ [Input color](docs/src/pages/forms/input-color.mdx) ·
235
+ [Input date](docs/src/pages/forms/input-date.mdx) ·
236
+ [Input file](docs/src/pages/forms/input-file.mdx) ·
237
+ [Input range](docs/src/pages/forms/input-range.mdx) ·
238
+ [Input search](docs/src/pages/forms/input-search.mdx)
239
239
  - **Components** —
240
- [Accordion](docs/components/accordion.md) ·
241
- [Card](docs/components/card.md) ·
242
- [Dropdown](docs/components/dropdown.md) ·
243
- [Group](docs/components/group.md) ·
244
- [Loading](docs/components/loading.md) ·
245
- [Modal](docs/components/modal.md) ·
246
- [Nav](docs/components/nav.md) ·
247
- [Progress](docs/components/progress.md) ·
248
- [Tooltip](docs/components/tooltip.md)
240
+ [Accordion](docs/src/pages/components/accordion.mdx) ·
241
+ [Card](docs/src/pages/components/card.mdx) ·
242
+ [Dropdown](docs/src/pages/components/dropdown.mdx) ·
243
+ [Group](docs/src/pages/components/group.mdx) ·
244
+ [Loading](docs/src/pages/components/loading.mdx) ·
245
+ [Modal](docs/src/pages/components/modal.mdx) ·
246
+ [Nav](docs/src/pages/components/nav.mdx) ·
247
+ [Progress](docs/src/pages/components/progress.mdx) ·
248
+ [Tooltip](docs/src/pages/components/tooltip.mdx)
249
249
  - **Utilities** —
250
- [Accessibility](docs/utilities/accessibility.md) ·
251
- [Reduce motion](docs/utilities/reduce-motion.md)
250
+ [Accessibility](docs/src/pages/utilities/accessibility.mdx) ·
251
+ [Reduce motion](docs/src/pages/utilities/reduce-motion.mdx)
252
252
  - **Project** —
253
- [Examples](docs/examples.md) ·
254
- [Contributions](docs/contributions.md) ·
255
- [Brand](docs/brand.md) ·
253
+ [Examples](docs/src/pages/examples.mdx) ·
254
+ [Contributions](docs/src/pages/contributions.mdx) ·
255
+ [Brand](docs/src/pages/brand.mdx) ·
256
256
  [Changelog](CHANGELOG.md)
257
257
 
258
258
  ## Contributing
259
259
 
260
- Start with [Contributions](docs/contributions.md). It explains the local
260
+ Start with [Contributions](docs/src/pages/contributions.mdx). It explains the local
261
261
  setup, the source layout, the package exports, and the project constraints
262
262
  that matter most when changing Cirth.
263
263
 
264
264
  For pull requests, issue triage, and the exact collaboration workflow, read
265
265
  [`.github/CONTRIBUTING.md`](.github/CONTRIBUTING.md). If your change touches
266
- the visual identity, check [Brand](docs/brand.md) first; if it changes the
266
+ the visual identity, check [Brand](docs/src/pages/brand.mdx) first; if it changes the
267
267
  public package surface, update [CHANGELOG.md](CHANGELOG.md) in the same
268
268
  branch.
269
269
 
@@ -38,15 +38,13 @@ main {
38
38
  body > header, body > main, body > footer {
39
39
  width: 100%;
40
40
  padding: var(--cirth-block-spacing-vertical) var(--cirth-block-spacing-horizontal);
41
- margin-left: auto;
42
- margin-right: auto;
41
+ margin-inline: auto;
43
42
  }
44
43
 
45
44
  @media (min-width: 576px) {
46
45
  body > header, body > main, body > footer {
47
46
  max-width: 510px;
48
- padding-left: 0;
49
- padding-right: 0;
47
+ padding-inline: 0;
50
48
  }
51
49
  }
52
50
 
@@ -187,8 +185,6 @@ mark {
187
185
  blockquote {
188
186
  margin: var(--cirth-typography-spacing-vertical) 0;
189
187
  padding: var(--cirth-spacing);
190
- border-right: none;
191
- border-left: var(--cirth-border-width-4) solid var(--cirth-blockquote-border-color);
192
188
  border-inline-start: var(--cirth-border-width-4) solid var(--cirth-blockquote-border-color);
193
189
  border-inline-end: none;
194
190
  display: block;
@@ -228,7 +224,6 @@ del {
228
224
  text-decoration: var(--cirth-text-decoration);
229
225
  -webkit-text-decoration-color: var(--cirth-underline);
230
226
  text-decoration-color: var(--cirth-underline);
231
- text-underline-offset: .125em;
232
227
  transition: background-color var(--cirth-transition), color var(--cirth-transition), text-decoration var(--cirth-transition), box-shadow var(--cirth-transition);
233
228
  outline: none;
234
229
  }
@@ -407,11 +402,9 @@ button:focus-visible, button[aria-current]:not([aria-current="false"]):focus-vis
407
402
  th, td {
408
403
  padding: calc(var(--cirth-spacing) / 2) var(--cirth-spacing);
409
404
  border-bottom: var(--cirth-border-width) solid var(--cirth-table-border-color);
410
- background-color: var(--cirth-background-color);
411
405
  color: var(--cirth-color);
412
406
  font-weight: var(--cirth-font-weight);
413
407
  font-variant-numeric: tabular-nums;
414
- text-align: left;
415
408
  text-align: start;
416
409
  }
417
410
 
@@ -440,6 +433,9 @@ audio:not([controls]) {
440
433
  img {
441
434
  border-style: none;
442
435
  max-width: 100%;
436
+ }
437
+
438
+ img:where(:not([height]), [width][height]) {
443
439
  height: auto;
444
440
  }
445
441
 
@@ -498,6 +494,13 @@ kbd {
498
494
  vertical-align: baseline;
499
495
  }
500
496
 
497
+ var {
498
+ color: var(--cirth-code-color);
499
+ font-size: .875em;
500
+ font-style: italic;
501
+ font-family: var(--cirth-font-family);
502
+ }
503
+
501
504
  figure {
502
505
  margin: 0;
503
506
  padding: 0;
@@ -671,8 +674,6 @@ label[aria-disabled="true"] input[disabled] {
671
674
  }
672
675
 
673
676
  :where(input, select, textarea):not([type="checkbox"], [type="radio"], [type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"], [type="range"])[aria-invalid] {
674
- padding-right: calc(var(--cirth-form-element-spacing-horizontal) + var(--cirth-space-6));
675
- padding-left: var(--cirth-form-element-spacing-horizontal);
676
677
  background-position: center right var(--cirth-space-3);
677
678
  background-size: var(--cirth-size-4) auto;
678
679
  background-repeat: no-repeat;
@@ -718,6 +719,10 @@ label[aria-disabled="true"] input[disabled] {
718
719
  background-position: center left var(--cirth-space-3);
719
720
  }
720
721
 
722
+ [dir="rtl"] textarea[aria-invalid] {
723
+ background-position: top left var(--cirth-space-3);
724
+ }
725
+
721
726
  input::placeholder, textarea::placeholder, select:invalid {
722
727
  color: var(--cirth-form-element-placeholder-color);
723
728
  opacity: 1;
@@ -743,8 +748,6 @@ select::-ms-expand {
743
748
  }
744
749
 
745
750
  select:not([multiple], [size]) {
746
- padding-right: calc(var(--cirth-form-element-spacing-horizontal) + var(--cirth-space-6));
747
- padding-left: var(--cirth-form-element-spacing-horizontal);
748
751
  background-image: var(--cirth-icon-chevron);
749
752
  background-position: center right var(--cirth-space-3);
750
753
  background-size: var(--cirth-size-4) auto;
@@ -939,11 +942,11 @@ label:has([type="checkbox"], [type="radio"]) {
939
942
  input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"]):is([type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"]) {
940
943
  --cirth-icon-position: var(--cirth-space-3);
941
944
  --cirth-icon-width: var(--cirth-size-4);
942
- padding-right: calc(var(--cirth-icon-width) + var(--cirth-icon-position));
943
945
  background-image: var(--cirth-icon-date);
944
946
  background-position: center right var(--cirth-icon-position);
945
947
  background-size: var(--cirth-icon-width) auto;
946
948
  background-repeat: no-repeat;
949
+ padding-inline-end: calc(var(--cirth-icon-width) + var(--cirth-icon-position));
947
950
  }
948
951
 
949
952
  input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"])[type="time"] {
@@ -952,63 +955,64 @@ input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"])[type
952
955
 
953
956
  [type="date"]::-webkit-calendar-picker-indicator {
954
957
  width: var(--cirth-icon-width);
955
- margin-right: calc(var(--cirth-icon-width) * -1);
956
- margin-left: var(--cirth-icon-position);
957
958
  opacity: 0;
959
+ margin-inline-start: var(--cirth-icon-position);
960
+ margin-inline-end: calc(var(--cirth-icon-width) * -1);
958
961
  }
959
962
 
960
963
  [type="datetime-local"]::-webkit-calendar-picker-indicator {
961
964
  width: var(--cirth-icon-width);
962
- margin-right: calc(var(--cirth-icon-width) * -1);
963
- margin-left: var(--cirth-icon-position);
964
965
  opacity: 0;
966
+ margin-inline-start: var(--cirth-icon-position);
967
+ margin-inline-end: calc(var(--cirth-icon-width) * -1);
965
968
  }
966
969
 
967
970
  [type="month"]::-webkit-calendar-picker-indicator {
968
971
  width: var(--cirth-icon-width);
969
- margin-right: calc(var(--cirth-icon-width) * -1);
970
- margin-left: var(--cirth-icon-position);
971
972
  opacity: 0;
973
+ margin-inline-start: var(--cirth-icon-position);
974
+ margin-inline-end: calc(var(--cirth-icon-width) * -1);
972
975
  }
973
976
 
974
977
  [type="time"]::-webkit-calendar-picker-indicator {
975
978
  width: var(--cirth-icon-width);
976
- margin-right: calc(var(--cirth-icon-width) * -1);
977
- margin-left: var(--cirth-icon-position);
978
979
  opacity: 0;
980
+ margin-inline-start: var(--cirth-icon-position);
981
+ margin-inline-end: calc(var(--cirth-icon-width) * -1);
979
982
  }
980
983
 
981
984
  [type="week"]::-webkit-calendar-picker-indicator {
982
985
  width: var(--cirth-icon-width);
983
- margin-right: calc(var(--cirth-icon-width) * -1);
984
- margin-left: var(--cirth-icon-position);
985
986
  opacity: 0;
987
+ margin-inline-start: var(--cirth-icon-position);
988
+ margin-inline-end: calc(var(--cirth-icon-width) * -1);
986
989
  }
987
990
 
988
991
  @-moz-document url-prefix() {
989
992
  [type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"] {
990
- padding-right: var(--cirth-form-element-spacing-horizontal);
991
993
  background-image: none;
994
+ padding-inline-end: var(--cirth-form-element-spacing-horizontal);
992
995
  }
993
996
  }
994
997
 
995
998
  [dir="rtl"] :is([type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"]) {
999
+ background-position: center left var(--cirth-icon-position);
996
1000
  text-align: right;
997
1001
  }
998
1002
 
999
1003
  [type="file"] {
1000
1004
  --cirth-color: var(--cirth-muted-color);
1001
- margin-left: calc(var(--cirth-outline-width) * -1);
1002
1005
  padding: calc(var(--cirth-form-element-spacing-vertical) * .5) 0;
1003
- padding-left: var(--cirth-outline-width);
1004
1006
  background: none;
1005
1007
  border: 0;
1006
1008
  border-radius: 0;
1009
+ margin-inline-start: calc(var(--cirth-outline-width) * -1);
1010
+ padding-inline-start: var(--cirth-outline-width);
1007
1011
  }
1008
1012
 
1009
1013
  [type="file"]::file-selector-button {
1010
- margin-right: calc(var(--cirth-spacing) / 2);
1011
1014
  padding: calc(var(--cirth-form-element-spacing-vertical) * .5) var(--cirth-form-element-spacing-horizontal);
1015
+ margin-inline-end: calc(var(--cirth-spacing) / 2);
1012
1016
  }
1013
1017
 
1014
1018
  [type="file"]:is(:hover, :active, :focus)::file-selector-button {
@@ -1192,7 +1196,7 @@ details summary:focus-visible:not([role]) {
1192
1196
  }
1193
1197
 
1194
1198
  details summary[role="button"] {
1195
- text-align: left;
1199
+ text-align: start;
1196
1200
  width: 100%;
1197
1201
  }
1198
1202
 
@@ -1212,10 +1216,6 @@ details[open] > summary:after {
1212
1216
  transform: rotate(0);
1213
1217
  }
1214
1218
 
1215
- [dir="rtl"] details summary {
1216
- text-align: right;
1217
- }
1218
-
1219
1219
  [dir="rtl"] details summary:after {
1220
1220
  float: left;
1221
1221
  background-position: 0;
@@ -1230,12 +1230,15 @@ article {
1230
1230
  }
1231
1231
 
1232
1232
  article > header, article > footer {
1233
- margin-right: calc(var(--cirth-block-spacing-horizontal) * -1);
1234
- margin-left: calc(var(--cirth-block-spacing-horizontal) * -1);
1233
+ margin-inline: calc(var(--cirth-block-spacing-horizontal) * -1);
1235
1234
  padding: calc(var(--cirth-block-spacing-vertical) - var(--cirth-space-2)) var(--cirth-block-spacing-horizontal);
1236
1235
  background-color: var(--cirth-card-sectioning-background-color);
1237
1236
  }
1238
1237
 
1238
+ article > header > :last-child, article > footer > :last-child {
1239
+ margin-bottom: 0;
1240
+ }
1241
+
1239
1242
  article > header {
1240
1243
  margin-top: calc(var(--cirth-block-spacing-vertical) * -1);
1241
1244
  margin-bottom: var(--cirth-block-spacing-vertical);
@@ -1259,33 +1262,50 @@ article > footer {
1259
1262
  box-shadow: var(--cirth-group-box-shadow, 0 0 0 #0000);
1260
1263
  vertical-align: middle;
1261
1264
  transition: box-shadow var(--cirth-transition);
1265
+ flex-wrap: wrap;
1262
1266
  display: inline-flex;
1263
1267
  position: relative;
1264
1268
  }
1265
1269
 
1270
+ [role="search"] > small, [role="group"] > small {
1271
+ margin-top: calc(var(--cirth-spacing) * .25);
1272
+ flex: 0 0 100%;
1273
+ order: 1;
1274
+ margin-bottom: 0;
1275
+ }
1276
+
1266
1277
  [role="search"] > *, [role="search"] input:not([type="checkbox"], [type="radio"]), [role="search"] select, [role="group"] > *, [role="group"] input:not([type="checkbox"], [type="radio"]), [role="group"] select {
1267
1278
  flex: auto;
1268
1279
  margin-bottom: 0;
1269
1280
  position: relative;
1270
1281
  }
1271
1282
 
1283
+ [role="search"] > :is(input, select, textarea), [role="search"] input:not([type="checkbox"], [type="radio"]):is(input, select, textarea), [role="search"] select:is(input, select, textarea), [role="group"] > :is(input, select, textarea), [role="group"] input:not([type="checkbox"], [type="radio"]):is(input, select, textarea), [role="group"] select:is(input, select, textarea) {
1284
+ flex: 99;
1285
+ }
1286
+
1272
1287
  [role="search"] > :not(:first-child), [role="search"] input:not([type="checkbox"], [type="radio"]):not(:first-child), [role="search"] select:not(:first-child), [role="group"] > :not(:first-child), [role="group"] input:not([type="checkbox"], [type="radio"]):not(:first-child), [role="group"] select:not(:first-child) {
1273
- border-top-left-radius: 0;
1274
- border-bottom-left-radius: 0;
1275
- margin-left: 0;
1288
+ border-start-start-radius: 0;
1289
+ border-end-start-radius: 0;
1290
+ margin-inline-start: 0;
1276
1291
  }
1277
1292
 
1278
1293
  [role="search"] > :not(:last-child), [role="search"] input:not([type="checkbox"], [type="radio"]):not(:last-child), [role="search"] select:not(:last-child), [role="group"] > :not(:last-child), [role="group"] input:not([type="checkbox"], [type="radio"]):not(:last-child), [role="group"] select:not(:last-child) {
1279
- border-top-right-radius: 0;
1280
- border-bottom-right-radius: 0;
1294
+ border-start-end-radius: 0;
1295
+ border-end-end-radius: 0;
1281
1296
  }
1282
1297
 
1283
1298
  [role="search"] > :focus, [role="search"] input:not([type="checkbox"], [type="radio"]):focus, [role="search"] select:focus, [role="group"] > :focus, [role="group"] input:not([type="checkbox"], [type="radio"]):focus, [role="group"] select:focus {
1284
1299
  z-index: 2;
1285
1300
  }
1286
1301
 
1302
+ :is([role="search"] > :has( + small:last-child), [role="group"] > :has( + small:last-child)) {
1303
+ border-start-end-radius: var(--cirth-border-radius);
1304
+ border-end-end-radius: var(--cirth-border-radius);
1305
+ }
1306
+
1287
1307
  [role="search"] button:not(:first-child), [role="search"] [type="submit"]:not(:first-child), [role="search"] [type="reset"]:not(:first-child), [role="search"] [type="button"]:not(:first-child), [role="search"] [role="button"]:not(:first-child), [role="search"] input:not([type="checkbox"], [type="radio"]):not(:first-child), [role="search"] select:not(:first-child), [role="group"] button:not(:first-child), [role="group"] [type="submit"]:not(:first-child), [role="group"] [type="reset"]:not(:first-child), [role="group"] [type="button"]:not(:first-child), [role="group"] [role="button"]:not(:first-child), [role="group"] input:not([type="checkbox"], [type="radio"]):not(:first-child), [role="group"] select:not(:first-child) {
1288
- margin-left: calc(var(--cirth-border-width) * -1);
1308
+ margin-inline-start: calc(var(--cirth-border-width) * -1);
1289
1309
  }
1290
1310
 
1291
1311
  [role="search"] button, [role="search"] [type="submit"], [role="search"] [type="reset"], [role="search"] [type="button"], [role="search"] [role="button"], [role="group"] button, [role="group"] [type="submit"], [role="group"] [type="reset"], [role="group"] [type="button"], [role="group"] [role="button"] {
@@ -1297,19 +1317,7 @@ article > footer {
1297
1317
  --cirth-group-box-shadow: var(--cirth-group-box-shadow-focus-with-button);
1298
1318
  }
1299
1319
 
1300
- [role="search"]:has(button:focus, [type="submit"]:focus, [type="button"]:focus, [role="button"]:focus) input:not([type="checkbox"], [type="radio"]) {
1301
- border-color: #0000;
1302
- }
1303
-
1304
- [role="search"]:has(button:focus, [type="submit"]:focus, [type="button"]:focus, [role="button"]:focus) select {
1305
- border-color: #0000;
1306
- }
1307
-
1308
- [role="group"]:has(button:focus, [type="submit"]:focus, [type="button"]:focus, [role="button"]:focus) input:not([type="checkbox"], [type="radio"]) {
1309
- border-color: #0000;
1310
- }
1311
-
1312
- [role="group"]:has(button:focus, [type="submit"]:focus, [type="button"]:focus, [role="button"]:focus) select {
1320
+ :is([role="search"]:has(button:focus, [type="submit"]:focus, [type="button"]:focus, [role="button"]:focus) input:not([type="checkbox"], [type="radio"], [aria-invalid]), [role="search"]:has(button:focus, [type="submit"]:focus, [type="button"]:focus, [role="button"]:focus) select:not([aria-invalid]), [role="group"]:has(button:focus, [type="submit"]:focus, [type="button"]:focus, [role="button"]:focus) input:not([type="checkbox"], [type="radio"], [aria-invalid]), [role="group"]:has(button:focus, [type="submit"]:focus, [type="button"]:focus, [role="button"]:focus) select:not([aria-invalid])) {
1313
1321
  border-color: #0000;
1314
1322
  }
1315
1323
 
@@ -1379,13 +1387,18 @@ article > footer {
1379
1387
  }
1380
1388
 
1381
1389
  [role="search"] > :first-child {
1382
- border-top-left-radius: var(--cirth-radius-pill);
1383
- border-bottom-left-radius: var(--cirth-radius-pill);
1390
+ border-start-start-radius: var(--cirth-radius-pill);
1391
+ border-end-start-radius: var(--cirth-radius-pill);
1384
1392
  }
1385
1393
 
1386
1394
  [role="search"] > :last-child {
1387
- border-top-right-radius: var(--cirth-radius-pill);
1388
- border-bottom-right-radius: var(--cirth-radius-pill);
1395
+ border-start-end-radius: var(--cirth-radius-pill);
1396
+ border-end-end-radius: var(--cirth-radius-pill);
1397
+ }
1398
+
1399
+ [role="search"] > :has( + small:last-child) {
1400
+ border-start-end-radius: var(--cirth-radius-pill);
1401
+ border-end-end-radius: var(--cirth-radius-pill);
1389
1402
  }
1390
1403
 
1391
1404
  [aria-busy="true"]:not(input, select, textarea, html, form) {
@@ -1393,14 +1406,24 @@ article > footer {
1393
1406
  }
1394
1407
 
1395
1408
  [aria-busy="true"]:not(input, select, textarea, html, form):before {
1396
- background-image: var(--cirth-icon-loading);
1397
1409
  content: "";
1398
1410
  vertical-align: -.125em;
1399
- background-repeat: no-repeat;
1400
- background-size: 1em;
1401
1411
  width: 1em;
1402
1412
  height: 1em;
1413
+ -webkit-mask-image: var(--cirth-icon-loading);
1414
+ mask-image: var(--cirth-icon-loading);
1415
+ background-color: currentColor;
1403
1416
  display: inline-block;
1417
+ -webkit-mask-size: 1em;
1418
+ mask-size: 1em;
1419
+ -webkit-mask-repeat: no-repeat;
1420
+ mask-repeat: no-repeat;
1421
+ }
1422
+
1423
+ @media (forced-colors: active) {
1424
+ [aria-busy="true"]:not(input, select, textarea, html, form):before {
1425
+ background-color: canvastext;
1426
+ }
1404
1427
  }
1405
1428
 
1406
1429
  [aria-busy="true"]:not(input, select, textarea, html, form):not(:empty):before {
@@ -1411,6 +1434,18 @@ article > footer {
1411
1434
  text-align: center;
1412
1435
  }
1413
1436
 
1437
+ input:is([type="submit"], [type="button"], [type="reset"])[aria-busy="true"] {
1438
+ background-image: var(--cirth-icon-loading);
1439
+ background-position: center left var(--cirth-form-element-spacing-horizontal);
1440
+ background-repeat: no-repeat;
1441
+ background-size: 1em;
1442
+ padding-inline-start: calc(var(--cirth-form-element-spacing-horizontal) + 1em + var(--cirth-spacing) * .5);
1443
+ }
1444
+
1445
+ [dir="rtl"] input:is([type="submit"], [type="button"], [type="reset"])[aria-busy="true"] {
1446
+ background-position: center right var(--cirth-form-element-spacing-horizontal);
1447
+ }
1448
+
1414
1449
  button[aria-busy="true"], [type="submit"][aria-busy="true"], [type="button"][aria-busy="true"], [type="reset"][aria-busy="true"], [role="button"][aria-busy="true"], a[aria-busy="true"] {
1415
1450
  pointer-events: none;
1416
1451
  }
@@ -1441,6 +1476,7 @@ dialog {
1441
1476
  dialog > article {
1442
1477
  width: 100%;
1443
1478
  max-height: calc(100vh - var(--cirth-spacing) * 2);
1479
+ max-height: calc(100dvh - var(--cirth-spacing) * 2);
1444
1480
  margin: var(--cirth-spacing);
1445
1481
  overflow: auto;
1446
1482
  }
@@ -1463,13 +1499,13 @@ dialog > article > header > * {
1463
1499
 
1464
1500
  dialog > article > header :is(a, button)[rel="prev"] {
1465
1501
  margin: 0;
1466
- margin-left: var(--cirth-spacing);
1467
1502
  float: right;
1503
+ margin-inline-start: var(--cirth-spacing);
1468
1504
  padding: 0;
1469
1505
  }
1470
1506
 
1471
1507
  dialog > article > footer {
1472
- text-align: right;
1508
+ text-align: end;
1473
1509
  }
1474
1510
 
1475
1511
  dialog > article > footer button, dialog > article > footer [role="button"] {
@@ -1477,7 +1513,7 @@ dialog > article > footer button, dialog > article > footer [role="button"] {
1477
1513
  }
1478
1514
 
1479
1515
  dialog > article > footer button:not(:first-of-type), dialog > article > footer [role="button"]:not(:first-of-type) {
1480
- margin-left: calc(var(--cirth-spacing) * .5);
1516
+ margin-inline-start: calc(var(--cirth-spacing) * .5);
1481
1517
  }
1482
1518
 
1483
1519
  dialog > article :is(a, button)[rel="prev"] {
@@ -1493,7 +1529,7 @@ dialog > article :is(a, button)[rel="prev"] {
1493
1529
  background-color: #0000;
1494
1530
  background-repeat: no-repeat;
1495
1531
  border: none;
1496
- margin-left: auto;
1532
+ margin-inline-start: auto;
1497
1533
  display: block;
1498
1534
  }
1499
1535
 
@@ -1505,6 +1541,10 @@ dialog:not([open]), dialog[open="false"] {
1505
1541
  display: none;
1506
1542
  }
1507
1543
 
1544
+ [dir="rtl"] dialog > article > header :is(a, button)[rel="prev"] {
1545
+ float: left;
1546
+ }
1547
+
1508
1548
  :where(nav li):before {
1509
1549
  float: left;
1510
1550
  content: "​";
@@ -1527,11 +1567,11 @@ nav ol, nav ul {
1527
1567
  }
1528
1568
 
1529
1569
  nav ol:first-of-type, nav ul:first-of-type {
1530
- margin-left: calc(var(--cirth-nav-element-spacing-horizontal) * -1);
1570
+ margin-inline-start: calc(var(--cirth-nav-element-spacing-horizontal) * -1);
1531
1571
  }
1532
1572
 
1533
1573
  nav ol:last-of-type, nav ul:last-of-type {
1534
- margin-right: calc(var(--cirth-nav-element-spacing-horizontal) * -1);
1574
+ margin-inline-end: calc(var(--cirth-nav-element-spacing-horizontal) * -1);
1535
1575
  }
1536
1576
 
1537
1577
  nav li {
@@ -1540,23 +1580,27 @@ nav li {
1540
1580
  display: inline-block;
1541
1581
  }
1542
1582
 
1543
- nav li :where(a, [role="link"]) {
1583
+ nav li :where(a:not([role="button"]), [role="link"]) {
1544
1584
  margin: calc(var(--cirth-nav-link-spacing-vertical) * -1) calc(var(--cirth-nav-link-spacing-horizontal) * -1);
1545
1585
  padding: var(--cirth-nav-link-spacing-vertical) var(--cirth-nav-link-spacing-horizontal);
1546
1586
  border-radius: var(--cirth-border-radius);
1547
1587
  display: inline-block;
1548
1588
  }
1549
1589
 
1550
- nav li :where(a, [role="link"]):not(:hover) {
1590
+ nav li :where(a:not([role="button"]), [role="link"]):not(:hover) {
1551
1591
  text-decoration: none;
1552
1592
  }
1553
1593
 
1594
+ nav li [role="group"], nav li [role="search"] {
1595
+ width: auto;
1596
+ margin-bottom: 0;
1597
+ }
1598
+
1554
1599
  nav li button, nav li [role="button"], nav li [type="button"], nav li input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"]), nav li select {
1555
1600
  height: auto;
1556
- margin-right: inherit;
1557
- margin-bottom: 0;
1558
- margin-left: inherit;
1601
+ margin-inline: inherit;
1559
1602
  padding: calc(var(--cirth-nav-link-spacing-vertical) - var(--cirth-border-width) * 2) var(--cirth-nav-link-spacing-horizontal);
1603
+ margin-bottom: 0;
1560
1604
  }
1561
1605
 
1562
1606
  nav[aria-label="breadcrumb"] {
@@ -1608,10 +1652,6 @@ aside li [role="button"] {
1608
1652
  margin: inherit;
1609
1653
  }
1610
1654
 
1611
- [dir="rtl"] nav[aria-label="breadcrumb"] ul li:not(:last-child) :after {
1612
- content: "\\";
1613
- }
1614
-
1615
1655
  progress {
1616
1656
  vertical-align: baseline;
1617
1657
  appearance: none;
@@ -2062,7 +2102,7 @@ thead th, thead td, tfoot th, tfoot td {
2062
2102
  --cirth-border-width: .1875rem;
2063
2103
  }
2064
2104
 
2065
- pre, code, kbd, samp {
2105
+ pre, code, kbd, samp, var {
2066
2106
  --cirth-font-family: var(--cirth-font-family-mono);
2067
2107
  }
2068
2108
 
@@ -2113,7 +2153,7 @@ button, [type="submit"], [type="reset"], [type="button"], [role="button"] {
2113
2153
  --cirth-form-element-spacing-horizontal: var(--cirth-space-8);
2114
2154
  }
2115
2155
 
2116
- details summary[role="button"]:after, [aria-busy="true"]:not(input, select, textarea):is(button, [type="submit"], [type="button"], [type="reset"], [role="button"]):before {
2156
+ details summary[role="button"]:after {
2117
2157
  filter: brightness(0) invert();
2118
2158
  }
2119
2159