Typography
The type scale, font families, line heights, and weight tokens used across the storefront.
Font Families
Two semantic font slots drive the design system: PRIMARY (Inter) for titles, headings, and UI controls; SECONDARY (Space Grotesk) for body text, descriptions, and paragraphs. Both are loaded self-hosted at build via next/font/google (zero CDN, display:swap, no FOUT). To swap a font globally, change the CSS var in packages/design-system/globals.css. JetBrains Mono is available via font-text-code for technical content (code chips, tabular numerics) but is not a brand slot.
Primary: Inter (titles)
The quick brown fox
Jumped over the lazy dog.
Secondary: Space Grotesk (body)
The quick brown fox
Jumped over the lazy dog.
Loading
Fonts are bundled at build time by Next.js — no Google Fonts CDN request, GDPR-clean. If the build environment lacks network access, fonts silently fall back to the next system family in each token chain.
Font Scale
ep-xsExtra Small — The quick brown fox
ep-smSmall — The quick brown fox
ep-baseBase — The quick brown fox
ep-lgLarge — The quick brown fox
ep-xlExtra Large — The quick brown fox
ep-2xl2XL Heading — The quick brown fox
ep-3xl3XL Heading — The quick brown fox
ep-4xl4XL Heading — The quick brown fox
Font Weights
These are Tailwind's standard font-weight utilities — the design system does not register custom weights. Heading policy (ADR-030, Q3): the Heading atom defaults to font-bold (700) for h1–h4 and font-semibold (600) for h5–h6; hero display moments go font-extrabold (800).
font-400Regular — ePassLive
font-500Medium — ePassLive
font-600Semibold — ePassLive
font-700Bold — ePassLive
font-800Extra Bold — ePassLive
Line Heights
These are Tailwind's default line-height utilities. The design system does not extend them — use these standard values for consistency.
leading-none1 — The quick brown fox
1leading-tight1.25 — The quick brown fox
1.25leading-snug1.375 — The quick brown fox
1.375leading-normal1.5 — The quick brown fox
1.5leading-relaxed1.625 — The quick brown fox
1.625leading-loose2 — The quick brown fox
2Letter Spacing
These are Tailwind's standard letter-spacing utilities — the design system does not register custom tracking. Convention (ADR-030 §C): uppercase micro-labels use tracking-wider (0.05em) so small caps keep their apertures open; large headings use tracking-tight.
tracking-tighter-0.05em — The quick brown fox
-0.05emtracking-tight-0.025em — The quick brown fox
-0.025emtracking-normal0em — The quick brown fox
0emtracking-wide0.025em — The quick brown fox
0.025emtracking-wider0.05em — The quick brown fox
0.05emSlot Usage Roles
ADR-030 + addendum assign each text surface a role. The slot names describe the role, not the font — swapping a family is a one-CSS-var change with zero markup edits.
PRIMARYTitles & headings (h1–h6, display)InterSECONDARYBody & paragraphs (descriptions, prose ≥14px)Space GroteskPRIMARY + tabular-numsData Anchor — prices, dates, quantitiesInterCODECode — codes, IDs, OTP, promo codesJetBrains MonoPRIMARYMicro-copy — captions, overlines, tooltips (<14px)InterData Anchor example
Inter + tabular-nums: digits are fixed-width, columns stay aligned when amounts change — the boarding-pass aesthetic.
Type Ramp
ePassLive — Live Events, Real Tickets
DisplayHeading — .text-ep-4xl font-bold tracking-tight leading-tightePassLive — Live Events, Real Tickets
PageTitle — .text-ep-3xl font-bold leading-tightePassLive — Live Events, Real Tickets
SectionHeading — .text-ep-2xl font-boldePassLive — Live Events, Real Tickets
SubsectionHeading — .text-ep-xl font-boldePassLive — Live Events, Real Tickets
BodyEmphasis — .text-ep-base font-semiboldePassLive — Live Events, Real Tickets
BodyDefault — .text-ep-baseePassLive — Live Events, Real Tickets
BodySmall — .text-ep-smePassLive — Live Events, Real Tickets
Overline / Label — .text-ep-xs uppercase tracking-wider font-semiboldePassLive — Live Events, Real Tickets
DataAnchor — .font-text-primary tabular-nums text-ep-lg font-bold