Restrained. Tinted paper neutrals + one warm accent ≤10% surface.
| Token | OKLCH-equivalent | Hex | Usage |
|---|---|---|---|
paper |
warm cream | #f4f1ea |
Page background |
paper-50 |
softer cream | #faf8f3 |
Section alt-background, input fill |
ink |
warm near-black | #14110d |
Primary text, high-contrast surfaces |
ink-soft |
warm dark | #2a241d |
Body copy on paper |
muted |
warm graphite | #6f6960 |
Secondary text, captions |
rule |
pale warm taupe | #d9d2c4 |
Borders, hairlines, dividers |
accent |
burnt sienna | #b8423a |
Eyebrows, hovers, brand accent |
accent-soft |
terracotta wash | #d97a6c |
(defined, currently unused) |
No #000, no #fff. Every neutral tinted toward warm-paper. The accent is editorial print-pull-quote red, not a SaaS brand-blue.
Three families, three roles:
font-display: Fraunces (variable, axes: SOFT, WONK, opsz). Display headlines, wordmark, article titles. Editorial print-magazine feel.font-sans: Inter. Body copy, manifesto paragraphs, helper text.font-mono: JetBrains Mono. Captions, labels, metadata, smallcaps, tile sublabels, footer disclosure.
Scale (current Tailwind classes in use):
- Wordmark:
text-3xl - H1 manifesto:
text-5xl lg:text-6xlwithleading-[1.05] - H2 section:
text-3xlortext-4xl - H3 article-card:
text-lg - Body:
text-lg leading-relaxed(manifesto), defaulttext-base - Caption:
text-xsortext-[11px] - Microcaption:
text-[10px]
Smallcaps utility (.smallcaps) for eyebrows: font-variant-caps: all-small-caps; letter-spacing: 0.08em.
- Max width:
max-w-7xlfor landing sections,max-w-7xlfor article detail. - Horizontal padding:
px-6 lg:px-12 - Section vertical rhythm:
py-12,py-16,py-20— varies for cadence (manifesto and try-it usepy-20; showcase and visitor usepy-16). - Grid: 12-column on landing manifesto split (
lg:grid-cols-12with 7/5 or 8/4). - Bakeoff grid: 1 → 2 → 4 columns at sm/lg breakpoints.
- Card grid: 1 → 2 → 3 columns at md/lg.
- Wordmark:
Lede.with accent dot. - Eyebrow:
smallcaps text-xs text-accentabove section heads. - ArticleCard: aspect-video original image + overlay on hover, then card body with title + subline.
- BakeoffGrid: two-section layout. (1) Cloud row: 4-tile grid (original + 3 generations) labeled "On the bench · cloud". (2) Optional Local row: 2-tile grid (Flux Krea dev, FLUX.2 Klein 9B) labeled "On the bench · local", rendered only when
localGenerationsis populated. Each figure:aspect-videoimage + 2-line caption. Generation tiles useobject-contain bg-ruleso models that return non-16:9 aspects letterbox cleanly; original tile usesobject-coversince published heroes vary. - ZoomableImage: click → fullscreen overlay with caption strip and close button. ESC closes. Backdrop click closes. Body scroll locks.
- StreamingBakeoffGrid: live-paste version with stage indicator, placeholder strings, pulsing animation on active tile.
- BakeForm: input + submit + reset. NDJSON streaming consumer. Shows persisted-link button on success.
- Hover transitions:
transition-colors(200ms default). - Lightbox open: opacity fade (no layout animation).
- Streaming tile placeholder:
lede-pulsekeyframe (1.4s ease-in-out).
.editorial-rule: dotted hairline (8px dash repeat) — defined but currently unused. Available for division between sections.
- The whole page is built from horizontal
border-brules. Reads as a stack of cards, not as one continuous publication. - No real grid baseline. Spacing is rhythmic but not systematic.
- Hover states are uniform (
hover:text-ink/hover:border-ink). Missing tactile detail. - The wordmark
Lede.is small for a brand-page register. - No focus-ring discipline. Default browser focus rings will disrupt the editorial feel.
- Section eyebrows are correct color but undifferentiated rhythm — they all feel the same weight.
- Streaming progress (the 3-stage indicator) is functional but bland. A small editorial visual move could turn this into one of the page's most memorable elements.
- The article detail sidebar (
Time to bake / Models rendered / Generated) is correct register but visually too uniform — three identical blocks. - Lightbox close button is ascetic but the caption strip feels detached from the image.
- No print-style touches: no drop caps, no rule lines that break the SaaS-page reflex, no subtle paper-grain texture.