@fpkit/acss 3.1.0 → 3.2.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 (239) hide show
  1. package/libs/{chunk-2NRIP6RB.cjs → chunk-2C3YLBWP.cjs} +3 -3
  2. package/libs/{chunk-NWJDAHP6.cjs → chunk-2GJHKWEK.cjs} +3 -3
  3. package/libs/{chunk-FVROL3V5.js → chunk-2JCDEC32.js} +3 -3
  4. package/libs/{chunk-IRLFZ3OL.js → chunk-3XJC4XUG.js} +2 -2
  5. package/libs/{chunk-23ANBDCR.js → chunk-4I5MF54P.js} +3 -3
  6. package/libs/chunk-4I5MF54P.js.map +1 -0
  7. package/libs/chunk-5CJPTDK3.cjs +31 -0
  8. package/libs/chunk-5CJPTDK3.cjs.map +1 -0
  9. package/libs/{chunk-E4OSROCA.cjs → chunk-5QSNJQVH.cjs} +3 -3
  10. package/libs/{chunk-O3JIHC5M.cjs → chunk-6BUJZ4DJ.cjs} +3 -3
  11. package/libs/{chunk-WXBFBWYF.cjs → chunk-AFINOD2L.cjs} +3 -3
  12. package/libs/{chunk-HRRHPLER.js → chunk-AWZLSWDO.js} +2 -2
  13. package/libs/chunk-DDSXKOUB.js +7 -0
  14. package/libs/chunk-DDSXKOUB.js.map +1 -0
  15. package/libs/{chunk-CWRNJA4P.js → chunk-DIJBIOFE.js} +3 -3
  16. package/libs/chunk-EJ6KYBFE.cjs +13 -0
  17. package/libs/chunk-EJ6KYBFE.cjs.map +1 -0
  18. package/libs/{chunk-GUJSMQ3V.cjs → chunk-EKJYOCLY.cjs} +3 -3
  19. package/libs/{chunk-X5RKCLDC.cjs → chunk-F64GE6RG.cjs} +4 -4
  20. package/libs/chunk-FMIM3332.js +8 -0
  21. package/libs/chunk-FMIM3332.js.map +1 -0
  22. package/libs/{chunk-5RAWNUVD.js → chunk-IBUTNPTQ.js} +2 -2
  23. package/libs/chunk-IWP4VJEP.cjs +18 -0
  24. package/libs/chunk-IWP4VJEP.cjs.map +1 -0
  25. package/libs/{chunk-ZFJ4U45S.js → chunk-KDMX3FAW.js} +2 -2
  26. package/libs/{chunk-DYFAUAB7.cjs → chunk-LXODKKA3.cjs} +4 -4
  27. package/libs/chunk-M7JLT62Q.js +9 -0
  28. package/libs/chunk-M7JLT62Q.js.map +1 -0
  29. package/libs/{chunk-IQ76HGVP.js → chunk-MBWI67UT.js} +2 -2
  30. package/libs/{chunk-O5XAJ7BY.cjs → chunk-NCGVF2QS.cjs} +4 -4
  31. package/libs/{chunk-W2UIN7EV.cjs → chunk-NPWHQVYB.cjs} +3 -3
  32. package/libs/{chunk-G55UJ53G.cjs → chunk-NZVSXRTB.cjs} +3 -3
  33. package/libs/chunk-NZVSXRTB.cjs.map +1 -0
  34. package/libs/{chunk-43TK2ICH.js → chunk-PMWL5XZ4.js} +3 -3
  35. package/libs/{chunk-KVKQLRJG.js → chunk-TF3GQKOY.js} +2 -2
  36. package/libs/chunk-TNEJXNZA.cjs +22 -0
  37. package/libs/chunk-TNEJXNZA.cjs.map +1 -0
  38. package/libs/{chunk-IEB64SWY.js → chunk-U5VA34SU.js} +2 -2
  39. package/libs/chunk-UGMP72J2.js +8 -0
  40. package/libs/chunk-UGMP72J2.js.map +1 -0
  41. package/libs/{chunk-MGPWZRBX.cjs → chunk-URBGDUFN.cjs} +6 -6
  42. package/libs/{chunk-QKHPHMG2.js → chunk-ZF6Y7W57.js} +5 -5
  43. package/libs/component-props-50e69975.d.ts +66 -0
  44. package/libs/components/box/box.css +1 -0
  45. package/libs/components/box/box.css.map +1 -0
  46. package/libs/components/box/box.min.css +3 -0
  47. package/libs/components/breadcrumbs/breadcrumb.cjs +6 -6
  48. package/libs/components/breadcrumbs/breadcrumb.js +3 -3
  49. package/libs/components/button.cjs +4 -4
  50. package/libs/components/button.d.cts +10 -3
  51. package/libs/components/button.d.ts +10 -3
  52. package/libs/components/button.js +2 -2
  53. package/libs/components/card.cjs +7 -7
  54. package/libs/components/card.d.cts +13 -85
  55. package/libs/components/card.d.ts +13 -85
  56. package/libs/components/card.js +2 -2
  57. package/libs/components/cards/card.css +1 -1
  58. package/libs/components/cards/card.css.map +1 -1
  59. package/libs/components/cards/card.min.css +2 -2
  60. package/libs/components/cluster/cluster.css +1 -0
  61. package/libs/components/cluster/cluster.css.map +1 -0
  62. package/libs/components/cluster/cluster.min.css +3 -0
  63. package/libs/components/dialog/dialog.cjs +7 -7
  64. package/libs/components/dialog/dialog.js +5 -5
  65. package/libs/components/form/fields.cjs +4 -4
  66. package/libs/components/form/fields.js +2 -2
  67. package/libs/components/form/textarea.cjs +4 -4
  68. package/libs/components/form/textarea.js +2 -2
  69. package/libs/components/grid/grid.css +1 -0
  70. package/libs/components/grid/grid.css.map +1 -0
  71. package/libs/components/grid/grid.min.css +3 -0
  72. package/libs/components/heading/heading.cjs +3 -3
  73. package/libs/components/heading/heading.js +2 -2
  74. package/libs/components/icons/icon.cjs +4 -4
  75. package/libs/components/icons/icon.d.cts +2 -2
  76. package/libs/components/icons/icon.d.ts +2 -2
  77. package/libs/components/icons/icon.js +2 -2
  78. package/libs/components/link/link.cjs +6 -6
  79. package/libs/components/link/link.js +2 -2
  80. package/libs/components/list/list.cjs +5 -5
  81. package/libs/components/list/list.js +2 -2
  82. package/libs/components/modal.cjs +4 -4
  83. package/libs/components/modal.d.cts +1 -1
  84. package/libs/components/modal.d.ts +1 -1
  85. package/libs/components/modal.js +3 -3
  86. package/libs/components/nav/nav.cjs +7 -7
  87. package/libs/components/nav/nav.js +3 -3
  88. package/libs/components/popover/popover.cjs +4 -4
  89. package/libs/components/popover/popover.d.cts +1 -1
  90. package/libs/components/popover/popover.d.ts +1 -1
  91. package/libs/components/popover/popover.js +1 -1
  92. package/libs/components/stack/stack.css +1 -0
  93. package/libs/components/stack/stack.css.map +1 -0
  94. package/libs/components/stack/stack.min.css +3 -0
  95. package/libs/components/tables/table.cjs +4 -4
  96. package/libs/components/tables/table.d.cts +2 -2
  97. package/libs/components/tables/table.d.ts +2 -2
  98. package/libs/components/tables/table.js +1 -1
  99. package/libs/components/text/text.cjs +5 -5
  100. package/libs/components/text/text.js +2 -2
  101. package/libs/hooks.cjs +4 -4
  102. package/libs/hooks.js +3 -3
  103. package/libs/{icons-287fce3a.d.ts → icons-df8e744f.d.ts} +1 -1
  104. package/libs/icons.cjs +3 -3
  105. package/libs/icons.d.cts +2 -2
  106. package/libs/icons.d.ts +2 -2
  107. package/libs/icons.js +2 -2
  108. package/libs/index.cjs +74 -73
  109. package/libs/index.cjs.map +1 -1
  110. package/libs/index.css +1 -1
  111. package/libs/index.css.map +1 -1
  112. package/libs/index.d.cts +925 -6
  113. package/libs/index.d.ts +925 -6
  114. package/libs/index.js +30 -30
  115. package/libs/index.js.map +1 -1
  116. package/package.json +2 -2
  117. package/src/App.tsx +1 -3
  118. package/src/components/alert/STYLES.mdx +790 -0
  119. package/src/components/badge/STYLES.mdx +610 -0
  120. package/src/components/box/README.mdx +401 -0
  121. package/src/components/box/STYLES.mdx +360 -0
  122. package/src/components/box/box.scss +245 -0
  123. package/src/components/box/box.stories.tsx +395 -0
  124. package/src/components/box/box.test.tsx +425 -0
  125. package/src/components/box/box.tsx +170 -0
  126. package/src/components/box/box.types.ts +166 -0
  127. package/src/components/breadcrumbs/STYLES.mdx +99 -0
  128. package/src/components/breadcrumbs/bc-item.tsx +0 -1
  129. package/src/components/buttons/STYLES.mdx +766 -0
  130. package/src/components/cards/STYLES.mdx +835 -0
  131. package/src/components/cards/card.scss +29 -21
  132. package/src/components/cards/card.tsx +13 -3
  133. package/src/components/cards/card.types.ts +13 -0
  134. package/src/components/cluster/README.mdx +595 -0
  135. package/src/components/cluster/STYLES.mdx +626 -0
  136. package/src/components/cluster/cluster.scss +86 -0
  137. package/src/components/cluster/cluster.stories.tsx +385 -0
  138. package/src/components/cluster/cluster.test.tsx +655 -0
  139. package/src/components/cluster/cluster.tsx +94 -0
  140. package/src/components/cluster/cluster.types.ts +75 -0
  141. package/src/components/details/STYLES.mdx +445 -0
  142. package/src/components/dialog/STYLES.mdx +888 -0
  143. package/src/components/flexbox/STYLES.mdx +857 -0
  144. package/src/components/flexbox/flex.stories.tsx +842 -141
  145. package/src/components/flexbox/flex.types.ts +25 -6
  146. package/src/components/form/STYLES.mdx +821 -0
  147. package/src/components/grid/README.mdx +709 -0
  148. package/src/components/grid/STYLES.mdx +785 -0
  149. package/src/components/grid/grid.scss +287 -0
  150. package/src/components/grid/grid.stories.tsx +486 -0
  151. package/src/components/grid/grid.test.tsx +981 -0
  152. package/src/components/grid/grid.tsx +222 -0
  153. package/src/components/grid/grid.types.ts +344 -0
  154. package/src/components/icons/STYLES.mdx +56 -0
  155. package/src/components/icons/components/arrow-right.tsx +0 -5
  156. package/src/components/images/STYLES.mdx +75 -0
  157. package/src/components/kit.tsx +8 -4
  158. package/src/components/layout/STYLES.mdx +556 -0
  159. package/src/components/link/STYLES.mdx +75 -0
  160. package/src/components/list/STYLES.mdx +631 -0
  161. package/src/components/nav/STYLES.mdx +460 -0
  162. package/src/components/popover/popover.tsx +1 -1
  163. package/src/components/progress/STYLES.mdx +64 -0
  164. package/src/components/stack/README.mdx +400 -0
  165. package/src/components/stack/STYLES.mdx +414 -0
  166. package/src/components/stack/stack.scss +109 -0
  167. package/src/components/stack/stack.stories.tsx +559 -0
  168. package/src/components/stack/stack.test.tsx +426 -0
  169. package/src/components/stack/stack.tsx +141 -0
  170. package/src/components/stack/stack.types.ts +133 -0
  171. package/src/components/tables/table-elements.tsx +1 -1
  172. package/src/components/tables/table.tsx +2 -2
  173. package/src/components/tag/STYLES.mdx +105 -0
  174. package/src/components/text-to-speech/STYLES.mdx +80 -0
  175. package/src/components/text-to-speech/TextToSpeech.tsx +0 -4
  176. package/src/components/text-to-speech/useTextToSpeech.tsx +2 -6
  177. package/src/components/ui.tsx +3 -3
  178. package/src/decorators/instructions.tsx +22 -18
  179. package/src/hooks/popover/popover.tsx +1 -1
  180. package/src/index.scss +5 -1
  181. package/src/index.ts +305 -12
  182. package/src/sass/GLOBALS-STYLES.md +631 -0
  183. package/src/sass/_globals.scss +45 -24
  184. package/src/styles/box/box.css +220 -0
  185. package/src/styles/box/box.css.map +1 -0
  186. package/src/styles/cards/card.css +22 -17
  187. package/src/styles/cards/card.css.map +1 -1
  188. package/src/styles/cluster/cluster.css +71 -0
  189. package/src/styles/cluster/cluster.css.map +1 -0
  190. package/src/styles/grid/grid.css +238 -0
  191. package/src/styles/grid/grid.css.map +1 -0
  192. package/src/styles/index.css +667 -49
  193. package/src/styles/index.css.map +1 -1
  194. package/src/styles/stack/stack.css +86 -0
  195. package/src/styles/stack/stack.css.map +1 -0
  196. package/src/types/component-props.ts +42 -13
  197. package/src/types/layout-primitives.ts +48 -0
  198. package/src/types/shared.ts +10 -26
  199. package/libs/chunk-23ANBDCR.js.map +0 -1
  200. package/libs/chunk-5QD3DWFI.js +0 -9
  201. package/libs/chunk-5QD3DWFI.js.map +0 -1
  202. package/libs/chunk-6WTC4JXH.cjs +0 -31
  203. package/libs/chunk-6WTC4JXH.cjs.map +0 -1
  204. package/libs/chunk-ENTCUJ3A.cjs +0 -13
  205. package/libs/chunk-ENTCUJ3A.cjs.map +0 -1
  206. package/libs/chunk-G55UJ53G.cjs.map +0 -1
  207. package/libs/chunk-HHLNOC5T.js +0 -7
  208. package/libs/chunk-HHLNOC5T.js.map +0 -1
  209. package/libs/chunk-KK47SYZI.js +0 -8
  210. package/libs/chunk-KK47SYZI.js.map +0 -1
  211. package/libs/chunk-US2I5GI7.cjs +0 -22
  212. package/libs/chunk-US2I5GI7.cjs.map +0 -1
  213. package/libs/chunk-W5TKWBFC.cjs +0 -18
  214. package/libs/chunk-W5TKWBFC.cjs.map +0 -1
  215. package/libs/chunk-Y2PFDELK.js +0 -8
  216. package/libs/chunk-Y2PFDELK.js.map +0 -1
  217. package/libs/component-props-67d978a2.d.ts +0 -38
  218. /package/libs/{chunk-2NRIP6RB.cjs.map → chunk-2C3YLBWP.cjs.map} +0 -0
  219. /package/libs/{chunk-NWJDAHP6.cjs.map → chunk-2GJHKWEK.cjs.map} +0 -0
  220. /package/libs/{chunk-FVROL3V5.js.map → chunk-2JCDEC32.js.map} +0 -0
  221. /package/libs/{chunk-IRLFZ3OL.js.map → chunk-3XJC4XUG.js.map} +0 -0
  222. /package/libs/{chunk-E4OSROCA.cjs.map → chunk-5QSNJQVH.cjs.map} +0 -0
  223. /package/libs/{chunk-O3JIHC5M.cjs.map → chunk-6BUJZ4DJ.cjs.map} +0 -0
  224. /package/libs/{chunk-WXBFBWYF.cjs.map → chunk-AFINOD2L.cjs.map} +0 -0
  225. /package/libs/{chunk-HRRHPLER.js.map → chunk-AWZLSWDO.js.map} +0 -0
  226. /package/libs/{chunk-CWRNJA4P.js.map → chunk-DIJBIOFE.js.map} +0 -0
  227. /package/libs/{chunk-GUJSMQ3V.cjs.map → chunk-EKJYOCLY.cjs.map} +0 -0
  228. /package/libs/{chunk-X5RKCLDC.cjs.map → chunk-F64GE6RG.cjs.map} +0 -0
  229. /package/libs/{chunk-5RAWNUVD.js.map → chunk-IBUTNPTQ.js.map} +0 -0
  230. /package/libs/{chunk-ZFJ4U45S.js.map → chunk-KDMX3FAW.js.map} +0 -0
  231. /package/libs/{chunk-DYFAUAB7.cjs.map → chunk-LXODKKA3.cjs.map} +0 -0
  232. /package/libs/{chunk-IQ76HGVP.js.map → chunk-MBWI67UT.js.map} +0 -0
  233. /package/libs/{chunk-O5XAJ7BY.cjs.map → chunk-NCGVF2QS.cjs.map} +0 -0
  234. /package/libs/{chunk-W2UIN7EV.cjs.map → chunk-NPWHQVYB.cjs.map} +0 -0
  235. /package/libs/{chunk-43TK2ICH.js.map → chunk-PMWL5XZ4.js.map} +0 -0
  236. /package/libs/{chunk-KVKQLRJG.js.map → chunk-TF3GQKOY.js.map} +0 -0
  237. /package/libs/{chunk-IEB64SWY.js.map → chunk-U5VA34SU.js.map} +0 -0
  238. /package/libs/{chunk-MGPWZRBX.cjs.map → chunk-URBGDUFN.cjs.map} +0 -0
  239. /package/libs/{chunk-QKHPHMG2.js.map → chunk-ZF6Y7W57.js.map} +0 -0
