@wpmoo/ui 1.0.0-rc.9 → 1.1.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/ASSET_LICENSE.md +1 -1
  2. package/LICENSE +28 -0
  3. package/README.md +38 -3
  4. package/certification.json +3 -1
  5. package/dist/assets/css/moo-ui.css +436 -25
  6. package/dist/assets/css/moo-ui.min.css +10 -31
  7. package/dist/assets/css/moo.css +428 -24
  8. package/dist/assets/css/moo.min.css +10 -32
  9. package/dist/js/chart.js +23 -21
  10. package/dist/js/chart.min.js +5 -5
  11. package/dist/js/combobox.js +18 -65
  12. package/dist/js/context-menu.js +16 -68
  13. package/dist/js/datatable.js +38 -21
  14. package/dist/js/datepicker.js +5 -4
  15. package/dist/js/datepicker.min.js +4 -3
  16. package/dist/js/moo-ui.js +350 -15402
  17. package/dist/js/moo-ui.min.js +3 -23
  18. package/dist/js/sheet.js +46 -0
  19. package/dist/js/sidebar.js +3 -2
  20. package/dist/js/slider.js +12 -47
  21. package/dist/js/state.js +15 -41
  22. package/dist/js/table-of-contents.js +195 -0
  23. package/dist/release-manifest.json +4 -4
  24. package/package.json +5 -1
  25. package/scss/_components.scss +3 -2
  26. package/scss/_config.scss +15 -21
  27. package/scss/_settings.scss +0 -3
  28. package/scss/components/_accordion.scss +1 -12
  29. package/scss/components/_alert.scss +1 -12
  30. package/scss/components/_avatar.scss +1 -16
  31. package/scss/components/_badge.scss +1 -0
  32. package/scss/components/_breadcrumb.scss +1 -12
  33. package/scss/components/_button.scss +1 -29
  34. package/scss/components/_button_group.scss +1 -25
  35. package/scss/components/_card.scss +1 -29
  36. package/scss/components/_checkbox.scss +1 -38
  37. package/scss/components/_close_button.scss +1 -9
  38. package/scss/components/_collapsible.scss +1 -0
  39. package/scss/components/_combobox.scss +1 -6
  40. package/scss/components/_context-menu.scss +1 -11
  41. package/scss/components/_datatable.scss +46 -85
  42. package/scss/components/_datepicker.scss +1 -0
  43. package/scss/components/_dialog.scss +1 -14
  44. package/scss/components/_dropdown.scss +5 -51
  45. package/scss/components/_field.scss +1 -40
  46. package/scss/components/_input.scss +1 -5
  47. package/scss/components/_input_group.scss +1 -51
  48. package/scss/components/_kbd.scss +1 -0
  49. package/scss/components/_menubar.scss +1 -0
  50. package/scss/components/_navigation.scss +76 -6
  51. package/scss/components/_pagination.scss +1 -13
  52. package/scss/components/_popover.scss +1 -22
  53. package/scss/components/_progress.scss +1 -3
  54. package/scss/components/_radio_group.scss +105 -6
  55. package/scss/components/_search_trigger.scss +1 -2
  56. package/scss/components/_select.scss +1 -0
  57. package/scss/components/_separator.scss +1 -6
  58. package/scss/components/_sheet.scss +1 -17
  59. package/scss/components/_sidebar.scss +1 -2
  60. package/scss/components/_skeleton.scss +1 -8
  61. package/scss/components/_slider.scss +1 -2
  62. package/scss/components/_spinner.scss +1 -7
  63. package/scss/components/_switch.scss +1 -4
  64. package/scss/components/_table.scss +1 -2
  65. package/scss/components/_tabs.scss +1 -24
  66. package/scss/components/_textarea.scss +1 -0
  67. package/scss/components/_toast.scss +1 -4
  68. package/scss/components/_toc.scss +48 -0
  69. package/scss/components/_toggle_group.scss +1 -3
  70. package/scss/components/_tooltip.scss +1 -20
  71. package/scss/components/sidebar/_base.scss +0 -7
  72. package/scss/components/sidebar/_collapsed.scss +0 -6
  73. package/scss/components/sidebar/_identity.scss +0 -1
  74. package/scss/components/sidebar/_menus.scss +0 -17
  75. package/scss/foundations/_backdrop.scss +0 -26
  76. package/scss/foundations/_focus.scss +0 -56
  77. package/scss/foundations/_scope.scss +15 -0
  78. package/scss/layouts/_app.scss +0 -6
  79. package/scss/layouts/_page_grid.scss +0 -3
  80. package/scss/layouts/app/sidebar/_base.scss +0 -37
  81. package/scss/layouts/app/sidebar/_default.scss +0 -6
  82. package/scss/layouts/app/sidebar/_floating.scss +0 -11
  83. package/scss/layouts/app/sidebar/_inset.scss +0 -2
  84. package/scss/mixins/_banner.scss +9 -3
  85. package/scss/moo-core.scss +3 -6
  86. package/scss/moo-ui.scss +9 -5
  87. package/scss/settings/_bootstrap_overrides.scss +0 -8
  88. package/scss/settings/_component_variables.scss +4 -266
  89. package/scss/settings/_forms.scss +0 -37
  90. package/scss/settings/_palette.scss +0 -42
  91. package/scss/themes/_root.scss +3 -0
  92. package/scss/themes/_standalone.scss +0 -2
  93. package/scss/themes/_theme.scss +3 -2
  94. package/scss/utilities/_background_color.scss +18 -0
  95. package/scss/utilities/_border.scss +4 -0
  96. package/scss/utilities/_scroll_smooth.scss +9 -0
