@nordcode/ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/LICENSE.md +661 -0
  3. package/README.md +90 -0
  4. package/index.html +1169 -0
  5. package/out/bundle.css +1400 -0
  6. package/out/bundle_configless.css +1135 -0
  7. package/out/colors.css +87 -0
  8. package/out/complete.css +2647 -0
  9. package/out/complete_configless.css +2382 -0
  10. package/package.json +73 -0
  11. package/src/assets/fonts/DMMono-Regular.woff +0 -0
  12. package/src/assets/fonts/DMMono-Regular.woff2 +0 -0
  13. package/src/assets/fonts/fonts.css +7 -0
  14. package/src/assets/icons/ArrowRightSolid.svelte +1 -0
  15. package/src/assets/icons/arrow-right-solid.svg +1 -0
  16. package/src/assets/icons/favicon.png +0 -0
  17. package/src/assets/icons/favicon.svg +8 -0
  18. package/src/assets/logos/nordcode-logo-icon.svg +3 -0
  19. package/src/assets/logos/nordcode-logo.svg +17 -0
  20. package/src/modules/copyButtons/ts/copyButtons.ts +9 -0
  21. package/src/modules/dialogs/svelte/dialog.svelte +27 -0
  22. package/src/modules/dialogs/ts/LICENCE +171 -0
  23. package/src/modules/dialogs/ts/dialogs.ts +111 -0
  24. package/src/modules/notifications/js/notifications.js +294 -0
  25. package/src/modules/notifications/svelte/NotificationCenter.svelte +18 -0
  26. package/src/modules/notifications/svelte/NotificationTemplate.svelte +16 -0
  27. package/src/modules/sectionObserver/ts/sectionOberserver.ts +34 -0
  28. package/src/styles/bundle.css +7 -0
  29. package/src/styles/bundle_configless.css +5 -0
  30. package/src/styles/complete.css +5 -0
  31. package/src/styles/complete_configless.css +5 -0
  32. package/src/styles/components/badges.css +14 -0
  33. package/src/styles/components/breadcrumbs.css +37 -0
  34. package/src/styles/components/bundle.css +12 -0
  35. package/src/styles/components/buttons.css +256 -0
  36. package/src/styles/components/card.css +55 -0
  37. package/src/styles/components/dialogs.css +116 -0
  38. package/src/styles/components/forms.css +47 -0
  39. package/src/styles/components/gallery.css +66 -0
  40. package/src/styles/components/icons.css +60 -0
  41. package/src/styles/components/inputs/base.css +258 -0
  42. package/src/styles/components/inputs/bundle.css +5 -0
  43. package/src/styles/components/inputs/fields.css +79 -0
  44. package/src/styles/components/inputs/segmented.css +123 -0
  45. package/src/styles/components/inputs/switch.css +42 -0
  46. package/src/styles/components/inputs/tag-select.css +44 -0
  47. package/src/styles/components/lists.css +40 -0
  48. package/src/styles/components/notifications.css +137 -0
  49. package/src/styles/components/tables.css +7 -0
  50. package/src/styles/config/bundle.css +2 -0
  51. package/src/styles/config/config.css +828 -0
  52. package/src/styles/config/extras.css +18 -0
  53. package/src/styles/exceptions/bundle.css +3 -0
  54. package/src/styles/exceptions/misc.css +21 -0
  55. package/src/styles/exceptions/spacings.css +15 -0
  56. package/src/styles/exceptions/typography.css +57 -0
  57. package/src/styles/theme/colors.css +178 -0
  58. package/src/styles/theme/colors_processed.css +87 -0
  59. package/src/styles/utils/base.css +406 -0
  60. package/src/styles/utils/bundle.css +6 -0
  61. package/src/styles/utils/easings.css +364 -0
  62. package/src/styles/utils/layouts.css +298 -0
  63. package/src/styles/utils/media.css +55 -0
  64. package/src/styles/utils/reset.css +128 -0
  65. package/src/styles/utils/theme.css +120 -0
  66. package/transform.js +71 -0
