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