@cirthcss/cirth 0.8.4 → 0.9.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
@@ -9,13 +9,14 @@
9
9
  <h1 align="center">Cirth</h1>
10
10
 
11
11
  <p align="center">
12
- <strong>Write HTML. It's already styled.</strong>
12
+ <strong>Production-ready UI from semantic HTML.</strong>
13
13
  </p>
14
14
 
15
15
  <p align="center">
16
- Semantic-first CSS where standard elements carry the styling: nav,
17
- article, button, table. Classes exist only for the few things HTML can't
18
- say.
16
+ Cirth turns native HTML elements into accessible, themeable interfaces.
17
+ Load one stylesheet, customize it with runtime design tokens, and ship
18
+ with zero JavaScript and no required build step. Under 14KB gzipped ·
19
+ 0 JavaScript · WCAG 2.2 AA baseline.
19
20
  </p>
20
21
 
21
22
  <p align="center">
@@ -33,7 +34,7 @@
33
34
  ·
34
35
  <a href="#browser-support">Browser support</a>
35
36
  ·
36
- <a href="#philosophy">Philosophy</a>
37
+ <a href="#design-principles">Design principles</a>
37
38
  </p>
38
39
 
39
40
  <p align="center">
@@ -52,7 +53,11 @@
52
53
  Include one stylesheet and write ordinary semantic HTML.
53
54
 
54
55
  ```html
55
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@cirthcss/cirth@0.8.4/dist/cirth.min.css">
56
+ <link
57
+ rel="stylesheet"
58
+ href="https://cdn.jsdelivr.net/npm/@cirthcss/cirth@0.9.0/dist/cirth.min.css"
59
+ integrity="sha384-GcsDrZOEcXva08eOmuqAN405xtTxYjeaLGAJWQwIDzwHLPGiAngOnCO0PK8xs/MR"
60
+ crossorigin="anonymous">
56
61
  ```
57
62
 