@@ -0,0 +1,2382 @@
1
+ @layer config;
2
+
3
+ @layer theme {
4
+ :where(html) {
5
+ --lightningcss-light: initial;
6
+ --lightningcss-dark: ;
7
+ color-scheme: light dark;
8
+ }
9
+
10
+ @media (prefers-color-scheme: dark) {
11
+ :where(html) {
12
+ --lightningcss-light: ;
13
+ --lightningcss-dark: initial;
14
+ }
15
+ }
16
+
17
+ :where([data-theme="light"]) {
18
+ --lightningcss-light: initial;
19
+ --lightningcss-dark: ;
20
+ color-scheme: light;
21
+ }
22
+
23
+ :where([data-theme="dark"]) {
24
+ --lightningcss-light: ;
25
+ --lightningcss-dark: initial;
26
+ color-scheme: dark;
27
+ }
28
+
29
+ :where(*) {
30
+ --l-brand-primary: var(--lightningcss-light, var(--l-brand-primary-light)) var(--lightningcss-dark, var(--l-brand-primary-dark));
31
+ --color-brand-primary-emphasis: var(--lightningcss-light, var(--color-brand-primary-emphasis-light)) var(--lightningcss-dark, var(--color-brand-primary-emphasis-dark));
32
+ --color-brand-primary-base: var(--lightningcss-light, var(--color-brand-primary-base-light)) var(--lightningcss-dark, var(--color-brand-primary-base-dark));
33
+ --color-brand-primary-surface: var(--lightningcss-light, var(--color-brand-primary-surface-light)) var(--lightningcss-dark, var(--color-brand-primary-surface-dark));
34
+ --color-brand-primary-hover: var(--lightningcss-light, var(--color-brand-primary-hover-light)) var(--lightningcss-dark, var(--color-brand-primary-hover-light));
35
+ --color-brand-primary-contrast-lightness: var(--lightningcss-light, var(--color-brand-primary-contrast-lightness-light)) var(--lightningcss-dark, var(--color-brand-primary-contrast-lightness-dark));
36
+ --color-brand-primary-contrast: var(--lightningcss-light, var(--color-brand-primary-contrast-light)) var(--lightningcss-dark, var(--color-brand-primary-contrast-dark));
37
+ --color-brand-secondary-emphasis: var(--lightningcss-light, var(--color-brand-secondary-emphasis-light)) var(--lightningcss-dark, var(--color-brand-secondary-emphasis-dark));
38
+ --color-brand-secondary-base: var(--lightningcss-light, var(--color-brand-secondary-base-light)) var(--lightningcss-dark, var(--color-brand-secondary-base-dark));
39
+ --color-brand-secondary-surface: var(--lightningcss-light, var(--color-brand-secondary-surface-light)) var(--lightningcss-dark, var(--color-brand-secondary-surface-dark));
40
+ --color-brand-secondary-hover: var(--lightningcss-light, var(--color-brand-secondary-hover-light)) var(--lightningcss-dark, var(--color-brand-secondary-hover-dark));
41
+ --color-brand-secondary-contrast: var(--lightningcss-light, var(--color-brand-secondary-contrast-light)) var(--lightningcss-dark, var(--color-brand-secondary-contrast-dark));
42
+ --color-text-base: var(--lightningcss-light, var(--color-text-base-light)) var(--lightningcss-dark, var(--color-text-base-dark));
43
+ --color-text-muted: var(--lightningcss-light, var(--color-text-muted-light)) var(--lightningcss-dark, var(--color-text-muted-dark));
44
+ --color-text-subtle: var(--lightningcss-light, var(--color-text-subtle-light)) var(--lightningcss-dark, var(--color-text-subtle-dark));
45
+ --color-text-on-emphasis: var(--lightningcss-light, var(--color-text-on-emphasis-light)) var(--lightningcss-dark, var(--color-text-on-emphasis-dark));
46
+ --color-text-hover: var(--lightningcss-light, var(--color-text-hover-light)) var(--lightningcss-dark, var(--color-text-hover-dark));
47
+ --color-surface-base: var(--lightningcss-light, var(--color-surface-base-light)) var(--lightningcss-dark, var(--color-surface-base-dark));
48
+ --color-surface-muted: var(--lightningcss-light, var(--color-surface-muted-light)) var(--lightningcss-dark, var(--color-surface-muted-dark));
49
+ --color-surface-subtle: var(--lightningcss-light, var(--color-surface-subtle-light)) var(--lightningcss-dark, var(--color-surface-subtle-dark));
50
+ --color-surface-emphasis: var(--lightningcss-light, var(--color-surface-emphasis-light)) var(--lightningcss-dark, var(--color-surface-emphasis-dark));
51
+ --color-border-base: var(--lightningcss-light, var(--color-border-base-light)) var(--lightningcss-dark, var(--color-border-base-dark));
52
+ --color-border-muted: var(--lightningcss-light, var(--color-border-muted-light)) var(--lightningcss-dark, var(--color-border-muted-dark));
53
+ --color-border-subtle: var(--lightningcss-light, var(--color-border-subtle-light)) var(--lightningcss-dark, var(--color-border-subtle-dark));
54
+ --color-border-on-emphasis: var(--lightningcss-light, var(--color-border-on-emphasis-light)) var(--lightningcss-dark, var(--color-border-on-emphasis-dark));
55
+ --color-border-hover: var(--lightningcss-light, var(--color-border-hover-light)) var(--lightningcss-dark, var(--color-border-hover-dark));
56
+ --color-status-info-emphasis: var(--lightningcss-light, var(--color-status-info-emphasis-light)) var(--lightningcss-dark, var(--color-status-info-emphasis-dark));
57
+ --color-status-info-base: var(--lightningcss-light, var(--color-status-info-base-light)) var(--lightningcss-dark, var(--color-status-info-base-dark));
58
+ --color-status-info-surface: var(--lightningcss-light, var(--color-status-info-surface-light)) var(--lightningcss-dark, var(--color-status-info-surface-dark));
59
+ --color-status-info-hover: var(--lightningcss-light, var(--color-status-info-hover-light)) var(--lightningcss-dark, var(--color-status-info-hover-light));
60
+ --color-status-info-contrast-lightness: var(--lightningcss-light, var(--color-status-info-contrast-lightness-light)) var(--lightningcss-dark, var(--color-status-info-contrast-lightness-dark));
61
+ --color-status-info-contrast: var(--lightningcss-light, var(--color-status-info-contrast-light)) var(--lightningcss-dark, var(--color-status-info-contrast-dark));
62
+ --color-status-success-emphasis: var(--lightningcss-light, var(--color-status-success-emphasis-light)) var(--lightningcss-dark, var(--color-status-success-emphasis-dark));
63
+ --color-status-success-base: var(--lightningcss-light, var(--color-status-success-base-light)) var(--lightningcss-dark, var(--color-status-success-base-dark));
64
+ --color-status-success-surface: var(--lightningcss-light, var(--color-status-success-surface-light)) var(--lightningcss-dark, var(--color-status-success-surface-dark));
65
+ --color-status-success-hover: var(--lightningcss-light, var(--color-status-success-hover-light)) var(--lightningcss-dark, var(--color-status-success-hover-light));
66
+ --color-status-success-contrast-lightness: var(--lightningcss-light, var(--color-status-success-contrast-lightness-light)) var(--lightningcss-dark, var(--color-status-success-contrast-lightness-dark));
67
+ --color-status-success-contrast: var(--lightningcss-light, var(--color-status-success-contrast-light)) var(--lightningcss-dark, var(--color-status-success-contrast-dark));
68
+ --color-status-warning-emphasis: var(--lightningcss-light, var(--color-status-warning-emphasis-light)) var(--lightningcss-dark, var(--color-status-warning-emphasis-dark));
69
+ --color-status-warning-base: var(--lightningcss-light, var(--color-status-warning-base-light)) var(--lightningcss-dark, var(--color-status-warning-base-dark));
70
+ --color-status-warning-surface: var(--lightningcss-light, var(--color-status-warning-surface-light)) var(--lightningcss-dark, var(--color-status-warning-surface-dark));
71
+ --color-status-warning-hover: var(--lightningcss-light, var(--color-status-warning-hover-light)) var(--lightningcss-dark, var(--color-status-warning-hover-light));
72
+ --color-status-warning-contrast-lightness: var(--lightningcss-light, var(--color-status-warning-contrast-lightness-light)) var(--lightningcss-dark, var(--color-status-warning-contrast-lightness-dark));
73
+ --color-status-warning-contrast: var(--lightningcss-light, var(--color-status-warning-contrast-light)) var(--lightningcss-dark, var(--color-status-warning-contrast-dark));
74
+ --color-status-danger-emphasis: var(--lightningcss-light, var(--color-status-danger-emphasis-light)) var(--lightningcss-dark, var(--color-status-danger-emphasis-dark));
75
+ --color-status-danger-base: var(--lightningcss-light, var(--color-status-danger-base-light)) var(--lightningcss-dark, var(--color-status-danger-base-dark));
76
+ --color-status-danger-surface: var(--lightningcss-light, var(--color-status-danger-surface-light)) var(--lightningcss-dark, var(--color-status-danger-surface-dark));
77
+ --color-status-danger-hover: var(--lightningcss-light, var(--color-status-danger-hover-light)) var(--lightningcss-dark, var(--color-status-danger-hover-light));
78
+ --color-status-danger-contrast-lightness: var(--lightningcss-light, var(--color-status-danger-contrast-lightness-light)) var(--lightningcss-dark, var(--color-status-danger-contrast-lightness-dark));
79
+ --color-status-danger-contrast: var(--lightningcss-light, var(--color-status-danger-contrast-light)) var(--lightningcss-dark, var(--color-status-danger-contrast-dark));
80
+ --shadow-color: var(--lightningcss-light, var(--shadow-color-light)) var(--lightningcss-dark, var(--shadow-color-dark));
81
+ --shadow-inset: var(--lightningcss-light, var(--shadow-inset-light)) var(--lightningcss-dark, var(--shadow-inset-dark));
82
+ --shadow-nearest: var(--lightningcss-light, var(--shadow-nearest-light)) var(--lightningcss-dark, var(--shadow-nearest-dark));
83
+ --shadow-near: var(--lightningcss-light, var(--shadow-near-light)) var(--lightningcss-dark, var(--shadow-near-dark));
84
+ --shadow-medium: var(--lightningcss-light, var(--shadow-medium-light)) var(--lightningcss-dark, var(--shadow-medium-dark));
85
+ --shadow-far: var(--lightningcss-light, var(--shadow-far-light)) var(--lightningcss-dark, var(--shadow-far-dark));
86
+ --triangle-down-url: var(--lightningcss-light, var(--triangle-down-url-light)) var(--lightningcss-dark, var(--triangle-down-url-dark));
87
+ --triangle-up-url: var(--lightningcss-light, var(--triangle-up-url-light)) var(--lightningcss-dark, var(--triangle-up-url-dark));
88
+ }
89
+ }
90
+
91
+ @layer reset {
92
+ *, :after, :before {
93
+ box-sizing: border-box;
94
+ accent-color: var(--color-brand-primary-base);
95
+ font-kerning: normal;
96
+ -moz-osx-font-smoothing: grayscale;
97
+ -webkit-font-smoothing: antialiased;
98
+ }
99
+
100
+ :where(:not(dialog)) {
101
+ margin: 0;
102
+ }
103
+
104
+ :where(:not(fieldset, progress, meter)) {
105
+ background-repeat: no-repeat;
106
+ background-origin: border-box;
107
+ border-style: solid;
108
+ border-width: 0;
109
+ }
110
+
111
+ :where(:focus-visible) {
112
+ transition: outline-offset var(--transition-duration-short) var(--ease-2);
113
+ }
114
+
115
+ :where(:focus-visible, :focus) {
116
+ outline: var(--border-width-medium) solid var(--color-brand-primary-base);
117
+ outline-offset: 1ch;
118
+ }
119
+
120
+ :where(:focus:not(:focus-visible)) {
121
+ outline: none;
122
+ }
123
+
124
+ :where(html) {
125
+ -webkit-text-size-adjust: none;
126
+ -moz-text-size-adjust: none;
127
+ text-size-adjust: none;
128
+ inline-size: 100%;
129
+ text-rendering: optimizeSpeed;
130
+ block-size: 100%;
131
+ min-block-size: 100vh;
132
+ }
133
+
134
+ :where(body) {
135
+ font-weight: var(--font-weight-default);
136
+ color: var(--color-text-base);
137
+ background-color: var(--color-surface-muted);
138
+ font-family: var(--font-family-default);
139
+ line-height: var(--line-height-base);
140
+ font-style: normal;
141
+ }
142
+
143
+ :where(body, h1, h2, h3, h4, p, figure, blockquote, dl, dd) {
144
+ margin: 0;
145
+ }
146
+
147
+ :where(ul[role="list"], ol[role="list"]) {
148
+ list-style: none;
149
+ }
150
+
151
+ :where(h1, h2, h3, h4) {
152
+ text-wrap: balance;
153
+ }
154
+
155
+ :where(a:not([class])) {
156
+ -webkit-text-decoration-skip-ink: auto;
157
+ text-decoration-skip-ink: auto;
158
+ color: currentColor;
159
+ }
160
+
161
+ :where(img, svg, video, canvas, audio, iframe, embed, object) {
162
+ display: block;
163
+ }
164
+
165
+ :where(img, svg, video) {
166
+ block-size: auto;
167
+ max-inline-size: 100%;
168
+ }
169
+
170
+ :where(figure) {
171
+ place-items: center;
172
+ gap: 0;
173
+ display: grid;
174
+ }
175
+
176
+ :where(a[href], area, button, input, label[for], select, summary, textarea, [tabindex]:not([tabindex*="-"])) {
177
+ cursor: pointer;
178
+ touch-action: manipulation;
179
+ -webkit-tap-highlight-color: transparent;
180
+ }
181
+
182
+ :where(input, button, textarea, select) {
183
+ font: inherit;
184
+ color: inherit;
185
+ letter-spacing: inherit;
186
+ }
187
+
188
+ :where(input[type="file"])::-webkit-file-upload-button {
189
+ font: inherit;
190
+ color: inherit;
191
+ letter-spacing: inherit;
192
+ }
193
+
194
+ :where(label:not(class) + input, label:not(class) + select, label:not(class) + textarea) {
195
+ display: block;
196
+ }
197
+
198
+ :where(p, summary) {
199
+ max-inline-size: var(--measure-base);
200
+ font-size: inherit;
201
+ line-height: var(--line-height-base);
202
+ margin: 0;
203
+ }
204
+
205
+ :where(p) {
206
+ text-wrap: pretty;
207
+ }
208
+ }
209
+
210
+ @layer base {
211
+ :where(dt) {
212
+ font-weight: var(--font-weight-active);
213
+ color: var(--color-text-base);
214
+ }
215
+
216
+ :where(dd) {
217
+ font-weight: var(--font-weight-default);
218
+ color: var(--color-text-base);
219
+ }
220
+
221
+ :where(dd):not(:last-of-type) {
222
+ border-bottom: var(--border-width-thin) solid var(--color-border-muted);
223
+ padding-block-end: .5lh;
224
+ }
225
+
226
+ :where(dl:not([class]), .nc-description-list) {
227
+ word-break: break-word;
228
+ grid-template-columns: .25fr .75fr;
229
+ align-items: flex-start;
230
+ row-gap: .5lh;
231
+ inline-size: 100%;
232
+ max-inline-size: 100%;
233
+ display: grid;
234
+ container: description-list / inline-size;
235
+ }
236
+
237
+ :where(dd, dt) {
238
+ max-inline-size: var(--measure-base);
239
+ grid-column: 1 / span 2;
240
+ }
241
+
242
+ @container description-list (width >= 30rem) {
243
+ :where(dt) {
244
+ grid-column: 1 / 1;
245
+ min-block-size: 100%;
246
+ padding-block-end: 0;
247
+ padding-inline-end: 2ch;
248
+ }
249
+
250
+ :where(dt):not(:last-of-type) {
251
+ border-bottom: var(--border-width-thin) solid var(--color-border-muted);
252
+ padding-block-end: .5lh;
253
+ }
254
+
255
+ :where(dd) {
256
+ grid-column: 2 / 2;
257
+ min-block-size: 100%;
258
+ }
259
+ }
260
+
261
+ :where(small) {
262
+ font-size: var(--font-size-small);
263
+ }
264
+
265
+ :where(figure) {
266
+ border-radius: var(--border-radius-medium);
267
+ }
268
+
269
+ :where(figure) :where(img, picture) {
270
+ border-start-start-radius: inherit;
271
+ border-start-end-radius: inherit;
272
+ }
273
+
274
+ :where(figure) :where(figcaption) {
275
+ border-end-end-radius: inherit;
276
+ border-end-start-radius: inherit;
277
+ }
278
+
279
+ :where(figcaption) {
280
+ font-family: var(--font-family-sans);
281
+ font-weight: var(--font-weight-default);
282
+ line-height: var(--line-height-base);
283
+ color: var(--color-surface-subtle);
284
+ background-color: var(--color-text-base);
285
+ padding: .3lh 1ch;
286
+ display: block;
287
+ }
288
+
289
+ :where(details) {
290
+ --p-x-details: 2ch;
291
+ --p-y-details: .75lh;
292
+ background-color: var(--color-surface-subtle);
293
+ border-radius: var(--border-radius-medium);
294
+ border: var(--border-width-thin) solid var(--color-border-base);
295
+ inline-size: 100%;
296
+ }
297
+
298
+ :where(details) > * {
299
+ padding-inline: var(--p-x-details);
300
+ }
301
+
302
+ :where(details) > :last-child {
303
+ padding-block-end: var(--p-y-details);
304
+ }
305
+
306
+ :where(details) > summary {
307
+ cursor: pointer;
308
+ color: var(--color-text-base);
309
+ inline-size: 100%;
310
+ font-weight: var(--font-weight-strong);
311
+ padding-inline: var(--p-x-details);
312
+ padding-block: var(--p-y-details);
313
+ }
314
+
315
+ .note, blockquote {
316
+ inline-size: 100%;
317
+ color: var(--color-text-base);
318
+ font-family: var(--font-family-serif);
319
+ quotes: auto;
320
+ font-size: var(--font-size-large);
321
+ margin-inline: 0;
322
+ padding: 0;
323
+ padding-inline-start: 2ch;
324
+ position: relative;
325
+ }
326
+
327
+ :is(.note, blockquote) p {
328
+ max-inline-size: var(--measure-base);
329
+ }
330
+
331
+ :is(.note, blockquote) p:first-of-type:before {
332
+ content: open-quote;
333
+ }
334
+
335
+ :is(.note, blockquote) p:last-of-type:after {
336
+ content: close-quote;
337
+ }
338
+
339
+ :is(.note, blockquote) cite {
340
+ font-family: var(--font-family-default);
341
+ font-size: var(--font-size-base);
342
+ max-inline-size: max-content;
343
+ color: color-mix(in oklch, currentColor calc(var(--transparency-weaker) * 100%), transparent);
344
+ margin-block-start: var(--spacing-near);
345
+ display: block;
346
+ }
347
+
348
+ :is(.note, blockquote) cite:before {
349
+ content: "—";
350
+ margin-inline-end: .5ch;
351
+ }
352
+
353
+ cite {
354
+ font-family: var(--font-family-serif);
355
+ font-style: normal;
356
+ }
357
+
358
+ :where(hr) {
359
+ border-top: var(--border-width-medium) solid var(--color-border-base);
360
+ block-size: 0;
361
+ inline-size: 100%;
362
+ }
363
+
364
+ :where(h1, h2, h3, h4, h5, h6) {
365
+ line-height: var(--line-height-small);
366
+ color: inherit;
367
+ max-inline-size: 100%;
368
+ font-weight: var(--font-weight-heading);
369
+ }
370
+
371
+ :where(h1) {
372
+ font-size: var(--font-size-display);
373
+ }
374
+
375
+ :where(h2) {
376
+ font-size: var(--font-size-largest);
377
+ }
378
+
379
+ :where(h3) {
380
+ font-size: var(--font-size-large);
381
+ }
382
+
383
+ :where(h4) {
384
+ font-size: var(--font-size-base);
385
+ }
386
+
387
+ :where(h5) {
388
+ font-size: var(--font-size-small);
389
+ }
390
+
391
+ :where(h6) {
392
+ font-size: var(--font-size-smallest);
393
+ }
394
+
395
+ ::marker {
396
+ color: var(--color-brand-primary-base);
397
+ }
398
+
399
+ :where() {
400
+ background-color: var(--color-brand-primary-base);
401
+ color: var(--color-surface-base);
402
+ }
403
+
404
+ :where(a, .nc-link) {
405
+ color: inherit;
406
+ font-family: var(--font-family-link);
407
+ text-underline-offset: .25lh;
408
+ font-weight: var(--font-weight-default);
409
+ cursor: pointer;
410
+ letter-spacing: var(--tracking-tight);
411
+ text-decoration: underline;
412
+ text-decoration-thickness: from-font;
413
+ }
414
+
415
+ :where(a, .nc-link):visited {
416
+ opacity: .72;
417
+ }
418
+
419
+ :where(a, .nc-link):hover {
420
+ -webkit-text-decoration-color: var(--color-brand-primary-base);
421
+ text-decoration-color: var(--color-brand-primary-base);
422
+ }
423
+
424
+ :where(em, i) {
425
+ font-family: var(--font-family-serif);
426
+ }
427
+
428
+ :where(strong, b) {
429
+ font-weight: var(--font-weight-strong);
430
+ }
431
+
432
+ :where(dfn, var) {
433
+ font-family: var(--font-family-mono);
434
+ letter-spacing: var(--tracking-tight);
435
+ font-weight: var(--font-weight-default);
436
+ }
437
+
438
+ :where([aria-disabled="true"], .disabled, :disabled) {
439
+ color: inherit;
440
+ opacity: 1;
441
+ cursor: not-allowed;
442
+ filter: contrast(.64) opacity(.64);
443
+ }
444
+
445
+ :where(del, ins, mark, code, kbd, var) {
446
+ border-radius: var(--border-radius-small);
447
+ line-height: inherit;
448
+ -webkit-box-decoration-break: clone;
449
+ box-decoration-break: clone;
450
+ padding-inline: .5ch;
451
+ }
452
+
453
+ :where(code, kbd, var) {
454
+ font-family: var(--font-family-mono);
455
+ letter-spacing: 0;
456
+ font-weight: var(--font-weight-default);
457
+ -webkit-hyphens: none;
458
+ hyphens: none;
459
+ tab-size: 4;
460
+ text-align: left;
461
+ word-spacing: normal;
462
+ word-break: normal;
463
+ word-wrap: normal;
464
+ max-inline-size: fit-content;
465
+ padding-block: .125lh;
466
+ font-style: normal;
467
+ }
468
+
469
+ :where(code) {
470
+ background: var(--color-surface-subtle);
471
+ }
472
+
473
+ :where(var) {
474
+ background: var(--color-brand-primary-surface);
475
+ color: var(--color-brand-primary-emphasis);
476
+ }
477
+
478
+ :where(kbd) {
479
+ background: var(--color-surface-subtle);
480
+ border: var(--border-width-thin) solid var(--color-border-base);
481
+ box-shadow: var(--shadow-nearest);
482
+ font-weight: var(--font-weight-active);
483
+ }
484
+
485
+ :where(pre) {
486
+ inline-size: 100%;
487
+ color: var(--color-text-base);
488
+ border: var(--border-width-medium) solid var(--color-border-base);
489
+ border-radius: var(--border-radius-medium);
490
+ background: var(--color-surface-subtle);
491
+ -webkit-overflow-scrolling: touch;
492
+ padding: .5lh 2ch;
493
+ overflow-x: auto;
494
+ }
495
+
496
+ :where(pre) code {
497
+ white-space: pre;
498
+ background: none;
499
+ border-radius: 0;
500
+ padding: 0;
501
+ }
502
+
503
+ :where(table) {
504
+ --_nc-table-border-radius: var(--nc-table-border-radius, var(--border-radius-medium));
505
+ border-collapse: separate;
506
+ border-spacing: 0;
507
+ text-align: left;
508
+ border: var(--border-width-medium) solid var(--color-border-base);
509
+ border-radius: var(--_nc-table-border-radius);
510
+ inline-size: 100%;
511
+ }
512
+
513
+ :where(table > thead th:first-child) {
514
+ border-start-start-radius: var(--_nc-table-border-radius);
515
+ }
516
+
517
+ :where(table > thead th:last-child) {
518
+ border-start-end-radius: var(--_nc-table-border-radius);
519
+ }
520
+
521
+ :where(table > tfoot th:first-child) {
522
+ border-end-start-radius: var(--_nc-table-border-radius);
523
+ }
524
+
525
+ :where(table > tfoot th:last-child) {
526
+ border-end-end-radius: var(--_nc-table-border-radius);
527
+ }
528
+
529
+ :where(td, th) {
530
+ line-height: var(--line-height-small);
531
+ white-space: nowrap;
532
+ font-variant-numeric: tabular-nums;
533
+ padding: .4lh 1ch;
534
+ }
535
+
536
+ :where(td), :where(thead th) {
537
+ border-block-end: var(--border-width-thin) solid var(--color-border-muted);
538
+ }
539
+
540
+ :where(tfoot th) {
541
+ border-block-start: var(--border-width-thin) solid var(--color-border-muted);
542
+ }
543
+
544
+ :where(th) {
545
+ font-weight: var(--font-weight-active);
546
+ color: var(--color-text-muted);
547
+ background-color: var(--color-surface-subtle);
548
+ }
549
+
550
+ :where(tbody tr:hover) {
551
+ background: var(--color-brand-primary-hover);
552
+ }
553
+
554
+ :where(caption) {
555
+ color: var(--color-text-base);
556
+ }
557
+
558
+ :where(tr:has(td) th) {
559
+ border-block-end: var(--border-width-thin) solid var(--color-border-muted);
560
+ border-inline-end: var(--border-width-thin) solid var(--color-border-muted);
561
+ }
562
+
563
+ :where(tr:last-child:has(td) th) {
564
+ border-block-end: none;
565
+ }
566
+
567
+ :where(tr:last-child > td) {
568
+ border: none;
569
+ }
570
+
571
+ :where(tbody tr:nth-child(2n) > td) {
572
+ background-color: var(--color-surface-muted);
573
+ }
574
+
575
+ :target {
576
+ scroll-margin-block-start: 2ex;
577
+ }
578
+
579
+ :where(del) {
580
+ color: var(--color-status-danger-text);
581
+ -webkit-text-decoration-color: var(--color-status-danger-text);
582
+ text-decoration-color: var(--color-status-danger-text);
583
+ background: var(--color-status-danger-surface);
584
+ }
585
+
586
+ :where(ins) {
587
+ color: var(--color-status-success-text);
588
+ -webkit-text-decoration-color: var(--color-status-success-text);
589
+ text-decoration-color: var(--color-status-success-text);
590
+ background: var(--color-status-success-surface);
591
+ }
592
+
593
+ :where(mark) {
594
+ color: var(--color-brand-primary-emphasis);
595
+ background: var(--color-brand-primary-surface);
596
+ }
597
+
598
+ :where(ul, ol) {
599
+ padding-inline-start: 2ch;
600
+ }
601
+
602
+ :where(li + li), :where(li > :is(ul, ol)) {
603
+ margin-top: .5lh;
604
+ }
605
+ }
606
+
607
+ @layer utils {
608
+ :where(.nc-box) {
609
+ padding: var(--spacing-base);
610
+ }
611
+
612
+ :where(.nc-box).-bordered {
613
+ border: var(--border-width-thin) solid var(--border, var(--color-border-base));
614
+ border-radius: var(--border-radius-medium);
615
+ }
616
+
617
+ :where(.nc-box).-tiny {
618
+ padding: var(--spacing-tiny);
619
+ }
620
+
621
+ :where(.nc-box).-nearest {
622
+ padding: var(--spacing-nearest);
623
+ }
624
+
625
+ :where(.nc-box).-near {
626
+ padding: var(--spacing-near);
627
+ }
628
+
629
+ :where(.nc-box).-base {
630
+ padding: var(--spacing-base);
631
+ }
632
+
633
+ :where(.nc-box).-far {
634
+ padding: var(--spacing-far);
635
+ }
636
+
637
+ :where(.nc-box).-farthest {
638
+ padding: var(--spacing-farthest);
639
+ }
640
+
641
+ :where(.nc-stack) {
642
+ gap: var(--spacing-base);
643
+ flex-direction: column;
644
+ align-items: flex-start;
645
+ display: flex;
646
+ }
647
+
648
+ :where(.nc-stack).-inherit {
649
+ gap: var(--stack-gap, var(--spacing-base));
650
+ }
651
+
652
+ :where(.nc-stack).-stretched {
653
+ inline-size: 100%;
654
+ }
655
+
656
+ :where(.nc-stack).-stretched > * {
657
+ inline-size: 100%;
658
+ }
659
+
660
+ :where(.nc-stack).-contained > * {
661
+ max-inline-size: 100%;
662
+ }
663
+
664
+ :where(.nc-flow) > * + * {
665
+ margin-block-start: var(--flow-gap, .6lh);
666
+ }
667
+
668
+ :where(.nc-flow) > * {
669
+ max-inline-size: var(--flow-base-meassure, 72ch);
670
+ }
671
+
672
+ :where(.nc-flow) > :is(h1, h2, h3, h4, h5, h6) {
673
+ max-inline-size: var(--flow-headline-meassure, 32ch);
674
+ --flow-gap: 1.3lh;
675
+ }
676
+
677
+ :where(.nc-flow) > :is(h1, h2, h3, h4, h5, h6) + p {
678
+ --flow-gap: .5lh;
679
+ }
680
+
681
+ :where(.nc-flow) > p + p {
682
+ --flow-gap: .8lh;
683
+ }
684
+
685
+ :where(.nc-flow) > figure {
686
+ margin-block: 1lh;
687
+ margin-inline: 0;
688
+ }
689
+
690
+ :where(.nc-flow) .breakAfter {
691
+ margin-block-end: auto;
692
+ }
693
+
694
+ :where(.nc-center) {
695
+ box-sizing: content-box;
696
+ max-inline-size: var(--center-measure, max-content);
697
+ padding-inline: var(--center-padding, 0);
698
+ margin-inline: auto;
699
+ position: relative;
700
+ }
701
+
702
+ :where(.nc-region) {
703
+ padding-block: var(--region-space, var(--spacing-farthest));
704
+ }
705
+
706
+ :where(.nc-cluster) {
707
+ gap: var(--spacing-base);
708
+ flex-flow: wrap;
709
+ align-items: flex-start;
710
+ display: flex;
711
+ }
712
+
713
+ :where(.nc-cluster).-inherit {
714
+ gap: var(--cluster-gap, var(--spacing-base));
715
+ }
716
+
717
+ :where(.nc-cluster).-centered {
718
+ align-items: center;
719
+ }
720
+
721
+ :where(.nc-cluster).-nowrap {
722
+ flex-wrap: nowrap;
723
+ }
724
+
725
+ :where(.nc-cluster).-between {
726
+ justify-content: space-between;
727
+ }
728
+
729
+ :where(.nc-with-sidebar) {
730
+ align-items: flex-start;
731
+ gap: var(--with-sidebar-gap, var(--spacing-far));
732
+ flex-wrap: wrap;
733
+ inline-size: 100%;
734
+ display: flex;
735
+ }
736
+
737
+ :where(.nc-with-sidebar) > [data-aside] {
738
+ flex-grow: 1;
739
+ flex-basis: var(--with-sidebar-target-width, 20rem);
740
+ min-width: min-content;
741
+ }
742
+
743
+ :where(.nc-with-sidebar) > [data-grow] {
744
+ min-width: var(--with-sidebar-min-size, 50%);
745
+ flex-grow: 999;
746
+ flex-basis: 0;
747
+ }
748
+
749
+ :where(.nc-with-sidebar)[data-direction="rtl"] {
750
+ flex-direction: row-reverse;
751
+ }
752
+
753
+ :where(.nc-with-sidebar).-centered {
754
+ align-items: center;
755
+ }
756
+
757
+ :where(.nc-grid) {
758
+ grid-template-columns: repeat(var(--grid-placement, auto-fill), minmax(var(--grid-min-item-size, 16rem), 1fr));
759
+ gap: var(--grid-gap, var(--spacing-base));
760
+ display: grid;
761
+ }
762
+
763
+ :where(.nc-grid)[data-layout="50-50"] {
764
+ --grid-placement: auto-fit;
765
+ --grid-min-item-size: clamp(16rem, 50vw, 33rem);
766
+ }
767
+
768
+ :where(.nc-grid)[data-layout="thirds"] {
769
+ --grid-placement: auto-fit;
770
+ --grid-min-item-size: clamp(16rem, 33%, 20rem);
771
+ }
772
+
773
+ :where(.nc-switcher) {
774
+ gap: var(--switcher-gap, var(--spacing-base));
775
+ align-items: var(--switcher-vertical-alignment, flex-start);
776
+ flex-wrap: wrap;
777
+ display: flex;
778
+ }
779
+
780
+ :where(.nc-switcher) > * {
781
+ flex-grow: 1;
782
+ flex-basis: calc((var(--switcher-target-container-width, 40rem) - 100%) * 999);
783
+ }
784
+
785
+ :where(.nc-switcher) > :nth-child(n+4) {
786
+ flex-basis: 100%;
787
+ }
788
+
789
+ :where(.nc-pile) {
790
+ grid: [pile] 1fr / [pile] 1fr;
791
+ place-items: center;
792
+ display: grid;
793
+ }
794
+
795
+ :where(.nc-pile) > * {
796
+ grid-area: pile;
797
+ }
798
+
799
+ :where(.nc-stack, .nc-cluster, .nc-with-sidebar, .nc-grid, .nc-gallery, .nc-switcher).-inherit {
800
+ gap: inherit;
801
+ }
802
+
803
+ :where(.nc-stack, .nc-cluster, .nc-with-sidebar, .nc-grid, .nc-gallery, .nc-switcher).-tiny {
804
+ gap: var(--spacing-tiny);
805
+ }
806
+
807
+ :where(.nc-stack, .nc-cluster, .nc-with-sidebar, .nc-grid, .nc-gallery, .nc-switcher).-nearest {
808
+ gap: var(--spacing-nearest);
809
+ }
810
+
811
+ :where(.nc-stack, .nc-cluster, .nc-with-sidebar, .nc-grid, .nc-gallery, .nc-switcher).-near {
812
+ gap: var(--spacing-near);
813
+ }
814
+
815
+ :where(.nc-stack, .nc-cluster, .nc-with-sidebar, .nc-grid, .nc-gallery, .nc-switcher).-base {
816
+ gap: var(--spacing-base);
817
+ }
818
+
819
+ :where(.nc-stack, .nc-cluster, .nc-with-sidebar, .nc-grid, .nc-gallery, .nc-switcher).-far {
820
+ gap: var(--spacing-far);
821
+ }
822
+
823
+ :where(.nc-stack, .nc-cluster, .nc-with-sidebar, .nc-grid, .nc-gallery, .nc-switcher).-farthest {
824
+ gap: var(--spacing-farthest);
825
+ }
826
+
827
+ :where(.nc-stack, .nc-cluster, .nc-with-sidebar, .nc-grid, .nc-gallery, .nc-switcher).-nogap {
828
+ gap: 0;
829
+ }
830
+
831
+ :where(.nc-ram-grid) {
832
+ --_nc-ram-grid-gap-row: var(--nc-ram-grid-gap-row, var(--_nc-ram-grid-gap));
833
+ --_nc-ram-grid-gap-column: var(--nc-ram-grid-gap-column, var(--_nc-ram-grid-gap));
834
+ --_nc-ram-grid-gap: var(--nc-ram-grid-gap, var(--spacing-near));
835
+ --_nc-ram-grid-min-width: var(--nc-ram-grid-min-width, 150px);
836
+ --_nc-ram-grid-repeat-count: var(--nc-ram-grid-repeat-count, auto-fit);
837
+ row-gap: var(--_nc-ram-grid-gap-row);
838
+ column-gap: var(--_nc-ram-grid-gap-column);
839
+ grid-template-columns: repeat(var(--_nc-ram-grid-repeat-count), minmax(min(var(--_nc-ram-grid-min-width), 100%), 1fr));
840
+ display: grid;
841
+ }
842
+ }
843
+
844
+ @layer components, helpers;
845
+
846
+ @layer config.easings {
847
+ :where(html) {
848
+ --ease-1: cubic-bezier(.25, 0, .5, 1);
849
+ --ease-2: cubic-bezier(.25, 0, .4, 1);
850
+ --ease-3: cubic-bezier(.25, 0, .3, 1);
851
+ --ease-4: cubic-bezier(.25, 0, .2, 1);
852
+ --ease-5: cubic-bezier(.25, 0, .1, 1);
853
+ --ease-in-1: cubic-bezier(.25, 0, 1, 1);
854
+ --ease-in-2: cubic-bezier(.5, 0, 1, 1);
855
+ --ease-in-3: cubic-bezier(.7, 0, 1, 1);
856
+ --ease-in-4: cubic-bezier(.9, 0, 1, 1);
857
+ --ease-in-5: cubic-bezier(1, 0, 1, 1);
858
+ --ease-out-1: cubic-bezier(0, 0, .75, 1);
859
+ --ease-out-2: cubic-bezier(0, 0, .5, 1);
860
+ --ease-out-3: cubic-bezier(0, 0, .3, 1);
861
+ --ease-out-4: cubic-bezier(0, 0, .1, 1);
862
+ --ease-out-5: cubic-bezier(0, 0, 0, 1);
863
+ --ease-in-out-1: cubic-bezier(.1, 0, .9, 1);
864
+ --ease-in-out-2: cubic-bezier(.3, 0, .7, 1);
865
+ --ease-in-out-3: cubic-bezier(.5, 0, .5, 1);
866
+ --ease-in-out-4: cubic-bezier(.7, 0, .3, 1);
867
+ --ease-in-out-5: cubic-bezier(.9, 0, .1, 1);
868
+ --ease-elastic-out-1: cubic-bezier(.5, .75, .75, 1.25);
869
+ --ease-elastic-out-2: cubic-bezier(.5, 1, .75, 1.25);
870
+ --ease-elastic-out-3: cubic-bezier(.5, 1.25, .75, 1.25);
871
+ --ease-elastic-out-4: cubic-bezier(.5, 1.5, .75, 1.25);
872
+ --ease-elastic-out-5: cubic-bezier(.5, 1.75, .75, 1.25);
873
+ --ease-elastic-in-1: cubic-bezier(.5, -.25, .75, 1);
874
+ --ease-elastic-in-2: cubic-bezier(.5, -.5, .75, 1);
875
+ --ease-elastic-in-3: cubic-bezier(.5, -.75, .75, 1);
876
+ --ease-elastic-in-4: cubic-bezier(.5, -1, .75, 1);
877
+ --ease-elastic-in-5: cubic-bezier(.5, -1.25, .75, 1);
878
+ --ease-elastic-in-out-1: cubic-bezier(.5, -.1, .1, 1.5);
879
+ --ease-elastic-in-out-2: cubic-bezier(.5, -.3, .1, 1.5);
880
+ --ease-elastic-in-out-3: cubic-bezier(.5, -.5, .1, 1.5);
881
+ --ease-elastic-in-out-4: cubic-bezier(.5, -.7, .1, 1.5);
882
+ --ease-elastic-in-out-5: cubic-bezier(.5, -.9, .1, 1.5);
883
+ --ease-step-1: steps(2);
884
+ --ease-step-2: steps(3);
885
+ --ease-step-3: steps(4);
886
+ --ease-step-4: steps(7);
887
+ --ease-step-5: steps(10);
888
+ --ease-elastic-1: var(--ease-elastic-out-1);
889
+ --ease-elastic-2: var(--ease-elastic-out-2);
890
+ --ease-elastic-3: var(--ease-elastic-out-3);
891
+ --ease-elastic-4: var(--ease-elastic-out-4);
892
+ --ease-elastic-5: var(--ease-elastic-out-5);
893
+ --ease-squish-1: var(--ease-elastic-in-out-1);
894
+ --ease-squish-2: var(--ease-elastic-in-out-2);
895
+ --ease-squish-3: var(--ease-elastic-in-out-3);
896
+ --ease-squish-4: var(--ease-elastic-in-out-4);
897
+ --ease-squish-5: var(--ease-elastic-in-out-5);
898
+ --ease-spring-1: linear(0, .006, .025 2.8%, .101 6.1%, .539 18.9%, .721 25.3%, .849 31.5%, .937 38.1%, .968 41.8%, .991 45.7%, 1.006 50.1%, 1.015 55%, 1.017 63.9%, 1.001);
899
+ --ease-spring-2: linear(0, .007, .029 2.2%, .118 4.7%, .625 14.4%, .826 19%, .902, .962, 1.008 26.1%, 1.041 28.7%, 1.064 32.1%, 1.07 36%, 1.061 40.5%, 1.015 53.4%, .999 61.6%, .995 71.2%, 1);
900
+ --ease-spring-3: linear(0, .009, .035 2.1%, .141 4.4%, .723 12.9%, .938 16.7%, 1.017, 1.077, 1.121, 1.149 24.3%, 1.159, 1.163, 1.161, 1.154 29.9%, 1.129 32.8%, 1.051 39.6%, 1.017 43.1%, .991, .977 51%, .974 53.8%, .975 57.1%, .997 69.8%, 1.003 76.9%, 1);
901
+ --ease-spring-4: linear(0, .009, .037 1.7%, .153 3.6%, .776 10.3%, 1.001, 1.142 16%, 1.185, 1.209 19%, 1.215 19.9% 20.8%, 1.199, 1.165 25%, 1.056 30.3%, 1.008 33%, .973, .955 39.2%, .953 41.1%, .957 43.3%, .998 53.3%, 1.009 59.1% 63.7%, .998 78.9%, 1);
902
+ --ease-spring-5: linear(0, .01, .04 1.6%, .161 3.3%, .816 9.4%, 1.046, 1.189 14.4%, 1.231, 1.254 17%, 1.259, 1.257 18.6%, 1.236, 1.194 22.3%, 1.057 27%, .999 29.4%, .955 32.1%, .942, .935 34.9%, .933, .939 38.4%, 1 47.3%, 1.011, 1.017 52.6%, 1.016 56.4%, 1 65.2%, .996 70.2%, 1.001 87.2%, 1);
903
+ --ease-bounce-1: linear(0, .004, .016, .035, .063, .098, .141, .191, .25, .316, .391 36.8%, .563, .766, 1 58.8%, .946, .908 69.1%, .895, .885, .879, .878, .879, .885, .895, .908 89.7%, .946, 1);
904
+ --ease-bounce-2: linear(0, .004, .016, .035, .063, .098, .141 15.1%, .25, .391, .562, .765, 1, .892 45.2%, .849, .815, .788, .769, .757, .753, .757, .769, .788, .815, .85, .892 75.2%, 1 80.2%, .973, .954, .943, .939, .943, .954, .973, 1);
905
+ --ease-bounce-3: linear(0, .004, .016, .035, .062, .098, .141 11.4%, .25, .39, .562, .764, 1 30.3%, .847 34.8%, .787, .737, .699, .672, .655, .65, .656, .672, .699, .738, .787, .847 61.7%, 1 66.2%, .946, .908, .885 74.2%, .879, .878, .879, .885 79.5%, .908, .946, 1 87.4%, .981, .968, .96, .957, .96, .968, .981, 1);
906
+ --ease-bounce-4: linear(0, .004, .016 3%, .062, .141, .25, .391, .562 18.2%, 1 24.3%, .81, .676 32.3%, .629, .595, .575, .568, .575, .595, .629, .676 48.2%, .811, 1 56.2%, .918, .86, .825, .814, .825, .86, .918, 1 77.2%, .94 80.6%, .925, .92, .925, .94 87.5%, 1 90.9%, .974, .965, .974, 1);
907
+ --ease-bounce-5: linear(0, .004, .016 2.5%, .063, .141, .25 10.1%, .562, 1 20.2%, .783, .627, .534 30.9%, .511, .503, .511, .534 38%, .627, .782, 1 48.7%, .892, .815, .769 56.3%, .757, .753, .757, .769 61.3%, .815, .892, 1 68.8%, .908 72.4%, .885, .878, .885, .908 79.4%, 1 83%, .954 85.5%, .943, .939, .943, .954 90.5%, 1 93%, .977, .97, .977, 1);
908
+ --transition-duration-instant: 0s;
909
+ --transition-duration-short: .1s;
910
+ --transition-duration-base: .2s;
911
+ --transition-duration-long: .3s;
912
+ --transition-duration-entry: 0s;
913
+ --transition-duration-exit: 0s;
914
+ --transition-target-scale: .9;
915
+ }
916
+
917
+ @media (prefers-reduced-motion: reduce) {
918
+ :where(html) {
919
+ --transition-duration-instant: 0s;
920
+ --transition-duration-short: 0s;
921
+ --transition-duration-base: 0s;
922
+ --transition-duration-long: 0s;
923
+ --transition-duration-entry: 0s;
924
+ --transition-duration-exit: 0s;
925
+ }
926
+ }
927
+ }
928
+
929
+ @layer helpers.theme {
930
+ * {
931
+ --text: var(--color-text-muted);
932
+ --color: var(--color-text-muted);
933
+ --surface: transparent;
934
+ --border: var(--color-border-muted);
935
+ --text-hover: var(--color-text-on-emphasis);
936
+ --color-hover: var(--color-text-on-emphasis);
937
+ --surface-hover: var(--color-surface-emphasis);
938
+ --border-hover: var(--color-border-base);
939
+ }
940
+
941
+ .-primary {
942
+ --text: var(--color-brand-primary-emphasis);
943
+ --color: var(--color-brand-primary-base);
944
+ --surface: var(--color-brand-primary-surface);
945
+ --border: var(--color-brand-primary-base);
946
+ --text-hover: var(--color-brand-primary-contrast);
947
+ --color-hover: var(--color-brand-primary-contrast);
948
+ --surface-hover: var(--color-brand-primary-base);
949
+ --border-hover: var(--color-brand-primary-base);
950
+ }
951
+
952
+ .-secondary {
953
+ --text: var(--color-brand-secondary-emphasis);
954
+ --color: var(--color-brand-secondary-base);
955
+ --surface: var(--color-brand-secondary-surface);
956
+ --border: var(--color-brand-secondary-base);
957
+ --text-hover: var(--color-brand-secondary-contrast);
958
+ --color-hover: var(--color-brand-secondary-contrast);
959
+ --surface-hover: var(--color-brand-secondary-base);
960
+ --border-hover: var(--color-brand-secondary-base);
961
+ }
962
+
963
+ .-neutral {
964
+ --text: var(--color-text-muted);
965
+ --color: var(--color-text-muted);
966
+ --surface: transparent;
967
+ --border: var(--color-border-muted);
968
+ --text-hover: var(--color-text-on-emphasis);
969
+ --color-hover: var(--color-text-on-emphasis);
970
+ --surface-hover: var(--color-surface-emphasis);
971
+ --border-hover: var(--color-border-base);
972
+ }
973
+
974
+ .-muted {
975
+ --text: var(--color-text-muted);
976
+ --color: var(--color-text-muted);
977
+ --surface: transparent;
978
+ --text-hover: var(--color-text-base);
979
+ --color-hover: var(--color-text-base);
980
+ --surface-hover: var(--color-surface-subtle);
981
+ --border-hover: var(--color-border-base);
982
+ }
983
+
984
+ .-emphasis {
985
+ --text: var(--color-text-on-emphasis);
986
+ --color: var(--color-text-on-emphasis);
987
+ --surface: var(--color-surface-emphasis);
988
+ --border: var(--color-surface-emphasis);
989
+ --text-hover: var(--color-text-base);
990
+ --color-hover: var(--color-text-base);
991
+ --surface-hover: var(--color-surface-subtle);
992
+ --border-hover: var(--color-border-base);
993
+ }
994
+
995
+ .-info {
996
+ --text: var(--color-status-info-emphasis);
997
+ --color: var(--color-status-info-base);
998
+ --surface: var(--color-status-info-surface);
999
+ --border: var(--color-status-info-base);
1000
+ --text-hover: var(--color-status-info-contrast);
1001
+ --color-hover: var(--color-status-info-contrast);
1002
+ --surface-hover: var(--color-status-info-base);
1003
+ --border-hover: var(--color-status-info-base);
1004
+ }
1005
+
1006
+ .-warning {
1007
+ --text: var(--color-status-warning-emphasis);
1008
+ --color: var(--color-status-warning-base);
1009
+ --surface: var(--color-status-warning-surface);
1010
+ --border: var(--color-status-warning-base);
1011
+ --text-hover: var(--color-status-warning-contrast);
1012
+ --color-hover: var(--color-status-warning-contrast);
1013
+ --surface-hover: var(--color-status-warning-base);
1014
+ --border-hover: var(--color-status-warning-base);
1015
+ }
1016
+
1017
+ .-danger {
1018
+ --text: var(--color-status-danger-emphasis);
1019
+ --color: var(--color-status-danger-base);
1020
+ --surface: var(--color-status-danger-surface);
1021
+ --border: var(--color-status-danger-base);
1022
+ --text-hover: var(--color-status-danger-contrast);
1023
+ --color-hover: var(--color-status-danger-contrast);
1024
+ --surface-hover: var(--color-status-danger-base);
1025
+ --border-hover: var(--color-status-danger-base);
1026
+ }
1027
+
1028
+ .-success {
1029
+ --text: var(--color-status-success-emphasis);
1030
+ --color: var(--color-status-success-base);
1031
+ --surface: var(--color-status-success-surface);
1032
+ --border: var(--color-status-success-base);
1033
+ --text-hover: var(--color-status-success-contrast);
1034
+ --color-hover: var(--color-status-success-contrast);
1035
+ --surface-hover: var(--color-status-success-base);
1036
+ --border-hover: var(--color-status-success-base);
1037
+ }
1038
+ }
1039
+
1040
+ :where(.text-assistive, .sr-only) {
1041
+ clip: rect(0 0 0 0);
1042
+ white-space: nowrap;
1043
+ border: 0;
1044
+ width: 1px;
1045
+ height: 0;
1046
+ margin: 0;
1047
+ padding: 0;
1048
+ position: absolute;
1049
+ overflow: hidden;
1050
+ }
1051
+
1052
+ :where(.break-word) {
1053
+ overflow-wrap: break-word;
1054
+ -webkit-hyphens: auto;
1055
+ hyphens: auto;
1056
+ max-inline-size: 100%;
1057
+ }
1058
+
1059
+ .full-width {
1060
+ inline-size: 100%;
1061
+ }
1062
+
1063
+ .nc-hint {
1064
+ color: var(--color-text-muted);
1065
+ font-size: var(--font-size-small);
1066
+ line-height: var(--line-height-base);
1067
+ }
1068
+
1069
+ .nc-slub {
1070
+ color: var(--color-text-subtle);
1071
+ text-transform: uppercase;
1072
+ letter-spacing: var(--tracking-wide);
1073
+ font-weight: var(--font-weight-active);
1074
+ font-size: var(--font-size-smallest);
1075
+ }
1076
+
1077
+ .allcaps {
1078
+ text-transform: capitalize;
1079
+ }
1080
+
1081
+ .strong {
1082
+ font-weight: var(--font-weight-strong);
1083
+ }
1084
+
1085
+ .font-mono {
1086
+ font-family: var(--font-family-mono);
1087
+ }
1088
+
1089
+ .font-sans {
1090
+ font-family: var(--font-family-sans);
1091
+ }
1092
+
1093
+ .font-serif {
1094
+ font-family: var(--font-family-serif);
1095
+ }
1096
+
1097
+ .font-size-display {
1098
+ font-size: var(--font-size-display);
1099
+ }
1100
+
1101
+ .font-size-largest {
1102
+ font-size: var(--font-size-largest);
1103
+ }
1104
+
1105
+ .font-size-large {
1106
+ font-size: var(--font-size-large);
1107
+ }
1108
+
1109
+ .font-size-base {
1110
+ font-size: var(--font-size-base);
1111
+ }
1112
+
1113
+ .font-size-small {
1114
+ font-size: var(--font-size-small);
1115
+ }
1116
+
1117
+ .font-size-smallest {
1118
+ font-size: var(--font-size-smallest);
1119
+ }
1120
+
1121
+ .mt-base {
1122
+ margin-block-start: var(--spacing-base);
1123
+ }
1124
+
1125
+ .mt-auto {
1126
+ margin-block-start: auto;
1127
+ }
1128
+
1129
+ .ml-auto {
1130
+ margin-inline-start: auto;
1131
+ }
1132
+
1133
+ .mr-auto {
1134
+ margin-inline-end: auto;
1135
+ }
1136
+
1137
+ @layer components.badge {
1138
+ :where(.badge) {
1139
+ font-family: var(--font-family-mono);
1140
+ letter-spacing: var(--tracking-tight);
1141
+ font-weight: var(--font-weight-default);
1142
+ color: var(--text, var(--color-text-base));
1143
+ border: var(--border-width-thin) solid var(--text, var(--color-text-base));
1144
+ border-radius: var(--border-radius-small);
1145
+ background: var(--surface, transparent);
1146
+ inline-size: max-content;
1147
+ padding: .5lh 1ch;
1148
+ line-height: 1;
1149
+ }
1150
+ }
1151
+
1152
+ @layer components.buttons {
1153
+ .buttonReset {
1154
+ background: none;
1155
+ border: none;
1156
+ padding: 0;
1157
+ }
1158
+
1159
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), input[type="file"]:not([class]), .nc-button) {
1160
+ --_button-background: var(--button-background, var(--surface-hover));
1161
+ --_button-color: var(--button-color, var(--text-hover));
1162
+ --_button-border-color: var(--button-border-color, var(--surface-hover));
1163
+ --_button-border-radius: var(--button-border-radius, var(--border-radius-medium));
1164
+ --_button-background-hover: var(--button-background-hover, var(--surface));
1165
+ --_button-background-hover-light: var(--button-background-hover-light, color-mix(in oklch, currentColor calc(var(--transparency-weaker) * 10%), transparent));
1166
+ --_button-color-hover: var(--button-color-hover, var(--text));
1167
+ --_button-border-color-hover: var(--button-border-color-hover, var(--border));
1168
+ --_button-box-shadow: var(--button-box-shadow, var(--shadow-near));
1169
+ --_button-hover-shadow: var(--button-hover-shadow, var(--shadow-nearest));
1170
+ --_button-padding-inline: var(--button-padding-inline, 1ch);
1171
+ background-color: var(--_button-background);
1172
+ color: var(--_button-color);
1173
+ border: var(--border-width-thin) solid var(--_button-border-color);
1174
+ border-radius: var(--_button-border-radius);
1175
+ padding-inline: var(--_button-padding-inline);
1176
+ min-block-size: var(--button-height-base);
1177
+ font-family: var(--font-family-button);
1178
+ letter-spacing: var(--tracking-tight);
1179
+ font-weight: var(--font-weight-default);
1180
+ font-size: inherit;
1181
+ cursor: pointer;
1182
+ box-sizing: border-box;
1183
+ text-align: center;
1184
+ transition: var(--transition-duration-base) var(--ease-2);
1185
+ -webkit-text-decoration: unset;
1186
+ text-decoration: unset;
1187
+ box-shadow: var(--_button-box-shadow);
1188
+ -webkit-user-select: none;
1189
+ user-select: none;
1190
+ -webkit-tap-highlight-color: transparent;
1191
+ -webkit-touch-callout: none;
1192
+ line-height: var(--line-height-base);
1193
+ justify-content: center;
1194
+ align-items: center;
1195
+ padding-block: 0;
1196
+ transition-property: box-shadow, transform;
1197
+ display: inline-flex;
1198
+ position: relative;
1199
+ }
1200
+
1201
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button):hover {
1202
+ background: var(--_button-background-hover);
1203
+ color: var(--_button-color-hover);
1204
+ border-color: var(--_button-border-color-hover);
1205
+ box-shadow: var(--_button-hover-shadow);
1206
+ }
1207
+
1208
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button)[aria-pressed="true"] {
1209
+ box-shadow: none;
1210
+ font-weight: var(--font-weight-active);
1211
+ transform: none;
1212
+ }
1213
+
1214
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button):active {
1215
+ box-shadow: none;
1216
+ transform: none;
1217
+ }
1218
+
1219
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button)[disabled] {
1220
+ --_button-border-color-hover: var(--_button-border-color);
1221
+ filter: contrast(.72) opacity(.72);
1222
+ cursor: not-allowed;
1223
+ --_button-background: none !important;
1224
+ --_button-background-hover: none !important;
1225
+ --_button-color: var(--color-text-subtle) !important;
1226
+ --_button-color-hover: var(--_button-color) !important;
1227
+ --_button-border-color: var(--color-text-subtle) !important;
1228
+ box-shadow: none !important;
1229
+ transform: none !important;
1230
+ }
1231
+
1232
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-active {
1233
+ background-color: var(--_button-background-hover);
1234
+ color: var(--_button-color-hover);
1235
+ border-color: var(--_button-border-color-hover);
1236
+ box-shadow: none;
1237
+ transform: none;
1238
+ }
1239
+
1240
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-outline {
1241
+ color: var(--text);
1242
+ border-color: var(--border);
1243
+ background-color: #0000;
1244
+ }
1245
+
1246
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-outline:hover {
1247
+ background-color: var(--_button-background-hover-light);
1248
+ color: var(--text);
1249
+ border-color: var(--border-hover);
1250
+ }
1251
+
1252
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-stealth {
1253
+ color: var(--text);
1254
+ background-color: #0000;
1255
+ border-color: #0000;
1256
+ box-shadow: none !important;
1257
+ transform: none !important;
1258
+ }
1259
+
1260
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-stealth:hover {
1261
+ background-color: var(--_button-background-hover-light);
1262
+ color: var(--text);
1263
+ border-color: #0000;
1264
+ }
1265
+
1266
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-small {
1267
+ --_button-padding-inline: 1ch;
1268
+ min-block-size: var(--button-height-small);
1269
+ }
1270
+
1271
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-round {
1272
+ --_button-border-radius: var(--border-radius-round);
1273
+ }
1274
+
1275
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-offset {
1276
+ --_button-offset-distance: var(--button-offset-distance, -.1lh);
1277
+ --_button-offset-distance-hover: var(--button-offset-distance-hover, -.05lh);
1278
+ --_button-transform: translate(var(--_button-offset-distance), var(--_button-offset-distance));
1279
+ --_button-hover-transform: translate(var(--_button-offset-distance-hover), var(--_button-offset-distance-hover));
1280
+ --button-box-shadow: calc(var(--_button-offset-distance) / -2) calc(var(--_button-offset-distance) / -2) 0 0 var(--shadow-color), calc(var(--_button-offset-distance) * -1) calc(var(--_button-offset-distance) * -1) 0 0 var(--shadow-color), calc(var(--_button-offset-distance) * -1) calc(var(--_button-offset-distance) * -1) calc(var(--_button-offset-distance) * -2) 0 var(--shadow-color);
1281
+ --button-hover-shadow: calc(var(--_button-offset-distance-hover) * -1) calc(var(--_button-offset-distance-hover) * -1) 0 0 var(--shadow-color), calc(var(--_button-offset-distance-hover) * -1) calc(var(--_button-offset-distance-hover) * -1) calc(var(--_button-offset-distance-hover) / -2) 0 var(--shadow-color);
1282
+ transform: var(--_button-transform);
1283
+ inset-block-start: calc(var(--_button-offset-distance) * -1);
1284
+ inset-inline-start: calc(var(--_button-offset-distance) * -1);
1285
+ }
1286
+
1287
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-offset:hover {
1288
+ transform: var(--_button-hover-transform);
1289
+ }
1290
+
1291
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button):has(svg) {
1292
+ gap: .5ch;
1293
+ }
1294
+
1295
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button)[aria-label], :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-icon {
1296
+ --_button-border-radius: var(--border-radius-round);
1297
+ aspect-ratio: 1;
1298
+ fill: currentColor;
1299
+ padding: 0;
1300
+ }
1301
+
1302
+ :is(:where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button)[aria-label], :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-icon):after {
1303
+ content: "";
1304
+ inline-size: max(var(--button-height-base), 100%);
1305
+ block-size: max(var(--button-height-base), 100%);
1306
+ aspect-ratio: 1;
1307
+ z-index: -1;
1308
+ pointer-events: all;
1309
+ border-radius: 100%;
1310
+ position: absolute;
1311
+ inset-block-start: calc(-.5 * (var(--button-height-base) - 100%));
1312
+ inset-inline-start: calc(-.5 * (var(--button-height-base) - 100%));
1313
+ }
1314
+
1315
+ :is(:where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button)[aria-label], :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-icon) > svg {
1316
+ pointer-events: none;
1317
+ }
1318
+
1319
+ :where(button:not([class]), button[type]:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class]), .nc-button).-icon.-small {
1320
+ padding: 0;
1321
+ }
1322
+
1323
+ :where(input[type="file"]:not([class])) {
1324
+ color: var(--_input-color);
1325
+ background-color: var(--_input-background);
1326
+ border: var(--_input-border);
1327
+ min-block-size: var(--button-height-base);
1328
+ border-radius: var(--_input-border-radius);
1329
+ padding-inline: 0 1ch;
1330
+ }
1331
+
1332
+ :where(input[type="file"]:not([class]))::-webkit-file-upload-button {
1333
+ background-color: var(--_button-background);
1334
+ color: var(--_button-color);
1335
+ padding-inline: var(--_button-padding-inline);
1336
+ cursor: pointer;
1337
+ box-shadow: none;
1338
+ min-block-size: calc(var(--button-height-base) - var(--border-width-thin));
1339
+ border: none;
1340
+ border-inline-end: var(--border-width-thin) solid var(--color-border-base);
1341
+ border-start-end-radius: 0;
1342
+ border-end-end-radius: 0;
1343
+ margin-inline-end: 1ch;
1344
+ inset-block-start: 0;
1345
+ inset-inline-start: 0;
1346
+ transform: none;
1347
+ }
1348
+
1349
+ :where(input[type="file"]:not([class]))::file-selector-button {
1350
+ background-color: var(--_button-background);
1351
+ color: var(--_button-color);
1352
+ padding-inline: var(--_button-padding-inline);
1353
+ cursor: pointer;
1354
+ box-shadow: none;
1355
+ min-block-size: calc(var(--button-height-base) - var(--border-width-thin));
1356
+ border: none;
1357
+ border-inline-end: var(--border-width-thin) solid var(--color-border-base);
1358
+ border-start-end-radius: 0;
1359
+ border-end-end-radius: 0;
1360
+ margin-inline-end: 1ch;
1361
+ inset-block-start: 0;
1362
+ inset-inline-start: 0;
1363
+ transform: none;
1364
+ }
1365
+
1366
+ :where(button[type="reset"]:not([class]), .nc-button.-destructive) {
1367
+ --text: var(--color-status-danger-emphasis);
1368
+ --color: var(--color-status-danger-base);
1369
+ --surface: var(--color-status-danger-surface);
1370
+ --border: var(--color-status-danger-base);
1371
+ --text-hover: var(--color-status-danger-contrast);
1372
+ --color-hover: var(--color-status-danger-contrast);
1373
+ --surface-hover: var(--color-status-danger-base);
1374
+ --border-hover: var(--color-status-danger-base);
1375
+ }
1376
+ }
1377
+
1378
+ @layer components.cards {
1379
+ :where(.nc-card) {
1380
+ --_card-background-color: var(--card-background-color, var(--color-surface-base));
1381
+ --_card-color: var(--card-color, var(--color-text-base));
1382
+ --_card-border-color: var(--card-border-color, var(--color-border-base));
1383
+ --_card-shadow: var(--card-shadow, var(--shadow-medium));
1384
+ --_card-padding-inline: var(--card-padding-inline, var(--spacing-base));
1385
+ --_card-padding-block: var(--card-padding-block, var(--spacing-far));
1386
+ --_card-border-radius: var(--card-border-radius, var(--border-radius-large));
1387
+ box-sizing: border-box;
1388
+ inline-size: 100%;
1389
+ padding-inline: var(--_card-padding-inline);
1390
+ padding-block: var(--_card-padding-block);
1391
+ color: var(--_card-color);
1392
+ appearance: none;
1393
+ border: 1px solid var(--_card-border-color);
1394
+ background-color: var(--_card-background-color);
1395
+ border-radius: var(--_card-border-radius);
1396
+ box-shadow: var(--_card-shadow);
1397
+ transition: border-color var(--transition-duration-base) var(--ease-2);
1398
+ display: inline-block;
1399
+ overflow: hidden;
1400
+ }
1401
+
1402
+ :where(.nc-card)[data-size="xs"] {
1403
+ --_card-padding-inline: var(--card-padding-inline, var(--spacing-nearest));
1404
+ --_card-padding-block: var(--card-padding-block, var(--spacing-near));
1405
+ --_card-border-radius: var(--card-border-radius, var(--border-radius-medium));
1406
+ }
1407
+
1408
+ :where(.nc-card)[data-size="sm"] {
1409
+ --_card-padding-inline: var(--card-padding-inline, var(--spacing-near));
1410
+ --_card-padding-block: var(--card-padding-block, var(--spacing-base));
1411
+ }
1412
+
1413
+ @media (min-width: 480px) {
1414
+ :where(.nc-card) {
1415
+ --_card-padding-inline: var(--card-padding-inline, var(--spacing-far));
1416
+ }
1417
+ }
1418
+
1419
+ @media (min-width: 1024px) {
1420
+ :where(.nc-card) {
1421
+ --_card-padding-inline: var(--card-padding-inline, var(--spacing-farthest));
1422
+ }
1423
+ }
1424
+
1425
+ :where(.nc-card):is([href], button) {
1426
+ text-decoration: none;
1427
+ }
1428
+
1429
+ :where(.nc-card):is([href], button):hover {
1430
+ border-color: var(--color-brand-primary-base);
1431
+ }
1432
+ }
1433
+
1434
+ @layer components.dialogs {
1435
+ :where(.nc-dialog) {
1436
+ --_dialog-radius: var(--dialog-radius, var(--border-radius-medium));
1437
+ --_dialog-padding-inline: var(--dialog-padding-inline, var(--spacing-base));
1438
+ --_dialog-close-size: var(--dialog-close-size, var(--button-height-base));
1439
+ --_dialog-transition-duration: var(--dialog-transition-duration, var(--transition-duration-base));
1440
+ z-index: var(--layer-important);
1441
+ animation: close-dialog var(--_dialog-transition-duration) cubic-bezier(.7, 0, 1, 1) forwards;
1442
+ transition: opacity var(--_dialog-transition-duration) cubic-bezier(.7, 0, 1, 1);
1443
+ border: var(--border-width-thin) solid var(--color-border-base);
1444
+ inline-size: calc(100dvw - 2 * var(--spacing-base));
1445
+ background: var(--color-surface-base);
1446
+ block-size: 90dvh;
1447
+ max-inline-size: 28rem;
1448
+ box-shadow: var(--shadow-medium);
1449
+ border-radius: var(--_dialog-radius);
1450
+ margin-block: 5dvh;
1451
+ padding: 0;
1452
+ display: block;
1453
+ position: fixed;
1454
+ inset: 0;
1455
+ }
1456
+
1457
+ :where(.nc-dialog)[open] {
1458
+ animation: open-dialog var(--_dialog-transition-duration) cubic-bezier(0, .6, .58, 1);
1459
+ }
1460
+
1461
+ :where(.nc-dialog):not([open]) {
1462
+ opacity: 0;
1463
+ }
1464
+
1465
+ :where(.nc-dialog)::backdrop {
1466
+ -webkit-backdrop-filter: blur(3px);
1467
+ backdrop-filter: blur(3px);
1468
+ background: #0000000d;
1469
+ }
1470
+
1471
+ :where(.nc-dialog) :where(.dialog-container) {
1472
+ grid-template: "header header"
1473
+ "content content" 1fr
1474
+ "footer footer"
1475
+ / 1fr 1fr;
1476
+ block-size: 100%;
1477
+ inline-size: 100%;
1478
+ display: grid;
1479
+ }
1480
+
1481
+ :where(.nc-dialog) :where(.dialog-header) {
1482
+ border-block-end: var(--border-width-thin) solid var(--color-border-muted);
1483
+ background-color: var(--color-surface-subtle);
1484
+ padding-inline: var(--_dialog-padding-inline);
1485
+ border-radius: var(--_dialog-radius) var(--_dialog-radius) 0 0;
1486
+ grid-area: header;
1487
+ grid-template: "title close" / 1fr var(--_dialog-close-size);
1488
+ padding-block: var(--spacing-near);
1489
+ min-inline-size: calc(2 * var(--spacing-near) + var(--_dialog-close-size));
1490
+ align-items: flex-start;
1491
+ display: grid;
1492
+ }
1493
+
1494
+ :where(.nc-dialog) :where(.dialog-header) > button[data-closes-dialog] {
1495
+ inline-size: var(--_dialog-close-size);
1496
+ block-size: var(--_dialog-close-size);
1497
+ grid-area: close;
1498
+ }
1499
+
1500
+ :where(.nc-dialog) :where(.dialog-title) {
1501
+ font-size: var(--font-size-large);
1502
+ line-height: var(--_dialog-close-size);
1503
+ overflow-wrap: anywhere;
1504
+ margin: 0;
1505
+ padding: 0;
1506
+ }
1507
+
1508
+ :where(.nc-dialog) :where(.dialog-content) {
1509
+ padding-inline: var(--_dialog-padding-inline);
1510
+ padding-block: var(--spacing-near);
1511
+ grid-area: content;
1512
+ overflow: auto;
1513
+ }
1514
+
1515
+ :where(.nc-dialog) :where(.dialog-actions) {
1516
+ padding-inline: var(--_dialog-padding-inline);
1517
+ padding-block: var(--spacing-near);
1518
+ border-block-start: var(--border-width-thin) solid var(--color-border-muted);
1519
+ background-color: var(--color-surface-subtle);
1520
+ grid-area: footer;
1521
+ justify-content: flex-end;
1522
+ align-items: flex-start;
1523
+ display: flex;
1524
+ }
1525
+
1526
+ @keyframes open-dialog {
1527
+ from {
1528
+ transform: translate(0%, 100dvh)rotate(0);
1529
+ }
1530
+
1531
+ to {
1532
+ transform: translate(0)rotate(0);
1533
+ }
1534
+ }
1535
+
1536
+ @keyframes close-dialog {
1537
+ from {
1538
+ transform: translate(0)rotate(0);
1539
+ }
1540
+
1541
+ to {
1542
+ transform: translate(0%, 100dvh)rotate(10deg);
1543
+ }
1544
+ }
1545
+ }
1546
+
1547
+ @layer components.gallery {
1548
+ :where(.nc-gallery) {
1549
+ gap: var(--gallery-gap, var(--spacing-base));
1550
+ max-inline-size: 100%;
1551
+ block-size: var(--gallery-size, auto);
1552
+ overscroll-behavior-inline: contain;
1553
+ scroll-snap-type: inline mandatory;
1554
+ scroll-snap-stop: normal;
1555
+ scroll-padding-inline: var(--gallery-scroll-padding-inline, var(--spacing-base));
1556
+ flex-direction: row;
1557
+ margin: 0;
1558
+ padding-block-end: var(--gallery-scrollbar-padding, var(--spacing-base));
1559
+ list-style: none;
1560
+ display: flex;
1561
+ overflow-x: auto;
1562
+ }
1563
+
1564
+ @media (prefers-reduced-motion: no-preference) {
1565
+ :where(.nc-gallery) {
1566
+ scroll-behavior: smooth;
1567
+ }
1568
+ }
1569
+
1570
+ :where(.nc-gallery) > * {
1571
+ scroll-snap-align: start;
1572
+ flex: 0 0 var(--gallery-item-size, auto);
1573
+ display: inline-block;
1574
+ }
1575
+
1576
+ :where(.nc-gallery).-custom-scrollbar {
1577
+ scrollbar-color: var(--gallery-scrollbar-fg, var(--color-text-on-emphasis)) var(--gallery-scrollbar-bg, var(--color-surface-emphasis));
1578
+ }
1579
+
1580
+ :where(.nc-gallery).-custom-scrollbar::-webkit-scrollbar {
1581
+ block-size: var(--gallery-scrollbar-height, var(--spacing-base));
1582
+ }
1583
+
1584
+ :where(.nc-gallery).-custom-scrollbar::-webkit-scrollbar-track {
1585
+ background-color: var(--gallery-scrollbar-bg, var(--color-surface-emphasis));
1586
+ }
1587
+
1588
+ :where(.nc-gallery).-custom-scrollbar::-webkit-scrollbar-thumb {
1589
+ background-color: var(--gallery-scrollbar-bg, var(--color-surface-emphasis));
1590
+ background-image: linear-gradient(var(--gallery-scrollbar-bg, var(--color-surface-emphasis)) 0, var(--gallery-scrollbar-bg, var(--color-surface-emphasis)) calc(var(--gallery-scrollbar-height, var(--spacing-base)) * .25), var(--gallery-scrollbar-fg, var(--color-text-on-emphasis)) calc(var(--gallery-scrollbar-height, var(--spacing-base)) * .25), var(--gallery-scrollbar-fg, var(--color-text-on-emphasis)) calc(var(--gallery-scrollbar-height, var(--spacing-base)) * .75), var(--gallery-scrollbar-bg, var(--color-surface-emphasis)) calc(var(--gallery-scrollbar-height, var(--spacing-base)) * .75));
1591
+ }
1592
+ }
1593
+
1594
+ @layer components.icons {
1595
+ :where(.nc-icon) {
1596
+ --icon-size: 2ex;
1597
+ inline-size: var(--icon-size);
1598
+ block-size: var(--icon-size);
1599
+ flex-shrink: 0;
1600
+ display: block;
1601
+ }
1602
+
1603
+ :where(.nc-icon)[data-flip="true"] {
1604
+ transform: scaleX(-1);
1605
+ }
1606
+
1607
+ :where(.nc-icon)[data-size="xs"] {
1608
+ --icon-size: 1ex;
1609
+ }
1610
+
1611
+ :where(.nc-icon)[data-size="sm"] {
1612
+ --icon-size: 1.5ex;
1613
+ }
1614
+
1615
+ :where(.nc-icon)[data-size="md"] {
1616
+ --icon-size: 2ex;
1617
+ }
1618
+
1619
+ :where(.nc-icon)[data-size="lg"] {
1620
+ --icon-size: 3ex;
1621
+ }
1622
+
1623
+ :where(.nc-icon)[data-size="xl"] {
1624
+ --icon-size: 4ex;
1625
+ }
1626
+
1627
+ :where(.nc-icon)[data-size="inline"] {
1628
+ --icon-size: .75lh;
1629
+ }
1630
+
1631
+ :where(.nc-icon)[data-size="button"] {
1632
+ --icon-size: var(--button-height-base);
1633
+ }
1634
+
1635
+ :where(.nc-icon)[data-animation="spinning"] {
1636
+ animation: 1s linear infinite spinning;
1637
+ }
1638
+
1639
+ :where(button, .nc-button) > .nc-icon {
1640
+ --icon-size: 2ex;
1641
+ }
1642
+
1643
+ @keyframes spinning {
1644
+ from {
1645
+ transform: rotate(0);
1646
+ }
1647
+
1648
+ to {
1649
+ transform: rotate(360deg);
1650
+ }
1651
+ }
1652
+ }
1653
+
1654
+ @layer components.inputs {
1655
+ :where(label:not([class]), .nc-input-label) {
1656
+ font-family: var(--font-family-default);
1657
+ letter-spacing: var(--tracking-tight);
1658
+ font-weight: var(--font-weight-active);
1659
+ color: var(--color-text-base);
1660
+ font-size: inherit;
1661
+ cursor: pointer;
1662
+ align-items: center;
1663
+ gap: .15lh;
1664
+ display: inline-flex;
1665
+ }
1666
+
1667
+ :where(input[type="text"], input[type="email"], input[type="password"], input[type="number"], input[type="url"], input[type="search"], input[type="date"], input[type="month"], input[type="week"], input[type="text"], input[type="datetime"], input[type="datetime-local"], input[type="time"], input[type="tel"], input[type="color"], input[type="file"], input[type="checkbox"], input[type="radio"], textarea, select, .nc-input, .nc-select, .nc-textarea, .nc-input-checkbox, .nc-input-radio, .nc-input-label, .nc-input-color, .nc-input-field, .nc-input-error, .nc-checkbox-wrapper, .nc-input-switch, .nc-radio-field, .nc-checkbox-field) {
1668
+ --_input-background: var(--input-background, var(--color-surface-subtle));
1669
+ --_input-background-active: var(--input-background-active, var(--color-surface-base));
1670
+ --_input-color: var(--input-color, var(--color-text-base));
1671
+ --_input-border: var(--input-border, var(--border-width-thin) solid var(--color-border-base));
1672
+ --_input-border-radius: var(--input-border-radius, var(--border-radius-medium));
1673
+ --_input-box-shadow: var(--input-box-shadow, var(--shadow-inset));
1674
+ --_input-outline: var(--input-outline, var(--border-width-thick) solid var(--color-brand-primary-base));
1675
+ --_input-disabled-filter: var(--input-disabled-filter, contrast(.72) opacity(.72));
1676
+ --_input-padding-block: var(--input-padding-block, .125lh);
1677
+ --_input-padding-inline: var(--input-padding-inline, 1ch);
1678
+ --_input-hover-background: var(--input-hover-background, var(--color-brand-primary-hover));
1679
+ }
1680
+
1681
+ :where(input[type="text"], input[type="email"], input[type="password"], input[type="number"], input[type="url"], input[type="search"], input[type="date"], input[type="month"], input[type="week"], input[type="text"], input[type="datetime"], input[type="datetime-local"], input[type="time"], input[type="tel"], input[type="color"], input[type="file"], textarea, select, .nc-input) {
1682
+ font: inherit;
1683
+ letter-spacing: inherit;
1684
+ word-spacing: inherit;
1685
+ appearance: none;
1686
+ color: var(--_input-color);
1687
+ background-color: var(--_input-background);
1688
+ border: var(--_input-border);
1689
+ border-radius: var(--_input-border-radius);
1690
+ block-size: var(--button-height-base);
1691
+ padding-inline: var(--_input-padding-inline);
1692
+ box-shadow: var(--_input-box-shadow);
1693
+ inline-size: var(--input-inline-size, auto);
1694
+ line-height: var(--line-height-base);
1695
+ }
1696
+
1697
+ :where(input[type="text"], input[type="email"], input[type="password"], input[type="number"], input[type="url"], input[type="search"], input[type="date"], input[type="month"], input[type="week"], input[type="text"], input[type="datetime"], input[type="datetime-local"], input[type="time"], input[type="tel"], input[type="color"], input[type="file"], textarea, select, .nc-input):focus, :where(input[type="text"], input[type="email"], input[type="password"], input[type="number"], input[type="url"], input[type="search"], input[type="date"], input[type="month"], input[type="week"], input[type="text"], input[type="datetime"], input[type="datetime-local"], input[type="time"], input[type="tel"], input[type="color"], input[type="file"], textarea, select, .nc-input):hover:focus {
1698
+ --current-background: var(--_input-background-active);
1699
+ outline: var(--_input-outline);
1700
+ outline-offset: 0;
1701
+ background-color: var(--_input-background-active);
1702
+ }
1703
+
1704
+ :where(input[type="text"], input[type="email"], input[type="password"], input[type="number"], input[type="url"], input[type="search"], input[type="date"], input[type="month"], input[type="week"], input[type="text"], input[type="datetime"], input[type="datetime-local"], input[type="time"], input[type="tel"], input[type="color"], input[type="file"], textarea, select, .nc-input):disabled {
1705
+ filter: var(--_input-disabled-filter);
1706
+ cursor: not-allowed;
1707
+ }
1708
+
1709
+ :where(input[type="text"], input[type="email"], input[type="password"], input[type="number"], input[type="url"], input[type="search"], input[type="date"], input[type="month"], input[type="week"], input[type="text"], input[type="datetime"], input[type="datetime-local"], input[type="time"], input[type="tel"], input[type="color"], input[type="file"], textarea, select, .nc-input):hover {
1710
+ --current-background: var(--_input-hover-background);
1711
+ background-color: var(--_input-hover-background);
1712
+ }
1713
+
1714
+ :where(input[type="text"], input[type="email"], input[type="password"], input[type="number"], input[type="url"], input[type="search"], input[type="date"], input[type="month"], input[type="week"], input[type="text"], input[type="datetime"], input[type="datetime-local"], input[type="time"], input[type="tel"], input[type="color"], input[type="file"], textarea, select, .nc-input)[required] {
1715
+ border-inline-start-width: var(--border-width-thick);
1716
+ }
1717
+
1718
+ :where(input[type="text"], input[type="email"], input[type="password"], input[type="number"], input[type="url"], input[type="search"], input[type="date"], input[type="month"], input[type="week"], input[type="text"], input[type="datetime"], input[type="datetime-local"], input[type="time"], input[type="tel"], input[type="color"], input[type="file"], textarea, select, .nc-input)::placeholder {
1719
+ color: var(--color-text-subtle);
1720
+ }
1721
+
1722
+ :where(select:not([class]), .nc-select) {
1723
+ background-image: var(--triangle-down-url);
1724
+ background-position: right 1ch top 50%;
1725
+ background-size: 1.5ch 1.25ch;
1726
+ padding-inline-end: 3.5ch;
1727
+ }
1728
+
1729
+ :where(textarea:not([class]), .nc-textarea) {
1730
+ min-block-size: calc(5lh + 2 * var(--_input-padding-block));
1731
+ min-inline-size: var(--input-inline-size, 100%);
1732
+ max-inline-size: 100%;
1733
+ padding-block: var(--_input-padding-block);
1734
+ }
1735
+
1736
+ :where(input[type="checkbox"]:not([class]), input[type="radio"]:not([class]), .nc-input-checkbox, .nc-input-radio, .nc-input-switch) {
1737
+ appearance: none;
1738
+ border: var(--_input-border);
1739
+ --current-background: var(--_input-background);
1740
+ background: var(--current-background);
1741
+ cursor: pointer;
1742
+ block-size: 1lh;
1743
+ inline-size: 1lh;
1744
+ transition: var(--transition-duration-short) background var(--ease-2);
1745
+ box-shadow: var(--_input-box-shadow);
1746
+ justify-content: center;
1747
+ align-items: center;
1748
+ margin: 0;
1749
+ padding: 0;
1750
+ display: inline-flex;
1751
+ }
1752
+
1753
+ :where(input[type="checkbox"]:not([class]), .nc-input-checkbox) {
1754
+ --_transition-duration: 0s;
1755
+ border-radius: var(--_input-border-radius);
1756
+ overflow: hidden;
1757
+ }
1758
+
1759
+ :where(input[type="checkbox"]:not([class]), .nc-input-checkbox):before {
1760
+ content: "";
1761
+ background-color: var(--color-brand-primary-contrast);
1762
+ block-size: .75lh;
1763
+ inline-size: .75lh;
1764
+ transition: transform var(--ease-out-2) var(--transition-duration-short);
1765
+ font-family: var(--font-family-sans);
1766
+ --font-weight: var(--font-weight-active);
1767
+ color: var(--_input-background);
1768
+ clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
1769
+ justify-content: center;
1770
+ align-items: center;
1771
+ line-height: 1;
1772
+ display: inline-flex;
1773
+ transform: scale(.8)translateY(2em);
1774
+ }
1775
+
1776
+ :where(input[type="checkbox"]:not([class]), .nc-input-checkbox):checked {
1777
+ --current-background: var(--color-brand-primary-base);
1778
+ }
1779
+
1780
+ :where(input[type="checkbox"]:not([class]), .nc-input-checkbox):checked:before {
1781
+ transform: scale(1)translateY(0%);
1782
+ }
1783
+
1784
+ :where(input[type="radio"], .nc-input-radio) {
1785
+ border-radius: var(--border-radius-round);
1786
+ overflow: hidden;
1787
+ }
1788
+
1789
+ :where(input[type="radio"], .nc-input-radio):before {
1790
+ content: "";
1791
+ border-radius: var(--border-radius-round);
1792
+ background-color: var(--color-brand-primary-contrast);
1793
+ block-size: 50%;
1794
+ inline-size: 50%;
1795
+ transition: transform var(--ease-out-2) var(--transition-duration-short);
1796
+ display: inline-flex;
1797
+ transform: scale(.8)translateY(2em);
1798
+ }
1799
+
1800
+ :where(input[type="radio"], .nc-input-radio):checked {
1801
+ --current-background: var(--color-brand-primary-base);
1802
+ }
1803
+
1804
+ :where(input[type="radio"], .nc-input-radio):checked:before {
1805
+ transform: scale(1)translateY(0%);
1806
+ }
1807
+
1808
+ :where(input[type="color"], .nc-input-color) {
1809
+ aspect-ratio: 1;
1810
+ inline-size: auto;
1811
+ padding: calc(var(--button-height-base) / 12);
1812
+ }
1813
+
1814
+ :where(input[type="date"], .nc-input-date) {
1815
+ flex-flow: row;
1816
+ }
1817
+
1818
+ :where(input[type="range"], .nc-input-range) > .nc-hint {
1819
+ margin-inline-start: auto;
1820
+ }
1821
+
1822
+ :where(input[type="range"], .nc-input-range)::-webkit-slider-thumb {
1823
+ appearance: none;
1824
+ border-radius: var(--_input-border-radius);
1825
+ border: var(--_input-border);
1826
+ border-color: var(--color-text-base);
1827
+ background-color: var(--color-text-base);
1828
+ block-size: 1lh;
1829
+ inline-size: 1lh;
1830
+ box-shadow: var(--shadow-near);
1831
+ cursor: pointer;
1832
+ }
1833
+
1834
+ :where(input[type="range"], .nc-input-range)::-webkit-slider-thumb:hover {
1835
+ background-color: var(--color-brand-primary-base);
1836
+ border-color: var(--color-brand-primary-base);
1837
+ }
1838
+
1839
+ :where(input[type="range"], .nc-input-range)::-moz-range-thumb {
1840
+ appearance: none;
1841
+ border-radius: var(--_input-border-radius);
1842
+ border: var(--_input-border);
1843
+ border-color: var(--color-text-base);
1844
+ background-color: var(--color-text-base);
1845
+ block-size: 1lh;
1846
+ inline-size: 1lh;
1847
+ box-shadow: var(--shadow-near);
1848
+ cursor: pointer;
1849
+ }
1850
+
1851
+ :where(input[type="range"], .nc-input-range)::-moz-range-thumb:hover {
1852
+ background-color: var(--color-brand-primary-base);
1853
+ border-color: var(--color-brand-primary-base);
1854
+ }
1855
+
1856
+ :where(.nc-tag-select-field) {
1857
+ --_tag-select-checked-text-color: var(--tag-select-checked-text-color, var(--color-brand-primary-contrast));
1858
+ --_tag-select-checked-surface-color: var(--tag-select-checked-surface-color, var(--color-brand-primary-base));
1859
+ --_tag-select-border-radius: var(--tag-select-border-radius, var(--_input-border-radius));
1860
+ }
1861
+
1862
+ :where(.nc-tag-select-field):focus-within:has(:focus-visible) {
1863
+ outline-offset: 1ch;
1864
+ outline: var(--_input-outline);
1865
+ border-radius: var(--_tag-select-border-radius);
1866
+ }
1867
+
1868
+ :where(.nc-tag-select-field) input {
1869
+ opacity: 0;
1870
+ position: absolute;
1871
+ }
1872
+
1873
+ :where(.nc-tag-select-field) label {
1874
+ display: grid;
1875
+ }
1876
+
1877
+ :where(.nc-tag-select-field) label:hover, :where(.nc-tag-select-field) label:focus-within {
1878
+ background-color: var(--_input-hover-background);
1879
+ }
1880
+
1881
+ :where(.nc-tag-select-field) label:has(input:checked) {
1882
+ background: var(--_tag-select-checked-surface-color);
1883
+ color: var(--_tag-select-checked-text-color);
1884
+ box-shadow: var(--shadow-near);
1885
+ }
1886
+
1887
+ :where(.nc-tag-select-field) label:has(input:disabled) {
1888
+ filter: var(--_input-disabled-filter);
1889
+ cursor: not-allowed;
1890
+ }
1891
+ }
1892
+
1893
+ @layer components.input-fields {
1894
+ :where(.nc-input-field) {
1895
+ inline-size: 100%;
1896
+ min-inline-size: var(--input-field-min-inline-size);
1897
+ max-inline-size: var(--input-field-max-inline-size);
1898
+ grid-template-columns: minmax(0, 1fr);
1899
+ place-items: start;
1900
+ gap: .25lh;
1901
+ display: grid;
1902
+ }
1903
+
1904
+ :where(.nc-input-field) > label, :where(.nc-input-field) > .nc-stack {
1905
+ line-height: var(--line-height-small);
1906
+ gap: .125lh;
1907
+ }
1908
+
1909
+ :where(.nc-input-field) > .nc-cluster {
1910
+ gap: 1ch;
1911
+ }
1912
+
1913
+ :where(.nc-input-error) {
1914
+ --color-base: var(--color-status-danger-emphasis);
1915
+ color: var(--color-base);
1916
+ font-size: var(--font-size-small);
1917
+ }
1918
+
1919
+ :where(.nc-input-error):before {
1920
+ content: "!";
1921
+ font-family: var(--font-family-default);
1922
+ letter-spacing: var(--tracking-tight);
1923
+ font-weight: var(--font-weight-default);
1924
+ background-color: var(--color-base);
1925
+ color: var(--color-surface-subtle);
1926
+ flex-shrink: 0;
1927
+ justify-content: center;
1928
+ align-items: center;
1929
+ block-size: 1em;
1930
+ inline-size: 1em;
1931
+ margin-inline-end: 1ch;
1932
+ display: inline-flex;
1933
+ }
1934
+
1935
+ :where(.nc-checkbox-wrapper) {
1936
+ grid-template: "checkbox label" 1fr
1937
+ / auto 1fr;
1938
+ place-items: start;
1939
+ gap: 0;
1940
+ display: grid;
1941
+ }
1942
+
1943
+ :where(.nc-checkbox-wrapper) > [data-label] {
1944
+ grid-area: label;
1945
+ padding-inline-start: 1ch;
1946
+ }
1947
+
1948
+ :where(.nc-checkbox-wrapper) .nc-input-label {
1949
+ min-block-size: var(--line-height-base);
1950
+ }
1951
+
1952
+ :where(.nc-checkbox-wrapper) > [data-input] {
1953
+ grid-area: checkbox;
1954
+ }
1955
+
1956
+ :where(.nc-checkbox-wrapper):hover:not(:has(input:checked)) input {
1957
+ background: var(--_input-hover-background);
1958
+ }
1959
+
1960
+ :where(.nc-radio-field, .nc-checkbox-field) fieldset, :where(.nc-radio-field, .nc-checkbox-field) fieldset > :not(:first-child) {
1961
+ margin-block-start: .6lh;
1962
+ }
1963
+ }
1964
+
1965
+ @layer components.inputs-segmented {
1966
+ :where(.nc-segmented-control-group) {
1967
+ container: segmented-control / inline-size;
1968
+ }
1969
+
1970
+ :where(.nc-segmented-control) {
1971
+ --_segmented-control-border-radius: var(--segmented-control-border-radius, var(--_input-border-radius));
1972
+ --_segmented-control-checked-text-color: var(--segmented-control-checked-text-color, var(--color-brand-primary-contrast));
1973
+ --_segmented-control-checked-surface-color: var(--segmented-control-checked-surface-color, var(--color-brand-primary-base));
1974
+ box-shadow: var(--_input-box-shadow);
1975
+ border-radius: var(--_segmented-control-border-radius);
1976
+ background: var(--_input-background);
1977
+ border: none;
1978
+ grid-auto-rows: 1fr;
1979
+ grid-auto-flow: row;
1980
+ block-size: auto;
1981
+ inline-size: 100%;
1982
+ margin: 0;
1983
+ padding: 0;
1984
+ display: grid;
1985
+ }
1986
+
1987
+ :where(.nc-segmented-control) input {
1988
+ opacity: 0;
1989
+ position: absolute;
1990
+ }
1991
+
1992
+ :where(.nc-segmented-control):focus-within {
1993
+ outline: var(--_input-outline);
1994
+ outline-offset: 0;
1995
+ }
1996
+
1997
+ :where(.nc-segmented-control) label {
1998
+ padding-inline: var(--_input-padding-inline);
1999
+ padding-block: var(--_input-padding-block);
2000
+ min-block-size: var(--segmented-control-min-height, var(--button-height-base));
2001
+ color: var(--_input-color);
2002
+ border: var(--_input-border);
2003
+ justify-content: center;
2004
+ align-items: center;
2005
+ display: flex;
2006
+ }
2007
+
2008
+ :where(.nc-segmented-control) label > .nc-input-label {
2009
+ color: inherit;
2010
+ }
2011
+
2012
+ :where(.nc-segmented-control) label:hover {
2013
+ --current-background: var(--_input-hover-background);
2014
+ background-color: var(--_input-hover-background);
2015
+ }
2016
+
2017
+ :where(.nc-segmented-control) label:first-child {
2018
+ border-radius: var(--_segmented-control-border-radius) var(--_segmented-control-border-radius) 0 0;
2019
+ }
2020
+
2021
+ :where(.nc-segmented-control) label:last-child {
2022
+ border-radius: 0 0 var(--_segmented-control-border-radius) var(--_segmented-control-border-radius);
2023
+ }
2024
+
2025
+ :where(.nc-segmented-control) label:not(:last-child) {
2026
+ border-block-end: var(--border-width-thin) solid var(--color-border-muted);
2027
+ }
2028
+
2029
+ :where(.nc-segmented-control) label:not(:first-child) {
2030
+ border-block-start: none;
2031
+ }
2032
+
2033
+ :where(.nc-segmented-control) label:has(input:checked) {
2034
+ background: var(--_segmented-control-checked-surface-color);
2035
+ color: var(--_segmented-control-checked-text-color);
2036
+ box-shadow: var(--shadow-near);
2037
+ }
2038
+
2039
+ :where(.nc-segmented-control) label:focus-within {
2040
+ outline: none;
2041
+ }
2042
+
2043
+ :where(.nc-segmented-control) label:has(input:disabled) {
2044
+ filter: var(--_input-disabled-filter);
2045
+ cursor: not-allowed;
2046
+ }
2047
+
2048
+ @container segmented-control (width >= 32rem) {
2049
+ :where(.nc-segmented-control) {
2050
+ grid-auto-columns: 1fr;
2051
+ grid-auto-flow: column;
2052
+ }
2053
+
2054
+ :where(.nc-segmented-control) > label:first-child {
2055
+ border-radius: var(--_segmented-control-border-radius) 0 0 var(--_segmented-control-border-radius);
2056
+ }
2057
+
2058
+ :where(.nc-segmented-control) > label:last-child {
2059
+ border-radius: 0 var(--_segmented-control-border-radius) var(--_segmented-control-border-radius) 0;
2060
+ }
2061
+
2062
+ :where(.nc-segmented-control) > label:not(:last-child) {
2063
+ border-block-end: var(--_input-border);
2064
+ border-inline-end: var(--border-width-thin) solid var(--color-border-muted);
2065
+ }
2066
+
2067
+ :where(.nc-segmented-control) > label:not(:first-child) {
2068
+ border-block-start: var(--_input-border);
2069
+ border-inline-start: none;
2070
+ }
2071
+ }
2072
+ }
2073
+
2074
+ @layer components.input-switch {
2075
+ :where(.nc-input-switch) {
2076
+ --_switch-width: var(--switch-width, calc(var(--line-height-base) * 2));
2077
+ --_switch-height: var(--switch-height, calc(var(--_switch-width) / 2));
2078
+ --_switch-color: var(--switch-color, var(--_input-background));
2079
+ --_switch-color-checked: var(--switch-color-checked, var(--color-brand-primary-base));
2080
+ --_thumb-margin: var(--thumb-margin, calc(var(--_switch-width) / 12));
2081
+ --_thumb-color: var(--thumb-color, var(--_input-color));
2082
+ vertical-align: var(--_thumb-margin);
2083
+ inline-size: var(--_switch-width);
2084
+ block-size: var(--_switch-height);
2085
+ border-radius: var(--_input-border-radius);
2086
+ --current-background: var(--_switch-color);
2087
+ justify-content: flex-start;
2088
+ }
2089
+
2090
+ :where(.nc-input-switch):before {
2091
+ content: "";
2092
+ aspect-ratio: 1;
2093
+ margin-block: var(--_thumb-margin);
2094
+ transform: translateX(var(--_thumb-margin));
2095
+ block-size: calc(100% - 2 * var(--_thumb-margin));
2096
+ background-color: var(--_thumb-color);
2097
+ border-radius: var(--_input-border-radius);
2098
+ box-shadow: var(--shadow-near);
2099
+ transition: transform, background-color;
2100
+ transition-duration: var(--transition-duration-base);
2101
+ transition-timing-function: var(--ease-2);
2102
+ display: block;
2103
+ }
2104
+
2105
+ :where(.nc-input-switch):checked {
2106
+ --current-background: var(--_switch-color-checked);
2107
+ }
2108
+
2109
+ :where(.nc-input-switch):checked:before {
2110
+ transform: translateX(calc(var(--_switch-width) - var(--_switch-height) + var(--_thumb-margin)));
2111
+ }
2112
+ }
2113
+
2114
+ @layer components.notifications {
2115
+ :root {
2116
+ --_notification-max-width: var(--notifications-max-width, 20rem);
2117
+ --_notification-gap: var(--notification-gap, var(--spacing-base));
2118
+ --_notification-border-color: var(--notification-border-color, var(--color-border-base));
2119
+ --_notification-center-background: var(--notification-center-background, oklch(var(--color-surface-subtle) / .05));
2120
+ }
2121
+
2122
+ :where(.nc-notification-center, .nc-notification-output) {
2123
+ block-size: 100%;
2124
+ inline-size: 100%;
2125
+ max-inline-size: var(--_notification-max-width);
2126
+ padding-block: var(--_notification-gap);
2127
+ pointer-events: none;
2128
+ position: fixed;
2129
+ inset-block: 0;
2130
+ inset-inline-end: 0;
2131
+ }
2132
+
2133
+ .nc-notification-center {
2134
+ -webkit-backdrop-filter: blur(3px);
2135
+ backdrop-filter: blur(3px);
2136
+ background-color: var(--_notification-center-background);
2137
+ block-size: 100%;
2138
+ transition: transform var(--transition-duration-base) ease-in-out;
2139
+ transform: translate(100%);
2140
+ }
2141
+
2142
+ :where(.nc-notification-output, .nc-notification-center-container) {
2143
+ align-items: flex-end;
2144
+ gap: var(--_notification-gap);
2145
+ max-block-size: 100%;
2146
+ inline-size: 100%;
2147
+ padding-inline: var(--_notification-gap);
2148
+ flex-direction: column;
2149
+ flex-grow: 1;
2150
+ min-block-size: 100%;
2151
+ min-inline-size: 0;
2152
+ display: flex;
2153
+ overflow-y: scroll;
2154
+ }
2155
+
2156
+ :where(.nc-notification-center.-open) {
2157
+ pointer-events: all;
2158
+ transform: translate(0);
2159
+ }
2160
+
2161
+ :where(.nc-notification-center.-open:has( + .nc-notification-output > .nc-notification)) {
2162
+ opacity: .5;
2163
+ filter: contrast(.5);
2164
+ }
2165
+
2166
+ :where(.nc-notification-center-header) {
2167
+ align-items: center;
2168
+ gap: var(--_notification-gap);
2169
+ padding-inline: var(--_notification-gap);
2170
+ margin-block-end: var(--_notification-gap);
2171
+ display: flex;
2172
+ }
2173
+
2174
+ :where(.nc-notification) {
2175
+ background: var(--color-surface-base);
2176
+ border: var(--border-width-thin) solid var(--_notification-border-color);
2177
+ border-radius: var(--border-radius-small);
2178
+ inline-size: 100%;
2179
+ box-shadow: var(--shadow-far);
2180
+ animation: pop-in var(--transition-duration-base) cubic-bezier(0, .6, .58, 1);
2181
+ color: var(--color-text-base);
2182
+ pointer-events: all;
2183
+ flex-direction: column;
2184
+ padding: .5lh 2ch;
2185
+ display: flex;
2186
+ }
2187
+
2188
+ :where(.nc-notification) p {
2189
+ margin: 0;
2190
+ padding: 0;
2191
+ }
2192
+
2193
+ :where(.nc-notification-title) {
2194
+ font-size: var(--font-size-base);
2195
+ font-weight: var(--font-weight-heading);
2196
+ }
2197
+
2198
+ :where(.nc-notification-description) {
2199
+ font-size: var(--font-size-small);
2200
+ }
2201
+
2202
+ :where(.nc-notification-time) {
2203
+ font-size: var(--font-size-small);
2204
+ color: var(--color-text-subtle);
2205
+ }
2206
+
2207
+ :where(.nc-notification-footer) {
2208
+ justify-content: space-between;
2209
+ align-items: flex-end;
2210
+ inline-size: 100%;
2211
+ margin-block-start: .5ch;
2212
+ display: flex;
2213
+ }
2214
+
2215
+ :where(.nc-notification .nc-button, .nc-notification-center .nc-button) {
2216
+ --button-height-base: 1em;
2217
+ font-size: var(--font-size-small);
2218
+ }
2219
+
2220
+ :where(.nc-notification.-closing) {
2221
+ animation: remove-notification var(--transition-duration-base) cubic-bezier(.7, 0, 1, 1) forwards;
2222
+ }
2223
+
2224
+ @keyframes pop-in {
2225
+ 0% {
2226
+ opacity: 0;
2227
+ transform: translate(3vmin, -2vmin)scale(.98);
2228
+ }
2229
+
2230
+ 50% {
2231
+ transform: translate(0, -1vmin)scale(.98);
2232
+ }
2233
+
2234
+ 100% {
2235
+ opacity: 1;
2236
+ transform: translate(0)scale(1);
2237
+ }
2238
+ }
2239
+
2240
+ @keyframes remove-notification {
2241
+ to {
2242
+ opacity: 0;
2243
+ transform: translate(0, 4vmin)scale(.98);
2244
+ }
2245
+ }
2246
+ }
2247
+
2248
+ @layer components.table {
2249
+ :where(.nc-table) {
2250
+ inline-size: 100%;
2251
+ max-inline-size: 100%;
2252
+ overflow-x: auto;
2253
+ }
2254
+ }
2255
+
2256
+ @layer components.lists {
2257
+ :where(.nc-meta-list) {
2258
+ inline-size: 100%;
2259
+ container: metalist / inline-size;
2260
+ }
2261
+
2262
+ :where(.nc-meta-list-item) {
2263
+ overflow-wrap: break-word;
2264
+ -webkit-hyphens: auto;
2265
+ hyphens: auto;
2266
+ inline-size: 100%;
2267
+ max-inline-size: 100%;
2268
+ }
2269
+
2270
+ :where(.nc-meta-list-item):not(:last-child) {
2271
+ margin-block-end: 1ch;
2272
+ }
2273
+
2274
+ @container metalist (width >= 20rem) {
2275
+ :where(.nc-meta-list-item) {
2276
+ inline-size: auto;
2277
+ }
2278
+
2279
+ :where(.nc-meta-list-item):not(:last-child):after {
2280
+ content: "";
2281
+ border-right: var(--border-width-medium) solid var(--color-border-muted);
2282
+ transform: calc(var(--border-width-medium) / 2);
2283
+ margin: 0 1ch;
2284
+ }
2285
+ }
2286
+
2287
+ :where(.nc-list-reset) {
2288
+ margin: 0;
2289
+ padding: 0;
2290
+ list-style: none;
2291
+ }
2292
+
2293
+ :where(.nc-list-reset) li {
2294
+ margin: 0;
2295
+ }
2296
+ }
2297
+
2298
+ @layer components.breadcrumbs {
2299
+ :where(.nc-breadcrumbs) {
2300
+ background-color: var(--nc-breadcrumbs-surface, transparent);
2301
+ inline-size: max-content;
2302
+ max-inline-size: 100%;
2303
+ color: var(--nc-breadcrumbs-text, --color-text-muted);
2304
+ }
2305
+
2306
+ :where(.nc-breadcrumb-item) {
2307
+ color: inherit;
2308
+ }
2309
+
2310
+ :where(.nc-breadcrumb-item):last-child {
2311
+ color: var(--color-brand-primary-base);
2312
+ }
2313
+
2314
+ :where(.nc-breadcrumb-item):not(:last-child):after {
2315
+ color: inherit;
2316
+ content: "›";
2317
+ font-size: inherit;
2318
+ padding-inline: 1ch;
2319
+ }
2320
+
2321
+ :where(.nc-breadcrumb-link) {
2322
+ color: inherit;
2323
+ text-decoration: none;
2324
+ }
2325
+
2326
+ :where(.nc-breadcrumb-link):hover {
2327
+ text-decoration: underline;
2328
+ }
2329
+
2330
+ :where(.nc-breadcrumb-link)[aria-current="page"] {
2331
+ pointer-events: none;
2332
+ color: var(--nc-breadcrumbs-text-active, --color-text-base);
2333
+ }
2334
+ }
2335
+
2336
+ @layer components.forms {
2337
+ :where(.nc-form) {
2338
+ inline-size: min(100%, var(--nc-form-max-inline-size, var(--measure-base)));
2339
+ }
2340
+
2341
+ :where(.nc-form-title) {
2342
+ font-size: var(--font-size-largest);
2343
+ font-weight: var(--font-weight-heading);
2344
+ line-height: var(--line-height-small);
2345
+ color: var(--color-text-base);
2346
+ }
2347
+
2348
+ :where(.nc-form-hint) {
2349
+ font-size: var(--font-size-large);
2350
+ color: var(--color-text-muted);
2351
+ margin-block: .5lh;
2352
+ }
2353
+
2354
+ :where(fieldset:not([class]), .nc-fieldset) {
2355
+ border: none;
2356
+ min-inline-size: 0;
2357
+ margin: 0;
2358
+ padding: 0;
2359
+ }
2360
+
2361
+ :where(legend:not([class]), .nc-legend) {
2362
+ font-family: var(--font-family-default);
2363
+ letter-spacing: var(--tracking-tight);
2364
+ font-weight: var(--font-weight-active);
2365
+ color: var(--text, var(--color-text-base));
2366
+ font-size: var(--font-size-base);
2367
+ border: none;
2368
+ border-radius: 0;
2369
+ inline-size: 100%;
2370
+ margin-block-end: .75lh;
2371
+ padding: 0;
2372
+ display: block;
2373
+ }
2374
+
2375
+ :where(:is(fieldset:not([class]), .nc-fieldset):has(:is(.nc-legend + .nc-hint, legend:not([class]) + .nc-hint)) > :is(legend:not([class]), .nc-legend)) {
2376
+ margin-block-end: 0;
2377
+ }
2378
+
2379
+ :where(:is(fieldset:not([class]), .nc-fieldset):has(:is(.nc-legend + .nc-hint, legend:not([class]) + .nc-hint)) > :is(legend:not([class]), .nc-legend)) + .nc-hint {
2380
+ margin-block-end: .6lh;
2381
+ }
2382
+ }