# Every prop (235)

Generated from the prop registry of `@box-kite/react`. The description is the prop's own doc comment and the example is **measured** — the CSS beside a value is what the engine emits for it, not what a doc claims. Alphabetical; the registry's own order is what decides the cascade and is not this.

**Values** is what the registry names: a closed list in full, a large family as a count, `a number` where numbers go through a formatter, and `the types allow` where the definition validates a shape rather than a list — the published `.d.ts` is the exact statement, and a value it refuses emits no rule and no class rather than a broken declaration.

The numbers are the trap, because the divider is per prop: spacing is ÷4 (`p={4}` is 1rem), `fontSize` is ÷16, `borderRadius` is ÷4, border width and `lineHeight` are direct px, and SVG lengths, filter units and animation times have no divider at all. Read the example rather than assuming.

A prop that is not here does not exist: reach for `css={{ … }}` for a one-off, `Box.extend()` for anything used twice, and never for `style={{ }}`.

### `accentColor`

The accent-color CSS property tints the parts of a native control the page does not draw: a checkbox's tick, a radio's dot, a range track, a progress bar. The one way to brand them without `appearance="none"` and a rebuild, and it inherits — set it once on a form.

- Writes: `accent-color`
- Values: 304 named values, anything else the types allow
- Example: `accentColor="sky-500"` → `accent-color: var(--sky-500)`

### `ai`

The CSS align-items property sets the align-self value on all direct children as a group. In flexbox, it controls the alignment of items on the cross axis. In grid layout, it controls the alignment of items on the block axis within their grid areas.

- Writes: `align-items`
- Values: `stretch` · `flex-start` · `flex-end` · `center` · `baseline` · `start` · `end` · `self-start` · `self-end` · `safe center` · `safe start` · `safe end` · `unsafe center` · `unsafe start` · `unsafe end`
- Example: `ai="stretch"` → `align-items: stretch`

### `alignContent`

The CSS align-content property sets the distribution of space between and around content items along a flexbox's cross axis, or a grid or block-level element's block axis.

- Writes: `align-content`
- Values: `flex-start` · `flex-end` · `center` · `space-between` · `space-around` · `space-evenly` · `stretch` · `start` · `end` · `baseline` · `normal` · `safe center` · `safe start` · `safe end` · `unsafe center` · `unsafe start` · `unsafe end`
- Example: `alignContent="flex-start"` → `align-content: flex-start`

### `alignSelf`

The align-self CSS property overrides a grid or flex item's align-items value. In grid, it aligns the item inside the grid area. In flexbox, it aligns the item on the cross axis.

- Writes: `align-self`
- Values: `auto` · `flex-start` · `flex-end` · `center` · `baseline` · `stretch` · `start` · `end` · `self-start` · `self-end` · `anchor-center` · `safe center` · `safe start` · `safe end` · `unsafe center` · `unsafe start` · `unsafe end`
- Example: `alignSelf="auto"` → `align-self: auto`

### `anchorName`

Names this element as an anchor, so a floating layer can hang off it by name. The `--` is optional here and added on the way out, the way a `vars` key's is, so `anchorName="trigger"` and `anchorName="--trigger"` write the same declaration. A name is global to the document, so a component rendering many of them needs one per instance.

- Writes: `anchor-name`
- Values: `none`, anything else the types allow
- Example: `anchorName="trigger"` → `anchor-name: --trigger`

### `animation`

One of the four presets — their `@keyframes` are registered already and their durations ride `--transitionTime`, so `prefers-reduced-motion` stops them with no opt-in. Declared before the longhands below, so `animationDuration` and friends override what a preset chose.

- Writes: `animation`
- Values: `spin` · `pulse` · `bounce` · `ping` · `none`
- Example: `animation="spin"` → `animation: spin calc(4 * var(--transitionTime)) linear infinite`

### `animationDelay`

The animation-delay CSS property specifies the amount of time to wait from applying the animation to an element before beginning to perform the animation. Milliseconds, like every other time here.

- Writes: `animation-delay`
- Values: a number
- Example: `animationDelay={150}` → `animation-delay: 150ms`

### `animationDirection`

The animation-direction CSS property sets whether an animation should play forward, backward, or alternate back and forth between playing the sequence forward and backward.

- Writes: `animation-direction`
- Values: `normal` · `reverse` · `alternate` · `alternate-reverse`
- Example: `animationDirection="normal"` → `animation-direction: normal`

### `animationDuration`

The animation-duration CSS property sets the length of time that an animation takes to complete one cycle. Milliseconds: `animationDuration={1100}` is `1100ms`, and it names its own time, so reduced motion cannot reach it — say so with `motionReduce`. A spring name is that spring's settling time.

- Writes: `animation-duration`
- Values: `spring` · `spring-gentle` · `spring-bouncy` · `spring-snappy`, a number
- Example: `animationDuration={1100}` → `animation-duration: 1100ms`

### `animationFillMode`

The animation-fill-mode CSS property sets how a CSS animation applies styles to its target before and after its execution.

- Writes: `animation-fill-mode`
- Values: `none` · `forwards` · `backwards` · `both`
- Example: `animationFillMode="none"` → `animation-fill-mode: none`

### `animationIterationCount`

The animation-iteration-count CSS property sets the number of times an animation sequence should be played before stopping.

- Writes: `animation-iteration-count`
- Values: `infinite`, a number
- Example: `animationIterationCount={3}` → `animation-iteration-count: 3`

### `animationName`

Which `@keyframes` to run: a sequence registered with `Box.keyframes()`, one of the four preset names, or a name from a stylesheet this library never wrote — an unknown name is left alone rather than dropped, because `@keyframes` can come from anywhere.

- Writes: `animation-name`
- Values: whatever the types allow
- Example: `animationName="spin"` → `animation-name: spin`

### `animationPlayState`

The animation-play-state CSS property sets whether an animation is running or paused.

- Writes: `animation-play-state`
- Values: `running` · `paused`
- Example: `animationPlayState="running"` → `animation-play-state: running`

### `animationRange`

The shorthand that sets both ends of the range at once: one value sets the start and leaves the end at `normal`, two set both. `entry` is the whole of the element coming into view, `cover 0% cover 50%` the first half of its pass across the scrollport. Only meaningful beside a view timeline.

- Writes: `animation-range`
- Values: whatever the types allow
- Example: `animationRange="entry"` → `animation-range: entry`

### `animationRangeEnd`

Where along the timeline the animation finishes: a named part of the pass (`cover`, `contain`, `entry`, `exit`, `entry-crossing`, `exit-crossing`), an offset into one, or a plain length.

- Writes: `animation-range-end`
- Values: whatever the types allow
- Example: `animationRangeEnd="exit"` → `animation-range-end: exit`

### `animationRangeStart`

Where along the timeline the animation starts. Same values as the end, and the pair is what turns "when this element is scrolled past" into "while it is entering, and no longer".

- Writes: `animation-range-start`
- Values: whatever the types allow
- Example: `animationRangeStart="entry 25%"` → `animation-range-start: entry 25%`

### `animationTimeline`

What drives the animation — a scroll position rather than a clock, so there is no rAF loop, no scroll listener and no state. `scroll()` is the nearest scrollport's progress (`scroll(root)` the page's), `view()` this element's progress through it; both need nothing declared anywhere else. A name is a timeline `scrollTimeline`/`viewTimeline` declared elsewhere. Two things to know. **It is declared after `animation`**, because the CSS shorthand resets this property to `auto` — the registry's order is what stops `animation="spin"` quietly undoing it. And a scroll-driven animation has **no duration**, so `--transitionTime` cannot reach it and reduced motion needs saying out loud: `motionReduce={{ animation: 'none' }}`.

- Writes: `animation-timeline`
- Values: `none` · `auto`, anything else the types allow
- Example: `animationTimeline="scroll()"` → `animation-timeline: scroll()`

### `animationTimingFunction`

How an animation progresses through each cycle: a keyword, one of the four sampled springs, or a curve of your own — `cubic-bezier()`, `steps()` and `linear()` are values. A spring names its duration too.

- Writes: `animation-timing-function`
- Values: `linear` · `ease` · `ease-in` · `ease-in-out` · `ease-out` · `step-start` · `step-end` · `spring` · `spring-gentle` · `spring-bouncy` · `spring-snappy`, anything else the types allow
- Example: `animationTimingFunction="linear"` → `animation-timing-function: linear`

### `appearance`

The appearance CSS property is used to display UI elements with platform-specific styling, based on the operating system's theme.

- Writes: `appearance`
- Values: `none` · `auto` · `menulist-button` · `textfield` · `button` · `checkbox`
- Example: `appearance="none"` → `appearance: none`

### `aspectRatio`

The aspect-ratio CSS property sets a preferred ratio for the box, which the sizing props then fill in one axis of: `aspectRatio="video" width="fit"` is a 16/9 embed. Two names (`square`, `video`), a ratio written compactly (`'4/3'`), or a number — the only prop taking both a fraction string and a division.

- Writes: `aspect-ratio`
- Values: `auto` · `square` · `video`, a number, anything else the types allow
- Example: `aspectRatio="video"` → `aspect-ratio: 16 / 9`

### `b`

The border-width shorthand CSS property sets the width of an element's border.

- Writes: `border-width`
- Values: a number
- Example: `b={4}` → `border-width: 4px`

### `backdropBlur`

How far what is *behind* the element is blurred — the glassmorphism half. Needs something translucent in front of it.

- Writes: `--boxBackdropBlur`, `backdrop-filter`
- Values: `xs` · `sm` · `md` · `lg` · `xl` · `xxl` · `xxxl` · `none`, a number
- Example: `backdropBlur="sm"` → `--boxBackdropBlur: blur(8px); backdrop-filter: var(--boxBackdropBlur,) var(--boxBackdropBrightness,) var(--boxBackdropContrast,) var(--boxBackdropGrayscale,) var(--boxBackdropHueRotate,) var(--boxBackdropInvert,) var(--boxBackdropOpacity,) var(--boxBackdropSaturate,) var(--boxBackdropSepia,)`

### `backdropBrightness`

How bright what is behind the element is rendered, as a percentage.

- Writes: `--boxBackdropBrightness`, `backdrop-filter`
- Values: `none`, a number
- Example: `backdropBrightness={110}` → `--boxBackdropBrightness: brightness(110%); backdrop-filter: var(--boxBackdropBlur,) var(--boxBackdropBrightness,) var(--boxBackdropContrast,) var(--boxBackdropGrayscale,) var(--boxBackdropHueRotate,) var(--boxBackdropInvert,) var(--boxBackdropOpacity,) var(--boxBackdropSaturate,) var(--boxBackdropSepia,)`

### `backdropContrast`

How much contrast what is behind the element is rendered with, as a percentage.

- Writes: `--boxBackdropContrast`, `backdrop-filter`
- Values: `none`, a number
- Example: `backdropContrast={125}` → `--boxBackdropContrast: contrast(125%); backdrop-filter: var(--boxBackdropBlur,) var(--boxBackdropBrightness,) var(--boxBackdropContrast,) var(--boxBackdropGrayscale,) var(--boxBackdropHueRotate,) var(--boxBackdropInvert,) var(--boxBackdropOpacity,) var(--boxBackdropSaturate,) var(--boxBackdropSepia,)`

### `backdropFilter`

The whole `backdrop-filter` at once, written as CSS. Superseded by the nine `backdrop*` props, which compose — this one writes the same property, so it and they are the same declaration: use one.

