@leftium/nimble.css 0.1.0 → 0.2.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 +99 -19
- package/dist/nimble-base.css +10 -132
- package/dist/nimble-base.min.css +1 -1
- package/dist/nimble-core.css +790 -0
- package/dist/nimble-core.min.css +1 -0
- package/dist/nimble-full.css +946 -0
- package/dist/nimble-full.min.css +1 -0
- package/dist/nimble-meter.css +45 -0
- package/dist/nimble-meter.min.css +1 -0
- package/dist/nimble-progress.css +71 -0
- package/dist/nimble-progress.min.css +1 -0
- package/dist/nimble-reset.css +2 -1
- package/dist/nimble-reset.min.css +1 -1
- package/dist/nimble-select.css +43 -0
- package/dist/nimble-select.min.css +1 -0
- package/dist/nimble.css +352 -24
- package/dist/nimble.min.css +1 -1
- package/package.json +10 -2
- package/src/_buttons.scss +71 -1
- package/src/_colors.scss +1 -5
- package/src/_details.scss +62 -2
- package/src/_dialog.scss +7 -1
- package/src/_document.scss +3 -2
- package/src/_forms.scss +126 -3
- package/src/_links.scss +2 -2
- package/src/_media.scss +1 -1
- package/src/_meter.scss +72 -0
- package/src/_progress.scss +88 -0
- package/src/_reset.scss +3 -1
- package/src/_select.scss +64 -0
- package/src/_typography.scss +13 -13
- package/src/nimble-base.scss +1 -2
- package/src/nimble-core.scss +30 -0
- package/src/nimble-meter.scss +8 -0
- package/src/nimble-progress.scss +8 -0
- package/src/nimble-select.scss +8 -0
- package/src/nimble.scss +6 -1
package/README.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# nimble.css
|
|
2
2
|
|
|
3
|
-
A minimal class/classless CSS library. Drop it in and your semantic HTML looks good — no classes required. ~3 KB
|
|
3
|
+
A minimal class/classless CSS library. Drop it in and your semantic HTML looks good — no classes required. ~3.3 KB brotli (core).
|
|
4
4
|
|
|
5
5
|
- **Classless by default** — style every standard HTML element with zero markup changes
|
|
6
6
|
- **Automatic dark mode** — via `prefers-color-scheme` and `light-dark()`
|
|
7
7
|
- **OKLCH color system** — perceptually uniform, fully customizable via SCSS config
|
|
8
8
|
- **Cascade layers** — plays nicely alongside your own styles
|
|
9
|
-
- **Tiny** —
|
|
9
|
+
- **Tiny** — core is 15.4 KB minified, ~3.3 KB brotli; full bundle is 18.9 KB minified, ~4 KB brotli
|
|
10
10
|
|
|
11
11
|
## Demos
|
|
12
12
|
|
|
@@ -15,38 +15,83 @@ A minimal class/classless CSS library. Drop it in and your semantic HTML looks g
|
|
|
15
15
|
|
|
16
16
|
## Quick Start
|
|
17
17
|
|
|
18
|
+
### npm
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install @leftium/nimble.css
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Then import in your CSS, JS, or framework:
|
|
25
|
+
|
|
26
|
+
```css
|
|
27
|
+
/* CSS */
|
|
28
|
+
@import '@leftium/nimble.css';
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
```js
|
|
32
|
+
// JS / framework entry point
|
|
33
|
+
import '@leftium/nimble.css';
|
|
34
|
+
```
|
|
35
|
+
|
|
18
36
|
### CDN
|
|
19
37
|
|
|
38
|
+
Via jsDelivr (npm):
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@leftium/nimble.css/dist/nimble.min.css">
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Or via GitHub (latest on `main`):
|
|
45
|
+
|
|
20
46
|
```html
|
|
21
47
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Leftium/nimble.css@main/dist/nimble.min.css">
|
|
22
48
|
```
|
|
23
49
|
|
|
24
50
|
That's it. Write semantic HTML and it just works.
|
|
25
51
|
|
|
26
|
-
###
|
|
52
|
+
### Bundles
|
|
27
53
|
|
|
28
|
-
|
|
54
|
+
`nimble.min.css` (18.9 KB) includes everything.
|
|
29
55
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
|
33
|
-
|
|
34
|
-
| `nimble-
|
|
35
|
-
| `nimble-
|
|
56
|
+
To trim size, use `nimble-core.min.css` (15.4 KB) + only the add-ons you need:
|
|
57
|
+
|
|
58
|
+
| Add-on | Minified |
|
|
59
|
+
|---|---|
|
|
60
|
+
| `nimble-progress.min.css` | 1.6 KB |
|
|
61
|
+
| `nimble-meter.min.css` | 1.0 KB |
|
|
62
|
+
| `nimble-select.min.css` | 1.0 KB |
|
|
63
|
+
|
|
64
|
+
Mix and match with CDN links (comment out what you don't need):
|
|
36
65
|
|
|
37
66
|
```html
|
|
38
|
-
|
|
39
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/
|
|
67
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@leftium/nimble.css/dist/nimble-core.min.css">
|
|
68
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@leftium/nimble.css/dist/nimble-progress.min.css">
|
|
69
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@leftium/nimble.css/dist/nimble-meter.min.css">
|
|
70
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@leftium/nimble.css/dist/nimble-select.min.css">
|
|
40
71
|
```
|
|
41
72
|
|
|
42
|
-
|
|
73
|
+
Or with SCSS (comment out what you don't need):
|
|
43
74
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
75
|
+
```scss
|
|
76
|
+
@use '@leftium/nimble.css/scss/core'; // core
|
|
77
|
+
@use '@leftium/nimble.css/scss/progress'; // add-ons
|
|
78
|
+
@use '@leftium/nimble.css/scss/meter';
|
|
79
|
+
@use '@leftium/nimble.css/scss/select';
|
|
48
80
|
```
|
|
49
81
|
|
|
82
|
+
<details>
|
|
83
|
+
<summary>Granular sub-bundles</summary>
|
|
84
|
+
|
|
85
|
+
For advanced use, `nimble-core` is composed of these non-overlapping layers:
|
|
86
|
+
|
|
87
|
+
| Sub-bundle | Minified | Contents |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| `nimble-reset.min.css` | 1.8 KB | Modern CSS reset |
|
|
90
|
+
| `nimble-base.min.css` | 3.4 KB | Colors + document + typography |
|
|
91
|
+
| `nimble-utilities.min.css` | 572 B | Utility classes |
|
|
92
|
+
|
|
93
|
+
</details>
|
|
94
|
+
|
|
50
95
|
## Utility Classes
|
|
51
96
|
|
|
52
97
|
Content is centered at `720px` by default — no class needed. These opt-in utilities handle the rest. Disable all with `$enable-utilities: false`.
|
|
@@ -63,7 +108,42 @@ Content is centered at `720px` by default — no class needed. These opt-in util
|
|
|
63
108
|
|
|
64
109
|
## Customization
|
|
65
110
|
|
|
66
|
-
|
|
111
|
+
### CSS Custom Properties
|
|
112
|
+
|
|
113
|
+
Override any property at runtime — no build step needed:
|
|
114
|
+
|
|
115
|
+
```css
|
|
116
|
+
:root {
|
|
117
|
+
--nc-primary: oklch(0.50 0.15 150);
|
|
118
|
+
--nc-radius: 0.5rem;
|
|
119
|
+
--nc-spacing: 1.25rem;
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
| Property | Description |
|
|
124
|
+
|---|---|
|
|
125
|
+
| `--nc-surface-1` .. `--nc-surface-4` | Background hierarchy (page, card, input, overlay) |
|
|
126
|
+
| `--nc-text` | Text color (adapts to light/dark mode) |
|
|
127
|
+
| `--nc-border` | Default border color |
|
|
128
|
+
| `--nc-primary` | Accent color (links, buttons, focus rings) |
|
|
129
|
+
| `--nc-primary-hover` | Accent hover state |
|
|
130
|
+
| `--nc-primary-focus` | Accent focus ring (semi-transparent) |
|
|
131
|
+
| `--nc-primary-contrast` | Text on primary backgrounds |
|
|
132
|
+
| `--nc-secondary` | Secondary accent (reset buttons) |
|
|
133
|
+
| `--nc-secondary-hover` | Secondary hover state |
|
|
134
|
+
| `--nc-secondary-focus` | Secondary focus ring |
|
|
135
|
+
| `--nc-secondary-contrast` | Text on secondary backgrounds |
|
|
136
|
+
| `--nc-valid` | Validation success color |
|
|
137
|
+
| `--nc-invalid` | Validation error color |
|
|
138
|
+
| `--nc-font-sans` | Body font stack |
|
|
139
|
+
| `--nc-font-mono` | Code font stack |
|
|
140
|
+
| `--nc-spacing` | Base spacing unit |
|
|
141
|
+
| `--nc-radius` | Border radius |
|
|
142
|
+
| `--nc-content-width` | Max content width |
|
|
143
|
+
|
|
144
|
+
### SCSS
|
|
145
|
+
|
|
146
|
+
For build-time customization, override any SCSS config variable:
|
|
67
147
|
|
|
68
148
|
```scss
|
|
69
149
|
@use 'nimble' with (
|
|
@@ -103,7 +183,7 @@ nimble.css is built with SCSS. Override any config variable:
|
|
|
103
183
|
nimble.css combines [Open Props](https://open-props.style/)'s design token philosophy with [PicoCSS](https://picocss.com/)'s classless aesthetics. Key concepts borrowed from Open Props:
|
|
104
184
|
|
|
105
185
|
- **Surface hierarchy** (`surface-1` through `surface-4`) — layered backgrounds for page, card, input, and overlay contexts. Defined in `_colors.scss` from OKLCH parameters rather than imported at runtime.
|
|
106
|
-
- **Text
|
|
186
|
+
- **Text color** (`text`) — single text color variable; muted text derived inline via `color-mix()`.
|
|
107
187
|
- **OKLCH color space** — perceptually uniform color system. Change `$primary-hue` and the entire palette regenerates consistently.
|
|
108
188
|
- **Curated scale values** — `$spacing: 1rem` (~Open Props `size-3`) and `$radius: 0.25rem` (~Open Props `radius-2`) are sourced from Open Props' scales.
|
|
109
189
|
- **Minimal DevTools pollution** — ~20 semantic custom properties on `:root` plus scoped `--_` internals per component, rather than dumping hundreds of variables globally.
|
package/dist/nimble-base.css
CHANGED
|
@@ -1,123 +1,4 @@
|
|
|
1
1
|
@layer nimble.reset, nimble.base;
|
|
2
|
-
@layer nimble.reset {
|
|
3
|
-
:where(*),
|
|
4
|
-
:where(*::before),
|
|
5
|
-
:where(*::after) {
|
|
6
|
-
box-sizing: border-box;
|
|
7
|
-
background-repeat: no-repeat;
|
|
8
|
-
}
|
|
9
|
-
:where(html) {
|
|
10
|
-
line-height: 1.5;
|
|
11
|
-
-webkit-text-size-adjust: 100%;
|
|
12
|
-
tab-size: 4;
|
|
13
|
-
}
|
|
14
|
-
:where(body) {
|
|
15
|
-
margin: 0;
|
|
16
|
-
}
|
|
17
|
-
:where(h1) {
|
|
18
|
-
font-size: 2em;
|
|
19
|
-
margin-block: 0.67em;
|
|
20
|
-
}
|
|
21
|
-
:where(hr) {
|
|
22
|
-
height: 0;
|
|
23
|
-
color: inherit;
|
|
24
|
-
}
|
|
25
|
-
:where(nav) :where(ol, ul) {
|
|
26
|
-
list-style-type: none;
|
|
27
|
-
padding: 0;
|
|
28
|
-
}
|
|
29
|
-
:where(pre) {
|
|
30
|
-
font-family: monospace, monospace;
|
|
31
|
-
font-size: 1em;
|
|
32
|
-
}
|
|
33
|
-
:where(abbr[title]) {
|
|
34
|
-
text-decoration: underline dotted;
|
|
35
|
-
}
|
|
36
|
-
:where(b, strong) {
|
|
37
|
-
font-weight: bolder;
|
|
38
|
-
}
|
|
39
|
-
:where(code, kbd, samp) {
|
|
40
|
-
font-family: monospace, monospace;
|
|
41
|
-
font-size: 1em;
|
|
42
|
-
}
|
|
43
|
-
:where(small) {
|
|
44
|
-
font-size: 80%;
|
|
45
|
-
}
|
|
46
|
-
:where(sub, sup) {
|
|
47
|
-
font-size: 75%;
|
|
48
|
-
line-height: 0;
|
|
49
|
-
position: relative;
|
|
50
|
-
vertical-align: baseline;
|
|
51
|
-
}
|
|
52
|
-
:where(sub) {
|
|
53
|
-
bottom: -0.25em;
|
|
54
|
-
}
|
|
55
|
-
:where(sup) {
|
|
56
|
-
top: -0.5em;
|
|
57
|
-
}
|
|
58
|
-
:where(iframe) {
|
|
59
|
-
border-style: none;
|
|
60
|
-
}
|
|
61
|
-
:where(table) {
|
|
62
|
-
border-collapse: collapse;
|
|
63
|
-
border-color: currentColor;
|
|
64
|
-
text-indent: 0;
|
|
65
|
-
}
|
|
66
|
-
:where(button, input, select, textarea) {
|
|
67
|
-
font: inherit;
|
|
68
|
-
letter-spacing: inherit;
|
|
69
|
-
}
|
|
70
|
-
:where(button, [type=button], [type=reset], [type=submit]) {
|
|
71
|
-
-webkit-appearance: button;
|
|
72
|
-
}
|
|
73
|
-
:where(fieldset) {
|
|
74
|
-
border: 1px solid #a0a0a0;
|
|
75
|
-
}
|
|
76
|
-
:where(progress) {
|
|
77
|
-
vertical-align: baseline;
|
|
78
|
-
}
|
|
79
|
-
:where(textarea) {
|
|
80
|
-
resize: vertical;
|
|
81
|
-
overflow: auto;
|
|
82
|
-
}
|
|
83
|
-
:where([type=search]) {
|
|
84
|
-
-webkit-appearance: textfield;
|
|
85
|
-
outline-offset: -2px;
|
|
86
|
-
}
|
|
87
|
-
:where(::-webkit-search-decoration) {
|
|
88
|
-
-webkit-appearance: none;
|
|
89
|
-
}
|
|
90
|
-
:where(::-webkit-inner-spin-button),
|
|
91
|
-
:where(::-webkit-outer-spin-button) {
|
|
92
|
-
height: auto;
|
|
93
|
-
}
|
|
94
|
-
:where(::-webkit-file-upload-button) {
|
|
95
|
-
-webkit-appearance: button;
|
|
96
|
-
font: inherit;
|
|
97
|
-
}
|
|
98
|
-
:where(summary) {
|
|
99
|
-
display: list-item;
|
|
100
|
-
}
|
|
101
|
-
:where(a, area, button, input, label, select, summary, textarea, [tabindex]) {
|
|
102
|
-
touch-action: manipulation;
|
|
103
|
-
}
|
|
104
|
-
:where([aria-busy=true]) {
|
|
105
|
-
cursor: progress;
|
|
106
|
-
}
|
|
107
|
-
:where([aria-disabled=true], [disabled]) {
|
|
108
|
-
cursor: not-allowed;
|
|
109
|
-
}
|
|
110
|
-
@media (prefers-reduced-motion: reduce) {
|
|
111
|
-
:where(*),
|
|
112
|
-
:where(*::before),
|
|
113
|
-
:where(*::after) {
|
|
114
|
-
animation-duration: 0.01ms !important;
|
|
115
|
-
animation-iteration-count: 1 !important;
|
|
116
|
-
transition-duration: 0.01ms !important;
|
|
117
|
-
scroll-behavior: auto !important;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
2
|
@layer nimble.base {
|
|
122
3
|
:root {
|
|
123
4
|
color-scheme: light dark;
|
|
@@ -125,8 +6,7 @@
|
|
|
125
6
|
--nc-surface-2: light-dark(oklch(0.955 0.002 250), oklch(0.2 0.005 260));
|
|
126
7
|
--nc-surface-3: light-dark(oklch(0.925 0.002 250), oklch(0.23 0.005 260));
|
|
127
8
|
--nc-surface-4: light-dark(oklch(0.885 0.002 250), oklch(0.27 0.005 260));
|
|
128
|
-
--nc-text
|
|
129
|
-
--nc-text-2: light-dark(oklch(0.58 0.005 250), oklch(0.65 0.005 250));
|
|
9
|
+
--nc-text: light-dark(oklch(0.28 0.005 250), oklch(0.86 0.005 250));
|
|
130
10
|
--nc-border: light-dark(oklch(0.83 0.005 250), oklch(0.28 0.005 260));
|
|
131
11
|
--nc-primary: light-dark(oklch(0.5 0.2 250), oklch(0.6 0.2 250));
|
|
132
12
|
--nc-primary-hover: light-dark(oklch(0.4 0.2 250), oklch(0.7 0.2 250));
|
|
@@ -156,7 +36,7 @@
|
|
|
156
36
|
font-family: var(--nc-font-sans);
|
|
157
37
|
font-size: 100%;
|
|
158
38
|
line-height: 1.5;
|
|
159
|
-
color: var(--nc-text
|
|
39
|
+
color: var(--nc-text);
|
|
160
40
|
background-color: var(--nc-surface-1);
|
|
161
41
|
}
|
|
162
42
|
body {
|
|
@@ -166,10 +46,11 @@
|
|
|
166
46
|
}
|
|
167
47
|
body > * {
|
|
168
48
|
grid-column: 2;
|
|
49
|
+
min-width: 0;
|
|
169
50
|
}
|
|
170
51
|
::selection {
|
|
171
52
|
background-color: var(--nc-primary-focus);
|
|
172
|
-
color: var(--nc-text
|
|
53
|
+
color: var(--nc-text);
|
|
173
54
|
}
|
|
174
55
|
}
|
|
175
56
|
@layer nimble.base {
|
|
@@ -184,7 +65,7 @@
|
|
|
184
65
|
h2 {
|
|
185
66
|
font-size: 1.75rem;
|
|
186
67
|
line-height: 1.15;
|
|
187
|
-
margin-top:
|
|
68
|
+
margin-top: 2rem;
|
|
188
69
|
margin-bottom: var(--nc-spacing);
|
|
189
70
|
font-weight: 700;
|
|
190
71
|
text-wrap: balance;
|
|
@@ -192,7 +73,7 @@
|
|
|
192
73
|
h3 {
|
|
193
74
|
font-size: 1.5rem;
|
|
194
75
|
line-height: 1.2;
|
|
195
|
-
margin-top:
|
|
76
|
+
margin-top: 1.5rem;
|
|
196
77
|
margin-bottom: var(--nc-spacing);
|
|
197
78
|
font-weight: 700;
|
|
198
79
|
text-wrap: balance;
|
|
@@ -200,7 +81,7 @@
|
|
|
200
81
|
h4 {
|
|
201
82
|
font-size: 1.25rem;
|
|
202
83
|
line-height: 1.3;
|
|
203
|
-
margin-top:
|
|
84
|
+
margin-top: 1.5rem;
|
|
204
85
|
margin-bottom: var(--nc-spacing);
|
|
205
86
|
font-weight: 700;
|
|
206
87
|
text-wrap: balance;
|
|
@@ -208,7 +89,7 @@
|
|
|
208
89
|
h5 {
|
|
209
90
|
font-size: 1.125rem;
|
|
210
91
|
line-height: 1.4;
|
|
211
|
-
margin-top:
|
|
92
|
+
margin-top: 1.5rem;
|
|
212
93
|
margin-bottom: var(--nc-spacing);
|
|
213
94
|
font-weight: 700;
|
|
214
95
|
text-wrap: balance;
|
|
@@ -216,7 +97,7 @@
|
|
|
216
97
|
h6 {
|
|
217
98
|
font-size: 1rem;
|
|
218
99
|
line-height: 1.5;
|
|
219
|
-
margin-top:
|
|
100
|
+
margin-top: 1.5rem;
|
|
220
101
|
margin-bottom: var(--nc-spacing);
|
|
221
102
|
font-weight: 700;
|
|
222
103
|
text-wrap: balance;
|
|
@@ -236,9 +117,6 @@
|
|
|
236
117
|
margin-top: 0;
|
|
237
118
|
margin-bottom: var(--nc-spacing);
|
|
238
119
|
}
|
|
239
|
-
:where(p, ul, ol, dl, blockquote, pre, table, figure, form) + :is(h1, h2, h3, h4, h5, h6) {
|
|
240
|
-
margin-top: calc(var(--nc-spacing) * 2);
|
|
241
|
-
}
|
|
242
120
|
ul, ol {
|
|
243
121
|
padding-inline-start: 1.5em;
|
|
244
122
|
}
|
|
@@ -266,7 +144,7 @@
|
|
|
266
144
|
:where(blockquote) cite {
|
|
267
145
|
font-style: normal;
|
|
268
146
|
font-size: 0.9em;
|
|
269
|
-
color: var(--nc-text
|
|
147
|
+
color: color-mix(in oklch, var(--nc-text), transparent 40%);
|
|
270
148
|
}
|
|
271
149
|
hr {
|
|
272
150
|
border: none;
|
package/dist/nimble-base.min.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer nimble.reset
|
|
1
|
+
@layer nimble.reset;@layer nimble.base{:root{color-scheme:light dark;--nc-surface-1:light-dark(oklch(98.5% .002 250),oklch(17% .005 260));--nc-surface-2:light-dark(oklch(95.5% .002 250),oklch(20% .005 260));--nc-surface-3:light-dark(oklch(92.5% .002 250),oklch(23% .005 260));--nc-surface-4:light-dark(oklch(88.5% .002 250),oklch(27% .005 260));--nc-text:light-dark(oklch(28% .005 250),oklch(86% .005 250));--nc-border:light-dark(oklch(83% .005 250),oklch(28% .005 260));--nc-primary:light-dark(oklch(50% .2 250),oklch(60% .2 250));--nc-primary-hover:light-dark(oklch(40% .2 250),oklch(70% .2 250));--nc-primary-focus:oklch(50% .2 250/.4);--nc-primary-contrast:light-dark(#fff,oklch(15% .005 250));--nc-secondary:light-dark(oklch(45% .05 250),oklch(60% .05 250));--nc-secondary-hover:light-dark(oklch(35% .05 250),oklch(70% .05 250));--nc-secondary-focus:oklch(45% .05 250/.3);--nc-secondary-contrast:light-dark(#fff,oklch(15% .005 250));--nc-valid:light-dark(oklch(52% .17 145),oklch(65% .2 145));--nc-invalid:light-dark(oklch(55% .22 25),oklch(65% .22 25));--nc-font-sans:system-ui, sans-serif;--nc-font-mono:ui-monospace, Cascadia Code, Source Code Pro, Menlo, Consolas, DejaVu Sans Mono, monospace;--nc-spacing:1rem;--nc-radius:.25rem;--nc-content-width:720px}[data-theme=dark]{color-scheme:dark}[data-theme=light]{color-scheme:light}html{font-family:var(--nc-font-sans);color:var(--nc-text);background-color:var(--nc-surface-1);font-size:100%;line-height:1.5}body{grid-template-columns:1fr min(var(--nc-content-width), calc(100% - 2 * var(--nc-spacing))) 1fr;min-height:100dvh;display:grid}body>*{grid-column:2;min-width:0}::selection{background-color:var(--nc-primary-focus);color:var(--nc-text)}h1{margin-top:0;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:2rem;font-weight:700;line-height:1.1}h2{margin-top:2rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.75rem;font-weight:700;line-height:1.15}h3{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.5rem;font-weight:700;line-height:1.2}h4{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.25rem;font-weight:700;line-height:1.3}h5{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.125rem;font-weight:700;line-height:1.4}h6{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1rem;font-weight:700;line-height:1.5}@media (width<=720px){h1{font-size:1.75rem}h2{font-size:1.5rem}h3{font-size:1.3rem}}p,ul,ol,dl,blockquote,pre,table,figure,form,fieldset{margin-top:0;margin-bottom:var(--nc-spacing)}ul,ol{padding-inline-start:1.5em}li{margin-bottom:.25em}:where(li)>:where(ul,ol){margin-bottom:0}dt{font-weight:600}dd{margin-inline-start:1.5em;margin-bottom:.5em}blockquote{margin-block:var(--nc-spacing);padding:.25em var(--nc-spacing);border-inline-start:.25rem solid var(--nc-border);margin-inline:0;font-style:italic}:where(blockquote) footer,:where(blockquote) cite{color:color-mix(in oklch, var(--nc-text), transparent 40%);font-size:.9em;font-style:normal}hr{background-color:color-mix(in oklch, var(--nc-border), transparent 40%);height:1px;margin:calc(var(--nc-spacing) * 2) 0;border:none}mark{color:light-dark(inherit,oklch(95% .01 85));background-color:light-dark(#fde68a,oklch(55% .12 85));border-radius:2px;padding:.1em .25em}address{font-style:normal}}
|