Spacing & layout
Tailwind’s 4px scale, a handful of container widths and one page gutter. Mobile first: most pages are read on a phone at a social.
Spacing scale
Tailwind’s default scale — one step is 4px. These are the steps pages actually use; stay on them and skip the in-betweens.
0.52pxBadge and chip vertical padding (py-0.5 ×101)14pxIcon-to-text in tight labels (gap-1 ×149)1.56pxIcon + text in chips and meta rows (gap-1.5 ×110)28pxThe default gap — inline groups, button contents (gap-2 ×324)312pxCard internals, list rows, form stacks (gap-3 ×197)416pxPage gutter (px-4 ×256), grids of cards (gap-4)624pxCard padding on larger surfaces, between blocks in a section832pxBetween groups inside a section1248pxSection padding on content pages (py-12 ×31)1664pxSection padding on landing pages (py-16 ×43)2080pxHero and big feature sections (py-20)Arbitrary values like p-[18px] mean the layout is fighting the scale. Round to the nearest step.
Containers
Every page section is a centred max-width box. Pick the width by content, not by screen.
max-w-xl576px · used 31×Forms, sign-in, single-column flowsmax-w-2xl672px · used 50×Reading pages, settings, narrow dashboardsmax-w-3xl768px · used 51×Articles, profile pages, long textmax-w-4xl896px · used 41×Content pages with a grid of cardsmax-w-5xl1024px · used 34×Landing sections, festival and city pages — the default wide pagemax-w-6xl1152px · used 19×Wide discovery gridsmax-w-7xl1280px · used 19×Full-width headers and footersThe most common page shell is max-w-5xl mx-auto px-4. Text-heavy pages use max-w-3xl or narrower so lines stay readable.
Page gutter and section rhythm
Gutter: px-4
16px on every screen size, on the container itself. Used 256 times — the most common padding in the app. Don’t widen it at sm:; the max-width already gives big screens room.
Sections: py-12 – py-20
py-16 for landing sections, py-12 on content pages, py-20 for heroes. Inside a section: title → content mt-6–mt-8, between cards gap-4.
dashed lines = container edge · red band = section padding
<section class="py-16">
<div class="max-w-5xl mx-auto px-4">
<div class="text-eyebrow uppercase tracking-[0.3em] font-bold text-secondary">The journey</div>
<h2 class="text-3xl font-display font-bold mt-1">Section title</h2>
<div class="mt-8 grid sm:grid-cols-2 md:grid-cols-3 gap-4">
<!-- cards -->
</div>
</div>
</section>Breakpoints
Tailwind defaults. Counts are prefix uses across pages and components.
base≥ 0—Design here first: a 375px phone. Single column.sm:≥ 640px426The workhorse. Two columns, bigger type, side-by-side buttons.md:≥ 768px85Three-column grids, table layouts.lg:≥ 1024px35Sidebars and persistent navigation.xl: / 2xl:≥ 1280px / 1536px3Almost never. Don’t design for them.Guidelines
Do — keep related things close and groups apart — gap-2 inside a group, gap-6 or more between groups.
Don't — space everything evenly; without rhythm nothing reads as a group.