@cirthcss/cirth 0.8.5 → 0.10.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.5/dist/cirth.min.css">
56
+ <link
57
+ rel="stylesheet"
58
+ href="https://cdn.jsdelivr.net/npm/@cirthcss/cirth@0.10.0/dist/cirth.min.css"
59
+ integrity="sha384-eryxoPjA1vogVlspjzxHv7EDws0Ns2llZpU+nFSO6MKh58+TqPrpTxm/nBZcjAuE"
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.
@@ -242,13 +247,16 @@ npm run docs:dev
242
247
  [Dropdown](docs/src/pages/components/dropdown.md) ·
243
248
  [Group](docs/src/pages/components/group.md) ·
244
249
  [Loading](docs/src/pages/components/loading.md) ·
250
+ [Meter](docs/src/pages/components/meter.md) ·
245
251
  [Modal](docs/src/pages/components/modal.md) ·
246
252
  [Nav](docs/src/pages/components/nav.md) ·
247
253
  [Progress](docs/src/pages/components/progress.md) ·
248
254
  [Tooltip](docs/src/pages/components/tooltip.md)
249
255
  - **Utilities** —
250
256
  [Accessibility](docs/src/pages/utilities/accessibility.md) ·
251
- [Reduce motion](docs/src/pages/utilities/reduce-motion.md)
257
+ [High contrast](docs/src/pages/utilities/high-contrast.md) ·
258
+ [Reduce motion](docs/src/pages/utilities/reduce-motion.md) ·
259
+ [Print](docs/src/pages/utilities/print.md)
252
260
  - **Project** —
253
261
  [Examples](docs/src/pages/examples.md) ·
254
262
  [Contributions](docs/src/pages/contributions.md) ·
@@ -293,18 +301,20 @@ against this Browserslist target:
293
301
 
294
302
  No version of Internet Explorer is supported.
295
303
 
296
- ## Philosophy
304
+ ## Design principles
297
305
 
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.
306
+ Cirth is an HTML-native CSS framework: standard HTML elements carry most of
307
+ the structure, meaning, and styling burden before a class is needed.
300
308
 
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.
309
+ - Style semantic HTML by default; add classes only where HTML semantics run
310
+ out.
311
+ - Keep layout primitives small and structural, not a broad component
312
+ catalog.
313
+ - Customize through runtime CSS custom properties, not a build step.
314
+ - Ship zero JavaScript; interactive patterns use native element behavior.
315
+ - Hold the default stylesheet to a 14KB gzipped size budget, checked on
316
+ every build. See [About Cirth](docs/src/pages/about.md#the-14kb-size-budget)
317
+ for why 14KB specifically.
308
318
 
309
319
  ## License
310
320
 
@@ -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);
@@ -1372,6 +1378,10 @@ article > footer {
1372
1378
  text-align: center;
1373
1379
  }
1374
1380
 
