Skip to content
one small shipJoin the waitlist

Foundations

Colour

Three Tailwind families, each with a meaning: slate is space, amber is the moon, teal is the nebula. Nothing outside these three. Click a swatch to copy its hex.

Slate · Space

Amber · The moon

Teal · The nebula

  • Default ground is paper (amber-50); alternate light sections with paper-deep (slate-50).
  • Ink (slate-950) is the text and the dark bands. At most three ink bands per page.
  • Amber is the focal point: one amber thing per screen. Text on amber is ink, never white.
  • Teal is the second voice: illustration details, tags on ink, icons. It never fills a primary button, and never sits next to an amber focal point.
  • The teal-200 highlighter goes behind one short phrase per page.

Colour roles

Components use roles, never raw palette names or hex values. Each role points at one palette colour.

RolePaletteUse
paperamber-50Page background, default section ground
paper-deepslate-50Alternating light sections, docs screens, inline code
inkslate-950Text and headings; hero, proof bar and closing bands
ink-softslate-800Secondary text on light grounds
lineslate-300Card borders and dividers. Decorative only
accentamber-600Primary buttons, proof numbers, moon fills. One focal point per screen
accent-softamber-100Badges, tint fills, a single featured block
accent-inkslate-950Text on accent. Never white
staramber-100Text and the moon on ink
star-dimslate-300Secondary text and outlines on ink
highlightamber-600One badge or callout per view that must jump out
highlight-softteal-200Highlighter behind a short phrase, once per page
nebulateal-400Secondary accent on ink: illustration details, tags
nebula-deepteal-600Secondary accent on light grounds: icons, rules, large text

Contrast

WCAG 2 ratios, computed from the palette. 4.5:1 for text, 3:1 for large text, icons and control edges.

Aaslate-950 on amber-5019.5:1All text
Aaslate-800 on amber-5014.1:1All text
Aaslate-950 on slate-5019.3:1All text
Aaamber-100 on slate-95018.1:1All text
Aaslate-300 on slate-95013.6:1All text
Aaamber-600 on slate-9506.3:1All text
Aateal-400 on slate-95010.8:1All text
Aaslate-950 on amber-6006.3:1All text (button labels)
Aaslate-950 on teal-20016.0:1All text (highlighter)
Aateal-600 on amber-503.6:1Large text 24px+, icons, outlines
Aaamber-600 on amber-503.1:1Large text 24px+, fills, outlines
Aaslate-300 on amber-501.4:1Decoration only

Foundations

Typography

Two Google Fonts. Funnel Display does the talking; VT323 does the counting.

Funnel Display

Aa Bb 700

Medium 500

Light 300

Headings Bold 700. Body Light 300. Buttons, labels and any bold text Medium 500.

VT323

23.5K

SHIP IT · WEEK 3

Labels, numbers, dates, prices. Never paragraphs, never below 18px.

display-hero

Funnel Display Bold 700 · 72px / 1.02 · −0.025em

One person can run the whole ship.

display-page

Bold 700 · 60px / 1.05

Six weeks. Six ship logs. One live URL.

heading-section

Bold 700 · 36px / 1.25

Building got cheap. Shipping didn't.

heading-card

Bold 700 · 20px / 1.4

An invariants file

lead

Medium 500 · 20px / 1.5

We each built and launched a product alone, with AI as our crew.

body

Light 300 · 17px / 1.6

Every gotcha written down the day it bites, so neither you nor the AI repeats it.

button

Medium 500 · 16px / 1.5

Join the waitlist

eyebrow

VT323 · 20px · uppercase · 0.06em · 70%

Why most projects never leave the dock

stat

VT323 · 56px / 1

23.5K

meta

VT323 · 20px / 1.3

week 3 · 15 October 2026

Foundations

Spacing and radius

Sections breathe. Content stops at 1152px. Corners are soft but never pills.

space-28px · Icon to label; between chips
space-312px · Between paired buttons
space-416px · Form stack, list items
space-520px · Card grid gap; phone gutter
space-624px · Card padding
space-832px · Desktop gutter; step columns
space-1248px · Under a section heading
space-2080px · Section padding on phones
space-28112px · Section padding from 640px

radius-sm

4px · Badges, inline code

radius-control

12px · Buttons, inputs, chips. Never a pill

radius-card

16px · Cards, pricing, tiles