- Writes: `backdrop-filter`
- Values: `none` · `blur(12px)` · `blur(8px)` · `blur(4px)`
- Example: `backdropFilter="none"` → `backdrop-filter: none`

### `backdropGrayscale`

How far what is behind the element is desaturated, as a percentage.

- Writes: `--boxBackdropGrayscale`, `backdrop-filter`
- Values: `none`, a number
- Example: `backdropGrayscale={100}` → `--boxBackdropGrayscale: grayscale(100%); backdrop-filter: var(--boxBackdropBlur,) var(--boxBackdropBrightness,) var(--boxBackdropContrast,) var(--boxBackdropGrayscale,) var(--boxBackdropHueRotate,) var(--boxBackdropInvert,) var(--boxBackdropOpacity,) var(--boxBackdropSaturate,) var(--boxBackdropSepia,)`

### `backdropHueRotate`

How far every hue behind the element is rotated round the colour circle, in degrees.

- Writes: `--boxBackdropHueRotate`, `backdrop-filter`
- Values: `none`, a number
- Example: `backdropHueRotate={90}` → `--boxBackdropHueRotate: hue-rotate(90deg); backdrop-filter: var(--boxBackdropBlur,) var(--boxBackdropBrightness,) var(--boxBackdropContrast,) var(--boxBackdropGrayscale,) var(--boxBackdropHueRotate,) var(--boxBackdropInvert,) var(--boxBackdropOpacity,) var(--boxBackdropSaturate,) var(--boxBackdropSepia,)`

### `backdropInvert`

How far the colours behind the element are inverted, as a percentage.

- Writes: `--boxBackdropInvert`, `backdrop-filter`
- Values: `none`, a number
- Example: `backdropInvert={100}` → `--boxBackdropInvert: invert(100%); backdrop-filter: var(--boxBackdropBlur,) var(--boxBackdropBrightness,) var(--boxBackdropContrast,) var(--boxBackdropGrayscale,) var(--boxBackdropHueRotate,) var(--boxBackdropInvert,) var(--boxBackdropOpacity,) var(--boxBackdropSaturate,) var(--boxBackdropSepia,)`

### `backdropOpacity`

How opaque what is behind the element is rendered, as a percentage. `filter` has no use for this one, so there is no `opacity` twin.

- Writes: `--boxBackdropOpacity`, `backdrop-filter`
- Values: `none`, a number
- Example: `backdropOpacity={80}` → `--boxBackdropOpacity: opacity(80%); backdrop-filter: var(--boxBackdropBlur,) var(--boxBackdropBrightness,) var(--boxBackdropContrast,) var(--boxBackdropGrayscale,) var(--boxBackdropHueRotate,) var(--boxBackdropInvert,) var(--boxBackdropOpacity,) var(--boxBackdropSaturate,) var(--boxBackdropSepia,)`

### `backdropSaturate`

How saturated what is behind the element is rendered, as a percentage.

- Writes: `--boxBackdropSaturate`, `backdrop-filter`
- Values: `none`, a number
- Example: `backdropSaturate={180}` → `--boxBackdropSaturate: saturate(180%); backdrop-filter: var(--boxBackdropBlur,) var(--boxBackdropBrightness,) var(--boxBackdropContrast,) var(--boxBackdropGrayscale,) var(--boxBackdropHueRotate,) var(--boxBackdropInvert,) var(--boxBackdropOpacity,) var(--boxBackdropSaturate,) var(--boxBackdropSepia,)`

### `backdropSepia`

How far what is behind the element is pushed towards sepia, as a percentage.

- Writes: `--boxBackdropSepia`, `backdrop-filter`
- Values: `none`, a number
- Example: `backdropSepia={100}` → `--boxBackdropSepia: sepia(100%); backdrop-filter: var(--boxBackdropBlur,) var(--boxBackdropBrightness,) var(--boxBackdropContrast,) var(--boxBackdropGrayscale,) var(--boxBackdropHueRotate,) var(--boxBackdropInvert,) var(--boxBackdropOpacity,) var(--boxBackdropSaturate,) var(--boxBackdropSepia,)`

### `bb`

The border-bottom-width CSS property sets the width of the bottom border of an element.

- Writes: `border-bottom-width`
- Values: a number
- Example: `bb={4}` → `border-bottom-width: 4px`

### `be`

The border-inline-end-width CSS property sets the width of the border on the side the text ends at: `br` in a left-to-right writing mode, `bl` in a right-to-left one.

- Writes: `border-inline-end-width`
- Values: a number
- Example: `be={4}` → `border-inline-end-width: 4px`

### `bgClip`

Which box the background is painted inside — and `text`, which clips it to the glyphs themselves. That is how a gradient becomes lettering, and it needs `color="transparent"` beside it or the text paints over its own background.

- Writes: `background-clip`
- Values: `border` · `padding` · `content` · `text`
- Example: `bgClip="text"` → `background-clip: text`

### `bgColor`

The background-color CSS property sets the background color of an element.

- Writes: `background-color`
- Values: 304 named values, anything else the types allow
- Example: `bgColor="sky-500"` → `background-color: var(--sky-500)`

### `bgGradient`

A gradient written as a value: the key names the kind and carries its geometry (`linear` a direction or an angle, `radial` a shape, `conic` an angle to start from), `colors` are the stops in order — a palette token, one with an opacity modifier, or a `[colour, position]` pair. `interpolate="oklch"` is what keeps a two-stop gradient out of the grey middle sRGB runs it through. Writes `background-image`, so it and `bgImage` are the same property: use one.

- Writes: `background-image`
- Values: whatever the types allow
- Example: `bgGradient={{ linear: 'r', colors: ['blue-500', 'pink-500'] }}` → `background-image: linear-gradient(to right,var(--blue-500),var(--pink-500))`

### `bgImage`

The background-image CSS property sets one or more background images on an element.

- Writes: `background-image`
- Values: `gradient-primary` · `gradient-aurora-light` · `gradient-aurora-dark` · `gradient-accent` · `bg-img-checked` · `bg-img-indeterminate` · `bg-img-radio` · `none`
- Example: `bgImage="gradient-primary"` → `background-image: var(--gradient-primary)`

### `bl`

The border-left-width CSS property sets the width of the left border of an element.

- Writes: `border-left-width`
- Values: a number
- Example: `bl={4}` → `border-left-width: 4px`

### `blur`

How far the element's own pixels are blurred: a step of the named scale (`xs` 4px through `xxxl` 64px) or a radius in px. One of nine functions that compose into a single `filter`, so a blur and a `brightness` coexist; `none` clears this one and leaves the rest.

- Writes: `--boxBlur`, `filter`
- Values: `xs` · `sm` · `md` · `lg` · `xl` · `xxl` · `xxxl` · `none`, a number
- Example: `blur={3}` → `--boxBlur: blur(3px); filter: var(--boxBlur,) var(--boxBrightness,) var(--boxContrast,) var(--boxGrayscale,) var(--boxHueRotate,) var(--boxInvert,) var(--boxSaturate,) var(--boxSepia,) var(--boxDropShadow,)`

### `borderCollapse`

Whether a table's cell borders are shared or every cell keeps its own. `collapse` is what makes a bordered table read as one grid rather than as a row of boxes, and it is the value `borderSpacing` has nothing to space.

- Writes: `border-collapse`
- Values: `collapse` · `separate`
- Example: `borderCollapse="collapse"` → `border-collapse: collapse`

### `borderColor`

The border-color shorthand CSS property sets the color of an element's border.

- Writes: `border-color`
- Values: 304 named values, anything else the types allow
- Example: `borderColor="sky-500"` → `border-color: var(--sky-500)`

### `borderRadius`

The border-radius CSS property rounds the corners of an element's outer border edge. You can set a single radius to make circular corners, or two radii to make elliptical corners.

- Writes: `border-radius`
- Values: a number
- Example: `borderRadius={4}` → `border-radius: 1rem`

### `borderRadiusBottom`

The border-bottom-radius CSS property rounds the bottom corners of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner.

- Writes: `border-bottom-left-radius`, `border-bottom-right-radius`
- Values: a number
- Example: `borderRadiusBottom={4}` → `border-bottom-left-radius: 1rem; border-bottom-right-radius: 1rem`

### `borderRadiusBottomLeft`

The border-bottom-left-radius CSS property rounds the bottom-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner.

- Writes: `border-bottom-left-radius`
- Values: a number
- Example: `borderRadiusBottomLeft={4}` → `border-bottom-left-radius: 1rem`

### `borderRadiusBottomRight`

The border-bottom-right-radius CSS property rounds the bottom-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner.

- Writes: `border-bottom-right-radius`
- Values: a number
- Example: `borderRadiusBottomRight={4}` → `border-bottom-right-radius: 1rem`

### `borderRadiusEnd`

Rounds both corners on the side the text ends at: the right ones in a left-to-right writing mode, the left ones in a right-to-left one.

- Writes: `border-start-end-radius`, `border-end-end-radius`
- Values: a number
- Example: `borderRadiusEnd={4}` → `border-start-end-radius: 1rem; border-end-end-radius: 1rem`

### `borderRadiusEndEnd`

Rounds the block-end, inline-end corner: bottom-right in a left-to-right writing mode, bottom-left in a right-to-left one.

- Writes: `border-end-end-radius`
- Values: a number
- Example: `borderRadiusEndEnd={4}` → `border-end-end-radius: 1rem`

### `borderRadiusEndStart`

Rounds the block-end, inline-start corner: bottom-left in a left-to-right writing mode, bottom-right in a right-to-left one.

- Writes: `border-end-start-radius`
- Values: a number
- Example: `borderRadiusEndStart={4}` → `border-end-start-radius: 1rem`

### `borderRadiusLeft`

The border-left-radius CSS property rounds the left corners of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner.

- Writes: `border-top-left-radius`, `border-bottom-left-radius`
- Values: a number
- Example: `borderRadiusLeft={4}` → `border-top-left-radius: 1rem; border-bottom-left-radius: 1rem`

### `borderRadiusRight`

The border-right-radius CSS property rounds the right corners of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner.

- Writes: `border-top-right-radius`, `border-bottom-right-radius`
- Values: a number
- Example: `borderRadiusRight={4}` → `border-top-right-radius: 1rem; border-bottom-right-radius: 1rem`

### `borderRadiusStart`

Rounds both corners on the side the text starts from: the left ones in a left-to-right writing mode, the right ones in a right-to-left one.

- Writes: `border-start-start-radius`, `border-end-start-radius`
- Values: a number
- Example: `borderRadiusStart={4}` → `border-start-start-radius: 1rem; border-end-start-radius: 1rem`

### `borderRadiusStartEnd`

Rounds the block-start, inline-end corner: top-right in a left-to-right writing mode, top-left in a right-to-left one.

- Writes: `border-start-end-radius`
- Values: a number
- Example: `borderRadiusStartEnd={4}` → `border-start-end-radius: 1rem`

### `borderRadiusStartStart`

Rounds the block-start, inline-start corner: top-left in a left-to-right writing mode, top-right in a right-to-left one.

- Writes: `border-start-start-radius`
- Values: a number
- Example: `borderRadiusStartStart={4}` → `border-start-start-radius: 1rem`

### `borderRadiusTop`

The border-top-radius CSS property rounds the top corners of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner.