@@ -1,8 +1,16 @@
1
1
  /*!
2
- * Bootstrap v5.3.3 (https://getbootstrap.com/)
3
- * Copyright 2011-2024 The Bootstrap Authors
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
- */
2
+ * Moo UI v1.1.0-dev.1 (https://wpmoo.org/)
3
+ * Copyright 2026 WPMoo Authors
4
+ * Licensed under MIT (https://github.com/wpmoo-org/ui/blob/main/LICENSE)
5
+ *
6
+ * Bootstrap v5.3.3 (https://getbootstrap.com/)
7
+ * Copyright 2011-2024 The Bootstrap Authors
8
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
9
+ */
10
+
11
+ /* Bootstrap configuration */
12
+
13
+ /* Bootstrap layout and standalone-only components */
6
14
  :root,
7
15
  [data-bs-theme="light"] {
8
16
  --bs-blue: #0d6efd;
@@ -180,6 +188,7 @@
180
188
  --bs-form-invalid-border-color: #ea868f;
181
189
  }
182
190
 
191
+ /* Theme tokens */
183
192
  .moo-ui[data-bs-theme] {
184
193
  --bs-blue: #0d6efd;
185
194
  --bs-indigo: #6610f2;
@@ -261,7 +270,13 @@
261
270
  --moo-chart-4: #3f3f46;
262
271
  --moo-chart-5: #27272a;
263
272
  --moo-heading-font-family: var(--bs-body-font-family);
273
+ --moo-small-font-size: 0.75rem;
274
+ --moo-paragraph-margin-top: 0;
275
+ --moo-paragraph-margin-bottom: 1rem;
264
276
  font-family: var(--bs-body-font-family);
277
+ font-size: var(--bs-body-font-size);
278
+ font-weight: var(--bs-body-font-weight);
279
+ line-height: var(--bs-body-line-height);
265
280
  }
266
281
 
267
282
  .moo-ui[data-bs-theme="light"] {
@@ -442,6 +457,7 @@ body > .moo-ui[data-bs-theme]:not([data-moo-overlay-host]) {
442
457
  min-block-size: 100dvh;
443
458
  }
444
459
 
460
+ /* Base styles and typography */
445
461
  *,
446
462
  *::before,
447
463
  *::after {
@@ -1010,6 +1026,7 @@ progress {
1010
1026
  color: var(--bs-secondary-color);
1011
1027
  }
1012
1028
 
1029
+ /* Containers and grid */
1013
1030
  .container,
1014
1031
  .container-fluid,
1015
1032
  .container-xxl,
@@ -4056,6 +4073,7 @@ progress {
4056
4073
  }
4057
4074
  }
4058
4075
 
4076
+ /* Bootstrap helpers */
4059
4077
  .clearfix::after {
4060
4078
  display: block;
4061
4079
  clear: both;
@@ -4368,6 +4386,7 @@ progress {
4368
4386
  opacity: 0.25;
4369
4387
  }
4370
4388
 
4389
+ /* Bootstrap utilities */
4371
4390
  .align-baseline {
4372
4391
  vertical-align: baseline !important;
4373
4392
  }
@@ -6012,7 +6031,7 @@ progress {
6012
6031
 
6013
6032
  .bg-body-secondary {
6014
6033
  --bs-bg-opacity: 1;
6015
- background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;
6034
+ background-color: rgb(from var(--bs-secondary-bg) r g b / var(--bs-bg-opacity)) !important;
6016
6035
  }
6017
6036
 
6018
6037
  .bg-body-tertiary {
@@ -9286,6 +9305,8 @@ progress {
9286
9305
  }
9287
9306
 
9288
9307
  @scope (.moo-ui) to (:where(.moo-ui[data-bs-theme="light"], .moo-ui[data-bs-theme="dark"])) {
9308
+
9309
+ /* Bootstrap Components */
9289
9310
  .table {
9290
9311
  --bs-table-color-type: initial;
9291
9312
  --bs-table-bg-type: initial;
@@ -11950,6 +11971,7 @@ progress {
11950
11971
  border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;
11951
11972
  border-top-color: var(--bs-tooltip-bg);
11952
11973
  }
11974
+
11953
11975
  /* rtl:begin:ignore */
11954
11976
  .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow {
11955
11977
  left: calc(-1 * var(--bs-tooltip-arrow-height));
@@ -11961,6 +11983,7 @@ progress {
11961
11983
  border-width: calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;
11962
11984
  border-right-color: var(--bs-tooltip-bg);
11963
11985
  }
11986
+
11964
11987
  /* rtl:end:ignore */
11965
11988
  .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow {
11966
11989
  top: calc(-1 * var(--bs-tooltip-arrow-height));
@@ -11970,6 +11993,7 @@ progress {
11970
11993
  border-width: 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);
11971
11994
  border-bottom-color: var(--bs-tooltip-bg);
11972
11995
  }
11996
+
11973
11997
  /* rtl:begin:ignore */
11974
11998
  .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow {
11975
11999
  right: calc(-1 * var(--bs-tooltip-arrow-height));
@@ -11981,6 +12005,7 @@ progress {
11981
12005
  border-width: calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);
11982
12006
  border-left-color: var(--bs-tooltip-bg);
11983
12007
  }
12008
+
11984
12009
  /* rtl:end:ignore */
11985
12010
  .tooltip-inner {
11986
12011
  max-width: var(--bs-tooltip-max-width);
@@ -12067,6 +12092,7 @@ progress {
12067
12092
  bottom: var(--bs-popover-border-width);
12068
12093
  border-top-color: var(--bs-popover-bg);
12069
12094
  }
12095
+
12070
12096
  /* rtl:begin:ignore */
12071
12097
  .bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow {
12072
12098
  left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
@@ -12084,6 +12110,7 @@ progress {
12084
12110
  left: var(--bs-popover-border-width);
12085
12111
  border-right-color: var(--bs-popover-bg);
12086
12112
  }
12113
+
12087
12114
  /* rtl:end:ignore */
12088
12115
  .bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow {
12089
12116
  top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
@@ -12109,6 +12136,7 @@ progress {
12109
12136
  content: "";
12110
12137
  border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);
12111
12138
  }
12139
+
12112
12140
  /* rtl:begin:ignore */
12113
12141
  .bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow {
12114
12142
  right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
@@ -12126,6 +12154,7 @@ progress {
12126
12154
  right: var(--bs-popover-border-width);
12127
12155
  border-left-color: var(--bs-popover-bg);
12128
12156
  }
12157
+
12129
12158
  /* rtl:end:ignore */
12130
12159
  .popover-header {
12131
12160
  padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);
@@ -12664,6 +12693,10 @@ progress {
12664
12693
  color: #fff !important;
12665
12694
  background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;
12666
12695
  }
12696
+
12697
+ /* Moo Components */
12698
+
12699
+ /* Keyboard keys */
12667
12700
  kbd {
12668
12701
  display: inline-flex;
12669
12702
  height: 1.25rem;
@@ -12674,6 +12707,8 @@ progress {
12674
12707
  line-height: 1rem;
12675
12708
  font-weight: 500;
12676
12709
  }
12710
+
12711
+ /* Input */
12677
12712
  .form-control {
12678
12713
  min-height: 2rem;
12679
12714
  }
@@ -12699,17 +12734,23 @@ progress {
12699
12734
  .form-select:disabled {
12700
12735
  opacity: var(--moo-disabled-control-opacity);
12701
12736
  }
12737
+
12738
+ /* Textarea */
12702
12739
  textarea.form-control:not(.form-control-sm, .form-control-lg) {
12703
12740
  padding: 0.5rem 0.75rem;
12704
12741
  }
12705
12742
  textarea.form-control:disabled {
12706
12743
  resize: none;
12707
12744
  }
12745
+
12746
+ /* Select */
12708
12747
  .form-select option,
12709
12748
  .form-select optgroup {
12710
12749
  color: var(--bs-body-color);
12711
12750
  background-color: var(--bs-body-bg);
12712
12751
  }
12752
+
12753
+ /* Input Group */
12713
12754
  .input-group:not(:has(> .form-control[type="file"])) {
12714
12755
  border: var(--bs-border-width) solid var(--moo-border);
12715
12756
  border-radius: var(--moo-input-group-border-radius);
@@ -12830,6 +12871,8 @@ progress {
12830
12871
  outline: 0;
12831
12872
  box-shadow: none;
12832
12873
  }
12874
+
12875
+ /* Buttons */
12833
12876
  .btn {
12834
12877
  display: inline-flex;
12835
12878
  align-items: center;
@@ -13004,6 +13047,8 @@ label.btn {
13004
13047
  --bs-btn-hover-color: var(--moo-muted-foreground);
13005
13048
  text-underline-offset: 0.25rem;
13006
13049
  }
13050
+
13051
+ /* Search Trigger */
13007
13052
  .search-trigger {
13008
13053
  width: 10rem;
13009
13054
  max-width: 100%;
@@ -13058,6 +13103,8 @@ label.btn {
13058
13103
  flex-basis: 16rem;
13059
13104
  }
13060
13105
  }
13106
+
13107
+ /* Close Button */
13061
13108
  .btn-close {
13062
13109
  --bs-btn-close-color: var(--moo-foreground);
13063
13110
  --bs-btn-hover-color: var(--bs-btn-close-color);
@@ -13106,6 +13153,8 @@ label.btn {
13106
13153
  pointer-events: none;
13107
13154
  opacity: var(--moo-disabled-control-opacity);
13108
13155
  }
13156
+
13157
+ /* Button Group */
13109
13158
  [dir="rtl"] .btn-group,
13110
13159
  [dir="rtl"] .btn-toolbar {
13111
13160
  direction: ltr;
@@ -13155,6 +13204,8 @@ label.btn {
13155
13204
  min-width: calc(1.875rem + 1rem);
13156
13205
  padding-inline-end: 1.875rem;
13157
13206
  }
13207
+
13208
+ /* Toggle Group */
13158
13209
  .toggle-group > .btn:not(:disabled):not(.disabled):not([aria-disabled="true"]):active {
13159
13210
  transform: none;
13160
13211
  }
@@ -13169,6 +13220,8 @@ label.btn {
13169
13220
  outline: 0;
13170
13221
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
13171
13222
  }
13223
+
13224
+ /* Card */
13172
13225
  .card {
13173
13226
  --bs-card-bg: color-mix(in srgb, var(--bs-secondary-bg) 5%, var(--bs-body-bg));
13174
13227
  --bs-card-color: var(--moo-foreground);
@@ -13264,6 +13317,8 @@ label.btn {
13264
13317
  font-size: 0.875rem;
13265
13318
  color: var(--moo-muted-foreground);
13266
13319
  }
13320
+
13321
+ /* Table */
13267
13322
  .card .table {
13268
13323
  --bs-table-bg: transparent;
13269
13324
  }
@@ -13273,6 +13328,8 @@ label.btn {
13273
13328
  .table-row-actions:has(> [aria-expanded="true"]) {
13274
13329
  z-index: 1000;
13275
13330
  }
13331
+
13332
+ /* Dropdown */
13276
13333
  .dropdown-menu {
13277
13334
  --bs-dropdown-bg: var(--moo-surface);
13278
13335
  --bs-dropdown-border-color: var(--moo-border);
@@ -13297,6 +13354,9 @@ label.btn {
13297
13354
  color: var(--bs-dropdown-link-color);
13298
13355
  background-color: transparent;
13299
13356
  }
13357
+ .dropdown-menu:has(.dropdown-item:hover) .dropdown-item.active:not(:hover) {
13358
+ background-color: transparent;
13359
+ }
13300
13360
  .dropdown-item > [data-icon] {
13301
13361
  width: 1rem;
13302
13362
  height: 1rem;
@@ -13436,6 +13496,8 @@ label.btn {
13436
13496
  inset-block-end: var(--moo-sidebar-dropdown-block-end) !important;
13437
13497
  }
13438
13498
  }
13499
+
13500
+ /* Menubar */
13439
13501
  .menubar {
13440
13502
  gap: 0.125rem;
13441
13503
  padding: 0.1875rem;
@@ -13449,6 +13511,8 @@ label.btn {
13449
13511
  color: var(--bs-btn-color);
13450
13512
  font-weight: 500;
13451
13513
  }
13514
+
13515
+ /* Avatar */
13452
13516
  .avatar {
13453
13517
  position: relative;
13454
13518
  display: inline-flex;
@@ -13571,10 +13635,19 @@ label.btn {
13571
13635
  content: "+";
13572
13636
  margin-inline-end: -0.1rem;
13573
13637
  }
13638
+
13639
+ /* Navigation */
13574
13640
  .nav {
13575
13641
  --bs-nav-link-color: var(--moo-foreground);
13576
13642
  --bs-nav-link-hover-color: var(--moo-foreground);
13577
13643
  --bs-nav-link-disabled-color: var(--moo-disabled-foreground);
13644
+ --bs-nav-link-description-color: color-mix(in srgb, var(--moo-muted-foreground) 95%, var(--moo-foreground));
13645
+ }
13646
+ .nav-link-description {
13647
+ color: var(--bs-nav-link-description-color);
13648
+ }
13649
+ .nav-link.disabled .nav-link-description {
13650
+ color: var(--bs-nav-link-disabled-color);
13578
13651
  }
13579
13652
  .nav-pills {
13580
13653
  --bs-nav-pills-border-radius: var(--bs-border-radius);
@@ -13600,6 +13673,105 @@ label.btn {
13600
13673
  height: 1rem;
13601
13674
  flex: 0 0 auto;
13602
13675
  }
13676
+ .nav-link-icon {
13677
+ display: inline-flex;
13678
+ align-items: center;
13679
+ flex: 0 0 auto;
13680
+ }
13681
+ .nav-steps {
13682
+ --bs-nav-step-icon-size: 2rem;
13683
+ --bs-nav-step-gap: 0.25rem;
13684
+ gap: var(--bs-nav-step-gap);
13685
+ }
13686
+ .nav-steps .nav-item {
13687
+ position: relative;
13688
+ }
13689
+ .nav-steps .nav-item:not(:only-child)::before {
13690
+ position: absolute;
13691
+ z-index: 1;
13692
+ inset-inline-start: calc(var(--bs-nav-link-padding-x) + var(--bs-nav-step-icon-size) / 2);
13693
+ inset-block: calc(var(--bs-nav-step-gap) / -2);
13694
+ border-inline-start: var(--bs-border-width) solid var(--bs-border-color);
13695
+ content: "";
13696
+ pointer-events: none;
13697
+ }
13698
+ .nav-steps .nav-item:first-child::before {
13699
+ inset-block-start: 50%;
13700
+ }
13701
+ .nav-steps .nav-item:last-child::before {
13702
+ inset-block-end: 50%;
13703
+ }
13704
+ .nav-steps .nav-link-icon {
13705
+ position: relative;
13706
+ z-index: 2;
13707
+ display: inline-flex;
13708
+ align-items: center;
13709
+ justify-content: center;
13710
+ flex: 0 0 var(--bs-nav-step-icon-size);
13711
+ inline-size: var(--bs-nav-step-icon-size);
13712
+ block-size: var(--bs-nav-step-icon-size);
13713
+ color: var(--moo-foreground);
13714
+ background-color: var(--moo-muted-surface);
13715
+ border: var(--bs-border-width) solid var(--bs-border-color);
13716
+ border-radius: var(--bs-border-radius);
13717
+ }
13718
+ .nav-steps .nav-link.disabled .nav-link-icon {
13719
+ color: var(--moo-disabled-foreground);
13720
+ }
13721
+ .nav-steps .nav-item[data-nav-completed="true"] .nav-link-icon {
13722
+ color: var(--moo-primary-foreground);
13723
+ background-color: var(--moo-primary);
13724
+ border-color: var(--moo-primary);
13725
+ }
13726
+
13727
+ /* Table of contents */
13728
+ [data-toc] > .fw-semibold {
13729
+ padding-inline-start: calc(0.75rem - var(--bs-border-width));
13730
+ }
13731
+ [data-toc]:has(> .nav) {
13732
+ position: relative;
13733
+ border-inline-start: calc(var(--bs-border-width) * 0.5) solid var(--bs-border-color);
13734
+ }
13735
+ [data-toc][data-toc-marker]::after {
13736
+ content: "";
13737
+ position: absolute;
13738
+ inset-block-start: 0;
13739
+ inset-inline-start: calc(var(--bs-border-width) * -1);
13740
+ block-size: var(--moo-toc-marker-height);
13741
+ border-inline-start: calc(var(--bs-border-width) * 3) solid var(--moo-primary);
13742
+ transform: translateY(var(--moo-toc-marker-offset));
13743
+ pointer-events: none;
13744
+ transition: all 0.2s ease-in-out;
13745
+ }
13746
+ @media (prefers-reduced-motion: reduce) {
13747
+ [data-toc][data-toc-marker]::after {
13748
+ transition: none;
13749
+ }
13750
+ }
13751
+ [data-toc] > .nav .nav-link {
13752
+ display: flex;
13753
+ position: relative;
13754
+ margin-inline-start: calc(var(--bs-border-width) * -1);
13755
+ color: var(--moo-muted-foreground);
13756
+ }
13757
+ [data-toc] > .nav .nav-link::before {
13758
+ content: "";
13759
+ position: absolute;
13760
+ inset-block: var(--bs-nav-link-padding-y);
13761
+ inset-inline-start: 0;
13762
+ border-inline-start: calc(var(--bs-border-width) * 3) solid transparent;
13763
+ }
13764
+ [data-toc] > .nav .nav-link.active {
13765
+ color: var(--moo-foreground);
13766
+ }
13767
+ [data-toc] > .nav .nav-link.active::before {
13768
+ border-inline-start-color: var(--moo-primary);
13769
+ }
13770
+ [data-toc][data-toc-marker] > .nav .nav-link.active::before {
13771
+ border-inline-start-color: transparent;
13772
+ }
13773
+
13774
+ /* Skeleton */
13603
13775
  .skeleton {
13604
13776
  color: var(--moo-border);
13605
13777
  border-radius: var(--bs-border-radius);
@@ -13608,6 +13780,8 @@ label.btn {
13608
13780
  .skeleton > .placeholder {
13609
13781
  display: block;
13610
13782
  }
13783
+
13784
+ /* Sidebar */
13611
13785
  .sidebar-inner {
13612
13786
  position: sticky;
13613
13787
  top: 0;
@@ -14017,6 +14191,8 @@ label.btn {
14017
14191
  display: none;
14018
14192
  }
14019
14193
  }
14194
+
14195
+ /* Alert */
14020
14196
  .alert {
14021
14197
  --bs-alert-border-color: var(--moo-border);
14022
14198
  --bs-alert-color: var(--moo-foreground);
@@ -14083,6 +14259,8 @@ label.btn {
14083
14259
  .alert-action {
14084
14260
  flex: 0 0 auto;
14085
14261
  }
14262
+
14263
+ /* Breadcrumb */
14086
14264
  .breadcrumb {
14087
14265
  --bs-breadcrumb-item-active-color: var(--moo-foreground);
14088
14266
  --bs-breadcrumb-item-padding-x: 0.375rem;
@@ -14182,6 +14360,8 @@ label.btn {
14182
14360
  width: 0.875rem;
14183
14361
  height: 0.875rem;
14184
14362
  }
14363
+
14364
+ /* Pagination */
14185
14365
  .page-link {
14186
14366
  display: inline-flex;
14187
14367
  align-items: center;
@@ -14227,6 +14407,8 @@ label.btn {
14227
14407
  .page-item.disabled {
14228
14408
  opacity: var(--moo-disabled-control-opacity);
14229
14409
  }
14410
+
14411
+ /* Badge */
14230
14412
  .badge {
14231
14413
  display: inline-flex;
14232
14414
  height: 1.25rem;
@@ -14255,10 +14437,14 @@ label.btn {
14255
14437
  .badge[class~="text-body-secondary"] {
14256
14438
  color: var(--moo-foreground) !important;
14257
14439
  }
14440
+
14441
+ /* Progress */
14258
14442
  .progress {
14259
14443
  --bs-progress-bar-color: var(--moo-primary-foreground);
14260
14444
  --bs-progress-bar-bg: var(--moo-primary);
14261
14445
  }
14446
+
14447
+ /* Slider */
14262
14448
  .slider {
14263
14449
  display: grid;
14264
14450
  gap: 0.5rem;
@@ -14437,6 +14623,8 @@ label.btn {
14437
14623
  writing-mode: vertical-lr;
14438
14624
  direction: rtl;
14439
14625
  }
14626
+
14627
+ /* Separator */
14440
14628
  hr {
14441
14629
  opacity: 1;
14442
14630
  border-top: var(--bs-border-width) solid var(--moo-border);
@@ -14445,6 +14633,8 @@ label.btn {
14445
14633
  opacity: 1;
14446
14634
  background-color: var(--moo-border);
14447
14635
  }
14636
+
14637
+ /* Checkbox */
14448
14638
  .form-check-input {
14449
14639
  margin-top: 0.125rem;
14450
14640
  }
@@ -14508,9 +14698,100 @@ label.btn {
14508
14698
  border-color: var(--moo-primary);
14509
14699
  background-color: var(--moo-primary);
14510
14700
  }
14701
+
14702
+ /* Radio Group */
14511
14703
  .radio-group legend.form-label {
14512
14704
  font-size: inherit;
14513
14705
  }
14706
+ .form-check-card {
14707
+ position: relative;
14708
+ padding: 0;
14709
+ margin-bottom: 0;
14710
+ }
14711
+ .form-check-card + .form-check-card {
14712
+ margin-block-start: 0.5rem;
14713
+ }
14714
+ .form-check-card > .form-check-input:not(.visually-hidden) {
14715
+ position: absolute;
14716
+ inset-block-start: 0.75rem;
14717
+ inset-inline-end: 0.75rem;
14718
+ float: none;
14719
+ margin: 0;
14720
+ }
14721
+ .form-check-card > .form-check-label {
14722
+ display: flex;
14723
+ align-items: center;
14724
+ gap: 0.75rem;
14725
+ padding: 0.75rem;
14726
+ padding-inline-end: 2.5rem;
14727
+ border: var(--bs-border-width) solid var(--moo-border);
14728
+ border-radius: var(--bs-border-radius);
14729
+ color: var(--moo-foreground);
14730
+ cursor: pointer;
14731
+ }
14732
+ .form-check-card.form-check-card--no-control > .form-check-label {
14733
+ padding-inline-end: 0.75rem;
14734
+ }
14735
+ .form-check-card > .form-check-input:not(:disabled) ~ .form-check-label:hover,
14736
+ .form-check-card > .form-check-input:checked ~ .form-check-label {
14737
+ background-color: var(--moo-muted-surface);
14738
+ }
14739
+ .form-check-card > .form-check-input:checked ~ .form-check-label {
14740
+ border-color: var(--moo-foreground);
14741
+ }
14742
+ .form-check-card > .form-check-input:checked ~ .form-check-label .form-check-card-media {
14743
+ border-color: var(--moo-primary);
14744
+ background-color: var(--moo-primary);
14745
+ color: var(--moo-primary-foreground);
14746
+ }
14747
+ .form-check-card > .form-check-input:focus-visible ~ .form-check-label {
14748
+ border-color: var(--moo-ring);
14749
+ box-shadow: 0 0 0 var(--bs-focus-ring-width) color-mix(in srgb, var(--moo-ring) 50%, transparent);
14750
+ }
14751
+ .form-check-card > .form-check-input.is-invalid ~ .form-check-label {
14752
+ border-color: var(--bs-form-invalid-border-color);
14753
+ }
14754
+ .form-check-card > .form-check-input.is-invalid:focus-visible ~ .form-check-label {
14755
+ box-shadow: 0 0 0 var(--bs-focus-ring-width) var(--moo-form-invalid-ring-color);
14756
+ }
14757
+ .form-check-card-content {
14758
+ display: flex;
14759
+ flex-direction: column;
14760
+ gap: 0.25rem;
14761
+ min-width: 0;
14762
+ line-height: 1.25;
14763
+ overflow-wrap: anywhere;
14764
+ }
14765
+ .form-check-card-content > .form-text {
14766
+ margin: 0;
14767
+ font-size: 0.76562rem;
14768
+ line-height: inherit;
14769
+ color: color-mix(in srgb, var(--moo-muted-foreground) 95%, var(--moo-foreground));
14770
+ }
14771
+ .form-check-card-title {
14772
+ font-weight: 500;
14773
+ }
14774
+ .form-check-card-media {
14775
+ display: grid;
14776
+ place-items: center;
14777
+ flex: 0 0 auto;
14778
+ inline-size: 2.30078rem;
14779
+ aspect-ratio: 1;
14780
+ border: var(--bs-border-width) solid var(--moo-border);
14781
+ border-radius: var(--bs-border-radius-sm);
14782
+ background-color: var(--moo-muted-surface);
14783
+ color: var(--moo-foreground);
14784
+ }
14785
+ .form-check-card-media > span {
14786
+ font-size: 0.76562rem;
14787
+ font-weight: 600;
14788
+ }
14789
+ .form-check-card-media > [data-icon] {
14790
+ width: 0.875rem;
14791
+ height: 0.875rem;
14792
+ }
14793
+
14794
+ /* Switch */
14514
14795
  .form-switch .form-check-input {
14515
14796
  height: 1.15rem;
14516
14797
  }
@@ -14534,6 +14815,8 @@ label.btn {
14534
14815
  :scope[data-bs-theme="dark"] .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
14535
14816
  --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e");
14536
14817
  }
14818
+
14819
+ /* Spinner */
14537
14820
  .spinner [data-icon] {
14538
14821
  width: 1rem;
14539
14822
  height: 1rem;
@@ -14543,6 +14826,8 @@ label.btn {
14543
14826
  width: 0.75rem;
14544
14827
  height: 0.75rem;
14545
14828
  }
14829
+
14830
+ /* Accordion */
14546
14831
  .accordion-button::after {
14547
14832
  content: none;
14548
14833
  }
@@ -14587,6 +14872,8 @@ label.btn {
14587
14872
  .card .accordion {
14588
14873
  --bs-accordion-bg: transparent;
14589
14874
  }
14875
+
14876
+ /* Tabs */
14590
14877
  .tabs-list {
14591
14878
  display: inline-flex;
14592
14879
  gap: 0.125rem;
@@ -14690,6 +14977,8 @@ label.btn {
14690
14977
  pointer-events: auto;
14691
14978
  transition-delay: 0s;
14692
14979
  }
14980
+
14981
+ /* Collapsible */
14693
14982
  .collapsible {
14694
14983
  display: flex;
14695
14984
  flex-direction: column;
@@ -14727,6 +15016,8 @@ label.btn {
14727
15016
  color: var(--moo-muted-foreground);
14728
15017
  width: 100%;
14729
15018
  }
15019
+
15020
+ /* Tooltip */
14730
15021
  .tooltip {
14731
15022
  --bs-tooltip-max-width: 20rem;
14732
15023
  --bs-tooltip-padding-x: 0.75rem;
@@ -14781,6 +15072,8 @@ label.btn {
14781
15072
  .tooltip-inner kbd {
14782
15073
  margin-inline-start: 0.25rem;
14783
15074
  }
15075
+
15076
+ /* Popover */
14784
15077
  .popover {
14785
15078
  --bs-popover-border-radius: var(--bs-border-radius-lg);
14786
15079
  --bs-popover-border-color: var(--moo-border);
@@ -14804,6 +15097,8 @@ label.btn {
14804
15097
  .popover .popover-arrow {
14805
15098
  display: none;
14806
15099
  }
15100
+
15101
+ /* Dialog */
14807
15102
  .modal {
14808
15103
  --bs-modal-border-radius: var(--bs-border-radius-xl);
14809
15104
  --bs-modal-border-color: var(--moo-border);
@@ -14858,6 +15153,8 @@ label.btn {
14858
15153
  .modal-footer {
14859
15154
  padding: 1rem;
14860
15155
  }
15156
+
15157
+ /* Sheet */
14861
15158
  .offcanvas.sheet {
14862
15159
  --bs-offcanvas-width: 24rem;
14863
15160
  --bs-offcanvas-border-color: var(--moo-border);
@@ -14871,6 +15168,8 @@ label.btn {
14871
15168
  font-size: 1rem;
14872
15169
  font-weight: 500;
14873
15170
  }
15171
+
15172
+ /* Toast */
14874
15173
  .toast {
14875
15174
  --bs-toast-border-radius: var(--bs-border-radius-lg);
14876
15175
  --bs-toast-border-color: var(--moo-border);
@@ -14962,6 +15261,8 @@ label.btn {
14962
15261
  transition: none;
14963
15262
  }
14964
15263
  }
15264
+
15265
+ /* Field */
14965
15266
  .field {
14966
15267
  display: flex;
14967
15268
  flex-direction: column;
@@ -15037,6 +15338,8 @@ label.btn {
15037
15338
  .field-fieldset + hr {
15038
15339
  opacity: 0.1;
15039
15340
  }
15341
+
15342
+ /* Date Picker */
15040
15343
  .moo-datepicker {
15041
15344
  --moo-datepicker-width: 17.5rem;
15042
15345
  --moo-datepicker-popover-offset: 0.375rem;
@@ -15236,6 +15539,8 @@ label.btn {
15236
15539
  .moo-calendar__preset {
15237
15540
  flex: 0 0 auto;
15238
15541
  }
15542
+
15543
+ /* Combobox */
15239
15544
  .combobox {
15240
15545
  --moo-combobox-width: 12.5rem;
15241
15546
  --moo-combobox-multiple-width: 20rem;
@@ -15451,6 +15756,8 @@ label.btn {
15451
15756
  color: var(--bs-secondary-color);
15452
15757
  text-align: center;
15453
15758
  }
15759
+
15760
+ /* Context Menu */
15454
15761
  .context-menu {
15455
15762
  position: relative;
15456
15763
  }
@@ -15465,6 +15772,8 @@ label.btn {
15465
15772
  ul.context-menu-menu:focus-visible {
15466
15773
  outline: 0;
15467
15774
  }
15775
+
15776
+ /* Data Table */
15468
15777
  .datatable {
15469
15778
  --moo-datatable-min-width: 48rem;
15470
15779
  --moo-datatable-actions-cell-bg: var(--bs-body-bg);
@@ -15486,15 +15795,88 @@ label.btn {
15486
15795
  table-layout: fixed;
15487
15796
  }
15488
15797
  .datatable--responsive-scroll .datatable-table,
15489
- .datatable--responsive-toggle .datatable-table {
15798
+ .datatable--responsive-toggle .datatable-table,
15799
+ .datatable--responsive-auto .datatable-table {
15490
15800
  min-width: var(--moo-datatable-min-width);
15491
15801
  }
15492
- .datatable--responsive-toggle[data-datatable-view="table"] .datatable-card-frame {
15802
+ .datatable--responsive-toggle[data-datatable-view="table"] .datatable-card-frame,
15803
+ .datatable--responsive-auto[data-datatable-view="table"] .datatable-card-frame {
15804
+ display: none;
15805
+ }
15806
+ .datatable--responsive-toggle[data-datatable-view="cards"] .datatable-frame,
15807
+ .datatable--responsive-auto[data-datatable-view="cards"] .datatable-frame {
15493
15808
  display: none;
15494
15809
  }
15495
- .datatable--responsive-toggle[data-datatable-view="cards"] .datatable-frame {
15810
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="sm"] {
15811
+ --moo-datatable-responsive-breakpoint: 576px;
15812
+ }
15813
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="sm"][data-datatable-view="auto"] .datatable-card-frame {
15496
15814
  display: none;
15497
15815
  }
15816
+ @media (max-width: 575.98px) {
15817
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="sm"][data-datatable-view="auto"] .datatable-frame {
15818
+ display: none;
15819
+ }
15820
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="sm"][data-datatable-view="auto"] .datatable-card-frame {
15821
+ display: block;
15822
+ }
15823
+ }
15824
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="md"] {
15825
+ --moo-datatable-responsive-breakpoint: 768px;
15826
+ }
15827
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="md"][data-datatable-view="auto"] .datatable-card-frame {
15828
+ display: none;
15829
+ }
15830
+ @media (max-width: 767.98px) {
15831
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="md"][data-datatable-view="auto"] .datatable-frame {
15832
+ display: none;
15833
+ }
15834
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="md"][data-datatable-view="auto"] .datatable-card-frame {
15835
+ display: block;
15836
+ }
15837
+ }
15838
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="lg"] {
15839
+ --moo-datatable-responsive-breakpoint: 992px;
15840
+ }
15841
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="lg"][data-datatable-view="auto"] .datatable-card-frame {
15842
+ display: none;
15843
+ }
15844
+ @media (max-width: 991.98px) {
15845
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="lg"][data-datatable-view="auto"] .datatable-frame {
15846
+ display: none;
15847
+ }
15848
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="lg"][data-datatable-view="auto"] .datatable-card-frame {
15849
+ display: block;
15850
+ }
15851
+ }
15852
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xl"] {
15853
+ --moo-datatable-responsive-breakpoint: 1200px;
15854
+ }
15855
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xl"][data-datatable-view="auto"] .datatable-card-frame {
15856
+ display: none;
15857
+ }
15858
+ @media (max-width: 1199.98px) {
15859
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xl"][data-datatable-view="auto"] .datatable-frame {
15860
+ display: none;
15861
+ }
15862
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xl"][data-datatable-view="auto"] .datatable-card-frame {
15863
+ display: block;
15864
+ }
15865
+ }
15866
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xxl"] {
15867
+ --moo-datatable-responsive-breakpoint: 1400px;
15868
+ }
15869
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xxl"][data-datatable-view="auto"] .datatable-card-frame {
15870
+ display: none;
15871
+ }
15872
+ @media (max-width: 1399.98px) {
15873
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xxl"][data-datatable-view="auto"] .datatable-frame {
15874
+ display: none;
15875
+ }
15876
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xxl"][data-datatable-view="auto"] .datatable-card-frame {
15877
+ display: block;
15878
+ }
15879
+ }
15498
15880
  .datatable-frame {
15499
15881
  border: var(--bs-border-width) solid var(--bs-border-color);
15500
15882
  border-radius: var(--bs-border-radius);
@@ -15542,6 +15924,16 @@ label.btn {
15542
15924
  .datatable-table > :not(caption) > * > * {
15543
15925
  vertical-align: middle;
15544
15926
  }
15927
+ .datatable-col > .btn-link,
15928
+ .datatable-card-title > .btn-link {
15929
+ max-inline-size: 100%;
15930
+ white-space: normal;
15931
+ overflow-wrap: anywhere;
15932
+ text-align: inherit;
15933
+ }
15934
+ .datatable-table > :not(caption) > * > .datatable-col:nth-child(1 of :not(.datatable-col-hidden)) {
15935
+ padding-inline-start: 1rem;
15936
+ }
15545
15937
  .datatable-toolbar {
15546
15938
  display: flex;
15547
15939
  flex-wrap: wrap;
@@ -15962,7 +16354,10 @@ label.btn {
15962
16354
  align-items: center;
15963
16355
  padding: 0.5rem 0.75rem;
15964
16356
  border-bottom: var(--bs-border-width) solid var(--bs-border-color);
15965
- background-color: var(--bs-tertiary-bg);
16357
+ background-color: color-mix(in srgb, var(--moo-surface) 50%, var(--moo-muted-surface));
16358
+ }
16359
+ .datatable-card-header:not(:has(> .datatable-card-select)) {
16360
+ grid-template-columns: minmax(0, 1fr) auto;
15966
16361
  }
15967
16362
  .datatable-card-select {
15968
16363
  display: inline-flex;
@@ -16327,6 +16722,8 @@ label.btn {
16327
16722
  .datatable--release-review {
16328
16723
  --moo-datatable-min-width: 64rem;
16329
16724
  }
16725
+
16726
+ /* Focus and keyboard navigation */
16330
16727
  .form-label,
16331
16728
  .form-check-label {
16332
16729
  user-select: none;
@@ -16397,6 +16794,13 @@ label.btn {
16397
16794
  .was-validated .input-group.has-validation:not(:has(> :is(.valid-feedback, .invalid-feedback, .valid-tooltip, .invalid-tooltip))) > :is(.form-control, .form-select):invalid {
16398
16795
  box-shadow: none;
16399
16796
  }
16797
+
16798
+ /* Utilities */
16799
+
16800
+ /* Border utilities */
16801
+ .border-dashed {
16802
+ border-style: dashed !important;
16803
+ }
16400
16804
  :where( .scroll-fade, .scroll-fade-y, .scroll-fade-x, .scroll-fade-t, .scroll-fade-b, .scroll-fade-l, .scroll-fade-r, .scroll-fade-s, .scroll-fade-e ) {
16401
16805
  --scroll-fade-size: min(12%, 2.5rem);
16402
16806
  --scroll-fade-reveal: 6rem;
@@ -16565,6 +16969,16 @@ label.btn {
16565
16969
  --moo-scroll-fade-e: var(--moo-scroll-fade-e-size);
16566
16970
  }
16567
16971
  }
16972
+ .scroll-smooth {
16973
+ scroll-behavior: smooth;
16974
+ }
16975
+ @media (prefers-reduced-motion: reduce) {
16976
+ .scroll-smooth {
16977
+ scroll-behavior: auto;
16978
+ }
16979
+ }
16980
+
16981
+ /* Application layout */
16568
16982
  .sidebar {
16569
16983
  --moo-sidebar-width: 16rem;
16570
16984
  --moo-sidebar-width-icon: 3rem;
@@ -16597,9 +17011,6 @@ label.btn {
16597
17011
  background: transparent;
16598
17012
  transition: background 0.15s ease;
16599
17013
  }
16600
- .sidebar-rail:hover::after {
16601
- background: var(--moo-sidebar-border);
16602
- }
16603
17014
  .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar-inner {
16604
17015
  position: relative;
16605
17016
  height: 100%;
@@ -16635,19 +17046,6 @@ label.btn {
16635
17046
  .sidebar-rail {
16636
17047
  display: none;
16637
17048
  }
16638
- .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar {
16639
- position: relative;
16640
- inset: auto;
16641
- flex: 0 0 auto;
16642
- width: 100%;
16643
- height: auto;
16644
- visibility: visible;
16645
- transform: none;
16646
- }
16647
- .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar-inner {
16648
- height: auto;
16649
- max-height: none;
16650
- }
16651
17049
  }
16652
17050
  .sidebar[data-side="left"]:not([data-variant="inset"]) .sidebar-inner {
16653
17051
  border-right: var(--bs-border-width) solid var(--moo-sidebar-border);
@@ -16999,6 +17397,8 @@ label.btn {
16999
17397
  display: none !important;
17000
17398
  }
17001
17399
  }
17400
+
17401
+ /* Form themes */
17002
17402
  :scope[data-bs-theme="light"] .form-select {
17003
17403
  --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
17004
17404
  }
@@ -17011,6 +17411,8 @@ label.btn {
17011
17411
  :scope[data-bs-theme="dark"] .form-switch .form-check-input:not(:checked):not(:focus) {
17012
17412
  --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e");
17013
17413
  }
17414
+
17415
+ /* Overlay backdrops */
17014
17416
  .modal-backdrop,
17015
17417
  .offcanvas-backdrop {
17016
17418
  --bs-backdrop-opacity: var(--moo-overlay-backdrop-opacity, 1);
@@ -17047,7 +17449,16 @@ label.btn {
17047
17449
  .offcanvas-backdrop.show::before {
17048
17450
  animation: moo-overlay-backdrop-enter var(--moo-overlay-motion-duration, 0.3s) ease-out both;
17049
17451
  }
17452
+
17453
+ /* Typography */
17050
17454
  :where(h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6, .display-1, .display-2, .display-3, .display-4, .display-5, .display-6) {
17051
17455
  font-family: var(--moo-heading-font-family, var(--bs-body-font-family));
17052
17456
  }
17457
+ :is(small, .small) {
17458
+ font-size: var(--moo-small-font-size);
17459
+ }
17460
+ p {
17461
+ margin-top: var(--moo-paragraph-margin-top);
17462
+ margin-bottom: var(--moo-paragraph-margin-bottom);
17463
+ }
17053
17464
  }