1381
+ :is(button, [type="submit"], [type="reset"], [type="button"], [role="button"])[aria-busy="true"] {
1382
+ white-space: normal;
1383
+ }
1384
+
1375
1385
  input:is([type="submit"], [type="button"], [type="reset"])[aria-busy="true"] {
1376
1386
  background-image: var(--cirth-icon-loading);
1377
1387
  background-position: center left var(--cirth-form-element-spacing-horizontal);
@@ -1388,6 +1398,50 @@ button[aria-busy="true"], [type="submit"][aria-busy="true"], [type="button"][ari
1388
1398
  pointer-events: none;
1389
1399
  }
1390
1400
 
1401
+ meter {
1402
+ appearance: none;
1403
+ width: 100%;
1404
+ height: var(--cirth-size-2);
1405
+ margin-bottom: calc(var(--cirth-spacing) * .5);
1406
+ border: var(--cirth-border-width-1) solid var(--cirth-meter-border-color);
1407
+ border-radius: var(--cirth-border-radius);
1408
+ background: var(--cirth-meter-background-color);
1409
+ display: inline-block;
1410
+ overflow: hidden;
1411
+ }
1412
+
1413
+ meter::-webkit-meter-bar {
1414
+ background: none;
1415
+ }
1416
+
1417
+ meter::-webkit-meter-inner-element {
1418
+ display: flex;
1419
+ }
1420
+
1421
+ meter::-webkit-meter-optimum-value {
1422
+ background: var(--cirth-meter-optimum-color);
1423
+ }
1424
+
1425
+ meter::-webkit-meter-suboptimum-value {
1426
+ background: var(--cirth-meter-suboptimum-color);
1427
+ }
1428
+
1429
+ meter::-webkit-meter-even-less-good-value {
1430
+ background: var(--cirth-meter-even-less-good-color);
1431
+ }
1432
+
1433
+ meter::-moz-meter-bar {
1434
+ background: var(--cirth-meter-optimum-color);
1435
+ }
1436
+
1437
+ meter:-moz-meter-sub-optimum::-moz-meter-bar {
1438
+ background: var(--cirth-meter-suboptimum-color);
1439
+ }
1440
+
1441
+ meter:-moz-meter-sub-sub-optimum::-moz-meter-bar {
1442
+ background: var(--cirth-meter-even-less-good-color);
1443
+ }
1444
+
1391
1445
  :root, :host {
1392
1446
  --cirth-scrollbar-width: 0px;
1393
1447
  }
@@ -1955,6 +2009,8 @@ progress::-moz-progress-bar {
1955
2009
  var(--cirth-primary-focus);
1956
2010
  --cirth-group-box-shadow-focus-with-input: 0 0 0 var(--cirth-border-width-1)
1957
2011
  var(--cirth-form-element-border-color);
2012
+ --cirth-meter-background-color: var(--cirth-progress-background-color);
2013
+ --cirth-meter-border-color: var(--cirth-progress-border-color);
1958
2014
  --cirth-modal-overlay-backdrop-filter: blur(.375rem);
1959
2015
  --cirth-nav-element-spacing-vertical: var(--cirth-space-4);
1960
2016
  --cirth-nav-element-spacing-horizontal: var(--cirth-space-2);
@@ -2059,6 +2115,10 @@ input:not([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [
2059
2115
  --cirth-border-radius: var(--cirth-radius-pill);
2060
2116
  }
2061
2117
 
2118
+ [role="group"]:not(fieldset) [type="search"] {
2119
+ --cirth-border-radius: inherit;
2120
+ }
2121
+
2062
2122
  button, [type="submit"], [type="reset"], [type="button"], [role="button"] {
2063
2123
  --cirth-font-weight: var(--cirth-font-weight-semibold);
2064
2124
  --cirth-line-height: var(--cirth-line-height-relaxed);
@@ -2093,11 +2153,11 @@ details summary[role="button"]:after {
2093
2153
  filter: brightness(0) invert();
2094
2154
  }
2095
2155
 
2096
- [data-theme="light"], :root:not([data-theme="dark"]), :host(:not([data-theme="dark"])) {
2156
+ :where([data-theme="light"]), :root:where(:not([data-theme="dark"])), :host(:where(:not([data-theme="dark"]))) {
2097
2157
  --lightningcss-light: initial;
2098
2158
  --lightningcss-dark: ;
2099
2159
  color-scheme: light;
2100
- --cirth-background-color: oklch(97.4% .008 69.35);
2160
+ --cirth-background-color: oklch(97.4% .004 69.35);
2101
2161
  --cirth-color: oklch(35.3% .021 264);
2102
2162
  --cirth-text-selection-color: oklch(65.7% .121 69.35 / .25);
2103
2163
  --cirth-muted-color: oklch(52.7% .032 264);
@@ -2132,13 +2192,14 @@ details summary[role="button"]:after {
2132
2192
  --cirth-contrast-hover-underline: var(--cirth-secondary-hover);
2133
2193
  --cirth-contrast-focus: oklch(48.3% .03 264 / .7);
2134
2194
  --cirth-contrast-inverse: oklch(100% 0 0);
2195
+ --cirth-link-visited-color: oklch(48.3% .03 264);
2135
2196
  --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);
2136
- --cirth-h1-color: oklch(31% .016 264);
2137
- --cirth-h2-color: oklch(35.3% .021 264);
2138
- --cirth-h3-color: oklch(39.7% .025 264);
2139
- --cirth-h4-color: oklch(44% .028 264);
2140
- --cirth-h5-color: oklch(48.3% .03 264);
2141
- --cirth-h6-color: oklch(52.7% .032 264);
2197
+ --cirth-h1-color: oklch(22.3% .006 264);
2198
+ --cirth-h2-color: oklch(26.7% .011 264);
2199
+ --cirth-h3-color: oklch(31% .016 264);
2200
+ --cirth-h4-color: oklch(35.3% .021 264);
2201
+ --cirth-h5-color: oklch(39.7% .025 264);
2202
+ --cirth-h6-color: oklch(44% .028 264);
2142
2203
  --cirth-mark-background-color: oklch(93% .05 78);
2143
2204
  --cirth-mark-color: oklch(18% 0 264);
2144
2205
  --cirth-ins-color: oklch(35.3% .067 160.59);
@@ -2187,6 +2248,9 @@ details summary[role="button"]:after {
2187
2248
  --cirth-card-sectioning-background-color: oklch(99% 0 336);
2188
2249
  --cirth-loading-spinner-opacity: var(--cirth-opacity-disabled);
2189
2250
  --cirth-modal-overlay-background-color: oklch(93.85% .003 264deg / var(--cirth-opacity-overlay));
2251
+ --cirth-meter-optimum-color: oklch(52.7% .1 160.59);
2252
+ --cirth-meter-suboptimum-color: oklch(48.3% .086 78);
2253
+ --cirth-meter-even-less-good-color: oklch(44% .151 29.73);
2190
2254
  --cirth-progress-background-color: oklch(91.7% .006 264);
2191
2255
  --cirth-progress-border-color: oklch(61.3% .032 264);
2192
2256
  --cirth-progress-color: var(--cirth-primary-background);
@@ -2196,12 +2260,12 @@ details summary[role="button"]:after {
2196
2260
  --cirth-icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(189, 47, 33)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");
2197
2261
  }
2198
2262
 
2199
- [data-theme="light"] input:is([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [type="radio"], [type="file"]), :root:not([data-theme="dark"]) input:is([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [type="radio"], [type="file"]), :host(:not([data-theme="dark"])) input:is([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [type="radio"], [type="file"]) {
2263
+ :where([data-theme="light"]) input:is([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [type="radio"], [type="file"]), :root:where(:not([data-theme="dark"])) input:is([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [type="radio"], [type="file"]), :host(:where(:not([data-theme="dark"]))) input:is([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [type="radio"], [type="file"]) {
2200
2264
  --cirth-form-element-focus-color: var(--cirth-primary-focus);
2201
2265
  }
2202
2266
 
2203
2267
  @media only screen and (prefers-color-scheme: dark) {
2204
- :root:not([data-theme]), :host(:not([data-theme])) {
2268
+ :root:where(:not([data-theme])), :host(:where(:not([data-theme]))) {
2205
2269
  --lightningcss-light: ;
2206
2270
  --lightningcss-dark: initial;
2207
2271
  color-scheme: dark;
@@ -2240,6 +2304,7 @@ details summary[role="button"]:after {
2240
2304
  --cirth-contrast-hover-underline: var(--cirth-contrast-hover);
2241
2305
  --cirth-contrast-focus: oklch(87.3% .011 264 / .5);
2242
2306
  --cirth-contrast-inverse: oklch(0% 0 0);
2307
+ --cirth-link-visited-color: oklch(65.7% .03 264);
2243
2308
  --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);
2244
2309
  --cirth-h1-color: oklch(96% 0 264);
2245
2310
  --cirth-h2-color: oklch(91.7% .006 264);
@@ -2295,6 +2360,9 @@ details summary[role="button"]:after {
2295
2360
  --cirth-card-sectioning-background-color: oklch(23.4% .00725 264);
2296
2361
  --cirth-loading-spinner-opacity: var(--cirth-opacity-disabled);
2297
2362
  --cirth-modal-overlay-background-color: oklch(9% 0 312deg / var(--cirth-opacity-overlay));
2363
+ --cirth-meter-optimum-color: oklch(65.7% .125 160.59);
2364
+ --cirth-meter-suboptimum-color: oklch(70% .124 78);
2365
+ --cirth-meter-even-less-good-color: oklch(74.3% .133 29.73);
2298
2366
  --cirth-progress-background-color: oklch(26.7% .011 264);
2299
2367
  --cirth-progress-border-color: oklch(52.7% .032 264);
2300
2368
  --cirth-progress-color: oklch(61.3% .113 69.35);
@@ -2304,12 +2372,12 @@ details summary[role="button"]:after {
2304
2372
  --cirth-icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(246, 160, 145)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");
2305
2373
  }
2306
2374
 
2307
- :root:not([data-theme]) input:is([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [type="radio"], [type="file"]), :host(:not([data-theme])) input:is([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [type="radio"], [type="file"]) {
2375
+ :root:where(:not([data-theme])) input:is([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [type="radio"], [type="file"]), :host(:where(:not([data-theme]))) input:is([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [type="radio"], [type="file"]) {
2308
2376
  --cirth-form-element-focus-color: var(--cirth-primary-focus);
2309
2377
  }
2310
2378
  }
2311
2379
 
2312
- [data-theme="dark"] {
2380
+ :where([data-theme="dark"]) {
2313
2381
  --lightningcss-light: ;
2314
2382
  --lightningcss-dark: initial;
2315
2383
  color-scheme: dark;
@@ -2348,6 +2416,7 @@ details summary[role="button"]:after {
2348
2416
  --cirth-contrast-hover-underline: var(--cirth-contrast-hover);
2349
2417
  --cirth-contrast-focus: oklch(87.3% .011 264 / .5);
2350
2418
  --cirth-contrast-inverse: oklch(0% 0 0);
2419
+ --cirth-link-visited-color: oklch(65.7% .03 264);
2351
2420
  --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);
2352
2421
  --cirth-h1-color: oklch(96% 0 264);
2353
2422
  --cirth-h2-color: oklch(91.7% .006 264);
@@ -2403,6 +2472,9 @@ details summary[role="button"]:after {
2403
2472
  --cirth-card-sectioning-background-color: oklch(23.4% .00725 264);
2404
2473
  --cirth-loading-spinner-opacity: var(--cirth-opacity-disabled);
2405
2474
  --cirth-modal-overlay-background-color: oklch(9% 0 312deg / var(--cirth-opacity-overlay));
2475
+ --cirth-meter-optimum-color: oklch(65.7% .125 160.59);
2476
+ --cirth-meter-suboptimum-color: oklch(70% .124 78);
2477
+ --cirth-meter-even-less-good-color: oklch(74.3% .133 29.73);
2406
2478
  --cirth-progress-background-color: oklch(26.7% .011 264);
2407
2479
  --cirth-progress-border-color: oklch(52.7% .032 264);
2408
2480
  --cirth-progress-color: oklch(61.3% .113 69.35);
@@ -2412,10 +2484,244 @@ details summary[role="button"]:after {
2412
2484
  --cirth-icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(246, 160, 145)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");
2413
2485
  }
2414
2486
 
2415
- [data-theme="dark"] input:is([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [type="radio"], [type="file"]) {
2487
+ :where([data-theme="dark"]) input:is([type="submit"], [type="button"], [type="reset"], [type="checkbox"], [type="radio"], [type="file"]) {
2416
2488
  --cirth-form-element-focus-color: var(--cirth-primary-focus);
2417
2489
  }
2418
2490
 
2419
2491
  progress, [type="checkbox"], [type="radio"], [type="range"] {
2420
2492
  accent-color: var(--cirth-primary);
2421
2493
  }
2494
+
2495
+ @media (prefers-contrast: more) {
2496
+ :where([data-theme="light"]), :root:where(:not([data-theme="dark"])), :host(:where(:not([data-theme="dark"]))) {
2497
+ --cirth-color: oklch(22.3% .006 264);
2498
+ --cirth-h1-color: var(--cirth-color);
2499
+ --cirth-h2-color: var(--cirth-color);
2500
+ --cirth-h3-color: var(--cirth-color);
2501
+ --cirth-h4-color: var(--cirth-color);
2502
+ --cirth-h5-color: var(--cirth-color);
2503
+ --cirth-h6-color: var(--cirth-color);
2504
+ --cirth-muted-color: oklch(39.7% .025 264);
2505
+ --cirth-secondary: oklch(39.7% .025 264);
2506
+ --cirth-code-color: oklch(35.3% .021 264);
2507
+ --cirth-link-visited-color: oklch(35.3% .021 264);
2508
+ --cirth-muted-border-color: oklch(57% .032 264);
2509
+ --cirth-form-element-border-color: oklch(39.7% .025 264);
2510
+ --cirth-form-element-invalid-border-color: oklch(48.3% .166 29.73);
2511
+ --cirth-form-element-valid-border-color: oklch(48.3% .092 160.59);
2512
+ --cirth-primary: oklch(39.7% .073 69.35);
2513
+ --cirth-primary-hover: oklch(31% .057 69.35);
2514
+ --cirth-primary-underline: var(--cirth-primary);
2515
+ --cirth-secondary-underline: var(--cirth-secondary);
2516
+ --cirth-contrast-underline: var(--cirth-contrast);
2517
+ --cirth-primary-focus: oklch(48.3% .089 69.35);
2518
+ --cirth-secondary-focus: oklch(48.3% .03 264);
2519
+ --cirth-contrast-focus: oklch(48.3% .03 264);
2520
+ --cirth-switch-background-color: oklch(48.3% .03 264);
2521
+ --cirth-progress-border-color: oklch(48.3% .03 264);
2522
+ --cirth-meter-optimum-color: oklch(44% .084 160.59);
2523
+ --cirth-meter-suboptimum-color: oklch(39.7% .07 78);
2524
+ --cirth-meter-even-less-good-color: oklch(35.3% .122 29.73);
2525
+ }
2526
+ }
2527
+
2528
+ @media only screen and (prefers-contrast: more) and (prefers-color-scheme: dark) {
2529
+ :root:where(:not([data-theme])), :host(:where(:not([data-theme]))) {
2530
+ --cirth-color: oklch(96% 0 264);
2531
+ --cirth-h1-color: var(--cirth-color);
2532
+ --cirth-h2-color: var(--cirth-color);
2533
+ --cirth-h3-color: var(--cirth-color);
2534
+ --cirth-h4-color: var(--cirth-color);
2535
+ --cirth-h5-color: var(--cirth-color);
2536
+ --cirth-h6-color: var(--cirth-color);
2537
+ --cirth-muted-color: oklch(78.7% .021 264);
2538
+ --cirth-secondary: oklch(78.7% .021 264);
2539
+ --cirth-code-color: oklch(83% .016 264);
2540
+ --cirth-link-visited-color: oklch(78.7% .021 264);
2541
+ --cirth-muted-border-color: oklch(57% .032 264);
2542
+ --cirth-card-border-color: var(--cirth-muted-border-color);
2543
+ --cirth-form-element-border-color: oklch(70% .028 264);
2544
+ --cirth-form-element-invalid-border-color: oklch(78.7% .106 29.73);
2545
+ --cirth-form-element-valid-border-color: oklch(78.7% .15 160.59);
2546
+ --cirth-primary: oklch(78.7% .146 69.35);
2547
+ --cirth-primary-hover: oklch(87.3% .082 69.35);
2548
+ --cirth-primary-underline: var(--cirth-primary);
2549
+ --cirth-secondary-underline: var(--cirth-secondary);
2550
+ --cirth-contrast-underline: var(--cirth-contrast);
2551
+ --cirth-primary-focus: oklch(70% .129 69.35);
2552
+ --cirth-secondary-focus: oklch(70% .028 264);
2553
+ --cirth-contrast-focus: oklch(87.3% .011 264);
2554
+ --cirth-switch-background-color: oklch(65.7% .03 264);
2555
+ --cirth-progress-border-color: oklch(70% .028 264);
2556
+ --cirth-meter-optimum-color: oklch(74.3% .142 160.59);
2557
+ --cirth-meter-suboptimum-color: oklch(78.7% .139 78);
2558
+ --cirth-meter-even-less-good-color: oklch(83% .081 29.73);
2559
+ }
2560
+ }
2561
+
2562
+ @media (prefers-contrast: more) {
2563
+ :where([data-theme="dark"]) {
2564
+ --cirth-color: oklch(96% 0 264);
2565
+ --cirth-h1-color: var(--cirth-color);
2566
+ --cirth-h2-color: var(--cirth-color);
2567
+ --cirth-h3-color: var(--cirth-color);
2568
+ --cirth-h4-color: var(--cirth-color);
2569
+ --cirth-h5-color: var(--cirth-color);
2570
+ --cirth-h6-color: var(--cirth-color);
2571
+ --cirth-muted-color: oklch(78.7% .021 264);
2572
+ --cirth-secondary: oklch(78.7% .021 264);
2573
+ --cirth-code-color: oklch(83% .016 264);
2574
+ --cirth-link-visited-color: oklch(78.7% .021 264);
2575
+ --cirth-muted-border-color: oklch(57% .032 264);
2576
+ --cirth-card-border-color: var(--cirth-muted-border-color);
2577
+ --cirth-form-element-border-color: oklch(70% .028 264);
2578
+ --cirth-form-element-invalid-border-color: oklch(78.7% .106 29.73);
2579
+ --cirth-form-element-valid-border-color: oklch(78.7% .15 160.59);
2580
+ --cirth-primary: oklch(78.7% .146 69.35);
2581
+ --cirth-primary-hover: oklch(87.3% .082 69.35);
2582
+ --cirth-primary-underline: var(--cirth-primary);
2583
+ --cirth-secondary-underline: var(--cirth-secondary);
2584
+ --cirth-contrast-underline: var(--cirth-contrast);
2585
+ --cirth-primary-focus: oklch(70% .129 69.35);
2586
+ --cirth-secondary-focus: oklch(70% .028 264);
2587
+ --cirth-contrast-focus: oklch(87.3% .011 264);
2588
+ --cirth-switch-background-color: oklch(65.7% .03 264);
2589
+ --cirth-progress-border-color: oklch(70% .028 264);
2590
+ --cirth-meter-optimum-color: oklch(74.3% .142 160.59);
2591
+ --cirth-meter-suboptimum-color: oklch(78.7% .139 78);
2592
+ --cirth-meter-even-less-good-color: oklch(83% .081 29.73);
2593
+ }
2594
+ }
2595
+
2596
+ @media print {
2597
+ :root, :host {
2598
+ --cirth-print-color: oklch(0% 0 0);
2599
+ --cirth-print-muted-color: oklch(48.3% .03 264);
2600
+ --cirth-print-border-color: oklch(61.3% .032 264);
2601
+ }
2602
+
2603
+ html {
2604
+ --lightningcss-light: initial;
2605
+ --lightningcss-dark: ;
2606
+ color-scheme: light;
2607
+ background: none;
2608
+ }
2609
+
2610
+ body {
2611
+ color: var(--cirth-print-color);
2612
+ --lightningcss-light: initial;
2613
+ --lightningcss-dark: ;
2614
+ color-scheme: light;
2615
+ --cirth-color: var(--cirth-print-color);
2616
+ --cirth-h1-color: var(--cirth-print-color);
2617
+ --cirth-h2-color: var(--cirth-print-color);
2618
+ --cirth-h3-color: var(--cirth-print-color);
2619
+ --cirth-h4-color: var(--cirth-print-color);
2620
+ --cirth-h5-color: var(--cirth-print-color);
2621
+ --cirth-h6-color: var(--cirth-print-color);
2622
+ --cirth-code-color: var(--cirth-print-color);
2623
+ --cirth-code-kbd-color: var(--cirth-print-color);
2624
+ --cirth-form-element-color: var(--cirth-print-color);
2625
+ --cirth-muted-color: var(--cirth-print-muted-color);
2626
+ --cirth-form-element-placeholder-color: var(--cirth-print-muted-color);
2627
+ --cirth-primary: var(--cirth-print-color);
2628
+ --cirth-primary-hover: var(--cirth-print-color);
2629
+ --cirth-primary-underline: var(--cirth-print-color);
2630
+ --cirth-secondary: var(--cirth-print-color);
2631
+ --cirth-secondary-underline: var(--cirth-print-color);
2632
+ --cirth-contrast: var(--cirth-print-color);
2633
+ --cirth-contrast-underline: var(--cirth-print-color);
2634
+ --cirth-link-visited-color: var(--cirth-print-color);
2635
+ --cirth-muted-border-color: var(--cirth-print-border-color);
2636
+ --cirth-form-element-border-color: var(--cirth-print-border-color);
2637
+ --cirth-box-shadow: none;
2638
+ --cirth-card-box-shadow: none;
2639
+ --cirth-card-background-color: transparent;
2640
+ --cirth-card-sectioning-background-color: transparent;
2641
+ --cirth-code-background-color: transparent;
2642
+ --cirth-code-kbd-background-color: transparent;
2643
+ --cirth-form-element-background-color: transparent;
2644
+ --cirth-form-element-active-background-color: transparent;
2645
+ --cirth-table-row-stripped-background-color: transparent;
2646
+ --cirth-modal-overlay-background-color: transparent;
2647
+ --cirth-ins-color: oklch(35.3% .067 160.59);
2648
+ --cirth-del-color: oklch(35.3% .122 29.73);
2649
+ --cirth-meter-optimum-color: oklch(52.7% .1 160.59);
2650
+ --cirth-meter-suboptimum-color: oklch(48.3% .086 78);
2651
+ --cirth-meter-even-less-good-color: oklch(44% .151 29.73);
2652
+ background: none;
2653
+ }
2654
+
2655
+ kbd {
2656
+ border: var(--cirth-border-width) solid var(--cirth-print-border-color);
2657
+ }
2658
+
2659
+ :is(button, [type="submit"], [type="reset"], [type="button"], [role="button"]) {
2660
+ border-color: var(--cirth-print-border-color);
2661
+ box-shadow: none;
2662
+ color: var(--cirth-print-color);
2663
+ background: none;
2664
+ }
2665
+
2666
+ [type="file"]::file-selector-button {
2667
+ border-color: var(--cirth-print-border-color);
2668
+ box-shadow: none;
2669
+ color: var(--cirth-print-color);
2670
+ background: none;
2671
+ }
2672
+
2673
+ :is(mark, meter, progress, [type="checkbox"], [type="radio"]) {
2674
+ -webkit-print-color-adjust: exact;
2675
+ print-color-adjust: exact;
2676
+ }
2677
+
2678
+ a[href^="http"]:not([role="button"], nav a):after {
2679
+ content: " (" attr(href) ")";
2680
+ color: var(--cirth-print-muted-color);
2681
+ font-size: var(--cirth-font-size-sm);
2682
+ word-break: break-all;
2683
+ }
2684
+
2685
+ thead {
2686
+ display: table-header-group;
2687
+ }
2688
+
2689
+ tfoot {
2690
+ display: table-footer-group;
2691
+ }
2692
+
2693
+ tr {
2694
+ break-inside: avoid;
2695
+ }
2696
+
2697
+ pre {
2698
+ white-space: pre-wrap;
2699
+ overflow: visible;
2700
+ }
2701
+
2702
+ dialog {
2703
+ -webkit-backdrop-filter: none;
2704
+ backdrop-filter: none;
2705
+ min-width: 0;
2706
+ min-height: 0;
2707
+ position: static;
2708
+ }
2709
+
2710
+ dialog > article {
2711
+ max-height: none;
2712
+ overflow: visible;
2713
+ }
2714
+
2715
+ :is(h1, h2, h3, h4, h5, h6) {
2716
+ break-after: avoid;
2717
+ }
2718
+
2719
+ :is(figure, img) {
2720
+ break-inside: avoid;
2721
+ }
2722
+
2723
+ :is(blockquote, li, p) {
2724
+ orphans: 3;
2725
+ widows: 3;
2726
+ }
2727
+ }