- Writes: `border-top-left-radius`, `border-top-right-radius`
- Values: a number
- Example: `borderRadiusTop={4}` → `border-top-left-radius: 1rem; border-top-right-radius: 1rem`

### `borderRadiusTopLeft`

The border-top-left-radius CSS property rounds the top-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner.

- Writes: `border-top-left-radius`
- Values: a number
- Example: `borderRadiusTopLeft={4}` → `border-top-left-radius: 1rem`

### `borderRadiusTopRight`

The border-top-right-radius CSS property rounds the top-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner.

- Writes: `border-top-right-radius`
- Values: a number
- Example: `borderRadiusTopRight={4}` → `border-top-right-radius: 1rem`

### `borderSpacing`

The gap between the cells of a `separate` table, on the spacing scale. It is a property of the table, not of a cell: a cell's own `p` is inside its border, this is the space outside it.

- Writes: `border-spacing`
- Values: a number
- Example: `borderSpacing={2}` → `border-spacing: 0.5rem`

### `borderStyle`

The border-style shorthand CSS property sets the line style for all four sides of an element's border.

- Writes: `border-style`
- Values: `solid` · `dashed` · `dotted` · `double` · `groove` · `ridge` · `inset` · `outset` · `none` · `hidden`
- Example: `borderStyle="solid"` → `border-style: solid`

### `bottom`

The bottom CSS property participates in setting the vertical position of a positioned element. This inset property has no effect on non-positioned elements. It also takes `anchor()`, an inset measured to one of the anchor's own edges.

- Writes: `bottom`
- Values: 55 named values, a number, anything else the types allow
- Example: `bottom={4}` → `bottom: 1rem`

### `boxSizing`

The `box-sizing` CSS property sets how the total width and height of an element is calculated.

- Writes: `box-sizing`
- Values: `border-box` · `content-box`
- Example: `boxSizing="border-box"` → `box-sizing: border-box`

### `br`

The border-right-width CSS property sets the width of the right border of an element.

- Writes: `border-right-width`
- Values: a number
- Example: `br={4}` → `border-right-width: 4px`

### `brightness`

How bright the element is rendered, as a percentage: `brightness={110}` is 10% brighter, `{50}` is half.

- Writes: `--boxBrightness`, `filter`
- Values: `none`, a number
- Example: `brightness={110}` → `--boxBrightness: brightness(110%); filter: var(--boxBlur,) var(--boxBrightness,) var(--boxContrast,) var(--boxGrayscale,) var(--boxHueRotate,) var(--boxInvert,) var(--boxSaturate,) var(--boxSepia,) var(--boxDropShadow,)`

### `bs`

The border-inline-start-width CSS property sets the width of the border on the side the text starts from: `bl` in a left-to-right writing mode, `br` in a right-to-left one.

- Writes: `border-inline-start-width`
- Values: a number
- Example: `bs={4}` → `border-inline-start-width: 4px`

### `bt`

The border-top-width CSS property sets the width of the top border of an element.

- Writes: `border-top-width`
- Values: a number
- Example: `bt={4}` → `border-top-width: 4px`

### `bx`

The border-width shorthand CSS property sets the width of an element's left and right border.

- Writes: `border-inline-width`
- Values: a number
- Example: `bx={4}` → `border-inline-width: 4px`

### `by`

The border-width shorthand CSS property sets the width of an element's top and bottom border.

- Writes: `border-block-width`
- Values: a number
- Example: `by={4}` → `border-block-width: 4px`

### `caretColor`

The caret-color CSS property sets the colour of the insertion caret in a text field or any editable element.

- Writes: `caret-color`
- Values: 304 named values, anything else the types allow
- Example: `caretColor="sky-500"` → `caret-color: var(--sky-500)`

### `clipPath`

The clip-path CSS property creates a clipping region that sets what part of an element should be shown. Parts that are inside the region are shown, while those outside are hidden. `inset(50%)` clips an element away entirely without removing it from the accessibility tree — the visually-hidden recipe. A `<ClipPath>` in the document is `clipPath="url(#frame)"`.

- Writes: `clip-path`
- Values: `inset(50%)` · `none`, anything else the types allow
- Example: `clipPath="inset(50%)"` → `clip-path: inset(50%)`

### `color`

The color CSS property sets the foreground color value of an element's text and text decorations, and sets the currentcolor value.

- Writes: `color`
- Values: 304 named values, anything else the types allow
- Example: `color="sky-500"` → `color: var(--sky-500)`

### `colorScheme`

The color-scheme CSS property tells the browser which schemes the element is *built* for, and native UI follows it: scrollbars, form controls, the spellcheck underline, `Canvas`/`CanvasText`. A dark theme that leaves this alone gets light scrollbars over its dark page — `Box.Theme` sets it on the root.

- Writes: `color-scheme`
- Values: `normal` · `light` · `dark` · `light dark` · `only light` · `only dark`
- Example: `colorScheme="normal"` → `color-scheme: normal`

### `columnGap`

The column-gap CSS property sets the size of the gap (gutter) between an element's columns.

- Writes: `column-gap`
- Values: a number, anything else the types allow
- Example: `columnGap={4}` → `column-gap: 1rem`

### `container`

Makes this element a query container, so the `cq` styles inside it answer to *its* width: `container` alone is an anonymous one (the nearest container `cq={{ md: … }}` finds), a name is what `cq={{ 'sidebar/md': … }}` addresses. Both mean `container-type: inline-size` — the only type that does not need the element to have a size of its own. The three props are declared shorthand-first, so `containerType` beside `container` overrides the type and keeps the name.

- Writes: `container-type`
- Values: `true`, anything else the types allow
- Example: `container` → `container-type: inline-size`

### `containerName`

The name `cq={{ 'sidebar/md': … }}` addresses. Only a query container answers, so pair it with `containerType`.

- Writes: `container-name`
- Values: whatever the types allow
- Example: `containerName="sidebar"` → `container-name: sidebar`

### `containerType`

What may be asked about this container: `inline-size` (its width, what `container` sets), `size` (both axes — which needs the element to have a block size of its own, or its content stops laying it out), or `normal` to stop being a query container at all.

- Writes: `container-type`
- Values: `inline-size` · `size` · `normal`
- Example: `containerType="inline-size"` → `container-type: inline-size`

### `content`

What a `::before`/`::after` renders — and whether it renders at all: a generated element with no `content` produces no box. `content="empty"` is `''` (the value a decoration wants), a quoted string or a function (`attr()`, `counter()`, `url()`) is written out as CSS, and **anything else is text and gets quoted for you** — `content="New"` is `content: "New"`.

- Writes: `content`
- Values: `empty` · `none` · `normal` · `open-quote` · `close-quote` · `no-open-quote` · `no-close-quote`, anything else the types allow
- Example: `content="New"` → `content: "New"`

### `contentVisibility`

The content-visibility CSS property controls whether or not an element renders its contents at all, along with forcing a strong set of containments, allowing user agents to potentially omit large swathes of layout and rendering work until it becomes needed. It enables the user agent to skip an element's rendering work (including layout and painting) until it is needed — which makes the initial page load much faster.

- Writes: `content-visibility`
- Values: `visible` · `hidden`
- Example: `contentVisibility="visible"` → `content-visibility: visible`

### `contrast`

How much contrast the element is rendered with, as a percentage — `100` being the element as it is.

- Writes: `--boxContrast`, `filter`
- Values: `none`, a number
- Example: `contrast={125}` → `--boxContrast: contrast(125%); filter: var(--boxBlur,) var(--boxBrightness,) var(--boxContrast,) var(--boxGrayscale,) var(--boxHueRotate,) var(--boxInvert,) var(--boxSaturate,) var(--boxSepia,) var(--boxDropShadow,)`

### `css`

The escape hatch: a style object for the properties this library has no prop for, compiled into a class through the same pipeline as every other prop — shared, nestable, server-rendered — rather than an inline style. Declared last on purpose: its rule sorts after every typed prop's, so on one element it wins the property both name. A colour token resolves the way a `vars` value does; a number is written as it stands.

- Writes: `mix-blend-mode`
- Values: whatever the types allow
- Example: `css={{ mixBlendMode: 'multiply' }}` → `mix-blend-mode: multiply`

### `cursor`

The cursor CSS property sets the mouse cursor, if any, to show when the mouse pointer is over an element.

- Writes: `cursor`
- Values: `auto` · `default` · `none` · `context-menu` · `help` · `pointer` · `progress` · `wait` · `cell` · `crosshair` · `text` · `vertical-text` · `alias` · `copy` · `move` · `no-drop` · `not-allowed` · `e-resize` · `n-resize` · `ne-resize` · `nw-resize` · `s-resize` · `se-resize` · `sw-resize` · `w-resize` · `ew-resize` · `ns-resize` · `nesw-resize` · `nwse-resize` · `col-resize` · `row-resize` · `all-scroll` · `zoom-in` · `zoom-out` · `grab` · `grabbing`
- Example: `cursor="pointer"` → `cursor: pointer`

### `cx`

The centre of a `<circle>` or `<ellipse>`, horizontally, in user units. Real CSS, so unlike the attribute it transitions — moving a point on hover is one prop and no JavaScript.

- Writes: `cx`
- Values: a number, anything else the types allow
- Example: `cx={4}` → `cx: 4`

### `cy`

The cy CSS property positions the centre of a `<circle>` or an `<ellipse>` vertically, in user units. Transitions like `cx`.

- Writes: `cy`
- Values: a number, anything else the types allow
- Example: `cy={4}` → `cy: 4`

### `d`

The flex-direction CSS property sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed).

- Writes: `flex-direction`
- Values: `row` · `row-reverse` · `column` · `column-reverse`
- Example: `d="row"` → `flex-direction: row`

### `display`

The `display` CSS property sets whether an element is treated as a block or inline box and the layout used for its children, such as flow layout, grid or flex.

- Writes: `display`
- Values: `none` · `block` · `inline` · `inline-block` · `flex` · `inline-flex` · `grid` · `inline-grid` · `contents` · `list-item` · `table` · `table-header-group` · `table-row-group` · `table-row` · `table-cell`
- Example: `display="none"` → `display: none`

### `dominantBaseline`

Which baseline of SVG text sits on its `y`: `central` centres a number inside a gauge. Not inherited, so like `vectorEffect` its rule names the element *and* its descendants.

- Writes: `dominant-baseline`
- Values: `auto` · `text-bottom` · `alphabetic` · `ideographic` · `middle` · `central` · `mathematical` · `hanging` · `text-top`
- Example: `dominantBaseline="auto"` → `dominant-baseline: auto`

### `dropShadow`

A shadow cast by the element's *shape* rather than its box — the one that follows a transparent PNG's outline or an SVG's path, where `shadow` would draw a rectangle. `xs` through `xxl`, recoloured by `dropShadowColor`. It is a filter function, so it composes with `blur` and the rest rather than with the shadow stack.

- Writes: `--boxDropShadow`, `filter`
- Values: `xs` · `sm` · `md` · `lg` · `xl` · `xxl` · `none`
- Example: `dropShadow="xs"` → `--boxDropShadow: drop-shadow(0 1px 1px var(--boxDropShadowColor, rgb(0 0 0 / .05))); filter: var(--boxBlur,) var(--boxBrightness,) var(--boxContrast,) var(--boxGrayscale,) var(--boxHueRotate,) var(--boxInvert,) var(--boxSaturate,) var(--boxSepia,) var(--boxDropShadow,)`

