@fpkit/acss 0.5.13 → 0.6.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 (280) hide show
  1. package/libs/{chunk-PQ2K3BM6.cjs → chunk-2NRIP6RB.cjs} +3 -3
  2. package/libs/chunk-33PNJ4LO.cjs +15 -0
  3. package/libs/chunk-33PNJ4LO.cjs.map +1 -0
  4. package/libs/chunk-4BZKFPEC.cjs +17 -0
  5. package/libs/chunk-4BZKFPEC.cjs.map +1 -0
  6. package/libs/{chunk-772NRB75.js → chunk-5QD3DWFI.js} +2 -2
  7. package/libs/chunk-6SAHIYCZ.js +7 -0
  8. package/libs/chunk-6SAHIYCZ.js.map +1 -0
  9. package/libs/{chunk-3MKLDCKQ.cjs → chunk-6WTC4JXH.cjs} +3 -3
  10. package/libs/chunk-75QHTLFO.js +7 -0
  11. package/libs/chunk-75QHTLFO.js.map +1 -0
  12. package/libs/{chunk-ZANSFMTD.js → chunk-7XPFW7CB.js} +3 -3
  13. package/libs/chunk-BFK62VX5.js +5 -0
  14. package/libs/chunk-BFK62VX5.js.map +1 -0
  15. package/libs/{chunk-ROZI23GS.cjs → chunk-DKTHCQ5P.cjs} +4 -4
  16. package/libs/chunk-E2AJURUW.cjs +13 -0
  17. package/libs/chunk-E2AJURUW.cjs.map +1 -0
  18. package/libs/{chunk-L75OQKEI.cjs → chunk-ENTCUJ3A.cjs} +3 -3
  19. package/libs/chunk-ENTCUJ3A.cjs.map +1 -0
  20. package/libs/chunk-F5EYMVQM.js +10 -0
  21. package/libs/chunk-F5EYMVQM.js.map +1 -0
  22. package/libs/chunk-FVROL3V5.js +9 -0
  23. package/libs/chunk-FVROL3V5.js.map +1 -0
  24. package/libs/chunk-GT77BX4L.cjs +17 -0
  25. package/libs/chunk-GT77BX4L.cjs.map +1 -0
  26. package/libs/chunk-GUJSMQ3V.cjs +16 -0
  27. package/libs/chunk-GUJSMQ3V.cjs.map +1 -0
  28. package/libs/chunk-HHLNOC5T.js +7 -0
  29. package/libs/chunk-HHLNOC5T.js.map +1 -0
  30. package/libs/chunk-HRRHPLER.js +8 -0
  31. package/libs/chunk-HRRHPLER.js.map +1 -0
  32. package/libs/chunk-IEB64SWY.js +8 -0
  33. package/libs/chunk-IEB64SWY.js.map +1 -0
  34. package/libs/{chunk-NGTJDDFO.js → chunk-IQ76HGVP.js} +2 -2
  35. package/libs/chunk-IRLFZ3OL.js +9 -0
  36. package/libs/chunk-IRLFZ3OL.js.map +1 -0
  37. package/libs/{chunk-JJ43O4Y5.js → chunk-KK47SYZI.js} +2 -2
  38. package/libs/chunk-O3JIHC5M.cjs +15 -0
  39. package/libs/chunk-O3JIHC5M.cjs.map +1 -0
  40. package/libs/chunk-O5XAJ7BY.cjs +18 -0
  41. package/libs/chunk-O5XAJ7BY.cjs.map +1 -0
  42. package/libs/chunk-OVWLQYMK.js +10 -0
  43. package/libs/chunk-OVWLQYMK.js.map +1 -0
  44. package/libs/chunk-PNWIRCG3.cjs +7 -0
  45. package/libs/chunk-PNWIRCG3.cjs.map +1 -0
  46. package/libs/{chunk-D4YLRWAO.cjs → chunk-QVW6W76L.cjs} +6 -6
  47. package/libs/chunk-T4T6GWYQ.cjs +17 -0
  48. package/libs/chunk-T4T6GWYQ.cjs.map +1 -0
  49. package/libs/chunk-TON2YGMD.cjs +9 -0
  50. package/libs/chunk-TON2YGMD.cjs.map +1 -0
  51. package/libs/chunk-UEPAWMDF.js +8 -0
  52. package/libs/chunk-UEPAWMDF.js.map +1 -0
  53. package/libs/{chunk-LT5KZ2QW.cjs → chunk-US2I5GI7.cjs} +3 -3
  54. package/libs/{chunk-B7F5FS6D.cjs → chunk-W2UIN7EV.cjs} +3 -3
  55. package/libs/{chunk-P2DC76ZZ.cjs → chunk-W5TKWBFC.cjs} +3 -3
  56. package/libs/chunk-WXBFBWYF.cjs +16 -0
  57. package/libs/chunk-WXBFBWYF.cjs.map +1 -0
  58. package/libs/{chunk-VUH3FXGJ.js → chunk-X3JCTEPD.js} +5 -5
  59. package/libs/chunk-X5LGFCWG.js +9 -0
  60. package/libs/chunk-X5LGFCWG.js.map +1 -0
  61. package/libs/{chunk-5M57K4SW.js → chunk-Y2PFDELK.js} +2 -2
  62. package/libs/{chunk-ETFLFC2S.js → chunk-ZFJ4U45S.js} +2 -2
  63. package/libs/{component-props-a8a2f97e.d.ts → component-props-67d978a2.d.ts} +4 -4
  64. package/libs/components/alert/alert.css +1 -1
  65. package/libs/components/alert/alert.css.map +1 -1
  66. package/libs/components/alert/alert.min.css +2 -2
  67. package/libs/components/breadcrumbs/breadcrumb.cjs +6 -6
  68. package/libs/components/breadcrumbs/breadcrumb.d.cts +11 -11
  69. package/libs/components/breadcrumbs/breadcrumb.d.ts +11 -11
  70. package/libs/components/breadcrumbs/breadcrumb.js +3 -3
  71. package/libs/components/button.cjs +6 -4
  72. package/libs/components/button.d.cts +97 -4
  73. package/libs/components/button.d.ts +97 -4
  74. package/libs/components/button.js +4 -2
  75. package/libs/components/card.cjs +7 -7
  76. package/libs/components/card.d.cts +14 -14
  77. package/libs/components/card.d.ts +14 -14
  78. package/libs/components/card.js +2 -2
  79. package/libs/components/dialog/dialog.cjs +9 -7
  80. package/libs/components/dialog/dialog.d.cts +3 -3
  81. package/libs/components/dialog/dialog.d.ts +3 -3
  82. package/libs/components/dialog/dialog.js +7 -5
  83. package/libs/components/form/fields.cjs +4 -4
  84. package/libs/components/form/fields.d.cts +16 -7
  85. package/libs/components/form/fields.d.ts +16 -7
  86. package/libs/components/form/fields.js +2 -2
  87. package/libs/components/form/inputs.cjs +6 -4
  88. package/libs/components/form/inputs.d.cts +50 -2
  89. package/libs/components/form/inputs.d.ts +50 -2
  90. package/libs/components/form/inputs.js +4 -2
  91. package/libs/components/form/textarea.cjs +5 -4
  92. package/libs/components/form/textarea.d.cts +32 -23
  93. package/libs/components/form/textarea.d.ts +32 -23
  94. package/libs/components/form/textarea.js +3 -2
  95. package/libs/components/heading/heading.cjs +3 -3
  96. package/libs/components/heading/heading.d.cts +2 -2
  97. package/libs/components/heading/heading.d.ts +2 -2
  98. package/libs/components/heading/heading.js +2 -2
  99. package/libs/components/icons/icon.cjs +4 -4
  100. package/libs/components/icons/icon.d.cts +38 -38
  101. package/libs/components/icons/icon.d.ts +38 -38
  102. package/libs/components/icons/icon.js +2 -2
  103. package/libs/components/link/link.cjs +4 -4
  104. package/libs/components/link/link.css +1 -1
  105. package/libs/components/link/link.css.map +1 -1
  106. package/libs/components/link/link.d.cts +3 -19
  107. package/libs/components/link/link.d.ts +3 -19
  108. package/libs/components/link/link.js +2 -2
  109. package/libs/components/link/link.min.css +2 -2
  110. package/libs/components/list/list.cjs +5 -5
  111. package/libs/components/list/list.css +1 -0
  112. package/libs/components/list/list.css.map +1 -0
  113. package/libs/components/list/list.d.cts +120 -33
  114. package/libs/components/list/list.d.ts +120 -33
  115. package/libs/components/list/list.js +2 -2
  116. package/libs/components/list/list.min.css +3 -0
  117. package/libs/components/modal.cjs +6 -4
  118. package/libs/components/modal.d.cts +8 -8
  119. package/libs/components/modal.d.ts +8 -8
  120. package/libs/components/modal.js +5 -3
  121. package/libs/components/nav/nav.cjs +7 -7
  122. package/libs/components/nav/nav.css +1 -1
  123. package/libs/components/nav/nav.css.map +1 -1
  124. package/libs/components/nav/nav.d.cts +550 -34
  125. package/libs/components/nav/nav.d.ts +550 -34
  126. package/libs/components/nav/nav.js +3 -3
  127. package/libs/components/nav/nav.min.css +2 -2
  128. package/libs/components/popover/popover.d.cts +5 -5
  129. package/libs/components/popover/popover.d.ts +5 -5
  130. package/libs/components/tables/table.cjs +5 -5
  131. package/libs/components/tables/table.d.cts +8 -8
  132. package/libs/components/tables/table.d.ts +8 -8
  133. package/libs/components/tables/table.js +2 -2
  134. package/libs/components/tag/tag.css +1 -1
  135. package/libs/components/tag/tag.css.map +1 -1
  136. package/libs/components/tag/tag.min.css +2 -2
  137. package/libs/components/text/text.cjs +5 -5
  138. package/libs/components/text/text.d.cts +5 -5
  139. package/libs/components/text/text.d.ts +5 -5
  140. package/libs/components/text/text.js +2 -2
  141. package/libs/form.types-d25ebfac.d.ts +233 -0
  142. package/libs/{heading-3648c538.d.ts → heading-7446cb46.d.ts} +8 -8
  143. package/libs/hooks.cjs +9 -4
  144. package/libs/hooks.d.cts +137 -3
  145. package/libs/hooks.d.ts +137 -3
  146. package/libs/hooks.js +4 -3
  147. package/libs/icons.cjs +3 -3
  148. package/libs/icons.d.cts +2 -2
  149. package/libs/icons.d.ts +2 -2
  150. package/libs/icons.js +2 -2
  151. package/libs/index.cjs +53 -51
  152. package/libs/index.cjs.map +1 -1
  153. package/libs/index.css +1 -1
  154. package/libs/index.css.map +1 -1
  155. package/libs/index.d.cts +338 -49
  156. package/libs/index.d.ts +338 -49
  157. package/libs/index.js +24 -22
  158. package/libs/index.js.map +1 -1
  159. package/libs/link-5192f411.d.ts +323 -0
  160. package/libs/list.types-d26de310.d.ts +245 -0
  161. package/libs/{ui-645f95b5.d.ts → ui-d01b50d4.d.ts} +16 -12
  162. package/package.json +4 -6
  163. package/src/components/alert/alert.scss +1 -4
  164. package/src/components/breadcrumbs/breadcrumb.tsx +4 -1
  165. package/src/components/buttons/README.mdx +102 -1
  166. package/src/components/buttons/button.stories.tsx +106 -0
  167. package/src/components/buttons/button.tsx +82 -52
  168. package/src/components/dialog/dialog-a11y-review.md +653 -0
  169. package/src/components/form/README.mdx +725 -43
  170. package/src/components/form/WCAG-REVIEW.md +654 -0
  171. package/src/components/form/fields.tsx +10 -1
  172. package/src/components/form/form.stories.tsx +604 -23
  173. package/src/components/form/form.tsx +204 -63
  174. package/src/components/form/form.types.ts +378 -0
  175. package/src/components/form/input.stories.tsx +71 -3
  176. package/src/components/form/inputs.tsx +159 -67
  177. package/src/components/form/select.tsx +122 -66
  178. package/src/components/form/textarea.tsx +120 -73
  179. package/src/components/fp.tsx +86 -11
  180. package/src/components/link/README.mdx +923 -0
  181. package/src/components/link/link.scss +79 -26
  182. package/src/components/link/link.stories.tsx +383 -30
  183. package/src/components/link/link.test.tsx +677 -0
  184. package/src/components/link/link.tsx +163 -57
  185. package/src/components/link/link.types.ts +261 -0
  186. package/src/components/list/README.mdx +764 -0
  187. package/src/components/list/list.scss +285 -0
  188. package/src/components/list/list.stories.tsx +514 -27
  189. package/src/components/list/list.test.tsx +554 -0
  190. package/src/components/list/list.tsx +153 -51
  191. package/src/components/list/list.types.ts +255 -0
  192. package/src/components/nav/ACCESSIBILITY.md +649 -0
  193. package/src/components/nav/README.mdx +782 -0
  194. package/src/components/nav/nav.scss +37 -4
  195. package/src/components/nav/nav.stories.tsx +44 -6
  196. package/src/components/nav/nav.tsx +302 -51
  197. package/src/components/nav/nav.types.ts +308 -0
  198. package/src/components/tag/README.mdx +426 -0
  199. package/src/components/tag/tag.scss +101 -27
  200. package/src/components/tag/tag.stories.tsx +384 -10
  201. package/src/components/tag/tag.test.tsx +210 -0
  202. package/src/components/tag/tag.tsx +106 -9
  203. package/src/components/tag/tag.types.ts +107 -0
  204. package/src/components/ui.tsx +8 -3
  205. package/src/hooks/use-disabled-state.test.tsx +536 -0
  206. package/src/hooks/use-disabled-state.ts +246 -0
  207. package/src/hooks/useDisabledState.md +393 -0
  208. package/src/hooks.ts +6 -0
  209. package/src/index.scss +2 -0
  210. package/src/index.ts +2 -1
  211. package/src/sass/_globals.scss +2 -7
  212. package/src/styles/alert/alert.css +1 -3
  213. package/src/styles/alert/alert.css.map +1 -1
  214. package/src/styles/index.css +461 -81
  215. package/src/styles/index.css.map +1 -1
  216. package/src/styles/link/link.css +45 -28
  217. package/src/styles/link/link.css.map +1 -1
  218. package/src/styles/list/list.css +214 -0
  219. package/src/styles/list/list.css.map +1 -0
  220. package/src/styles/nav/nav.css +32 -6
  221. package/src/styles/nav/nav.css.map +1 -1
  222. package/src/styles/tag/tag.css +113 -35
  223. package/src/styles/tag/tag.css.map +1 -1
  224. package/src/styles/utilities/_disabled.scss +58 -0
  225. package/src/types/shared.ts +43 -6
  226. package/src/utils/accessibility.ts +109 -0
  227. package/libs/chunk-2LTJ7HHX.cjs +0 -18
  228. package/libs/chunk-2LTJ7HHX.cjs.map +0 -1
  229. package/libs/chunk-2Y7W75TT.js +0 -9
  230. package/libs/chunk-2Y7W75TT.js.map +0 -1
  231. package/libs/chunk-5S4ORA4C.cjs +0 -15
  232. package/libs/chunk-5S4ORA4C.cjs.map +0 -1
  233. package/libs/chunk-AHDJGCG5.cjs +0 -15
  234. package/libs/chunk-AHDJGCG5.cjs.map +0 -1
  235. package/libs/chunk-BHRQBJRY.js +0 -8
  236. package/libs/chunk-BHRQBJRY.js.map +0 -1
  237. package/libs/chunk-GZ4QFPRY.js +0 -9
  238. package/libs/chunk-GZ4QFPRY.js.map +0 -1
  239. package/libs/chunk-IYUN2EW3.cjs +0 -15
  240. package/libs/chunk-IYUN2EW3.cjs.map +0 -1
  241. package/libs/chunk-J32EZPYD.cjs +0 -15
  242. package/libs/chunk-J32EZPYD.cjs.map +0 -1
  243. package/libs/chunk-KUKIVRC2.js +0 -7
  244. package/libs/chunk-KUKIVRC2.js.map +0 -1
  245. package/libs/chunk-L75OQKEI.cjs.map +0 -1
  246. package/libs/chunk-M5RRNTVX.cjs +0 -15
  247. package/libs/chunk-M5RRNTVX.cjs.map +0 -1
  248. package/libs/chunk-OK5QEIMD.cjs +0 -17
  249. package/libs/chunk-OK5QEIMD.cjs.map +0 -1
  250. package/libs/chunk-P7TTEYCD.js +0 -7
  251. package/libs/chunk-P7TTEYCD.js.map +0 -1
  252. package/libs/chunk-QLZWHAMK.js +0 -8
  253. package/libs/chunk-QLZWHAMK.js.map +0 -1
  254. package/libs/chunk-RIVUMPOG.js +0 -8
  255. package/libs/chunk-RIVUMPOG.js.map +0 -1
  256. package/libs/chunk-S7BABR7Z.cjs +0 -13
  257. package/libs/chunk-S7BABR7Z.cjs.map +0 -1
  258. package/libs/chunk-SMYRLO3E.js +0 -8
  259. package/libs/chunk-SMYRLO3E.js.map +0 -1
  260. package/libs/chunk-TYRCEX2L.js +0 -8
  261. package/libs/chunk-TYRCEX2L.js.map +0 -1
  262. package/libs/chunk-XBA562WW.js +0 -8
  263. package/libs/chunk-XBA562WW.js.map +0 -1
  264. package/libs/chunk-XTQKWY7W.cjs +0 -32
  265. package/libs/chunk-XTQKWY7W.cjs.map +0 -1
  266. package/libs/inputs-f3a216db.d.ts +0 -45
  267. /package/libs/{chunk-PQ2K3BM6.cjs.map → chunk-2NRIP6RB.cjs.map} +0 -0
  268. /package/libs/{chunk-772NRB75.js.map → chunk-5QD3DWFI.js.map} +0 -0
  269. /package/libs/{chunk-3MKLDCKQ.cjs.map → chunk-6WTC4JXH.cjs.map} +0 -0
  270. /package/libs/{chunk-ZANSFMTD.js.map → chunk-7XPFW7CB.js.map} +0 -0
  271. /package/libs/{chunk-ROZI23GS.cjs.map → chunk-DKTHCQ5P.cjs.map} +0 -0
  272. /package/libs/{chunk-NGTJDDFO.js.map → chunk-IQ76HGVP.js.map} +0 -0
  273. /package/libs/{chunk-JJ43O4Y5.js.map → chunk-KK47SYZI.js.map} +0 -0
  274. /package/libs/{chunk-D4YLRWAO.cjs.map → chunk-QVW6W76L.cjs.map} +0 -0
  275. /package/libs/{chunk-LT5KZ2QW.cjs.map → chunk-US2I5GI7.cjs.map} +0 -0
  276. /package/libs/{chunk-B7F5FS6D.cjs.map → chunk-W2UIN7EV.cjs.map} +0 -0
  277. /package/libs/{chunk-P2DC76ZZ.cjs.map → chunk-W5TKWBFC.cjs.map} +0 -0
  278. /package/libs/{chunk-VUH3FXGJ.js.map → chunk-X3JCTEPD.js.map} +0 -0
  279. /package/libs/{chunk-5M57K4SW.js.map → chunk-Y2PFDELK.js.map} +0 -0
  280. /package/libs/{chunk-ETFLFC2S.js.map → chunk-ZFJ4U45S.js.map} +0 -0
