@fpkit/acss 0.6.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/README.md +32 -0
  2. package/docs/README.md +325 -0
  3. package/docs/guides/accessibility.md +764 -0
  4. package/docs/guides/architecture.md +705 -0
  5. package/docs/guides/composition.md +688 -0
  6. package/docs/guides/css-variables.md +522 -0
  7. package/docs/guides/storybook.md +828 -0
  8. package/docs/guides/testing.md +817 -0
  9. package/docs/testing/focus-indicator-testing.md +437 -0
  10. package/libs/components/alert/alert.css +1 -1
  11. package/libs/components/alert/alert.css.map +1 -1
  12. package/libs/components/alert/alert.min.css +2 -2
  13. package/libs/components/badge/badge.css +1 -1
  14. package/libs/components/badge/badge.css.map +1 -1
  15. package/libs/components/badge/badge.min.css +2 -2
  16. package/libs/components/breadcrumbs/breadcrumb.css +1 -1
  17. package/libs/components/breadcrumbs/breadcrumb.css.map +1 -1
  18. package/libs/components/breadcrumbs/breadcrumb.min.css +2 -2
  19. package/libs/components/buttons/button.css +1 -1
  20. package/libs/components/buttons/button.css.map +1 -1
  21. package/libs/components/buttons/button.min.css +2 -2
  22. package/libs/components/cards/card.css +1 -1
  23. package/libs/components/cards/card.css.map +1 -1
  24. package/libs/components/cards/card.min.css +2 -2
  25. package/libs/components/details/details.css +1 -1
  26. package/libs/components/details/details.css.map +1 -1
  27. package/libs/components/details/details.min.css +2 -2
  28. package/libs/components/dialog/dialog.css +1 -1
  29. package/libs/components/dialog/dialog.css.map +1 -1
  30. package/libs/components/dialog/dialog.min.css +2 -2
  31. package/libs/components/form/form.css +1 -1
  32. package/libs/components/form/form.css.map +1 -1
  33. package/libs/components/form/form.min.css +2 -2
  34. package/libs/components/images/img.css +1 -1
  35. package/libs/components/images/img.css.map +1 -1
  36. package/libs/components/images/img.min.css +2 -2
  37. package/libs/components/layout/landmarks.css +1 -1
  38. package/libs/components/layout/landmarks.css.map +1 -1
  39. package/libs/components/layout/landmarks.min.css +2 -2
  40. package/libs/components/link/link.css +1 -1
  41. package/libs/components/link/link.css.map +1 -1
  42. package/libs/components/link/link.min.css +2 -2
  43. package/libs/components/list/list.css +1 -1
  44. package/libs/components/list/list.min.css +1 -1
  45. package/libs/components/nav/nav.css +1 -1
  46. package/libs/components/nav/nav.css.map +1 -1
  47. package/libs/components/nav/nav.min.css +2 -2
  48. package/libs/components/progress/progress.css +1 -1
  49. package/libs/components/progress/progress.css.map +1 -1
  50. package/libs/components/progress/progress.min.css +2 -2
  51. package/libs/components/tag/tag.css +1 -1
  52. package/libs/components/tag/tag.css.map +1 -1
  53. package/libs/components/tag/tag.min.css +2 -2
  54. package/libs/index.css +1 -1
  55. package/libs/index.css.map +1 -1
  56. package/package.json +4 -3
  57. package/src/components/README.mdx +1 -1
  58. package/src/components/alert/alert.scss +4 -4
  59. package/src/components/alert/alert.scss.backup +184 -0
  60. package/src/components/alert/alert.stories.tsx +53 -2
  61. package/src/components/badge/badge.scss +2 -2
  62. package/src/components/badge/badge.scss.backup +39 -0
  63. package/src/components/badge/badge.stories.tsx +40 -0
  64. package/src/components/breadcrumbs/breadcrumb.scss +5 -5
  65. package/src/components/breadcrumbs/breadcrumb.scss.backup +35 -0
  66. package/src/components/breadcrumbs/breadcrumb.stories.tsx +17 -1
  67. package/src/components/buttons/button.scss +32 -27
  68. package/src/components/buttons/button.scss.backup +145 -0
  69. package/src/components/buttons/button.stories.tsx +196 -7
  70. package/src/components/cards/card.scss +39 -5
  71. package/src/components/cards/card.scss.backup +67 -0
  72. package/src/components/cards/card.stories.tsx +184 -1
  73. package/src/components/details/details.scss +14 -14
  74. package/src/components/details/details.scss.backup +126 -0
  75. package/src/components/details/details.stories.tsx +41 -1
  76. package/src/components/dialog/dialog.scss +3 -3
  77. package/src/components/dialog/dialog.scss.backup +126 -0
  78. package/src/components/form/form.scss +25 -9
  79. package/src/components/form/form.scss.backup +87 -0
  80. package/src/components/form/form.stories.tsx +272 -1
  81. package/src/components/form/input.stories.tsx +159 -1
  82. package/src/components/form/select.stories.tsx +1 -1
  83. package/src/components/heading/README.mdx +292 -0
  84. package/src/components/icons/icon.stories.tsx +1 -1
  85. package/src/components/images/figure.stories.tsx +41 -1
  86. package/src/components/images/img.scss +8 -8
  87. package/src/components/images/img.scss.backup +59 -0
  88. package/src/components/layout/_header.scss +14 -14
  89. package/src/components/layout/_header.scss.backup +72 -0
  90. package/src/components/layout/landmarks.scss +7 -7
  91. package/src/components/layout/landmarks.scss.backup +51 -0
  92. package/src/components/layout/landmarks.stories.tsx +42 -0
  93. package/src/components/link/link.scss +5 -5
  94. package/src/components/link/link.scss.backup +145 -0
  95. package/src/components/link/link.stories.tsx +38 -2
  96. package/src/components/list/list.scss +1 -1
  97. package/src/components/nav/nav.scss +17 -17
  98. package/src/components/nav/nav.scss.backup +123 -0
  99. package/src/components/nav/nav.stories.tsx +36 -2
  100. package/src/components/progress/progress.scss +7 -7
  101. package/src/components/progress/progress.scss.backup +70 -0
  102. package/src/components/tag/tag.scss +10 -10
  103. package/src/components/tag/tag.scss.backup +130 -0
  104. package/src/components/tag/tag.stories.tsx +23 -2
  105. package/src/components/ui.stories.tsx +53 -19
  106. package/src/docs/accessibility.mdx +484 -0
  107. package/src/docs/composition.mdx +549 -0
  108. package/src/docs/css-variables.mdx +380 -0
  109. package/src/docs/fpkit-developer.mdx +545 -0
  110. package/src/introduction.mdx +356 -0
  111. package/src/styles/alert/alert.css +4 -4
  112. package/src/styles/badge/badge.css +2 -2
  113. package/src/styles/breadcrumbs/breadcrumb.css +5 -5
  114. package/src/styles/buttons/button.css +30 -27
  115. package/src/styles/buttons/button.css.map +1 -1
  116. package/src/styles/cards/card.css +35 -5
  117. package/src/styles/cards/card.css.map +1 -1
  118. package/src/styles/details/details.css +14 -14
  119. package/src/styles/dialog/dialog.css +3 -3
  120. package/src/styles/form/form.css +20 -10
  121. package/src/styles/form/form.css.map +1 -1
  122. package/src/styles/images/img.css +8 -8
  123. package/src/styles/index.css +179 -134
  124. package/src/styles/index.css.map +1 -1
  125. package/src/styles/layout/landmarks.css +21 -21
  126. package/src/styles/link/link.css +5 -5
  127. package/src/styles/list/list.css +1 -1
  128. package/src/styles/nav/nav.css +17 -17
  129. package/src/styles/progress/progress.css +6 -6
  130. package/src/styles/tag/tag.css +4 -4
  131. package/src/styles/utilities/_disabled.scss +5 -4