### `dropShadowColor`

What colour `dropShadow` draws in. Shows nothing on its own.

- Writes: `--boxDropShadowColor`
- Values: 304 named values, anything else the types allow
- Example: `dropShadowColor="sky-500"` → `--boxDropShadowColor: var(--sky-500)`

### `fieldSizing`

The field-sizing CSS property lets a form control size itself to its content: `fieldSizing="content"` is a textarea that grows as it is typed into, with no JavaScript measuring anything.

- Writes: `field-sizing`
- Values: `content` · `fixed`
- Example: `fieldSizing="content"` → `field-sizing: content`

### `fill`

The fill CSS property defines how SVG text content and the interior canvas of SVG shapes are filled or painted. If present, it overrides the element's fill attribute. Takes a colour token, a paint server the document defines (`fill="url(#sky)"` — a `<LinearGradient>` or a pattern) or a variable somebody else declared (`fill="var(--chart-1)"`).

- Writes: `fill`
- Values: 304 named values, anything else the types allow
- Example: `fill="sky-500"` → `fill: var(--sky-500)`

### `fillOpacity`

The fill-opacity CSS property defines the opacity of the paint applied to the interior of an SVG shape or to SVG text.

- Writes: `fill-opacity`
- Values: `0` · `0.1` · `0.2` · `0.3` · `0.4` · `0.5` · `0.6` · `0.7` · `0.8` · `0.9` · `1`
- Example: `fillOpacity={0.5}` → `fill-opacity: 0.5`

### `fillRule`

The fill-rule CSS property defines which parts of a self-intersecting SVG shape count as inside it, and are therefore filled.

- Writes: `fill-rule`
- Values: `nonzero` · `evenodd`
- Example: `fillRule="nonzero"` → `fill-rule: nonzero`

### `flex1`

The flex CSS shorthand property sets flex to fit the space available in its flex container.

- Writes: `flex`
- Values: `true`
- Example: `flex1` → `flex: 1`

### `flexGrow`

The flex-grow CSS property sets the flex grow factor, which specifies how much of the flex container's positive free space, if any, should be assigned to the flex item's main size.

- Writes: `flex-grow`
- Values: a number
- Example: `flexGrow={4}` → `flex-grow: 4`

### `flexShrink`

The flex-shrink CSS property sets the flex shrink factor of a flex item. If the size of all flex items is larger than the flex container, the flex items can shrink to fit according to their flex-shrink value. Each flex line's negative free space is distributed between the line's flex items that have a flex-shrink value greater than 0.

- Writes: `flex-shrink`
- Values: a number
- Example: `flexShrink={4}` → `flex-shrink: 4`

### `flexWrap`

The flex-wrap CSS property sets whether flex items are forced onto one line or can wrap onto multiple lines. If wrapping is allowed, it sets the direction that lines are stacked.

- Writes: `flex-wrap`
- Values: `nowrap` · `wrap` · `wrap-reverse`
- Example: `flexWrap="nowrap"` → `flex-wrap: nowrap`

### `flip`

Mirrors the element: `xAxis` flips it left to right, `yAxis` top to bottom. It writes the `scale` property, which is what `scale` writes too — use one of them. `rtl={{ flip: 'xAxis' }}` is the arrow that has to point the other way in a right-to-left reading.

- Writes: `scale`
- Values: `xAxis` · `yAxis`
- Example: `flip="xAxis"` → `scale: -1 1`

### `fontSize`

The font-size CSS property sets the size of the font. Its divider is **16**, not the spacing scale’s 4, so the number is the pixel size a reader was reaching for: `fontSize={14}` is `0.875rem`. Font-size-relative units (`em`, `ex`) resolve against it.

- Writes: `font-size`
- Values: `inherit`, a number
- Example: `fontSize={14}` → `font-size: 0.875rem`

### `fontStyle`

The font-style CSS property sets whether a font should be styled with a normal, italic, or oblique face from its font-family.

- Writes: `font-style`
- Values: `italic` · `normal` · `oblique`
- Example: `fontStyle="italic"` → `font-style: italic`

### `fontWeight`

The font-weight CSS property sets the weight (or boldness) of the font. The weights available depend on the font-family that is currently set.

- Writes: `font-weight`
- Values: `100` · `200` · `300` · `400` · `500` · `600` · `700` · `800` · `900`
- Example: `fontWeight={700}` → `font-weight: 700`

### `gap`

The gap CSS shorthand property sets the gaps (also called gutters) between rows and columns. This property applies to multi-column, flex, and grid containers.

- Writes: `gap`
- Values: a number, anything else the types allow
- Example: `gap={4}` → `gap: 1rem`

### `grayscale`

How far the element is desaturated, as a percentage: `grayscale={100}` removes colour entirely.

- Writes: `--boxGrayscale`, `filter`
- Values: `none`, a number
- Example: `grayscale={100}` → `--boxGrayscale: grayscale(100%); filter: var(--boxBlur,) var(--boxBrightness,) var(--boxContrast,) var(--boxGrayscale,) var(--boxHueRotate,) var(--boxInvert,) var(--boxSaturate,) var(--boxSepia,) var(--boxDropShadow,)`

### `gridColumn`

The grid-column CSS shorthand property specifies a grid item's size and location within a grid column by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start and inline-end edge of its grid area.

- Writes: `grid-column`
- Values: `full-row`, a number
- Example: `gridColumn={4}` → `grid-column: span 4/span 4`

### `gridColumnEnd`

The grid-column-end CSS property specifies a grid item's end position within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the block-end edge of its grid area.

- Writes: `grid-column-end`
- Values: a number
- Example: `gridColumnEnd={4}` → `grid-column-end: 4`

### `gridColumnStart`

The grid-column-start CSS property specifies a grid item's start position within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement. This start position defines the block-start edge of the grid area.

- Writes: `grid-column-start`
- Values: a number
- Example: `gridColumnStart={4}` → `grid-column-start: 4`

### `gridRow`

The grid-row CSS shorthand property specifies a grid item's size and location within a grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start and inline-end edge of its grid area.

- Writes: `grid-row`
- Values: `full-column`, a number
- Example: `gridRow={4}` → `grid-row: span 4/span 4`

### `gridRowEnd`

The grid-row-end CSS property specifies a grid item's end position within the grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-end edge of its grid area.

- Writes: `grid-row-end`
- Values: a number
- Example: `gridRowEnd={4}` → `grid-row-end: 4`

### `gridRowStart`

The grid-row-start CSS property specifies a grid item's start position within the grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start edge of its grid area.

- Writes: `grid-row-start`
- Values: a number
- Example: `gridRowStart={4}` → `grid-row-start: 4`

### `gridTemplateColumns`

The grid-template-columns CSS property defines the line names and track sizing functions of the grid columns.

- Writes: `grid-template-columns`
- Values: `subgrid`, a number
- Example: `gridTemplateColumns={4}` → `grid-template-columns: repeat(4,minmax(0,1fr))`

### `gridTemplateRows`

The grid-template-rows CSS property defines the line names and track sizing functions of the grid rows.

- Writes: `grid-template-rows`
- Values: `subgrid`, a number
- Example: `gridTemplateRows={4}` → `grid-template-rows: repeat(4,minmax(0,1fr))`

### `height`

The height CSS property specifies the height of an element. By default, the property defines the height of the content area. If box-sizing is set to border-box, however, it instead determines the height of the border area. It also takes `anchor-size()`, a length read off the anchor a floating layer is placed against.

- Writes: `height`
- Values: `fit` · `fit-screen` · `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12` · `auto` · `fit-content` · `max-content` · `min-content`, a number, anything else the types allow
- Example: `height={4}` → `height: 1rem`

### `hueRotate`

How far every hue in the element is rotated round the colour circle, in degrees.

- Writes: `--boxHueRotate`, `filter`
- Values: `none`, a number
- Example: `hueRotate={90}` → `--boxHueRotate: hue-rotate(90deg); filter: var(--boxBlur,) var(--boxBrightness,) var(--boxContrast,) var(--boxGrayscale,) var(--boxHueRotate,) var(--boxInvert,) var(--boxSaturate,) var(--boxSepia,) var(--boxDropShadow,)`

### `inline`

The `inline` property is a shortcut to transform `block`, `flex` and `grid` value to `inline-block`, `inline-flex` and `inline-grid` respectively.

- Writes: `display`
- Values: `true`
- Example: `inline` → `display: inline-block`

### `inset`

The inset CSS property is a shorthand that corresponds to the top, right, bottom, and/or left properties. It has the same multi-value syntax of the margin shorthand.

- Writes: `inset`
- Values: 55 named values, a number, anything else the types allow
- Example: `inset={4}` → `inset: 1rem`

### `insetEnd`

The inset-inline-end CSS property sets the distance from the edge the text ends at: `right` in a left-to-right writing mode, `left` in a right-to-left one. It also takes `anchor()`, an inset measured to one of the anchor's own edges.

- Writes: `inset-inline-end`
- Values: 55 named values, a number, anything else the types allow
- Example: `insetEnd={4}` → `inset-inline-end: 1rem`

### `insetRing`

The same ring, drawn inside the border box: an inner hairline that needs no second element.

- Writes: `--boxInsetRing`, `box-shadow`
- Values: a number
- Example: `insetRing={4}` → `--boxInsetRing: inset 0 0 0 4px var(--boxInsetRingColor, currentColor); box-shadow: var(--boxInsetShadow, 0 0 #0000),var(--boxInsetRing, 0 0 #0000),var(--boxRing, 0 0 #0000),var(--boxShadow, 0 0 #0000)`

### `insetRingColor`

What colour `insetRing` draws in. `currentColor` otherwise.

- Writes: `--boxInsetRingColor`
- Values: 304 named values, anything else the types allow
- Example: `insetRingColor="sky-500"` → `--boxInsetRingColor: var(--sky-500)`

### `insetShadow`

A shadow drawn inside the border box: `xxs`, `xs` or `sm`. Its own layer, so it composes with `shadow`.

- Writes: `--boxInsetShadow`, `box-shadow`
- Values: `xxs` · `xs` · `sm` · `none`
- Example: `insetShadow="xxs"` → `--boxInsetShadow: inset 0 1px var(--boxInsetShadowColor, rgb(0 0 0 / .05)); box-shadow: var(--boxInsetShadow, 0 0 #0000),var(--boxInsetRing, 0 0 #0000),var(--boxRing, 0 0 #0000),var(--boxShadow, 0 0 #0000)`

### `insetShadowColor`

What colour `insetShadow` draws in. Shows nothing on its own.

- Writes: `--boxInsetShadowColor`
- Values: 304 named values, anything else the types allow
- Example: `insetShadowColor="sky-500"` → `--boxInsetShadowColor: var(--sky-500)`

### `insetStart`

The inset-inline-start CSS property sets the distance from the edge the text starts at: `left` in a left-to-right writing mode, `right` in a right-to-left one. It also takes `anchor()`, an inset measured to one of the anchor's own edges.

- Writes: `inset-inline-start`
- Values: 55 named values, a number, anything else the types allow
- Example: `insetStart={4}` → `inset-inline-start: 1rem`

### `insetX`

The inset-inline CSS shorthand sets both insets on the inline axis: `insetX` is `left` and `right` in a left-to-right writing mode, the way `mx` is `margin-inline`.

