# @bookklik/senangstart-css
> Fluent Style Utilities for Humans and AI
## Docs
- [Documentation](https://bookklik-technologies.github.io/senangstart-css/guide)
## Source
- [Repository](https://github.com/bookklik-technologies/senangstart-css)
# Documentation Guides
# Framework Overview
SenangStart CSS is a utility-first framework that uses **Natural Adjectives** instead of abstract numbers.
## Core Philosophy
- **Natural Scale**: Sizes map to physical mental models (e.g., `tiny` = pebble/4px, `medium` = smartphone/16px, `giant` = door/64px).
- **Intent-First**: Describe *what* you want ("give it air" -> scale up), not pixels.
- **Tri-Attribute Syntax**: Separation of concerns into three attributes:
1. `layout`: Structure & position (flex, grid, block, sticky).
2. `space`: Sizing, padding, margin, gap.
3. `visual`: Colors, typography, borders, shadows, effects.
## Syntax Reference
### 1. Layout Attribute
Controls internal flow and external positioning.
- **Flex**: `layout="flex col center"` (Flexbox, column direction, centered).
- **Grid**: `layout="grid"`
- **Position**: `layout="absolute z:top"`
### 2. Space Attribute
Controls dimensions and spacing using the Natural Scale.
- **Syntax**: `[breakpoint]:[property]:[scale]`
- **Properties**: `p` (padding), `m` (margin), `g` (gap), `w` (width), `h` (height).
- **Values**:
- `none` (0px)
- `thin` (1px), `regular` (2px), `thick` (3px)
- `tiny` (4px), `tiny-2x` (6px)
- `small` (8px), `small-2x` (10px), `small-3x` (12px), `small-4x` (14px)
- `medium` (16px), `medium-2x` (20px), `medium-3x` (24px), `medium-4x` (28px)
- `large` (32px), `large-2x` (36px), `large-3x` (40px), `large-4x` (44px)
- `big` (48px), `big-2x` (56px), `big-3x` (64px), `big-4x` (80px)
- `giant` (96px), `giant-2x` (112px), `giant-3x` (128px), `giant-4x` (144px)
- `vast` (160px), `vast-2x` (176px), `vast-3x` (192px), `vast-4x` (208px)
- `vast-5x` (224px), `vast-6x` (240px), `vast-7x` (256px), `vast-8x` (288px)
- `vast-9x` (320px), `vast-10x` (384px)
- **Negative**: `space="m:-small m-x:-tw-4"` (Negative scale values).
- **Arbitrary**: `space="w:[350px] m:[-10px]"`
### 3. Visual Attribute
Controls appearance.
- **Colors**: `bg:primary`, `text:white`, `border:grey`.
- **Typography**: `font:bold`, `text-size:big`.
- **Effects**: `rounded:medium`, `shadow:big`, `opacity:[0.5]`.
## Modifiers
### Responsive Prefixes
Mobile-first breakpoints:
- (default): 0px+
- `mob:`: 480px+ ("Large Mobile")
- `tab:`: 768px+ ("Tablet")
- `lap:`: 1024px+ ("Laptop")
- `desk:`: 1280px+ ("Desktop")
Example: `space="p:small tab:p:medium lap:p:big"`
### State Prefixes
- `hover:`: `visual="bg:primary hover:bg:primary-dark"`
- `focus:`: `visual="border:grey focus:border:brand"`
- `active:`, `disabled:`, `group-hover:`
- `dark:`: `visual="bg:white dark:bg:slate-900"`
## State Capabilities & Interaction
React to parent ("Group") or sibling ("Peer") states across all attributes.
### 1. Group Capabilities
Add these to the `layout` attribute of a parent element:
- `hoverable`: Adds `:hover` support.
- `focusable`: Adds `:focus-within` support.
- `pressable`: Adds `:active` support.
- `expandable`: Reacts to `[aria-expanded="true"]`.
- `selectable`: Reacts to `[aria-selected="true"]`.
**Example:**
```html
Hover parent to change me
```
### 2. Peer Interactions
Use `interact="[id]"` on the trigger and `listens="[id]"` on the receiver.
**Example:**
```html
Target
```
## Configuration
Use `senangstart.config.js` to override defaults.
```js
export default {
theme: {
colors: { brand: '#8B5CF6' },
spacing: { huge: '256px' }
}
}
```
# Utility Definitions
## accent-color
> Set accent color for form controls
**Syntax:** `visual="accent:[color]"`
## align-content
> Align content rows in multi-line flex container
**Syntax:** `layout="content:[value]"`
* `start`: Align to start (`align-content: flex-start;`)
* `end`: Align to end (`align-content: flex-end;`)
* `center`: Center content (`align-content: center;`)
* `between`: Space between rows (`align-content: space-between;`)
* `around`: Space around rows (`align-content: space-around;`)
* `evenly`: Even spacing (`align-content: space-evenly;`)
* `stretch`: Stretch rows (`align-content: stretch;`)
## align-items
> Align items along the cross axis
**Syntax:** `layout="items:[value]"`
* `start`: Align to start (`align-items: flex-start;`)
* `end`: Align to end (`align-items: flex-end;`)
* `center`: Center items (`align-items: center;`)
* `baseline`: Align to baseline (`align-items: baseline;`)
* `stretch`: Stretch items (`align-items: stretch;`)
## align-self
> Override alignment for a single item
**Syntax:** `layout="self:[value]"`
* `auto`: Use parent alignment (`align-self: auto;`)
* `start`: Align to start (`align-self: flex-start;`)
* `end`: Align to end (`align-self: flex-end;`)
* `center`: Center item (`align-self: center;`)
* `baseline`: Align to baseline (`align-self: baseline;`)
* `stretch`: Stretch item (`align-self: stretch;`)
## animation-builtin
> Apply built-in animations
**Syntax:** `visual="animate:[value]"`
* `none`: No animation (`animation: none;`)
* `spin`: Spinning (`animation: spin 1s linear infinite;`)
* `ping`: Ping effect
* `pulse`: Pulsing
* `bounce`: Bouncing (`animation: bounce 1s infinite;`)
## animation-delay
> Set animation delay
**Syntax:** `visual="animation-delay:[value]"`
* `instant`: 75ms delay (`animation-delay: 75ms;`)
* `quick`: 100ms delay (`animation-delay: 100ms;`)
* `fast`: 150ms delay (`animation-delay: 150ms;`)
* `normal`: 200ms delay (`animation-delay: 200ms;`)
* `slow`: 300ms delay (`animation-delay: 300ms;`)
## animation-direction
> Set animation direction
**Syntax:** `visual="animation-direction:[value]"`
* `normal`: Normal direction (`animation-direction: normal;`)
* `reverse`: Reverse direction (`animation-direction: reverse;`)
* `alternate`: Alternate direction (`animation-direction: alternate;`)
* `alternate-reverse`: Alternate reverse (`animation-direction: alternate-reverse;`)
## animation-duration
> Set animation duration
**Syntax:** `visual="animation-duration:[value]"`
* `instant`: 75ms (`animation-duration: 75ms;`)
* `quick`: 100ms (`animation-duration: 100ms;`)
* `fast`: 150ms (`animation-duration: 150ms;`)
* `normal`: 200ms (`animation-duration: 200ms;`)
* `slow`: 300ms (`animation-duration: 300ms;`)
* `slower`: 500ms (`animation-duration: 500ms;`)
* `lazy`: 700ms (`animation-duration: 700ms;`)
## animation-fill
> Set animation fill mode
**Syntax:** `visual="animation-fill:[value]"`
* `none`: No fill (`animation-fill-mode: none;`)
* `forwards`: Keep end state (`animation-fill-mode: forwards;`)
* `backwards`: Apply start state (`animation-fill-mode: backwards;`)
* `both`: Both directions (`animation-fill-mode: both;`)
## animation-iteration
> Set animation iteration count
**Syntax:** `visual="animation-iteration:[value]"`
* `1`: Once (`animation-iteration-count: 1;`)
* `infinite`: Forever (`animation-iteration-count: infinite;`)
## animation-play
> Control animation play state
**Syntax:** `visual="animation-play:[value]"`
* `running`: Animation running (`animation-play-state: running;`)
* `paused`: Animation paused (`animation-play-state: paused;`)
## appearance
> Control native appearance
**Syntax:** `visual="appearance:[value]"`
* `none`: Remove native styling (`appearance: none;`)
* `auto`: Default appearance (`appearance: auto;`)
## aspect-ratio
> Set element aspect ratio
**Syntax:** `layout="aspect:[value]"`
* `auto`: Natural aspect ratio (`aspect-ratio: auto;`)
* `square`: 1:1 square (`aspect-ratio: 1 / 1;`)
* `video`: 16:9 video (`aspect-ratio: 16 / 9;`)
## backdrop-blur
> Blur backdrop
**Syntax:** `visual="backdrop-blur:[value]"`
* `none`: No blur (`backdrop-filter: blur(0);`)
* `tiny`: Tiny blur (`backdrop-filter: blur(2px);`)
* `small`: Small blur (`backdrop-filter: blur(4px);`)
* `medium`: Medium blur (`backdrop-filter: blur(8px);`)
* `big`: Large blur (`backdrop-filter: blur(12px);`)
* `giant`: Giant blur (`backdrop-filter: blur(24px);`)
* `vast`: Vast blur (`backdrop-filter: blur(48px);`)
## backdrop-brightness
> Adjust backdrop brightness
**Syntax:** `visual="backdrop-brightness:[value]"`
* `dim`: 50% brightness (`backdrop-filter: brightness(0.5);`)
* `dark`: 75% brightness (`backdrop-filter: brightness(0.75);`)
* `normal`: Normal brightness (`backdrop-filter: brightness(1);`)
* `bright`: 125% brightness (`backdrop-filter: brightness(1.25);`)
* `vivid`: 150% brightness (`backdrop-filter: brightness(1.5);`)
## backdrop-contrast
> Adjust backdrop contrast
**Syntax:** `visual="backdrop-contrast:[value]"`
* `low`: Low contrast (`backdrop-filter: contrast(0.5);`)
* `reduced`: Reduced contrast (`backdrop-filter: contrast(0.75);`)
* `normal`: Normal contrast (`backdrop-filter: contrast(1);`)
* `high`: High contrast (`backdrop-filter: contrast(1.25);`)
* `max`: Maximum contrast (`backdrop-filter: contrast(1.5);`)
## backdrop-grayscale
> Apply grayscale to backdrop
**Syntax:** `visual="backdrop-grayscale:[value]"`
* `none`: No grayscale (`backdrop-filter: grayscale(0%);`)
* `partial`: 50% grayscale (`backdrop-filter: grayscale(50%);`)
* `full`: Full grayscale (`backdrop-filter: grayscale(100%);`)
## backdrop-hue-rotate
> Rotate backdrop hue
**Syntax:** `visual="backdrop-hue-rotate:[degrees]"`
* `0`: No rotation (`backdrop-filter: hue-rotate(0deg);`)
* `90`: 90° rotation (`backdrop-filter: hue-rotate(90deg);`)
* `180`: 180° rotation (`backdrop-filter: hue-rotate(180deg);`)
## backdrop-invert
> Invert backdrop colors
**Syntax:** `visual="backdrop-invert:[value]"`
* `none`: No inversion (`backdrop-filter: invert(0%);`)
* `partial`: 50% inversion (`backdrop-filter: invert(50%);`)
* `full`: Full inversion (`backdrop-filter: invert(100%);`)
## backdrop-opacity
> Set backdrop opacity
**Syntax:** `visual="backdrop-opacity:[value]"`
* `0`: Transparent (`backdrop-filter: opacity(0);`)
* `50`: 50% opacity (`backdrop-filter: opacity(0.5);`)
* `100`: Fully opaque (`backdrop-filter: opacity(1);`)
## backdrop-saturate
> Adjust backdrop saturation
**Syntax:** `visual="backdrop-saturate:[value]"`
* `none`: Desaturated (`backdrop-filter: saturate(0);`)
* `low`: Low saturation (`backdrop-filter: saturate(0.5);`)
* `normal`: Normal saturation (`backdrop-filter: saturate(1);`)
* `high`: High saturation (`backdrop-filter: saturate(1.5);`)
* `vivid`: Very saturated (`backdrop-filter: saturate(2);`)
## backdrop-sepia
> Apply sepia to backdrop
**Syntax:** `visual="backdrop-sepia:[value]"`
* `none`: No sepia (`backdrop-filter: sepia(0%);`)
* `partial`: 50% sepia (`backdrop-filter: sepia(50%);`)
* `full`: Full sepia (`backdrop-filter: sepia(100%);`)
## background-attachment
> Set background attachment behavior
**Syntax:** `visual="bg-attachment:[value]"`
* `fixed`: Fixed background (`background-attachment: fixed;`)
* `local`: Local scroll (`background-attachment: local;`)
* `scroll`: Scroll with page (`background-attachment: scroll;`)
## background-blend-mode
> Set background blend mode
**Syntax:** `visual="bg-blend:[value]"`
* `normal`: Normal blend (`background-blend-mode: normal;`)
* `multiply`: Multiply blend (`background-blend-mode: multiply;`)
* `screen`: Screen blend (`background-blend-mode: screen;`)
* `overlay`: Overlay blend (`background-blend-mode: overlay;`)
* `darken`: Darken blend (`background-blend-mode: darken;`)
* `lighten`: Lighten blend (`background-blend-mode: lighten;`)
## background-clip
> Set background clipping area
**Syntax:** `visual="bg-clip:[value]"`
* `border`: Clip to border (`background-clip: border-box;`)
* `padding`: Clip to padding (`background-clip: padding-box;`)
* `content`: Clip to content (`background-clip: content-box;`)
* `text`: Clip to text
## background-color
> Set background color
**Syntax:** `visual="bg:[color]"`
## background-image
> Set background image or gradient
**Syntax:** `visual="bg-image:[value]"`
* `none`: No background image (`background-image: none;`)
* `gradient-to-t`: Gradient to top
* `gradient-to-b`: Gradient to bottom
* `gradient-to-l`: Gradient to left
* `gradient-to-r`: Gradient to right
## background-origin
> Set background positioning origin
**Syntax:** `visual="bg-origin:[value]"`
* `border`: Origin at border (`background-origin: border-box;`)
* `padding`: Origin at padding (`background-origin: padding-box;`)
* `content`: Origin at content (`background-origin: content-box;`)
## background-position
> Set background position
**Syntax:** `visual="bg-pos:[value]"`
* `center`: Center position (`background-position: center;`)
* `top`: Top position (`background-position: top;`)
* `bottom`: Bottom position (`background-position: bottom;`)
* `left`: Left position (`background-position: left;`)
* `right`: Right position (`background-position: right;`)
* `top-left`: Top left (`background-position: top left;`)
* `top-right`: Top right (`background-position: top right;`)
* `bottom-left`: Bottom left (`background-position: bottom left;`)
* `bottom-right`: Bottom right (`background-position: bottom right;`)
## background-repeat
> Set background repeat behavior
**Syntax:** `visual="bg-repeat:[value]"`
* `repeat`: Repeat both axes (`background-repeat: repeat;`)
* `no-repeat`: No repeat (`background-repeat: no-repeat;`)
* `repeat-x`: Repeat horizontally (`background-repeat: repeat-x;`)
* `repeat-y`: Repeat vertically (`background-repeat: repeat-y;`)
* `round`: Round repeat (`background-repeat: round;`)
* `space`: Spaced repeat (`background-repeat: space;`)
## background-size
> Set background size
**Syntax:** `visual="bg-size:[value]"`
* `auto`: Original size (`background-size: auto;`)
* `cover`: Cover container (`background-size: cover;`)
* `contain`: Contain in container (`background-size: contain;`)
## blend-modes
> Set mix blend mode
**Syntax:** `visual="mix-blend:[value]"`
* `normal`: Normal blend (`mix-blend-mode: normal;`)
* `multiply`: Multiply blend (`mix-blend-mode: multiply;`)
* `screen`: Screen blend (`mix-blend-mode: screen;`)
* `overlay`: Overlay blend (`mix-blend-mode: overlay;`)
* `darken`: Darken blend (`mix-blend-mode: darken;`)
* `lighten`: Lighten blend (`mix-blend-mode: lighten;`)
## border
> Set border color for all sides or specific sides
**Syntax:** `visual="border:[color]" | visual="border-{t|b|l|r|x|y}:[color]"`
* `primary`: Primary color border
* `gray-300`: Light gray border
* `danger`: Danger/error border
## border-collapse
> Control table border collapse
**Syntax:** `layout="border:[value]"`
* `collapse`: Collapse borders (`border-collapse: collapse;`)
* `separate`: Separate borders (`border-collapse: separate;`)
## border-radius
> Set border radius for all corners or specific corners
**Syntax:** `visual="rounded:[value]" | visual="rounded-{t|b|l|r|tl|tr|bl|br}:[value]"`
* `none`: No rounding (`border-radius: var(--r-none);`)
* `small`: Small radius (`border-radius: var(--r-small);`)
* `medium`: Medium radius (`border-radius: var(--r-medium);`)
* `big`: Large radius (`border-radius: var(--r-big);`)
* `round`: Fully round (`border-radius: var(--r-round);`)
## border-spacing
> Control spacing between table borders
**Syntax:** `layout="border-spacing:[value]"`
* `border-spacing`: All spacing (`border-spacing: {value};`)
* `border-spacing-x`: Horizontal spacing (`border-spacing: {value} 0;`)
* `border-spacing-y`: Vertical spacing (`border-spacing: 0 {value};`)
## border-style
> Set border style
**Syntax:** `visual="border-style:[value]"`
* `solid`: Solid border (`border-style: solid;`)
* `dashed`: Dashed border (`border-style: dashed;`)
* `dotted`: Dotted border (`border-style: dotted;`)
* `double`: Double border (`border-style: double;`)
* `none`: No border (`border-style: none;`)
## border-width
> Set border width for all sides or specific sides
**Syntax:** `visual="border-w:[value]" | visual="border-{t|b|l|r|x|y}-w:[value]"`
* `none`: No border (0px) (`border-width: var(--s-none);`)
* `thin`: Thin border (1px) (`border-width: var(--s-thin);`)
* `regular`: Standard border (2px) (`border-width: var(--s-regular);`)
* `thick`: Thick border (3px) (`border-width: var(--s-thick);`)
## box-shadow
> Add box shadow
**Syntax:** `visual="shadow:[value]"`
* `none`: No shadow (`box-shadow: var(--shadow-none);`)
* `small`: Small shadow (`box-shadow: var(--shadow-small);`)
* `medium`: Medium shadow (`box-shadow: var(--shadow-medium);`)
* `big`: Large shadow (`box-shadow: var(--shadow-big);`)
* `giant`: Giant shadow (`box-shadow: var(--shadow-giant);`)
## box-sizing
> Control how width and height are calculated
**Syntax:** `layout="box:[value]"`
* `border`: Include padding and border in size (`box-sizing: border-box;`)
* `content`: Exclude padding and border (`box-sizing: content-box;`)
## caption-side
> Control table caption position
**Syntax:** `layout="caption:[value]"`
* `top`: Caption on top (`caption-side: top;`)
* `bottom`: Caption on bottom (`caption-side: bottom;`)
## caret-color
> Set text input caret color
**Syntax:** `visual="caret:[color]"`
## color-scheme
> Set preferred color scheme
**Syntax:** `visual="color-scheme:[value]"`
* `light`: Light mode (`color-scheme: light;`)
* `dark`: Dark mode (`color-scheme: dark;`)
* `normal`: System default (`color-scheme: normal;`)
## columns
> Create multi-column layouts
**Syntax:** `layout="cols:[value]"`
* `1-12`: N columns (`columns: {n};`)
* `auto`: Auto columns (`columns: auto;`)
## contain
> Isolate element rendering for performance
**Syntax:** `visual="contain:[value]"`
* `none`: No containment (`contain: none;`)
* `strict`: Full containment (`contain: strict;`)
* `content`: Content containment (`contain: content;`)
* `size`: Size containment (`contain: size;`)
* `layout`: Layout containment (`contain: layout;`)
* `style`: Style containment (`contain: style;`)
* `paint`: Paint containment (`contain: paint;`)
## container
> Create a centered container with max-width
**Syntax:** `layout="container"`
* `container`: Centered container
## content-visibility
> Optimize rendering by skipping off-screen content
**Syntax:** `visual="content-visibility:[value]"`
* `visible`: Render all content (`content-visibility: visible;`)
* `auto`: Skip when off-screen (`content-visibility: auto;`)
* `hidden`: Never render off-screen (`content-visibility: hidden;`)
## cursor
> Set cursor style
**Syntax:** `visual="cursor:[value]"`
* `auto`: Auto cursor (`cursor: auto;`)
* `default`: Default cursor (`cursor: default;`)
* `pointer`: Pointer cursor (`cursor: pointer;`)
* `wait`: Wait cursor (`cursor: wait;`)
* `text`: Text cursor (`cursor: text;`)
* `move`: Move cursor (`cursor: move;`)
* `not-allowed`: Not allowed (`cursor: not-allowed;`)
* `grab`: Grab cursor (`cursor: grab;`)
* `grabbing`: Grabbing cursor (`cursor: grabbing;`)
## display
> Control the display type of elements
**Syntax:** `layout="[display-value]"`
* `flex`: Flexbox container (`display: flex;`)
* `inline-flex`: Inline flexbox container (`display: inline-flex;`)
* `grid`: Grid container (`display: grid;`)
* `inline-grid`: Inline grid container (`display: inline-grid;`)
* `block`: Block element (`display: block;`)
* `inline`: Inline block element (`display: inline-block;`)
* `hidden`: Hidden element (`display: none;`)
## divide
> Add borders between child elements
**Syntax:** `visual="divide:[color]" | visual="divide-{x|y}:[color]" | visual="divide-{x|y}:reverse"`
* `primary`: Primary color divider
* `gray-300`: Light gray divider
* `danger`: Danger/error divider
## divide-reverse
> Reverse border side for flex-reverse
**Syntax:** `visual="divide-{x|y}:reverse"`
* `divide-x:reverse`: Reverse X-axis divider (`--ss-divide-x-reverse: 1;`)
* `divide-y:reverse`: Reverse Y-axis divider (`--ss-divide-y-reverse: 1;`)
## divide-style
> Set divider style
**Syntax:** `visual="divide-style:[value]"`
* `solid`: Solid divider (`border-style: solid;`)
* `dashed`: Dashed divider (`border-style: dashed;`)
* `dotted`: Dotted divider (`border-style: dotted;`)
* `double`: Double divider (`border-style: double;`)
* `none`: No divider (`border-style: none;`)
## divide-width
> Set divider width
**Syntax:** `visual="divide-w:[value]" | visual="divide-{x|y}-w:[value]"`
* `none`: No divider (0px) (`border-width: var(--s-none);`)
* `thin`: Thin divider (1px) (`border-width: var(--s-thin);`)
* `regular`: Standard divider (2px) (`border-width: var(--s-regular);`)
* `thick`: Thick divider (3px) (`border-width: var(--s-thick);`)
## field-sizing
> Control form field sizing
**Syntax:** `visual="field-sizing:[value]"`
* `fixed`: Fixed size (`field-sizing: fixed;`)
* `content`: Size to content (`field-sizing: content;`)
## fill
> Set SVG fill color
**Syntax:** `visual="fill:[color]"`
* `none`: No fill (`fill: none;`)
* `current`: Current color (`fill: currentColor;`)
## filter-blur
> Apply blur filter
**Syntax:** `visual="blur:[value]"`
* `none`: No blur (`filter: blur(0);`)
* `tiny`: Tiny blur (`filter: blur(2px);`)
* `small`: Small blur (`filter: blur(4px);`)
* `medium`: Medium blur (`filter: blur(8px);`)
* `big`: Large blur (`filter: blur(12px);`)
* `giant`: Giant blur (`filter: blur(24px);`)
* `vast`: Vast blur (`filter: blur(48px);`)
## filter-brightness
> Adjust brightness
**Syntax:** `visual="brightness:[value]"`
* `dim`: 50% brightness (`filter: brightness(0.5);`)
* `dark`: 75% brightness (`filter: brightness(0.75);`)
* `normal`: Normal brightness (`filter: brightness(1);`)
* `bright`: 125% brightness (`filter: brightness(1.25);`)
* `vivid`: 150% brightness (`filter: brightness(1.5);`)
## filter-contrast
> Adjust contrast
**Syntax:** `visual="contrast:[value]"`
* `low`: Low contrast (`filter: contrast(0.5);`)
* `reduced`: Reduced contrast (`filter: contrast(0.75);`)
* `normal`: Normal contrast (`filter: contrast(1);`)
* `high`: High contrast (`filter: contrast(1.25);`)
* `max`: Maximum contrast (`filter: contrast(1.5);`)
## filter-drop-shadow
> Add drop shadow
**Syntax:** `visual="drop-shadow:[value]"`
* `none`: No shadow (`filter: drop-shadow(none);`)
* `tiny`: Tiny shadow (`filter: drop-shadow(0 1px 1px rgba(0,0,0,0.05));`)
* `small`: Small shadow (`filter: drop-shadow(0 1px 2px rgba(0,0,0,0.1));`)
* `medium`: Medium shadow (`filter: drop-shadow(0 4px 3px rgba(0,0,0,0.07));`)
* `big`: Large shadow (`filter: drop-shadow(0 10px 8px rgba(0,0,0,0.04));`)
* `giant`: Giant shadow
## filter-grayscale
> Apply grayscale filter
**Syntax:** `visual="grayscale:[value]"`
* `none`: No grayscale (`filter: grayscale(0%);`)
* `partial`: 50% grayscale (`filter: grayscale(50%);`)
* `full`: Full grayscale (`filter: grayscale(100%);`)
## filter-hue-rotate
> Rotate hue colors
**Syntax:** `visual="hue-rotate:[degrees]"`
* `0`: No rotation (`filter: hue-rotate(0deg);`)
* `90`: 90° rotation (`filter: hue-rotate(90deg);`)
* `180`: 180° rotation (`filter: hue-rotate(180deg);`)
## filter-invert
> Invert colors
**Syntax:** `visual="invert:[value]"`
* `none`: No inversion (`filter: invert(0%);`)
* `partial`: 50% inversion (`filter: invert(50%);`)
* `full`: Full inversion (`filter: invert(100%);`)
## filter-saturate
> Adjust saturation
**Syntax:** `visual="saturate:[value]"`
* `none`: Desaturated (`filter: saturate(0);`)
* `low`: Low saturation (`filter: saturate(0.5);`)
* `normal`: Normal saturation (`filter: saturate(1);`)
* `high`: High saturation (`filter: saturate(1.5);`)
* `vivid`: Very saturated (`filter: saturate(2);`)
## filter-sepia
> Apply sepia filter
**Syntax:** `visual="sepia:[value]"`
* `none`: No sepia (`filter: sepia(0%);`)
* `partial`: 50% sepia (`filter: sepia(50%);`)
* `full`: Full sepia (`filter: sepia(100%);`)
## flex
> Flex shorthand property
**Syntax:** `layout="flex:[value]"`
* `1`: Flex 1 (`flex: 1 1 0%;`)
* `auto`: Flex auto (`flex: 1 1 auto;`)
* `initial`: Initial flex (`flex: 0 1 auto;`)
* `none`: No flex (`flex: none;`)
## flex-basis
> Set initial size of flex item
**Syntax:** `layout="basis:[value]"`
* `auto`: Auto basis (`flex-basis: auto;`)
* `0`: Zero basis (`flex-basis: 0;`)
## flex-direction
> Set the direction of flex items
**Syntax:** `layout="[direction]"`
* `row`: Horizontal (default) (`flex-direction: row;`)
* `col`: Vertical (`flex-direction: column;`)
* `row-reverse`: Horizontal reversed (`flex-direction: row-reverse;`)
* `col-reverse`: Vertical reversed (`flex-direction: column-reverse;`)
## flex-items
> Control flex grow and shrink behavior
**Syntax:** `layout="[flex-item-value]"`
* `grow`: Allow item to grow (`flex-grow: 1;`)
* `grow-0`: Prevent growing (`flex-grow: 0;`)
* `shrink`: Allow item to shrink (`flex-shrink: 1;`)
* `shrink-0`: Prevent shrinking (`flex-shrink: 0;`)
## flex-wrap
> Control how flex items wrap
**Syntax:** `layout="[wrap-value]"`
* `wrap`: Allow wrapping (`flex-wrap: wrap;`)
* `nowrap`: Prevent wrapping (`flex-wrap: nowrap;`)
* `wrap-reverse`: Wrap in reverse (`flex-wrap: wrap-reverse;`)
## float-clear
> Control element floating and clearing
**Syntax:** `layout="float:[value]" or layout="clear:[value]"`
* `left`: Float left (`float: left;`)
* `right`: Float right (`float: right;`)
* `none`: No float (`float: none;`)
## font-family
> Set font family
**Syntax:** `visual="font:[family]"`
* `sans`: Sans-serif
* `serif`: Serif (`font-family: ui-serif, Georgia, serif;`)
* `mono`: Monospace (`font-family: ui-monospace, monospace;`)
## font-smoothing
> Control font smoothing
**Syntax:** `visual="[smoothing-value]"`
* `antialiased`: Antialiased
* `subpixel-antialiased`: Subpixel antialiased
## font-style
> Set font style
**Syntax:** `visual="[style-value]"`
* `italic`: Italic text (`font-style: italic;`)
* `not-italic`: Normal style (`font-style: normal;`)
## font-variant-numeric
> Control numeric font variants
**Syntax:** `visual="[variant-value]"`
* `normal-nums`: Normal numbers (`font-variant-numeric: normal;`)
* `ordinal`: Ordinal markers (`font-variant-numeric: ordinal;`)
* `slashed-zero`: Slashed zero (`font-variant-numeric: slashed-zero;`)
* `lining-nums`: Lining numbers (`font-variant-numeric: lining-nums;`)
* `oldstyle-nums`: Oldstyle numbers (`font-variant-numeric: oldstyle-nums;`)
* `proportional-nums`: Proportional numbers (`font-variant-numeric: proportional-nums;`)
* `tabular-nums`: Tabular numbers (`font-variant-numeric: tabular-nums;`)
## font-weight
> Set font weight
**Syntax:** `visual="font:[weight]"`
* `normal`: Normal weight (`font-weight: var(--fw-normal);`)
* `medium`: Medium weight (`font-weight: var(--fw-medium);`)
* `bold`: Bold weight (`font-weight: var(--fw-bold);`)
## forced-color-adjust
> Control forced colors mode behavior
**Syntax:** `visual="forced-color:[value]"`
* `auto`: Auto adjust (`forced-color-adjust: auto;`)
* `none`: No adjustment (`forced-color-adjust: none;`)
## gap
> Add gap between flex/grid items
**Syntax:** `space="g:[value]" or space="g-{axis}:[value]"`
* `undefined`: All gaps (`gap: var(--s-{value});`)
* `undefined`: Column gap (`column-gap: var(--s-{value});`)
* `undefined`: Row gap (`row-gap: var(--s-{value});`)
## gradient-from
> Set gradient start color
**Syntax:** `visual="from:[color]"`
* `primary`: Start from primary
* `blue-500`: Start from blue
## gradient-to
> Set gradient end color
**Syntax:** `visual="to:[color]"`
* `purple-500`: End at purple (`--tw-gradient-to: var(--c-purple-500);`)
* `pink-500`: End at pink (`--tw-gradient-to: var(--c-pink-500);`)
## gradient-via
> Set gradient middle color
**Syntax:** `visual="via:[color]"`
* `purple-500`: Via purple
## grid-auto-flow
> Control how auto-placed items flow in grid
**Syntax:** `layout="grid-flow:[value]"`
* `row`: Place by row (`grid-auto-flow: row;`)
* `col`: Place by column (`grid-auto-flow: column;`)
* `dense`: Dense packing (`grid-auto-flow: dense;`)
* `row-dense`: Row with dense (`grid-auto-flow: row dense;`)
* `col-dense`: Column with dense (`grid-auto-flow: column dense;`)
## grid-auto-sizing
> Control size of auto-generated grid tracks
**Syntax:** `layout="auto-cols:[value]" or layout="auto-rows:[value]"`
* `auto`: Auto size (`auto`)
* `min`: Minimum content (`min-content`)
* `max`: Maximum content (`max-content`)
* `fr`: Fractional unit (`minmax(0, 1fr)`)
## grid-column-span
> Span across grid columns
**Syntax:** `layout="col-span:[value]"`
* `1-12`: Span N columns (`grid-column: span {n} / span {n};`)
* `full`: Span all columns (`grid-column: 1 / -1;`)
## grid-columns
> Define grid template columns
**Syntax:** `layout="grid-cols:[value]"`
* `1-12`: N equal columns
* `none`: No columns defined (`grid-template-columns: none;`)
* `subgrid`: Use parent grid (`grid-template-columns: subgrid;`)
## grid-row-span
> Span across grid rows
**Syntax:** `layout="row-span:[value]"`
* `1-12`: Span N rows (`grid-row: span {n} / span {n};`)
* `full`: Span all rows (`grid-row: 1 / -1;`)
## grid-rows
> Define grid template rows
**Syntax:** `layout="grid-rows:[value]"`
* `1-12`: N equal rows (`grid-template-rows: repeat({n}, minmax(0, 1fr));`)
* `none`: No rows defined (`grid-template-rows: none;`)
* `subgrid`: Use parent grid (`grid-template-rows: subgrid;`)
## height
> Set element height
**Syntax:** `space="h:[value]"`
* `undefined`: Height (`height: var(--s-{value});`)
* `undefined`: Minimum height (`min-height: var(--s-{value});`)
* `undefined`: Maximum height (`max-height: var(--s-{value});`)
## hyphens
> Control hyphenation
**Syntax:** `visual="hyphens:[value]"`
* `none`: No hyphens (`hyphens: none;`)
* `manual`: Manual hyphens (`hyphens: manual;`)
* `auto`: Auto hyphens (`hyphens: auto;`)
## inset
> Control positioning offsets
**Syntax:** `layout="inset:[value]" or layout="top:[value]"`
* `inset`: All sides (`inset: {value};`)
* `inset-x`: Left and right (`left: {value}; right: {value};`)
* `inset-y`: Top and bottom (`top: {value}; bottom: {value};`)
* `top`: Top offset (`top: {value};`)
* `right`: Right offset (`right: {value};`)
* `bottom`: Bottom offset (`bottom: {value};`)
* `left`: Left offset (`left: {value};`)
## isolation
> Create new stacking context
**Syntax:** `layout="isolation:[value]"`
* `isolate`: Create stacking context (`isolation: isolate;`)
* `auto`: Auto isolation (`isolation: auto;`)
## justify-content
> Align items along the main axis
**Syntax:** `layout="justify:[value]"`
* `start`: Align to start (`justify-content: flex-start;`)
* `end`: Align to end (`justify-content: flex-end;`)
* `center`: Center items (`justify-content: center;`)
* `between`: Space between items (`justify-content: space-between;`)
* `around`: Space around items (`justify-content: space-around;`)
* `evenly`: Even spacing (`justify-content: space-evenly;`)
* `stretch`: Stretch items (`justify-content: stretch;`)
## justify-items
> Align grid items on inline axis
**Syntax:** `layout="justify-items:[value]"`
* `start`: Start alignment (`justify-items: start;`)
* `end`: End alignment (`justify-items: end;`)
* `center`: Center alignment (`justify-items: center;`)
* `stretch`: Stretch items (`justify-items: stretch;`)
## justify-self
> Align single grid item on inline axis
**Syntax:** `layout="justify-self:[value]"`
* `auto`: Auto alignment (`justify-self: auto;`)
* `start`: Start alignment (`justify-self: start;`)
* `end`: End alignment (`justify-self: end;`)
* `center`: Center alignment (`justify-self: center;`)
* `stretch`: Stretch item (`justify-self: stretch;`)
## letter-spacing
> Set letter spacing
**Syntax:** `visual="tracking:[value]"`
* `tighter`: Tighter spacing (`letter-spacing: -0.05em;`)
* `tight`: Tight spacing (`letter-spacing: -0.025em;`)
* `normal`: Normal spacing (`letter-spacing: 0;`)
* `wide`: Wide spacing (`letter-spacing: 0.025em;`)
* `wider`: Wider spacing (`letter-spacing: 0.05em;`)
* `widest`: Widest spacing (`letter-spacing: 0.1em;`)
## line-clamp
> Limit text to specific lines
**Syntax:** `visual="line-clamp:[value]"`
* `1`: Single line
* `2`: Two lines
* `3`: Three lines
* `none`: No clamp
## line-height
> Set line height
**Syntax:** `visual="leading:[value]"`
* `none`: No extra height (`line-height: 1;`)
* `tight`: Tight leading (`line-height: 1.25;`)
* `snug`: Snug leading (`line-height: 1.375;`)
* `normal`: Normal leading (`line-height: 1.5;`)
* `relaxed`: Relaxed leading (`line-height: 1.625;`)
* `loose`: Loose leading (`line-height: 2;`)
## list-style
> Set list style
**Syntax:** `visual="list:[value]"`
* `none`: No bullets (`list-style-type: none;`)
* `disc`: Disc bullets (`list-style-type: disc;`)
* `decimal`: Numbers (`list-style-type: decimal;`)
* `square`: Square bullets (`list-style-type: square;`)
* `inside`: Inside position (`list-style-position: inside;`)
* `outside`: Outside position (`list-style-position: outside;`)
## margin
> Add margin to elements
**Syntax:** `space="m:[value]" or space="m-{side}:[value]"`
* `undefined`: All sides (`margin: var(--s-{value});`)
* `undefined`: Top (`margin-top: var(--s-{value});`)
* `undefined`: Right (`margin-right: var(--s-{value});`)
* `undefined`: Bottom (`margin-bottom: var(--s-{value});`)
* `undefined`: Left (`margin-left: var(--s-{value});`)
* `undefined`: Horizontal
* `undefined`: Vertical
## mask
> Apply mask to element
**Syntax:** `visual="mask:[value]"`
* `none`: No mask (`mask-image: none;`)
* `fade-y`: Vertical fade
* `fade-x`: Horizontal fade
## object-fit
> Control how media content fits its container
**Syntax:** `layout="object:[value]"`
* `contain`: Scale to fit, preserve ratio (`object-fit: contain;`)
* `cover`: Cover container, may crop (`object-fit: cover;`)
* `fill`: Stretch to fill (`object-fit: fill;`)
* `none`: No scaling (`object-fit: none;`)
* `scale-down`: Smaller of none or contain (`object-fit: scale-down;`)
## object-position
> Position replaced element content within container
**Syntax:** `layout="object-pos:[value]"`
* `center`: Center position (`object-position: center;`)
* `top`: Top position (`object-position: top;`)
* `bottom`: Bottom position (`object-position: bottom;`)
* `left`: Left position (`object-position: left;`)
* `right`: Right position (`object-position: right;`)
* `top-left`: Top left (`object-position: top left;`)
* `top-right`: Top right (`object-position: top right;`)
* `bottom-left`: Bottom left (`object-position: bottom left;`)
* `bottom-right`: Bottom right (`object-position: bottom right;`)
## opacity
> Set element opacity (0-100)
**Syntax:** `visual="opacity:[value]"`
* `0`: Invisible (`opacity: 0;`)
* `25`: 25% visible (`opacity: 0.25;`)
* `50`: 50% visible (`opacity: 0.5;`)
* `75`: 75% visible (`opacity: 0.75;`)
* `100`: Fully visible (`opacity: 1;`)
## order
> Control flex/grid item order
**Syntax:** `layout="order:[value]"`
* `first`: Move to first (`order: -9999;`)
* `last`: Move to last (`order: 9999;`)
* `none`: Default order (`order: 0;`)
* `1-12`: Specific order (`order: {n};`)
## outline
> Set outline color
**Syntax:** `visual="outline:[color]"`
## overflow
> Control content overflow behavior
**Syntax:** `layout="overflow:[value]"`
* `auto`: Scrollbar when needed (`overflow: auto;`)
* `hidden`: Hide overflow (`overflow: hidden;`)
* `visible`: Show overflow (`overflow: visible;`)
* `scroll`: Always show scrollbar (`overflow: scroll;`)
* `clip`: Clip overflow (`overflow: clip;`)
## overscroll
> Control scroll chaining behavior
**Syntax:** `layout="overscroll:[value]"`
* `auto`: Default behavior (`overscroll-behavior: auto;`)
* `contain`: Contain scroll (`overscroll-behavior: contain;`)
* `none`: No scroll chaining (`overscroll-behavior: none;`)
## padding
> Add padding to elements
**Syntax:** `space="p:[value]" or space="p-{side}:[value]"`
* `undefined`: All sides (`padding: var(--s-{value});`)
* `undefined`: Top (`padding-top: var(--s-{value});`)
* `undefined`: Right (`padding-right: var(--s-{value});`)
* `undefined`: Bottom (`padding-bottom: var(--s-{value});`)
* `undefined`: Left (`padding-left: var(--s-{value});`)
* `undefined`: Horizontal
* `undefined`: Vertical
## place-content
> Shorthand for align-content and justify-content
**Syntax:** `layout="place-content:[value]"`
* `start`: Start alignment (`place-content: start;`)
* `end`: End alignment (`place-content: end;`)
* `center`: Center alignment (`place-content: center;`)
* `between`: Space between (`place-content: space-between;`)
* `around`: Space around (`place-content: space-around;`)
* `evenly`: Even spacing (`place-content: space-evenly;`)
* `stretch`: Stretch content (`place-content: stretch;`)
## place-items
> Shorthand for align-items and justify-items
**Syntax:** `layout="place-items:[value]"`
* `start`: Start alignment (`place-items: start;`)
* `end`: End alignment (`place-items: end;`)
* `center`: Center alignment (`place-items: center;`)
* `stretch`: Stretch items (`place-items: stretch;`)
## place-self
> Shorthand for align-self and justify-self
**Syntax:** `layout="place-self:[value]"`
* `auto`: Auto alignment (`place-self: auto;`)
* `start`: Start alignment (`place-self: start;`)
* `end`: End alignment (`place-self: end;`)
* `center`: Center alignment (`place-self: center;`)
* `stretch`: Stretch item (`place-self: stretch;`)
## pointer-events
> Control pointer events
**Syntax:** `visual="pointer-events:[value]"`
* `none`: Ignore pointer events (`pointer-events: none;`)
* `auto`: Normal pointer events (`pointer-events: auto;`)
## position
> Set the positioning method
**Syntax:** `layout="[position-value]"`
* `static`: Default positioning (`position: static;`)
* `relative`: Relative to normal position (`position: relative;`)
* `absolute`: Absolute within container (`position: absolute;`)
* `fixed`: Fixed to viewport (`position: fixed;`)
* `sticky`: Sticky positioning (`position: sticky;`)
## resize
> Control element resizing
**Syntax:** `visual="resize:[value]"`
* `none`: No resize (`resize: none;`)
* `both`: Resize both (`resize: both;`)
* `x`: Resize horizontal (`resize: horizontal;`)
* `y`: Resize vertical (`resize: vertical;`)
## ring
> Add focus ring around element using box-shadow
**Syntax:** `visual="ring:[size]"`
* `none`: No ring (`box-shadow: 0 0 0 0 transparent;`)
* `thin`: Thin ring (1px)
* `regular`: Regular ring (2px)
* `small`: Small ring (4px)
* `medium`: Medium ring (6px)
* `big`: Big ring (8px)
## ring-color
> Set ring color
**Syntax:** `visual="ring-color:[color]"`
* `primary`: Primary ring color (`--ss-ring-color: var(--c-primary);`)
* `blue-500`: Blue ring color (`--ss-ring-color: var(--c-blue-500);`)
## ring-offset
> Add gap between ring and element
**Syntax:** `visual="ring-offset:[size]"`
* `0`: No offset (`--ss-ring-offset-width: 0px;`)
* `2`: 2px offset (`--ss-ring-offset-width: 2px;`)
* `4`: 4px offset (`--ss-ring-offset-width: 4px;`)
## scroll-behavior
> Set scroll behavior
**Syntax:** `visual="scroll-behavior:[value]"`
* `auto`: Instant scroll (`scroll-behavior: auto;`)
* `smooth`: Smooth scroll (`scroll-behavior: smooth;`)
## scroll-margin
> Set scroll margin for snap
**Syntax:** `visual="scroll-m:[value]"`
* `scroll-m`: All sides (`scroll-margin: {value};`)
* `scroll-m-t`: Top margin (`scroll-margin-top: {value};`)
* `scroll-m-r`: Right margin (`scroll-margin-right: {value};`)
* `scroll-m-b`: Bottom margin (`scroll-margin-bottom: {value};`)
* `scroll-m-l`: Left margin (`scroll-margin-left: {value};`)
## scroll-padding
> Set scroll padding for snap
**Syntax:** `visual="scroll-p:[value]"`
* `scroll-p`: All sides (`scroll-padding: {value};`)
* `scroll-p-t`: Top padding (`scroll-padding-top: {value};`)
* `scroll-p-r`: Right padding (`scroll-padding-right: {value};`)
* `scroll-p-b`: Bottom padding (`scroll-padding-bottom: {value};`)
* `scroll-p-l`: Left padding (`scroll-padding-left: {value};`)
## scroll-snap-align
> Set scroll snap alignment
**Syntax:** `visual="snap-align:[value]"`
* `start`: Snap to start (`scroll-snap-align: start;`)
* `end`: Snap to end (`scroll-snap-align: end;`)
* `center`: Snap to center (`scroll-snap-align: center;`)
* `none`: No snap (`scroll-snap-align: none;`)
## scroll-snap-stop
> Control scroll snap stop behavior
**Syntax:** `visual="snap-stop:[value]"`
* `normal`: Normal stop (`scroll-snap-stop: normal;`)
* `always`: Always stop (`scroll-snap-stop: always;`)
## scroll-snap-type
> Set scroll snap type
**Syntax:** `visual="snap-type:[value]"`
* `none`: No snapping (`scroll-snap-type: none;`)
* `x`: Horizontal snap (`scroll-snap-type: x mandatory;`)
* `y`: Vertical snap (`scroll-snap-type: y mandatory;`)
* `both`: Both axes (`scroll-snap-type: both mandatory;`)
* `x-proximity`: Horizontal proximity (`scroll-snap-type: x proximity;`)
* `y-proximity`: Vertical proximity (`scroll-snap-type: y proximity;`)
## shorthand-alignment
> Quick alignment shortcuts
**Syntax:** `layout="[alignment]"`
* `center`: Center both axes (`justify-content: center; align-items: center;`)
* `start`: Align to start
* `end`: Align to end (`justify-content: flex-end; align-items: flex-end;`)
* `between`: Space between (`justify-content: space-between;`)
* `around`: Space around (`justify-content: space-around;`)
* `evenly`: Even spacing (`justify-content: space-evenly;`)
## state-prefixes
> Apply styles on specific states
**Syntax:** `visual="hover:... focus:... active:..."`
* `hover:`: On hover (`:hover`)
* `focus:`: On focus (`:focus`)
* `active:`: On active (`:active`)
* `disabled:`: When disabled (`:disabled`)
* `visited:`: When visited (`:visited`)
* `first:`: First child (`:first-child`)
* `last:`: Last child (`:last-child`)
* `odd:`: Odd children (`:nth-child(odd)`)
* `even:`: Even children (`:nth-child(even)`)
## stroke
> Set SVG stroke color
**Syntax:** `visual="stroke:[color]"`
* `none`: No stroke (`stroke: none;`)
* `current`: Current color (`stroke: currentColor;`)
## stroke-width
> Set SVG stroke width
**Syntax:** `visual="stroke-w:[value]"`
* `0`: No stroke (`stroke-width: 0;`)
* `1`: 1px stroke (`stroke-width: 1px;`)
* `2`: 2px stroke (`stroke-width: 2px;`)
## table-layout
> Control table layout algorithm
**Syntax:** `layout="table:[value]"`
* `auto`: Auto layout (`table-layout: auto;`)
* `fixed`: Fixed layout (`table-layout: fixed;`)
## text-alignment
> Set text alignment
**Syntax:** `visual="text:[alignment]"`
* `left`: Left align (`text-align: left;`)
* `center`: Center align (`text-align: center;`)
* `right`: Right align (`text-align: right;`)
* `justify`: Justify (`text-align: justify;`)
## text-color
> Set text color
**Syntax:** `visual="text:[color]"`
* `left`: Align left (`text-align: left;`)
* `center`: Align center (`text-align: center;`)
* `right`: Align right (`text-align: right;`)
* `justify`: Justify text (`text-align: justify;`)
## text-decoration
> Set text decoration
**Syntax:** `visual="[decoration-value]"`
* `underline`: Underline (`text-decoration-line: underline;`)
* `overline`: Overline (`text-decoration-line: overline;`)
* `line-through`: Strikethrough (`text-decoration-line: line-through;`)
* `no-underline`: No decoration (`text-decoration-line: none;`)
## text-indent
> Set text indentation
**Syntax:** `visual="indent:[value]"`
* `0`: No indent (`text-indent: 0;`)
## text-overflow
> Handle text overflow
**Syntax:** `visual="[overflow-value]"`
* `truncate`: Truncate with ellipsis
* `text-ellipsis`: Ellipsis overflow (`text-overflow: ellipsis;`)
* `text-clip`: Clip overflow (`text-overflow: clip;`)
## text-shadow
> Add text shadow
**Syntax:** `visual="text-shadow:[value]"`
* `none`: No shadow (`text-shadow: none;`)
* `small`: Small shadow (`text-shadow: 0 1px 2px rgba(0,0,0,0.1);`)
* `medium`: Medium shadow (`text-shadow: 0 2px 4px rgba(0,0,0,0.1);`)
* `big`: Large shadow (`text-shadow: 0 4px 8px rgba(0,0,0,0.1);`)
## text-size
> Set font size
**Syntax:** `visual="text-size:[value]"`
* `mini`: Mini size (0.75rem / 1rem)
* `small`: Small size (0.875rem / 1.25rem)
* `base`: Base size (1rem / 1.5rem)
* `large`: Large size (1.125rem / 1.75rem)
* `big`: Big size (1.25rem / 1.75rem)
* `huge`: Huge size (1.5rem / 2rem)
* `grand`: Grand size (1.875rem / 2.25rem)
* `giant`: Giant size (2.25rem / 2.5rem)
* `mount`: Mount size (3rem / 1)
* `mega`: Mega size (3.75rem / 1)
* `giga`: Giga size (4.5rem / 1)
* `tera`: Tera size (6rem / 1)
* `hero`: Hero size (8rem / 1)
## text-transform
> Transform text case
**Syntax:** `visual="[transform-value]"`
* `uppercase`: All uppercase (`text-transform: uppercase;`)
* `lowercase`: All lowercase (`text-transform: lowercase;`)
* `capitalize`: Capitalize words (`text-transform: capitalize;`)
* `normal-case`: Normal case (`text-transform: none;`)
## text-wrap
> Control text wrapping
**Syntax:** `visual="[wrap-value]"`
* `text-wrap`: Wrap text (`text-wrap: wrap;`)
* `text-nowrap`: No wrap (`text-wrap: nowrap;`)
* `text-balance`: Balanced wrap (`text-wrap: balance;`)
* `text-pretty`: Pretty wrap (`text-wrap: pretty;`)
## touch-action
> Control touch interactions
**Syntax:** `visual="touch:[value]"`
* `auto`: Default touch (`touch-action: auto;`)
* `none`: Disable touch (`touch-action: none;`)
* `pan-x`: Pan horizontally (`touch-action: pan-x;`)
* `pan-y`: Pan vertically (`touch-action: pan-y;`)
* `pan-left`: Pan left (`touch-action: pan-left;`)
* `pan-right`: Pan right (`touch-action: pan-right;`)
* `pinch-zoom`: Pinch to zoom (`touch-action: pinch-zoom;`)
* `manipulation`: Pan and pinch only (`touch-action: manipulation;`)
## transform-backface
> Control visibility of element back side when rotated in 3D
**Syntax:** `visual="backface:[value]"`
* `visible`: Backface visible (`backface-visibility: visible;`)
* `hidden`: Backface hidden (`backface-visibility: hidden;`)
## transform-origin
> Set transform origin point
**Syntax:** `visual="origin:[value]"`
* `center`: Center origin (`transform-origin: center;`)
* `top`: Top origin (`transform-origin: top;`)
* `top-right`: Top right (`transform-origin: top right;`)
* `right`: Right origin (`transform-origin: right;`)
* `bottom-right`: Bottom right (`transform-origin: bottom right;`)
* `bottom`: Bottom origin (`transform-origin: bottom;`)
* `bottom-left`: Bottom left (`transform-origin: bottom left;`)
* `left`: Left origin (`transform-origin: left;`)
* `top-left`: Top left (`transform-origin: top left;`)
## transform-perspective
> Set 3D perspective on container (apply to parent of transformed elements)
**Syntax:** `visual="perspective:[value]"`
* `none`: No perspective (`perspective: none;`)
* `dramatic`: Dramatic perspective (`perspective: 100px;`)
* `near`: Near perspective (`perspective: 300px;`)
* `normal`: Normal perspective (`perspective: 500px;`)
* `midrange`: Midrange perspective (`perspective: 800px;`)
* `far`: Far perspective (`perspective: 1000px;`)
* `distant`: Distant perspective (`perspective: 1200px;`)
## transform-perspective-origin
> Set perspective vanishing point location
**Syntax:** `visual="perspective-origin:[value]"`
* `center`: Center origin (`perspective-origin: center;`)
* `top`: Top origin (`perspective-origin: top;`)
* `bottom`: Bottom origin (`perspective-origin: bottom;`)
* `left`: Left origin (`perspective-origin: left;`)
* `right`: Right origin (`perspective-origin: right;`)
* `top-left`: Top left (`perspective-origin: top left;`)
* `top-right`: Top right (`perspective-origin: top right;`)
* `bottom-left`: Bottom left (`perspective-origin: bottom left;`)
* `bottom-right`: Bottom right (`perspective-origin: bottom right;`)
## transform-rotate
> Rotate element
**Syntax:** `visual="rotate:[degrees]"`
* `0`: No rotation (`transform: rotate(0deg);`)
* `45`: 45° rotation (`transform: rotate(45deg);`)
* `90`: 90° rotation (`transform: rotate(90deg);`)
* `180`: 180° rotation (`transform: rotate(180deg);`)
## transform-rotate-3d
> Rotate element in 3D space along X, Y, or Z axis
**Syntax:** `visual="rotate-x:[degrees]" or visual="rotate-y:[degrees]" or visual="rotate-z:[degrees]"`
* `0`: No rotation (`transform: rotateX(0deg);`)
* `45`: 45° rotation (`transform: rotateX(45deg);`)
* `90`: 90° rotation (`transform: rotateX(90deg);`)
* `180`: 180° rotation (`transform: rotateX(180deg);`)
## transform-scale
> Scale element
**Syntax:** `visual="scale:[value]"`
* `0`: Scale to 0 (`transform: scale(0);`)
* `50`: Scale to 50% (`transform: scale(0.5);`)
* `75`: Scale to 75% (`transform: scale(0.75);`)
* `100`: Normal scale (`transform: scale(1);`)
* `110`: Scale to 110% (`transform: scale(1.1);`)
* `125`: Scale to 125% (`transform: scale(1.25);`)
* `150`: Scale to 150% (`transform: scale(1.5);`)
## transform-skew
> Skew element
**Syntax:** `visual="skew-x:[degrees]" or visual="skew-y:[degrees]"`
* `0`: No skew (`transform: skewX(0deg);`)
* `3`: 3° skew (`transform: skewX(3deg);`)
* `6`: 6° skew (`transform: skewX(6deg);`)
* `12`: 12° skew (`transform: skewX(12deg);`)
## transform-style
> Preserve 3D space for nested transformed elements
**Syntax:** `visual="transform-style:[value]"`
* `flat`: Flatten 3D children (`transform-style: flat;`)
* `preserve-3d`: Preserve 3D depth (`transform-style: preserve-3d;`)
## transform-translate
> Translate element position along X, Y, or Z axis
**Syntax:** `visual="translate-x:[value]" or visual="translate-y:[value]" or visual="translate-z:[value]"`
* `0`: No translation (`transform: translateX(0);`)
* `tiny`: Tiny offset (`transform: translateX(var(--sp-tiny));`)
* `small`: Small offset (`transform: translateX(var(--sp-small));`)
* `medium`: Medium offset (`transform: translateX(var(--sp-medium));`)
* `big`: Big offset (`transform: translateX(var(--sp-big));`)
* `full`: Full width/height (`transform: translateX(100%);`)
* `1/2`: Half width/height (`transform: translateX(50%);`)
* `-full`: Negative full (`transform: translateX(-100%);`)
* `-1/2`: Negative half (`transform: translateX(-50%);`)
## transform-translate-z
> Translate element along Z axis (depth) in 3D space
**Syntax:** `visual="translate-z:[value]"`
* `0`: No Z translation (`transform: translateZ(0);`)
* `near`: Move near (forward) (`transform: translateZ(50px);`)
* `far`: Move far (backward) (`transform: translateZ(-50px);`)
## transition-delay
> Set transition delay
**Syntax:** `visual="delay:[value]"`
* `instant`: 75ms delay (`transition-delay: 75ms;`)
* `quick`: 100ms delay (`transition-delay: 100ms;`)
* `fast`: 150ms delay (`transition-delay: 150ms;`)
* `normal`: 200ms delay (`transition-delay: 200ms;`)
* `slow`: 300ms delay (`transition-delay: 300ms;`)
## transition-duration
> Set transition duration
**Syntax:** `visual="duration:[value]"`
* `instant`: 75ms (`transition-duration: 75ms;`)
* `quick`: 100ms (`transition-duration: 100ms;`)
* `fast`: 150ms (`transition-duration: 150ms;`)
* `normal`: 200ms (`transition-duration: 200ms;`)
* `slow`: 300ms (`transition-duration: 300ms;`)
* `slower`: 500ms (`transition-duration: 500ms;`)
* `lazy`: 700ms (`transition-duration: 700ms;`)
## transition-property
> Set transition properties
**Syntax:** `visual="transition:[value]"`
* `none`: No transition (`transition-property: none;`)
* `all`: All properties
* `colors`: Color properties
* `opacity`: Opacity only
* `shadow`: Shadow only
* `transform`: Transform only
## transition-timing
> Set transition timing function
**Syntax:** `visual="ease:[value]"`
* `linear`: Linear timing (`transition-timing-function: linear;`)
* `in`: Ease in
* `out`: Ease out
* `in-out`: Ease in-out
## typography-keywords
> Typography utility keywords
**Syntax:** `visual="[keyword]"`
* `italic`: Italic text (`font-style: italic;`)
* `not-italic`: Normal style (`font-style: normal;`)
* `antialiased`: Antialiased text
* `subpixel-antialiased`: Subpixel antialiasing
* `uppercase`: Uppercase text (`text-transform: uppercase;`)
* `lowercase`: Lowercase text (`text-transform: lowercase;`)
* `capitalize`: Capitalize words (`text-transform: capitalize;`)
* `normal-case`: Normal case (`text-transform: none;`)
* `underline`: Underline text (`text-decoration-line: underline;`)
* `overline`: Overline text (`text-decoration-line: overline;`)
* `line-through`: Strikethrough (`text-decoration-line: line-through;`)
* `no-underline`: No decoration (`text-decoration-line: none;`)
* `decoration-solid`: Solid line (`text-decoration-style: solid;`)
* `decoration-double`: Double line (`text-decoration-style: double;`)
* `decoration-dotted`: Dotted line (`text-decoration-style: dotted;`)
* `decoration-dashed`: Dashed line (`text-decoration-style: dashed;`)
* `decoration-wavy`: Wavy line (`text-decoration-style: wavy;`)
* `truncate`: Truncate with ellipsis
* `text-ellipsis`: Ellipsis overflow (`text-overflow: ellipsis;`)
* `text-clip`: Clip overflow (`text-overflow: clip;`)
* `text-wrap`: Wrap text (`text-wrap: wrap;`)
* `text-nowrap`: No wrap (`text-wrap: nowrap;`)
* `text-balance`: Balanced wrapping (`text-wrap: balance;`)
* `text-pretty`: Pretty wrapping (`text-wrap: pretty;`)
* `whitespace-normal`: Normal whitespace (`white-space: normal;`)
* `whitespace-nowrap`: No wrap whitespace (`white-space: nowrap;`)
* `whitespace-pre`: Preserve whitespace (`white-space: pre;`)
* `whitespace-pre-line`: Pre-line whitespace (`white-space: pre-line;`)
* `whitespace-pre-wrap`: Pre-wrap whitespace (`white-space: pre-wrap;`)
* `whitespace-break-spaces`: Break spaces (`white-space: break-spaces;`)
* `break-normal`: Normal word break (`overflow-wrap: normal; word-break: normal;`)
* `break-words`: Break words (`overflow-wrap: break-word;`)
* `break-all`: Break all (`word-break: break-all;`)
* `break-keep`: Keep all (`word-break: keep-all;`)
* `hyphens-none`: No hyphens (`hyphens: none;`)
* `hyphens-manual`: Manual hyphens (`hyphens: manual;`)
* `hyphens-auto`: Auto hyphens (`hyphens: auto;`)
* `align-baseline`: Baseline align (`vertical-align: baseline;`)
* `align-top`: Top align (`vertical-align: top;`)
* `align-middle`: Middle align (`vertical-align: middle;`)
* `align-bottom`: Bottom align (`vertical-align: bottom;`)
* `align-text-top`: Text top align (`vertical-align: text-top;`)
* `align-text-bottom`: Text bottom align (`vertical-align: text-bottom;`)
* `align-sub`: Subscript align (`vertical-align: sub;`)
* `align-super`: Superscript align (`vertical-align: super;`)
* `list-none`: No list style (`list-style-type: none;`)
* `list-disc`: Disc bullets (`list-style-type: disc;`)
* `list-decimal`: Decimal numbers (`list-style-type: decimal;`)
* `list-square`: Square bullets (`list-style-type: square;`)
* `list-inside`: Inside position (`list-style-position: inside;`)
* `list-outside`: Outside position (`list-style-position: outside;`)
## user-select
> Control text selection
**Syntax:** `visual="select:[value]"`
* `none`: Prevent selection (`user-select: none;`)
* `text`: Allow text selection (`user-select: text;`)
* `all`: Select all on click (`user-select: all;`)
* `auto`: Default behavior (`user-select: auto;`)
## vertical-align
> Set vertical alignment
**Syntax:** `visual="align:[value]"`
* `baseline`: Baseline (`vertical-align: baseline;`)
* `top`: Top (`vertical-align: top;`)
* `middle`: Middle (`vertical-align: middle;`)
* `bottom`: Bottom (`vertical-align: bottom;`)
* `text-top`: Text top (`vertical-align: text-top;`)
* `text-bottom`: Text bottom (`vertical-align: text-bottom;`)
* `sub`: Subscript (`vertical-align: sub;`)
* `super`: Superscript (`vertical-align: super;`)
## visibility
> Control element visibility
**Syntax:** `layout="[visibility-value]"`
* `visible`: Element is visible (`visibility: visible;`)
* `invisible`: Element is invisible but takes space (`visibility: hidden;`)
## whitespace
> Control whitespace handling
**Syntax:** `visual="whitespace:[value]"`
* `normal`: Normal whitespace (`white-space: normal;`)
* `nowrap`: No wrap (`white-space: nowrap;`)
* `pre`: Preserve whitespace (`white-space: pre;`)
* `pre-line`: Pre-line (`white-space: pre-line;`)
* `pre-wrap`: Pre-wrap (`white-space: pre-wrap;`)
* `break-spaces`: Break spaces (`white-space: break-spaces;`)
## width
> Set element width
**Syntax:** `space="w:[value]"`
* `undefined`: Width (`width: var(--s-{value});`)
* `undefined`: Minimum width (`min-width: var(--s-{value});`)
* `undefined`: Maximum width (`max-width: var(--s-{value});`)
## will-change
> Hint browser about upcoming changes
**Syntax:** `visual="will-change:[value]"`
* `auto`: Auto optimization (`will-change: auto;`)
* `scroll`: Scroll changes (`will-change: scroll-position;`)
* `contents`: Content changes (`will-change: contents;`)
* `transform`: Transform changes (`will-change: transform;`)
* `opacity`: Opacity changes (`will-change: opacity;`)
## word-break
> Control word breaking
**Syntax:** `visual="[break-value]"`
* `break-normal`: Normal break (`overflow-wrap: normal; word-break: normal;`)
* `break-words`: Break words (`overflow-wrap: break-word;`)
* `break-all`: Break all (`word-break: break-all;`)
* `break-keep`: Keep all (`word-break: keep-all;`)
## writing-mode
> Set writing direction for RTL/vertical text
**Syntax:** `visual="writing-mode:[value]"`
* `horizontal-tb`: Left to right (`writing-mode: horizontal-tb;`)
* `vertical-rl`: Top to bottom RTL (`writing-mode: vertical-rl;`)
* `vertical-lr`: Top to bottom LTR (`writing-mode: vertical-lr;`)
* `sideways-rl`: Sideways RTL (`writing-mode: sideways-rl;`)
* `sideways-lr`: Sideways LTR (`writing-mode: sideways-lr;`)
## z-index
> Control stacking order
**Syntax:** `layout="z:[value]"`
* `base`: Base layer (0) (`z-index: var(--z-base);`)
* `low`: Low layer (10) (`z-index: var(--z-low);`)
* `mid`: Middle layer (50) (`z-index: var(--z-mid);`)
* `high`: High layer (100) (`z-index: var(--z-high);`)
* `top`: Top layer (9999) (`z-index: var(--z-top);`)