@wwtdev/bsds-css 1.0.2 → 1.1.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.
@@ -171,13 +171,15 @@
171
171
  https://tailwindcss.com/docs/preflight#border-styles-are-reset-globally
172
172
  */
173
173
 
174
+ /* Specificity should be either (0, 1, 0) (class-based) or (0, 0, 1) (element-based) for each selector */
175
+
174
176
  *,
175
177
  *::before,
176
178
  *::after {
177
- box-sizing: border-box; /* 1 */
178
- border-width: 0; /* 2 */
179
- border-style: solid; /* 2 */
180
179
  border-color: currentColor; /* 2 */
180
+ border-style: solid; /* 2 */
181
+ border-width: 0; /* 2 */
182
+ box-sizing: border-box; /* 1 */
181
183
  }
182
184
 
183
185
  /* Remove default margin */
@@ -199,28 +201,28 @@ dd {
199
201
 
200
202
  /* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */
201
203
 
202
- ul[role='list'],
203
- ol[role='list'] {
204
+ ul:where([role='list']),
205
+ ol:where([role='list']) {
204
206
  list-style: none;
205
207
  }
206
208
 
207
209
  /* Set core root defaults */
208
210
 
209
- html:focus-within {
211
+ html:where(:focus-within) {
210
212
  scroll-behavior: smooth;
211
213
  }
212
214
 
213
215
  /* Set core body defaults */
214
216
 
215
217
  body {
218
+ line-height: 1.5;
216
219
  min-height: 100vh;
217
220
  text-rendering: optimizeSpeed;
218
- line-height: 1.5;
219
221
  }
220
222
 
221
- /* A elements that don't have a class get default styles */
223
+ /* Elements that don't have a class get default styles */
222
224
 
223
- a:not([class]) {
225
+ a:where(:not([class])) {
224
226
  -webkit-text-decoration-skip: ink;
225
227
  text-decoration-skip-ink: auto;
226
228
  }
@@ -235,7 +237,9 @@ picture {
235
237
 
236
238
  /* Inherit fonts for inputs */
237
239
 
238
- :where(input, textarea, select) {
240
+ input,
241
+ textarea,
242
+ select {
239
243
  font: inherit;
240
244
  }
241
245
 
@@ -246,7 +250,7 @@ button {
246
250
  /* Remove all animations and transitions for people that prefer not to see them */
247
251
 
248
252
  @media (prefers-reduced-motion: reduce) {
249
- html:focus-within {
253
+ html:where(:focus-within) {
250
254
  scroll-behavior: auto;
251
255
  }
252
256
 
@@ -255,11 +259,13 @@ button {
255
259
  *::after {
256
260
  animation-duration: 0.01ms !important;
257
261
  animation-iteration-count: 1 !important;
258
- transition-duration: 0.01ms !important;
259
262
  scroll-behavior: auto !important;
263
+ transition-duration: 0.01ms !important;
260
264
  }
261
265
  }
262
266
 
267
+ /* Specificity should be either (0, 1, 0) (class-based) or (0, 0, 1) (element-based) for each selector */
268
+
263
269
  :root,
264
270
  :host {
265
271
  --bs-bg-base: var(--bs-white);
@@ -275,6 +281,7 @@ button {
275
281
 
276
282
  /* Spacing */
277
283
  --bs-content-top: 4rem;
284
+ --bs-content-max-width: 72rem;
278
285
 
279
286
  /* Type */
280
287
  --bs-font-normal: 400;
@@ -282,7 +289,7 @@ button {
282
289
  }
283
290
 
284
291
  .dark,
285
- .dark :host {
292
+ .dark :where(:host) {
286
293
  --bs-bg-base: var(--bs-navy-500);
287
294
  --bs-bg-subtle: #2F2F51;
288
295
  --bs-bg-invert: var(--bs-white);
@@ -293,6 +300,22 @@ button {
293
300
  --bs-ink-accent: var(--bs-plum-100);
294
301
  --bs-ink-invert: var(--bs-black);
295
302
  --bs-border: var(--bs-gray-400);
303
+ --bs-shadow-base: rgba(0, 0, 0, 0.06);
304
+ --bs-shadow-invert: rgba(10, 11, 25, 0.60);
305
+ --bs-shadow: -4px 4px 12px var(--bs-shadow-base),
306
+ -8px 8px 16px var(--bs-shadow-invert);
307
+ --bs-shadow-contentLow: -4px 4px 12px var(--bs-shadow-base),
308
+ -8px 8px 16px var(--bs-shadow-invert);
309
+ --bs-shadow-contentLowCenter: 0px 0px 12px var(--bs-shadow-base),
310
+ 0px 0px 16px var(--bs-shadow-invert);
311
+ --bs-shadow-contentMedium: -8px 8px 24px var(--bs-shadow-base),
312
+ -16px 16px 32px var(--bs-shadow-invert);
313
+ --bs-shadow-contentHigh: 0px 16px 48px var(--bs-shadow-base),
314
+ 0px 32px 64px var(--bs-shadow-invert);
315
+ --bs-shadow-drawerLeft: -12px 12px 24px var(--bs-shadow-base),
316
+ -16px 16px 32px var(--bs-shadow-invert);
317
+ --bs-shadow-drawerRight: -12px 12px 24px var(--bs-shadow-base),
318
+ 16px 16px 32px var(--bs-shadow-invert);
296
319
  }
297
320
 
298
321
  body,
@@ -320,15 +343,17 @@ body,
320
343
  }
321
344
 
322
345
  hr {
346
+ background: var(--bs-border);
323
347
  border: 0;
324
348
  height: 1px;
325
- background: var(--bs-border);
326
349
  }
327
350
 
351
+ /* Specificity should be either (0, 1, 0) (class-based) or (0, 0, 1) (element-based) for each selector */
352
+
328
353
  body {
329
- font-weight: 400;
330
354
  font-family: 'Roobert', sans-serif;
331
355
  font-size: var(--bs-text-base);
356
+ font-weight: 400;
332
357
  }
333
358
 
334
359
  /* Default Element/data-variant Styles */
@@ -339,35 +364,41 @@ body {
339
364
  line-height: var(--bs-leading-sm);
340
365
  }
341
366
 
342
- h1, [data-variant^="heading-1"] {
367
+ h1,
368
+ [data-variant^="heading-1"] {
343
369
  font-size: var(--bs-text-3xl);
344
370
  font-weight: 400;
345
371
  line-height: var(--bs-leading-sm);
346
372
  }
347
373
 
348
- h2, [data-variant^="heading-2"] {
374
+ h2,
375
+ [data-variant^="heading-2"] {
349
376
  font-size: var(--bs-text-2xl);
350
377
  font-weight: 600;
351
378
  line-height: var(--bs-leading-sm);
352
379
  }
353
380
 
354
- h3, [data-variant^="heading-3"] {
381
+ h3,
382
+ [data-variant^="heading-3"] {
355
383
  font-size: var(--bs-text-xl);
356
384
  font-weight: 600;
357
385
  line-height: var(--bs-leading-sm);
358
386
  }
359
387
 
360
- h4, [data-variant^="heading-4"] {
388
+ h4,
389
+ [data-variant^="heading-4"] {
361
390
  font-size: var(--bs-text-lg);
362
391
  font-weight: 600;
363
392
  }
364
393
 
365
- h5, [data-variant^="heading-5"] {
394
+ h5,
395
+ [data-variant^="heading-5"] {
366
396
  font-size: var(--bs-text-md);
367
397
  font-weight: 600;
368
398
  }
369
399
 
370
- h6, [data-variant^="heading-6"] {
400
+ h6,
401
+ [data-variant^="heading-6"] {
371
402
  font-size: var(--bs-text-base);
372
403
  font-weight: 600;
373
404
  }
@@ -377,7 +408,7 @@ h6, [data-variant^="heading-6"] {
377
408
  max-width: 70ch;
378
409
  }
379
410
 
380
- .prose :where(h1, h2, h3, h4, h5, h6):not([data-color]) {
411
+ :where(.prose) :is(h1, h2, h3, h4, h5, h6):where(:not([data-color])) {
381
412
  color: var(--bs-ink-base);
382
413
  }
383
414
 
@@ -385,12 +416,13 @@ h6, [data-variant^="heading-6"] {
385
416
  font-size: var(--bs-text-base);
386
417
  }
387
418
 
388
- .bs-meta, [data-variant^="meta"] {
419
+ .bs-meta,
420
+ [data-variant^="meta"] {
389
421
  font-size: var(--bs-text-xs);
390
422
  font-weight: 600;
391
423
  }
392
424
 
393
- :where(.prose blockquote) {
425
+ :where(.prose) blockquote {
394
426
  border-left: 4px solid var(--bs-plum-200);
395
427
  color: var(--bs-plum-200);
396
428
  font-style: italic;
@@ -402,217 +434,215 @@ h6, [data-variant^="heading-6"] {
402
434
  max-width: 90%;
403
435
  }
404
436
 
405
- .prose:where([data-width="wide"]) > :is(p, h1, h2, h3, h4, h5, h6, blockquote, ul, ol) {
437
+ .prose:where([data-width="wide"]) > :where(p, h1, h2, h3, h4, h5, h6, blockquote, ul, ol) {
406
438
  max-width: 48rem;
407
439
  }
408
440
 
409
441
  /* data-font-size Styles */
410
442
 
411
- :where([data-font-size^='4xl']) {
443
+ [data-font-size^='4xl'] {
412
444
  font-size: var(--bs-text-4xl);
413
445
  line-height: var(--bs-leading-sm);
414
446
  }
415
447
 
416
- :where([data-font-size^='3xl']) {
448
+ [data-font-size^='3xl'] {
417
449
  font-size: var(--bs-text-3xl);
418
450
  line-height: var(--bs-leading-sm);
419
451
  }
420
452
 
421
- :where([data-font-size^='2xl']) {
453
+ [data-font-size^='2xl'] {
422
454
  font-size: var(--bs-text-2xl);
423
455
  line-height: var(--bs-leading-sm);
424
456
  }
425
457
 
426
- :where([data-font-size^='xl']) {
458
+ [data-font-size^='xl'] {
427
459
  font-size: var(--bs-text-xl);
428
460
  line-height: var(--bs-leading-sm);
429
461
  }
430
462
 
431
- :where([data-font-size^='lg']) {
463
+ [data-font-size^='lg'] {
432
464
  font-size: var(--bs-text-lg);
433
465
  }
434
466
 
435
- :where([data-font-size^='md']) {
467
+ [data-font-size^='md'] {
436
468
  font-size: var(--bs-text-md);
437
469
  }
438
470
 
439
- :where([data-font-size^='base']) {
471
+ [data-font-size^='base'] {
440
472
  font-size: var(--bs-text-base);
441
473
  }
442
474
 
443
- :where([data-font-size^='sm']) {
475
+ [data-font-size^='sm'] {
444
476
  font-size: var(--bs-text-sm);
445
477
  }
446
478
 
447
- :where([data-font-size^='xs']) {
479
+ [data-font-size^='xs'] {
448
480
  font-size: var(--bs-text-xs);
449
481
  }
450
482
 
451
483
  /* data-color Styles */
452
484
 
453
- :where([data-color^='base']) {
485
+ [data-color^='base'] {
454
486
  color: var(--bs-ink-base);
455
487
  }
456
488
 
457
- :where([data-color^='medium']) {
489
+ [data-color^='medium'] {
458
490
  color: var(--bs-ink-medium);
459
491
  }
460
492
 
461
- :where([data-color^='light']) {
493
+ [data-color^='light'] {
462
494
  color: var(--bs-ink-light);
463
495
  }
464
496
 
465
- :where([data-color^='accent']) {
497
+ [data-color^='accent'] {
466
498
  color: var(--bs-ink-accent);
467
499
  }
468
500
 
469
501
  /* data-weight Styles */
470
502
 
471
- :where([data-weight^='normal'], [data-weight^='400']) {
503
+ [data-weight^='normal'],
504
+ [data-weight^='400'] {
472
505
  font-weight: 400;
473
506
  }
474
507
 
475
- :where([data-weight^='bold'], [data-weight^='600']) {
508
+ [data-weight^='bold'],
509
+ [data-weight^='600'] {
476
510
  font-weight: 600;
477
511
  }
478
512
 
479
- body:where(.fluid) {
513
+ /* Specificity should be either (0, 1, 0) (class-based) or (0, 0, 1) (element-based) for each selector */
514
+
515
+ :where(body).fluid {
480
516
  font-size: var(--bs-text-f-md);
481
517
  }
482
518
 
483
519
  /* Defaults & Variants */
484
520
 
485
- :where(.fluid) h1,
486
- :where(.fluid) [data-variant^='heading-1'] {
521
+ .fluid :where(h1),
522
+ .fluid :where([data-variant^='heading-1']) {
487
523
  font-size: var(--bs-text-f-3xl);
488
524
  }
489
525
 
490
- :where(.fluid) h2,
491
- :where(.fluid) [data-variant^='heading-2'] {
526
+ .fluid :where(h2),
527
+ .fluid :where([data-variant^='heading-2']) {
492
528
  font-size: var(--bs-text-f-2xl);
493
529
  }
494
530
 
495
- :where(.fluid) h3,
496
- :where(.fluid) [data-variant^='heading-3'] {
531
+ .fluid :where(h3),
532
+ .fluid :where([data-variant^='heading-3']) {
497
533
  font-size: var(--bs-text-f-xl);
498
534
  }
499
535
 
500
- :where(.fluid) h4,
501
- :where(.fluid) [data-variant^='heading-4'] {
536
+ .fluid :where(h4),
537
+ .fluid :where([data-variant^='heading-4']) {
502
538
  font-size: var(--bs-text-f-lg);
503
539
  }
504
540
 
505
- :where(.fluid) h5,
506
- :where(.fluid) [data-variant^='heading-5'] {
541
+ .fluid :where(h5),
542
+ .fluid :where([data-variant^='heading-5']) {
507
543
  font-size: var(--bs-text-f-md);
508
544
  }
509
545
 
510
- :where(.fluid) h6,
511
- :where(.fluid) [data-variant^='heading-6'] {
546
+ .fluid :where(h6),
547
+ .fluid :where([data-variant^='heading-6']) {
512
548
  font-size: var(--bs-text-f-sm);
513
549
  }
514
550
 
515
- :where(.fluid).prose,
516
- :where(.fluid) .prose,
517
- :where(.fluid) [data-variant^='default'] {
551
+ .fluid:where(.prose),
552
+ .fluid :where(.prose),
553
+ .fluid :where([data-variant^='default']) {
518
554
  font-size: var(--bs-text-f-md);
519
555
  }
520
556
 
521
- :where(.fluid) .bs-meta,
522
- :where(.fluid) [data-variant^='meta'] {
557
+ .fluid :where(.bs-meta),
558
+ .fluid :where([data-variant^='meta']) {
523
559
  font-size: var(--bs-text-f-xs);
524
560
  }
525
561
 
526
562
  /* Fluid data-font-size Styles */
527
563
 
528
- :where(.fluid) [data-font-size^='4xl'] {
564
+ .fluid :where([data-font-size^='4xl']) {
529
565
  font-size: var(--bs-text-f-4xl);
530
566
  }
531
567
 
532
- :where(.fluid) [data-font-size^='3xl'] {
568
+ .fluid :where([data-font-size^='3xl']) {
533
569
  font-size: var(--bs-text-f-3xl);
534
570
  }
535
571
 
536
- :where(.fluid) [data-font-size^='2xl'] {
572
+ .fluid :where([data-font-size^='2xl']) {
537
573
  font-size: var(--bs-text-f-2xl);
538
574
  }
539
575
 
540
- :where(.fluid) [data-font-size^='xl'] {
576
+ .fluid :where([data-font-size^='xl']) {
541
577
  font-size: var(--bs-text-f-xl);
542
578
  line-height: var(--bs-leading-sm);
543
579
  }
544
580
 
545
- :where(.fluid) [data-font-size^='lg'] {
581
+ .fluid :where([data-font-size^='lg']) {
546
582
  font-size: var(--bs-text-f-lg);
547
583
  }
548
584
 
549
- :where(.fluid) [data-font-size^='md'] {
585
+ .fluid :where([data-font-size^='md']) {
550
586
  font-size: var(--bs-text-f-md);
551
587
  }
552
588
 
553
- :where(.fluid) [data-font-size^='base'] {
589
+ .fluid :where([data-font-size^='base']) {
554
590
  font-size: var(--bs-text-f-base);
555
591
  }
556
592
 
557
- :where(.fluid) [data-font-size^='sm'] {
593
+ .fluid :where([data-font-size^='sm']) {
558
594
  font-size: var(--bs-text-f-sm);
559
595
  }
560
596
 
561
- :where(.fluid) [data-font-size^='xs'] {
597
+ .fluid :where([data-font-size^='xs']) {
562
598
  font-size: var(--bs-text-f-xs);
563
599
  }
564
600
 
565
- /* Using :where() here for no additional specificity */
601
+ /* Specificity should be either (0, 1, 0) (class-based) or (0, 0, 1) (element-based) for each selector */
566
602
 
567
- :where(.prose) a {
603
+ :where(a) {
568
604
  border-radius: 0.25rem; /* gives outlines rounded corners in modern browsers */
569
605
  -webkit-box-decoration-break: clone;
570
606
  box-decoration-break: clone;
571
607
  color: var(--bs-purple-400);
608
+ outline-color: var(--bs-blue-400);
572
609
  text-decoration: underline;
573
610
  text-underline-offset: 2px;
574
611
  transition: all 0.15s ease-in-out;
575
- outline-color: var(--bs-blue-400);
576
612
  }
577
613
 
578
- :where(.prose) a:where(:not(.button)):hover,
579
- :where(.prose) a:where(:not(.button)):focus,
580
- :where(.prose) a:where(:not(.button)):focus-visible {
614
+ :where(a:hover),
615
+ :where(a:focus),
616
+ :where(a:focus-visible) {
581
617
  color: var(--bs-plum-400);
582
618
  text-decoration-color: var(--bs-purple-400);
583
619
  }
584
620
 
585
- :where(.prose) a:focus-visible {
621
+ :where(a:focus-visible) {
586
622
  outline-offset: var(--bs-space-1);
587
623
  outline-style: solid;
588
624
  outline-width: 2px;
589
625
  }
590
626
 
591
- :where(.prose) a:focus:where(:not(:focus-visible)) {
627
+ :where(a:focus:not(:focus-visible)) {
592
628
  outline: none;
593
629
  }
594
630
 
595
- /* dark links still need .dark because we don't want them overwritten by the light theme link styles in applications */
631
+ /* Dark mode styling */
596
632
 
597
- .dark :where(.prose) a:not(.button, .bs-pill) {
633
+ :where(.dark a) {
598
634
  color: var(--bs-purple-200);
599
635
  outline-color: var(--bs-blue-300);
600
636
  }
601
637
 
602
- .dark :where(.prose) a:where(:not(.button)):hover,
603
- .dark :where(.prose) a:where(:not(.button)):focus,
604
- .dark :where(.prose) a:where(:not(.button)):focus-visible {
638
+ :where(.dark a:hover),
639
+ :where(.dark a:focus),
640
+ :where(.dark a:focus-visible) {
605
641
  color: var(--bs-pink-300);
606
642
  text-decoration-color: var(--bs-purple-200);
607
643
  }
608
644
 
609
- .dark :where(.prose) a:focus-visible {
610
- outline-offset: var(--bs-space-1);
611
- }
612
-
613
- .dark :where(.prose) a:focus:where(:not(:focus-visible)) {
614
- outline: none;
615
- }
645
+ /* Specificity should be either (0, 1, 0) (class-based) or (0, 0, 1) (element-based) for each selector */
616
646
 
617
647
  .box-shadow {
618
648
  box-shadow: var(--bs-shadow);
@@ -642,13 +672,15 @@ body:where(.fluid) {
642
672
  box-shadow: var(--bs-shadow-profilePhoto);
643
673
  }
644
674
 
675
+ /* Specificity should be either (0, 1, 0) (class-based) or (0, 0, 1) (element-based) for each selector */
676
+
645
677
  .box {
646
678
  background: var(--bg-color, var(--bs-bg-subtle));
647
679
  border-radius: 0.25rem;
648
680
  padding: var(--box-space, var(--bs-space-6));
649
681
  }
650
682
 
651
- .box[data-invert] {
683
+ .box:where([data-invert]) {
652
684
  --bg-color: var(--bs-bg-invert);
653
685
  color: var(--bs-ink-invert);
654
686
  }
@@ -665,12 +697,12 @@ body:where(.fluid) {
665
697
  justify-content: flex-start;
666
698
  }
667
699
 
668
- :where(.cluster[data-variant^="brick"]) > * {
700
+ .cluster:where([data-variant^="brick"]) > * {
669
701
  align-self: stretch;
670
702
  flex-grow: 1;
671
703
  }
672
704
 
673
- .cluster[data-gap="tight"] {
705
+ .cluster:where([data-gap="tight"]) {
674
706
  gap: var(--cluster-space, var(--bs-space-2));
675
707
  }
676
708
 
@@ -678,7 +710,7 @@ body:where(.fluid) {
678
710
  gap: var(--cluster-space, var(--bs-space-f-6));
679
711
  }
680
712
 
681
- :where(.fluid) .cluster[data-gap="tight"] {
713
+ :where(.fluid) .cluster:where([data-gap="tight"]) {
682
714
  gap: var(--cluster-space, var(--bs-space-f-2));
683
715
  }
684
716
 
@@ -686,19 +718,19 @@ body:where(.fluid) {
686
718
  margin-top: var(--flow-space, 1.25em);
687
719
  }
688
720
 
689
- .flow > :is(h1, h2, h3, h4, h5, h6) {
721
+ .flow > :where(h1, h2, h3, h4, h5, h6) {
690
722
  --flow-space: 2em;
691
723
  }
692
724
 
693
- .flow > hr + * {
725
+ .flow > :where(hr) + * {
694
726
  --flow-space: 1.5em;
695
727
  }
696
728
 
697
- .flow > :is(h1, h2, h3, h4, h5, h6) + * {
729
+ .flow > :where(h1, h2, h3, h4, h5, h6) + * {
698
730
  --flow-space: 0.5em;
699
731
  }
700
732
 
701
- .flow > :is(ul, ol) > li {
733
+ .flow > :where(ul, ol) > :where(li) {
702
734
  margin-top: var(--flow-space, 0.625em);
703
735
  }
704
736
 
@@ -706,11 +738,11 @@ body:where(.fluid) {
706
738
  padding-block: var(--region-space, var(--bs-space-6));
707
739
  }
708
740
 
709
- .region[data-space^='sm'] {
741
+ .region:where([data-space^='sm']) {
710
742
  padding-block: var(--bs-space-3);
711
743
  }
712
744
 
713
- .region[data-space^='lg'] {
745
+ .region:where([data-space^='lg']) {
714
746
  padding-block: var(--bs-space-12);
715
747
  }
716
748
 
@@ -718,11 +750,11 @@ body:where(.fluid) {
718
750
  padding-block: var(--region-space, var(--bs-space-f-6));
719
751
  }
720
752
 
721
- :where(.fluid) .region[data-space^='sm'] {
753
+ :where(.fluid) .region:where([data-space^='sm']) {
722
754
  padding-block: var(--bs-space-f-3);
723
755
  }
724
756
 
725
- :where(.fluid) .region[data-space^='lg'] {
757
+ :where(.fluid) .region:where([data-space^='lg']) {
726
758
  padding-block: var(--bs-space-f-12);
727
759
  }
728
760
 
@@ -739,10 +771,12 @@ body:where(.fluid) {
739
771
  padding-inline: var(--wrapper-space, var(--bs-space-f-6));
740
772
  }
741
773
 
742
- .wrapper[data-flush] {
774
+ .wrapper:where([data-flush]) {
743
775
  padding-inline: 0;
744
776
  }
745
777
 
778
+ /* Specificity should be either (0, 1, 0) (class-based) or (0, 0, 1) (element-based) for each selector */
779
+
746
780
  .visually-hidden {
747
781
  border: 0;
748
782
  clip: rect(0 0 0 0);
@@ -751,8 +785,8 @@ body:where(.fluid) {
751
785
  overflow: hidden;
752
786
  padding: 0;
753
787
  position: absolute;
754
- width: 1px;
755
788
  white-space: nowrap;
789
+ width: 1px;
756
790
  }
757
791
 
758
792
  .measure-compact {
@@ -766,3 +800,102 @@ body:where(.fluid) {
766
800
  .measure-long {
767
801
  max-width: 70ch;
768
802
  }
803
+
804
+ table {
805
+ border-collapse: collapse;
806
+ border-spacing: 0;
807
+ overflow-x: auto;
808
+ max-width: 100%;
809
+ width: 100%;
810
+ }
811
+
812
+ thead {
813
+ color: var(--bs-ink-base);
814
+ font-size: var(--bs-font-base);
815
+ font-weight: 600;
816
+ }
817
+
818
+ tbody {
819
+ color: var(--bs-ink-light);
820
+ }
821
+
822
+ th {
823
+ background: var(--bs-bg-base);
824
+ }
825
+
826
+ th, td {
827
+ border-bottom: 1px solid var(--bs-border);
828
+ min-width: -moz-fit-content;
829
+ min-width: fit-content;
830
+ padding: var(--bs-space-2);
831
+ text-align: left;
832
+ }
833
+
834
+ /* Table Borders */
835
+
836
+ table[data-borders^="none"] {
837
+ border: 0;
838
+ }
839
+
840
+ table[data-borders^="all"] :where(th, td) {
841
+ border-left: 1px solid var(--bs-border);
842
+ }
843
+
844
+ table[data-borders^="all"] :where(th, td):last-child {
845
+ border-right: 1px solid var(--bs-border);
846
+ }
847
+
848
+ table[data-borders^="all"] th {
849
+ border-top: 1px solid var(--bs-border);
850
+ }
851
+
852
+ /* Table Rows */
853
+
854
+ table:where([data-rows^="striped"]) tbody > tr:nth-child(even) {
855
+ background-color: var(--bs-bg-subtle);
856
+ }
857
+
858
+ /* Table Cells */
859
+
860
+ table[data-cells^="fixed"] {
861
+ table-layout: fixed;
862
+ }
863
+
864
+ table:where([data-cells^="height"]) td {
865
+ height: 4.5rem;
866
+ vertical-align: middle;
867
+ }
868
+
869
+ /* Sticky Header */
870
+
871
+ table:where([data-sticky]) {
872
+ isolation: isolate;
873
+ }
874
+
875
+ table:where([data-sticky^="top"]) td {
876
+ z-index: 1;
877
+ }
878
+
879
+ table:where([data-sticky^="top"]) {
880
+ border-collapse: separate;
881
+ overflow-y: unset; /* Will break sticky headers if removed */
882
+ position: relative;
883
+ }
884
+
885
+ table:where([data-sticky^="left"]) {
886
+ border-collapse: separate;
887
+ overflow-x: unset; /* Will break sticky headers if removed */
888
+ position: relative;
889
+ }
890
+
891
+ table:where([data-sticky^="top"]) th {
892
+ position: sticky;
893
+ top: var(--bs-content-top);
894
+ z-index: 2;
895
+ }
896
+
897
+ table:where([data-sticky^="left"]) :is(td:first-child, th:first-child) {
898
+ position: sticky;
899
+ left: 0;
900
+ z-index: 2;
901
+ }