- Writes: `inset-inline`
- Values: 55 named values, a number, anything else the types allow
- Example: `insetX={4}` → `inset-inline: 1rem`

### `insetY`

The inset-block CSS shorthand sets both insets on the block axis — `top` and `bottom` in a horizontal writing mode.

- Writes: `inset-block`
- Values: 55 named values, a number, anything else the types allow
- Example: `insetY={4}` → `inset-block: 1rem`

### `interpolateSize`

Whether `height`/`width` may interpolate to and from a keyword — `auto`, `min-content`, `fit-content`. Inherited, so it belongs on the container and every size inside it animates; Chromium-only for now, and elsewhere a `height: auto` transition simply snaps, which is what it already does today.

- Writes: `interpolate-size`
- Values: `numeric-only` · `allow-keywords`
- Example: `interpolateSize="numeric-only"` → `interpolate-size: numeric-only`

### `invert`

How far the element's colours are inverted, as a percentage: `invert={100}` is a photographic negative.

- Writes: `--boxInvert`, `filter`
- Values: `none`, a number
- Example: `invert={100}` → `--boxInvert: invert(100%); filter: var(--boxBlur,) var(--boxBrightness,) var(--boxContrast,) var(--boxGrayscale,) var(--boxHueRotate,) var(--boxInvert,) var(--boxSaturate,) var(--boxSepia,) var(--boxDropShadow,)`

### `jc`

The CSS justify-content property defines how the browser distributes space between and around content items along the main axis of a flex container and the inline axis of grid and multicol containers.

- Writes: `justify-content`
- Values: `start` · `end` · `flex-start` · `flex-end` · `center` · `left` · `right` · `space-between` · `space-around` · `space-evenly` · `stretch` · `safe center` · `safe start` · `safe end` · `unsafe center` · `unsafe start` · `unsafe end`
- Example: `jc="start"` → `justify-content: start`

### `justifyItems`

The CSS justify-items property sets the `justify-self` of every item in the box: in a grid, where each one sits on the inline axis of its own area.

- Writes: `justify-items`
- Values: `normal` · `start` · `end` · `center` · `stretch` · `baseline` · `left` · `right` · `self-start` · `self-end` · `safe center` · `safe start` · `safe end` · `unsafe center` · `unsafe start` · `unsafe end`
- Example: `justifyItems="normal"` → `justify-items: normal`

### `justifySelf`

The CSS justify-self property sets the way a box is justified inside its alignment container along the appropriate axis.

- Writes: `justify-self`
- Values: `auto` · `flex-start` · `flex-end` · `center` · `baseline` · `stretch` · `start` · `end` · `left` · `right` · `self-start` · `self-end` · `anchor-center` · `safe center` · `safe start` · `safe end` · `unsafe center` · `unsafe start` · `unsafe end`
- Example: `justifySelf="auto"` → `justify-self: auto`

### `left`

The left CSS property participates in specifying the horizontal position of a positioned element. This inset property has no effect on non-positioned elements. It also takes `anchor()`, an inset measured to one of the anchor's own edges.

- Writes: `left`
- Values: 55 named values, a number, anything else the types allow
- Example: `left={4}` → `left: 1rem`

### `letterSpacing`

The letter-spacing CSS property sets the horizontal spacing behavior between text characters. This value is added to the natural spacing between characters while rendering the text. Positive values of letter-spacing causes characters to spread farther apart, while negative values of letter-spacing bring characters closer together.

- Writes: `letter-spacing`
- Values: a number
- Example: `letterSpacing={4}` → `letter-spacing: 4px`

### `lineHeight`

The line-height CSS property sets the height of a line box. Direct **pixels** here — `lineHeight={24}` is `24px`, not the unitless multiple of the font size CSS takes as well; `"font-size"` is that multiple, at 1.

- Writes: `line-height`
- Values: `font-size`, a number
- Example: `lineHeight={24}` → `line-height: 24px`

### `listStyle`

The list-style CSS shorthand property allows you to set all the list style properties at once.

- Writes: `list-style`
- Values: `disc` · `circle` · `square` · `decimal` · `inside` · `outside` · `none`
- Example: `listStyle="disc"` → `list-style: disc`

### `m`

The margin CSS shorthand property sets the margin area on all four sides of an element.

- Writes: `margin`
- Values: 55 named values, a number, anything else the types allow
- Example: `m={4}` → `margin: 1rem`

### `maskImage`

What the element is masked by: the alpha channel of an image decides which of its pixels are painted. Takes the same gradient record `bgGradient` does — so a fade to `transparent` is the whole edge-fade recipe — or a `url(#id)`/`var(--name)` somebody else defined. One mask, not a stack.

- Writes: `mask-image`
- Values: `none`, anything else the types allow
- Example: `maskImage={{ linear: 'b', colors: ['black', 'transparent'] }}` → `mask-image: linear-gradient(to bottom,var(--black),var(--transparent))`

### `maxHeight`

The max-height CSS property sets the maximum height of an element. It prevents the used value of the height property from becoming larger than the value specified for max-height. It also takes `anchor-size()`, a length read off the anchor a floating layer is placed against.

- Writes: `max-height`
- Values: `fit` · `fit-screen` · `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12` · `auto` · `fit-content` · `max-content` · `min-content`, a number, anything else the types allow
- Example: `maxHeight={4}` → `max-height: 1rem`

### `maxWidth`

The max-width CSS property sets the maximum width of an element. It prevents the used value of the width property from becoming larger than the value specified by max-width. It also takes `anchor-size()`, a length read off the anchor a floating layer is placed against.

- Writes: `max-width`
- Values: `fit` · `fit-screen` · `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12` · `auto` · `fit-content` · `max-content` · `min-content`, a number, anything else the types allow
- Example: `maxWidth={4}` → `max-width: 1rem`

### `mb`

The margin-bottom CSS property sets the margin area on the bottom of an element. A positive value places it farther from its neighbors, while a negative value places it closer.

- Writes: `margin-bottom`
- Values: 55 named values, a number, anything else the types allow
- Example: `mb={4}` → `margin-bottom: 1rem`

### `me`

The margin-inline-end CSS property sets the margin on the side the text ends at: `mr` in a left-to-right writing mode, `ml` in a right-to-left one.

- Writes: `margin-inline-end`
- Values: 55 named values, a number, anything else the types allow
- Example: `me={4}` → `margin-inline-end: 1rem`

### `minHeight`

The min-height CSS property sets the minimum height of an element. It prevents the used value of the height property from becoming smaller than the value specified for min-height. It also takes `anchor-size()`, a length read off the anchor a floating layer is placed against.

- Writes: `min-height`
- Values: `fit` · `fit-screen` · `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12` · `auto` · `fit-content` · `max-content` · `min-content`, a number, anything else the types allow
- Example: `minHeight={4}` → `min-height: 1rem`

### `minWidth`

The min-width CSS property sets the minimum width of an element. It prevents the used value of the width property from becoming smaller than the value specified for min-width. It also takes `anchor-size()`, a length read off the anchor a floating layer is placed against.

- Writes: `min-width`
- Values: `fit` · `fit-screen` · `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12` · `auto` · `fit-content` · `max-content` · `min-content`, a number, anything else the types allow
- Example: `minWidth={4}` → `min-width: 1rem`

### `ml`

The margin-left CSS property sets the margin area on the left side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.

- Writes: `margin-left`
- Values: 55 named values, a number, anything else the types allow
- Example: `ml={4}` → `margin-left: 1rem`

### `mr`

The margin-right CSS property sets the margin area on the right side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.

- Writes: `margin-right`
- Values: 55 named values, a number, anything else the types allow
- Example: `mr={4}` → `margin-right: 1rem`

### `ms`

The margin-inline-start CSS property sets the margin on the side the text starts from: `ml` in a left-to-right writing mode, `mr` in a right-to-left one.

- Writes: `margin-inline-start`
- Values: 55 named values, a number, anything else the types allow
- Example: `ms={4}` → `margin-inline-start: 1rem`

### `mt`

The margin-top CSS property sets the margin area on the top of an element. A positive value places it farther from its neighbors, while a negative value places it closer.

- Writes: `margin-top`
- Values: 55 named values, a number, anything else the types allow
- Example: `mt={4}` → `margin-top: 1rem`

### `mx`

The margin-inline CSS shorthand property is a shorthand property that defines both the logical inline start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation.

- Writes: `margin-inline`
- Values: 55 named values, a number, anything else the types allow
- Example: `mx={4}` → `margin-inline: 1rem`

### `my`

The margin-block CSS shorthand property defines the logical block start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation.

- Writes: `margin-block`
- Values: 55 named values, a number, anything else the types allow
- Example: `my={4}` → `margin-block: 1rem`

### `objectFit`

The object-fit CSS property sets how the content of a replaced element, such as an <img> or <video>, should be resized to fit its container.

- Writes: `object-fit`
- Values: `fill` · `contain` · `cover` · `scale-down` · `none`
- Example: `objectFit="fill"` → `object-fit: fill`

### `opacity`

The opacity CSS property sets the opacity of an element. Opacity is the degree to which content behind an element is hidden, and is the opposite of transparency.

- Writes: `opacity`
- Values: `0` · `0.1` · `0.2` · `0.3` · `0.4` · `0.5` · `0.6` · `0.7` · `0.8` · `0.9` · `1`
- Example: `opacity={0.5}` → `opacity: 0.5`

### `order`

The order CSS property sets the order to lay out an item in a flex or grid container. Items in a container are sorted by ascending order value and then by their source code order. Items not given an explicit order value are assigned the default value of 0.

- Writes: `order`
- Values: a number
- Example: `order={4}` → `order: 4`

### `outline`

The CSS outline-width property sets the thickness of an element's outline. An outline is a line that is drawn around an element, outside the border. A width alone is enough: the style comes with it, and `outlineStyle` — declared after this — is what changes it.

- Writes: `outline-width`, `outline-style`
- Values: a number
- Example: `outline={4}` → `outline-width: 4px; outline-style: solid`

### `outlineColor`

The outline-color CSS property sets the color of an element's outline.

- Writes: `outline-color`
- Values: 304 named values, anything else the types allow
- Example: `outlineColor="sky-500"` → `outline-color: var(--sky-500)`

### `outlineOffset`

The outline-offset CSS property sets the amount of space between an outline and the edge or border of an element.

- Writes: `outline-offset`
- Values: a number
- Example: `outlineOffset={4}` → `outline-offset: 4px`

### `outlineStyle`

The outline-style CSS property sets the style of an element's outline. An outline is a line that is drawn around an element, outside the border.

- Writes: `outline-style`
- Values: `solid` · `dashed` · `dotted` · `double` · `groove` · `ridge` · `inset` · `outset` · `none` · `hidden`
- Example: `outlineStyle="solid"` → `outline-style: solid`

### `overflow`

The overflow CSS shorthand property sets the desired behavior when content does not fit in the element's padding box (overflows) in the horizontal and/or vertical direction.

- Writes: `overflow`
- Values: `auto` · `hidden` · `scroll` · `visible`
- Example: `overflow="auto"` → `overflow: auto`

### `overflowX`

The overflow-x CSS property sets what shows when content overflows a block-level element's left and right edges. This may be nothing, a scroll bar, or the overflow content. This property may also be set by using the overflow shorthand property.

- Writes: `overflow-x`
- Values: `auto` · `hidden` · `scroll` · `visible`
- Example: `overflowX="auto"` → `overflow-x: auto`