@@ -1,3 +1,4 @@
1
+ @charset "UTF-8";
1
2
  *,
2
3
  *::before,
3
4
  *::after {
@@ -298,14 +299,7 @@ body > a[href^="#"]:focus {
298
299
  top: 0;
299
300
  }
300
301
 
301
- * + div,
302
- * + ul,
303
- * + section {
304
- margin-block-start: 1rem;
305
- }
306
- * + div:empty,
307
- * + ul:empty,
308
- * + section:empty {
302
+ div:empty {
309
303
  display: none;
310
304
  }
311
305
 
@@ -428,6 +422,63 @@ h6:has(span:first-of-type) > span {
428
422
  --title-6: var(--h6);
429
423
  }
430
424
 
425
+ /**
426
+ * Disabled State Utility Styles
427
+ *
428
+ * Provides accessible styling for disabled form elements using aria-disabled pattern.
429
+ * Meets WCAG 2.1 Level AA requirements for visual distinction and contrast.
430
+ *
431
+ * WCAG References:
432
+ * - WCAG 1.4.3 (Contrast Minimum): UI components require 3:1 contrast minimum
433
+ * - WCAG 2.1.1 (Keyboard): Elements remain focusable via keyboard
434
+ * - WCAG 4.1.2 (Name, Role, Value): aria-disabled properly announces state
435
+ *
436
+ * Usage:
437
+ * - Apply .is-disabled class OR aria-disabled="true" attribute
438
+ * - Customize via CSS custom properties (--disabled-opacity, --disabled-cursor, --disabled-color)
439
+ * - Default color (hsl(0 0% 40%)) ensures 3:1 contrast on white backgrounds
440
+ *
441
+ * WARNING: If overriding --disabled-color, ensure WCAG 1.4.3 compliance
442
+ * (minimum 3:1 contrast ratio for UI components)
443
+ */
444
+ .is-disabled,
445
+ [aria-disabled=true] {
446
+ /* CSS Custom Properties for theming */
447
+ --disabled-opacity: 0.6;
448
+ --disabled-cursor: not-allowed;
449
+ /* hsl(0 0% 40%) = #666666, provides 3:1 contrast on white (#ffffff) */
450
+ --disabled-color: hsl(0 0% 40%);
451
+ /* Apply disabled styles */
452
+ opacity: var(--disabled-opacity);
453
+ cursor: var(--disabled-cursor);
454
+ color: var(--disabled-color);
455
+ /**
456
+ * Maintain focus visibility for keyboard navigation (WCAG 2.4.7)
457
+ * Disabled elements must still be focusable and have visible focus indicators
458
+ *
459
+ * WCAG 2.4.7 requires focus indicators to have 3:1 contrast against both:
460
+ * - The background color
461
+ * - Adjacent non-focused component colors
462
+ *
463
+ * Theme authors: If providing a custom --focus-color, ensure it meets WCAG 2.4.7
464
+ * contrast requirements (3:1 minimum) against all background colors in your theme.
465
+ *
466
+ * Example theme customization:
467
+ * :root {
468
+ * --focus-color: #005fcc; // Ensure 3:1 contrast on your backgrounds
469
+ * }
470
+ */
471
+ }
472
+ .is-disabled:focus-visible,
473
+ [aria-disabled=true]:focus-visible {
474
+ /* Preserve focus ring from global styles */
475
+ outline-width: 0.125rem; /* 2px */
476
+ outline-style: solid;
477
+ outline-offset: 0.125rem; /* 2px */
478
+ /* Use custom focus color with currentColor fallback */
479
+ outline-color: var(--focus-color, currentColor);
480
+ }
481
+
431
482
  button {
432
483
  --btn-xs: 0.6875rem;
433
484
  --btn-sm: 0.8125rem;
@@ -546,21 +597,40 @@ button .btn-text:is(:hover, :focus) {
546
597
  filter: none;
547
598
  }
548
599
 
600
+ /**
601
+ * Tag Component Styles - WCAG 2.1 AA Compliant
602
+ *
603
+ * Provides visual styling for the Tag component with CSS custom properties
604
+ * for easy theming and variant support. All measurements use rem units
605
+ * for scalability and accessibility.
606
+ *
607
+ * Accessibility Features:
608
+ * - Color contrast ratios meet WCAG AA 4.5:1 minimum (WCAG 1.4.3)
609
+ * - Visual indicators beyond color (symbols via ::before) (WCAG 1.4.1)
610
+ * - Visible focus indicators with 3:1 contrast (WCAG 2.4.7)
611
+ */
612
+ /**
613
+ * Base Tag Styles
614
+ * Applied to all tag elements via role and data-tag attributes
615
+ */
549
616
  p[role=note],
550
617
  [role=note],
551
618
  small > span,
552
619
  [data-tag] {
553
- --beta: var(--warning-500, orange);
554
- --stable: var(--success-500, green);
555
- --production: rgb(44, 71, 151);
556
- --tag-px: 0.7rem;
557
- --tag-py: 0.2rem;
558
- --tag-fs: 0.8rem;
559
- --tag-radius: 99rem;
560
- --tag-bg: lightgray;
561
- --tag-fw: 500;
562
- --tag-color: currentColor;
563
- --tag-display: inline-block;
620
+ /* Variant color tokens - WCAG AA compliant colors */
621
+ --beta: #fbbf24; /* Amber: 6.94:1 contrast with black */
622
+ --stable: #0f7c3e; /* Dark green: 4.56:1 contrast with white */
623
+ --production: #1e3a8a; /* Dark blue: 8.59:1 contrast with white */
624
+ /* 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) */
627
+ --tag-fs: 0.8rem; /* Font size (12.8px at 16px base) */
628
+ --tag-radius: 99rem; /* Fully rounded pill shape */
629
+ --tag-bg: lightgray; /* Default background color */
630
+ --tag-fw: 500; /* Medium font weight */
631
+ --tag-color: currentColor; /* Default text color (inherits) */
632
+ --tag-display: inline-block; /* Display type */
633
+ /* Apply CSS custom properties */
564
634
  display: var(--tag-display);
565
635
  padding-inline: var(--tag-px);
566
636
  padding-block: var(--tag-py);
@@ -568,52 +638,110 @@ small > span,
568
638
  color: var(--tag-color);
569
639
  background-color: var(--tag-bg);
570
640
  border-radius: var(--tag-radius);
641
+ /**
642
+ * Focus Indicators (WCAG 2.4.7)
643
+ * Visible focus for keyboard navigation with 3:1 minimum contrast
644
+ */
645
+ /* Remove outline for mouse users while preserving for keyboard users */
646
+ /**
647
+ * Variant Modifiers
648
+ * Applied via data-tag attribute (e.g., data-tag="beta")
649
+ * Each variant includes both color AND visual symbol for accessibility (WCAG 1.4.1)
650
+ */
651
+ /* Alpha variant - early development stage */
652
+ /* Beta variant - pre-release version */
653
+ /* Stable variant - production-ready release */
654
+ /* Production variant - live environment indicator */
655
+ }
656
+ p[role=note]:focus-visible,
657
+ [role=note]:focus-visible,
658
+ small > span:focus-visible,
659
+ [data-tag]:focus-visible {
660
+ outline: 2px solid currentColor;
661
+ outline-offset: 2px;
662
+ }
663
+ p[role=note]:focus:not(:focus-visible),
664
+ [role=note]:focus:not(:focus-visible),
665
+ small > span:focus:not(:focus-visible),
666
+ [data-tag]:focus:not(:focus-visible) {
667
+ outline: none;
668
+ }
669
+ p[role=note][data-tag~=alpha],
670
+ [role=note][data-tag~=alpha],
671
+ small > span[data-tag~=alpha],
672
+ [data-tag][data-tag~=alpha] {
673
+ --tag-color: #000000; /* Black: maximum contrast with amber background */
674
+ --tag-bg: var(--beta);
675
+ /* Visual indicator beyond color - warning symbol */
676
+ }
677
+ p[role=note][data-tag~=alpha]::before,
678
+ [role=note][data-tag~=alpha]::before,
679
+ small > span[data-tag~=alpha]::before,
680
+ [data-tag][data-tag~=alpha]::before {
681
+ content: "⚠";
682
+ margin-inline-end: 0.25rem;
683
+ font-weight: 700;
684
+ aria-hidden: true;
571
685
  }
572
686
  p[role=note][data-tag~=beta],
573
687
  [role=note][data-tag~=beta],
574
688
  small > span[data-tag~=beta],
575
689
  [data-tag][data-tag~=beta] {
576
- background-color: var(--beta);
690
+ --tag-color: #000000; /* Black: maximum contrast with amber background */
691
+ --tag-bg: var(--beta);
692
+ /* Visual indicator beyond color - warning symbol */
693
+ }
694
+ p[role=note][data-tag~=beta]::before,
695
+ [role=note][data-tag~=beta]::before,
696
+ small > span[data-tag~=beta]::before,
697
+ [data-tag][data-tag~=beta]::before {
698
+ content: "⚠";
699
+ margin-inline-end: 0.25rem;
700
+ font-weight: 700;
701
+ aria-hidden: true;
577
702
  }
578
703
  p[role=note][data-tag~=stable],
579
704
  [role=note][data-tag~=stable],
580
705
  small > span[data-tag~=stable],
581
706
  [data-tag][data-tag~=stable] {
582
- --tag-cl: white;
707
+ --tag-color: #ffffff; /* White: 4.56:1 contrast with dark green */
583
708
  --tag-bg: var(--stable);
709
+ /* Visual indicator beyond color - checkmark symbol */
710
+ }
711
+ p[role=note][data-tag~=stable]::before,
712
+ [role=note][data-tag~=stable]::before,
713
+ small > span[data-tag~=stable]::before,
714
+ [data-tag][data-tag~=stable]::before {
715
+ content: "✓";
716
+ margin-inline-end: 0.25rem;
717
+ font-weight: 700;
718
+ aria-hidden: true;
584
719
  }
585
720
  p[role=note][data-tag~=production],
586
721
  [role=note][data-tag~=production],
587
722
  small > span[data-tag~=production],
588
723
  [data-tag][data-tag~=production] {
589
- --tag-color: white;
724
+ --tag-color: #ffffff; /* White: 8.59:1 contrast with dark blue */
590
725
  --tag-bg: var(--production);
591
- }
592
- p[role=note][data-tag~=beta],
593
- [role=note][data-tag~=beta],
594
- small > span[data-tag~=beta],
595
- [data-tag][data-tag~=beta] {
596
- --tag-color: currentColor;
597
- --tag-bg: var(--beta);
598
- }
599
- p[role=note][data-tag~=alpha],
600
- [role=note][data-tag~=alpha],
601
- small > span[data-tag~=alpha],
602
- [data-tag][data-tag~=alpha] {
603
- --tag-color: currentColor;
604
- --tag-bg: var(--beta);
605
- }
606
- p[role=note][data-tag~=beta],
607
- [role=note][data-tag~=beta],
608
- small > span[data-tag~=beta],
609
- [data-tag][data-tag~=beta] {
610
- --tag-color: currentColor;
611
- --tag-bg: var(--beta);
726
+ /* Visual indicator beyond color - live indicator symbol */
727
+ }
728
+ p[role=note][data-tag~=production]::before,
729
+ [role=note][data-tag~=production]::before,
730
+ small > span[data-tag~=production]::before,
731
+ [data-tag][data-tag~=production]::before {
732
+ content: "●";
733
+ margin-inline-end: 0.25rem;
734
+ font-weight: 700;
735
+ aria-hidden: true;
612
736
  }
613
737
 
738
+ /**
739
+ * Block-level tag modifier
740
+ * Applied when Tag renders as <p> element
741
+ */
614
742
  p[role=note] {
615
743
  --tag-display: block;
616
- --border-radius: 0.5rem;
744
+ --tag-radius: 0.5rem; /* Less rounded for block tags (8px at 16px base) */
617
745
  }
618
746
 
619
747
  /**
@@ -902,33 +1030,44 @@ details[open] > section {
902
1030
  }
903
1031
  }
904
1032
 
1033
+ /**
1034
+ * Link Component Styles
1035
+ *
1036
+ * Provides accessible, customizable link styles using CSS custom properties.
1037
+ * Supports standard text links, button-styled links, and pill variants.
1038
+ *
1039
+ * WCAG 2.1 AA Compliance:
1040
+ * - Focus indicators meet 2.4.7 (3:1 contrast minimum)
1041
+ * - Color contrast meets 1.4.3 (4.5:1 for normal text)
1042
+ * - Uses :focus-visible for better UX (keyboard vs mouse)
1043
+ */
905
1044
  a[href] {
906
- --link-decoration: none;
907
1045
  --link-color: #085ab7;
1046
+ --link-weight: 400;
1047
+ --link-fs: 1rem;
1048
+ --link-decoration: none;
1049
+ --link-decoration-offset: 0.09375rem;
1050
+ --link-decoration-thickness: 0.0625rem;
1051
+ --link-skip-ink: auto;
908
1052
  --link-bg: transparent;
1053
+ --link-radius: 0.25rem;
909
1054
  --link-px: 0;
910
1055
  --link-py: 0;
911
1056
  --link-transition: all 0.75s ease-in-out;
912
- --link-fs: 1rem;
913
- --link-radius: 0.25rem;
914
- --link-skip-ink: auto;
915
- --link-decoration-offset: 1.5px;
916
- --link-decoration-thickness: 3px;
917
- --link-decoration: color: var(--link-color) var(--link-decoration-offset)
918
- var(--link-decoration-thickness) var(--link-skip-ink);
919
- --link-decoration-thickness: 3px;
920
- --link-decoration: color: var(--link-color) var(--link-decoration-offset)
921
- var(--link-decoration-thickness) var(--link-skip-ink);
1057
+ --link-focus-color: currentColor;
1058
+ --link-focus-width: 0.125rem;
1059
+ --link-focus-offset: 0.125rem;
1060
+ --link-focus-style: solid;
922
1061
  color: var(--link-color);
923
1062
  font-size: var(--link-fs);
1063
+ font-weight: var(--link-weight);
924
1064
  text-decoration: var(--link-decoration);
925
1065
  text-underline-offset: var(--link-decoration-offset);
1066
+ text-decoration-thickness: var(--link-decoration-thickness);
926
1067
  text-decoration-skip-ink: var(--link-skip-ink);
927
1068
  background-color: var(--link-bg);
928
1069
  border-radius: var(--link-radius);
929
- background-color: var(--link-bg);
930
- border-radius: var(--link-radius);
931
- font-weight: var(--link-weight);
1070
+ transition: var(--link-transition);
932
1071
  }
933
1072
  a[href] > i,
934
1073
  a[href] > b {
@@ -939,41 +1078,51 @@ a[href]:hover {
939
1078
  --link-decoration: underline;
940
1079
  }
941
1080
  a[href]:focus {
942
- outline: none;
1081
+ outline: var(--link-focus-width) var(--link-focus-style) var(--link-focus-color);
1082
+ outline-offset: var(--link-focus-offset);
943
1083
  --link-decoration: underline;
944
1084
  }
1085
+ a[href]:focus-visible {
1086
+ outline: var(--link-focus-width) var(--link-focus-style) var(--link-focus-color);
1087
+ outline-offset: var(--link-focus-offset);
1088
+ }
945
1089
  a[href]:visited, a[href]:active {
946
1090
  --link-color: currentColor;
947
1091
  }
948
- a[href]:has(> b), a[href][data-link~=btn], a[href]:has(> i) {
1092
+ a[href]:has(> b), a[href][data-btn], a[href]:has(> i) {
949
1093
  --link-button-color: var(--link-color);
950
1094
  --link-bg: transparent;
951
1095
  --link-decoration: none;
952
- --link-border: 2px currentColor solid;
1096
+ --link-border-width: 0.125rem;
1097
+ --link-border-color: currentColor;
1098
+ --link-border-style: solid;
953
1099
  --link-fs: 0.9rem;
1100
+ color: var(--link-button-color);
954
1101
  background-color: var(--link-bg);
955
1102
  font-style: normal;
956
1103
  font-size: var(--link-fs);
957
- color: var(--link-button-color);
958
1104
  padding-inline: var(--link-fs);
959
1105
  padding-block: calc(var(--link-fs) - 0.4rem);
960
1106
  border-radius: var(--link-radius, 99rem);
961
1107
  display: inline-flex;
962
- outline: var(--link-border);
1108
+ align-items: center;
1109
+ justify-content: center;
1110
+ outline: var(--link-border-width) var(--link-border-color) var(--link-border-style);
963
1111
  --scale-transition: transform 0.25s ease;
964
1112
  --scale: scale(1);
965
1113
  --scale-to: scale(1.05);
966
1114
  transform: var(--scale);
967
1115
  transition: var(--scale-transition);
968
1116
  }
969
- a[href]:has(> b):focus, a[href][data-link~=btn]:focus, a[href]:has(> i):focus {
970
- outline: var(--link-border);
1117
+ a[href]:has(> b):focus, a[href]:has(> b):focus-visible, a[href][data-btn]:focus, a[href][data-btn]:focus-visible, a[href]:has(> i):focus, a[href]:has(> i):focus-visible {
1118
+ outline: var(--link-border-width) var(--link-border-color) var(--link-border-style);
1119
+ outline-offset: var(--link-focus-offset);
971
1120
  --link-decoration: none;
972
1121
  }
973
- a[href]:has(> b):hover, a[href][data-link~=btn]:hover, a[href]:has(> i):hover {
1122
+ a[href]:has(> b):hover, a[href][data-btn]:hover, a[href]:has(> i):hover {
974
1123
  --link-decoration: none;
975
1124
  }
976
- a[href]:has(> b):hover, a[href][data-link~=btn]:hover, a[href]:has(> i):hover {
1125
+ a[href]:has(> b):hover, a[href][data-btn]:hover, a[href]:has(> i):hover {
977
1126
  transform: var(--scale-to);
978
1127
  }
979
1128
  a[href][data-link~=pill], a[href]:has(> i) {
@@ -981,14 +1130,10 @@ a[href][data-link~=pill], a[href]:has(> i) {
981
1130
  --link-decoration: none;
982
1131
  font-style: normal;
983
1132
  }
984
- a[href][data-link~=pill]:hover, a[href][data-link~=pill]:focus, a[href]:has(> i):hover, a[href]:has(> i):focus {
1133
+ a[href][data-link~=pill]:hover, a[href][data-link~=pill]:focus, a[href][data-link~=pill]:focus-visible, a[href]:has(> i):hover, a[href]:has(> i):focus, a[href]:has(> i):focus-visible {
985
1134
  --link-decoration: none;
986
1135
  }
987
1136
 
988
- header > section {
989
- width: auto;
990
- }
991
-
992
1137
  header,
993
1138
  [data-hero],
994
1139
  [data-grid~=overlay] {
@@ -1394,13 +1539,15 @@ sup:has(> span)[data-badge~=rounded] span {
1394
1539
  }
1395
1540
 
1396
1541
  body > nav,
1397
- [aria-label~=navbar], .navbar {
1542
+ [aria-label~=navbar],
1543
+ .navbar {
1398
1544
  padding-inline: var(--nav-px, 1rem);
1399
1545
  min-height: var(--nav-h, fit-content);
1400
1546
  }
1401
1547
  @media (max-width: 580px) {
1402
1548
  body > nav,
1403
- [aria-label~=navbar], .navbar {
1549
+ [aria-label~=navbar],
1550
+ .navbar {
1404
1551
  flex-direction: column;
1405
1552
  height: fit-content;
1406
1553
  min-height: fit-content;
@@ -1409,7 +1556,8 @@ body > nav,
1409
1556
  }
1410
1557
  }
1411
1558
  body > nav ul > li,
1412
- [aria-label~=navbar] ul > li, .navbar ul > li {
1559
+ [aria-label~=navbar] ul > li,
1560
+ .navbar ul > li {
1413
1561
  display: flex;
1414
1562
  align-items: center;
1415
1563
  list-style: none;
@@ -1419,15 +1567,21 @@ body > nav ul > li,
1419
1567
  padding-inline: var(--nav-px, 0.75rem);
1420
1568
  }
1421
1569
  body > nav ul > li:hover,
1422
- [aria-label~=navbar] ul > li:hover, .navbar ul > li:hover {
1423
- background-color: var(--nav-hov-bg, whitesmoke);
1570
+ [aria-label~=navbar] ul > li:hover,
1571
+ .navbar ul > li:hover {
1572
+ background-color: var(--nav-hov-bg, #e8e8e8);
1424
1573
  }
1425
1574
  body > nav ul > li:hover:where(img),
1426
- [aria-label~=navbar] ul > li:hover:where(img), .navbar ul > li:hover:where(img) {
1575
+ [aria-label~=navbar] ul > li:hover:where(img),
1576
+ .navbar ul > li:hover:where(img) {
1427
1577
  background-color: transparent;
1428
1578
  }
1429
1579
 
1430
1580
  nav {
1581
+ --nav-focus-color: currentColor;
1582
+ --nav-focus-width: 0.125rem;
1583
+ --nav-focus-offset: 0.125rem;
1584
+ --nav-focus-style: solid;
1431
1585
  display: var(--nav-dsp, flex);
1432
1586
  flex-direction: var(--nav-direction, row);
1433
1587
  width: var(--nav-w, auto);
@@ -1446,6 +1600,7 @@ nav > ul {
1446
1600
  align-items: var(--nav-align, center);
1447
1601
  padding-inline: var(--nav-px, 1rem);
1448
1602
  padding-block: var(--nav-py, 0);
1603
+ margin-block-end: var(--nav-mb, 0);
1449
1604
  height: 100%;
1450
1605
  }
1451
1606
  nav > section[data-list~=block],
@@ -1476,6 +1631,22 @@ nav[data-variant] {
1476
1631
  nav > div {
1477
1632
  margin-block-start: 0;
1478
1633
  }
1634
+ nav a:focus {
1635
+ outline: var(--nav-focus-width) var(--nav-focus-style) var(--nav-focus-color);
1636
+ outline-offset: var(--nav-focus-offset);
1637
+ }
1638
+ nav a:focus-visible {
1639
+ outline: var(--nav-focus-width) var(--nav-focus-style) var(--nav-focus-color);
1640
+ outline-offset: var(--nav-focus-offset);
1641
+ }
1642
+ nav button:focus {
1643
+ outline: var(--nav-focus-width) var(--nav-focus-style) var(--nav-focus-color);
1644
+ outline-offset: var(--nav-focus-offset);
1645
+ }
1646
+ nav button:focus-visible {
1647
+ outline: var(--nav-focus-width) var(--nav-focus-style) var(--nav-focus-color);
1648
+ outline-offset: var(--nav-focus-offset);
1649
+ }
1479
1650
 
1480
1651
  :root {
1481
1652
  --input-border-color: gray;
@@ -1610,6 +1781,217 @@ nav[data-breadcrumb] ol li a[href][aria-current] {
1610
1781
  text-decoration: none;
1611
1782
  }
1612
1783
 
1784
+ /**
1785
+ * List Component Styles
1786
+ *
1787
+ * Provides default styling for ul, ol, and dl list elements with CSS custom
1788
+ * properties for theming. Uses rem units exclusively for accessibility.
1789
+ *
1790
+ * @base-rem: 16px = 1rem
1791
+ */
1792
+ ul,
1793
+ ol,
1794
+ dl {
1795
+ --list-margin-top: 0;
1796
+ --list-margin-bottom: 1rem;
1797
+ --list-margin-inline: 0;
1798
+ --list-padding-inline: 2.5rem;
1799
+ --list-gap: 0.5rem;
1800
+ --list-marker-color: currentColor;
1801
+ --list-marker-size: 1em;
1802
+ --list-marker-offset: 0.5rem;
1803
+ --list-font-size: 1rem;
1804
+ --list-line-height: 1.5;
1805
+ --list-font-family: inherit;
1806
+ --list-color: inherit;
1807
+ --list-item-margin-bottom: 0.5rem;
1808
+ --list-item-padding-inline: 0;
1809
+ --list-item-padding-block: 0;
1810
+ --dt-font-weight: 600;
1811
+ --dt-margin-bottom: 0.25rem;
1812
+ --dd-margin-inline-start: 2rem;
1813
+ --dd-margin-bottom: 1rem;
1814
+ }
1815
+
1816
+ ul,
1817
+ ol,
1818
+ dl {
1819
+ margin-block-start: var(--list-margin-top);
1820
+ margin-block-end: var(--list-margin-bottom);
1821
+ margin-inline: var(--list-margin-inline);
1822
+ padding-inline-start: var(--list-padding-inline);
1823
+ font-size: var(--list-font-size);
1824
+ line-height: var(--list-line-height);
1825
+ font-family: var(--list-font-family);
1826
+ color: var(--list-color);
1827
+ }
1828
+ ul ul,
1829
+ ul ol,
1830
+ ul dl,
1831
+ ol ul,
1832
+ ol ol,
1833
+ ol dl,
1834
+ dl ul,
1835
+ dl ol,
1836
+ dl dl {
1837
+ margin-block-start: var(--list-gap);
1838
+ margin-block-end: var(--list-gap);
1839
+ }
1840
+
1841
+ ul {
1842
+ list-style-type: disc;
1843
+ }
1844
+ ul::marker {
1845
+ color: var(--list-marker-color);
1846
+ font-size: var(--list-marker-size);
1847
+ }
1848
+ ul ul {
1849
+ list-style-type: circle;
1850
+ }
1851
+ ul ul ul {
1852
+ list-style-type: square;
1853
+ }
1854
+
1855
+ ol {
1856
+ list-style-type: decimal;
1857
+ }
1858
+ ol::marker {
1859
+ color: var(--list-marker-color);
1860
+ font-size: var(--list-marker-size);
1861
+ }
1862
+ ol ol {
1863
+ list-style-type: lower-alpha;
1864
+ }
1865
+ ol ol ol {
1866
+ list-style-type: lower-roman;
1867
+ }
1868
+
1869
+ li {
1870
+ margin-block-end: var(--list-item-margin-bottom);
1871
+ padding-inline: var(--list-item-padding-inline);
1872
+ padding-block: var(--list-item-padding-block);
1873
+ padding-inline-start: var(--list-marker-offset);
1874
+ }
1875
+ li:last-child {
1876
+ margin-block-end: 0;
1877
+ }
1878
+
1879
+ dl {
1880
+ padding-inline-start: 0;
1881
+ }
1882
+
1883
+ dt {
1884
+ font-weight: var(--dt-font-weight);
1885
+ margin-block-end: var(--dt-margin-bottom);
1886
+ padding-inline: var(--list-item-padding-inline);
1887
+ padding-block: var(--list-item-padding-block);
1888
+ }
1889
+
1890
+ dd {
1891
+ margin-inline-start: var(--dd-margin-inline-start);
1892
+ margin-block-end: var(--dd-margin-bottom);
1893
+ padding-inline: var(--list-item-padding-inline);
1894
+ padding-block: var(--list-item-padding-block);
1895
+ }
1896
+ dd:last-child {
1897
+ margin-block-end: 0;
1898
+ }
1899
+
1900
+ ul[data-variant=none],
1901
+ ol[data-variant=none],
1902
+ dl[data-variant=none] {
1903
+ list-style-type: none;
1904
+ padding-inline-start: 0;
1905
+ }
1906
+ ul[data-variant=none] li,
1907
+ ol[data-variant=none] li,
1908
+ dl[data-variant=none] li {
1909
+ padding-inline-start: 0;
1910
+ }
1911
+ ul[data-variant=inline],
1912
+ ol[data-variant=inline],
1913
+ dl[data-variant=inline] {
1914
+ display: flex;
1915
+ flex-direction: row;
1916
+ flex-wrap: wrap;
1917
+ gap: var(--list-gap);
1918
+ padding-inline-start: 0;
1919
+ list-style-type: none;
1920
+ }
1921
+ ul[data-variant=inline] li,
1922
+ ol[data-variant=inline] li,
1923
+ dl[data-variant=inline] li {
1924
+ padding-inline-start: 0;
1925
+ margin-block-end: 0;
1926
+ }
1927
+ ul[data-variant=custom],
1928
+ ol[data-variant=custom],
1929
+ dl[data-variant=custom] {
1930
+ list-style-type: none;
1931
+ padding-inline-start: 0;
1932
+ }
1933
+ ul[data-variant=custom] li,
1934
+ ol[data-variant=custom] li,
1935
+ dl[data-variant=custom] li {
1936
+ position: relative;
1937
+ padding-inline-start: calc(var(--list-marker-size) + var(--list-marker-offset));
1938
+ }
1939
+ ul[data-variant=custom] li::before,
1940
+ ol[data-variant=custom] li::before,
1941
+ dl[data-variant=custom] li::before {
1942
+ content: var(--list-marker-content, "•");
1943
+ color: var(--list-marker-color);
1944
+ font-size: var(--list-marker-size);
1945
+ position: absolute;
1946
+ left: 0;
1947
+ }
1948
+ ul[data-variant=compact],
1949
+ ol[data-variant=compact],
1950
+ dl[data-variant=compact] {
1951
+ --list-gap: 0.25rem;
1952
+ --list-item-margin-bottom: 0.25rem;
1953
+ --list-margin-bottom: 0.5rem;
1954
+ }
1955
+ ul[data-variant=spaced],
1956
+ ol[data-variant=spaced],
1957
+ dl[data-variant=spaced] {
1958
+ --list-gap: 1rem;
1959
+ --list-item-margin-bottom: 1rem;
1960
+ }
1961
+
1962
+ li:has(a:focus-visible),
1963
+ li:has(button:focus-visible) {
1964
+ outline: 0.0625rem solid transparent;
1965
+ }
1966
+
1967
+ li:has(> a),
1968
+ li:has(> button) {
1969
+ margin-block-end: 0;
1970
+ }
1971
+
1972
+ @media print {
1973
+ ul,
1974
+ ol,
1975
+ dl {
1976
+ --list-margin-bottom: 0.5rem;
1977
+ --list-item-margin-bottom: 0.25rem;
1978
+ }
1979
+ ul,
1980
+ ol {
1981
+ list-style-position: inside;
1982
+ }
1983
+ }
1984
+ @media (prefers-reduced-motion: reduce) {
1985
+ ul,
1986
+ ol,
1987
+ dl,
1988
+ li,
1989
+ dt,
1990
+ dd {
1991
+ animation: none;
1992
+ transition: none;
1993
+ }
1994
+ }
1613
1995
  /* Screen reader only utility class */
1614
1996
  .sr-only {
1615
1997
  position: absolute;
@@ -1729,9 +2111,7 @@ nav[data-breadcrumb] ol li a[href][aria-current] {
1729
2111
  }
1730
2112
  [role=alert] button[data-btn~=icon] {
1731
2113
  --btn-bg: transparent;
1732
- }
1733
- [role=alert] * + div {
1734
- margin-block-start: var(--spc-1);
2114
+ align-items: flex-start;
1735
2115
  }
1736
2116
  [role=alert][data-variant=filled] {
1737
2117
  border: none;