← All foundations
Spacing · card 1 of 3

Gutters, rhythm and control sizing

CODECAVE has no single spacing unit exposed as a token. What it has instead is a small set of fixed, named measurements — container gutters, asymmetric section padding, bottom-heavy card padding, and two control heights. Those are reproduced here at true scale.

Container and gutters

.page-container — centred, max-width: 1280px. The gutter steps up twice. Note the non-standard sm breakpoint at 457px, which is a real value from the production @theme block, not a typo for 456 or 480.

<768px
--gutter-base · 8px
≥768px
--gutter-md · 16px
≥1280px
--gutter-xl · 32px
TokenValueNote
--max-width-desktop1280pxcontent column ceiling
--breakpoint-sm457pxnon-standard; from production @theme

Section rhythm — asymmetric on purpose

200px top, 120px bottom. Sections are front-loaded so a heading gets air above it while consecutive panels stay close enough to read as a stack. Shown here at one-quarter scale; the numbers are the real ones.

--section-padding-top · 200px (shown at 25%)

Something for everyone whatever stage you are at

--section-padding-bottom · 120px (shown at 25%)

Card padding — heavier at the bottom

--card-padding: 32px 32px 48px. The extra 16px at the bottom exists because a card almost always seats a footer action. Cards without an action keep the same padding so a grid stays even.

32 / 32 / 48

HubSpot

Aggregate data from all your Tools. The bottom 48px seats this action without needing a margin on the button itself.

Learn more

Same padding, no action

Keeping 48px here means an actionless card still aligns with its neighbours in a grid. Do not tighten it to 32px.

Control sizing

Two heights only. Both are measured from live controls, and 44px already meets the minimum touch target — no separate mobile sizing is needed.

--control-height · 44px every button and pill · padding 4px 24px · 16px bold label Learn more
--input-height · 64px floating-label text input · padding 28px 12px 12px · 8px radius