### `overflowY`

The overflow-y CSS property sets what shows when content overflows a block-level element's top and bottom edges. This may be nothing, a scroll bar, or the overflow content. This property may also be set by using the overflow shorthand property.

- Writes: `overflow-y`
- Values: `auto` · `hidden` · `scroll` · `visible`
- Example: `overflowY="auto"` → `overflow-y: auto`

### `p`

The padding CSS shorthand property sets the padding area on all four sides of an element at once.

- Writes: `padding`
- Values: `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12`, a number, anything else the types allow
- Example: `p={4}` → `padding: 1rem`

### `paintOrder`

The paint-order CSS property sets what is painted first. `paintOrder="stroke"` puts the stroke behind the fill, which is how outlined SVG text stays legible.

- Writes: `paint-order`
- Values: `normal` · `fill` · `stroke` · `markers`
- Example: `paintOrder="normal"` → `paint-order: normal`

### `pb`

The padding-bottom CSS property sets the height of the padding area on the bottom of an element.

- Writes: `padding-bottom`
- Values: `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12`, a number, anything else the types allow
- Example: `pb={4}` → `padding-bottom: 1rem`

### `pe`

The padding-inline-end CSS property sets the padding on the side the text ends at: `pr` in a left-to-right writing mode, `pl` in a right-to-left one.

- Writes: `padding-inline-end`
- Values: `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12`, a number, anything else the types allow
- Example: `pe={4}` → `padding-inline-end: 1rem`

### `pl`

The padding-left CSS property sets the width of the padding area to the left of an element.

- Writes: `padding-left`
- Values: `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12`, a number, anything else the types allow
- Example: `pl={4}` → `padding-left: 1rem`

### `placeContent`

The place-content CSS shorthand sets `alignContent` and `justifyContent` at once, so one keyword places a grid’s tracks on both axes. It takes the overflow-safe alignments too, and they apply to both.

- Writes: `place-content`
- Values: `start` · `end` · `flex-start` · `flex-end` · `center` · `space-between` · `space-around` · `space-evenly` · `stretch` · `baseline` · `safe center` · `safe start` · `safe end` · `unsafe center` · `unsafe start` · `unsafe end`
- Example: `placeContent="start"` → `place-content: start`

### `placeItems`

The place-items CSS shorthand sets `align-items` and `justify-items` in one declaration — `placeItems="center"` is the whole of grid centring.

- Writes: `place-items`
- Values: `normal` · `start` · `end` · `center` · `stretch` · `baseline` · `self-start` · `self-end` · `safe center` · `safe start` · `safe end` · `unsafe center` · `unsafe start` · `unsafe end`
- Example: `placeItems="normal"` → `place-items: normal`

### `pointerEvents`

The pointer-events CSS property sets under what circumstances (if any) a particular graphic element can become the target of pointer events.

- Writes: `pointer-events`
- Values: `none` · `auto` · `all`
- Example: `pointerEvents="none"` → `pointer-events: none`

### `position`

The position CSS property sets how an element is positioned in a document. The top, right, bottom, and left properties determine the final location of positioned elements.

- Writes: `position`
- Values: `static` · `relative` · `absolute` · `fixed` · `sticky`
- Example: `position="absolute"` → `position: absolute`

### `positionAnchor`

Which anchor this element is positioned against, by the name `anchorName` gave it. Needs `position="absolute"` or `"fixed"` beside it — an anchored element is an absolutely positioned one whose containing block comes from the anchor. `auto` picks up the anchor an `anchor()` value names.

- Writes: `position-anchor`
- Values: `auto` · `none`, anything else the types allow
- Example: `positionAnchor="trigger"` → `position-anchor: --trigger`

### `positionArea`

Which cell of the 3x3 grid around the anchor to sit in, and the whole of what a side and an alignment used to take JS to work out. **Block axis first, inline axis second** — the order `borderRadiusStartStart` reads in — and the two keywords have to come from one family: `top left` and `block-start inline-start` are values, `top inline-start` is not. `center` and `span-all` join whichever family the other half names. Offset the layer from its anchor with a margin.

- Writes: `position-area`
- Values: whatever the types allow
- Example: `positionArea="block-end center"` → `position-area: block-end center`

### `positionTryFallbacks`

Where to put the layer when it does not fit: `flip-block` tries the opposite side of the block axis, `flip-inline` the inline one, `flip-start` swaps the two axes, and space-separated flips are one position tried together. A comma-separated list is tried in order until one fits, which is the browser doing what a positioning library measures for. **A position has to fit on _both_ axes to be taken**, so an overflow the flips cannot fix disqualifies every candidate and the layer silently stays where it started. Measured in Chrome 152: with `positionArea="block-end center"` a layer wider than its anchor overflows the centre column, and `flip-block` then does nothing at all. Span the axis being kept — `"block-end span-all"` — and it flips.

- Writes: `position-try-fallbacks`
- Values: whatever the types allow
- Example: `positionTryFallbacks="flip-block"` → `position-try-fallbacks: flip-block`

### `positionTryOrder`

How to choose among the fallbacks rather than taking the first that fits: `most-width`, `most-height`, `most-block-size` and `most-inline-size` each pick the position that leaves the layer most room on that axis. `normal` is first-fit.

- Writes: `position-try-order`
- Values: `normal` · `most-width` · `most-height` · `most-block-size` · `most-inline-size`
- Example: `positionTryOrder="normal"` → `position-try-order: normal`

### `positionVisibility`

When to hide the layer instead of positioning it: `anchors-visible` hides it once the anchor is scrolled out of sight, `no-overflow` once the layer itself would overflow, and the two combine. `always` is the default and shows it wherever it lands. **It hides at paint time**, so the layer keeps its box and its computed `visibility` still reads `visible` — `checkVisibility()` agrees. Both were measured in Chrome 152 by sampling the pixel: the only thing that changes is that nothing is painted and nothing hit-tests. A test asserting this needs a screenshot, not a computed style.

- Writes: `position-visibility`
- Values: `always` · `anchors-visible` · `no-overflow` · `anchors-visible no-overflow`
- Example: `positionVisibility="always"` → `position-visibility: always`

### `pr`

The padding-right CSS property sets the width of the padding area on the right of an element.

- Writes: `padding-right`
- Values: `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12`, a number, anything else the types allow
- Example: `pr={4}` → `padding-right: 1rem`

### `ps`

The padding-inline-start CSS property sets the padding on the side the text starts from: `pl` in a left-to-right writing mode, `pr` in a right-to-left one.

- Writes: `padding-inline-start`
- Values: `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12`, a number, anything else the types allow
- Example: `ps={4}` → `padding-inline-start: 1rem`

### `pt`

The padding-top CSS property sets the height of the padding area on the top of an element.

- Writes: `padding-top`
- Values: `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12`, a number, anything else the types allow
- Example: `pt={4}` → `padding-top: 1rem`

### `px`

The padding-inline CSS shorthand property defines the logical inline start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation.

- Writes: `padding-inline`
- Values: `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12`, a number, anything else the types allow
- Example: `px={4}` → `padding-inline: 1rem`

### `py`

The padding-block CSS shorthand property defines the logical block start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation.

- Writes: `padding-block`
- Values: `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12`, a number, anything else the types allow
- Example: `py={4}` → `padding-block: 1rem`

### `r`

The r CSS property sets the radius of a `<circle>`, in user units. Transition it and the circle grows; a percentage is of the viewport's diagonal.

- Writes: `r`
- Values: a number, anything else the types allow
- Example: `r={4}` → `r: 4`

### `resize`

The resize CSS property sets whether an element is resizable, and if so, in which directions.

- Writes: `resize`
- Values: `none` · `both` · `horizontal` · `vertical` · `block` · `inline`
- Example: `resize="none"` → `resize: none`

### `right`

The right CSS property participates in specifying the horizontal position of a positioned element. This inset property has no effect on non-positioned elements. It also takes `anchor()`, an inset measured to one of the anchor's own edges.

- Writes: `right`
- Values: 55 named values, a number, anything else the types allow
- Example: `right={4}` → `right: 1rem`

### `ring`

A hard-edged shadow outside the border box, in px — `ring={2}`. Unlike `outline` it takes part in the shadow stack, so a ring and an elevation coexist; it follows `borderRadius` and costs no layout.

- Writes: `--boxRing`, `box-shadow`
- Values: a number
- Example: `ring={4}` → `--boxRing: 0 0 0 4px var(--boxRingColor, currentColor); box-shadow: var(--boxInsetShadow, 0 0 #0000),var(--boxInsetRing, 0 0 #0000),var(--boxRing, 0 0 #0000),var(--boxShadow, 0 0 #0000)`

### `ringColor`

What colour `ring` draws in. `currentColor` otherwise.

- Writes: `--boxRingColor`
- Values: 304 named values, anything else the types allow
- Example: `ringColor="sky-500"` → `--boxRingColor: var(--sky-500)`

### `rotate`

The rotate CSS property allows you to specify rotation transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform property.

- Writes: `rotate`
- Values: `0` · `45` · `90` · `135` · `180` · `270` · `360` · `-45` · `-90` · `-135` · `-180` · `-270`
- Example: `rotate={45}` → `rotate: 45deg`

### `rowGap`

The row-gap CSS property sets the size of the gap (gutter) between an element's rows.

- Writes: `row-gap`
- Values: a number, anything else the types allow
- Example: `rowGap={4}` → `row-gap: 1rem`

### `rx`

The horizontal radius of an `<ellipse>` or corner radius of a `<rect>` — `borderRadius` for SVG, in user units rather than on the spacing scale. `auto` takes the radius from `ry`.

- Writes: `rx`
- Values: `auto`, a number, anything else the types allow
- Example: `rx={4}` → `rx: 4`

### `ry`

The ry CSS property sets the vertical radius of an `<ellipse>` or the vertical corner radius of a `<rect>`, in user units. `auto` takes it from `rx`.

- Writes: `ry`
- Values: `auto`, a number, anything else the types allow
- Example: `ry={4}` → `ry: 4`

### `saturate`

How saturated the element is rendered, as a percentage — over `100` to push the colour, under to drain it.

- Writes: `--boxSaturate`, `filter`
- Values: `none`, a number
- Example: `saturate={180}` → `--boxSaturate: saturate(180%); filter: var(--boxBlur,) var(--boxBrightness,) var(--boxContrast,) var(--boxGrayscale,) var(--boxHueRotate,) var(--boxInvert,) var(--boxSaturate,) var(--boxSepia,) var(--boxDropShadow,)`

### `scale`

The scale CSS property lets you specify scale transforms individually and independently of the transform property: `scale={1.05}` is 105% in both axes. Declared after `flip`, which writes the same property — use one or the other, not both.

- Writes: `scale`
- Values: a number
- Example: `scale={4}` → `scale: 4`

### `scrollbarColor`

The scrollbar-color CSS property sets the color of the scrollbar thumb and track. The value pair is [thumbColor, trackColor].