@@ -0,0 +1,631 @@
1
+ # Global Styles Documentation
2
+
3
+ Typography and layout styling with CSS custom properties for @fpkit/acss.
4
+
5
+ ## Overview
6
+
7
+ Global styles provide baseline typography, layout, and semantic HTML element styling across your application. All styles use:
8
+
9
+ - **Rem units** for responsive sizing (1rem = 16px default)
10
+ - **Logical properties** for internationalization (`padding-inline`, `margin-block`)
11
+ - **CSS custom properties** for complete customization
12
+ - **Semantic naming** following project conventions
13
+
14
+ ---
15
+
16
+ ## Table of Contents
17
+
18
+ - [Typography](#typography)
19
+ - [Horizontal Rule (HR)](#horizontal-rule-hr)
20
+ - [Blockquote](#blockquote)
21
+ - [Headings](#headings)
22
+ - [Paragraphs](#paragraphs)
23
+ - [Lists](#lists)
24
+ - [Layout](#layout)
25
+ - [Body](#body)
26
+ - [Sections](#sections)
27
+ - [Skip Links](#skip-links)
28
+ - [Utility Variables](#utility-variables)
29
+ - [Best Practices](#best-practices)
30
+
31
+ ---
32
+
33
+ ## Typography
34
+
35
+ ### Horizontal Rule (HR)
36
+
37
+ Horizontal rules for content dividers.
38
+
39
+ #### CSS Variables
40
+
41
+ | Variable | Default | Description |
42
+ |----------|---------|-------------|
43
+ | `--hr-border-width` | `0.0625rem` | Line thickness (1px) |
44
+ | `--hr-border-style` | `solid` | Line style (`solid`, `dashed`, `dotted`) |
45
+ | `--hr-border-color` | `var(--color-border-subtle, #d3d3d3)` | Line color (uses global theme) |
46
+ | `--hr-margin-block` | `1.5rem` | Vertical spacing above and below |
47
+
48
+ #### Default Styles
49
+
50
+ ```css
51
+ hr {
52
+ --hr-border-width: 0.0625rem;
53
+ --hr-border-style: solid;
54
+ --hr-border-color: var(--color-border-subtle, #d3d3d3);
55
+ --hr-margin-block: 1.5rem;
56
+
57
+ border: none;
58
+ border-bottom: var(--hr-border-width) var(--hr-border-style) var(--hr-border-color);
59
+ margin-block: var(--hr-margin-block);
60
+ display: block;
61
+ min-width: 100%;
62
+ }
63
+ ```
64
+
65
+ #### Customization Examples
66
+
67
+ **Thicker HR:**
68
+ ```css
69
+ hr.thick {
70
+ --hr-border-width: 0.125rem; /* 2px */
71
+ --hr-border-color: #000000;
72
+ }
73
+ ```
74
+
75
+ **Dashed Divider:**
76
+ ```css
77
+ hr.dashed {
78
+ --hr-border-style: dashed;
79
+ }
80
+ ```
81
+
82
+ **Minimal HR with Extra Spacing:**
83
+ ```css
84
+ hr.minimal {
85
+ --hr-border-width: 0.0625rem;
86
+ --hr-border-color: var(--color-border-subtle);
87
+ --hr-margin-block: 3rem;
88
+ }
89
+ ```
90
+
91
+ **Accent HR:**
92
+ ```css
93
+ hr.accent {
94
+ --hr-border-width: 0.1875rem; /* 3px */
95
+ --hr-border-color: #667eea;
96
+ --hr-margin-block: 2rem;
97
+ }
98
+ ```
99
+
100
+ ---
101
+
102
+ ### Blockquote
103
+
104
+ Styled quotations with left border accent.
105
+
106
+ #### CSS Variables
107
+
108
+ | Variable | Default | Description |
109
+ |----------|---------|-------------|
110
+ | `--blockquote-padding` | `1rem` | Internal padding |
111
+ | `--blockquote-border-width` | `0.3125rem` | Left border width (5px) |
112
+ | `--blockquote-border-style` | `solid` | Border style |
113
+ | `--blockquote-border-color` | `var(--color-border, #d3d3d3)` | Border color (uses global theme) |
114
+
115
+ #### Default Styles
116
+
117
+ ```css
118
+ blockquote {
119
+ --blockquote-padding: 1rem;
120
+ --blockquote-border-width: 0.3125rem;
121
+ --blockquote-border-style: solid;
122
+ --blockquote-border-color: var(--color-border, #d3d3d3);
123
+
124
+ padding: var(--blockquote-padding);
125
+ border-left: var(--blockquote-border-width) var(--blockquote-border-style) var(--blockquote-border-color);
126
+ }
127
+ ```
128
+
129
+ #### Customization Examples
130
+
131
+ **Thick Accent Blockquote:**
132
+ ```css
133
+ blockquote.accent {
134
+ --blockquote-border-width: 0.5rem; /* 8px */
135
+ --blockquote-border-color: #667eea;
136
+ --blockquote-padding: 1.5rem;
137
+ }
138
+ ```
139
+
140
+ **Minimal Blockquote:**
141
+ ```css
142
+ blockquote.minimal {
143
+ --blockquote-border-width: 0.125rem; /* 2px */
144
+ --blockquote-border-color: var(--color-border-subtle);
145
+ --blockquote-padding: 0.75rem;
146
+ }
147
+ ```
148
+
149
+ **Dashed Border:**
150
+ ```css
151
+ blockquote.dashed {
152
+ --blockquote-border-style: dashed;
153
+ --blockquote-border-width: 0.1875rem; /* 3px */
154
+ }
155
+ ```
156
+
157
+ **Callout Box:**
158
+ ```css
159
+ blockquote.callout {
160
+ --blockquote-padding: 1.5rem;
161
+ --blockquote-border-width: 0.25rem;
162
+ --blockquote-border-color: #ffc107;
163
+ background-color: #fff3cd;
164
+ border-radius: 0.25rem;
165
+ }
166
+ ```
167
+
168
+ ---
169
+
170
+ ### Headings
171
+
172
+ Semantic heading styles (h1-h6).
173
+
174
+ #### CSS Variables
175
+
176
+ | Variable | Default | Description |
177
+ |----------|---------|-------------|
178
+ | `--fs-weight` | `500` | Font weight for headings and strong text |
179
+
180
+ #### Default Styles
181
+
182
+ ```css
183
+ h1, h2, h3, h4, h5, h6 {
184
+ font-weight: var(--fs-weight);
185
+ margin-block-start: 0;
186
+ margin-block-end: 1rem;
187
+ line-height: 1.2;
188
+ }
189
+ ```
190
+
191
+ #### Customization
192
+
193
+ ```css
194
+ /* Bolder headings */
195
+ :root {
196
+ --fs-weight: 700;
197
+ }
198
+
199
+ /* Individual heading styles */
200
+ h1 {
201
+ font-size: 2.5rem;
202
+ --fs-weight: 800;
203
+ }
204
+
205
+ h2 {
206
+ font-size: 2rem;
207
+ --fs-weight: 700;
208
+ }
209
+ ```
210
+
211
+ ---
212
+
213
+ ### Paragraphs
214
+
215
+ Default paragraph styling with optimal line length.
216
+
217
+ #### Default Styles
218
+
219
+ ```css
220
+ p {
221
+ max-width: 75ch; /* Optimal reading width */
222
+ font-size: var(--fs-0); /* Base font size */
223
+ line-height: 1.6; /* Comfortable reading */
224
+ }
225
+
226
+ p + p {
227
+ margin-block-start: 1rem; /* Spacing between paragraphs */
228
+ }
229
+ ```
230
+
231
+ #### Customization
232
+
233
+ ```css
234
+ /* Wide paragraphs */
235
+ p.wide {
236
+ max-width: 100ch;
237
+ }
238
+
239
+ /* Narrow paragraphs */
240
+ p.narrow {
241
+ max-width: 60ch;
242
+ }
243
+
244
+ /* Tight spacing */
245
+ p.tight + p.tight {
246
+ margin-block-start: 0.5rem;
247
+ }
248
+
249
+ /* Loose spacing */
250
+ p.loose + p.loose {
251
+ margin-block-start: 2rem;
252
+ }
253
+ ```
254
+
255
+ ---
256
+
257
+ ### Lists
258
+
259
+ Flexible list styling with CSS custom properties.
260
+
261
+ #### CSS Variables
262
+
263
+ | Variable | Default | Description |
264
+ |----------|---------|-------------|
265
+ | `--li-display` | `flex` | Display mode for lists |
266
+ | `--li-direction` | `column` | Flex direction |
267
+ | `--li-gap` | `0.2rem` | Gap between list items |
268
+ | `--li-wrap` | `nowrap` | Flex wrap behavior |
269
+ | `--li-ps` | `var(--spc-3)` | Padding start (left padding) |
270
+ | `--li-style` | `none` | List style for unstyled lists |
271
+
272
+ #### Default Styles
273
+
274
+ ```css
275
+ ul, ol {
276
+ display: var(--li-display, flex);
277
+ flex-direction: var(--li-direction, column);
278
+ gap: var(--li-gap, 0.2rem);
279
+ flex-wrap: var(--li-wrap, nowrap);
280
+ padding-inline-start: var(--li-ps, var(--spc-3));
281
+ }
282
+
283
+ /* Unstyled lists */
284
+ [role="list"],
285
+ [data-list~="unstyled"] {
286
+ list-style: var(--li-style, none);
287
+ margin-block-end: var(--li-my, 0);
288
+ margin-block-start: var(--li-mx, 0);
289
+ }
290
+
291
+ /* Inline lists */
292
+ [data-list~="inline"] {
293
+ --li-direction: row;
294
+ --li-gap: 1rem;
295
+ --li-wrap: wrap;
296
+ --li-px: 0;
297
+ --li-pi: 0;
298
+ }
299
+ ```
300
+
301
+ #### Examples
302
+
303
+ **Inline Navigation:**
304
+ ```html
305
+ <ul data-list="unstyled inline">
306
+ <li><a href="/">Home</a></li>
307
+ <li><a href="/about">About</a></li>
308
+ <li><a href="/contact">Contact</a></li>
309
+ </ul>
310
+ ```
311
+
312
+ **Spaced List:**
313
+ ```css
314
+ ul.spaced {
315
+ --li-gap: 1rem;
316
+ }
317
+ ```
318
+
319
+ **Compact List:**
320
+ ```css
321
+ ul.compact {
322
+ --li-gap: 0.1rem;
323
+ }
324
+ ```
325
+
326
+ ---
327
+
328
+ ## Layout
329
+
330
+ ### Body
331
+
332
+ Root body layout configuration.
333
+
334
+ #### CSS Variables
335
+
336
+ | Variable | Default | Description |
337
+ |----------|---------|-------------|
338
+ | `--body-display` | `flex` | Display mode |
339
+ | `--body-direction` | `column` | Flex direction |
340
+
341
+ #### Default Styles
342
+
343
+ ```css
344
+ body {
345
+ display: var(--body-display, flex);
346
+ min-height: 100%;
347
+ flex-direction: var(--body-direction, column);
348
+ min-width: 20.3125rem; /* 325px minimum */
349
+ font-size: var(--fs-0);
350
+ }
351
+
352
+ main {
353
+ flex-grow: 1; /* Main content fills available space */
354
+ }
355
+ ```
356
+
357
+ ---
358
+
359
+ ### Sections
360
+
361
+ Semantic section spacing.
362
+
363
+ #### CSS Variables
364
+
365
+ | Variable | Description |
366
+ |----------|-------------|
367
+ | `--sect-y` | Horizontal margin (inline) |
368
+ | `--sect-x` | Vertical padding (block) |
369
+
370
+ #### Default Styles
371
+
372
+ ```css
373
+ section:not(nav) {
374
+ margin-inline: var(--sect-y, auto);
375
+ padding-block: var(--sect-x, --spc-4);
376
+ }
377
+ ```
378
+
379
+ ---
380
+
381
+ ### Skip Links
382
+
383
+ Accessibility feature for keyboard navigation.
384
+
385
+ #### CSS Variables
386
+
387
+ | Variable | Default | Description |
388
+ |----------|---------|-------------|
389
+ | `--color-skip-link-bg` | `#f5f5f5` | Background color when focused |
390
+
391
+ #### Default Styles
392
+
393
+ ```css
394
+ body > a[href^="#"] {
395
+ position: absolute;
396
+ top: -4rem;
397
+ left: 0;
398
+ width: 100%;
399
+ display: block;
400
+ justify-content: flex-start;
401
+ padding: 1rem;
402
+ z-index: 100;
403
+ transition: top 0.3s;
404
+ border-radius: 0;
405
+ background-color: var(--color-skip-link-bg, #f5f5f5);
406
+ }
407
+
408
+ body > a[href^="#"]:focus {
409
+ top: 0; /* Slides into view on focus */
410
+ }
411
+ ```
412
+
413
+ #### Usage
414
+
415
+ ```html
416
+ <body>
417
+ <a href="#main-content">Skip to main content</a>
418
+ <!-- Page content -->
419
+ <main id="main-content">
420
+ <!-- Main content starts here -->
421
+ </main>
422
+ </body>
423
+ ```
424
+
425
+ ---
426
+
427
+ ## Utility Variables
428
+
429
+ ### Boolean-Like Variables
430
+
431
+ Special variables for conditional CSS logic.
432
+
433
+ | Variable | Value | Purpose |
434
+ |----------|-------|---------|
435
+ | `--TRUE` | `initial` | Enables a CSS property |
436
+ | `--FALSE` | ` ` (empty) | Disables a CSS property |
437
+
438
+ #### Documentation
439
+
440
+ ```css
441
+ /* Boolean-like utility variables for conditional CSS logic
442
+ * Usage: property: var(--condition, var(--TRUE)) value;
443
+ * --TRUE (initial) applies the value, --FALSE (empty) skips it
444
+ */
445
+ :root {
446
+ --TRUE: initial;
447
+ --FALSE: ;
448
+ }
449
+ ```
450
+
451
+ #### Example Usage
452
+
453
+ ```css
454
+ /* Conditional border */
455
+ .element {
456
+ border: var(--enable-border, var(--FALSE)) 1px solid black;
457
+ }
458
+
459
+ /* Enable the border */
460
+ .element.bordered {
461
+ --enable-border: var(--TRUE);
462
+ }
463
+ ```
464
+
465
+ ---
466
+
467
+ ## Best Practices
468
+
469
+ ### 1. Use Rem Units
470
+
471
+ Convert all pixel values to rem for responsive scaling.
472
+
473
+ ```css
474
+ /* ❌ Don't use pixels */
475
+ hr {
476
+ --hr-border-width: 2px;
477
+ --hr-margin-block: 24px;
478
+ }
479
+
480
+ /* ✅ Use rem */
481
+ hr {
482
+ --hr-border-width: 0.125rem; /* 2px ÷ 16 = 0.125rem */
483
+ --hr-margin-block: 1.5rem; /* 24px ÷ 16 = 1.5rem */
484
+ }
485
+ ```
486
+
487
+ ### 2. Use Logical Properties
488
+
489
+ Support internationalization with logical properties.
490
+
491
+ ```css
492
+ /* ❌ Physical properties */
493
+ margin-left: 1rem;
494
+ margin-right: 1rem;
495
+ margin-top: 2rem;
496
+ margin-bottom: 2rem;
497
+
498
+ /* ✅ Logical properties */
499
+ margin-inline: 1rem; /* Left/right in LTR, right/left in RTL */
500
+ margin-block: 2rem; /* Top/bottom */
501
+ ```
502
+
503
+ ### 3. Reference Global Theme Colors
504
+
505
+ Use semantic color variables that cascade from global theme.
506
+
507
+ ```css
508
+ /* ❌ Hard-coded colors */
509
+ hr {
510
+ --hr-border-color: #d3d3d3;
511
+ }
512
+
513
+ /* ✅ Semantic theme colors */
514
+ hr {
515
+ --hr-border-color: var(--color-border-subtle, #d3d3d3);
516
+ }
517
+ ```
518
+
519
+ ### 4. Split Compound Properties
520
+
521
+ Enable partial overrides with atomic properties.
522
+
523
+ ```css
524
+ /* ❌ Shorthand property */
525
+ --blockquote-border: 5px solid #d3d3d3;
526
+
527
+ /* ✅ Atomic properties */
528
+ --blockquote-border-width: 0.3125rem;
529
+ --blockquote-border-style: solid;
530
+ --blockquote-border-color: var(--color-border, #d3d3d3);
531
+ ```
532
+
533
+ ---
534
+
535
+ ## Theming Examples
536
+
537
+ ### Dark Theme
538
+
539
+ ```css
540
+ :root {
541
+ --color-border-subtle: #333333;
542
+ --color-border: #404040;
543
+ --color-skip-link-bg: #2d2d2d;
544
+ }
545
+ ```
546
+
547
+ ### High Contrast Theme
548
+
549
+ ```css
550
+ :root {
551
+ --hr-border-width: 0.125rem;
552
+ --hr-border-color: #000000;
553
+ --blockquote-border-width: 0.5rem;
554
+ --blockquote-border-color: #000000;
555
+ --fs-weight: 700;
556
+ }
557
+ ```
558
+
559
+ ### Minimal Theme
560
+
561
+ ```css
562
+ :root {
563
+ --hr-border-width: 0.0625rem;
564
+ --hr-border-color: var(--color-border-subtle);
565
+ --hr-margin-block: 3rem;
566
+ --blockquote-border-width: 0.125rem;
567
+ }
568
+ ```
569
+
570
+ ---
571
+
572
+ ## Resources
573
+
574
+ - **CSS Variables Reference** - See [CSS-VARIABLES.md](../../CSS-VARIABLES.md) for complete documentation
575
+ - **Theme Examples** - See [theme-examples.css](../../theme-examples.css) for pre-built themes
576
+ - **Card Styles** - See [components/cards/STYLES.mdx](../components/cards/STYLES.mdx) for card-specific variables
577
+
578
+ ---
579
+
580
+ ## Quick Reference
581
+
582
+ ### HR Variables
583
+
584
+ ```css
585
+ --hr-border-width: 0.0625rem;
586
+ --hr-border-style: solid;
587
+ --hr-border-color: var(--color-border-subtle, #d3d3d3);
588
+ --hr-margin-block: 1.5rem;
589
+ ```
590
+
591
+ ### Blockquote Variables
592
+
593
+ ```css
594
+ --blockquote-padding: 1rem;
595
+ --blockquote-border-width: 0.3125rem;
596
+ --blockquote-border-style: solid;
597
+ --blockquote-border-color: var(--color-border, #d3d3d3);
598
+ ```
599
+
600
+ ### Typography Variables
601
+
602
+ ```css
603
+ --fs-weight: 500;
604
+ ```
605
+
606
+ ### Layout Variables
607
+
608
+ ```css
609
+ --body-display: flex;
610
+ --body-direction: column;
611
+ ```
612
+
613
+ ### Utility Variables
614
+
615
+ ```css
616
+ --TRUE: initial;
617
+ --FALSE: ;
618
+ ```
619
+
620
+ ---
621
+
622
+ ## Browser Support
623
+
624
+ All global styles use modern CSS features:
625
+
626
+ - ✅ **CSS Custom Properties** - All modern browsers (IE11 not supported)
627
+ - ✅ **Logical Properties** (`padding-inline`, `margin-block`) - Chrome 87+, Firefox 66+, Safari 14.1+
628
+ - ✅ **Flexbox** - All modern browsers
629
+ - ✅ **`:focus-visible`** - Chrome 86+, Firefox 85+, Safari 15.4+
630
+
631
+ For older browser support, fallback values ensure graceful degradation.