@bookklik/senangstart-css 0.2.4 → 0.2.5

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 (128) hide show
  1. package/dist/senangstart-css.js +82 -6
  2. package/dist/senangstart-css.min.js +24 -20
  3. package/dist/senangstart-tw.js +200 -52
  4. package/dist/senangstart-tw.min.js +1 -1
  5. package/docs/guide/cdn.md +1 -1
  6. package/docs/ms/guide/cdn.md +1 -1
  7. package/docs/ms/reference/layout/position.md +4 -4
  8. package/docs/ms/reference/layout/z-index.md +8 -8
  9. package/docs/ms/reference/space/gap.md +1 -1
  10. package/docs/ms/reference/space/height.md +1 -1
  11. package/docs/ms/reference/space/margin.md +1 -1
  12. package/docs/ms/reference/space/padding.md +1 -1
  13. package/docs/ms/reference/space/scale-reference.md +46 -17
  14. package/docs/ms/reference/space/width.md +1 -1
  15. package/docs/ms/reference/space.md +1 -1
  16. package/docs/ms/reference/spacing.md +103 -21
  17. package/docs/ms/reference/visual/animation-fill.md +8 -8
  18. package/docs/ms/reference/visual/backdrop-blur.md +4 -4
  19. package/docs/ms/reference/visual/backdrop-brightness.md +8 -8
  20. package/docs/ms/reference/visual/backdrop-grayscale.md +6 -6
  21. package/docs/ms/reference/visual/backdrop-sepia.md +6 -6
  22. package/docs/ms/reference/visual/background-clip.md +2 -2
  23. package/docs/ms/reference/visual/background-image.md +4 -4
  24. package/docs/ms/reference/visual/filter-brightness.md +4 -4
  25. package/docs/ms/reference/visual/filter-contrast.md +4 -4
  26. package/docs/ms/reference/visual/filter-drop-shadow.md +6 -6
  27. package/docs/ms/reference/visual/filter-grayscale.md +4 -4
  28. package/docs/ms/reference/visual/filter-hue-rotate.md +4 -4
  29. package/docs/ms/reference/visual/filter-invert.md +2 -2
  30. package/docs/ms/reference/visual/filter-saturate.md +4 -4
  31. package/docs/ms/reference/visual/filter-sepia.md +4 -4
  32. package/docs/ms/reference/visual/font-family.md +2 -2
  33. package/docs/ms/reference/visual/gradient-from.md +57 -57
  34. package/docs/ms/reference/visual/gradient-to.md +57 -57
  35. package/docs/ms/reference/visual/gradient-via.md +54 -54
  36. package/docs/ms/reference/visual/letter-spacing.md +2 -2
  37. package/docs/ms/reference/visual/line-clamp.md +2 -2
  38. package/docs/ms/reference/visual/line-height.md +2 -2
  39. package/docs/ms/reference/visual/outline.md +2 -2
  40. package/docs/ms/reference/visual/ring-color.md +29 -0
  41. package/docs/ms/reference/visual/ring-offset.md +30 -0
  42. package/docs/ms/reference/visual/ring.md +62 -0
  43. package/docs/ms/reference/visual/stroke-width.md +6 -6
  44. package/docs/ms/reference/visual/stroke.md +4 -4
  45. package/docs/ms/reference/visual/text-indent.md +2 -2
  46. package/docs/ms/reference/visual/text-overflow.md +2 -2
  47. package/docs/ms/reference/visual/text-size.md +2 -2
  48. package/docs/ms/reference/visual/text-wrap.md +2 -2
  49. package/docs/ms/reference/visual/transform-backface.md +4 -4
  50. package/docs/ms/reference/visual/transform-perspective-origin.md +6 -6
  51. package/docs/ms/reference/visual/transform-perspective.md +6 -6
  52. package/docs/ms/reference/visual/transform-rotate-3d.md +6 -6
  53. package/docs/ms/reference/visual/transform-style.md +4 -4
  54. package/docs/ms/reference/visual/transform-translate-z.md +6 -6
  55. package/docs/ms/reference/visual/transform-translate.md +2 -2
  56. package/docs/ms/reference/visual/whitespace.md +2 -2
  57. package/docs/ms/reference/visual/word-break.md +2 -2
  58. package/docs/public/assets/senangstart-css.min.js +24 -20
  59. package/docs/public/llms.txt +1718 -0
  60. package/docs/reference/layout/position.md +4 -4
  61. package/docs/reference/layout/z-index.md +8 -8
  62. package/docs/reference/space/gap.md +1 -1
  63. package/docs/reference/space/height.md +1 -1
  64. package/docs/reference/space/margin.md +1 -1
  65. package/docs/reference/space/padding.md +1 -1
  66. package/docs/reference/space/scale-reference.md +46 -17
  67. package/docs/reference/space/width.md +1 -1
  68. package/docs/reference/space.md +1 -1
  69. package/docs/reference/spacing.md +103 -21
  70. package/docs/reference/visual/animation-fill.md +8 -8
  71. package/docs/reference/visual/backdrop-blur.md +4 -4
  72. package/docs/reference/visual/backdrop-brightness.md +8 -8
  73. package/docs/reference/visual/backdrop-grayscale.md +6 -6
  74. package/docs/reference/visual/backdrop-sepia.md +6 -6
  75. package/docs/reference/visual/background-clip.md +2 -2
  76. package/docs/reference/visual/background-image.md +4 -4
  77. package/docs/reference/visual/filter-brightness.md +4 -4
  78. package/docs/reference/visual/filter-contrast.md +4 -4
  79. package/docs/reference/visual/filter-drop-shadow.md +6 -6
  80. package/docs/reference/visual/filter-grayscale.md +4 -4
  81. package/docs/reference/visual/filter-hue-rotate.md +4 -4
  82. package/docs/reference/visual/filter-invert.md +2 -2
  83. package/docs/reference/visual/filter-saturate.md +4 -4
  84. package/docs/reference/visual/filter-sepia.md +4 -4
  85. package/docs/reference/visual/font-family.md +2 -2
  86. package/docs/reference/visual/gradient-from.md +57 -57
  87. package/docs/reference/visual/gradient-to.md +57 -57
  88. package/docs/reference/visual/gradient-via.md +54 -54
  89. package/docs/reference/visual/letter-spacing.md +2 -2
  90. package/docs/reference/visual/line-clamp.md +2 -2
  91. package/docs/reference/visual/line-height.md +2 -2
  92. package/docs/reference/visual/outline.md +2 -2
  93. package/docs/reference/visual/ring-color.md +29 -0
  94. package/docs/reference/visual/ring-offset.md +30 -0
  95. package/docs/reference/visual/ring.md +62 -0
  96. package/docs/reference/visual/stroke-width.md +6 -6
  97. package/docs/reference/visual/stroke.md +4 -4
  98. package/docs/reference/visual/text-indent.md +2 -2
  99. package/docs/reference/visual/text-overflow.md +2 -2
  100. package/docs/reference/visual/text-size.md +2 -2
  101. package/docs/reference/visual/text-wrap.md +2 -2
  102. package/docs/reference/visual/transform-backface.md +4 -4
  103. package/docs/reference/visual/transform-perspective-origin.md +6 -6
  104. package/docs/reference/visual/transform-perspective.md +6 -6
  105. package/docs/reference/visual/transform-rotate-3d.md +6 -6
  106. package/docs/reference/visual/transform-style.md +4 -4
  107. package/docs/reference/visual/transform-translate-z.md +6 -6
  108. package/docs/reference/visual/transform-translate.md +2 -2
  109. package/docs/reference/visual/whitespace.md +2 -2
  110. package/docs/reference/visual/word-break.md +2 -2
  111. package/package.json +4 -2
  112. package/scripts/build-dist.js +2 -2
  113. package/scripts/bundle-jit.js +3 -3
  114. package/scripts/convert-tailwind.js +157 -2
  115. package/scripts/generate-llms-txt.js +264 -0
  116. package/src/cdn/{jit.js → senangstart-engine.js} +81 -11
  117. package/src/cdn/tw-conversion-engine.js +203 -68
  118. package/src/compiler/generators/css.js +27 -0
  119. package/src/config/defaults.js +37 -11
  120. package/src/core/constants.js +37 -8
  121. package/src/definitions/space.js +46 -5
  122. package/src/definitions/visual-borders.js +80 -1
  123. package/src/definitions/visual-transform3d.js +16 -16
  124. package/src/definitions/visual-transforms.js +1 -1
  125. package/src/definitions/visual-transitions.js +4 -4
  126. package/src/definitions/visual-typography.js +6 -6
  127. package/src/definitions/visual.js +4 -4
  128. package/tests/unit/compiler/generators/css.test.js +192 -0