- Writes: `scrollbar-color`
- Values: `currentColor,transparent,green,red,blue,gray,black,white,vi,slate-50,slate-100,slate-200,slate-300,slate-400,slate-500,slate-600,slate-700,slate-800,slate-900,slate-950,gray-50,gray-100,gray-200,gray-300,gray-400,gray-500,gray-600,gray-700,gray-800,gray-900,gray-950,zinc-50,zinc-100,zinc-200,zinc-300,zinc-400,zinc-500,zinc-600,zinc-700,zinc-800,zinc-900,zinc-950,neutral-50,neutral-100,neutral-200,neutral-300,neutral-400,neutral-500,neutral-600,neutral-700,neutral-800,neutral-900,neutral-950,stone-50,stone-100,stone-200,stone-300,stone-400,stone-500,stone-600,stone-700,stone-800,stone-900,stone-950,mauve-50,mauve-100,mauve-200,mauve-300,mauve-400,mauve-500,mauve-600,mauve-700,mauve-800,mauve-900,mauve-950,mist-50,mist-100,mist-200,mist-300,mist-400,mist-500,mist-600,mist-700,mist-800,mist-900,mist-950,olive-50,olive-100,olive-200,olive-300,olive-400,olive-500,olive-600,olive-700,olive-800,olive-900,olive-950,taupe-50,taupe-100,taupe-200,taupe-300,taupe-400,taupe-500,taupe-600,taupe-700,taupe-800,taupe-900,taupe-950,red-50,red-100,red-200,red-300,red-400,red-500,red-600,red-700,red-800,red-900,red-950,orange-50,orange-100,orange-200,orange-300,orange-400,orange-500,orange-600,orange-700,orange-800,orange-900,orange-950,amber-50,amber-100,amber-200,amber-300,amber-400,amber-500,amber-600,amber-700,amber-800,amber-900,amber-950,yellow-50,yellow-100,yellow-200,yellow-300,yellow-400,yellow-500,yellow-600,yellow-700,yellow-800,yellow-900,yellow-950,lime-50,lime-100,lime-200,lime-300,lime-400,lime-500,lime-600,lime-700,lime-800,lime-900,lime-950,green-50,green-100,green-200,green-300,green-400,green-500,green-600,green-700,green-800,green-900,green-950,emerald-50,emerald-100,emerald-200,emerald-300,emerald-400,emerald-500,emerald-600,emerald-700,emerald-800,emerald-900,emerald-950,teal-50,teal-100,teal-200,teal-300,teal-400,teal-500,teal-600,teal-700,teal-800,teal-900,teal-950,cyan-50,cyan-100,cyan-200,cyan-300,cyan-400,cyan-500,cyan-600,cyan-700,cyan-800,cyan-900,cyan-950,sky-50,sky-100,sky-200,sky-300,sky-400,sky-500,sky-600,sky-700,sky-800,sky-900,sky-950,blue-50,blue-100,blue-200,blue-300,blue-400,blue-500,blue-600,blue-700,blue-800,blue-900,blue-950,indigo-50,indigo-100,indigo-200,indigo-300,indigo-400,indigo-500,indigo-600,indigo-700,indigo-800,indigo-900,indigo-950,violet-50,violet-100,violet-200,violet-300,violet-400,violet-500,violet-600,violet-700,violet-800,violet-900,violet-950,purple-50,purple-100,purple-200,purple-300,purple-400,purple-500,purple-600,purple-700,purple-800,purple-900,purple-950,fuchsia-50,fuchsia-100,fuchsia-200,fuchsia-300,fuchsia-400,fuchsia-500,fuchsia-600,fuchsia-700,fuchsia-800,fuchsia-900,fuchsia-950,pink-50,pink-100,pink-200,pink-300,pink-400,pink-500,pink-600,pink-700,pink-800,pink-900,pink-950,rose-50,rose-100,rose-200,rose-300,rose-400,rose-500,rose-600,rose-700,rose-800,rose-900,rose-950,none`
- Example: `scrollbarColor={['gray-400', 'gray-100']}` → `scrollbar-color: var(--gray-400) var(--gray-100)`

### `scrollbarGutter`

The scrollbar-gutter CSS property reserves the space a scrollbar would take before there is one, so a panel does not shift sideways the moment its content overflows. `stable` reserves the end edge, `stable both-edges` both — which is what keeps centred content centred.

- Writes: `scrollbar-gutter`
- Values: `auto` · `stable` · `stable both-edges`
- Example: `scrollbarGutter="auto"` → `scrollbar-gutter: auto`

### `scrollbarWidth`

How wide a scrollbar the browser draws. `none` hides it without taking the scrolling away, so a wheel and the keys still reach the content — unlike `overflow: hidden`, which stops both.

- Writes: `scrollbar-width`
- Values: `auto` · `thin` · `none`
- Example: `scrollbarWidth="auto"` → `scrollbar-width: auto`

### `scrollTimeline`

Declares a named scroll timeline on this scroller — the shorthand, `<name>` or `<name> <axis>`, and the one to reach for: the longhands exist to override half of it. The name is written with or without the `--`, the way an anchor's is. Anything inside this element can then name it on `animationTimeline`; anything outside needs a `timelineScope` on a common ancestor.

- Writes: `scroll-timeline`
- Values: `none`, anything else the types allow
- Example: `scrollTimeline="page block"` → `scroll-timeline: --page block`

### `scrollTimelineAxis`

Which axis of this scroller the named timeline follows. `block`/`inline` are the writing mode's, so a timeline declared on the block axis is the vertical one in English and still correct in Japanese.

- Writes: `scroll-timeline-axis`
- Values: `block` · `inline` · `x` · `y`
- Example: `scrollTimelineAxis="block"` → `scroll-timeline-axis: block`

### `scrollTimelineName`

The name half of `scrollTimeline`, on its own.

- Writes: `scroll-timeline-name`
- Values: `none`, anything else the types allow
- Example: `scrollTimelineName="page"` → `scroll-timeline-name: --page`

### `sepia`

How far the element is pushed towards sepia, as a percentage.

- Writes: `--boxSepia`, `filter`
- Values: `none`, a number
- Example: `sepia={100}` → `--boxSepia: sepia(100%); filter: var(--boxBlur,) var(--boxBrightness,) var(--boxContrast,) var(--boxGrayscale,) var(--boxHueRotate,) var(--boxInvert,) var(--boxSaturate,) var(--boxSepia,) var(--boxDropShadow,)`

### `shadow`

The elevation of the box: `xxs` through `xxl` on the elevation scale, or one of the three original presets (`small`, `medium`, `large`, which carry their own colour). `shadowColor` recolours the scale, and the shadow stacks with `ring`, `insetRing` and `insetShadow` rather than replacing them.

- Writes: `--boxShadow`, `box-shadow`
- Values: `xxs` · `xs` · `sm` · `md` · `lg` · `xl` · `xxl` · `none` · `small` · `medium` · `large`
- Example: `shadow="xxs"` → `--boxShadow: 0 1px var(--boxShadowColor, rgb(0 0 0 / .05)); box-shadow: var(--boxInsetShadow, 0 0 #0000),var(--boxInsetRing, 0 0 #0000),var(--boxRing, 0 0 #0000),var(--boxShadow, 0 0 #0000)`

### `shadowColor`

What colour `shadow` draws in — the scale's own translucent black otherwise. Shows nothing on its own.

- Writes: `--boxShadowColor`
- Values: 304 named values, anything else the types allow
- Example: `shadowColor="sky-500"` → `--boxShadowColor: var(--sky-500)`

### `shapeRendering`

The shape-rendering CSS property tells the renderer what to trade away when drawing an SVG shape — `crispEdges` turns off anti-aliasing, which is what pixel-exact gridlines want.

- Writes: `shape-rendering`
- Values: `auto` · `optimizeSpeed` · `crispEdges` · `geometricPrecision`
- Example: `shapeRendering="auto"` → `shape-rendering: auto`

### `stroke`

The stroke CSS property defines the color or SVG paint server used to draw an element's stroke. Takes a colour token, `stroke="url(#sky)"` for a paint server the document defines, or `stroke="var(--chart-1)"` for a variable somebody else declared.

- Writes: `stroke`
- Values: 304 named values, anything else the types allow
- Example: `stroke="sky-500"` → `stroke: var(--sky-500)`

### `strokeDasharray`

The stroke-dasharray CSS property turns an SVG stroke into dashes: a single number is the dash and the gap alike, a string is the full pattern (`'8 4'`). Lengths are user units.

- Writes: `stroke-dasharray`
- Values: a number, anything else the types allow
- Example: `strokeDasharray={4}` → `stroke-dasharray: 4`

### `strokeDashoffset`

The stroke-dashoffset CSS property moves the dash pattern along the path — the property a path-drawing animation transitions. A percentage is of the path's own length.

- Writes: `stroke-dashoffset`
- Values: a number, anything else the types allow
- Example: `strokeDashoffset={4}` → `stroke-dashoffset: 4`

### `strokeLinecap`

The stroke-linecap CSS property defines the shape drawn at the two ends of an open SVG subpath.

- Writes: `stroke-linecap`
- Values: `butt` · `round` · `square`
- Example: `strokeLinecap="butt"` → `stroke-linecap: butt`

### `strokeLinejoin`

The stroke-linejoin CSS property defines the shape drawn where two segments of an SVG path meet.

- Writes: `stroke-linejoin`
- Values: `miter` · `round` · `bevel`
- Example: `strokeLinejoin="miter"` → `stroke-linejoin: miter`

### `strokeMiterlimit`

The stroke-miterlimit CSS property sets how far a miter join may extend before it is cut back to a bevel. Values below 1 are invalid.

- Writes: `stroke-miterlimit`
- Values: a number
- Example: `strokeMiterlimit={4}` → `stroke-miterlimit: 4`

### `strokeOpacity`

The stroke-opacity CSS property defines the opacity of the paint applied to an SVG element's stroke.

- Writes: `stroke-opacity`
- Values: `0` · `0.1` · `0.2` · `0.3` · `0.4` · `0.5` · `0.6` · `0.7` · `0.8` · `0.9` · `1`
- Example: `strokeOpacity={0.5}` → `stroke-opacity: 0.5`

### `strokeWidth`

The stroke-width CSS property sets the width of an SVG element's stroke, in user units — `strokeWidth={2}` is `stroke-width: 2`, no divider.

- Writes: `stroke-width`
- Values: a number
- Example: `strokeWidth={4}` → `stroke-width: 4`

### `tableLayout`

`fixed` sizes a table from its own width and its first row rather than from every cell in it, so one long cell cannot widen the column it sits in — and the table lays out in one pass instead of after measuring all of it.

- Writes: `table-layout`
- Values: `auto` · `fixed`
- Example: `tableLayout="fixed"` → `table-layout: fixed`

### `textAlign`

The text-align CSS property sets the horizontal alignment of the inline-level content inside a block element or table-cell box. `start`/`end` follow the text direction where `left`/`right` do not.

- Writes: `text-align`
- Values: `left` · `right` · `start` · `end` · `center` · `justify`
- Example: `textAlign="left"` → `text-align: left`

### `textAnchor`

Which part of SVG text sits on its `x`: `middle` centres an axis label under a tick. Inherited, so a value on the `<svg>` is the default for every label in it.

- Writes: `text-anchor`
- Values: `start` · `middle` · `end`
- Example: `textAnchor="start"` → `text-anchor: start`

### `textDecoration`

The text-decoration shorthand CSS property sets the appearance of decorative lines on text. It is a shorthand for text-decoration-line, text-decoration-color, text-decoration-style, and the newer text-decoration-thickness property.

- Writes: `text-decoration`
- Values: `none` · `underline` · `overline` · `line-through`
- Example: `textDecoration="none"` → `text-decoration: none`

