@leftium/nimble.css 0.6.0 → 0.8.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.
@@ -166,653 +166,41 @@
166
166
  grid-template-columns: 1fr min(var(--nc-content-width), calc(100% - 2 * var(--nc-spacing))) 1fr;
167
167
  min-height: 100dvh;
168
168
  }
169
- body > * {
170
- grid-column: 2;
171
- min-width: 0;
172
- }
173
- body > [style*="display: contents"] > * {
174
- grid-column: 2;
175
- min-width: 0;
176
- }
177
169
  ::selection {
178
170
  background-color: var(--nc-primary-focus);
179
171
  color: var(--nc-text);
180
172
  }
181
173
  }
182
174
  @layer nimble.base {
183
- h1 {
184
- font-size: 2rem;
185
- line-height: 1.1;
186
- margin-top: 0;
187
- margin-bottom: var(--nc-spacing);
188
- font-weight: 700;
189
- text-wrap: balance;
190
- }
191
- h2 {
192
- font-size: 1.75rem;
193
- line-height: 1.15;
194
- margin-top: 2rem;
195
- margin-bottom: var(--nc-spacing);
196
- font-weight: 700;
197
- text-wrap: balance;
198
- }
199
- h3 {
200
- font-size: 1.5rem;
201
- line-height: 1.2;
202
- margin-top: 1.5rem;
203
- margin-bottom: var(--nc-spacing);
204
- font-weight: 700;
205
- text-wrap: balance;
206
- }
207
- h4 {
208
- font-size: 1.25rem;
209
- line-height: 1.3;
210
- margin-top: 1.5rem;
211
- margin-bottom: var(--nc-spacing);
212
- font-weight: 700;
213
- text-wrap: balance;
214
- }
215
- h5 {
216
- font-size: 1.125rem;
217
- line-height: 1.4;
218
- margin-top: 1.5rem;
219
- margin-bottom: var(--nc-spacing);
220
- font-weight: 700;
221
- text-wrap: balance;
222
- }
223
- h6 {
224
- font-size: 1rem;
225
- line-height: 1.5;
226
- margin-top: 1.5rem;
227
- margin-bottom: var(--nc-spacing);
228
- font-weight: 700;
229
- text-wrap: balance;
230
- }
231
- @media (max-width: 720px) {
232
- h1 {
233
- font-size: 1.75rem;
234
- }
235
- h2 {
236
- font-size: 1.5rem;
237
- }
238
- h3 {
239
- font-size: 1.3rem;
240
- }
241
- }
242
- p, ul, ol, dl, blockquote, pre, table, figure, form, fieldset {
243
- margin-top: 0;
244
- margin-bottom: var(--nc-spacing);
245
- }
246
- ul, ol {
247
- padding-inline-start: 1.5em;
248
- }
249
- :where(li) {
250
- margin-bottom: 0.25em;
251
- }
252
- :where(li) > :where(ul, ol) {
253
- margin-bottom: 0;
254
- }
255
- dt {
256
- font-weight: 600;
257
- }
258
- dd {
259
- margin-inline-start: 1.5em;
260
- margin-bottom: 0.5em;
261
- }
262
- blockquote {
263
- margin-block: var(--nc-spacing);
264
- margin-inline: 0;
265
- padding: 0.25em var(--nc-spacing);
266
- border-inline-start: 0.25rem solid var(--nc-border);
267
- font-style: italic;
268
- }
269
- :where(blockquote) footer,
270
- :where(blockquote) cite {
271
- font-style: normal;
272
- font-size: 0.9em;
273
- color: color-mix(in oklch, var(--nc-text), transparent 40%);
274
- }
275
- hr {
276
- border: none;
277
- height: 1px;
278
- background-color: color-mix(in oklch, var(--nc-border), transparent 40%);
279
- margin: var(--nc-spacing) 0;
280
- }
281
- mark {
282
- padding: 0.1em 0.25em;
283
- background-color: light-dark(#fde68a, oklch(0.55 0.12 85));
284
- color: light-dark(inherit, oklch(0.95 0.01 85));
285
- border-radius: 2px;
286
- }
287
- address {
288
- font-style: normal;
289
- }
290
- }
291
- @layer nimble.base {
292
- :where(a:not([role=button])) {
293
- color: var(--nc-primary);
294
- text-decoration: underline;
295
- text-underline-offset: 0.15em;
296
- text-decoration-color: color-mix(in oklch, var(--nc-primary), transparent 50%);
297
- transition: color 0.2s, text-decoration-color 0.2s;
298
- }
299
- :where(a:not([role=button])):visited {
300
- color: color-mix(in oklch, var(--nc-primary) 40%, oklch(0.38 0.15 310));
301
- text-decoration-color: color-mix(in oklch, var(--nc-primary) 40%, oklch(0.38 0.15 310) 30%);
302
- }
303
- :where(a:not([role=button])):hover {
304
- color: var(--nc-primary-hover);
305
- text-decoration-color: var(--nc-primary-hover);
306
- }
307
- }
308
- @layer nimble.base {
309
- :where(button, [type=submit], [type=reset], [type=button], [role=button]) {
310
- --_btn-padding-v: 0.5em;
311
- --_btn-padding-h: 1em;
312
- padding: var(--_btn-padding-v) var(--_btn-padding-h);
313
- background-color: var(--nc-primary);
314
- color: var(--nc-primary-contrast);
315
- border: 1px solid var(--nc-primary);
316
- border-radius: var(--nc-radius);
317
- font: inherit;
318
- font-size: 1rem;
319
- line-height: 1.5;
320
- cursor: pointer;
321
- text-decoration: none;
322
- display: inline-block;
323
- text-align: center;
324
- margin: 0;
325
- transition: background-color 0.2s, border-color 0.2s;
326
- }
327
- :where(button, [type=submit], [type=reset], [type=button], [role=button]):hover {
328
- background-color: var(--nc-primary-hover);
329
- border-color: var(--nc-primary-hover);
330
- }
331
- :where(button, [type=submit], [type=reset], [type=button], [role=button]):focus-visible {
332
- box-shadow: 0 0 0 2px var(--nc-primary-focus);
333
- outline: none;
334
- }
335
- :where([type=reset]) {
336
- background-color: var(--nc-secondary);
337
- border-color: var(--nc-secondary);
338
- color: var(--nc-secondary-contrast);
339
- }
340
- :where([type=reset]):hover {
341
- background-color: var(--nc-secondary-hover);
342
- border-color: var(--nc-secondary-hover);
343
- }
344
- :where([type=reset]):focus-visible {
345
- box-shadow: 0 0 0 2px var(--nc-secondary-focus);
346
- }
347
- :where(button, [type=submit], [type=reset], [type=button], [role=button]).inline {
348
- --_btn-padding-v: 0.05em;
349
- --_btn-padding-h: 0.4em;
350
- margin: 0.1em 0.15em;
351
- font-size: 0.875em;
352
- vertical-align: baseline;
353
- }
354
- :where(button, [type=submit], [type=reset], [type=button], [role=button]):disabled {
355
- opacity: 0.5;
356
- cursor: not-allowed;
357
- pointer-events: none;
358
- }
359
- :where([role=group]) {
360
- display: inline-flex;
361
- margin-bottom: var(--nc-spacing);
362
- }
363
- [role=group] > * {
364
- border-radius: 0;
365
- margin: 0;
366
- position: relative;
367
- }
368
- [role=group] > * + * {
369
- --_divider: "";
370
- }
371
- [role=group] > * + *::before {
372
- content: var(--_divider);
373
- position: absolute;
374
- inset-inline-start: 0;
375
- top: 20%;
376
- bottom: 20%;
377
- width: 1px;
378
- background: rgba(255, 255, 255, 0.3);
379
- pointer-events: none;
380
- }
381
- [role=group] > :not(.secondary):not(.outline) + .secondary,
382
- [role=group] > .secondary + :not(.secondary):not(.outline) {
383
- --_divider: none;
384
- }
385
- [role=group] > :not(.secondary):not(.outline) + .outline,
386
- [role=group] > .outline + :not(.secondary):not(.outline) {
387
- --_divider: none;
388
- }
389
- [role=group] > .secondary + .outline,
390
- [role=group] > .outline + .secondary {
391
- --_divider: none;
392
- }
393
- [role=group] > input + *,
394
- [role=group] > select + * {
395
- --_divider: none;
396
- }
397
- [role=group] > :first-child {
398
- border-start-start-radius: var(--nc-radius);
399
- border-end-start-radius: var(--nc-radius);
400
- }
401
- [role=group] > :last-child {
402
- border-start-end-radius: var(--nc-radius);
403
- border-end-end-radius: var(--nc-radius);
404
- }
405
- [role=group]:has(.outline):not(:has(> :not(.outline))) {
406
- border: 1px solid var(--nc-primary);
407
- border-radius: var(--nc-radius);
408
- }
409
- [role=group]:has(.outline):not(:has(> :not(.outline))) > .outline {
410
- border: none;
411
- }
412
- [role=group] > .outline + .outline::before {
413
- background: var(--nc-primary);
414
- }
415
- [role=search] [role=group] > :first-child {
416
- border-start-start-radius: 5rem;
417
- border-end-start-radius: 5rem;
418
- padding-inline-start: 1.25em;
175
+ body > * {
176
+ grid-column: 2;
177
+ min-width: 0;
419
178
  }
420
- [role=search] [role=group] > :last-child {
421
- border-start-end-radius: 5rem;
422
- border-end-end-radius: 5rem;
423
- padding-inline-end: 1.25em;
179
+ body > [style*="display: contents"] > * {
180
+ grid-column: 2;
181
+ min-width: 0;
424
182
  }
425
183
  }
426
184
  @layer nimble.utilities {
427
- .secondary:not(a:not([role=button])) {
428
- background-color: var(--nc-secondary);
429
- border-color: var(--nc-secondary);
430
- color: var(--nc-secondary-contrast);
431
- }
432
- .secondary:not(a:not([role=button])):hover {
433
- background-color: var(--nc-secondary-hover);
434
- border-color: var(--nc-secondary-hover);
435
- }
436
- .secondary:not(a:not([role=button])):focus-visible {
437
- box-shadow: 0 0 0 2px var(--nc-secondary-focus);
438
- }
439
- a:not([role=button]).secondary {
440
- color: var(--nc-secondary);
441
- text-decoration-color: color-mix(in oklch, var(--nc-secondary), transparent 50%);
442
- }
443
- a:not([role=button]).secondary:hover {
444
- color: var(--nc-secondary-hover);
445
- text-decoration-color: var(--nc-secondary-hover);
446
- }
447
- .outline:not(a:not([role=button])) {
448
- background-color: transparent;
449
- color: var(--nc-primary);
450
- }
451
- .outline:not(a:not([role=button])):hover {
452
- background-color: var(--nc-primary-focus);
453
- color: var(--nc-primary-hover);
454
- border-color: var(--nc-primary-hover);
455
- }
456
- }
457
- @layer nimble.base {
458
- :where(input:not([type=checkbox], [type=radio], [type=range], [type=file], [type=color], [type=submit], [type=button], [type=reset]),
459
- select, textarea) {
460
- --_input-bg: color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);
461
- padding: 0.5em 0.75em;
462
- min-height: calc(2.5em + 2px);
463
- background-color: var(--_input-bg);
464
- border: 1px solid var(--nc-border);
465
- border-radius: var(--nc-radius);
466
- color: var(--nc-text);
467
- font: inherit;
468
- font-size: 1rem;
469
- transition: border-color 0.2s, box-shadow 0.2s;
470
- }
471
- :where(input:not([type=checkbox], [type=radio], [type=range], [type=file], [type=color], [type=submit], [type=button], [type=reset], [type=date], [type=month], [type=week], [type=time], [type=datetime-local]),
472
- select, textarea) {
473
- width: 100%;
474
- margin-bottom: var(--nc-spacing);
475
- }
476
- :where(input, select, textarea):focus-visible {
477
- border-color: var(--nc-primary);
478
- box-shadow: 0 0 0 2px var(--nc-primary-focus);
479
- outline: none;
480
- }
481
- :where(input:not([type=submit], [type=button], [type=reset]), select, textarea) + :where(small) {
482
- display: block;
483
- margin-top: calc(var(--nc-spacing) * -0.75);
484
- margin-bottom: var(--nc-spacing);
485
- font-size: 0.875em;
486
- color: color-mix(in oklch, var(--nc-text), transparent 40%);
487
- }
488
- :where(input, select, textarea)[aria-invalid=false] {
489
- border-color: var(--nc-valid);
490
- }
491
- :where(input, select, textarea)[aria-invalid=true] {
492
- border-color: var(--nc-invalid);
493
- }
494
- :where(input:not([type=submit], [type=button], [type=reset]), select, textarea)[aria-invalid=false] + :where(small) {
495
- color: var(--nc-valid);
496
- }
497
- :where(input:not([type=submit], [type=button], [type=reset]), select, textarea)[aria-invalid=true] + :where(small) {
498
- color: var(--nc-invalid);
185
+ .container {
186
+ max-width: var(--nc-content-width);
187
+ margin-inline: auto;
188
+ padding-inline: var(--nc-spacing);
499
189
  }
500
- :where(label) {
190
+ .fluid {
501
191
  display: block;
502
- margin-bottom: 0.25em;
503
- }
504
- :where(label:has(+ input, + select, + textarea)) {
505
- font-weight: 600;
506
- }
507
- :where(label:has(+ [type=file], + [type=range])) {
508
- margin-bottom: 0.5em;
509
- }
510
- :where(fieldset) {
511
- border: 1px solid var(--nc-border);
512
- border-radius: var(--nc-radius);
513
- padding: var(--nc-spacing);
514
- min-width: 0;
515
- max-width: 100%;
516
- }
517
- :where(legend) {
518
- font-weight: 600;
519
- padding-inline: 0.25em;
520
- }
521
- :where([type=checkbox], [type=radio]) {
522
- accent-color: var(--nc-primary);
523
- width: 1.125em;
524
- height: 1.125em;
525
- margin: 0;
526
- }
527
- :where(label:has([type=checkbox], [type=radio])) {
528
- display: flex;
529
- align-items: center;
530
- gap: 0.35em;
531
- margin-bottom: 0.5em;
532
- }
533
- :where(label:has([type=checkbox], [type=radio]):last-child) {
534
- margin-bottom: 0;
535
- }
536
- :where([type=search]) {
537
- border-radius: 5rem;
538
- padding-inline: 1.25em;
539
- }
540
- :where([type=range]) {
541
- accent-color: var(--nc-primary);
542
- width: 100%;
543
- margin-bottom: var(--nc-spacing);
544
- }
545
- :where(input[list]) {
546
- width: auto;
547
- }
548
- :where([type=file]) {
549
- color: var(--nc-text);
550
- font: inherit;
551
- cursor: pointer;
552
- max-width: 100%;
553
- margin-bottom: var(--nc-spacing);
554
- }
555
- :where([type=file])::file-selector-button {
556
- padding: 0.5em 1em;
557
- margin-right: 0.75em;
558
- margin-inline-end: 0.75em;
559
- background-color: var(--nc-primary);
560
- color: var(--nc-primary-contrast);
561
- border: 1px solid var(--nc-primary);
562
- border-radius: var(--nc-radius);
563
- font: inherit;
564
- cursor: pointer;
565
- transition: background-color 0.2s, border-color 0.2s;
566
- }
567
- :where([type=file])::file-selector-button:hover {
568
- background-color: var(--nc-primary-hover);
569
- border-color: var(--nc-primary-hover);
570
- }
571
- :where([type=date], [type=month], [type=week], [type=time], [type=datetime-local]) {
572
- min-width: 10em;
573
- margin-bottom: var(--nc-spacing);
574
- }
575
- :where([type=color]) {
576
- --_color-size: calc(1em * 1.5 + 1em + 2px);
577
- margin-bottom: var(--nc-spacing);
578
- --_color-pad: 0.25em;
579
- height: var(--_color-size);
580
- width: calc((var(--_color-size) - 2 * var(--_color-pad)) * 1.618 + 2 * var(--_color-pad));
581
- padding: var(--_color-pad);
582
- background-color: color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);
583
- border: 1px solid var(--nc-border);
584
- border-radius: var(--nc-radius);
585
- cursor: pointer;
586
- }
587
- :where([type=color])::-webkit-color-swatch-wrapper {
588
- padding: 0;
589
- }
590
- :where([type=color])::-webkit-color-swatch {
591
- border: none;
592
- border-radius: calc(var(--nc-radius) * 0.5);
593
- }
594
- :where(label:has([type=checkbox][role=switch])) {
595
- display: flex;
596
- align-items: center;
597
- gap: 0.5em;
598
- }
599
- :where([type=checkbox][role=switch]) {
600
- appearance: none;
601
- width: 2.5em;
602
- height: 1.25em;
603
- border-radius: 1em;
604
- background-color: var(--nc-border);
605
- position: relative;
606
- cursor: pointer;
607
- flex-shrink: 0;
608
- margin: 0;
609
- transition: background-color 0.2s;
610
- }
611
- :where([type=checkbox][role=switch])::before {
612
- content: "";
613
- position: absolute;
614
- top: 2px;
615
- left: 2px;
616
- width: calc(1.25em - 4px);
617
- height: calc(1.25em - 4px);
618
- border-radius: 50%;
619
- background-color: #fff;
620
- transition: transform 0.2s;
621
- }
622
- :where([type=checkbox][role=switch]):checked {
623
- background-color: var(--nc-primary);
192
+ max-width: none;
193
+ padding-inline: var(--nc-spacing);
624
194
  }
625
- :where([type=checkbox][role=switch]):checked::before {
626
- transform: translateX(1.25em);
195
+ .full-bleed {
196
+ grid-column: 1/-1;
627
197
  }
628
- }
629
- [type=date],
630
- [type=month],
631
- [type=week],
632
- [type=time],
633
- [type=datetime-local] {
634
- -webkit-appearance: none;
635
- appearance: none;
636
- }
637
-
638
- @layer nimble.base {
639
- :where(table) {
198
+ .wide {
199
+ grid-column: 1/-1;
640
200
  width: 100%;
641
- border-collapse: collapse;
642
- }
643
- :where(th, td) {
644
- padding: 0.5em 0.75em;
645
- border-bottom: 1px solid color-mix(in oklch, var(--nc-border), transparent 40%);
646
- text-align: start;
647
- }
648
- :where(thead th, thead td) {
649
- font-weight: 600;
650
- border-bottom-width: 2px;
651
- background-color: var(--nc-surface-2);
652
- text-wrap: balance;
653
- }
654
- :where(figure:has(table)) {
655
- overflow-x: auto;
656
- }
657
- }
658
- @layer nimble.base {
659
- :where(code, kbd, samp) {
660
- font-family: var(--nc-font-mono);
661
- font-size: 0.875em;
662
- background-color: var(--nc-surface-2);
663
- border-radius: var(--nc-radius);
664
- padding: 0.15em 0.35em;
665
- }
666
- :where(pre) {
667
- background-color: var(--nc-surface-2);
668
- border-radius: var(--nc-radius);
669
- padding: var(--nc-spacing);
670
- overflow-x: auto;
671
- }
672
- :where(pre code) {
673
- background: none;
674
- padding: 0;
675
- font-size: inherit;
676
- }
677
- :where(kbd) {
678
- border: 1px solid var(--nc-border);
679
- border-bottom-width: 2px;
680
- }
681
- }
682
- @layer nimble.base {
683
- :where(img, video, canvas, svg) {
684
- max-width: 100%;
685
- height: auto;
686
- }
687
- :where(figure) {
688
- margin: 0;
689
- }
690
- :where(figcaption) {
691
- font-size: 0.9em;
692
- color: color-mix(in oklch, var(--nc-text), transparent 40%);
693
- margin-top: 0.5em;
694
- }
695
- }
696
- @layer nimble.base {
697
- :where(article) {
698
- background-color: var(--nc-surface-1);
699
- border: 1px solid var(--nc-border);
700
- border-radius: var(--nc-radius);
701
- padding: var(--nc-spacing);
702
- margin-bottom: var(--nc-spacing);
703
- }
704
- :where(article > header),
705
- :where(article > footer) {
706
- background-color: color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);
707
- padding: var(--nc-spacing);
708
- }
709
- :where(article > header) {
710
- margin: calc(var(--nc-spacing) * -1) calc(var(--nc-spacing) * -1) var(--nc-spacing);
711
- border-bottom: 1px solid var(--nc-border);
712
- border-radius: var(--nc-radius) var(--nc-radius) 0 0;
713
- }
714
- :where(article > footer) {
715
- margin: var(--nc-spacing) calc(var(--nc-spacing) * -1) calc(var(--nc-spacing) * -1);
716
- border-top: 1px solid var(--nc-border);
717
- border-radius: 0 0 var(--nc-radius) var(--nc-radius);
718
- }
719
- :where(article) > :last-child:not(footer) {
720
- margin-bottom: 0;
721
- }
722
- :where(article > header, article > footer) > :last-child {
723
- margin-bottom: 0;
724
- }
725
- :where(article > header, article > footer) > h1,
726
- :where(article > header, article > footer) > h2,
727
- :where(article > header, article > footer) > h3,
728
- :where(article > header, article > footer) > h4,
729
- :where(article > header, article > footer) > h5,
730
- :where(article > header, article > footer) > h6 {
731
- margin-top: 0;
732
- margin-bottom: 0;
733
- }
734
- }
735
- @layer nimble.base {
736
- :where(details) {
737
- border: 1px solid var(--nc-border);
738
- border-radius: var(--nc-radius);
739
- padding: 0 1em;
740
- }
741
- :where(details) {
742
- margin-bottom: 0.5em;
743
- }
744
- :where(summary) {
745
- cursor: pointer;
746
- font-weight: 600;
747
- margin: 0 -1em;
748
- padding: 0.5em 1em;
749
- list-style-type: "▶ ";
750
- }
751
- :where(details[open] > summary) {
752
- list-style-type: "▼ ";
753
- }
754
- :where(summary[role=button]) {
755
- display: block;
756
- width: auto;
757
- margin: 0 -1em;
758
- list-style: none;
759
- }
760
- :where(summary[role=button])::before {
761
- content: "▶ ";
762
- display: inline-block;
763
- transition: transform 0.2s ease;
764
- font-size: 0.75em;
765
- vertical-align: middle;
766
- }
767
- :where(details[open] > summary[role=button])::before {
768
- transform: rotate(90deg);
769
- }
770
- :where(details[open]) {
771
- padding-bottom: 0.5em;
772
- }
773
- details :last-child {
774
- margin-bottom: 0;
775
- }
776
- }
777
- @supports selector(details::details-content) {
778
- details::details-content {
779
- transition: opacity 0.3s ease, content-visibility 0.3s ease allow-discrete;
780
- opacity: 0;
781
- }
782
- details[open]::details-content {
783
- opacity: 1;
784
- }
785
- @supports (interpolate-size: allow-keywords) {
786
- details {
787
- interpolate-size: allow-keywords;
788
- }
789
- details::details-content {
790
- transition: height 0.3s ease, opacity 0.3s ease, content-visibility 0.3s ease allow-discrete;
791
- height: 0;
792
- overflow: clip;
793
- }
794
- details[open]::details-content {
795
- height: auto;
796
- }
797
- }
798
- }
799
- @layer nimble.base {
800
- :where(dialog) {
801
- background-color: var(--nc-surface-4);
802
- border: 1px solid var(--nc-border);
803
- border-radius: var(--nc-radius);
804
- max-width: min(90vw, 40rem);
805
- padding: var(--nc-spacing);
806
- }
807
- dialog::backdrop {
808
- background: rgba(0, 0, 0, 0.5);
809
- backdrop-filter: blur(4px);
810
- animation: nc-backdrop-in 0.2s ease;
811
- }
812
- @keyframes nc-backdrop-in {
813
- from {
814
- opacity: 0;
815
- }
201
+ max-width: 1200px;
202
+ margin-inline: auto;
203
+ padding-inline: var(--nc-spacing);
816
204
  }
817
205
  }
818
206
  @media print {
@@ -842,42 +230,659 @@
842
230
  margin: 2cm;
843
231
  }
844
232
  }
845
- @layer nimble.utilities {
846
- .container {
847
- max-width: var(--nc-content-width);
848
- margin-inline: auto;
849
- padding-inline: var(--nc-spacing);
233
+ @scope (:root) to (.no-nimble) {
234
+ @layer nimble.base {
235
+ h1 {
236
+ font-size: 2rem;
237
+ line-height: 1.1;
238
+ margin-top: 0;
239
+ margin-bottom: var(--nc-spacing);
240
+ font-weight: 700;
241
+ text-wrap: balance;
242
+ }
243
+ h2 {
244
+ font-size: 1.75rem;
245
+ line-height: 1.15;
246
+ margin-top: 2rem;
247
+ margin-bottom: var(--nc-spacing);
248
+ font-weight: 700;
249
+ text-wrap: balance;
250
+ }
251
+ h3 {
252
+ font-size: 1.5rem;
253
+ line-height: 1.2;
254
+ margin-top: 1.5rem;
255
+ margin-bottom: var(--nc-spacing);
256
+ font-weight: 700;
257
+ text-wrap: balance;
258
+ }
259
+ h4 {
260
+ font-size: 1.25rem;
261
+ line-height: 1.3;
262
+ margin-top: 1.5rem;
263
+ margin-bottom: var(--nc-spacing);
264
+ font-weight: 700;
265
+ text-wrap: balance;
266
+ }
267
+ h5 {
268
+ font-size: 1.125rem;
269
+ line-height: 1.4;
270
+ margin-top: 1.5rem;
271
+ margin-bottom: var(--nc-spacing);
272
+ font-weight: 700;
273
+ text-wrap: balance;
274
+ }
275
+ h6 {
276
+ font-size: 1rem;
277
+ line-height: 1.5;
278
+ margin-top: 1.5rem;
279
+ margin-bottom: var(--nc-spacing);
280
+ font-weight: 700;
281
+ text-wrap: balance;
282
+ }
283
+ @media (max-width: 720px) {
284
+ h1 {
285
+ font-size: 1.75rem;
286
+ }
287
+ h2 {
288
+ font-size: 1.5rem;
289
+ }
290
+ h3 {
291
+ font-size: 1.3rem;
292
+ }
293
+ }
294
+ p, ul, ol, dl, blockquote, pre, table, figure, form, fieldset {
295
+ margin-top: 0;
296
+ margin-bottom: var(--nc-spacing);
297
+ }
298
+ ul, ol {
299
+ padding-inline-start: 1.5em;
300
+ }
301
+ :where(li) {
302
+ margin-bottom: 0.25em;
303
+ }
304
+ :where(li) > :where(ul, ol) {
305
+ margin-bottom: 0;
306
+ }
307
+ dt {
308
+ font-weight: 600;
309
+ }
310
+ dd {
311
+ margin-inline-start: 1.5em;
312
+ margin-bottom: 0.5em;
313
+ }
314
+ blockquote {
315
+ margin-block: var(--nc-spacing);
316
+ margin-inline: 0;
317
+ padding: 0.25em var(--nc-spacing);
318
+ border-inline-start: 0.25rem solid var(--nc-border);
319
+ font-style: italic;
320
+ }
321
+ :where(blockquote) footer,
322
+ :where(blockquote) cite {
323
+ font-style: normal;
324
+ font-size: 0.9em;
325
+ color: color-mix(in oklch, var(--nc-text), transparent 40%);
326
+ }
327
+ hr {
328
+ border: none;
329
+ height: 1px;
330
+ background-color: color-mix(in oklch, var(--nc-border), transparent 40%);
331
+ margin: var(--nc-spacing) 0;
332
+ }
333
+ mark {
334
+ padding: 0.1em 0.25em;
335
+ background-color: light-dark(#fde68a, oklch(0.55 0.12 85));
336
+ color: light-dark(inherit, oklch(0.95 0.01 85));
337
+ border-radius: 2px;
338
+ }
339
+ address {
340
+ font-style: normal;
341
+ }
850
342
  }
851
- .fluid {
852
- display: block;
853
- max-width: none;
854
- padding-inline: var(--nc-spacing);
343
+ @layer nimble.base {
344
+ :where(a:not([role=button])) {
345
+ color: var(--nc-primary);
346
+ text-decoration: underline;
347
+ text-underline-offset: 0.15em;
348
+ text-decoration-color: color-mix(in oklch, var(--nc-primary), transparent 50%);
349
+ transition: color 0.2s, text-decoration-color 0.2s;
350
+ }
351
+ :where(a:not([role=button])):visited {
352
+ color: color-mix(in oklch, var(--nc-primary) 40%, oklch(0.38 0.15 310));
353
+ text-decoration-color: color-mix(in oklch, var(--nc-primary) 40%, oklch(0.38 0.15 310) 30%);
354
+ }
355
+ :where(a:not([role=button])):hover {
356
+ color: var(--nc-primary-hover);
357
+ text-decoration-color: var(--nc-primary-hover);
358
+ }
855
359
  }
856
- .full-bleed {
857
- grid-column: 1/-1;
360
+ @layer nimble.base {
361
+ :where(button, [type=submit], [type=reset], [type=button], [role=button]) {
362
+ --_btn-padding-v: 0.5em;
363
+ --_btn-padding-h: 1em;
364
+ padding: var(--_btn-padding-v) var(--_btn-padding-h);
365
+ background-color: var(--nc-primary);
366
+ color: var(--nc-primary-contrast);
367
+ border: 1px solid var(--nc-primary);
368
+ border-radius: var(--nc-radius);
369
+ font: inherit;
370
+ font-size: 1rem;
371
+ line-height: 1.5;
372
+ cursor: pointer;
373
+ text-decoration: none;
374
+ display: inline-block;
375
+ text-align: center;
376
+ margin: 0;
377
+ transition: background-color 0.2s, border-color 0.2s;
378
+ }
379
+ :where(button, [type=submit], [type=reset], [type=button], [role=button]):hover {
380
+ background-color: var(--nc-primary-hover);
381
+ border-color: var(--nc-primary-hover);
382
+ }
383
+ :where(button, [type=submit], [type=reset], [type=button], [role=button]):focus-visible {
384
+ box-shadow: 0 0 0 2px var(--nc-primary-focus);
385
+ outline: none;
386
+ }
387
+ :where([type=reset]) {
388
+ background-color: var(--nc-secondary);
389
+ border-color: var(--nc-secondary);
390
+ color: var(--nc-secondary-contrast);
391
+ }
392
+ :where([type=reset]):hover {
393
+ background-color: var(--nc-secondary-hover);
394
+ border-color: var(--nc-secondary-hover);
395
+ }
396
+ :where([type=reset]):focus-visible {
397
+ box-shadow: 0 0 0 2px var(--nc-secondary-focus);
398
+ }
399
+ :where(button, [type=submit], [type=reset], [type=button], [role=button]).inline {
400
+ --_btn-padding-v: 0.05em;
401
+ --_btn-padding-h: 0.4em;
402
+ margin: 0.1em 0.15em;
403
+ font-size: 0.875em;
404
+ vertical-align: baseline;
405
+ }
406
+ :where(button, [type=submit], [type=reset], [type=button], [role=button]):disabled {
407
+ opacity: 0.5;
408
+ cursor: not-allowed;
409
+ pointer-events: none;
410
+ }
411
+ :where([role=group]) {
412
+ display: inline-flex;
413
+ margin-bottom: var(--nc-spacing);
414
+ }
415
+ [role=group] > * {
416
+ border-radius: 0;
417
+ margin: 0;
418
+ position: relative;
419
+ }
420
+ [role=group] > * + * {
421
+ --_divider: "";
422
+ }
423
+ [role=group] > * + *::before {
424
+ content: var(--_divider);
425
+ position: absolute;
426
+ inset-inline-start: 0;
427
+ top: 20%;
428
+ bottom: 20%;
429
+ width: 1px;
430
+ background: rgba(255, 255, 255, 0.3);
431
+ pointer-events: none;
432
+ }
433
+ [role=group] > :not(.secondary):not(.outline) + .secondary,
434
+ [role=group] > .secondary + :not(.secondary):not(.outline) {
435
+ --_divider: none;
436
+ }
437
+ [role=group] > :not(.secondary):not(.outline) + .outline,
438
+ [role=group] > .outline + :not(.secondary):not(.outline) {
439
+ --_divider: none;
440
+ }
441
+ [role=group] > .secondary + .outline,
442
+ [role=group] > .outline + .secondary {
443
+ --_divider: none;
444
+ }
445
+ [role=group] > input + *,
446
+ [role=group] > select + * {
447
+ --_divider: none;
448
+ }
449
+ [role=group] > :first-child {
450
+ border-start-start-radius: var(--nc-radius);
451
+ border-end-start-radius: var(--nc-radius);
452
+ }
453
+ [role=group] > :last-child {
454
+ border-start-end-radius: var(--nc-radius);
455
+ border-end-end-radius: var(--nc-radius);
456
+ }
457
+ [role=group]:has(.outline):not(:has(> :not(.outline))) {
458
+ border: 1px solid var(--nc-primary);
459
+ border-radius: var(--nc-radius);
460
+ }
461
+ [role=group]:has(.outline):not(:has(> :not(.outline))) > .outline {
462
+ border: none;
463
+ }
464
+ [role=group] > .outline + .outline::before {
465
+ background: var(--nc-primary);
466
+ }
467
+ [role=search] [role=group] > :first-child {
468
+ border-start-start-radius: 5rem;
469
+ border-end-start-radius: 5rem;
470
+ padding-inline-start: 1.25em;
471
+ }
472
+ [role=search] [role=group] > :last-child {
473
+ border-start-end-radius: 5rem;
474
+ border-end-end-radius: 5rem;
475
+ padding-inline-end: 1.25em;
476
+ }
858
477
  }
859
- .wide {
860
- grid-column: 1/-1;
861
- width: 100%;
862
- max-width: 1200px;
863
- margin-inline: auto;
864
- padding-inline: var(--nc-spacing);
478
+ @layer nimble.utilities {
479
+ .secondary:not(a:not([role=button])) {
480
+ background-color: var(--nc-secondary);
481
+ border-color: var(--nc-secondary);
482
+ color: var(--nc-secondary-contrast);
483
+ }
484
+ .secondary:not(a:not([role=button])):hover {
485
+ background-color: var(--nc-secondary-hover);
486
+ border-color: var(--nc-secondary-hover);
487
+ }
488
+ .secondary:not(a:not([role=button])):focus-visible {
489
+ box-shadow: 0 0 0 2px var(--nc-secondary-focus);
490
+ }
491
+ a:not([role=button]).secondary {
492
+ color: var(--nc-secondary);
493
+ text-decoration-color: color-mix(in oklch, var(--nc-secondary), transparent 50%);
494
+ }
495
+ a:not([role=button]).secondary:hover {
496
+ color: var(--nc-secondary-hover);
497
+ text-decoration-color: var(--nc-secondary-hover);
498
+ }
499
+ .outline:not(a:not([role=button])) {
500
+ background-color: transparent;
501
+ color: var(--nc-primary);
502
+ }
503
+ .outline:not(a:not([role=button])):hover {
504
+ background-color: var(--nc-primary-focus);
505
+ color: var(--nc-primary-hover);
506
+ border-color: var(--nc-primary-hover);
507
+ }
508
+ }
509
+ @layer nimble.base {
510
+ :where(input:not([type=checkbox], [type=radio], [type=range], [type=file], [type=color], [type=submit], [type=button], [type=reset]),
511
+ select, textarea) {
512
+ --_input-bg: color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);
513
+ padding: 0.5em 0.75em;
514
+ min-height: calc(2.5em + 2px);
515
+ background-color: var(--_input-bg);
516
+ border: 1px solid var(--nc-border);
517
+ border-radius: var(--nc-radius);
518
+ color: var(--nc-text);
519
+ font: inherit;
520
+ font-size: 1rem;
521
+ transition: border-color 0.2s, box-shadow 0.2s;
522
+ }
523
+ :where(input:not([type=checkbox], [type=radio], [type=range], [type=file], [type=color], [type=submit], [type=button], [type=reset], [type=date], [type=month], [type=week], [type=time], [type=datetime-local]),
524
+ select, textarea) {
525
+ width: 100%;
526
+ margin-bottom: var(--nc-spacing);
527
+ }
528
+ :where(input, select, textarea):focus-visible {
529
+ border-color: var(--nc-primary);
530
+ box-shadow: 0 0 0 2px var(--nc-primary-focus);
531
+ outline: none;
532
+ }
533
+ :where(input:not([type=submit], [type=button], [type=reset]), select, textarea) + :where(small) {
534
+ display: block;
535
+ margin-top: calc(var(--nc-spacing) * -0.75);
536
+ margin-bottom: var(--nc-spacing);
537
+ font-size: 0.875em;
538
+ color: color-mix(in oklch, var(--nc-text), transparent 40%);
539
+ }
540
+ :where(input, select, textarea)[aria-invalid=false] {
541
+ border-color: var(--nc-valid);
542
+ }
543
+ :where(input, select, textarea)[aria-invalid=true] {
544
+ border-color: var(--nc-invalid);
545
+ }
546
+ :where(input:not([type=submit], [type=button], [type=reset]), select, textarea)[aria-invalid=false] + :where(small) {
547
+ color: var(--nc-valid);
548
+ }
549
+ :where(input:not([type=submit], [type=button], [type=reset]), select, textarea)[aria-invalid=true] + :where(small) {
550
+ color: var(--nc-invalid);
551
+ }
552
+ :where(label) {
553
+ display: block;
554
+ margin-bottom: 0.25em;
555
+ }
556
+ :where(label:has(+ input, + select, + textarea)) {
557
+ font-weight: 600;
558
+ }
559
+ :where(label:has(+ [type=file], + [type=range])) {
560
+ margin-bottom: 0.5em;
561
+ }
562
+ :where(fieldset) {
563
+ border: 1px solid var(--nc-border);
564
+ border-radius: var(--nc-radius);
565
+ padding: var(--nc-spacing);
566
+ min-width: 0;
567
+ max-width: 100%;
568
+ }
569
+ :where(legend) {
570
+ font-weight: 600;
571
+ padding-inline: 0.25em;
572
+ }
573
+ :where([type=checkbox], [type=radio]) {
574
+ accent-color: var(--nc-primary);
575
+ width: 1.125em;
576
+ height: 1.125em;
577
+ margin: 0;
578
+ }
579
+ :where(label:has([type=checkbox], [type=radio])) {
580
+ display: flex;
581
+ align-items: center;
582
+ gap: 0.35em;
583
+ margin-bottom: 0.5em;
584
+ }
585
+ :where(label:has([type=checkbox], [type=radio]):last-child) {
586
+ margin-bottom: 0;
587
+ }
588
+ :where([type=search]) {
589
+ border-radius: 5rem;
590
+ padding-inline: 1.25em;
591
+ }
592
+ :where([type=range]) {
593
+ accent-color: var(--nc-primary);
594
+ width: 100%;
595
+ margin-bottom: var(--nc-spacing);
596
+ }
597
+ :where(input[list]) {
598
+ width: auto;
599
+ }
600
+ :where([type=file]) {
601
+ color: var(--nc-text);
602
+ font: inherit;
603
+ cursor: pointer;
604
+ max-width: 100%;
605
+ margin-bottom: var(--nc-spacing);
606
+ }
607
+ :where([type=file])::file-selector-button {
608
+ padding: 0.5em 1em;
609
+ margin-right: 0.75em;
610
+ margin-inline-end: 0.75em;
611
+ background-color: var(--nc-primary);
612
+ color: var(--nc-primary-contrast);
613
+ border: 1px solid var(--nc-primary);
614
+ border-radius: var(--nc-radius);
615
+ font: inherit;
616
+ cursor: pointer;
617
+ transition: background-color 0.2s, border-color 0.2s;
618
+ }
619
+ :where([type=file])::file-selector-button:hover {
620
+ background-color: var(--nc-primary-hover);
621
+ border-color: var(--nc-primary-hover);
622
+ }
623
+ :where([type=date], [type=month], [type=week], [type=time], [type=datetime-local]) {
624
+ min-width: 10em;
625
+ margin-bottom: var(--nc-spacing);
626
+ }
627
+ :where([type=color]) {
628
+ --_color-size: calc(1em * 1.5 + 1em + 2px);
629
+ margin-bottom: var(--nc-spacing);
630
+ --_color-pad: 0.25em;
631
+ height: var(--_color-size);
632
+ width: calc((var(--_color-size) - 2 * var(--_color-pad)) * 1.618 + 2 * var(--_color-pad));
633
+ padding: var(--_color-pad);
634
+ background-color: color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);
635
+ border: 1px solid var(--nc-border);
636
+ border-radius: var(--nc-radius);
637
+ cursor: pointer;
638
+ }
639
+ :where([type=color])::-webkit-color-swatch-wrapper {
640
+ padding: 0;
641
+ }
642
+ :where([type=color])::-webkit-color-swatch {
643
+ border: none;
644
+ border-radius: calc(var(--nc-radius) * 0.5);
645
+ }
646
+ :where(label:has([type=checkbox][role=switch])) {
647
+ display: flex;
648
+ align-items: center;
649
+ gap: 0.5em;
650
+ }
651
+ :where([type=checkbox][role=switch]) {
652
+ appearance: none;
653
+ width: 2.5em;
654
+ height: 1.25em;
655
+ border-radius: 1em;
656
+ background-color: var(--nc-border);
657
+ position: relative;
658
+ cursor: pointer;
659
+ flex-shrink: 0;
660
+ margin: 0;
661
+ transition: background-color 0.2s;
662
+ }
663
+ :where([type=checkbox][role=switch])::before {
664
+ content: "";
665
+ position: absolute;
666
+ top: 2px;
667
+ left: 2px;
668
+ width: calc(1.25em - 4px);
669
+ height: calc(1.25em - 4px);
670
+ border-radius: 50%;
671
+ background-color: #fff;
672
+ transition: transform 0.2s;
673
+ }
674
+ :where([type=checkbox][role=switch]):checked {
675
+ background-color: var(--nc-primary);
676
+ }
677
+ :where([type=checkbox][role=switch]):checked::before {
678
+ transform: translateX(1.25em);
679
+ }
865
680
  }
866
- .striped :where(tbody tr:nth-child(even)) {
867
- background-color: var(--nc-surface-2);
681
+ [type=date],
682
+ [type=month],
683
+ [type=week],
684
+ [type=time],
685
+ [type=datetime-local] {
686
+ -webkit-appearance: none;
687
+ appearance: none;
868
688
  }
869
- .visually-hidden {
870
- position: absolute;
871
- width: 1px;
872
- height: 1px;
873
- padding: 0;
874
- margin: -1px;
875
- overflow: hidden;
876
- clip-path: inset(50%);
877
- white-space: nowrap;
878
- border: 0;
689
+ @layer nimble.base {
690
+ :where(table) {
691
+ width: 100%;
692
+ border-collapse: collapse;
693
+ }
694
+ :where(th, td) {
695
+ padding: 0.5em 0.75em;
696
+ border-bottom: 1px solid color-mix(in oklch, var(--nc-border), transparent 40%);
697
+ text-align: start;
698
+ }
699
+ :where(thead th, thead td) {
700
+ font-weight: 600;
701
+ border-bottom-width: 2px;
702
+ background-color: var(--nc-surface-2);
703
+ text-wrap: balance;
704
+ }
705
+ :where(figure:has(table)) {
706
+ overflow-x: auto;
707
+ }
879
708
  }
880
- .overflow-auto {
881
- overflow: auto;
709
+ @layer nimble.base {
710
+ :where(code, kbd, samp) {
711
+ font-family: var(--nc-font-mono);
712
+ font-size: 0.875em;
713
+ background-color: var(--nc-surface-2);
714
+ border-radius: var(--nc-radius);
715
+ padding: 0.15em 0.35em;
716
+ }
717
+ :where(pre) {
718
+ background-color: var(--nc-surface-2);
719
+ border-radius: var(--nc-radius);
720
+ padding: var(--nc-spacing);
721
+ overflow-x: auto;
722
+ }
723
+ :where(pre code) {
724
+ background: none;
725
+ padding: 0;
726
+ font-size: inherit;
727
+ }
728
+ :where(kbd) {
729
+ border: 1px solid var(--nc-border);
730
+ border-bottom-width: 2px;
731
+ }
732
+ }
733
+ @layer nimble.base {
734
+ :where(img, video, canvas, svg) {
735
+ max-width: 100%;
736
+ height: auto;
737
+ }
738
+ :where(figure) {
739
+ margin: 0;
740
+ }
741
+ :where(figcaption) {
742
+ font-size: 0.9em;
743
+ color: color-mix(in oklch, var(--nc-text), transparent 40%);
744
+ margin-top: 0.5em;
745
+ }
746
+ }
747
+ @layer nimble.base {
748
+ :where(article) {
749
+ background-color: var(--nc-surface-1);
750
+ border: 1px solid var(--nc-border);
751
+ border-radius: var(--nc-radius);
752
+ padding: var(--nc-spacing);
753
+ margin-bottom: var(--nc-spacing);
754
+ }
755
+ :where(article > header),
756
+ :where(article > footer) {
757
+ background-color: color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);
758
+ padding: var(--nc-spacing);
759
+ }
760
+ :where(article > header) {
761
+ margin: calc(var(--nc-spacing) * -1) calc(var(--nc-spacing) * -1) var(--nc-spacing);
762
+ border-bottom: 1px solid var(--nc-border);
763
+ border-radius: var(--nc-radius) var(--nc-radius) 0 0;
764
+ }
765
+ :where(article > footer) {
766
+ margin: var(--nc-spacing) calc(var(--nc-spacing) * -1) calc(var(--nc-spacing) * -1);
767
+ border-top: 1px solid var(--nc-border);
768
+ border-radius: 0 0 var(--nc-radius) var(--nc-radius);
769
+ }
770
+ :where(article) > :last-child:not(footer) {
771
+ margin-bottom: 0;
772
+ }
773
+ :where(article > header, article > footer) > :last-child {
774
+ margin-bottom: 0;
775
+ }
776
+ :where(article > header, article > footer) > h1,
777
+ :where(article > header, article > footer) > h2,
778
+ :where(article > header, article > footer) > h3,
779
+ :where(article > header, article > footer) > h4,
780
+ :where(article > header, article > footer) > h5,
781
+ :where(article > header, article > footer) > h6 {
782
+ margin-top: 0;
783
+ margin-bottom: 0;
784
+ }
785
+ }
786
+ @layer nimble.base {
787
+ :where(details) {
788
+ border: 1px solid var(--nc-border);
789
+ border-radius: var(--nc-radius);
790
+ padding: 0 1em;
791
+ }
792
+ :where(details) {
793
+ margin-bottom: 0.5em;
794
+ }
795
+ :where(summary) {
796
+ cursor: pointer;
797
+ font-weight: 600;
798
+ margin: 0 -1em;
799
+ padding: 0.5em 1em;
800
+ list-style-type: "▶ ";
801
+ }
802
+ :where(details[open] > summary) {
803
+ list-style-type: "▼ ";
804
+ }
805
+ :where(summary[role=button]) {
806
+ display: block;
807
+ width: auto;
808
+ margin: 0 -1em;
809
+ list-style: none;
810
+ }
811
+ :where(summary[role=button])::before {
812
+ content: "▶ ";
813
+ display: inline-block;
814
+ transition: transform 0.2s ease;
815
+ font-size: 0.75em;
816
+ vertical-align: middle;
817
+ }
818
+ :where(details[open] > summary[role=button])::before {
819
+ transform: rotate(90deg);
820
+ }
821
+ :where(details[open]) {
822
+ padding-bottom: 0.5em;
823
+ }
824
+ }
825
+ details :last-child:last-child {
826
+ margin-bottom: 0;
827
+ }
828
+ @supports selector(details::details-content) {
829
+ details::details-content {
830
+ transition: opacity 0.3s ease, content-visibility 0.3s ease allow-discrete;
831
+ opacity: 0;
832
+ }
833
+ details[open]::details-content {
834
+ opacity: 1;
835
+ }
836
+ @supports (interpolate-size: allow-keywords) {
837
+ details {
838
+ interpolate-size: allow-keywords;
839
+ }
840
+ details::details-content {
841
+ transition: height 0.3s ease, opacity 0.3s ease, content-visibility 0.3s ease allow-discrete;
842
+ height: 0;
843
+ overflow: clip;
844
+ }
845
+ details[open]::details-content {
846
+ height: auto;
847
+ }
848
+ }
849
+ }
850
+ @layer nimble.base {
851
+ :where(dialog) {
852
+ background-color: var(--nc-surface-4);
853
+ border: 1px solid var(--nc-border);
854
+ border-radius: var(--nc-radius);
855
+ max-width: min(90vw, 40rem);
856
+ padding: var(--nc-spacing);
857
+ }
858
+ dialog::backdrop {
859
+ background: rgba(0, 0, 0, 0.5);
860
+ backdrop-filter: blur(4px);
861
+ animation: nc-backdrop-in 0.2s ease;
862
+ }
863
+ @keyframes nc-backdrop-in {
864
+ from {
865
+ opacity: 0;
866
+ }
867
+ }
868
+ }
869
+ @layer nimble.utilities {
870
+ .striped :where(tbody tr:nth-child(even)) {
871
+ background-color: var(--nc-surface-2);
872
+ }
873
+ .visually-hidden {
874
+ position: absolute;
875
+ width: 1px;
876
+ height: 1px;
877
+ padding: 0;
878
+ margin: -1px;
879
+ overflow: hidden;
880
+ clip-path: inset(50%);
881
+ white-space: nowrap;
882
+ border: 0;
883
+ }
884
+ .overflow-auto {
885
+ overflow: auto;
886
+ }
882
887
  }
883
888
  }