@@ -0,0 +1,1718 @@
1
+ # @bookklik/senangstart-css
2
+ > Fluent Style Utilities for Humans and AI
3
+
4
+ ## Docs
5
+ - [Documentation](https://bookklik-technologies.github.io/senangstart-css/guide)
6
+
7
+ ## Source
8
+ - [Repository](https://github.com/bookklik-technologies/senangstart-css)
9
+
10
+
11
+ # Documentation Guides
12
+
13
+ # Framework Overview
14
+
15
+ SenangStart CSS is a utility-first framework that uses **Natural Adjectives** instead of abstract numbers.
16
+
17
+ ## Core Philosophy
18
+ - **Natural Scale**: Sizes map to physical mental models (e.g., `tiny` = pebble/4px, `medium` = smartphone/16px, `giant` = door/64px).
19
+ - **Intent-First**: Describe *what* you want ("give it air" -> scale up), not pixels.
20
+ - **Tri-Attribute Syntax**: Separation of concerns into three attributes:
21
+ 1. `layout`: Structure & position (flex, grid, block, sticky).
22
+ 2. `space`: Sizing, padding, margin, gap.
23
+ 3. `visual`: Colors, typography, borders, shadows, effects.
24
+
25
+ ## Syntax Reference
26
+
27
+ ### 1. Layout Attribute
28
+ Controls internal flow and external positioning.
29
+ - **Flex**: `layout="flex col center"` (Flexbox, column direction, centered).
30
+ - **Grid**: `layout="grid"`
31
+ - **Position**: `layout="absolute z:top"`
32
+
33
+ ### 2. Space Attribute
34
+ Controls dimensions and spacing using the Natural Scale.
35
+ - **Syntax**: `[breakpoint]:[property]:[scale]`
36
+ - **Properties**: `p` (padding), `m` (margin), `g` (gap), `w` (width), `h` (height).
37
+ - **Values**:
38
+ - `none` (0px)
39
+ - `thin` (1px), `regular` (2px), `thick` (3px)
40
+ - `tiny` (4px), `tiny-2x` (6px)
41
+ - `small` (8px), `small-2x` (10px), `small-3x` (12px), `small-4x` (14px)
42
+ - `medium` (16px), `medium-2x` (20px), `medium-3x` (24px), `medium-4x` (28px)
43
+ - `large` (32px), `large-2x` (36px), `large-3x` (40px), `large-4x` (44px)
44
+ - `big` (48px), `big-2x` (56px), `big-3x` (64px), `big-4x` (80px)
45
+ - `giant` (96px), `giant-2x` (112px), `giant-3x` (128px), `giant-4x` (144px)
46
+ - `vast` (160px), `vast-2x` (176px), `vast-3x` (192px), `vast-4x` (208px)
47
+ - `vast-5x` (224px), `vast-6x` (240px), `vast-7x` (256px), `vast-8x` (288px)
48
+ - `vast-9x` (320px), `vast-10x` (384px)
49
+ - **Arbitrary**: `space="w:[350px]"`
50
+
51
+ ### 3. Visual Attribute
52
+ Controls appearance.
53
+ - **Colors**: `bg:primary`, `text:white`, `border:grey`.
54
+ - **Typography**: `font:bold`, `text-size:big`.
55
+ - **Effects**: `rounded:medium`, `shadow:big`, `opacity:[0.5]`.
56
+
57
+ ## Modifiers
58
+
59
+ ### Responsive Prefixes
60
+ Mobile-first breakpoints:
61
+ - (default): 0px+
62
+ - `mob:`: 480px+ ("Large Mobile")
63
+ - `tab:`: 768px+ ("Tablet")
64
+ - `lap:`: 1024px+ ("Laptop")
65
+ - `desk:`: 1280px+ ("Desktop")
66
+
67
+ Example: `space="p:small tab:p:medium lap:p:big"`
68
+
69
+ ### State Prefixes
70
+ - `hover:`: `visual="bg:primary hover:bg:primary-dark"`
71
+ - `focus:`: `visual="border:grey focus:border:brand"`
72
+ - `active:`, `disabled:`, `group-hover:`
73
+ - `dark:`: `visual="bg:white dark:bg:slate-900"`
74
+
75
+ ## Configuration
76
+ Use `senangstart.config.js` to override defaults.
77
+ ```js
78
+ export default {
79
+ theme: {
80
+ colors: { brand: '#8B5CF6' },
81
+ spacing: { huge: '256px' }
82
+ }
83
+ }
84
+ ```
85
+
86
+ # Utility Definitions
87
+
88
+ ## accent-color
89
+ > Set accent color for form controls
90
+
91
+ **Syntax:** `visual="accent:[color]"`
92
+
93
+
94
+ ## align-content
95
+ > Align content rows in multi-line flex container
96
+
97
+ **Syntax:** `layout="content:[value]"`
98
+
99
+ * `start`: Align to start (`align-content: flex-start;`)
100
+ * `end`: Align to end (`align-content: flex-end;`)
101
+ * `center`: Center content (`align-content: center;`)
102
+ * `between`: Space between rows (`align-content: space-between;`)
103
+ * `around`: Space around rows (`align-content: space-around;`)
104
+ * `evenly`: Even spacing (`align-content: space-evenly;`)
105
+ * `stretch`: Stretch rows (`align-content: stretch;`)
106
+
107
+ ## align-items
108
+ > Align items along the cross axis
109
+
110
+ **Syntax:** `layout="items:[value]"`
111
+
112
+ * `start`: Align to start (`align-items: flex-start;`)
113
+ * `end`: Align to end (`align-items: flex-end;`)
114
+ * `center`: Center items (`align-items: center;`)
115
+ * `baseline`: Align to baseline (`align-items: baseline;`)
116
+ * `stretch`: Stretch items (`align-items: stretch;`)
117
+
118
+ ## align-self
119
+ > Override alignment for a single item
120
+
121
+ **Syntax:** `layout="self:[value]"`
122
+
123
+ * `auto`: Use parent alignment (`align-self: auto;`)
124
+ * `start`: Align to start (`align-self: flex-start;`)
125
+ * `end`: Align to end (`align-self: flex-end;`)
126
+ * `center`: Center item (`align-self: center;`)
127
+ * `baseline`: Align to baseline (`align-self: baseline;`)
128
+ * `stretch`: Stretch item (`align-self: stretch;`)
129
+
130
+ ## animation-builtin
131
+ > Apply built-in animations
132
+
133
+ **Syntax:** `visual="animate:[value]"`
134
+
135
+ * `none`: No animation (`animation: none;`)
136
+ * `spin`: Spinning (`animation: spin 1s linear infinite;`)
137
+ * `ping`: Ping effect
138
+ * `pulse`: Pulsing
139
+ * `bounce`: Bouncing (`animation: bounce 1s infinite;`)
140
+
141
+ ## animation-delay
142
+ > Set animation delay
143
+
144
+ **Syntax:** `visual="animation-delay:[value]"`
145
+
146
+ * `instant`: 75ms delay (`animation-delay: 75ms;`)
147
+ * `quick`: 100ms delay (`animation-delay: 100ms;`)
148
+ * `fast`: 150ms delay (`animation-delay: 150ms;`)
149
+ * `normal`: 200ms delay (`animation-delay: 200ms;`)
150
+ * `slow`: 300ms delay (`animation-delay: 300ms;`)
151
+
152
+ ## animation-direction
153
+ > Set animation direction
154
+
155
+ **Syntax:** `visual="animation-direction:[value]"`
156
+
157
+ * `normal`: Normal direction (`animation-direction: normal;`)
158
+ * `reverse`: Reverse direction (`animation-direction: reverse;`)
159
+ * `alternate`: Alternate direction (`animation-direction: alternate;`)
160
+ * `alternate-reverse`: Alternate reverse (`animation-direction: alternate-reverse;`)
161
+
162
+ ## animation-duration
163
+ > Set animation duration
164
+
165
+ **Syntax:** `visual="animation-duration:[value]"`
166
+
167
+ * `instant`: 75ms (`animation-duration: 75ms;`)
168
+ * `quick`: 100ms (`animation-duration: 100ms;`)
169
+ * `fast`: 150ms (`animation-duration: 150ms;`)
170
+ * `normal`: 200ms (`animation-duration: 200ms;`)
171
+ * `slow`: 300ms (`animation-duration: 300ms;`)
172
+ * `slower`: 500ms (`animation-duration: 500ms;`)
173
+ * `lazy`: 700ms (`animation-duration: 700ms;`)
174
+
175
+ ## animation-fill
176
+ > Set animation fill mode
177
+
178
+ **Syntax:** `visual="animation-fill:[value]"`
179
+
180
+ * `none`: No fill (`animation-fill-mode: none;`)
181
+ * `forwards`: Keep end state (`animation-fill-mode: forwards;`)
182
+ * `backwards`: Apply start state (`animation-fill-mode: backwards;`)
183
+ * `both`: Both directions (`animation-fill-mode: both;`)
184
+
185
+ ## animation-iteration
186
+ > Set animation iteration count
187
+
188
+ **Syntax:** `visual="animation-iteration:[value]"`
189
+
190
+ * `1`: Once (`animation-iteration-count: 1;`)
191
+ * `infinite`: Forever (`animation-iteration-count: infinite;`)
192
+
193
+ ## animation-play
194
+ > Control animation play state
195
+
196
+ **Syntax:** `visual="animation-play:[value]"`
197
+
198
+ * `running`: Animation running (`animation-play-state: running;`)
199
+ * `paused`: Animation paused (`animation-play-state: paused;`)
200
+
201
+ ## appearance
202
+ > Control native appearance
203
+
204
+ **Syntax:** `visual="appearance:[value]"`
205
+
206
+ * `none`: Remove native styling (`appearance: none;`)
207
+ * `auto`: Default appearance (`appearance: auto;`)
208
+
209
+ ## aspect-ratio
210
+ > Set element aspect ratio
211
+
212
+ **Syntax:** `layout="aspect:[value]"`
213
+
214
+ * `auto`: Natural aspect ratio (`aspect-ratio: auto;`)
215
+ * `square`: 1:1 square (`aspect-ratio: 1 / 1;`)
216
+ * `video`: 16:9 video (`aspect-ratio: 16 / 9;`)
217
+
218
+ ## backdrop-blur
219
+ > Blur backdrop
220
+
221
+ **Syntax:** `visual="backdrop-blur:[value]"`
222
+
223
+ * `none`: No blur (`backdrop-filter: blur(0);`)
224
+ * `tiny`: Tiny blur (`backdrop-filter: blur(2px);`)
225
+ * `small`: Small blur (`backdrop-filter: blur(4px);`)
226
+ * `medium`: Medium blur (`backdrop-filter: blur(8px);`)
227
+ * `big`: Large blur (`backdrop-filter: blur(12px);`)
228
+ * `giant`: Giant blur (`backdrop-filter: blur(24px);`)
229
+ * `vast`: Vast blur (`backdrop-filter: blur(48px);`)
230
+
231
+ ## backdrop-brightness
232
+ > Adjust backdrop brightness
233
+
234
+ **Syntax:** `visual="backdrop-brightness:[value]"`
235
+
236
+ * `dim`: 50% brightness (`backdrop-filter: brightness(0.5);`)
237
+ * `dark`: 75% brightness (`backdrop-filter: brightness(0.75);`)
238
+ * `normal`: Normal brightness (`backdrop-filter: brightness(1);`)
239
+ * `bright`: 125% brightness (`backdrop-filter: brightness(1.25);`)
240
+ * `vivid`: 150% brightness (`backdrop-filter: brightness(1.5);`)
241
+
242
+ ## backdrop-contrast
243
+ > Adjust backdrop contrast
244
+
245
+ **Syntax:** `visual="backdrop-contrast:[value]"`
246
+
247
+ * `low`: Low contrast (`backdrop-filter: contrast(0.5);`)
248
+ * `reduced`: Reduced contrast (`backdrop-filter: contrast(0.75);`)
249
+ * `normal`: Normal contrast (`backdrop-filter: contrast(1);`)
250
+ * `high`: High contrast (`backdrop-filter: contrast(1.25);`)
251
+ * `max`: Maximum contrast (`backdrop-filter: contrast(1.5);`)
252
+
253
+ ## backdrop-grayscale
254
+ > Apply grayscale to backdrop
255
+
256
+ **Syntax:** `visual="backdrop-grayscale:[value]"`
257
+
258
+ * `none`: No grayscale (`backdrop-filter: grayscale(0%);`)
259
+ * `partial`: 50% grayscale (`backdrop-filter: grayscale(50%);`)
260
+ * `full`: Full grayscale (`backdrop-filter: grayscale(100%);`)
261
+
262
+ ## backdrop-hue-rotate
263
+ > Rotate backdrop hue
264
+
265
+ **Syntax:** `visual="backdrop-hue-rotate:[degrees]"`
266
+
267
+ * `0`: No rotation (`backdrop-filter: hue-rotate(0deg);`)
268
+ * `90`: 90° rotation (`backdrop-filter: hue-rotate(90deg);`)
269
+ * `180`: 180° rotation (`backdrop-filter: hue-rotate(180deg);`)
270
+
271
+ ## backdrop-invert
272
+ > Invert backdrop colors
273
+
274
+ **Syntax:** `visual="backdrop-invert:[value]"`
275
+
276
+ * `none`: No inversion (`backdrop-filter: invert(0%);`)
277
+ * `partial`: 50% inversion (`backdrop-filter: invert(50%);`)
278
+ * `full`: Full inversion (`backdrop-filter: invert(100%);`)
279
+
280
+ ## backdrop-opacity
281
+ > Set backdrop opacity
282
+
283
+ **Syntax:** `visual="backdrop-opacity:[value]"`
284
+
285
+ * `0`: Transparent (`backdrop-filter: opacity(0);`)
286
+ * `50`: 50% opacity (`backdrop-filter: opacity(0.5);`)
287
+ * `100`: Fully opaque (`backdrop-filter: opacity(1);`)
288
+
289
+ ## backdrop-saturate
290
+ > Adjust backdrop saturation
291
+
292
+ **Syntax:** `visual="backdrop-saturate:[value]"`
293
+
294
+ * `none`: Desaturated (`backdrop-filter: saturate(0);`)
295
+ * `low`: Low saturation (`backdrop-filter: saturate(0.5);`)
296
+ * `normal`: Normal saturation (`backdrop-filter: saturate(1);`)
297
+ * `high`: High saturation (`backdrop-filter: saturate(1.5);`)
298
+ * `vivid`: Very saturated (`backdrop-filter: saturate(2);`)
299
+
300
+ ## backdrop-sepia
301
+ > Apply sepia to backdrop
302
+
303
+ **Syntax:** `visual="backdrop-sepia:[value]"`
304
+
305
+ * `none`: No sepia (`backdrop-filter: sepia(0%);`)
306
+ * `partial`: 50% sepia (`backdrop-filter: sepia(50%);`)
307
+ * `full`: Full sepia (`backdrop-filter: sepia(100%);`)
308
+
309
+ ## background-attachment
310
+ > Set background attachment behavior
311
+
312
+ **Syntax:** `visual="bg-attachment:[value]"`
313
+
314
+ * `fixed`: Fixed background (`background-attachment: fixed;`)
315
+ * `local`: Local scroll (`background-attachment: local;`)
316
+ * `scroll`: Scroll with page (`background-attachment: scroll;`)
317
+
318
+ ## background-blend-mode
319
+ > Set background blend mode
320
+
321
+ **Syntax:** `visual="bg-blend:[value]"`
322
+
323
+ * `normal`: Normal blend (`background-blend-mode: normal;`)
324
+ * `multiply`: Multiply blend (`background-blend-mode: multiply;`)
325
+ * `screen`: Screen blend (`background-blend-mode: screen;`)
326
+ * `overlay`: Overlay blend (`background-blend-mode: overlay;`)
327
+ * `darken`: Darken blend (`background-blend-mode: darken;`)
328
+ * `lighten`: Lighten blend (`background-blend-mode: lighten;`)
329
+
330
+ ## background-clip
331
+ > Set background clipping area
332
+
333
+ **Syntax:** `visual="bg-clip:[value]"`
334
+
335
+ * `border`: Clip to border (`background-clip: border-box;`)
336
+ * `padding`: Clip to padding (`background-clip: padding-box;`)
337
+ * `content`: Clip to content (`background-clip: content-box;`)
338
+ * `text`: Clip to text
339
+
340
+ ## background-color
341
+ > Set background color
342
+
343
+ **Syntax:** `visual="bg:[color]"`
344
+
345
+
346
+ ## background-image
347
+ > Set background image or gradient
348
+
349
+ **Syntax:** `visual="bg-image:[value]"`
350
+
351
+ * `none`: No background image (`background-image: none;`)
352
+ * `gradient-to-t`: Gradient to top
353
+ * `gradient-to-b`: Gradient to bottom
354
+ * `gradient-to-l`: Gradient to left
355
+ * `gradient-to-r`: Gradient to right
356
+
357
+ ## background-origin
358
+ > Set background positioning origin
359
+
360
+ **Syntax:** `visual="bg-origin:[value]"`
361
+
362
+ * `border`: Origin at border (`background-origin: border-box;`)
363
+ * `padding`: Origin at padding (`background-origin: padding-box;`)
364
+ * `content`: Origin at content (`background-origin: content-box;`)
365
+
366
+ ## background-position
367
+ > Set background position
368
+
369
+ **Syntax:** `visual="bg-pos:[value]"`
370
+
371
+ * `center`: Center position (`background-position: center;`)
372
+ * `top`: Top position (`background-position: top;`)
373
+ * `bottom`: Bottom position (`background-position: bottom;`)
374
+ * `left`: Left position (`background-position: left;`)
375
+ * `right`: Right position (`background-position: right;`)
376
+ * `top-left`: Top left (`background-position: top left;`)
377
+ * `top-right`: Top right (`background-position: top right;`)
378
+ * `bottom-left`: Bottom left (`background-position: bottom left;`)
379
+ * `bottom-right`: Bottom right (`background-position: bottom right;`)
380
+
381
+ ## background-repeat
382
+ > Set background repeat behavior
383
+
384
+ **Syntax:** `visual="bg-repeat:[value]"`
385
+
386
+ * `repeat`: Repeat both axes (`background-repeat: repeat;`)
387
+ * `no-repeat`: No repeat (`background-repeat: no-repeat;`)
388
+ * `repeat-x`: Repeat horizontally (`background-repeat: repeat-x;`)
389
+ * `repeat-y`: Repeat vertically (`background-repeat: repeat-y;`)
390
+ * `round`: Round repeat (`background-repeat: round;`)
391
+ * `space`: Spaced repeat (`background-repeat: space;`)
392
+
393
+ ## background-size
394
+ > Set background size
395
+
396
+ **Syntax:** `visual="bg-size:[value]"`
397
+
398
+ * `auto`: Original size (`background-size: auto;`)
399
+ * `cover`: Cover container (`background-size: cover;`)
400
+ * `contain`: Contain in container (`background-size: contain;`)
401
+
402
+ ## blend-modes
403
+ > Set mix blend mode
404
+
405
+ **Syntax:** `visual="mix-blend:[value]"`
406
+
407
+ * `normal`: Normal blend (`mix-blend-mode: normal;`)
408
+ * `multiply`: Multiply blend (`mix-blend-mode: multiply;`)
409
+ * `screen`: Screen blend (`mix-blend-mode: screen;`)
410
+ * `overlay`: Overlay blend (`mix-blend-mode: overlay;`)
411
+ * `darken`: Darken blend (`mix-blend-mode: darken;`)
412
+ * `lighten`: Lighten blend (`mix-blend-mode: lighten;`)
413
+
414
+ ## border
415
+ > Set border color for all sides or specific sides
416
+
417
+ **Syntax:** `visual="border:[color]" | visual="border-{t|b|l|r|x|y}:[color]"`
418
+
419
+ * `primary`: Primary color border
420
+ * `gray-300`: Light gray border
421
+ * `danger`: Danger/error border
422
+
423
+ ## border-collapse
424
+ > Control table border collapse
425
+
426
+ **Syntax:** `layout="border:[value]"`
427
+
428
+ * `collapse`: Collapse borders (`border-collapse: collapse;`)
429
+ * `separate`: Separate borders (`border-collapse: separate;`)
430
+
431
+ ## border-radius
432
+ > Set border radius
433
+
434
+ **Syntax:** `visual="rounded:[value]"`
435
+
436
+ * `none`: No rounding (`border-radius: var(--r-none);`)
437
+ * `small`: Small radius (`border-radius: var(--r-small);`)
438
+ * `medium`: Medium radius (`border-radius: var(--r-medium);`)
439
+ * `big`: Large radius (`border-radius: var(--r-big);`)
440
+ * `round`: Fully round (`border-radius: var(--r-round);`)
441
+
442
+ ## border-spacing
443
+ > Control spacing between table borders
444
+
445
+ **Syntax:** `layout="border-spacing:[value]"`
446
+
447
+ * `border-spacing`: All spacing (`border-spacing: {value};`)
448
+ * `border-spacing-x`: Horizontal spacing (`border-spacing: {value} 0;`)
449
+ * `border-spacing-y`: Vertical spacing (`border-spacing: 0 {value};`)
450
+
451
+ ## border-style
452
+ > Set border style
453
+
454
+ **Syntax:** `visual="border-style:[value]"`
455
+
456
+ * `solid`: Solid border (`border-style: solid;`)
457
+ * `dashed`: Dashed border (`border-style: dashed;`)
458
+ * `dotted`: Dotted border (`border-style: dotted;`)
459
+ * `double`: Double border (`border-style: double;`)
460
+ * `none`: No border (`border-style: none;`)
461
+
462
+ ## border-width
463
+ > Set border width for all sides or specific sides
464
+
465
+ **Syntax:** `visual="border-w:[value]" | visual="border-{t|b|l|r|x|y}-w:[value]"`
466
+
467
+ * `none`: No border (0px) (`border-width: var(--s-none);`)
468
+ * `thin`: Thin border (1px) (`border-width: var(--s-thin);`)
469
+ * `regular`: Standard border (2px) (`border-width: var(--s-regular);`)
470
+ * `thick`: Thick border (3px) (`border-width: var(--s-thick);`)
471
+
472
+ ## box-shadow
473
+ > Add box shadow
474
+
475
+ **Syntax:** `visual="shadow:[value]"`
476
+
477
+ * `none`: No shadow (`box-shadow: var(--shadow-none);`)
478
+ * `small`: Small shadow (`box-shadow: var(--shadow-small);`)
479
+ * `medium`: Medium shadow (`box-shadow: var(--shadow-medium);`)
480
+ * `big`: Large shadow (`box-shadow: var(--shadow-big);`)
481
+ * `giant`: Giant shadow (`box-shadow: var(--shadow-giant);`)
482
+
483
+ ## box-sizing
484
+ > Control how width and height are calculated
485
+
486
+ **Syntax:** `layout="box:[value]"`
487
+
488
+ * `border`: Include padding and border in size (`box-sizing: border-box;`)
489
+ * `content`: Exclude padding and border (`box-sizing: content-box;`)
490
+
491
+ ## caption-side
492
+ > Control table caption position
493
+
494
+ **Syntax:** `layout="caption:[value]"`
495
+
496
+ * `top`: Caption on top (`caption-side: top;`)
497
+ * `bottom`: Caption on bottom (`caption-side: bottom;`)
498
+
499
+ ## caret-color
500
+ > Set text input caret color
501
+
502
+ **Syntax:** `visual="caret:[color]"`
503
+
504
+
505
+ ## color-scheme
506
+ > Set preferred color scheme
507
+
508
+ **Syntax:** `visual="color-scheme:[value]"`
509
+
510
+ * `light`: Light mode (`color-scheme: light;`)
511
+ * `dark`: Dark mode (`color-scheme: dark;`)
512
+ * `normal`: System default (`color-scheme: normal;`)
513
+
514
+ ## columns
515
+ > Create multi-column layouts
516
+
517
+ **Syntax:** `layout="cols:[value]"`
518
+
519
+ * `1-12`: N columns (`columns: {n};`)
520
+ * `auto`: Auto columns (`columns: auto;`)
521
+
522
+ ## container
523
+ > Create a centered container with max-width
524
+
525
+ **Syntax:** `layout="container"`
526
+
527
+ * `container`: Centered container
528
+
529
+ ## cursor
530
+ > Set cursor style
531
+
532
+ **Syntax:** `visual="cursor:[value]"`
533
+
534
+ * `auto`: Auto cursor (`cursor: auto;`)
535
+ * `default`: Default cursor (`cursor: default;`)
536
+ * `pointer`: Pointer cursor (`cursor: pointer;`)
537
+ * `wait`: Wait cursor (`cursor: wait;`)
538
+ * `text`: Text cursor (`cursor: text;`)
539
+ * `move`: Move cursor (`cursor: move;`)
540
+ * `not-allowed`: Not allowed (`cursor: not-allowed;`)
541
+ * `grab`: Grab cursor (`cursor: grab;`)
542
+ * `grabbing`: Grabbing cursor (`cursor: grabbing;`)
543
+
544
+ ## display
545
+ > Control the display type of elements
546
+
547
+ **Syntax:** `layout="[display-value]"`
548
+
549
+ * `flex`: Flexbox container (`display: flex;`)
550
+ * `inline-flex`: Inline flexbox container (`display: inline-flex;`)
551
+ * `grid`: Grid container (`display: grid;`)
552
+ * `inline-grid`: Inline grid container (`display: inline-grid;`)
553
+ * `block`: Block element (`display: block;`)
554
+ * `inline`: Inline block element (`display: inline-block;`)
555
+ * `hidden`: Hidden element (`display: none;`)
556
+
557
+ ## field-sizing
558
+ > Control form field sizing
559
+
560
+ **Syntax:** `visual="field-sizing:[value]"`
561
+
562
+ * `fixed`: Fixed size (`field-sizing: fixed;`)
563
+ * `content`: Size to content (`field-sizing: content;`)
564
+
565
+ ## fill
566
+ > Set SVG fill color
567
+
568
+ **Syntax:** `visual="fill:[color]"`
569
+
570
+ * `none`: No fill (`fill: none;`)
571
+ * `current`: Current color (`fill: currentColor;`)
572
+
573
+ ## filter-blur
574
+ > Apply blur filter
575
+
576
+ **Syntax:** `visual="blur:[value]"`
577
+
578
+ * `none`: No blur (`filter: blur(0);`)
579
+ * `tiny`: Tiny blur (`filter: blur(2px);`)
580
+ * `small`: Small blur (`filter: blur(4px);`)
581
+ * `medium`: Medium blur (`filter: blur(8px);`)
582
+ * `big`: Large blur (`filter: blur(12px);`)
583
+ * `giant`: Giant blur (`filter: blur(24px);`)
584
+ * `vast`: Vast blur (`filter: blur(48px);`)
585
+
586
+ ## filter-brightness
587
+ > Adjust brightness
588
+
589
+ **Syntax:** `visual="brightness:[value]"`
590
+
591
+ * `dim`: 50% brightness (`filter: brightness(0.5);`)
592
+ * `dark`: 75% brightness (`filter: brightness(0.75);`)
593
+ * `normal`: Normal brightness (`filter: brightness(1);`)
594
+ * `bright`: 125% brightness (`filter: brightness(1.25);`)
595
+ * `vivid`: 150% brightness (`filter: brightness(1.5);`)
596
+
597
+ ## filter-contrast
598
+ > Adjust contrast
599
+
600
+ **Syntax:** `visual="contrast:[value]"`
601
+
602
+ * `low`: Low contrast (`filter: contrast(0.5);`)
603
+ * `reduced`: Reduced contrast (`filter: contrast(0.75);`)
604
+ * `normal`: Normal contrast (`filter: contrast(1);`)
605
+ * `high`: High contrast (`filter: contrast(1.25);`)
606
+ * `max`: Maximum contrast (`filter: contrast(1.5);`)
607
+
608
+ ## filter-drop-shadow
609
+ > Add drop shadow
610
+
611
+ **Syntax:** `visual="drop-shadow:[value]"`
612
+
613
+ * `none`: No shadow (`filter: drop-shadow(none);`)
614
+ * `tiny`: Tiny shadow (`filter: drop-shadow(0 1px 1px rgba(0,0,0,0.05));`)
615
+ * `small`: Small shadow (`filter: drop-shadow(0 1px 2px rgba(0,0,0,0.1));`)
616
+ * `medium`: Medium shadow (`filter: drop-shadow(0 4px 3px rgba(0,0,0,0.07));`)
617
+ * `big`: Large shadow (`filter: drop-shadow(0 10px 8px rgba(0,0,0,0.04));`)
618
+ * `giant`: Giant shadow
619
+
620
+ ## filter-grayscale
621
+ > Apply grayscale filter
622
+
623
+ **Syntax:** `visual="grayscale:[value]"`
624
+
625
+ * `none`: No grayscale (`filter: grayscale(0%);`)
626
+ * `partial`: 50% grayscale (`filter: grayscale(50%);`)
627
+ * `full`: Full grayscale (`filter: grayscale(100%);`)
628
+
629
+ ## filter-hue-rotate
630
+ > Rotate hue colors
631
+
632
+ **Syntax:** `visual="hue-rotate:[degrees]"`
633
+
634
+ * `0`: No rotation (`filter: hue-rotate(0deg);`)
635
+ * `90`: 90° rotation (`filter: hue-rotate(90deg);`)
636
+ * `180`: 180° rotation (`filter: hue-rotate(180deg);`)
637
+
638
+ ## filter-invert
639
+ > Invert colors
640
+
641
+ **Syntax:** `visual="invert:[value]"`
642
+
643
+ * `none`: No inversion (`filter: invert(0%);`)
644
+ * `partial`: 50% inversion (`filter: invert(50%);`)
645
+ * `full`: Full inversion (`filter: invert(100%);`)
646
+
647
+ ## filter-saturate
648
+ > Adjust saturation
649
+
650
+ **Syntax:** `visual="saturate:[value]"`
651
+
652
+ * `none`: Desaturated (`filter: saturate(0);`)
653
+ * `low`: Low saturation (`filter: saturate(0.5);`)
654
+ * `normal`: Normal saturation (`filter: saturate(1);`)
655
+ * `high`: High saturation (`filter: saturate(1.5);`)
656
+ * `vivid`: Very saturated (`filter: saturate(2);`)
657
+
658
+ ## filter-sepia
659
+ > Apply sepia filter
660
+
661
+ **Syntax:** `visual="sepia:[value]"`
662
+
663
+ * `none`: No sepia (`filter: sepia(0%);`)
664
+ * `partial`: 50% sepia (`filter: sepia(50%);`)
665
+ * `full`: Full sepia (`filter: sepia(100%);`)
666
+
667
+ ## flex
668
+ > Flex shorthand property
669
+
670
+ **Syntax:** `layout="flex:[value]"`
671
+
672
+ * `1`: Flex 1 (`flex: 1 1 0%;`)
673
+ * `auto`: Flex auto (`flex: 1 1 auto;`)
674
+ * `initial`: Initial flex (`flex: 0 1 auto;`)
675
+ * `none`: No flex (`flex: none;`)
676
+
677
+ ## flex-basis
678
+ > Set initial size of flex item
679
+
680
+ **Syntax:** `layout="basis:[value]"`
681
+
682
+ * `auto`: Auto basis (`flex-basis: auto;`)
683
+ * `0`: Zero basis (`flex-basis: 0;`)
684
+
685
+ ## flex-direction
686
+ > Set the direction of flex items
687
+
688
+ **Syntax:** `layout="[direction]"`
689
+
690
+ * `row`: Horizontal (default) (`flex-direction: row;`)
691
+ * `col`: Vertical (`flex-direction: column;`)
692
+ * `row-reverse`: Horizontal reversed (`flex-direction: row-reverse;`)
693
+ * `col-reverse`: Vertical reversed (`flex-direction: column-reverse;`)
694
+
695
+ ## flex-items
696
+ > Control flex grow and shrink behavior
697
+
698
+ **Syntax:** `layout="[flex-item-value]"`
699
+
700
+ * `grow`: Allow item to grow (`flex-grow: 1;`)
701
+ * `grow-0`: Prevent growing (`flex-grow: 0;`)
702
+ * `shrink`: Allow item to shrink (`flex-shrink: 1;`)
703
+ * `shrink-0`: Prevent shrinking (`flex-shrink: 0;`)
704
+
705
+ ## flex-wrap
706
+ > Control how flex items wrap
707
+
708
+ **Syntax:** `layout="[wrap-value]"`
709
+
710
+ * `wrap`: Allow wrapping (`flex-wrap: wrap;`)
711
+ * `nowrap`: Prevent wrapping (`flex-wrap: nowrap;`)
712
+ * `wrap-reverse`: Wrap in reverse (`flex-wrap: wrap-reverse;`)
713
+
714
+ ## float-clear
715
+ > Control element floating and clearing
716
+
717
+ **Syntax:** `layout="float:[value]" or layout="clear:[value]"`
718
+
719
+ * `left`: Float left (`float: left;`)
720
+ * `right`: Float right (`float: right;`)
721
+ * `none`: No float (`float: none;`)
722
+
723
+ ## font-family
724
+ > Set font family
725
+
726
+ **Syntax:** `visual="font:[family]"`
727
+
728
+ * `sans`: Sans-serif
729
+ * `serif`: Serif (`font-family: ui-serif, Georgia, serif;`)
730
+ * `mono`: Monospace (`font-family: ui-monospace, monospace;`)
731
+
732
+ ## font-smoothing
733
+ > Control font smoothing
734
+
735
+ **Syntax:** `visual="[smoothing-value]"`
736
+
737
+ * `antialiased`: Antialiased
738
+ * `subpixel-antialiased`: Subpixel antialiased
739
+
740
+ ## font-style
741
+ > Set font style
742
+
743
+ **Syntax:** `visual="[style-value]"`
744
+
745
+ * `italic`: Italic text (`font-style: italic;`)
746
+ * `not-italic`: Normal style (`font-style: normal;`)
747
+
748
+ ## font-variant-numeric
749
+ > Control numeric font variants
750
+
751
+ **Syntax:** `visual="[variant-value]"`
752
+
753
+ * `normal-nums`: Normal numbers (`font-variant-numeric: normal;`)
754
+ * `ordinal`: Ordinal markers (`font-variant-numeric: ordinal;`)
755
+ * `slashed-zero`: Slashed zero (`font-variant-numeric: slashed-zero;`)
756
+ * `lining-nums`: Lining numbers (`font-variant-numeric: lining-nums;`)
757
+ * `oldstyle-nums`: Oldstyle numbers (`font-variant-numeric: oldstyle-nums;`)
758
+ * `proportional-nums`: Proportional numbers (`font-variant-numeric: proportional-nums;`)
759
+ * `tabular-nums`: Tabular numbers (`font-variant-numeric: tabular-nums;`)
760
+
761
+ ## font-weight
762
+ > Set font weight
763
+
764
+ **Syntax:** `visual="font:[weight]"`
765
+
766
+ * `normal`: Normal weight (`font-weight: var(--fw-normal);`)
767
+ * `medium`: Medium weight (`font-weight: var(--fw-medium);`)
768
+ * `bold`: Bold weight (`font-weight: var(--fw-bold);`)
769
+
770
+ ## forced-color-adjust
771
+ > Control forced colors mode behavior
772
+
773
+ **Syntax:** `visual="forced-color:[value]"`
774
+
775
+ * `auto`: Auto adjust (`forced-color-adjust: auto;`)
776
+ * `none`: No adjustment (`forced-color-adjust: none;`)
777
+
778
+ ## gap
779
+ > Add gap between flex/grid items
780
+
781
+ **Syntax:** `space="g:[value]" or space="g-{axis}:[value]"`
782
+
783
+ * `undefined`: All gaps (`gap: var(--s-{value});`)
784
+ * `undefined`: Column gap (`column-gap: var(--s-{value});`)
785
+ * `undefined`: Row gap (`row-gap: var(--s-{value});`)
786
+
787
+ ## gradient-from
788
+ > Set gradient start color
789
+
790
+ **Syntax:** `visual="from:[color]"`
791
+
792
+ * `primary`: Start from primary
793
+ * `blue-500`: Start from blue
794
+
795
+ ## gradient-to
796
+ > Set gradient end color
797
+
798
+ **Syntax:** `visual="to:[color]"`
799
+
800
+ * `purple-500`: End at purple (`--tw-gradient-to: var(--c-purple-500);`)
801
+ * `pink-500`: End at pink (`--tw-gradient-to: var(--c-pink-500);`)
802
+
803
+ ## gradient-via
804
+ > Set gradient middle color
805
+
806
+ **Syntax:** `visual="via:[color]"`
807
+
808
+ * `purple-500`: Via purple
809
+
810
+ ## grid-auto-flow
811
+ > Control how auto-placed items flow in grid
812
+
813
+ **Syntax:** `layout="grid-flow:[value]"`
814
+
815
+ * `row`: Place by row (`grid-auto-flow: row;`)
816
+ * `col`: Place by column (`grid-auto-flow: column;`)
817
+ * `dense`: Dense packing (`grid-auto-flow: dense;`)
818
+ * `row-dense`: Row with dense (`grid-auto-flow: row dense;`)
819
+ * `col-dense`: Column with dense (`grid-auto-flow: column dense;`)
820
+
821
+ ## grid-auto-sizing
822
+ > Control size of auto-generated grid tracks
823
+
824
+ **Syntax:** `layout="auto-cols:[value]" or layout="auto-rows:[value]"`
825
+
826
+ * `auto`: Auto size (`auto`)
827
+ * `min`: Minimum content (`min-content`)
828
+ * `max`: Maximum content (`max-content`)
829
+ * `fr`: Fractional unit (`minmax(0, 1fr)`)
830
+
831
+ ## grid-column-span
832
+ > Span across grid columns
833
+
834
+ **Syntax:** `layout="col-span:[value]"`
835
+
836
+ * `1-12`: Span N columns (`grid-column: span {n} / span {n};`)
837
+ * `full`: Span all columns (`grid-column: 1 / -1;`)
838
+
839
+ ## grid-columns
840
+ > Define grid template columns
841
+
842
+ **Syntax:** `layout="grid-cols:[value]"`
843
+
844
+ * `1-12`: N equal columns
845
+ * `none`: No columns defined (`grid-template-columns: none;`)
846
+ * `subgrid`: Use parent grid (`grid-template-columns: subgrid;`)
847
+
848
+ ## grid-row-span
849
+ > Span across grid rows
850
+
851
+ **Syntax:** `layout="row-span:[value]"`
852
+
853
+ * `1-12`: Span N rows (`grid-row: span {n} / span {n};`)
854
+ * `full`: Span all rows (`grid-row: 1 / -1;`)
855
+
856
+ ## grid-rows
857
+ > Define grid template rows
858
+
859
+ **Syntax:** `layout="grid-rows:[value]"`
860
+
861
+ * `1-12`: N equal rows (`grid-template-rows: repeat({n}, minmax(0, 1fr));`)
862
+ * `none`: No rows defined (`grid-template-rows: none;`)
863
+ * `subgrid`: Use parent grid (`grid-template-rows: subgrid;`)
864
+
865
+ ## height
866
+ > Set element height
867
+
868
+ **Syntax:** `space="h:[value]"`
869
+
870
+ * `undefined`: Height (`height: var(--s-{value});`)
871
+ * `undefined`: Minimum height (`min-height: var(--s-{value});`)
872
+ * `undefined`: Maximum height (`max-height: var(--s-{value});`)
873
+
874
+ ## hyphens
875
+ > Control hyphenation
876
+
877
+ **Syntax:** `visual="hyphens:[value]"`
878
+
879
+ * `none`: No hyphens (`hyphens: none;`)
880
+ * `manual`: Manual hyphens (`hyphens: manual;`)
881
+ * `auto`: Auto hyphens (`hyphens: auto;`)
882
+
883
+ ## inset
884
+ > Control positioning offsets
885
+
886
+ **Syntax:** `layout="inset:[value]" or layout="top:[value]"`
887
+
888
+ * `inset`: All sides (`inset: {value};`)
889
+ * `inset-x`: Left and right (`left: {value}; right: {value};`)
890
+ * `inset-y`: Top and bottom (`top: {value}; bottom: {value};`)
891
+ * `top`: Top offset (`top: {value};`)
892
+ * `right`: Right offset (`right: {value};`)
893
+ * `bottom`: Bottom offset (`bottom: {value};`)
894
+ * `left`: Left offset (`left: {value};`)
895
+
896
+ ## isolation
897
+ > Create new stacking context
898
+
899
+ **Syntax:** `layout="isolation:[value]"`
900
+
901
+ * `isolate`: Create stacking context (`isolation: isolate;`)
902
+ * `auto`: Auto isolation (`isolation: auto;`)
903
+
904
+ ## justify-content
905
+ > Align items along the main axis
906
+
907
+ **Syntax:** `layout="justify:[value]"`
908
+
909
+ * `start`: Align to start (`justify-content: flex-start;`)
910
+ * `end`: Align to end (`justify-content: flex-end;`)
911
+ * `center`: Center items (`justify-content: center;`)
912
+ * `between`: Space between items (`justify-content: space-between;`)
913
+ * `around`: Space around items (`justify-content: space-around;`)
914
+ * `evenly`: Even spacing (`justify-content: space-evenly;`)
915
+ * `stretch`: Stretch items (`justify-content: stretch;`)
916
+
917
+ ## justify-items
918
+ > Align grid items on inline axis
919
+
920
+ **Syntax:** `layout="justify-items:[value]"`
921
+
922
+ * `start`: Start alignment (`justify-items: start;`)
923
+ * `end`: End alignment (`justify-items: end;`)
924
+ * `center`: Center alignment (`justify-items: center;`)
925
+ * `stretch`: Stretch items (`justify-items: stretch;`)
926
+
927
+ ## justify-self
928
+ > Align single grid item on inline axis
929
+
930
+ **Syntax:** `layout="justify-self:[value]"`
931
+
932
+ * `auto`: Auto alignment (`justify-self: auto;`)
933
+ * `start`: Start alignment (`justify-self: start;`)
934
+ * `end`: End alignment (`justify-self: end;`)
935
+ * `center`: Center alignment (`justify-self: center;`)
936
+ * `stretch`: Stretch item (`justify-self: stretch;`)
937
+
938
+ ## letter-spacing
939
+ > Set letter spacing
940
+
941
+ **Syntax:** `visual="tracking:[value]"`
942
+
943
+ * `tighter`: Tighter spacing (`letter-spacing: -0.05em;`)
944
+ * `tight`: Tight spacing (`letter-spacing: -0.025em;`)
945
+ * `normal`: Normal spacing (`letter-spacing: 0;`)
946
+ * `wide`: Wide spacing (`letter-spacing: 0.025em;`)
947
+ * `wider`: Wider spacing (`letter-spacing: 0.05em;`)
948
+ * `widest`: Widest spacing (`letter-spacing: 0.1em;`)
949
+
950
+ ## line-clamp
951
+ > Limit text to specific lines
952
+
953
+ **Syntax:** `visual="line-clamp:[value]"`
954
+
955
+ * `1`: Single line
956
+ * `2`: Two lines
957
+ * `3`: Three lines
958
+ * `none`: No clamp
959
+
960
+ ## line-height
961
+ > Set line height
962
+
963
+ **Syntax:** `visual="leading:[value]"`
964
+
965
+ * `none`: No extra height (`line-height: 1;`)
966
+ * `tight`: Tight leading (`line-height: 1.25;`)
967
+ * `snug`: Snug leading (`line-height: 1.375;`)
968
+ * `normal`: Normal leading (`line-height: 1.5;`)
969
+ * `relaxed`: Relaxed leading (`line-height: 1.625;`)
970
+ * `loose`: Loose leading (`line-height: 2;`)
971
+
972
+ ## list-style
973
+ > Set list style
974
+
975
+ **Syntax:** `visual="list:[value]"`
976
+
977
+ * `none`: No bullets (`list-style-type: none;`)
978
+ * `disc`: Disc bullets (`list-style-type: disc;`)
979
+ * `decimal`: Numbers (`list-style-type: decimal;`)
980
+ * `square`: Square bullets (`list-style-type: square;`)
981
+ * `inside`: Inside position (`list-style-position: inside;`)
982
+ * `outside`: Outside position (`list-style-position: outside;`)
983
+
984
+ ## margin
985
+ > Add margin to elements
986
+
987
+ **Syntax:** `space="m:[value]" or space="m-{side}:[value]"`
988
+
989
+ * `undefined`: All sides (`margin: var(--s-{value});`)
990
+ * `undefined`: Top (`margin-top: var(--s-{value});`)
991
+ * `undefined`: Right (`margin-right: var(--s-{value});`)
992
+ * `undefined`: Bottom (`margin-bottom: var(--s-{value});`)
993
+ * `undefined`: Left (`margin-left: var(--s-{value});`)
994
+ * `undefined`: Horizontal
995
+ * `undefined`: Vertical
996
+
997
+ ## mask
998
+ > Apply mask to element
999
+
1000
+ **Syntax:** `visual="mask:[value]"`
1001
+
1002
+ * `none`: No mask (`mask-image: none;`)
1003
+ * `fade-y`: Vertical fade
1004
+ * `fade-x`: Horizontal fade
1005
+
1006
+ ## object-fit
1007
+ > Control how media content fits its container
1008
+
1009
+ **Syntax:** `layout="object:[value]"`
1010
+
1011
+ * `contain`: Scale to fit, preserve ratio (`object-fit: contain;`)
1012
+ * `cover`: Cover container, may crop (`object-fit: cover;`)
1013
+ * `fill`: Stretch to fill (`object-fit: fill;`)
1014
+ * `none`: No scaling (`object-fit: none;`)
1015
+ * `scale-down`: Smaller of none or contain (`object-fit: scale-down;`)
1016
+
1017
+ ## object-position
1018
+ > Position replaced element content within container
1019
+
1020
+ **Syntax:** `layout="object-pos:[value]"`
1021
+
1022
+ * `center`: Center position (`object-position: center;`)
1023
+ * `top`: Top position (`object-position: top;`)
1024
+ * `bottom`: Bottom position (`object-position: bottom;`)
1025
+ * `left`: Left position (`object-position: left;`)
1026
+ * `right`: Right position (`object-position: right;`)
1027
+ * `top-left`: Top left (`object-position: top left;`)
1028
+ * `top-right`: Top right (`object-position: top right;`)
1029
+ * `bottom-left`: Bottom left (`object-position: bottom left;`)
1030
+ * `bottom-right`: Bottom right (`object-position: bottom right;`)
1031
+
1032
+ ## opacity
1033
+ > Set element opacity (0-100)
1034
+
1035
+ **Syntax:** `visual="opacity:[value]"`
1036
+
1037
+ * `0`: Invisible (`opacity: 0;`)
1038
+ * `25`: 25% visible (`opacity: 0.25;`)
1039
+ * `50`: 50% visible (`opacity: 0.5;`)
1040
+ * `75`: 75% visible (`opacity: 0.75;`)
1041
+ * `100`: Fully visible (`opacity: 1;`)
1042
+
1043
+ ## order
1044
+ > Control flex/grid item order
1045
+
1046
+ **Syntax:** `layout="order:[value]"`
1047
+
1048
+ * `first`: Move to first (`order: -9999;`)
1049
+ * `last`: Move to last (`order: 9999;`)
1050
+ * `none`: Default order (`order: 0;`)
1051
+ * `1-12`: Specific order (`order: {n};`)
1052
+
1053
+ ## outline
1054
+ > Set outline color
1055
+
1056
+ **Syntax:** `visual="outline:[color]"`
1057
+
1058
+
1059
+ ## overflow
1060
+ > Control content overflow behavior
1061
+
1062
+ **Syntax:** `layout="overflow:[value]"`
1063
+
1064
+ * `auto`: Scrollbar when needed (`overflow: auto;`)
1065
+ * `hidden`: Hide overflow (`overflow: hidden;`)
1066
+ * `visible`: Show overflow (`overflow: visible;`)
1067
+ * `scroll`: Always show scrollbar (`overflow: scroll;`)
1068
+ * `clip`: Clip overflow (`overflow: clip;`)
1069
+
1070
+ ## overscroll
1071
+ > Control scroll chaining behavior
1072
+
1073
+ **Syntax:** `layout="overscroll:[value]"`
1074
+
1075
+ * `auto`: Default behavior (`overscroll-behavior: auto;`)
1076
+ * `contain`: Contain scroll (`overscroll-behavior: contain;`)
1077
+ * `none`: No scroll chaining (`overscroll-behavior: none;`)
1078
+
1079
+ ## padding
1080
+ > Add padding to elements
1081
+
1082
+ **Syntax:** `space="p:[value]" or space="p-{side}:[value]"`
1083
+
1084
+ * `undefined`: All sides (`padding: var(--s-{value});`)
1085
+ * `undefined`: Top (`padding-top: var(--s-{value});`)
1086
+ * `undefined`: Right (`padding-right: var(--s-{value});`)
1087
+ * `undefined`: Bottom (`padding-bottom: var(--s-{value});`)
1088
+ * `undefined`: Left (`padding-left: var(--s-{value});`)
1089
+ * `undefined`: Horizontal
1090
+ * `undefined`: Vertical
1091
+
1092
+ ## place-content
1093
+ > Shorthand for align-content and justify-content
1094
+
1095
+ **Syntax:** `layout="place-content:[value]"`
1096
+
1097
+ * `start`: Start alignment (`place-content: start;`)
1098
+ * `end`: End alignment (`place-content: end;`)
1099
+ * `center`: Center alignment (`place-content: center;`)
1100
+ * `between`: Space between (`place-content: space-between;`)
1101
+ * `around`: Space around (`place-content: space-around;`)
1102
+ * `evenly`: Even spacing (`place-content: space-evenly;`)
1103
+ * `stretch`: Stretch content (`place-content: stretch;`)
1104
+
1105
+ ## place-items
1106
+ > Shorthand for align-items and justify-items
1107
+
1108
+ **Syntax:** `layout="place-items:[value]"`
1109
+
1110
+ * `start`: Start alignment (`place-items: start;`)
1111
+ * `end`: End alignment (`place-items: end;`)
1112
+ * `center`: Center alignment (`place-items: center;`)
1113
+ * `stretch`: Stretch items (`place-items: stretch;`)
1114
+
1115
+ ## place-self
1116
+ > Shorthand for align-self and justify-self
1117
+
1118
+ **Syntax:** `layout="place-self:[value]"`
1119
+
1120
+ * `auto`: Auto alignment (`place-self: auto;`)
1121
+ * `start`: Start alignment (`place-self: start;`)
1122
+ * `end`: End alignment (`place-self: end;`)
1123
+ * `center`: Center alignment (`place-self: center;`)
1124
+ * `stretch`: Stretch item (`place-self: stretch;`)
1125
+
1126
+ ## pointer-events
1127
+ > Control pointer events
1128
+
1129
+ **Syntax:** `visual="pointer-events:[value]"`
1130
+
1131
+ * `none`: Ignore pointer events (`pointer-events: none;`)
1132
+ * `auto`: Normal pointer events (`pointer-events: auto;`)
1133
+
1134
+ ## position
1135
+ > Set the positioning method
1136
+
1137
+ **Syntax:** `layout="[position-value]"`
1138
+
1139
+ * `static`: Default positioning (`position: static;`)
1140
+ * `relative`: Relative to normal position (`position: relative;`)
1141
+ * `absolute`: Absolute within container (`position: absolute;`)
1142
+ * `fixed`: Fixed to viewport (`position: fixed;`)
1143
+ * `sticky`: Sticky positioning (`position: sticky;`)
1144
+
1145
+ ## resize
1146
+ > Control element resizing
1147
+
1148
+ **Syntax:** `visual="resize:[value]"`
1149
+
1150
+ * `none`: No resize (`resize: none;`)
1151
+ * `both`: Resize both (`resize: both;`)
1152
+ * `x`: Resize horizontal (`resize: horizontal;`)
1153
+ * `y`: Resize vertical (`resize: vertical;`)
1154
+
1155
+ ## ring
1156
+ > Add focus ring around element using box-shadow
1157
+
1158
+ **Syntax:** `visual="ring:[size]"`
1159
+
1160
+ * `none`: No ring (`box-shadow: 0 0 0 0 transparent;`)
1161
+ * `thin`: Thin ring (1px) (`box-shadow: 0 0 0 1px var(--ring-color);`)
1162
+ * `regular`: Regular ring (2px) (`box-shadow: 0 0 0 2px var(--ring-color);`)
1163
+ * `small`: Small ring (4px) (`box-shadow: 0 0 0 4px var(--ring-color);`)
1164
+ * `medium`: Medium ring (6px) (`box-shadow: 0 0 0 6px var(--ring-color);`)
1165
+ * `big`: Big ring (8px) (`box-shadow: 0 0 0 8px var(--ring-color);`)
1166
+
1167
+ ## ring-color
1168
+ > Set ring color
1169
+
1170
+ **Syntax:** `visual="ring-color:[color]"`
1171
+
1172
+ * `primary`: Primary ring color (`--ring-color: var(--c-primary);`)
1173
+ * `blue-500`: Blue ring color (`--ring-color: var(--c-blue-500);`)
1174
+
1175
+ ## ring-offset
1176
+ > Add gap between ring and element
1177
+
1178
+ **Syntax:** `visual="ring-offset:[size]"`
1179
+
1180
+ * `0`: No offset (`--ring-offset: 0px;`)
1181
+ * `2`: 2px offset (`--ring-offset: 2px;`)
1182
+ * `4`: 4px offset (`--ring-offset: 4px;`)
1183
+
1184
+ ## scroll-behavior
1185
+ > Set scroll behavior
1186
+
1187
+ **Syntax:** `visual="scroll-behavior:[value]"`
1188
+
1189
+ * `auto`: Instant scroll (`scroll-behavior: auto;`)
1190
+ * `smooth`: Smooth scroll (`scroll-behavior: smooth;`)
1191
+
1192
+ ## scroll-margin
1193
+ > Set scroll margin for snap
1194
+
1195
+ **Syntax:** `visual="scroll-m:[value]"`
1196
+
1197
+ * `scroll-m`: All sides (`scroll-margin: {value};`)
1198
+ * `scroll-m-t`: Top margin (`scroll-margin-top: {value};`)
1199
+ * `scroll-m-r`: Right margin (`scroll-margin-right: {value};`)
1200
+ * `scroll-m-b`: Bottom margin (`scroll-margin-bottom: {value};`)
1201
+ * `scroll-m-l`: Left margin (`scroll-margin-left: {value};`)
1202
+
1203
+ ## scroll-padding
1204
+ > Set scroll padding for snap
1205
+
1206
+ **Syntax:** `visual="scroll-p:[value]"`
1207
+
1208
+ * `scroll-p`: All sides (`scroll-padding: {value};`)
1209
+ * `scroll-p-t`: Top padding (`scroll-padding-top: {value};`)
1210
+ * `scroll-p-r`: Right padding (`scroll-padding-right: {value};`)
1211
+ * `scroll-p-b`: Bottom padding (`scroll-padding-bottom: {value};`)
1212
+ * `scroll-p-l`: Left padding (`scroll-padding-left: {value};`)
1213
+
1214
+ ## scroll-snap-align
1215
+ > Set scroll snap alignment
1216
+
1217
+ **Syntax:** `visual="snap-align:[value]"`
1218
+
1219
+ * `start`: Snap to start (`scroll-snap-align: start;`)
1220
+ * `end`: Snap to end (`scroll-snap-align: end;`)
1221
+ * `center`: Snap to center (`scroll-snap-align: center;`)
1222
+ * `none`: No snap (`scroll-snap-align: none;`)
1223
+
1224
+ ## scroll-snap-stop
1225
+ > Control scroll snap stop behavior
1226
+
1227
+ **Syntax:** `visual="snap-stop:[value]"`
1228
+
1229
+ * `normal`: Normal stop (`scroll-snap-stop: normal;`)
1230
+ * `always`: Always stop (`scroll-snap-stop: always;`)
1231
+
1232
+ ## scroll-snap-type
1233
+ > Set scroll snap type
1234
+
1235
+ **Syntax:** `visual="snap-type:[value]"`
1236
+
1237
+ * `none`: No snapping (`scroll-snap-type: none;`)
1238
+ * `x`: Horizontal snap (`scroll-snap-type: x mandatory;`)
1239
+ * `y`: Vertical snap (`scroll-snap-type: y mandatory;`)
1240
+ * `both`: Both axes (`scroll-snap-type: both mandatory;`)
1241
+ * `x-proximity`: Horizontal proximity (`scroll-snap-type: x proximity;`)
1242
+ * `y-proximity`: Vertical proximity (`scroll-snap-type: y proximity;`)
1243
+
1244
+ ## shorthand-alignment
1245
+ > Quick alignment shortcuts
1246
+
1247
+ **Syntax:** `layout="[alignment]"`
1248
+
1249
+ * `center`: Center both axes (`justify-content: center; align-items: center;`)
1250
+ * `start`: Align to start
1251
+ * `end`: Align to end (`justify-content: flex-end; align-items: flex-end;`)
1252
+ * `between`: Space between (`justify-content: space-between;`)
1253
+ * `around`: Space around (`justify-content: space-around;`)
1254
+ * `evenly`: Even spacing (`justify-content: space-evenly;`)
1255
+
1256
+ ## state-prefixes
1257
+ > Apply styles on specific states
1258
+
1259
+ **Syntax:** `visual="hover:... focus:... active:..."`
1260
+
1261
+ * `hover:`: On hover (`:hover`)
1262
+ * `focus:`: On focus (`:focus`)
1263
+ * `active:`: On active (`:active`)
1264
+ * `disabled:`: When disabled (`:disabled`)
1265
+ * `visited:`: When visited (`:visited`)
1266
+ * `first:`: First child (`:first-child`)
1267
+ * `last:`: Last child (`:last-child`)
1268
+ * `odd:`: Odd children (`:nth-child(odd)`)
1269
+ * `even:`: Even children (`:nth-child(even)`)
1270
+
1271
+ ## stroke
1272
+ > Set SVG stroke color
1273
+
1274
+ **Syntax:** `visual="stroke:[color]"`
1275
+
1276
+ * `none`: No stroke (`stroke: none;`)
1277
+ * `current`: Current color (`stroke: currentColor;`)
1278
+
1279
+ ## stroke-width
1280
+ > Set SVG stroke width
1281
+
1282
+ **Syntax:** `visual="stroke-w:[value]"`
1283
+
1284
+ * `0`: No stroke (`stroke-width: 0;`)
1285
+ * `1`: 1px stroke (`stroke-width: 1px;`)
1286
+ * `2`: 2px stroke (`stroke-width: 2px;`)
1287
+
1288
+ ## table-layout
1289
+ > Control table layout algorithm
1290
+
1291
+ **Syntax:** `layout="table:[value]"`
1292
+
1293
+ * `auto`: Auto layout (`table-layout: auto;`)
1294
+ * `fixed`: Fixed layout (`table-layout: fixed;`)
1295
+
1296
+ ## text-alignment
1297
+ > Set text alignment
1298
+
1299
+ **Syntax:** `visual="text:[alignment]"`
1300
+
1301
+ * `left`: Left align (`text-align: left;`)
1302
+ * `center`: Center align (`text-align: center;`)
1303
+ * `right`: Right align (`text-align: right;`)
1304
+ * `justify`: Justify (`text-align: justify;`)
1305
+
1306
+ ## text-color
1307
+ > Set text color
1308
+
1309
+ **Syntax:** `visual="text:[color]"`
1310
+
1311
+ * `left`: Align left (`text-align: left;`)
1312
+ * `center`: Align center (`text-align: center;`)
1313
+ * `right`: Align right (`text-align: right;`)
1314
+ * `justify`: Justify text (`text-align: justify;`)
1315
+
1316
+ ## text-decoration
1317
+ > Set text decoration
1318
+
1319
+ **Syntax:** `visual="[decoration-value]"`
1320
+
1321
+ * `underline`: Underline (`text-decoration-line: underline;`)
1322
+ * `overline`: Overline (`text-decoration-line: overline;`)
1323
+ * `line-through`: Strikethrough (`text-decoration-line: line-through;`)
1324
+ * `no-underline`: No decoration (`text-decoration-line: none;`)
1325
+
1326
+ ## text-indent
1327
+ > Set text indentation
1328
+
1329
+ **Syntax:** `visual="indent:[value]"`
1330
+
1331
+ * `0`: No indent (`text-indent: 0;`)
1332
+
1333
+ ## text-overflow
1334
+ > Handle text overflow
1335
+
1336
+ **Syntax:** `visual="[overflow-value]"`
1337
+
1338
+ * `truncate`: Truncate with ellipsis
1339
+ * `text-ellipsis`: Ellipsis overflow (`text-overflow: ellipsis;`)
1340
+ * `text-clip`: Clip overflow (`text-overflow: clip;`)
1341
+
1342
+ ## text-shadow
1343
+ > Add text shadow
1344
+
1345
+ **Syntax:** `visual="text-shadow:[value]"`
1346
+
1347
+ * `none`: No shadow (`text-shadow: none;`)
1348
+ * `small`: Small shadow (`text-shadow: 0 1px 2px rgba(0,0,0,0.1);`)
1349
+ * `medium`: Medium shadow (`text-shadow: 0 2px 4px rgba(0,0,0,0.1);`)
1350
+ * `big`: Large shadow (`text-shadow: 0 4px 8px rgba(0,0,0,0.1);`)
1351
+
1352
+ ## text-size
1353
+ > Set font size
1354
+
1355
+ **Syntax:** `visual="text-size:[value]"`
1356
+
1357
+ * `mini`: Mini size (0.75rem / 1rem)
1358
+ * `small`: Small size (0.875rem / 1.25rem)
1359
+ * `base`: Base size (1rem / 1.5rem)
1360
+ * `large`: Large size (1.125rem / 1.75rem)
1361
+ * `big`: Big size (1.25rem / 1.75rem)
1362
+ * `huge`: Huge size (1.5rem / 2rem)
1363
+ * `grand`: Grand size (1.875rem / 2.25rem)
1364
+ * `giant`: Giant size (2.25rem / 2.5rem)
1365
+ * `mount`: Mount size (3rem / 1)
1366
+ * `mega`: Mega size (3.75rem / 1)
1367
+ * `giga`: Giga size (4.5rem / 1)
1368
+ * `tera`: Tera size (6rem / 1)
1369
+ * `hero`: Hero size (8rem / 1)
1370
+
1371
+ ## text-transform
1372
+ > Transform text case
1373
+
1374
+ **Syntax:** `visual="[transform-value]"`
1375
+
1376
+ * `uppercase`: All uppercase (`text-transform: uppercase;`)
1377
+ * `lowercase`: All lowercase (`text-transform: lowercase;`)
1378
+ * `capitalize`: Capitalize words (`text-transform: capitalize;`)
1379
+ * `normal-case`: Normal case (`text-transform: none;`)
1380
+
1381
+ ## text-wrap
1382
+ > Control text wrapping
1383
+
1384
+ **Syntax:** `visual="[wrap-value]"`
1385
+
1386
+ * `text-wrap`: Wrap text (`text-wrap: wrap;`)
1387
+ * `text-nowrap`: No wrap (`text-wrap: nowrap;`)
1388
+ * `text-balance`: Balanced wrap (`text-wrap: balance;`)
1389
+ * `text-pretty`: Pretty wrap (`text-wrap: pretty;`)
1390
+
1391
+ ## touch-action
1392
+ > Control touch interactions
1393
+
1394
+ **Syntax:** `visual="touch:[value]"`
1395
+
1396
+ * `auto`: Default touch (`touch-action: auto;`)
1397
+ * `none`: Disable touch (`touch-action: none;`)
1398
+ * `pan-x`: Pan horizontally (`touch-action: pan-x;`)
1399
+ * `pan-y`: Pan vertically (`touch-action: pan-y;`)
1400
+ * `pan-left`: Pan left (`touch-action: pan-left;`)
1401
+ * `pan-right`: Pan right (`touch-action: pan-right;`)
1402
+ * `pinch-zoom`: Pinch to zoom (`touch-action: pinch-zoom;`)
1403
+ * `manipulation`: Pan and pinch only (`touch-action: manipulation;`)
1404
+
1405
+ ## transform-backface
1406
+ > Control visibility of element back side when rotated in 3D
1407
+
1408
+ **Syntax:** `visual="backface:[value]"`
1409
+
1410
+ * `visible`: Backface visible (`backface-visibility: visible;`)
1411
+ * `hidden`: Backface hidden (`backface-visibility: hidden;`)
1412
+
1413
+ ## transform-origin
1414
+ > Set transform origin point
1415
+
1416
+ **Syntax:** `visual="origin:[value]"`
1417
+
1418
+ * `center`: Center origin (`transform-origin: center;`)
1419
+ * `top`: Top origin (`transform-origin: top;`)
1420
+ * `top-right`: Top right (`transform-origin: top right;`)
1421
+ * `right`: Right origin (`transform-origin: right;`)
1422
+ * `bottom-right`: Bottom right (`transform-origin: bottom right;`)
1423
+ * `bottom`: Bottom origin (`transform-origin: bottom;`)
1424
+ * `bottom-left`: Bottom left (`transform-origin: bottom left;`)
1425
+ * `left`: Left origin (`transform-origin: left;`)
1426
+ * `top-left`: Top left (`transform-origin: top left;`)
1427
+
1428
+ ## transform-perspective
1429
+ > Set 3D perspective on container (apply to parent of transformed elements)
1430
+
1431
+ **Syntax:** `visual="perspective:[value]"`
1432
+
1433
+ * `none`: No perspective (`perspective: none;`)
1434
+ * `dramatic`: Dramatic perspective (`perspective: 100px;`)
1435
+ * `near`: Near perspective (`perspective: 300px;`)
1436
+ * `normal`: Normal perspective (`perspective: 500px;`)
1437
+ * `midrange`: Midrange perspective (`perspective: 800px;`)
1438
+ * `far`: Far perspective (`perspective: 1000px;`)
1439
+ * `distant`: Distant perspective (`perspective: 1200px;`)
1440
+
1441
+ ## transform-perspective-origin
1442
+ > Set perspective vanishing point location
1443
+
1444
+ **Syntax:** `visual="perspective-origin:[value]"`
1445
+
1446
+ * `center`: Center origin (`perspective-origin: center;`)
1447
+ * `top`: Top origin (`perspective-origin: top;`)
1448
+ * `bottom`: Bottom origin (`perspective-origin: bottom;`)
1449
+ * `left`: Left origin (`perspective-origin: left;`)
1450
+ * `right`: Right origin (`perspective-origin: right;`)
1451
+ * `top-left`: Top left (`perspective-origin: top left;`)
1452
+ * `top-right`: Top right (`perspective-origin: top right;`)
1453
+ * `bottom-left`: Bottom left (`perspective-origin: bottom left;`)
1454
+ * `bottom-right`: Bottom right (`perspective-origin: bottom right;`)
1455
+
1456
+ ## transform-rotate
1457
+ > Rotate element
1458
+
1459
+ **Syntax:** `visual="rotate:[degrees]"`
1460
+
1461
+ * `0`: No rotation (`transform: rotate(0deg);`)
1462
+ * `45`: 45° rotation (`transform: rotate(45deg);`)
1463
+ * `90`: 90° rotation (`transform: rotate(90deg);`)
1464
+ * `180`: 180° rotation (`transform: rotate(180deg);`)
1465
+
1466
+ ## transform-rotate-3d
1467
+ > Rotate element in 3D space along X, Y, or Z axis
1468
+
1469
+ **Syntax:** `visual="rotate-x:[degrees]" or visual="rotate-y:[degrees]" or visual="rotate-z:[degrees]"`
1470
+
1471
+ * `0`: No rotation (`transform: rotateX(0deg);`)
1472
+ * `45`: 45° rotation (`transform: rotateX(45deg);`)
1473
+ * `90`: 90° rotation (`transform: rotateX(90deg);`)
1474
+ * `180`: 180° rotation (`transform: rotateX(180deg);`)
1475
+
1476
+ ## transform-scale
1477
+ > Scale element
1478
+
1479
+ **Syntax:** `visual="scale:[value]"`
1480
+
1481
+ * `0`: Scale to 0 (`transform: scale(0);`)
1482
+ * `50`: Scale to 50% (`transform: scale(0.5);`)
1483
+ * `75`: Scale to 75% (`transform: scale(0.75);`)
1484
+ * `100`: Normal scale (`transform: scale(1);`)
1485
+ * `110`: Scale to 110% (`transform: scale(1.1);`)
1486
+ * `125`: Scale to 125% (`transform: scale(1.25);`)
1487
+ * `150`: Scale to 150% (`transform: scale(1.5);`)
1488
+
1489
+ ## transform-skew
1490
+ > Skew element
1491
+
1492
+ **Syntax:** `visual="skew-x:[degrees]" or visual="skew-y:[degrees]"`
1493
+
1494
+ * `0`: No skew (`transform: skewX(0deg);`)
1495
+ * `3`: 3° skew (`transform: skewX(3deg);`)
1496
+ * `6`: 6° skew (`transform: skewX(6deg);`)
1497
+ * `12`: 12° skew (`transform: skewX(12deg);`)
1498
+
1499
+ ## transform-style
1500
+ > Preserve 3D space for nested transformed elements
1501
+
1502
+ **Syntax:** `visual="transform-style:[value]"`
1503
+
1504
+ * `flat`: Flatten 3D children (`transform-style: flat;`)
1505
+ * `preserve-3d`: Preserve 3D depth (`transform-style: preserve-3d;`)
1506
+
1507
+ ## transform-translate
1508
+ > Translate element position along X, Y, or Z axis
1509
+
1510
+ **Syntax:** `visual="translate-x:[value]" or visual="translate-y:[value]" or visual="translate-z:[value]"`
1511
+
1512
+ * `0`: No translation (`transform: translateX(0);`)
1513
+ * `tiny`: Tiny offset (`transform: translateX(var(--sp-tiny));`)
1514
+ * `small`: Small offset (`transform: translateX(var(--sp-small));`)
1515
+ * `medium`: Medium offset (`transform: translateX(var(--sp-medium));`)
1516
+ * `big`: Big offset (`transform: translateX(var(--sp-big));`)
1517
+ * `full`: Full width/height (`transform: translateX(100%);`)
1518
+ * `1/2`: Half width/height (`transform: translateX(50%);`)
1519
+ * `-full`: Negative full (`transform: translateX(-100%);`)
1520
+ * `-1/2`: Negative half (`transform: translateX(-50%);`)
1521
+
1522
+ ## transform-translate-z
1523
+ > Translate element along Z axis (depth) in 3D space
1524
+
1525
+ **Syntax:** `visual="translate-z:[value]"`
1526
+
1527
+ * `0`: No Z translation (`transform: translateZ(0);`)
1528
+ * `near`: Move near (forward) (`transform: translateZ(50px);`)
1529
+ * `far`: Move far (backward) (`transform: translateZ(-50px);`)
1530
+
1531
+ ## transition-delay
1532
+ > Set transition delay
1533
+
1534
+ **Syntax:** `visual="delay:[value]"`
1535
+
1536
+ * `instant`: 75ms delay (`transition-delay: 75ms;`)
1537
+ * `quick`: 100ms delay (`transition-delay: 100ms;`)
1538
+ * `fast`: 150ms delay (`transition-delay: 150ms;`)
1539
+ * `normal`: 200ms delay (`transition-delay: 200ms;`)
1540
+ * `slow`: 300ms delay (`transition-delay: 300ms;`)
1541
+
1542
+ ## transition-duration
1543
+ > Set transition duration
1544
+
1545
+ **Syntax:** `visual="duration:[value]"`
1546
+
1547
+ * `instant`: 75ms (`transition-duration: 75ms;`)
1548
+ * `quick`: 100ms (`transition-duration: 100ms;`)
1549
+ * `fast`: 150ms (`transition-duration: 150ms;`)
1550
+ * `normal`: 200ms (`transition-duration: 200ms;`)
1551
+ * `slow`: 300ms (`transition-duration: 300ms;`)
1552
+ * `slower`: 500ms (`transition-duration: 500ms;`)
1553
+ * `lazy`: 700ms (`transition-duration: 700ms;`)
1554
+
1555
+ ## transition-property
1556
+ > Set transition properties
1557
+
1558
+ **Syntax:** `visual="transition:[value]"`
1559
+
1560
+ * `none`: No transition (`transition-property: none;`)
1561
+ * `all`: All properties
1562
+ * `colors`: Color properties
1563
+ * `opacity`: Opacity only
1564
+ * `shadow`: Shadow only
1565
+ * `transform`: Transform only
1566
+
1567
+ ## transition-timing
1568
+ > Set transition timing function
1569
+
1570
+ **Syntax:** `visual="ease:[value]"`
1571
+
1572
+ * `linear`: Linear timing (`transition-timing-function: linear;`)
1573
+ * `in`: Ease in
1574
+ * `out`: Ease out
1575
+ * `in-out`: Ease in-out
1576
+
1577
+ ## typography-keywords
1578
+ > Typography utility keywords
1579
+
1580
+ **Syntax:** `visual="[keyword]"`
1581
+
1582
+ * `italic`: Italic text (`font-style: italic;`)
1583
+ * `not-italic`: Normal style (`font-style: normal;`)
1584
+ * `antialiased`: Antialiased text
1585
+ * `subpixel-antialiased`: Subpixel antialiasing
1586
+ * `uppercase`: Uppercase text (`text-transform: uppercase;`)
1587
+ * `lowercase`: Lowercase text (`text-transform: lowercase;`)
1588
+ * `capitalize`: Capitalize words (`text-transform: capitalize;`)
1589
+ * `normal-case`: Normal case (`text-transform: none;`)
1590
+ * `underline`: Underline text (`text-decoration-line: underline;`)
1591
+ * `overline`: Overline text (`text-decoration-line: overline;`)
1592
+ * `line-through`: Strikethrough (`text-decoration-line: line-through;`)
1593
+ * `no-underline`: No decoration (`text-decoration-line: none;`)
1594
+ * `decoration-solid`: Solid line (`text-decoration-style: solid;`)
1595
+ * `decoration-double`: Double line (`text-decoration-style: double;`)
1596
+ * `decoration-dotted`: Dotted line (`text-decoration-style: dotted;`)
1597
+ * `decoration-dashed`: Dashed line (`text-decoration-style: dashed;`)
1598
+ * `decoration-wavy`: Wavy line (`text-decoration-style: wavy;`)
1599
+ * `truncate`: Truncate with ellipsis
1600
+ * `text-ellipsis`: Ellipsis overflow (`text-overflow: ellipsis;`)
1601
+ * `text-clip`: Clip overflow (`text-overflow: clip;`)
1602
+ * `text-wrap`: Wrap text (`text-wrap: wrap;`)
1603
+ * `text-nowrap`: No wrap (`text-wrap: nowrap;`)
1604
+ * `text-balance`: Balanced wrapping (`text-wrap: balance;`)
1605
+ * `text-pretty`: Pretty wrapping (`text-wrap: pretty;`)
1606
+ * `whitespace-normal`: Normal whitespace (`white-space: normal;`)
1607
+ * `whitespace-nowrap`: No wrap whitespace (`white-space: nowrap;`)
1608
+ * `whitespace-pre`: Preserve whitespace (`white-space: pre;`)
1609
+ * `whitespace-pre-line`: Pre-line whitespace (`white-space: pre-line;`)
1610
+ * `whitespace-pre-wrap`: Pre-wrap whitespace (`white-space: pre-wrap;`)
1611
+ * `whitespace-break-spaces`: Break spaces (`white-space: break-spaces;`)
1612
+ * `break-normal`: Normal word break (`overflow-wrap: normal; word-break: normal;`)
1613
+ * `break-words`: Break words (`overflow-wrap: break-word;`)
1614
+ * `break-all`: Break all (`word-break: break-all;`)
1615
+ * `break-keep`: Keep all (`word-break: keep-all;`)
1616
+ * `hyphens-none`: No hyphens (`hyphens: none;`)
1617
+ * `hyphens-manual`: Manual hyphens (`hyphens: manual;`)
1618
+ * `hyphens-auto`: Auto hyphens (`hyphens: auto;`)
1619
+ * `align-baseline`: Baseline align (`vertical-align: baseline;`)
1620
+ * `align-top`: Top align (`vertical-align: top;`)
1621
+ * `align-middle`: Middle align (`vertical-align: middle;`)
1622
+ * `align-bottom`: Bottom align (`vertical-align: bottom;`)
1623
+ * `align-text-top`: Text top align (`vertical-align: text-top;`)
1624
+ * `align-text-bottom`: Text bottom align (`vertical-align: text-bottom;`)
1625
+ * `align-sub`: Subscript align (`vertical-align: sub;`)
1626
+ * `align-super`: Superscript align (`vertical-align: super;`)
1627
+ * `list-none`: No list style (`list-style-type: none;`)
1628
+ * `list-disc`: Disc bullets (`list-style-type: disc;`)
1629
+ * `list-decimal`: Decimal numbers (`list-style-type: decimal;`)
1630
+ * `list-square`: Square bullets (`list-style-type: square;`)
1631
+ * `list-inside`: Inside position (`list-style-position: inside;`)
1632
+ * `list-outside`: Outside position (`list-style-position: outside;`)
1633
+
1634
+ ## user-select
1635
+ > Control text selection
1636
+
1637
+ **Syntax:** `visual="select:[value]"`
1638
+
1639
+ * `none`: Prevent selection (`user-select: none;`)
1640
+ * `text`: Allow text selection (`user-select: text;`)
1641
+ * `all`: Select all on click (`user-select: all;`)
1642
+ * `auto`: Default behavior (`user-select: auto;`)
1643
+
1644
+ ## vertical-align
1645
+ > Set vertical alignment
1646
+
1647
+ **Syntax:** `visual="align:[value]"`
1648
+
1649
+ * `baseline`: Baseline (`vertical-align: baseline;`)
1650
+ * `top`: Top (`vertical-align: top;`)
1651
+ * `middle`: Middle (`vertical-align: middle;`)
1652
+ * `bottom`: Bottom (`vertical-align: bottom;`)
1653
+ * `text-top`: Text top (`vertical-align: text-top;`)
1654
+ * `text-bottom`: Text bottom (`vertical-align: text-bottom;`)
1655
+ * `sub`: Subscript (`vertical-align: sub;`)
1656
+ * `super`: Superscript (`vertical-align: super;`)
1657
+
1658
+ ## visibility
1659
+ > Control element visibility
1660
+
1661
+ **Syntax:** `layout="[visibility-value]"`
1662
+
1663
+ * `visible`: Element is visible (`visibility: visible;`)
1664
+ * `invisible`: Element is invisible but takes space (`visibility: hidden;`)
1665
+
1666
+ ## whitespace
1667
+ > Control whitespace handling
1668
+
1669
+ **Syntax:** `visual="whitespace:[value]"`
1670
+
1671
+ * `normal`: Normal whitespace (`white-space: normal;`)
1672
+ * `nowrap`: No wrap (`white-space: nowrap;`)
1673
+ * `pre`: Preserve whitespace (`white-space: pre;`)
1674
+ * `pre-line`: Pre-line (`white-space: pre-line;`)
1675
+ * `pre-wrap`: Pre-wrap (`white-space: pre-wrap;`)
1676
+ * `break-spaces`: Break spaces (`white-space: break-spaces;`)
1677
+
1678
+ ## width
1679
+ > Set element width
1680
+
1681
+ **Syntax:** `space="w:[value]"`
1682
+
1683
+ * `undefined`: Width (`width: var(--s-{value});`)
1684
+ * `undefined`: Minimum width (`min-width: var(--s-{value});`)
1685
+ * `undefined`: Maximum width (`max-width: var(--s-{value});`)
1686
+
1687
+ ## will-change
1688
+ > Hint browser about upcoming changes
1689
+
1690
+ **Syntax:** `visual="will-change:[value]"`
1691
+
1692
+ * `auto`: Auto optimization (`will-change: auto;`)
1693
+ * `scroll`: Scroll changes (`will-change: scroll-position;`)
1694
+ * `contents`: Content changes (`will-change: contents;`)
1695
+ * `transform`: Transform changes (`will-change: transform;`)
1696
+ * `opacity`: Opacity changes (`will-change: opacity;`)
1697
+
1698
+ ## word-break
1699
+ > Control word breaking
1700
+
1701
+ **Syntax:** `visual="[break-value]"`
1702
+
1703
+ * `break-normal`: Normal break (`overflow-wrap: normal; word-break: normal;`)
1704
+ * `break-words`: Break words (`overflow-wrap: break-word;`)
1705
+ * `break-all`: Break all (`word-break: break-all;`)
1706
+ * `break-keep`: Keep all (`word-break: keep-all;`)
1707
+
1708
+ ## z-index
1709
+ > Control stacking order
1710
+
1711
+ **Syntax:** `layout="z:[value]"`
1712
+
1713
+ * `base`: Base layer (0) (`z-index: var(--z-base);`)
1714
+ * `low`: Low layer (10) (`z-index: var(--z-low);`)
1715
+ * `mid`: Middle layer (50) (`z-index: var(--z-mid);`)
1716
+ * `high`: High layer (100) (`z-index: var(--z-high);`)
1717
+ * `top`: Top layer (9999) (`z-index: var(--z-top);`)
1718
+