### `textOverflow`

The text-overflow CSS property sets how hidden overflow content is signaled to users. It can be clipped, display an ellipsis ('…'), or display a custom string.

- Writes: `text-overflow`
- Values: `clip` · `ellipsis`
- Example: `textOverflow="clip"` → `text-overflow: clip`

### `textShadow`

A shadow behind the text rather than the box: `xxs` through `lg`, recoloured by `textShadowColor`.

- Writes: `text-shadow`
- Values: `xxs` · `xs` · `sm` · `md` · `lg` · `none`
- Example: `textShadow="xxs"` → `text-shadow: 0px 1px 0px var(--boxTextShadowColor, rgb(0 0 0 / .15))`

### `textShadowColor`

What colour `textShadow` draws in. Shows nothing on its own.

- Writes: `--boxTextShadowColor`
- Values: 304 named values, anything else the types allow
- Example: `textShadowColor="sky-500"` → `--boxTextShadowColor: var(--sky-500)`

### `textTransform`

The text-transform CSS property specifies how to capitalize an element's text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. It also can help improve legibility for ruby.

- Writes: `text-transform`
- Values: `none` · `capitalize` · `lowercase` · `uppercase`
- Example: `textTransform="none"` → `text-transform: none`

### `textWrap`

The text-wrap CSS shorthand property controls how text inside an element is wrapped. The different values provide:

- Writes: `text-wrap`
- Values: `wrap` · `nowrap` · `balance` · `pretty`
- Example: `textWrap="wrap"` → `text-wrap: wrap`

### `timelineScope`

Makes the named timelines below this element reachable from anywhere else below it. A timeline is otherwise visible only to the declaring element's own descendants, so a progress bar that is not inside the article it tracks needs their common ancestor to declare the scope. Comma-separated.

- Writes: `timeline-scope`
- Values: `none`, anything else the types allow
- Example: `timelineScope="page"` → `timeline-scope: --page`

### `top`

The top CSS property sets the vertical position of a positioned element. This inset property has no effect on non-positioned elements. It also takes `anchor()`, an inset measured to one of the anchor's own edges.

- Writes: `top`
- Values: 55 named values, a number, anything else the types allow
- Example: `top={4}` → `top: 1rem`

### `transition`

What a transition applies to: `all` (what the base class already does), `none`, or one of the property groups — `colors`, `opacity`, `shadow`, `transform`, `size`, `filter`.

- Writes: `transition-property`
- Values: `none` · `all` · `colors` · `opacity` · `shadow` · `transform` · `size` · `filter`
- Example: `transition="colors"` → `transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke`

### `transitionBehavior`

Whether the properties that cannot be interpolated transition at all: `display`, `overlay`, `content-visibility`. `allow-discrete` flips them at the *end* of the transition instead of the start, which is what keeps an element in the DOM long enough to animate out of it.

- Writes: `transition-behavior`
- Values: `normal` · `allow-discrete`
- Example: `transitionBehavior="normal"` → `transition-behavior: normal`

### `transitionDelay`

The transition-delay CSS property specifies the duration to wait before starting a property's transition effect when its value changes. Milliseconds.

- Writes: `transition-delay`
- Values: a number
- Example: `transitionDelay={150}` → `transition-delay: 150ms`

### `transitionDuration`

How long a transition takes. Milliseconds, like every other time here — or a spring name, which is that spring's settling time in `--transitionTime` units, so a spring stops under reduced motion.

- Writes: `transition-duration`
- Values: `spring` · `spring-gentle` · `spring-bouncy` · `spring-snappy`, a number
- Example: `transitionDuration={200}` → `transition-duration: 200ms`

### `transitionTimingFunction`

How a transition gets from one value to the other: a keyword, one of the four sampled springs (`spring`, `spring-gentle`, `spring-bouncy`, `spring-snappy`), or a curve — `cubic-bezier()`, `steps()` and `linear()` are values. A spring's other half is `transitionDuration`, which takes the same four names.

- Writes: `transition-timing-function`
- Values: `linear` · `ease` · `ease-in` · `ease-in-out` · `ease-out` · `step-start` · `step-end` · `spring` · `spring-gentle` · `spring-bouncy` · `spring-snappy`, anything else the types allow
- Example: `transitionTimingFunction="linear"` → `transition-timing-function: linear`

### `translateX`

Moves an element horizontally on the 2D plane, on the ÷4 spacing scale, as a fraction of its own width (`'1/2'`) or as a percentage. Composes with `translateY`.

- Writes: `--boxTranslateX`, `translate`
- Values: 54 named values, a number, anything else the types allow
- Example: `translateX={4}` → `--boxTranslateX: 1rem; translate: var(--boxTranslateX, 0) var(--boxTranslateY, 0)`

### `translateY`

Moves an element vertically on the 2D plane, on the ÷4 spacing scale, as a fraction of its own height (`'1/2'`) or as a percentage. Composes with `translateX`.

- Writes: `--boxTranslateY`, `translate`
- Values: 54 named values, a number, anything else the types allow
- Example: `translateY={4}` → `--boxTranslateY: 1rem; translate: var(--boxTranslateX, 0) var(--boxTranslateY, 0)`

### `userSelect`

The user-select CSS property controls whether the user can select text. This doesn't have any effect on content loaded as part of a browser's user interface (its chrome), except in textboxes.

- Writes: `user-select`
- Values: `none` · `auto` · `text` · `all`
- Example: `userSelect="none"` → `user-select: none`

### `vars`

CSS custom properties on this element, inherited by everything inside it: `vars={{ 'color-x': 'sky-500' }}` emits `--color-x: var(--sky-500)`. The one prop whose declaration *names* come from its value, which is what makes it the answer for markup this library does not render — a Recharts `<Line>`, a third-party widget. A colour token becomes the variable behind it, anything else is written out as it stands.

- Writes: `--color-revenue`
- Values: whatever the types allow
- Example: `vars={{ 'color-revenue': 'sky-500' }}` → `--color-revenue: var(--sky-500)`

### `vectorEffect`

How an SVG element's stroke reacts to the transforms above it: `non-scaling-stroke` keeps a hairline one pixel wide at any scale. Not inherited, so its rule targets the element *and* its descendants — the only way the prop can mean anything on an `<svg>`.

- Writes: `vector-effect`
- Values: `none` · `non-scaling-stroke`
- Example: `vectorEffect="none"` → `vector-effect: none`

### `viewTimeline`

Declares a named view timeline on this element — its own progress across the scrollport, rather than the scroller's progress through its content. Same shorthand shape as `scrollTimeline`, and the same rule about who can see the name.

- Writes: `view-timeline`
- Values: `none`, anything else the types allow
- Example: `viewTimeline="card block"` → `view-timeline: --card block`

### `viewTimelineAxis`

Which axis this element's pass across the scrollport is measured on.

- Writes: `view-timeline-axis`
- Values: `block` · `inline` · `x` · `y`
- Example: `viewTimelineAxis="block"` → `view-timeline-axis: block`

### `viewTimelineInset`

Shrinks the scrollport the timeline measures against, so the pass starts and ends somewhere other than the viewport edges: one value for both ends, two for the start and the end. A positive inset moves the edge inwards, which is what makes an element count as "in view" before it really is.

- Writes: `view-timeline-inset`
- Values: whatever the types allow
- Example: `viewTimelineInset="20%"` → `view-timeline-inset: 20%`

### `viewTimelineName`

The name half of `viewTimeline`, on its own.

- Writes: `view-timeline-name`
- Values: `none`, anything else the types allow
- Example: `viewTimelineName="card"` → `view-timeline-name: --card`

### `viewTransitionClass`

A class shared by several named elements, so one rule styles the lot of them: `::view-transition-group(.card)` reaches every element carrying `viewTransitionClass="card"`. Space separated for more than one.

- Writes: `view-transition-class`
- Values: `none`, anything else the types allow
- Example: `viewTransitionClass="card"` → `view-transition-class: card`

### `viewTransitionName`

Names this element for a view transition, which is what makes the browser animate it from where it was to where it is rather than cross-fading the whole page over it. A name has to be **unique in the document while the transition runs** — two elements sharing one is how a transition silently does nothing — so a list wants a name per item, and that is a rule per item this library would never free: write those with `props={{ style: { viewTransitionName: id } }}`, the exception `useAnchorPosition` already takes. This prop is for the handful of names a layout has (`header`, `main`, `sidebar`).

- Writes: `view-transition-name`
- Values: `none` · `auto` · `match-element`, anything else the types allow
- Example: `viewTransitionName="header"` → `view-transition-name: header`

### `visibility`

The visibility CSS property shows or hides an element without changing the layout of a document. The property can also hide rows or columns in a <table>.

- Writes: `visibility`
- Values: `visible` · `hidden` · `collapse`
- Example: `visibility="visible"` → `visibility: visible`

### `whiteSpace`

The white-space CSS property sets how white space inside an element is handled.

- Writes: `white-space`
- Values: `break-spaces` · `normal` · `nowrap` · `pre` · `pre-line` · `pre-wrap`
- Example: `whiteSpace="break-spaces"` → `white-space: break-spaces`

### `width`

The width CSS property sets an element's width. By default, it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area. It also takes `anchor-size()`, a length read off the anchor a floating layer is placed against.

- Writes: `width`
- Values: `fit` · `fit-screen` · `1/1` · `1/2` · `1/3` · `2/3` · `1/4` · `2/4` · `3/4` · `1/5` · `2/5` · `3/5` · `4/5` · `1/6` · `2/6` · `3/6` · `4/6` · `5/6` · `1/12` · `2/12` · `3/12` · `4/12` · `5/12` · `6/12` · `7/12` · `8/12` · `9/12` · `10/12` · `11/12` · `auto` · `fit-content` · `max-content` · `min-content`, a number, anything else the types allow
- Example: `width={4}` → `width: 1rem`

### `willChange`

The will-change CSS property warns the browser that a property is about to change, so it can promote the element first instead of mid-animation. A hint with a real cost — a promoted layer holds memory and can force text off subpixel rendering — so it belongs on the few elements that animate, not on a list.

- Writes: `will-change`
- Values: `auto` · `scroll-position` · `contents` · `transform` · `opacity` · `filter`
- Example: `willChange="transform"` → `will-change: transform`

### `x`

Positions a `<rect>`, `<image>`, `<use>`, `<foreignObject>` or nested `<svg>` horizontally, in user units. Not `<text>`, whose `x` takes a list of positions and stays an attribute — pass it in `props`.

- Writes: `x`
- Values: a number, anything else the types allow
- Example: `x={4}` → `x: 4`

### `y`

The y CSS property positions a `<rect>`, `<image>`, `<use>`, `<foreignObject>` or a nested `<svg>` vertically, in user units. Not for `<text>` — see `x`.

- Writes: `y`
- Values: a number, anything else the types allow
- Example: `y={4}` → `y: 4`

### `zIndex`

The z-index CSS property sets the z-order of a positioned element and its descendants or flex and grid items. Overlapping elements with a larger z-index cover those with a smaller one.

- Writes: `z-index`
- Values: `1` · `2` · `3` · `4` · `5` · `10` · `11` · `12` · `13` · `14` · `15` · `100` · `101` · `102` · `103` · `104` · `105` · `1000` · `1001` · `1002` · `1003` · `1004` · `1005`
- Example: `zIndex={1}` → `z-index: 1`