58
63
  ```html
@@ -195,7 +200,7 @@ detail.
195
200
 
196
201
  The full documentation is published at
197
202
  [cirthcss.github.io/cirth](https://cirthcss.github.io/cirth/), built from
198
- [`docs/`](docs/) as an [Astro](https://astro.build) site with live
203
+ [`docs/`](docs/) as an [Eleventy](https://11ty.dev) site with live
199
204
  examples. The site itself is styled with Cirth's own default build — the
200
205
  header, sidebar, prose, and every demo are ordinary semantic HTML dogfooding
201
206
  the framework.
@@ -293,18 +298,20 @@ against this Browserslist target:
293
298
 
294
299
  No version of Internet Explorer is supported.
295
300
 
296
- ## Philosophy
301
+ ## Design principles
297
302
 
298
- Cirth is a semantic-first CSS framework. Standard HTML elements should carry
299
- most of the structure, meaning, and styling burden before a class is needed.
303
+ Cirth is an HTML-native CSS framework: standard HTML elements carry most of
304
+ the structure, meaning, and styling burden before a class is needed.
300
305
 
301
- Core principles:
302
-
303
- - Style semantic HTML by default.
304
- - Use classes only where HTML semantics are not enough.
305
- - Keep layout primitives small and structural.
306
- - Avoid utility-first class soup and broad component catalogs.
307
- - Keep customization based on CSS custom properties.
306
+ - Style semantic HTML by default; add classes only where HTML semantics run
307
+ out.
308
+ - Keep layout primitives small and structural, not a broad component
309
+ catalog.
310
+ - Customize through runtime CSS custom properties, not a build step.
311
+ - Ship zero JavaScript; interactive patterns use native element behavior.
312
+ - Hold the default stylesheet to a 14KB gzipped size budget, checked on
313
+ every build. See [About Cirth](docs/src/pages/about.md#the-14kb-size-budget)
314
+ for why 14KB specifically.
308
315
 
309
316
  ## License
310
317
 
@@ -139,7 +139,7 @@ hgroup > :not(:first-child):last-child {
139
139
  margin-bottom: calc(var(--cirth-typography-spacing-vertical) * .25);
140
140
  }
141
141
 
142
- :where(dl, ol, ul) :where(dl, ol, ul) {
142
+ :is(dl, ol, ul) :is(dl, ol, ul) {
143
143
  margin: 0;
144
144
  margin-top: calc(var(--cirth-typography-spacing-vertical) * .25);
145
145
  }
@@ -212,6 +212,10 @@ del {
212
212
  outline: var(--cirth-outline-width) solid transparent;
213
213
  }
214
214
 
215
+ :where(a:not([role="button"])):visited:not([aria-current]:not([aria-current="false"]), :hover, :active, :focus, nav a) {
216
+ color: var(--cirth-link-visited-color);
217
+ }
218
+
215
219
  a[role="button"] {
216
220
  display: inline-block;
217
221
  }
@@ -231,6 +235,7 @@ button, [type="submit"], [type="reset"], [type="button"], [role="button"] {
231
235
  --cirth-border-color: var(--cirth-primary-border);
232
236
  --cirth-color: var(--cirth-primary-inverse);
233
237
  --cirth-box-shadow: var(--cirth-button-box-shadow, 0 0 0 #0000);
238
+ max-width: 100%;
234
239
  padding: var(--cirth-form-element-spacing-vertical) var(--cirth-form-element-spacing-horizontal);
235
240
  border: var(--cirth-border-width) solid var(--cirth-border-color);
236
241
  border-radius: var(--cirth-border-radius);
@@ -254,6 +259,7 @@ button, [type="submit"], [type="reset"], [type="button"], [role="button"] {
254
259
  --cirth-border-color: var(--cirth-primary-border);
255
260
  --cirth-color: var(--cirth-primary-inverse);
256
261
  --cirth-box-shadow: var(--cirth-button-box-shadow, 0 0 0 #0000);
262
+ max-width: 100%;
257
263
  padding: var(--cirth-form-element-spacing-vertical) var(--cirth-form-element-spacing-horizontal);
258
264
  border: var(--cirth-border-width) solid var(--cirth-border-color);
259
265
  border-radius: var(--cirth-border-radius);
@@ -599,52 +605,52 @@ label[aria-disabled="true"] input[disabled] {
599
605
  opacity: 1;
600
606
  }
601
607
 
602
- :where(input, select, textarea):not([type="checkbox"], [type="radio"], [type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"], [type="range"]):is([aria-invalid], :user-invalid:not([aria-invalid]), :user-valid:not([aria-invalid])) {
608
+ :where(input, select, textarea):not([type="checkbox"], [type="radio"], [type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"], [type="range"]):is([aria-invalid], :user-invalid:not([aria-invalid], [type="range"]):not(select:focus)) {
603
609
  padding-inline: var(--cirth-form-element-spacing-horizontal) calc(var(--cirth-form-element-spacing-horizontal) + var(--cirth-space-6));
604
610
  background-position: center right var(--cirth-space-3);
605
611
  background-size: var(--cirth-size-4) auto;
606
612
  background-repeat: no-repeat;
607
613
  }
608
614
 
609
- :where(input, select, textarea):not([type="checkbox"], [type="radio"], [type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"], [type="range"]):is([aria-invalid="false"], :user-valid:not([aria-invalid])):not(select) {
615
+ :where(input, select, textarea):not([type="checkbox"], [type="radio"], [type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"], [type="range"])[aria-invalid="false"]:not(select) {
610
616
  background-image: var(--cirth-icon-valid);
611
617
  }
612
618
 
613
- :where(input, select, textarea):not([type="checkbox"], [type="radio"], [type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"], [type="range"]):is([aria-invalid="true"], :user-invalid:not([aria-invalid])):not(select) {
619
+ :where(input, select, textarea):not([type="checkbox"], [type="radio"], [type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"], [type="range"]):is([aria-invalid="true"], :user-invalid:not([aria-invalid], [type="range"]):not(select:focus)):not(select) {
614
620
  background-image: var(--cirth-icon-invalid);
615
621
  }
616
622
 
617
- :where(input, select, textarea):is([aria-invalid="false"], :user-valid:not([aria-invalid])) {
623
+ :where(input, select, textarea)[aria-invalid="false"] {
618
624
  --cirth-border-color: var(--cirth-form-element-valid-border-color);
619
625
  }
620
626
 
621
- :where(input, select, textarea):is([aria-invalid="false"], :user-valid:not([aria-invalid])):is(:active, :focus) {
627
+ :where(input, select, textarea)[aria-invalid="false"]:is(:active, :focus) {
622
628
  --cirth-border-color: var(--cirth-form-element-valid-active-border-color);
623
629
  }
624
630
 
625
- :where(input, select, textarea):is([aria-invalid="false"], :user-valid:not([aria-invalid])):is(:active, :focus):not([type="checkbox"], [type="radio"]) {
631
+ :where(input, select, textarea)[aria-invalid="false"]:is(:active, :focus):not([type="checkbox"], [type="radio"]) {
626
632
  --cirth-box-shadow: 0 0 0 var(--cirth-outline-width)
627
633
  var(--cirth-form-element-valid-focus-color);
628
634
  }
629
635
 
630
- :where(input, select, textarea):is([aria-invalid="true"], :user-invalid:not([aria-invalid])) {
636
+ :where(input, select, textarea):is([aria-invalid="true"], :user-invalid:not([aria-invalid], [type="range"]):not(select:focus)) {
631
637
  --cirth-border-color: var(--cirth-form-element-invalid-border-color);
632
638
  }
633
639
 
634
- :where(input, select, textarea):is([aria-invalid="true"], :user-invalid:not([aria-invalid])):is(:active, :focus) {
640
+ :where(input, select, textarea):is([aria-invalid="true"], :user-invalid:not([aria-invalid], [type="range"]):not(select:focus)):is(:active, :focus) {
635
641
  --cirth-border-color: var(--cirth-form-element-invalid-active-border-color);
636
642
  }
637
643
 
638
- :where(input, select, textarea):is([aria-invalid="true"], :user-invalid:not([aria-invalid])):is(:active, :focus):not([type="checkbox"], [type="radio"]) {
644
+ :where(input, select, textarea):is([aria-invalid="true"], :user-invalid:not([aria-invalid], [type="range"]):not(select:focus)):is(:active, :focus):not([type="checkbox"], [type="radio"]) {
639
645
  --cirth-box-shadow: 0 0 0 var(--cirth-outline-width)
640
646
  var(--cirth-form-element-invalid-focus-color);
641
647
  }
642
648
 
643
- [dir="rtl"] :where(input, select, textarea):not([type="checkbox"], [type="radio"]):is([aria-invalid], :user-invalid:not([aria-invalid]), :user-valid:not([aria-invalid])) {
649
+ [dir="rtl"] :where(input, select, textarea):not([type="checkbox"], [type="radio"]):is([aria-invalid], :user-invalid:not([aria-invalid], [type="range"]):not(select:focus)) {
644
650
  background-position: center left var(--cirth-space-3);
645
651
  }
646
652
 
647
- [dir="rtl"] textarea:is([aria-invalid], :user-invalid:not([aria-invalid]), :user-valid:not([aria-invalid])) {
653
+ [dir="rtl"] textarea:is([aria-invalid], :user-invalid:not([aria-invalid], [type="range"]):not(select:focus)) {
648
654
  background-position: top left var(--cirth-space-3);
649
655
  }
650
656
 
@@ -679,7 +685,7 @@ textarea {
679
685
  display: block;
680
686
  }
681
687
 
682
- textarea:is([aria-invalid], :user-invalid:not([aria-invalid]), :user-valid:not([aria-invalid])) {
688
+ textarea:is([aria-invalid], :user-invalid:not([aria-invalid], [type="range"]):not(select:focus)) {
683
689
  --cirth-icon-height: calc(var(--cirth-size-4) * var(--cirth-line-height) +
684
690
  var(--cirth-form-element-spacing-vertical) * 2 +
685
691
  var(--cirth-border-width) * 2);
@@ -695,11 +701,11 @@ textarea:is([aria-invalid], :user-invalid:not([aria-invalid]), :user-valid:not([
695
701
  display: block;
696
702
  }
697
703
 
698
- :where(input, select, textarea, fieldset):is([aria-invalid="false"], :user-valid:not([aria-invalid])) + small {
704
+ :where(input, select, textarea, fieldset)[aria-invalid="false"] + small {
699
705
  color: var(--cirth-ins-color);
700
706
  }
701
707
 
702
- :where(input, select, textarea, fieldset):is([aria-invalid="true"], :user-invalid:not([aria-invalid])) + small {
708
+ :where(input, select, textarea, fieldset):is([aria-invalid="true"], :user-invalid:not([aria-invalid], [type="range"]):not(select:focus)) + small {
703
709
  color: var(--cirth-del-color);
704
710
  }
705
711
 
@@ -851,6 +857,7 @@ label:has([type="checkbox"], [type="radio"]) {
851
857
  input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"]):is([type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"]) {
852
858
  --cirth-icon-position: var(--cirth-space-3);
853
859
  --cirth-icon-width: var(--cirth-size-4);
860
+ min-width: 0;
854
861
  background-image: var(--cirth-icon-date);
855
862
  background-position: center right var(--cirth-icon-position);
856
863
  background-size: var(--cirth-icon-width) auto;
@@ -1186,28 +1193,28 @@ article > footer {
1186
1193
  margin-bottom: 0;
1187
1194
  }
1188
1195
 
1189
- [role="search"] > *, [role="search"] input:not([type="checkbox"], [type="radio"]), [role="search"] select, [role="group"]:not(fieldset) > *, [role="group"]:not(fieldset) input:not([type="checkbox"], [type="radio"]), [role="group"]:not(fieldset) select {
1196
+ [role="search"] > :not([hidden], input[type="hidden"]), [role="search"] input:not([hidden], [type="checkbox"], [type="hidden"], [type="radio"]), [role="search"] select:not([hidden]), [role="group"]:not(fieldset) > :not([hidden], input[type="hidden"]), [role="group"]:not(fieldset) input:not([hidden], [type="checkbox"], [type="hidden"], [type="radio"]), [role="group"]:not(fieldset) select:not([hidden]) {
1190
1197
  flex: auto;
1191
1198
  margin-bottom: 0;
1192
1199
  position: relative;
1193
1200
  }
1194
1201
 
1195
- [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"]:not(fieldset) > :is(input, select, textarea), [role="group"]:not(fieldset) input:not([type="checkbox"], [type="radio"]):is(input, select, textarea), [role="group"]:not(fieldset) select:is(input, select, textarea) {
1202
+ [role="search"] > :not([hidden], input[type="hidden"]):is(input, select, textarea), [role="search"] input:not([hidden], [type="checkbox"], [type="hidden"], [type="radio"]):is(input, select, textarea), [role="search"] select:not([hidden]):is(input, select, textarea), [role="group"]:not(fieldset) > :not([hidden], input[type="hidden"]):is(input, select, textarea), [role="group"]:not(fieldset) input:not([hidden], [type="checkbox"], [type="hidden"], [type="radio"]):is(input, select, textarea), [role="group"]:not(fieldset) select:not([hidden]):is(input, select, textarea) {
1196
1203
  flex: 99;
1197
1204
  }
1198
1205
 
1199
- [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(fieldset) > :not(:first-child), [role="group"]:not(fieldset) input:not([type="checkbox"], [type="radio"]):not(:first-child), [role="group"]:not(fieldset) select:not(:first-child) {
1206
+ [role="search"] > :not([hidden], input[type="hidden"]):not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="search"] input:not([hidden], [type="checkbox"], [type="hidden"], [type="radio"]):not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="search"] select:not([hidden]):not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) > :not([hidden], input[type="hidden"]):not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) input:not([hidden], [type="checkbox"], [type="hidden"], [type="radio"]):not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) select:not([hidden]):not(:nth-child(1 of :not([hidden], input[type="hidden"]))) {
1200
1207
  border-start-start-radius: 0;
1201
1208
  border-end-start-radius: 0;
1202
1209
  margin-inline-start: 0;
1203
1210
  }
1204
1211
 
1205
- [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(fieldset) > :not(:last-child), [role="group"]:not(fieldset) input:not([type="checkbox"], [type="radio"]):not(:last-child), [role="group"]:not(fieldset) select:not(:last-child) {
1212
+ [role="search"] > :not([hidden], input[type="hidden"]):not(:nth-last-child(1 of :not([hidden], input[type="hidden"]))), [role="search"] input:not([hidden], [type="checkbox"], [type="hidden"], [type="radio"]):not(:nth-last-child(1 of :not([hidden], input[type="hidden"]))), [role="search"] select:not([hidden]):not(:nth-last-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) > :not([hidden], input[type="hidden"]):not(:nth-last-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) input:not([hidden], [type="checkbox"], [type="hidden"], [type="radio"]):not(:nth-last-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) select:not([hidden]):not(:nth-last-child(1 of :not([hidden], input[type="hidden"]))) {
1206
1213
  border-start-end-radius: 0;
1207
1214
  border-end-end-radius: 0;
1208
1215
  }
1209
1216
 
1210
- [role="search"] > :focus, [role="search"] input:not([type="checkbox"], [type="radio"]):focus, [role="search"] select:focus, [role="group"]:not(fieldset) > :focus, [role="group"]:not(fieldset) input:not([type="checkbox"], [type="radio"]):focus, [role="group"]:not(fieldset) select:focus {
1217
+ [role="search"] > :not([hidden], input[type="hidden"]):focus, [role="search"] input:not([hidden], [type="checkbox"], [type="hidden"], [type="radio"]):focus, [role="search"] select:not([hidden]):focus, [role="group"]:not(fieldset) > :not([hidden], input[type="hidden"]):focus, [role="group"]:not(fieldset) input:not([hidden], [type="checkbox"], [type="hidden"], [type="radio"]):focus, [role="group"]:not(fieldset) select:not([hidden]):focus {
1211
1218
  z-index: 2;
1212
1219
  }
1213
1220
 
@@ -1221,7 +1228,7 @@ article > footer {
1221
1228
  border-end-end-radius: var(--cirth-border-radius);
1222
1229
  }
1223
1230
 
1224
- [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"]:not(fieldset) button:not(:first-child), [role="group"]:not(fieldset) [type="submit"]:not(:first-child), [role="group"]:not(fieldset) [type="reset"]:not(:first-child), [role="group"]:not(fieldset) [type="button"]:not(:first-child), [role="group"]:not(fieldset) [role="button"]:not(:first-child), [role="group"]:not(fieldset) input:not([type="checkbox"], [type="radio"]):not(:first-child), [role="group"]:not(fieldset) select:not(:first-child) {
1231
+ [role="search"] button:not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="search"] [type="submit"]:not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="search"] [type="reset"]:not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="search"] [type="button"]:not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="search"] [role="button"]:not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="search"] input:not([type="checkbox"], [type="radio"]):not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="search"] select:not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) button:not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) [type="submit"]:not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) [type="reset"]:not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) [type="button"]:not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) [role="button"]:not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) input:not([type="checkbox"], [type="radio"]):not(:nth-child(1 of :not([hidden], input[type="hidden"]))), [role="group"]:not(fieldset) select:not(:nth-child(1 of :not([hidden], input[type="hidden"]))) {
1225
1232
  margin-inline-start: calc(var(--cirth-border-width) * -1);
1226
1233
  }
1227
1234
 
@@ -1323,12 +1330,12 @@ article > footer {
1323
1330
  }
1324
1331
  }
1325
1332
 
1326
- [role="search"] > :first-child {
1333
+ [role="search"] > :not([hidden], input[type="hidden"]):nth-child(1 of :not([hidden], input[type="hidden"])) {
1327
1334
  border-start-start-radius: var(--cirth-radius-pill);
1328
1335
  border-end-start-radius: var(--cirth-radius-pill);
1329
1336
  }
1330
1337
 
1331
- [role="search"] > :last-child {
1338
+ [role="search"] > :not([hidden], input[type="hidden"]):nth-last-child(1 of :not([hidden], input[type="hidden"])) {
1332
1339
  border-start-end-radius: var(--cirth-radius-pill);
1333
1340
  border-end-end-radius: var(--cirth-radius-pill);
1334
1341
  }
@@ -1371,6 +1378,10 @@ article > footer {
1371
1378
  text-align: center;
1372
1379
  }
1373
1380
 
1381
+ :is(button, [type="submit"], [type="reset"], [type="button"], [role="button"])[aria-busy="true"] {
1382
+ white-space: normal;
1383
+ }
1384
+
1374
1385
  input:is([type="submit"], [type="button"], [type="reset"])[aria-busy="true"] {
1375
1386
  background-image: var(--cirth-icon-loading);
1376
1387
  background-position: center left var(--cirth-form-element-spacing-horizontal);
@@ -2058,6 +2069,10 @@ input:not([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [
2058
2069
  --cirth-border-radius: var(--cirth-radius-pill);
2059
2070
  }
2060
2071
 
2072
+ [role="group"]:not(fieldset) [type="search"] {
2073
+ --cirth-border-radius: inherit;
2074
+ }
2075
+
2061
2076
  button, [type="submit"], [type="reset"], [type="button"], [role="button"] {
2062
2077
  --cirth-font-weight: var(--cirth-font-weight-semibold);
2063
2078
  --cirth-line-height: var(--cirth-line-height-relaxed);
@@ -2096,7 +2111,7 @@ details summary[role="button"]:after {
2096
2111
  --lightningcss-light: initial;
2097
2112
  --lightningcss-dark: ;
2098
2113
  color-scheme: light;
2099
- --cirth-background-color: oklch(97.4% .008 69.35);
2114
+ --cirth-background-color: oklch(97.4% .004 69.35);
2100
2115
  --cirth-color: oklch(35.3% .021 264);
2101
2116
  --cirth-text-selection-color: oklch(65.7% .121 69.35 / .25);
2102
2117
  --cirth-muted-color: oklch(52.7% .032 264);
@@ -2131,13 +2146,14 @@ details summary[role="button"]:after {
2131
2146
  --cirth-contrast-hover-underline: var(--cirth-secondary-hover);
2132
2147
  --cirth-contrast-focus: oklch(48.3% .03 264 / .7);
2133
2148
  --cirth-contrast-inverse: oklch(100% 0 0);
2149
+ --cirth-link-visited-color: oklch(48.3% .03 264);
2134
2150
  --cirth-box-shadow: .0145rem .029rem .174rem oklch(65.7% .03 264 / .01698), .0335rem .067rem .402rem oklch(65.7% .03 264 / .024), .0625rem .125rem .75rem oklch(65.7% .03 264 / .03), .1125rem .225rem 1.35rem oklch(65.7% .03 264 / .036), .2085rem .417rem 2.502rem oklch(65.7% .03 264 / .04302), .5rem 1rem 6rem oklch(65.7% .03 264 / .06), 0 0 0 .0625rem oklch(65.7% .03 264 / .015);
2135
- --cirth-h1-color: oklch(31% .016 264);
2136
- --cirth-h2-color: oklch(35.3% .021 264);
2137
- --cirth-h3-color: oklch(39.7% .025 264);
2138
- --cirth-h4-color: oklch(44% .028 264);
2139
- --cirth-h5-color: oklch(48.3% .03 264);
2140
- --cirth-h6-color: oklch(52.7% .032 264);
2151
+ --cirth-h1-color: oklch(22.3% .006 264);
2152
+ --cirth-h2-color: oklch(26.7% .011 264);
2153
+ --cirth-h3-color: oklch(31% .016 264);
2154
+ --cirth-h4-color: oklch(35.3% .021 264);
2155
+ --cirth-h5-color: oklch(39.7% .025 264);
2156
+ --cirth-h6-color: oklch(44% .028 264);
2141
2157
  --cirth-mark-background-color: oklch(93% .05 78);
2142
2158
  --cirth-mark-color: oklch(18% 0 264);
2143
2159
  --cirth-ins-color: oklch(35.3% .067 160.59);
@@ -2239,6 +2255,7 @@ details summary[role="button"]:after {
2239
2255
  --cirth-contrast-hover-underline: var(--cirth-contrast-hover);
2240
2256
  --cirth-contrast-focus: oklch(87.3% .011 264 / .5);
2241
2257
  --cirth-contrast-inverse: oklch(0% 0 0);
2258
+ --cirth-link-visited-color: oklch(65.7% .03 264);
2242
2259
  --cirth-box-shadow: .0145rem .029rem .174rem oklch(9% 0 312 / .01698), .0335rem .067rem .402rem oklch(9% 0 312 / .024), .0625rem .125rem .75rem oklch(9% 0 312 / .03), .1125rem .225rem 1.35rem oklch(9% 0 312 / .036), .2085rem .417rem 2.502rem oklch(9% 0 312 / .04302), .5rem 1rem 6rem oklch(9% 0 312 / .06), 0 0 0 .0625rem oklch(9% 0 312 / .015);
2243
2260
  --cirth-h1-color: oklch(96% 0 264);
2244
2261
  --cirth-h2-color: oklch(91.7% .006 264);
@@ -2347,6 +2364,7 @@ details summary[role="button"]:after {
2347
2364
  --cirth-contrast-hover-underline: var(--cirth-contrast-hover);
2348
2365
  --cirth-contrast-focus: oklch(87.3% .011 264 / .5);
2349
2366
  --cirth-contrast-inverse: oklch(0% 0 0);
2367
+ --cirth-link-visited-color: oklch(65.7% .03 264);
2350
2368
  --cirth-box-shadow: .0145rem .029rem .174rem oklch(9% 0 312 / .01698), .0335rem .067rem .402rem oklch(9% 0 312 / .024), .0625rem .125rem .75rem oklch(9% 0 312 / .03), .1125rem .225rem 1.35rem oklch(9% 0 312 / .036), .2085rem .417rem 2.502rem oklch(9% 0 312 / .04302), .5rem 1rem 6rem oklch(9% 0 312 / .06), 0 0 0 .0625rem oklch(9% 0 312 / .015);
2351
2369
  --cirth-h1-color: oklch(96% 0 264);
2352
2370
  --cirth-h2-color: oklch(91.7% .006 264);