Colour tokens
Semantic tokens defined in src/styles.css under :root and exposed to Tailwind via @theme inline. Reference them as bg-{token}, text-{token}, border-{token}.
Typography
Display: Inter (400–900) with OpenType features ss01 and cv11. Mono: JetBrains Mono. Loaded via Google Fonts in src/routes/__root.tsx.
Spacing & radii
A standard 4px Tailwind rhythm. Layouts breathe at 24–32px between blocks. Radii are tight — most surfaces use rounded-sm (0px) or rounded (4px) for a precise, editorial feel.
Spacing scale
Radii
Borders & dividers
1px hairlines at hsl(210 10% 12% / 0.12). The base layer applies border-color globally so every Tailwind border utility uses the token automatically.
Motion
One reusable utility: .animate-reveal — a 600ms ease-out fade & translate (10px) using cubic-bezier(0.16, 1, 0.3, 1). Used on grid cards as they enter the viewport.
Containers & grids
The site uses no fixed max-width container. Pages flow edge-to-edge with consistent horizontal padding (px-4 on mobile, px-6 from sm:). Vertical rhythm is 24–32px between blocks; section breaks sit at py-6 / py-8.
Page shell
<div className="min-h-screen pb-24">
<Nav />
<header className="px-4 sm:px-6 py-6 sm:py-8 border-b border-border">
{/* heading + controls */}
</header>
<main className="p-6">
{/* content */}
</main>
</div>Asymmetric grid
Cards live on a 2 / 4 / 6 column grid with gap-6 and gridAutoFlow: dense. Every 11th cell is a 2×2 feature; cells 6 and 10 are wide 2×1 tiles.
Sticky nav
Nav is sticky with a backdrop blur and a 1px bottom border in the foreground colour. Background defaults to #F7F7F7 on #21081D ink, but accepts custom bg / fg props per page.
Component patterns
Building blocks reused across the site. Each example uses only the semantic tokens above — drop them into any page for an on-brand result.
Buttons
Cards
1px border, card surface, p-6, rounded-sm.