Utilities
elements man style/utilities Read as markdownAtomic, single-purpose helper classes for one-off adjustments: display, flex,
grid, spacing, color, borders, and more. This is utilities.css in
@layer utilities, the layer just below your app's overrides, so utilities beat
components but your own CSS still wins.
Utilities are axis-prefixed (.text-sm, .bg-soft, .gap-4) and never take
is-. They're hand-rolled from the token surface (no build step) and cover the
most-used properties. Spacing, sizing, and color utilities read the same tokens
as everything else, so they follow the theme and dark mode.
When to use utilities vs layout primitives
Reach for the layout primitives (.stack, .cluster, .row,
.page-shell) for structural composition. They encode the spacing contract and
keep markup readable. Reach for utilities for local, one-off tweaks: nudging a
gap, hiding something at a breakpoint, aligning a single element. If you find
yourself rebuilding a stack out of .flex .flex-col .gap-4, use .stack
instead.
Categories
-
Display:
.hidden,.block,.inline-block,.inline,.flex,.inline-flex,.grid,.inline-grid,.contents, plus.visually-hidden/.sr-onlyfor accessible-but-invisible content. -
Position:
.relative,.absolute,.fixed,.sticky,.static;.inset-0,.inset-x-0,.inset-y-0,.top-0/.right-0/.bottom-0/.left-0; z-index.z-0….z-50and named.z-overlay/.z-modal/.z-popover/.z-tooltip/.z-toast. -
Flex: direction, wrap,
.items-*,.justify-*,.flex-1/.flex-auto/.flex-none,.grow/.shrink, and.order-*. -
Grid:
.grid-cols-1…-6and-12,.col-span-*,.col-span-full. -
Gap:
.gap-*on the spacing scale, including half-steps (.gap-0-5,.gap-1-5,.gap-2-5). Full list:elements man style/reference/utilities. -
Padding / margin:
.p-*,.px-*,.py-*;.m-0,.m-auto,.mx-auto,.my-auto, and directional.mt-*/.mb-*. -
Sizing:
.w-full/.w-auto/.w-screen/.w-fit,.h-full/.h-screen/.h-dvh/.h-fit,.size-full,.min-w-0/.min-h-0/.min-h-screen/.min-h-dvh, and.max-w-*(the container widths plus.max-w-prose/-shell/-wide/-none/-full). -
Typography:
.text-2xs….text-8xl,.font-thin….font-black,.font-sans/.font-serif/.font-mono,.italic, case transforms,.tracked-*,.leading-*, text alignment,.tabular,.text-balance/.text-pretty,.underline/.no-underline. -
Text color, semantic:
.text-ink,.text-ink-soft,.text-ink-dim,.text-ink-faint,.text-ink-inverse,.text-accent,.text-accent-deep, and status.text-success/.text-warning/.text-danger/.text-info(these map to the readable--{status}-inktint). Plus.text-current,.text-white,.text-black. -
Background, semantic:
.bg,.bg-soft,.bg-muted,.bg-panel,.bg-canvas,.bg-inverse,.bg-accent/.bg-accent-soft, and the status fills.bg-success/.bg-warning/.bg-danger/.bg-info(and their-softvariants). The solid fills also set a readable foreground color. -
Border:
.border,.border-soft,.border-strong, directional.border-t/-b/-l/-r/-x/-y,.border-none,.border-2, and color overrides.border-accent/.border-danger/.border-success. -
Radius:
.rounded-*on the radius scale, plus.rounded-noneand.rounded-full. -
Shadow:
.shadow-*on the shadow scale, plus.shadow-noneand.shadow-inner. -
Opacity:
.opacity-0/-25/-50/-70/-75/-100. -
Cursor / select:
.cursor-*,.select-none/-text/-all/-auto,.pointer-events-none/-auto. -
Overflow:
.overflow-auto/-hidden/-visible/-scrolland the axis-specific.overflow-x-*/.overflow-y-*. -
Transitions:
.transition,.transition-colors/-shadow/-transform/-opacity,.transition-none.
Variants
Variants are prefixed onto a utility with a colon. The package ships a focused set (not every utility gets every variant, that would balloon the file), added as needed.
Hover, a handful of essentials: hover:bg-soft, hover:bg-muted,
hover:bg-panel, hover:text-ink, hover:text-accent, hover:underline,
hover:shadow-md, hover:shadow-lg.
Responsive: md: fires at 48rem and lg: at 64rem (min-width). The
responsive set covers display, flex direction, grid columns, a few type sizes,
and a couple of paddings, for example md:grid-cols-2, md:flex-row,
lg:grid-cols-4, md:text-5xl, md:hidden.
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">…</div>
<button class="hidden md:block">Menu</button>
Note the responsive breakpoints (48rem / 64rem) differ from where the form grid (40rem) and app sidebar (48rem) collapse. The package uses the breakpoint that suits each thing rather than one global value. See scale breakpoints.