Spacing

The scale of record is Tailwind's spacing scale — every utility (`p-N`, `gap-N`, `m-N`, `h-N`) is a multiple of one unit, `--spacing`. The Foundation sets that unit (currently Default, 4px at the 100% base), so one decision re-densifies the entire product. A stated pixel is a request for a step — no exact step means the nearest legal step, never an arbitrary value.
The scale — Tailwind steps × the 4px unit
StepSizeUtilityUse for
0.5
2pxp-0.5Hairline separation — icon-to-badge nudges, focus ring offsets
1
4pxp-1Tight pairs — icon to label, chip internals
1.5
6pxp-1.5Compact control interiors
2
8pxp-2Related items — control rows, chip groups, list gaps
3
12pxp-3Grouped content inside a component
4
16pxp-4Component padding — cards, panels, inputs' surroundings
6
24pxp-6Section separation inside a surface
8
32pxp-8Between distinct blocks on a page
10
40pxp-10Page-level breathing room
12
48pxp-12Major section breaks
16
64pxp-16The largest sanctioned gap

Intermediate Tailwind steps (5, 7, 9, 11, 14…) exist and are legal; the table shows the rhythm the product actually uses.

Worked example — every gap annotated

The same card twice. Left: as shipped. Right: the redline spec — tinted bands are the exact utility sizes, measured in the gutter like a Figma inspect.

Table

Drifting

Ships an undocumented density variant.

p-4

Table

Drifting
p-1

Ships an undocumented density variant.

p-4
p-4

Table

Drifting
gap-1

Title to badge — a tight pair, one unit of meaning.

gap-2

Between sibling buttons — related items.

The rule

A stated pixel is a request for a step. "16px padding" means p-4. "10px" has no step at the default unit — use p-2 or p-3, and say which you chose.

Arbitrary values (`p-[10px]`) break two things at once: the Figma sync (a value that isn't on the scale has nowhere to land) and the propagation rule (a literal px ignores the Foundation's unit and the scaling base). The utilities are the scale — styling essentially comes from Tailwind.