@@ -444,14 +444,16 @@ h6:has(span:first-of-type) > span {
444
444
  .is-disabled,
445
445
  [aria-disabled=true] {
446
446
  /* CSS Custom Properties for theming */
447
- --disabled-opacity: 0.6;
447
+ --disabled-opacity: 0.91;
448
448
  --disabled-cursor: not-allowed;
449
449
  /* hsl(0 0% 40%) = #666666, provides 3:1 contrast on white (#ffffff) */
450
- --disabled-color: hsl(0 0% 40%);
450
+ --disabled-color: currentColor;
451
+ --disabled-background-color: none;
451
452
  /* Apply disabled styles */
452
453
  opacity: var(--disabled-opacity);
453
454
  cursor: var(--disabled-cursor);
454
455
  color: var(--disabled-color);
456
+ background-color: var(--disabled-background-color);
455
457
  /**
456
458
  * Maintain focus visibility for keyboard navigation (WCAG 2.4.7)
457
459
  * Disabled elements must still be focusable and have visible focus indicators
@@ -480,12 +482,12 @@ h6:has(span:first-of-type) > span {
480
482
  }
481
483
 
482
484
  button {
483
- --btn-xs: 0.6875rem;
484
- --btn-sm: 0.8125rem;
485
- --btn-md: 0.9375rem;
486
- --btn-lg: 1.125rem;
485
+ --btn-size-xs: 0.6875rem;
486
+ --btn-size-sm: 0.8125rem;
487
+ --btn-size-md: 0.9375rem;
488
+ --btn-size-lg: 1.125rem;
487
489
  --btn-pill: 100rem;
488
- --btn-fs: var(--btn-md);
490
+ --btn-fs: var(--btn-size-md);
489
491
  --btn-height: calc(var(--btn-fs) * 2.25);
490
492
  --btn-bg: lightgray;
491
493
  --btn-width: max-content;
@@ -493,16 +495,16 @@ button {
493
495
  font-weight: var(--btn-fw, 500);
494
496
  height: var(--btn-height);
495
497
  place-items: var(--btn-place, center);
496
- padding-inline: var(--btn-px, calc(var(--btn-fs) * 1.5));
497
- padding-block: var(--btn-py, calc(var(--btn-fs) * 0.5));
498
- border: var(--btn-bdr, none);
499
- border-radius: var(--btn-rds, 0.375rem);
498
+ padding-inline: var(--btn-padding-inline, calc(var(--btn-fs) * 1.5));
499
+ padding-block: var(--btn-padding-block, calc(var(--btn-fs) * 0.5));
500
+ border: var(--btn-border, none);
501
+ border-radius: var(--btn-radius, 0.375rem);
500
502
  text-decoration: var(--btn-deco, none);
501
- color: var(--btn-cl, currentColor);
502
- display: var(--btn-dsp, inline-flex);
503
+ color: var(--btn-color, currentColor);
504
+ display: var(--btn-display, inline-flex);
503
505
  gap: var(--btn-gap, 0.2rem);
504
- white-space: var(--btn-wspc, inherit);
505
- margin: var(--btn-spc, 0);
506
+ white-space: var(--btn-whitespace, inherit);
507
+ margin: var(--btn-spacing, 0);
506
508
  transition: var(--btn-transition, var(--tran-all, all 0.3s cubic-bezier(0.4, 0, 0.2, 1)));
507
509
  background-color: var(--btn-bg, var(--btn));
508
510
  outline: none;
@@ -513,7 +515,7 @@ button {
513
515
  }
514
516
  button[type] {
515
517
  background-color: var(--btn-bg, var(--neutral-300));
516
- --btn-bdr: solid var(--btn-sg);
518
+ --btn-border: solid var(--btn-sg);
517
519
  }
518
520
  button[type=submit], button[style*=submit] {
519
521
  --btn-bg: var(--primary-500, royal-blue);
@@ -536,15 +538,18 @@ button:is(:hover, :focus)[aria-disabled=true] {
536
538
  opacity: var(--btn-opacity, 0.5);
537
539
  filter: none;
538
540
  }
541
+ button:focus-visible {
542
+ outline: var(--btn-focus-outline, 2px solid currentColor);
543
+ outline-offset: var(--btn-focus-outline-offset, 1px);
544
+ }
539
545
  button[type=reset] {
540
546
  --btn-bg: transparent;
541
547
  --btn-color: gray;
542
- --btn-bdr: gray thin solid;
548
+ --btn-border: gray thin solid;
543
549
  }
544
550
  button[type=submit] {
545
551
  --btn-bg: var(--primary-700, blue);
546
- --btn-cl: #fff;
547
- --btn-color: rgb(231, 231, 231);
552
+ --btn-color: #fff;
548
553
  --btn-border: none;
549
554
  }
550
555
  button[data-fp-btn~=pill], button[data-btn~=pill], button[data-style~=pill] {
@@ -552,20 +557,20 @@ button[data-fp-btn~=pill], button[data-btn~=pill], button[data-style~=pill] {
552
557
  }
553
558
  button[data-btn~=xs],
554
559
  button .btn-xs {
555
- --btn-fs: var(--btn-xs);
560
+ --btn-fs: var(--btn-size-xs);
556
561
  text-transform: uppercase;
557
562
  }
558
563
  button[data-btn~=sm],
559
564
  button .btn-sm {
560
- --btn-fs: var(--btn-sm);
565
+ --btn-fs: var(--btn-size-sm);
561
566
  }
562
567
  button[data-btn~=md],
563
568
  button .btn-md {
564
- --btn-fs: var(--btn-md);
569
+ --btn-fs: var(--btn-size-md);
565
570
  }
566
571
  button[data-btn~=lg],
567
572
  button .btn-lg {
568
- --btn-fs: var(--btn-lg);
573
+ --btn-fs: var(--btn-size-lg);
569
574
  }
570
575
  button[data-btn~=icon],
571
576
  button .btn-icon {
@@ -582,17 +587,17 @@ button .btn-icon {
582
587
  button[data-btn~=text],
583
588
  button .btn-text {
584
589
  --btn-bg: transparent;
585
- --btn-cl: currentColor;
586
- --btn-bdr: none;
590
+ --btn-color: currentColor;
591
+ --btn-border: none;
587
592
  --btn-height: unset;
588
593
  --btn-width: unset;
589
- --btn-py: 0.75rem;
590
- --btn-px: 0.75rem;
594
+ --btn-padding-block: 0.75rem;
595
+ --btn-padding-inline: 0.75rem;
591
596
  }
592
597
  button[data-btn~=text]:is(:hover, :focus),
593
598
  button .btn-text:is(:hover, :focus) {
594
- background-color: color-mix(in srgb, var(--btn-cl) 10%, transparent);
595
- outline: 0.025rem solid var(--btn-cl);
599
+ background-color: color-mix(in srgb, var(--btn-color) 10%, transparent);
600
+ outline: 0.025rem solid var(--btn-color);
596
601
  outline-offset: 0;
597
602
  filter: none;
598
603
  }
@@ -622,8 +627,8 @@ small > span,
622
627
  --stable: #0f7c3e; /* Dark green: 4.56:1 contrast with white */
623
628
  --production: #1e3a8a; /* Dark blue: 8.59:1 contrast with white */
624
629
  /* Tag component tokens */
625
- --tag-px: 0.7rem; /* Horizontal padding (11.2px at 16px base) */
626
- --tag-py: 0.2rem; /* Vertical padding (3.2px at 16px base) */
630
+ --tag-padding-inline: 0.7rem; /* Horizontal padding (11.2px at 16px base) */
631
+ --tag-padding-block: 0.2rem; /* Vertical padding (3.2px at 16px base) */
627
632
  --tag-fs: 0.8rem; /* Font size (12.8px at 16px base) */
628
633
  --tag-radius: 99rem; /* Fully rounded pill shape */
629
634
  --tag-bg: lightgray; /* Default background color */
@@ -632,8 +637,8 @@ small > span,
632
637
  --tag-display: inline-block; /* Display type */
633
638
  /* Apply CSS custom properties */
634
639
  display: var(--tag-display);
635
- padding-inline: var(--tag-px);
636
- padding-block: var(--tag-py);
640
+ padding-inline: var(--tag-padding-inline);
641
+ padding-block: var(--tag-padding-block);
637
642
  font-size: var(--tag-fs);
638
643
  color: var(--tag-color);
639
644
  background-color: var(--tag-bg);
@@ -779,32 +784,39 @@ img[alt] {
779
784
 
780
785
  figure:has(img[alt]) {
781
786
  --fig-display: flex;
782
- --fig-p: 0.5rem;
787
+ --fig-padding: 0.5rem;
783
788
  --fig-bg: rgba(245, 245, 245, 0.683);
784
- --fig-w: fit-content;
789
+ --fig-width: fit-content;
785
790
  display: var(--fig-display);
786
791
  position: relative;
787
- padding: var(--fig-p);
792
+ padding: var(--fig-padding);
788
793
  background-color: var(--fig-bg);
789
- max-width: var(--fig-w);
794
+ max-width: var(--fig-width);
790
795
  }
791
796
  figure:has(img[alt]) > figcaption {
792
797
  position: absolute;
793
- bottom: var(--fig-bottom, var(--fig-p));
794
- left: var(--fig-left, var(--fig-p));
795
- right: var(--fig-right, var(--fig-p));
796
- padding: var(--caption-p, var(--spc-3));
798
+ bottom: var(--fig-bottom, var(--fig-padding));
799
+ left: var(--fig-left, var(--fig-padding));
800
+ right: var(--fig-right, var(--fig-padding));
801
+ padding: var(--caption-padding, var(--spc-3));
797
802
  background-color: var(--fig-bg);
798
803
  }
799
804
 
800
805
  :root {
801
- --card-p: 2rem;
806
+ --card-padding: 2rem;
802
807
  --card-bg: #fff;
803
- --card-radius: calc(var(--card-p) / 4);
808
+ --card-radius: calc(var(--card-padding) / 4);
804
809
  --card-position: relative;
805
810
  --card-display: flex;
806
811
  --card-direction: column;
807
812
  --card-gap: 1rem;
813
+ --card-header-padding: 1rem 1.5rem;
814
+ --card-header-bg: #f8f9fa;
815
+ --card-header-border-bottom: 1px solid #dee2e6;
816
+ --card-body-padding: 1.5rem;
817
+ --card-footer-padding: 1rem 1.5rem;
818
+ --card-footer-bg: #f8f9fa;
819
+ --card-footer-border-top: 1px solid #dee2e6;
808
820
  }
809
821
 
810
822
  [data-card],
@@ -835,15 +847,38 @@ figure:has(img[alt]) > figcaption {
835
847
  }
836
848
  [data-card] > *:not(img),
837
849
  [data-component~=card] > *:not(img) {
838
- padding-inline: var(--card-p);
850
+ padding-inline: var(--card-padding);
839
851
  }
840
852
  [data-card] > *:last-child:not(img),
841
853
  [data-component~=card] > *:last-child:not(img) {
842
- padding-block-end: var(--card-p);
854
+ padding-block-end: var(--card-padding);
843
855
  }
844
856
  [data-card] > *:first-child:not(img),
845
857
  [data-component~=card] > *:first-child:not(img) {
846
- padding-block-start: calc(var(--card-p) - 0.5rem);
858
+ padding-block-start: calc(var(--card-padding) - 0.5rem);
859
+ }
860
+ [data-card] > header,
861
+ [data-card] > [data-card-header],
862
+ [data-component~=card] > header,
863
+ [data-component~=card] > [data-card-header] {
864
+ padding: var(--card-header-padding);
865
+ background-color: var(--card-header-bg);
866
+ border-bottom: var(--card-header-border-bottom);
867
+ border-radius: var(--card-radius) var(--card-radius) 0 0;
868
+ }
869
+ [data-card] > [data-card-body],
870
+ [data-component~=card] > [data-card-body] {
871
+ padding: var(--card-body-padding);
872
+ flex: 1;
873
+ }
874
+ [data-card] > footer,
875
+ [data-card] > [data-card-footer],
876
+ [data-component~=card] > footer,
877
+ [data-component~=card] > [data-card-footer] {
878
+ padding: var(--card-footer-padding);
879
+ background-color: var(--card-footer-bg);
880
+ border-top: var(--card-footer-border-top);
881
+ border-radius: 0 0 var(--card-radius) var(--card-radius);
847
882
  }
848
883
 
849
884
  [data-card=interactive] {
@@ -865,8 +900,8 @@ figure:has(img[alt]) > figcaption {
865
900
  progress {
866
901
  /* Revert all styles */
867
902
  all: revert;
868
- --progress-w: 100%;
869
- --progress-h: 1rem;
903
+ --progress-width: 100%;
904
+ --progress-height: 1rem;
870
905
  --progress-bg: #cccccc;
871
906
  --progress-color: rgb(71, 71, 245);
872
907
  --progress-accent-color: var(--progress-color);
@@ -876,8 +911,8 @@ progress {
876
911
  /* If the progress element is busy, remove the revert styles */
877
912
  }
878
913
  progress[value] {
879
- width: var(--progress-w);
880
- height: var(--progress-h);
914
+ width: var(--progress-width);
915
+ height: var(--progress-height);
881
916
  background-color: var(--progress-bg);
882
917
  accent-color: var(--progress-accent-color);
883
918
  /* Styling for the remaining part of the& bar */
@@ -898,8 +933,8 @@ progress[value]::-webkit-progress-bar {
898
933
  accent-color: var(--progress-accent-color);
899
934
  }
900
935
  progress[aria-busy] {
901
- width: var(--progress-w);
902
- height: var(--progress-h);
936
+ width: var(--progress-width);
937
+ height: var(--progress-height);
903
938
  accent-color: var(--progress-accent-color);
904
939
  /* Styling for the remaining part of the& bar */
905
940
  }
@@ -920,14 +955,14 @@ details {
920
955
  --details-direction: column;
921
956
  --details-display: flex;
922
957
  --details-gap: 0rem;
923
- --details-h: max-content;
958
+ --details-height: max-content;
924
959
  --details-justify: flex-start;
925
- --details-px: 1.5rem;
926
- --details-py: 1rem;
960
+ --details-padding-inline: 1.5rem;
961
+ --details-padding-block: 1rem;
927
962
  --details-radius: 0;
928
- --details-w: 100%;
929
- --max-h-closed: 6.25rem;
930
- --max-h-open: 50rem;
963
+ --details-width: 100%;
964
+ --details-max-height-closed: 6.25rem;
965
+ --details-max-height-open: 50rem;
931
966
  --summary-align: center;
932
967
  --summary-cursor: pointer;
933
968
  --summary-display: flex;
@@ -939,12 +974,12 @@ details {
939
974
  flex-direction: var(--details-direction);
940
975
  justify-content: var(--details-justify);
941
976
  gap: var(--details-gap);
942
- width: var(--details-w);
977
+ width: var(--details-width);
943
978
  border: var(--details-border);
944
979
  border-left: none;
945
980
  border-right: none;
946
981
  transition: var(--summary-transitions);
947
- max-height: var(--max-h-closed);
982
+ max-height: var(--details-max-height-closed);
948
983
  overflow: clip;
949
984
  }
950
985
  @starting-style {
@@ -973,8 +1008,8 @@ details summary {
973
1008
  display: var(--summary-display);
974
1009
  justify-content: var(--summary-justify);
975
1010
  align-items: var(--summary-align);
976
- padding-inline: var(--summary-px, var(--details-px));
977
- padding-block: var(--summary-py, var(--details-py));
1011
+ padding-inline: var(--summary-padding-inline, var(--details-padding-inline));
1012
+ padding-block: var(--summary-padding-block, var(--details-padding-block));
978
1013
  gap: var(--summary-gap);
979
1014
  list-style: none;
980
1015
  border-top-left-radius: var(--details-radius);
@@ -994,15 +1029,15 @@ details summary:hover {
994
1029
  cursor: var(--summary-cursor);
995
1030
  }
996
1031
  details summary > section {
997
- width: var(--details-w);
1032
+ width: var(--details-width);
998
1033
  }
999
1034
  details .list-styles summary {
1000
1035
  border-left: none;
1001
1036
  border-right: none;
1002
1037
  }
1003
1038
  details > section {
1004
- padding-inline: var(--details-px);
1005
- padding-block: var(--details-py);
1039
+ padding-inline: var(--details-padding-inline);
1040
+ padding-block: var(--details-padding-block);
1006
1041
  margin-block-start: 0;
1007
1042
  border: 1px transparent solid;
1008
1043
  }
@@ -1014,7 +1049,7 @@ details[open] > summary {
1014
1049
  border-bottom: var(--details-border);
1015
1050
  }
1016
1051
  details[open] > section {
1017
- max-height: var(--max-h-open);
1052
+ max-height: var(--details-max-height-open);
1018
1053
  }
1019
1054
  @starting-style {
1020
1055
  details[open] > section {
@@ -1043,7 +1078,7 @@ details[open] > section {
1043
1078
  */
1044
1079
  a[href] {
1045
1080
  --link-color: #085ab7;
1046
- --link-weight: 400;
1081
+ --link-fw: 400;
1047
1082
  --link-fs: 1rem;
1048
1083
  --link-decoration: none;
1049
1084
  --link-decoration-offset: 0.09375rem;
@@ -1051,8 +1086,8 @@ a[href] {
1051
1086
  --link-skip-ink: auto;
1052
1087
  --link-bg: transparent;
1053
1088
  --link-radius: 0.25rem;
1054
- --link-px: 0;
1055
- --link-py: 0;
1089
+ --link-padding-inline: 0;
1090
+ --link-padding-block: 0;
1056
1091
  --link-transition: all 0.75s ease-in-out;
1057
1092
  --link-focus-color: currentColor;
1058
1093
  --link-focus-width: 0.125rem;
@@ -1060,7 +1095,7 @@ a[href] {
1060
1095
  --link-focus-style: solid;
1061
1096
  color: var(--link-color);
1062
1097
  font-size: var(--link-fs);
1063
- font-weight: var(--link-weight);
1098
+ font-weight: var(--link-fw);
1064
1099
  text-decoration: var(--link-decoration);
1065
1100
  text-underline-offset: var(--link-decoration-offset);
1066
1101
  text-decoration-thickness: var(--link-decoration-thickness);
@@ -1071,7 +1106,7 @@ a[href] {
1071
1106
  }
1072
1107
  a[href] > i,
1073
1108
  a[href] > b {
1074
- font-weight: var(--link-weight);
1109
+ font-weight: var(--link-fw);
1075
1110
  font-style: normal;
1076
1111
  }
1077
1112
  a[href]:hover {
@@ -1141,23 +1176,23 @@ header,
1141
1176
  --overlay-placement: center;
1142
1177
  --overlay-display: grid;
1143
1178
  --overlay-padding: 2rem;
1144
- --overlay-w: 100%;
1145
- --overlay-h: 40vh;
1146
- --overlay-max-h: 500px;
1179
+ --overlay-width: 100%;
1180
+ --overlay-height: 40vh;
1181
+ --overlay-max-height: 500px;
1147
1182
  --overlay-color: currentColor;
1148
- --overlay-content-w: 80%;
1183
+ --overlay-content-width: 80%;
1149
1184
  --overlay-gap: 2rem;
1150
1185
  --overlay-bg: whitesmoke;
1151
- --overlay-px: auto;
1152
- --overlay-py: auto;
1153
- --overlay-mx: auto;
1154
- --overlay-my: auto;
1186
+ --overlay-padding-inline: auto;
1187
+ --overlay-padding-block: auto;
1188
+ --overlay-margin-inline: auto;
1189
+ --overlay-margin-block: auto;
1155
1190
  grid-template-areas: "overlay";
1156
1191
  display: var(--overlay-display);
1157
1192
  place-items: var(--overlay-placement);
1158
1193
  align-items: var(--overlay-placement);
1159
- min-height: var(--overlay-h);
1160
- width: var(--overlay-w);
1194
+ min-height: var(--overlay-height);
1195
+ width: var(--overlay-width);
1161
1196
  color: var(--overlay-color);
1162
1197
  background-color: var(--overlay-bg);
1163
1198
  min-width: 20rem;
@@ -1170,7 +1205,7 @@ header > *,
1170
1205
  header > img,
1171
1206
  [data-hero] > img,
1172
1207
  [data-grid~=overlay] > img {
1173
- width: var(--overlay-w);
1208
+ width: var(--overlay-width);
1174
1209
  background-size: contain;
1175
1210
  }
1176
1211
  header > div,
@@ -1180,9 +1215,9 @@ header > section,
1180
1215
  [data-grid~=overlay] > div,
1181
1216
  [data-grid~=overlay] > section {
1182
1217
  --overlay-display: flex;
1183
- max-width: var(--overlay-content-w);
1218
+ max-width: var(--overlay-content-width);
1184
1219
  padding-inline: var(--spc-4);
1185
- margin-inline: var(--overlay-mx);
1220
+ margin-inline: var(--overlay-margin-inline);
1186
1221
  gap: var(--overlay-gap);
1187
1222
  text-align: center;
1188
1223
  }
@@ -1209,7 +1244,7 @@ header > section > h2,
1209
1244
  [data-grid~=overlay] > div > h2,
1210
1245
  [data-grid~=overlay] > section > h1,
1211
1246
  [data-grid~=overlay] > section > h2 {
1212
- line-height: var(--header-lh, 1.1);
1247
+ line-height: var(--header-line-height, 1.1);
1213
1248
  font-weight: 500;
1214
1249
  }
1215
1250
  header > div > h1,
@@ -1239,16 +1274,16 @@ header > section > h3,
1239
1274
 
1240
1275
  main,
1241
1276
  footer {
1242
- --content-w: min(100%, 1480px);
1243
- --content-mx: auto;
1244
- --content-px: 1rem;
1277
+ --content-width: min(100%, 1480px);
1278
+ --content-margin-inline: auto;
1279
+ --content-padding-inline: 1rem;
1245
1280
  --content-gap: 2rem;
1246
1281
  padding-block: var(--overlay-padding);
1247
1282
  }
1248
1283
  main > section,
1249
1284
  footer > section {
1250
- width: var(--content-w);
1251
- margin-inline: var(--content-mx);
1285
+ width: var(--content-width);
1286
+ margin-inline: var(--content-margin-inline);
1252
1287
  padding-inline: var(--spc-6);
1253
1288
  }
1254
1289
 
@@ -1258,8 +1293,8 @@ main {
1258
1293
  }
1259
1294
  main > section[aria-label],
1260
1295
  main > section {
1261
- width: var(--content-w);
1262
- margin-inline: var(--content-mx);
1296
+ width: var(--content-width);
1297
+ margin-inline: var(--content-margin-inline);
1263
1298
  }
1264
1299
  main > section[aria-label]:has(> article, > aside),
1265
1300
  main > section:has(> article, > aside) {
@@ -1289,7 +1324,7 @@ footer > div {
1289
1324
  }
1290
1325
 
1291
1326
  :root {
1292
- --dialog-min-w: max(20rem, 80%);
1327
+ --dialog-min-width: max(20rem, 80%);
1293
1328
  --dialog-gap: 0.625rem;
1294
1329
  --dialog-border-color: lightgray;
1295
1330
  --dialog-border-width: thin;
@@ -1321,8 +1356,8 @@ footer > div {
1321
1356
  }
1322
1357
  }
1323
1358
  dialog {
1324
- width: var(--dialog-min-w);
1325
- min-width: var(--min-w);
1359
+ width: var(--dialog-min-width);
1360
+ min-width: var(--dialog-min-width);
1326
1361
  gap: var(--dialog-gap);
1327
1362
  border: var(--dialog-border-color) var(--dialog-border-width) solid;
1328
1363
  border-radius: var(--dialog-border-radius);
@@ -1503,13 +1538,13 @@ sup:has(> span) {
1503
1538
  --badge-color: currentColor;
1504
1539
  --badge-radius: 0.5rem;
1505
1540
  --badge-padding: 0.3rem;
1506
- --badge-v-align: 0.5rem;
1541
+ --badge-vertical-align: 0.5rem;
1507
1542
  --badge-fs: var(--fs-1);
1508
1543
  background-color: var(--badge-bg);
1509
1544
  color: var(--badge-color);
1510
1545
  padding: var(--badge-padding);
1511
1546
  border-radius: var(--badge-radius);
1512
- vertical-align: var(--badge-v-align);
1547
+ vertical-align: var(--badge-vertical-align);
1513
1548
  font-size: var(--badge-fs);
1514
1549
  }
1515
1550
  sup:has(> span) span {
@@ -1541,8 +1576,8 @@ sup:has(> span)[data-badge~=rounded] span {
1541
1576
  body > nav,
1542
1577
  [aria-label~=navbar],
1543
1578
  .navbar {
1544
- padding-inline: var(--nav-px, 1rem);
1545
- min-height: var(--nav-h, fit-content);
1579
+ padding-inline: var(--nav-padding-inline, 1rem);
1580
+ min-height: var(--nav-height, fit-content);
1546
1581
  }
1547
1582
  @media (max-width: 580px) {
1548
1583
  body > nav,
@@ -1564,12 +1599,12 @@ body > nav ul > li,
1564
1599
  margin: 0;
1565
1600
  padding: 0;
1566
1601
  min-height: 100%;
1567
- padding-inline: var(--nav-px, 0.75rem);
1602
+ padding-inline: var(--nav-padding-inline, 0.75rem);
1568
1603
  }
1569
1604
  body > nav ul > li:hover,
1570
1605
  [aria-label~=navbar] ul > li:hover,
1571
1606
  .navbar ul > li:hover {
1572
- background-color: var(--nav-hov-bg, #e8e8e8);
1607
+ background-color: var(--nav-hover-bg, #e8e8e8);
1573
1608
  }
1574
1609
  body > nav ul > li:hover:where(img),
1575
1610
  [aria-label~=navbar] ul > li:hover:where(img),
@@ -1582,25 +1617,25 @@ nav {
1582
1617
  --nav-focus-width: 0.125rem;
1583
1618
  --nav-focus-offset: 0.125rem;
1584
1619
  --nav-focus-style: solid;
1585
- display: var(--nav-dsp, flex);
1620
+ display: var(--nav-display, flex);
1586
1621
  flex-direction: var(--nav-direction, row);
1587
- width: var(--nav-w, auto);
1622
+ width: var(--nav-width, auto);
1588
1623
  place-items: var(--nav-align, center);
1589
1624
  justify-content: var(--nav-justify, space-between);
1590
- margin-inline: var(--nav-mx, 0);
1625
+ margin-inline: var(--nav-margin-inline, 0);
1591
1626
  background-color: var(--nav-bg, initial);
1592
1627
  }
1593
1628
  nav > section,
1594
1629
  nav > ul {
1595
- --nav-dsp: flex;
1630
+ --nav-display: flex;
1596
1631
  flex-direction: var(--nav-direction, row);
1597
- display: var(--nav-dsp, flex);
1632
+ display: var(--nav-display, flex);
1598
1633
  gap: var(--nav-gap, 0);
1599
1634
  font-size: var(--nav-fs, 0.9rem);
1600
1635
  align-items: var(--nav-align, center);
1601
- padding-inline: var(--nav-px, 1rem);
1602
- padding-block: var(--nav-py, 0);
1603
- margin-block-end: var(--nav-mb, 0);
1636
+ padding-inline: var(--nav-padding-inline, 1rem);
1637
+ padding-block: var(--nav-padding-block, 0);
1638
+ margin-block-end: var(--nav-margin-block-end, 0);
1604
1639
  height: 100%;
1605
1640
  }
1606
1641
  nav > section[data-list~=block],
@@ -1608,7 +1643,7 @@ nav > ul[data-list~=block] {
1608
1643
  --nav-direction: column;
1609
1644
  }
1610
1645
  nav > section > div {
1611
- --py: 0;
1646
+ --nav-padding-block: 0;
1612
1647
  }
1613
1648
  nav ul > li {
1614
1649
  display: flex;
@@ -1617,15 +1652,15 @@ nav ul > li {
1617
1652
  margin: 0;
1618
1653
  padding: 0;
1619
1654
  min-height: 100%;
1620
- padding-inline: var(--nav-px, 1rem);
1655
+ padding-inline: var(--nav-padding-inline, 1rem);
1621
1656
  }
1622
1657
  nav img[alt] {
1623
- --px: 0 var(--s1);
1624
- --w: var(--brand-w, 3.6rem);
1658
+ --nav-img-padding-inline: 0 var(--s1);
1659
+ --nav-img-width: var(--brand-w, 3.6rem);
1625
1660
  }
1626
1661
  nav[data-variant] {
1627
1662
  background-color: var(--nav-bg);
1628
- color: var(--nav-cl);
1663
+ color: var(--nav-color);
1629
1664
  font-size: var(--nav-fs, 0.9rem);
1630
1665
  }
1631
1666
  nav > div {
@@ -1654,11 +1689,16 @@ nav button:focus-visible {
1654
1689
  --input-bg: inherit;
1655
1690
  --input-border: none;
1656
1691
  --input-outline: thin solid var(--input-border-color);
1657
- --input-px: 0.6rem;
1658
- --input-py: 0.4rem;
1692
+ --input-padding-inline: 0.6rem;
1693
+ --input-padding-block: 0.4rem;
1659
1694
  --input-radius: --var(--radius);
1660
1695
  --input-fs: var(--fs);
1661
- --input-w: clamp(200px, 100%, 500px);
1696
+ --input-width: clamp(200px, 100%, 500px);
1697
+ --input-focus-outline: medium solid var(--input-border-color);
1698
+ --input-focus-outline-offset: 0;
1699
+ --input-disabled-bg: #f5f5f5;
1700
+ --input-disabled-opacity: 0.6;
1701
+ --input-disabled-cursor: not-allowed;
1662
1702
  --placeholder-color: gray;
1663
1703
  --placeholder-style: italic;
1664
1704
  --placeholder-fs: smaller;
@@ -1686,11 +1726,11 @@ select {
1686
1726
  -webkit-appearance: var(--input-appearance);
1687
1727
  -moz-appearance: var(--input-appearance);
1688
1728
  appearance: var(--input-appearance);
1689
- width: var(--input-w);
1729
+ width: var(--input-width);
1690
1730
  border: var(--input-border);
1691
1731
  outline: var(--input-outline);
1692
- padding-inline: var(--input-px);
1693
- padding-block: var(--input-py);
1732
+ padding-inline: var(--input-padding-inline);
1733
+ padding-block: var(--input-padding-block);
1694
1734
  border-radius: var(--input-radius);
1695
1735
  background-color: var(--input-bg, #fff);
1696
1736
  }
@@ -1707,7 +1747,8 @@ textarea:focus-visible,
1707
1747
  textarea:focus,
1708
1748
  select:focus-visible,
1709
1749
  select:focus {
1710
- outline-width: medium;
1750
+ outline: var(--input-focus-outline);
1751
+ outline-offset: var(--input-focus-outline-offset);
1711
1752
  }
1712
1753
  input[type]:not([type=checkbox], [type=radio])[aria-required=true]::placeholder,
1713
1754
  textarea[aria-required=true]::placeholder,
@@ -1720,11 +1761,15 @@ textarea[aria-required=true]::placeholder::after,
1720
1761
  select[aria-required=true]::placeholder::after {
1721
1762
  content: "* ";
1722
1763
  }
1723
- input[type]:not([type=checkbox], [type=radio])[aria-disabled=true],
1764
+ input[type]:not([type=checkbox], [type=radio])[aria-disabled=true], input[type]:not([type=checkbox], [type=radio]):disabled,
1724
1765
  textarea[aria-disabled=true],
1725
- select[aria-disabled=true] {
1766
+ textarea:disabled,
1767
+ select[aria-disabled=true],
1768
+ select:disabled {
1726
1769
  --input-border-color: lightgray;
1727
- cursor: not-allowed;
1770
+ background-color: var(--input-disabled-bg);
1771
+ opacity: var(--input-disabled-opacity);
1772
+ cursor: var(--input-disabled-cursor);
1728
1773
  text-transform: capitalize;
1729
1774
  text-decoration: line-through;
1730
1775
  }
@@ -1742,8 +1787,8 @@ select {
1742
1787
 
1743
1788
  nav:not(body > nav),
1744
1789
  nav[data-breadcrumb] {
1745
- --breadcrumb-px: unset;
1746
- --breadcrumb-dsp: flex;
1790
+ --breadcrumb-padding-inline: unset;
1791
+ --breadcrumb-display: flex;
1747
1792
  --breadcrumb-gap: 0.5rem;
1748
1793
  --breadcrumb-color: currentColor;
1749
1794
  --breadcrumb-current-color: rgb(46, 46, 46);
@@ -1753,14 +1798,14 @@ nav[data-breadcrumb] {
1753
1798
  }
1754
1799
  nav:not(body > nav) ol,
1755
1800
  nav[data-breadcrumb] ol {
1756
- padding-inline: var(--breadcrumb-px);
1757
- display: var(--breadcrumb-dsp);
1801
+ padding-inline: var(--breadcrumb-padding-inline);
1802
+ display: var(--breadcrumb-display);
1758
1803
  gap: var(--breadcrumb-gap);
1759
1804
  }
1760
1805
  nav:not(body > nav) ol li,
1761
1806
  nav[data-breadcrumb] ol li {
1762
1807
  padding-inline: unset;
1763
- width: var(--breadcrumb-w, fit-content);
1808
+ width: var(--breadcrumb-width, fit-content);
1764
1809
  text-transform: capitalize;
1765
1810
  display: flex;
1766
1811
  color: var(--breadcrumb-color);
@@ -1795,7 +1840,7 @@ dl {
1795
1840
  --list-margin-top: 0;
1796
1841
  --list-margin-bottom: 1rem;
1797
1842
  --list-margin-inline: 0;
1798
- --list-padding-inline: 2.5rem;
1843
+ --list-padding-inline: 0.5rem;
1799
1844
  --list-gap: 0.5rem;
1800
1845
  --list-marker-color: currentColor;
1801
1846
  --list-marker-size: 1em;
@@ -2034,7 +2079,7 @@ li:has(> button) {
2034
2079
  line-height: 1.6;
2035
2080
  display: flex;
2036
2081
  flex-direction: row;
2037
- border-radius: var(--alert-border-radius, var(--border-radius));
2082
+ border-radius: var(--alert-radius, var(--border-radius));
2038
2083
  gap: var(--alert-gap, var(--spc-4));
2039
2084
  /* Exit animations */
2040
2085
  transition: opacity var(--alert-transition-duration) ease, transform var(--alert-transition-duration) ease;
@@ -2075,8 +2120,8 @@ li:has(> button) {
2075
2120
  [role=alert] .alert-message .alert-title {
2076
2121
  margin-block-end: var(--spc-1, 0.25rem);
2077
2122
  margin-block-start: 0;
2078
- font-weight: var(--alert-title-weight, 600);
2079
- font-size: var(--alert-title-size, inherit);
2123
+ font-weight: var(--alert-title-fw, 600);
2124
+ font-size: var(--alert-title-fs, inherit);
2080
2125
  line-height: 1.4;
2081
2126
  }
2082
2127
  [role=alert] .alert-message h2.alert-title,
@@ -2087,7 +2132,7 @@ li:has(> button) {
2087
2132
  margin: 0;
2088
2133
  margin-block-end: var(--spc-1, 0.25rem);
2089
2134
  font-size: inherit;
2090
- font-weight: var(--alert-title-weight, 600);
2135
+ font-weight: var(--alert-title-fw, 600);
2091
2136
  }
2092
2137
  [role=alert][data-alert~=info] {
2093
2138
  --alert-bg: var(--alert-info-bg);