light · editorial · serif · sans · warm · soft · calm · premium

DESIGN.md inspired by Wispr Flow

Pale lemon-cream paper, EB Garamond at 120px, and a lavender download pill — voice dictation that dresses like a literary journal.

By webdesignhot · wisprflow.ai
$ npx @webdesignhot/design-md add wispr-flow
Learn more about the CLI
Compare to…
try on →
theme
1440 × 900
mobile · 390 × 844
Tokens webdesignhot/0.1
  • bg #ffffeb
  • bg-dark #e4e4d0
  • surface #034f46
  • surface-soft #e4e4d0
  • text AAA · 17.2 #1a1a1a
  • text-darkest #111111
  • text-muted #666666
  • text-soft #888888
  • on-surface #ffffeb
  • brand — · 1.3 #f0d7ff
  • brand-ink #1a1a1a
  • on-brand #1a1a1a
  • accent-glow #ffa946
  • accent-fathom #034f46
  • accent-pulse #7f1c34
  • border #1a1a1a4d
  • border-soft #1a1a1a1a
  • border-strong #1a1a1a80
  • white #ffffff
  • shadow-card rgba(26,26,15,0.05)
  • shadow-elev rgba(26,26,15,0.10)
  • scrim rgba(17,17,10,0.50)
  • success #114e0b
  • success-soft #cef5ca
  • warning #5e5515
  • warning-soft #fcf8d8
  • danger #7f1c34
  • danger-soft #f8e4e4
  • focus-state #2d62ff
Typography
Ship faster than ever.
display-hero "EB Garamond" 120px w400 -0.02em
Ship faster than ever.
display-xl "EB Garamond" 80px w400 -0.02em
Ship faster than ever.
display-lg "EB Garamond" 64px w400 -0.015em
Ship faster than ever.
h1 "EB Garamond" 48px w400 -0.012em
Built for teams that ship.
h2 "EB Garamond" 36px w400 -0.008em
The quick brown fox jumps over the lazy dog.
quote "EB Garamond" 32px w400 -0.005em
A complete kit
h3 "EB Garamond" 28px w500 -0.004em
The quick brown fox jumps over the lazy dog.
h4 Figtree 22px w600 0
The quick brown fox jumps over the lazy dog.
deck-lg Figtree 22px w400 0
The quick brown fox jumps over the lazy dog.
deck-md Figtree 20px w400 0
The quick brown fox jumps over the lazy dog.
title-lg Figtree 20px w600 0
The quick brown fox jumps over the lazy dog.
title-md Figtree 18px w600 0
The quick brown fox jumps over the lazy dog.
body-lg Figtree 18px w400 0
The quick brown fox jumps over the lazy dog.
body-md Figtree 16px w400 0
The quick brown fox jumps over the lazy dog.
button-lg Figtree 16px w600 0
The quick brown fox jumps over the lazy dog.
body-sm Figtree 14px w400 0
The quick brown fox jumps over the lazy dog.
button-md Figtree 14px w600 0
npx @webdesignhot/design-md add stripe
code ui-monospace 14px w400 0
OUR DESIGN SYSTEM
label Figtree 13px w500 0.01em
OUR DESIGN SYSTEM
caption Figtree 12px w500 0.02em
The quick brown fox jumps over the lazy dog.
overline Figtree 11px w600 0.08em
Spacing
  • step-0 0px
  • step-1 4px
  • step-2 8px
  • step-3 12px
  • step-4 16px
  • step-5 24px
  • step-6 32px
  • step-7 48px
  • step-8 64px
  • step-9 96px
Radius
  • micro 2px
  • sm 4px
  • md 8px
  • lg 12px
  • xl 16px
  • pill 9999px
Components
Text link →
Card preview A complete kit — everything your product needs. Hero, pricing, FAQ, dashboard, docs — every layout your product needs.
New Stable v1.0
Design roles 8/8 mapped · webdesignhot/0.1

Maps the 8 canonical role names to this entry's actual tokens. Use these to plug the design into role-aware tools — shadcn/ui themes, role-aware Tailwind plugins, atelier-lint — without hard-coding token names.

  • background bg
  • foreground text
  • primary brand
  • primary-foreground on-brand
  • accent accent-glow
  • muted text-muted
  • border border
  • ring focus-state
Export 4 formats · paste-ready
Tailwind

theme.extend block for tailwind.config.js

tailwind.config.js
CSS variables

:root { --bg, --text, --brand, … } you can paste anywhere

design.css
DTCG JSON

W3C Design Tokens Community Group format

design.tokens.json
Figma Variables

Importable into Figma → Variables → Import

figma-variables.json
The file
---
name: Wispr Flow
tagline: Pale lemon-cream paper, EB Garamond at 120px, and a lavender download pill — voice dictation that dresses like a literary journal.
updated_at: 2026-05-29T21:43:58.866Z
published_at: 2026-05-29T21:43:58.866Z
author: webdesignhot
source_url: https://wisprflow.ai
spec: webdesignhot/0.1
quality: curated
featured: false
categories: [ai, saas]
tags: [light, editorial, serif, sans, warm, soft, calm, premium]
preview_swatch: ['#ffffeb', '#f0d7ff', '#034f46']
related: [granola, anthropic, substack]
description: 'Wispr Flow''s site is a calm editorial paper — a pale lemon-cream canvas (`#ffffeb`, the `--base-color--lumen` token) carrying an EB Garamond serif headline at an enormous 120px on a 1.0 line-height, set in warm near-black ink (`#1a1a1a`, `--base-color--vast`). The single action voltage is a soft lavender pill (`#f0d7ff`, `--base-color--dawn`) at a 12px radius reading "Download for macOS", with dark-ink text rather than white. Body copy runs in Figtree, a friendly geometric humanist sans, while the display layer leans entirely on the Garamond serif. A muted pastel system rounds it out — warm glow orange (`#ffa946`), deep fathom green (`#034f46`) for inverted panels, and a wine-deep pulse (`#7f1c34`) — giving the page the register of a premium-productivity journal rather than a typical AI-tool dashboard.'


# Canonical 8-role aliases (bg / text / brand / border / accent / muted / surface / danger).
# Maps role names to this entry's actual token names so role-aware
# downstream tools resolve `theme.background` → entry's `bg`, etc.
# Auto-generated by scripts/add-aliases.mjs — do not edit manually;
# regenerate after changing color token names.
aliases:
  background: bg
  foreground: text
  primary: brand
  primary-foreground: on-brand
  accent: accent-glow
  muted: text-muted
  border: border
  ring: focus-state
colors:
  bg: '#ffffeb'                   # pale lemon-cream canvas — --base-color--lumen
  bg-dark: '#e4e4d0'              # deeper lemon-cream for nested panels — --base-color--lumen-dark
  surface: '#034f46'             # deep fathom green inverted panel — --base-color--fathom
  surface-soft: '#e4e4d0'        # soft lemon-cream card surface
  text: '#1a1a1a'                # warm near-black ink — --base-color--vast
  text-darkest: '#111111'        # deepest ink for peak display — --base-color-neutral--neutral-darkest
  text-muted: '#666666'          # captions, secondary meta — --base-color-neutral--neutral
  text-soft: '#888888'           # disabled / placeholder ink
  on-surface: '#ffffeb'          # lemon-cream text on fathom-green panel
  brand: '#f0d7ff'               # soft lavender CTA pill — --base-color--dawn
  brand-ink: '#1a1a1a'           # dark ink on lavender (CTA label — not white)
  on-brand: '#1a1a1a'            # canonical: text color sitting on brand
  accent-glow: '#ffa946'         # warm glow orange — --base-color--glow
  accent-fathom: '#034f46'       # deep fathom green — --base-color--fathom
  accent-pulse: '#7f1c34'        # wine-deep pulse — --base-color--pulse
  border: '#1a1a1a4d'            # 30% ink hairline — --border-color--border-primary
  border-soft: '#1a1a1a1a'       # 10% ink for very subtle dividers
  border-strong: '#1a1a1a80'     # 50% ink for focused inputs
  white: '#ffffff'               # pure white — used sparingly for chips/insets
  shadow-card: 'rgba(26,26,15,0.05)'   # warm-tinted ambient
  shadow-elev: 'rgba(26,26,15,0.10)'   # heavier hover lift
  scrim: 'rgba(17,17,10,0.50)'   # modal backdrop — warm-tinted black
  success: '#114e0b'             # confirmation ink — --base-color-system--success-green-dark
  success-soft: '#cef5ca'        # success surface — --base-color-system--success-green
  warning: '#5e5515'             # advisory ink — --base-color-system--warning-yellow-dark
  warning-soft: '#fcf8d8'        # warning surface — --base-color-system--warning-yellow
  danger: '#7f1c34'              # error ink — leans on pulse wine
  danger-soft: '#f8e4e4'         # error surface — --base-color-system--error-red
  focus-state: '#2d62ff'         # focus ring blue — --base-color-system--focus-state

typography:
  display:
    family: '"EB Garamond", "Tiempos Text", "Iowan Old Style", Georgia, serif'
    weights: [400, 500, 600]
    opentype-features: ['kern', 'liga', 'onum']
  serif:
    family: '"EB Garamond", Georgia, serif'
    weights: [400, 500]
  body:
    family: 'Figtree, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif'
    weights: [400, 500, 600]
    opentype-features: ['kern', 'liga']
  mono:
    family: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace'
    weights: [400, 500]
  scale:
    display-hero:    { size: 120, weight: 400, lineHeight: 1.00, tracking: '-0.02em',  family: display, opentype: ['kern', 'liga', 'onum'] }
    display-xl:      { size: 80,  weight: 400, lineHeight: 1.02, tracking: '-0.02em',  family: display }
    display-lg:      { size: 64,  weight: 400, lineHeight: 1.05, tracking: '-0.015em', family: display }
    h1:              { size: 48,  weight: 400, lineHeight: 1.08, tracking: '-0.012em', family: display }
    h2:              { size: 36,  weight: 400, lineHeight: 1.15, tracking: '-0.008em', family: display }
    h3:              { size: 28,  weight: 500, lineHeight: 1.25, tracking: '-0.004em', family: display }
    h4:              { size: 22,  weight: 600, lineHeight: 1.30, tracking: '0',        family: body }
    deck-lg:         { size: 22,  weight: 400, lineHeight: 1.45, tracking: '0',        family: body }
    deck-md:         { size: 20,  weight: 400, lineHeight: 1.50, tracking: '0',        family: body }
    title-lg:        { size: 20,  weight: 600, lineHeight: 1.35, tracking: '0',        family: body }
    title-md:        { size: 18,  weight: 600, lineHeight: 1.40, tracking: '0',        family: body }
    body-lg:         { size: 18,  weight: 400, lineHeight: 1.55, tracking: '0',        family: body }
    body-md:         { size: 16,  weight: 400, lineHeight: 1.55, tracking: '0',        family: body }
    body-sm:         { size: 14,  weight: 400, lineHeight: 1.50, tracking: '0',        family: body }
    caption:         { size: 12,  weight: 500, lineHeight: 1.40, tracking: '0.02em',   family: body }
    label:           { size: 13,  weight: 500, lineHeight: 1.40, tracking: '0.01em',   family: body }
    overline:        { size: 11,  weight: 600, lineHeight: 1.30, tracking: '0.08em',   family: body, transform: uppercase }
    button-lg:       { size: 16,  weight: 600, lineHeight: 1.20, tracking: '0',        family: body }
    button-md:       { size: 14,  weight: 600, lineHeight: 1.20, tracking: '0',        family: body }
    quote:           { size: 32,  weight: 400, lineHeight: 1.35, tracking: '-0.005em', family: display }
    code:            { size: 14,  weight: 400, lineHeight: 1.50, tracking: '0',        family: mono }

radius:
  micro: 2
  sm: 4
  md: 8
  lg: 12
  xl: 16
  pill: 9999

spacing:
  base: 4
  scale: [0, 4, 8, 12, 16, 24, 32, 48, 64, 96]

layout:
  page-width: 1280
  prose-width: 720
  header-height: 64
  hero-band-height: 720

components:
  cta-lavender:
    bg: '#f0d7ff'
    color: '#1a1a1a'
    radius: 12
    padding: '14px 24px'
    height: 48
    font: button-lg
    use: '"Download for macOS" / "Download for Windows" — every primary action. Dark ink on lavender, not white.'
  cta-lavender-hover:
    bg: '#e8c6ff'
    color: '#1a1a1a'
    radius: 12
    use: 'Pointer hover — lavender deepens a half-step; no transform, gentle shadow only.'
  button-ink:
    bg: '#1a1a1a'
    color: '#ffffeb'
    radius: 12
    padding: '12px 22px'
    height: 44
    font: button-md
    use: 'Secondary high-contrast action — ink fill with lemon-cream label, paired beside the lavender pill.'
  button-ghost:
    bg: 'transparent'
    color: '#1a1a1a'
    border: '1px solid #1a1a1a4d'
    radius: 12
    padding: '12px 22px'
    use: 'Tertiary "Watch demo" / "See how it works" — transparent with 30% ink hairline.'
  fathom-panel-card:
    bg: '#034f46'
    color: '#ffffeb'
    radius: 16
    padding: '40px'
    use: 'Inverted deep-green feature panel — fathom green with lemon-cream text. The page''s only dark surface.'
  feature-card-cream:
    bg: '#e4e4d0'
    color: '#1a1a1a'
    radius: 16
    border: '1px solid #1a1a1a1a'
    padding: '32px'
    use: 'Soft lemon-cream feature panel — flat, hairline-bordered, no shadow.'
  testimonial-quote:
    bg: '#ffffeb'
    color: '#1a1a1a'
    radius: 16
    border: '1px solid #1a1a1a1a'
    padding: '32px 28px'
    use: 'Pull-quote card — EB Garamond at 32px, byline beneath in Figtree muted.'
  text-input:
    bg: '#ffffff'
    color: '#1a1a1a'
    radius: 8
    height: 44
    padding: '10px 14px'
    border: '1px solid #1a1a1a4d'
    focus: 'border thickens to #1a1a1a80 + 2px focus-state (#2d62ff) ring'
    use: 'Waitlist / email signup field — paired with the lavender download pill.'
  badge-lavender:
    bg: '#f0d7ff'
    color: '#1a1a1a'
    radius: 9999
    padding: '4px 12px'
    font: caption
    use: 'Inline category tag — "New", "Mac" — lavender pill with dark ink.'
  badge-glow:
    bg: '#ffa946'
    color: '#1a1a1a'
    radius: 9999
    padding: '4px 12px'
    font: caption
    use: 'Attention chip — warm glow orange for "Beta" / announcement micro-labels.'
  announcement-chip:
    bg: '#ffffff'
    color: '#1a1a1a'
    radius: 9999
    padding: '6px 14px'
    border: '1px solid #1a1a1a4d'
    font: caption
    use: 'Hero announcement pill — white on lemon-cream, hairline-bordered, single instance.'
  nav-link:
    color: '#1a1a1a'
    use: 'Top-nav item — ink with no underline; underline appears on hover.'
  link-inline:
    color: '#1a1a1a'
    underline: '1px solid #1a1a1a4d'
    use: 'Inline body link — ink with a soft 30% hairline underline, always present.'

motion:
  ease-standard: 'cubic-bezier(0.4, 0, 0.2, 1)'
  ease-emphasized: 'cubic-bezier(0.2, 0, 0, 1)'
  ease-out-soft: 'cubic-bezier(0.0, 0, 0.2, 1)'
  duration-fast: 150
  duration-standard: 240
  duration-slow: 320
  button-hover: 'background deepens over 240ms standard — gentle shadow, no scale'
  card-hover: 'no lift; cream surface darkens fractionally over 240ms'
  scroll-reveal: 'sections fade in with 12px translate-up over 320ms ease-out-soft when entering viewport'
  waveform-pulse: 'voice-dictation waveform glyph pulses with the glow accent on the live-demo loop'
  reduced-motion: 'respects prefers-reduced-motion: reduce — all transforms suppressed, fade-only.'

breakpoints:
  mobile: 640
  tablet: 1024
  desktop: 1280
  wide: 1536

shadows:
  ambient: 'rgba(26,26,15,0.05) 0 1px 2px 0'
  card: 'rgba(26,26,15,0.05) 0 4px 12px -2px'
  elevated: 'rgba(26,26,15,0.10) 0 12px 24px -8px, rgba(26,26,15,0.05) 0 4px 8px -2px'
  ring: '0 0 0 2px #2d62ff'

accessibility:
  contrast-text-on-bg: 17.2          # #1a1a1a on #ffffeb — AAA
  contrast-text-darkest-on-bg: 18.66 # #111111 on #ffffeb — AAA
  contrast-ink-on-brand: 13.15       # #1a1a1a on #f0d7ff lavender CTA — AAA
  contrast-on-surface: 9.39          # #ffffeb on #034f46 fathom panel — AAA
  contrast-muted-on-bg: 5.68         # #666666 on #ffffeb — AA body
  contrast-success: 8.28             # #114e0b on #cef5ca — AAA
  contrast-warning: 7.02             # #5e5515 on #fcf8d8 — AAA
  focus-ring: '2px solid #2d62ff (focus-state) + 2px outline-offset'
  reduced-motion-honored: true
  touch-target-min: 44

dark-mode: null   # Light-only marketing surface. The hosted Mac/Windows app carries its own chrome; the public site stays lemon-cream throughout, using the fathom-green panel as its only dark moment.
---

## 1. Visual Theme & Atmosphere

Wispr Flow's site reads like a literary journal that happens to ship a voice-dictation engine. The body canvas is a pale lemon-cream `#ffffeb` (the `--base-color--lumen` token) — not white, not grey, but a warm, faintly yellow paper that softens every edge it touches. The hero headline lands in **EB Garamond at an enormous 120px** on a 1.0 line-height, set in a warm near-black `#1a1a1a` (`--base-color--vast`). The leading is title-page tight: the lines stack like a frontispiece rather than a marketing deck, and the serif's old-style proportions give the whole top of the page a hand-set, book-cover gravity.

The atmosphere is the deliberate opposite of the dark-dashboard AI-tool template. Where Otter, Fireflies, and the broader "AI meeting / transcription" category reach for navy gradients and neon-blue voltage, Wispr Flow reaches for paper. The single action layer is a **soft lavender pill** (`#f0d7ff`, the `--base-color--dawn` token) at a 12px radius, reading "Download for macOS" — and crucially its label is dark ink, not white. A pastel CTA with dark text is a quiet, premium move: it refuses the high-contrast "click me" energy of a saturated button and instead invites rather than shouts.

Body copy runs in **Figtree**, a friendly geometric-humanist sans with generous apertures and a slightly rounded warmth that pairs naturally with the Garamond display. The serif/sans duet is the brand voice: Garamond carries every headline and pull-quote, Figtree carries every paragraph, label, and button. Hierarchy comes primarily from *family swap and size*, not from heavy weight modulation — the display layer sits at a comfortable book-weight 400, letting the typeface's own contrast do the work.

The chromatic system is a muted pastel palette rather than a single accent. Beyond the lavender CTA, the page draws on a **warm glow orange** (`#ffa946`) for attention chips and waveform highlights, a **deep fathom green** (`#034f46`) for the page's one inverted panel — where lemon-cream text floats on bottle-green — and a **wine-deep pulse** (`#7f1c34`) for rare emphasis and error states. None of these compete with the lavender; they sit a half-octave below it, like the secondary colors in a risograph print.

The cumulative effect is editorial calm with a premium-productivity register. Surfaces lift through warm tonal layering (`#ffffeb` → `#e4e4d0`) and 30%-ink hairlines rather than shadow stacks. The one dark surface — the fathom-green feature panel — functions as a chapter break, a deep-green spread inserted into an otherwise paper-light book. Voice dictation, the most utilitarian of categories, is dressed here as something closer to a writer's tool than a transcription utility.

**Key Characteristics:**
- Pale lemon-cream canvas (`#ffffeb`, `--base-color--lumen`) — warm paper, never white or grey
- EB Garamond serif display at a huge 120px / 1.0 line-height — title-page leading
- Figtree humanist sans for all body, labels, and buttons
- Single action voltage: soft lavender pill (`#f0d7ff`, `--base-color--dawn`) with **dark-ink** label
- Muted pastel support system: glow orange (`#ffa946`), fathom green (`#034f46`), pulse wine (`#7f1c34`)
- One inverted dark surface only — the fathom-green feature panel — used as a chapter break
- Warm near-black ink (`#1a1a1a`) for body; deepest `#111` reserved for peak display
- Tonal elevation (`#ffffeb` → `#e4e4d0`); 30%-ink hairlines, minimal shadow chrome
- 12px radius on the CTA, 16px on cards — soft but not fully-pill
- Serif/sans duet (Garamond + Figtree) as the entire type voice
- Calm, premium, literary register — the antithesis of the dark-AI-dashboard template

## 2. Color Palette & Roles

### Primary
- **Canvas / Lumen** (`#ffffeb`) [→ `--base-color--lumen`]: the pale lemon-cream floor for every public page — warm paper.
- **Ink / Vast** (`#1a1a1a`) [→ `--base-color--vast`]: the dominant text color — warm near-black, distinct from pure `#000`.
- **Ink Darkest** (`#111111`) [→ `--base-color-neutral--neutral-darkest`]: peak display copy, the deepest ink on the page.
- **Brand / Dawn** (`#f0d7ff`) [→ `--base-color--dawn`]: the soft lavender CTA pill — the single action voltage. Always carries **dark-ink** text.

### Brand & Inverted
- **Brand Ink** (`#1a1a1a`): the label color sitting on the lavender pill — dark, never white.
- **Brand Hover** (`#e8c6ff`): pressed/hover state — lavender deepens a half-step.
- **Surface / Fathom** (`#034f46`) [→ `--base-color--fathom`]: deep bottle-green — the inverted feature panel surface, the page's one dark moment.
- **On Surface** (`#ffffeb`): lemon-cream text used on the fathom-green panel.

### Accent
- **Glow** (`#ffa946`) [→ `--base-color--glow`]: warm orange — attention chips, waveform highlight, "Beta" micro-labels.
- **Fathom** (`#034f46`) [→ `--base-color--fathom`]: deep green, doubled as accent for inline marks on light surfaces.
- **Pulse** (`#7f1c34`) [→ `--base-color--pulse`]: wine-deep — rare emphasis, and the basis for the error ink.

### Interactive
- **Link** (`#1a1a1a`): inline body links — ink with a soft 30%-hairline underline always present.
- **Link Hover** (`#000000`): hover — ink darkens to near-black, underline thickens 1 → 1.5px.
- **Selected** (`#f0d7ff` fill, `#1a1a1a` text on toggle pills).
- **Focus Ring** (`#2d62ff`) [→ `--base-color-system--focus-state`]: a vivid blue focus ring — the one cool, saturated color on the page, reserved for keyboard focus.
- **Disabled** (`#888888` text, `#e4e4d0` fill): drained warm grey on deep cream.

### Neutral Scale
- **Ink Darkest** (`#111111`) [→ `--neutral-darkest`] — peak display copy
- **Ink / Vast** (`#1a1a1a`) [→ `--vast`] — body, primary nav
- **Neutral** (`#666666`) [→ `--base-color-neutral--neutral`] — captions, byline, timestamp (muted)
- **Soft** (`#888888`) — disabled link text, placeholder
- **Light scale** (`#aaa`, `#ccc`, `#eee`) [→ `--neutral-light` … `--neutral-lightest`] — dividers, faint UI strokes

### Surface & Borders
- **Canvas / Lumen** (`#ffffeb`) — page floor
- **Lumen Dark** (`#e4e4d0`) [→ `--base-color--lumen-dark`] — deeper lemon-cream for nested panels and cards
- **Fathom** (`#034f46`) — inverted dark panel
- **White** (`#ffffff`) [→ `--base-color--white`] — used sparingly for chips, inset fields, announcement pills
- **Hairline** (`#1a1a1a4d`) [→ `--border-color--border-primary`] — default 30%-ink border
- **Hairline Soft** (`#1a1a1a1a`) — 10%-ink for subtle dividers
- **Hairline Strong** (`#1a1a1a80`) — 50%-ink for focused inputs

### Shadow Colors
Wispr Flow uses **warm-tinted** shadows — `rgba(26, 26, 15, …)` rather than pure black, matching the page's warm ink temperature. Shadows are minimal and reserved for hover and elevated surfaces; the system trusts tonal layering and hairlines for most depth. There is no brand-tinted (lavender) glow on CTA hover.

- `rgba(26,26,15,0.05) 0 1px 2px 0` — ambient
- `rgba(26,26,15,0.05) 0 4px 12px -2px` — card / button hover
- `rgba(26,26,15,0.10) 0 12px 24px -8px, rgba(26,26,15,0.05) 0 4px 8px -2px` — elevated dropdown / popover

### Semantic
- **Success** (`#114e0b` ink on `#cef5ca` surface) [→ `--success-green-dark` / `--success-green`] — confirmation; a pale mint surface with deep-green ink
- **Warning** (`#5e5515` ink on `#fcf8d8` surface) [→ `--warning-yellow-dark` / `--warning-yellow`] — advisory; muted ochre on pale lemon
- **Danger** (`#7f1c34` ink on `#f8e4e4` surface) [→ pulse / `--error-red`] — form-error; wine ink on pale rose
- **Focus** (`#2d62ff`) [→ `--focus-state`] — keyboard focus ring blue

## 3. Typography Rules

### Font Family

**Display Primary**: `EB Garamond` — the open-source revival of Claude Garamond's old-style serif, carrying every headline and pull-quote. Fallback chain: `"Tiempos Text", "Iowan Old Style", Georgia, serif`. EB Garamond runs at book-weight 400 for the hero and most display moments, stepping to 500/600 only at smaller h3-h4 sizes. Its old-style figures (`onum`) and humanist proportions give the page its literary, hand-set gravity.

**Body Primary**: `Figtree` — a friendly geometric-humanist sans with open apertures and a faint warmth. Fallback chain: `system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`. Figtree carries all running text, labels, buttons, and captions across weights 400, 500, 600.

**Mono companion**: `ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace` — used only for keyboard-shortcut callouts (the global dictation hotkey) and rare inline code.

**OpenType features**: `kern` and `liga` always on. `onum` (oldstyle figures) enabled on EB Garamond display copy — numerals gain a literary, in-line-with-lowercase feel inside running serif text. No swash or smallcaps.

### Hierarchy

| Role | Font | Size | Weight | Line Height | Letter Spacing | OT Features | Notes |
|------|------|------|--------|-------------|----------------|-------------|-------|
| display-hero | EB Garamond | 120 | 400 | 1.00 | -0.02em | kern, liga, onum | Hero headline — the peak typographic moment, title-page leading |
| display-xl | EB Garamond | 80 | 400 | 1.02 | -0.02em | kern, liga | Secondary hero / section opener |
| display-lg | EB Garamond | 64 | 400 | 1.05 | -0.015em | — | Inverted fathom-panel headline |
| h1 | EB Garamond | 48 | 400 | 1.08 | -0.012em | — | Section h1 on light surface |
| h2 | EB Garamond | 36 | 400 | 1.15 | -0.008em | — | Feature spread h2 |
| h3 | EB Garamond | 28 | 500 | 1.25 | -0.004em | — | Sub-feature opener — steps to weight 500 |
| h4 | Figtree | 22 | 600 | 1.30 | 0 | — | Card title — switches to the sans for smaller heads |
| deck-lg | Figtree | 22 | 400 | 1.45 | 0 | — | Hero deck beneath the Garamond headline |
| deck-md | Figtree | 20 | 400 | 1.50 | 0 | — | Sub-section deck |
| title-lg | Figtree | 20 | 600 | 1.35 | 0 | — | Card title on cream feature card |
| title-md | Figtree | 18 | 600 | 1.40 | 0 | — | Sub-card title, footer column heads |
| body-lg | Figtree | 18 | 400 | 1.55 | 0 | — | Long-form body inside testimonials |
| body-md | Figtree | 16 | 400 | 1.55 | 0 | — | Default running-text |
| body-sm | Figtree | 14 | 400 | 1.50 | 0 | — | Card meta, captions |
| caption | Figtree | 12 | 500 | 1.40 | 0.02em | — | Timestamp, byline, chip text |
| label | Figtree | 13 | 500 | 1.40 | 0.01em | — | Form labels, inline UI labels |
| overline | Figtree | 11 | 600 | 1.30 | 0.08em | uppercase | Section eyebrow above display copy |
| button-lg | Figtree | 16 | 600 | 1.20 | 0 | — | Primary lavender pill label |
| button-md | Figtree | 14 | 600 | 1.20 | 0 | — | Secondary / nav button |
| quote | EB Garamond | 32 | 400 | 1.35 | -0.005em | — | Pull-quote inside testimonial card |
| code | mono | 14 | 400 | 1.50 | 0 | — | Keyboard-shortcut callout |

### Principles

- **The serif/sans duet is the brand voice.** EB Garamond carries every display moment; Figtree carries every body, label, and button moment. Hierarchy comes from *family swap and size*, not from heavy weight modulation.
- **Title-page leading at the largest size.** The 120px hero rides at 1.0 line-height — the unusually tight leading is what gives the page its frontispiece feel rather than a marketing deck.
- **Book-weight display.** The Garamond display layer holds weight 400 through h2; it only firms to 500/600 once it drops to h3/h4 size, where the serif's contrast needs the help.
- **Sans takes over below ~24px headings.** h4 and card titles switch from Garamond to Figtree 600 — the serif's small-size legibility yields to the sans for compact UI heads.
- **16px body is the floor, 18px for editorial passages.** Default body sits at 16px / 1.55; long testimonial and feature copy steps up to 18px for magazine readability.
- **Negative tracking only on Garamond display.** Display sizes tighten from -0.02em (hero) toward 0 as they shrink. Figtree body and labels sit at zero or slightly positive tracking.
- **Old-style figures in serif display.** `onum` on Garamond gives numerals a literary, lowercase-aligned feel inside running serif text.
- **EB Garamond + Figtree are both freely available.** EB Garamond (OFL) and Figtree (OFL) make this pairing directly reproducible — no proprietary foundry license required.

## 4. Component Stylings

### Buttons

**`cta-lavender`** — The signature primary. `#f0d7ff` (Dawn) fill, **dark-ink** `#1a1a1a` label at 16px / 600, **12px radius**, 14×24px padding, 48px height. Used for "Download for macOS", "Download for Windows", "Get started". The dark-on-pastel treatment is the brand fingerprint — it invites rather than shouts. Never white text.

**`cta-lavender-hover`** — Pointer hover. Lavender deepens to `#e8c6ff` over 240ms, optionally gaining the faint ambient shadow. **No scale, no transform.** The hover is color-only.

**`button-ink`** — Secondary high-contrast action. `#1a1a1a` ink fill, lemon-cream `#ffffeb` label at 14px / 600, 12px radius, 12×22px padding, 44px height. Pairs beside the lavender pill when a darker secondary is needed (e.g. "View pricing").

**`button-ghost`** — Tertiary. Transparent fill, ink label, 1px 30%-ink hairline border (`#1a1a1a4d`), 12px radius, 12×22px padding. Used for "Watch demo" / "See how it works" beside the primary CTA.

### Cards

**`fathom-panel-card`** — The signature dark surface. `#034f46` deep bottle-green fill, lemon-cream `#ffffeb` text, **16px radius**, 40px padding. Holds an inverted feature spread — the page's one dark moment, functioning as a chapter break inside an otherwise paper-light book.

**`feature-card-cream`** — Soft lemon-cream feature panel. `#e4e4d0` (Lumen Dark) fill, 16px radius, 10%-ink hairline (`#1a1a1a1a`), 32px padding. Flat, no shadow. Used for the bulk of feature blocks where cream-on-cream tonal layering reads as elevation.

**`testimonial-quote`** — Pull-quote card. Lemon-cream `#ffffeb` fill, 16px radius, 10%-ink hairline, 32×28px padding. Quote in 32px / 400 EB Garamond, byline beneath in 12px / 500 Figtree muted with a 40px circular avatar flush left.

**`feature-spread`** — Full-bleed editorial spread. No card chrome. EB Garamond headline, Figtree body, screenshots sit inline on the lemon-cream floor. Used for "How Wispr Flow works" walkthrough sections.

### Badges, Tags, Pills

**`badge-lavender`** — Inline category tag ("New", "Mac"). `#f0d7ff` fill, dark-ink text, 9999px radius, 4×12px padding, 12px / 500 caption.

**`badge-glow`** — Attention chip ("Beta", announcement micro-label). `#ffa946` (Glow) fill, dark-ink text, 9999px radius, 4×12px padding. The one warm-orange moment.

**`announcement-chip`** — Hero announcement pill. White `#ffffff` fill, dark-ink text, 9999px radius, 6×14px padding, 1px 30%-ink border. Sits at the top of the hero, single instance per page — white-on-lemon contrast makes it read as a distinct affordance.

### Inputs / Forms

**`text-input`** — White `#ffffff` fill, 1px 30%-ink hairline (`#1a1a1a4d`), **8px radius**, 44px height, 10×14px padding. Placeholder in 16px / 400 soft grey (`#888888`). On focus, border thickens to 50%-ink (`#1a1a1a80`) and a 2px focus-state blue ring (`#2d62ff`) appears. Note the input radius (8px) is smaller than the button radius (12px) and card radius (16px) — a deliberate radius step-down for fine controls.

**`email-input-hero`** — Inline waitlist / email signup. White fill, hairline, 8px radius, 44px height. The lavender pill CTA sits flush right, forming a combined affordance — rectangular-rounded input plus softer-rounded pill.

### Navigation

**`top-nav`** — Lemon-cream surface, 64px height, 1px bottom hairline. Wordmark flush left in Figtree 600, three nav links centred (Product, Pricing, Blog) in 14px / 600 Figtree ink, "Sign in" text + lavender "Download" pill flush right.

**`nav-link`** — Ink (`#1a1a1a`), no underline at rest. Hairline underline appears on hover. Active page gets a 1.5px ink underline.

**`link-inline`** — Ink with a soft 30%-ink hairline underline always present; underline darkens and thickens to 1.5px on hover. No colored-link convention — links are ink, not lavender.

### Decorative

**`waveform-glyph`** — A voice-dictation waveform mark, rendered in the glow orange (`#ffa946`), that pulses on the live-demo loop. The one animated brand glyph — it ties the visual system to the product's voice-input nature.

**`pull-quote-flourish`** — An EB Garamond `"` glyph in fathom green at 64px sometimes appears flush left of a pull-quote, decoratively.

## 5. Layout Principles

### Spacing System

- Base unit: **4px**
- Scale: `0 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96`
- Section padding (vertical): 64–96px for major bands — generous editorial cadence
- Card internal padding: 40px on the fathom-green panel, 32px on cream feature cards, 24px on smaller nested panels
- Inter-card gutters: 24px between feature cards in a 3-up grid; 16px in dense 4-up grids

### Grid & Container

- Max content width: ~1280px on the inner grid with 24px gutters
- Prose width: ~720px for long-form testimonial body — narrower than the page gutter so reading flow stays magazine-tight
- Header height: 64px fixed top-nav
- Feature grid pattern: 3-up at desktop, 2-up at tablet, 1-up at mobile

### Whitespace Philosophy

The page is composed as a sequence of editorial spreads — each section gets 64–96px of vertical breathing room. The cadence is closer to a magazine than a scroll-tracked SaaS dashboard. Lemon-cream runs edge-to-edge between sections; cards lift via the deeper `#e4e4d0` cream rather than shadow. The 24px gutters around the 1280px max-width container leave generous side margin even at desktop widths.

### Section Cadence

A typical Wispr Flow page runs:

1. Lemon-cream hero (120px EB Garamond display, 22px Figtree deck, lavender download pill)
2. Live-demo / waveform band (the product's voice-dictation loop on lemon-cream)
3. Feature stack (3-up cream cards on lemon-cream, with badges)
4. Fathom-green panel spread (the one inverted dark surface — a chapter break)
5. Testimonial spread (lemon-cream surface, 32px Garamond pull-quotes, byline and avatars)
6. Pricing band (cream cards, lavender pill inside the recommended tier)
7. Editorial closer (Garamond headline, Figtree deck, single lavender pill CTA)
8. Footer (Figtree title-md column heads, body-sm muted links)

Light/dark alternation is replaced with **cream / deeper-cream alternation** (`#ffffeb` and `#e4e4d0`), punctuated by the single fathom-green panel.

## 6. Shapes & Radius Scale

| Tier | Value | Use |
|------|-------|-----|
| Micro | 2px | Fine UI strokes, tightest inline marks |
| Small | 4px | Internal sub-elements inside cards |
| Standard | 8px | Text inputs, fine controls |
| Relaxed | 12px | All buttons (primary, secondary, ghost) |
| Featured | 16px | Feature cards, fathom panel, testimonial card |
| Pill | 9999px | Badges, chips, toggle pills |

Wispr Flow's shape voice is **soft but restrained** — the CTA sits at a friendly 12px (not fully-pill), cards relax to 16px, and only small chips and badges go fully round (9999px). The progression input (8px) → button (12px) → card (16px) is a deliberate radius staircase: the smaller the element, the tighter the corner.

There are no compound radii. Every shape rounds uniformly on all four corners.

## 7. Depth & Elevation

| Level | Treatment | Use |
|-------|-----------|-----|
| 0 — Flat | no shadow | Canvas, hero, feature spreads, cream cards, fathom panel (~90% of surfaces) |
| 1 — Ambient | `rgba(26,26,15,0.05) 0 1px 2px 0` | Top-nav at scroll, very subtle inputs |
| 2 — Card / button hover | `rgba(26,26,15,0.05) 0 4px 12px -2px` | Lavender pill hover, optional card hover |
| 3 — Elevated | `rgba(26,26,15,0.10) 0 12px 24px -8px, rgba(26,26,15,0.05) 0 4px 8px -2px` | Dropdowns, popovers |
| 4 — Modal | scrim `rgba(17,17,10,0.50)` + dialog with elevated shadow | Sign-in / waitlist modal |

### Shadow Philosophy

Wispr Flow is a **warm-tonal-elevation** system, not a shadow-elevation system. Depth comes almost entirely from warm tonal layering (`#ffffeb` → `#e4e4d0`) and 30%-ink hairlines. Shadows are reserved for hover feedback on the CTA, elevated dropdowns, and modals. The marketing chrome itself is flat. There is no brand-tinted (lavender) glow — the lavender pill never radiates; it deepens on hover instead. The warm cream tones and the single fathom-green panel carry the page's sense of layer.

## 8. Interaction & Motion

### Easing

- **Standard**: `cubic-bezier(0.4, 0, 0.2, 1)` — default for hover state color swaps, hairline transitions
- **Emphasized**: `cubic-bezier(0.2, 0, 0, 1)` — modal entry, waveform demo loop
- **Out-soft**: `cubic-bezier(0.0, 0, 0.2, 1)` — section reveals on scroll

### Durations

| Bucket | Value | Use |
|--------|-------|-----|
| Fast | 150ms | Hairline tone swaps, focus-ring fades |
| Standard | 240ms | Button hover, link color shifts, card surface deepening |
| Slow | 320ms | Modal entry, section scroll-reveal, waveform pulse cycle |

### Per-Component Recipes

- **Lavender pill hover**: background `#f0d7ff` → `#e8c6ff` over 240ms standard, optional ambient shadow fade-in. **No scale, no glow.** The pill stays grounded.
- **Ink button hover**: background `#1a1a1a` → `#000000` over 240ms; lemon-cream label unchanged.
- **Cream card hover**: surface darkens fractionally over 240ms; no lift, no translate.
- **Link hover**: ink darkens toward `#000` over 150ms; the 30%-ink underline thickens 1 → 1.5px and darkens.
- **Waveform pulse**: the demo waveform glyph animates in the glow orange (`#ffa946`) on a slow ~320ms loop, syncing to the simulated voice input.
- **Scroll reveal**: sections fade in with a 12px translate-up over 320ms ease-out-soft when entering viewport (one-shot, then static).
- **Modal enter**: scrim fades in over 240ms, then dialog scales `0.96 → 1.0` and fades from `opacity 0 → 1` over 320ms emphasized.

### Page Transitions

Page-to-page navigation uses a 320ms cross-fade. The fixed top-nav stays static; only the body band fades. Smooth-scroll anchored links use 600ms emphasized easing.

### Reduced Motion

Respects `prefers-reduced-motion: reduce`. All `translate` and `scale` transforms suppress. The waveform pulse becomes a static glyph. Scroll-reveal becomes an instant render-on-mount. Hover states degrade to color-only.

## 9. Accessibility & A11y

### Contrast Pairs

| Pair | Ratio | Level |
|------|-------|-------|
| #1a1a1a ink on #ffffeb canvas | 17.2 | AAA |
| #111111 ink-darkest on #ffffeb | 18.66 | AAA |
| #1a1a1a ink on #f0d7ff lavender CTA | 13.15 | AAA |
| #ffffeb on #034f46 fathom panel | 9.39 | AAA |
| #ffffff on #034f46 fathom panel | 9.50 | AAA |
| #1a1a1a on #e4e4d0 deep-cream card | 13.51 | AAA |
| #114e0b on #cef5ca success surface | 8.28 | AAA |
| #5e5515 on #fcf8d8 warning surface | 7.02 | AAA |
| #7f1c34 pulse on #ffffeb | 9.80 | AAA |
| #666666 muted on #ffffeb | 5.68 | AA body |
| #2d62ff focus-state on #ffffeb | 4.82 | AA (non-text ring) |

The dark-ink-on-pastel CTA is the standout: at 13.15:1 the lavender pill passes AAA even though it reads as a soft, low-energy button — proof that a pastel action surface need not sacrifice legibility when paired with ink rather than white.

### Focus Indicators

Focus ring is `2px solid #2d62ff` (the focus-state blue) with 2px outline-offset — the one cool, saturated color on the page, used deliberately so keyboard focus is unmistakable against the warm cream. Focus-visible suppresses the ring on mouse interactions and preserves it on keyboard navigation.

### ARIA Patterns

- **Top nav**: standard `<nav>` landmark with `aria-label="Primary"`. The "Download" pill is an `<a>` to the installer (platform-detected) or a `<button>` opening a download modal.
- **Hero waitlist / signup**: `<form>` with `aria-label="Sign up for Wispr Flow"`. Inline email input + CTA render as separate elements for assistive tech.
- **Live-demo waveform**: decorative — marked `aria-hidden="true"`. The demo text it produces is exposed as real text, not an image.
- **Modal** (sign-in / download): focus trap, Esc closes, click outside closes, focus returns to trigger.
- **Pricing tiers**: a `role="radiogroup"` for monthly/annual toggles, with `aria-checked` reflecting selection.

### Keyboard Navigation

- Top nav: Tab moves logo → nav links → Sign in → Download pill
- Hero signup: Tab focuses input then CTA. Enter from input submits.
- Pricing tier cards: Tab moves card → card; arrow keys do not navigate
- All interactive controls reachable; visible 2px blue focus ring on each

### Screen Reader Hints

The waveform demo is decorative and hidden from screen readers; its produced text is exposed as live, selectable text. The fathom-green panel's contrast is verified AAA so inverted text needs no special handling. Badges convey status through text content, not color alone (e.g. "Beta" label inside the glow chip).

### Reduced Motion

All transitions degrade to opacity-only. The waveform pulse becomes static. Scroll-reveal becomes render-on-mount. Hover states lose any translate; only color shifts remain.

## 10. Responsive Behavior

### Breakpoints

| Name | Width | Key Changes |
|------|-------|-------------|
| Mobile | <640px | Top nav collapses to logo + hamburger; hero h1 drops 120 → 44px; feature cards 1-up; CTAs stack vertically; fathom panel padding 40 → 24px |
| Tablet | 640–1024px | Top nav keeps inline links; hero h1 settles at ~72px; feature cards 2-up |
| Desktop | 1024–1280px | Full top nav; hero h1 at 120px; feature cards 3-up |
| Wide | >1280px | Content width caps at 1280px; gutters absorb the rest |

### Touch Targets

- Lavender pill CTA: 48px height — passes WCAG AAA at 14×24 padding
- Ink secondary button: 44px height — passes WCAG AA
- Email input field: 44px height
- Inline link tap-target: 44px row height even at 16px / 1.55 body type (line-height adds spacing)

### Collapsing Strategy

- Top nav links collapse into a hamburger sheet below 640px
- Hero CTA + secondary stack vertically on mobile
- Fathom-green panel reduces padding (40 → 24px) and stacks its inner two-column content
- Feature grids: 3 → 2 → 1 columns; never reflow rows

### Image Behavior

Product screenshots and the waveform demo respect their intrinsic aspect ratios at all viewport widths. On the fathom panel, inverted-on-green imagery keeps a 16px radius and a faint 10%-cream inner hairline to separate from the deep-green surface.

### Container Queries

Used on the feature cards to swap from horizontal (icon-left) to stacked (icon-top) layout at the card's own ~360px width threshold, independent of viewport.

## 11. Content & Voice

### Tone

Calm, confident, plainspoken — premium without being precious. Wispr Flow positions itself as a tool for *people who write and speak for a living*, trusting the reader to grasp the value (faster, more natural input than typing) without overselling. Headlines lean on the Garamond display to do the emotional work, so the copy itself stays restrained and direct.

### Microcopy Patterns

- **Button verbs**: "Download for macOS", "Download for Windows", "Get started", "Sign in" — direct, platform-named, never "Submit" or "Click here"
- **Error message recipe**: `[What went wrong] + [What to try next]` — e.g., "We couldn't reach the mic. Check your input permissions and try again."
- **Success confirmations**: short, personal — "Flow is ready." or "You're all set." rather than generic "Success!"
- **Field labels**: conversational — "Where should we send your download link?" not "Email"

### Empty States

The empty dictation history: "Nothing here yet. Press your hotkey and start talking." — observational, action-prompting.

The empty workspace state: "Your transcripts will appear here as you dictate." — future-tense, anticipatory.

### CTA Verb Conventions

- Primary action: **"Download for macOS"** / **"Download for Windows"** (hero, nav), **"Get started"** (post-hero)
- Secondary action: **"Watch demo"**, **"See how it works"** (tertiary, ghost button)
- Tertiary text: **"View pricing"**, **"Read the docs"**
- Avoided: "Submit", "Click here", "Buy now" — Wispr Flow frames the relationship as *downloading* and *using*, not buying

## 12. Dark Mode & Theming

**Light-only marketing surface.** The public site stays lemon-cream throughout; there is no dark variant of the marketing pages. The page's only dark moment is the single **fathom-green panel** (`#034f46` with lemon-cream text) — used as a deliberate chapter break, not as a theme. The desktop app (Mac/Windows) carries its own product chrome independent of the site.

The brand position is the same as Granola's: paper is warm, type is literary, and a dark canvas would push Wispr Flow toward the dark-AI-tool category (the very template it is built to avoid). The fathom panel proves the system *can* go dark gracefully — but it does so once, as punctuation.

## 13. Lineage & Influences

Wispr Flow's visual lineage runs through the new wave of "literary productivity" tools that reject the dark-AI-dashboard convention in favour of warm paper and editorial serif. Its closest sibling is **Granola** — both pair a humanist sans with a book serif over a warm, non-white canvas, and both treat a utilitarian AI category (note-taking, dictation) as something closer to stationery. Where Granola uses a single olive voltage, Wispr Flow uses a muted pastel system anchored on lavender; where Granola caps its serif at 68px, Wispr Flow pushes EB Garamond to a frontispiece 120px.

The pastel-CTA-with-dark-ink move borrows from contemporary risograph and indie-print aesthetics: soft, slightly chalky colors (lavender, glow orange, mint) carrying dark text rather than the high-saturation, white-text buttons of mainstream SaaS. The EB Garamond display recalls the broadsheet and book-jacket tradition — Garamond is the canonical text serif of Western publishing, and at 120px it reads as a title page. The lemon-cream canvas is itself a quiet borrowing from cream book stock and uncoated paper, signalling craft and calm over the cold blue-white of a typical web app.

What Wispr Flow rejects: dark mode on the marketing surface, gradient washes, neon-blue AI voltage, white-text saturated buttons, and exclamation-mark microcopy. The brand is premium-editorial: the page is a journal, the type is a Garamond/Figtree duet, and the color is a muted pastel chord rather than a single loud accent.

**Influences:**
- Granola — warm-canvas, serif-display, AI-as-stationery positioning, [granola.ai](https://www.granola.ai)
- EB Garamond — open-source old-style serif as literary display type, [github.com/octaviopardo/EBGaramond12](https://github.com/octaviopardo/EBGaramond12)
- Figtree — open-source geometric-humanist body sans, [fonts.google.com/specimen/Figtree](https://fonts.google.com/specimen/Figtree)
- Anthropic — calm, premium, editorial register for an AI product, [anthropic.com](https://www.anthropic.com)
- Substack — single-canvas editorial site for a writing-adjacent product, [substack.com](https://substack.com)
- Risograph print aesthetic — soft chalky pastels carrying dark ink, [risotto.se](https://risotto.se)

## 14. Do's and Don'ts

**Do**
- Set the canvas to lemon-cream (`#ffffeb`) — the warm paper is the brand floor, never white or grey
- Set display in EB Garamond at book-weight 400, pushing to a large size (the hero rides at 120px / 1.0 line-height)
- Use the lavender pill (`#f0d7ff`) for primary actions with **dark-ink** text — the pastel-with-ink CTA is the fingerprint
- Carry all body, labels, and buttons in Figtree — the serif/sans duet is the type voice
- Reserve the fathom-green panel (`#034f46`) as the single dark chapter break, with lemon-cream text
- Use the glow orange (`#ffa946`) sparingly — attention chips and the waveform glyph only
- Step the radius staircase: 8px inputs, 12px buttons, 16px cards
- Layer surfaces tonally (`#ffffeb` → `#e4e4d0`); lean on hairlines, not shadow stacks
- Keep links ink-colored with a soft underline — links are not lavender
- Use the focus-state blue (`#2d62ff`) for keyboard focus rings — it's the one saturated voltage allowed
- Enable old-style figures (`onum`) inside Garamond display copy

**Don't**
- Don't use white as the page canvas — lemon-cream is the brand; white reads as a different product
- Don't put white text on the lavender pill — the label is always dark ink
- Don't introduce a dark mode for the marketing surface — paper is warm and light, full stop
- Don't let the support pastels (glow, fathom, pulse) compete with lavender — they sit a half-octave below
- Don't make every button fully-pill — buttons relax to 12px; only chips and badges go round
- Don't substitute a neon-blue or indigo accent — that collapses Wispr Flow into the dark-AI-tool template
- Don't apply lavender glow to the CTA on hover — it deepens, it never radiates
- Don't stack shadows for elevation — warm tonal layering and hairlines carry depth
- Don't drop body below 16px — default running text sits at 16px / 1.55, editorial passages at 18px
- Don't use Garamond below ~24px headings — switch to Figtree 600 for compact UI heads
- Don't use exclamation marks in microcopy — the voice is calm and observational
- Don't color inline links lavender — links are ink with a soft underline

## 15. Agent Prompt Guide

### Quick Color Reference

```
Canvas (Lumen):   #ffffeb
Cream-deep:       #e4e4d0
Ink (Vast):       #1a1a1a
Ink-darkest:      #111111
Brand (Dawn):     #f0d7ff   ← CTA pill, DARK-INK label
Fathom green:     #034f46
Glow orange:      #ffa946
Pulse wine:       #7f1c34
Muted:            #666666
Hairline:         rgba(26,26,26,0.30)   (#1a1a1a4d)
Focus ring:       #2d62ff
```

### Example Component Prompts

- "Create a Wispr Flow-style hero: pale lemon-cream canvas (#ffffeb), a 120px EB Garamond serif headline in warm near-black (#1a1a1a) at 1.0 line-height and -0.02em tracking, a 22px Figtree deck beneath in the same ink at 1.45 line-height. Below: a soft lavender pill (#f0d7ff fill, **dark-ink #1a1a1a label**, 12px radius, 14×24px padding, 48px height) labelled 'Download for macOS', paired with a transparent ghost button ('Watch demo') with a 30%-ink hairline border."
- "Design a Wispr Flow fathom-green panel: deep bottle-green surface (#034f46), 16px radius, 40px padding, lemon-cream text (#ffffeb). Inside: a 64px EB Garamond headline and a two-column Figtree body. This is the page's single dark surface — a chapter break inside an otherwise lemon-cream page. No shadow."
- "Build a Wispr Flow cream feature card: deeper lemon-cream fill (#e4e4d0), 16px radius, 32px padding, a 10%-ink hairline (rgba(26,26,26,0.10)), no shadow. Inside: a Figtree 600 card title (#1a1a1a) and 16px / 1.55 Figtree body. Optionally a small glow-orange badge (#ffa946, dark ink, fully-pill) reading 'Beta'."
- "Create the Wispr Flow nav: 64px tall lemon-cream surface (#ffffeb), 1px bottom hairline at rgba(26,26,26,0.30). Wordmark left in Figtree 600. Three centred links (Product, Pricing, Blog) in 14px / 600 Figtree ink. Right side: 'Sign in' text link in ink, then a lavender download pill (#f0d7ff fill, dark-ink label, 12px radius, 'Download for macOS')."
- "Build a Wispr Flow testimonial card: lemon-cream fill (#ffffeb), 16px radius, 1px hairline at rgba(26,26,26,0.10), 32×28px padding, no shadow. Inside: a 32px / 400 EB Garamond pull-quote in #1a1a1a at 1.35 line-height. Beneath: a 40px circular avatar flush left, name in 18px / 600 Figtree ink, role in 12px / 500 Figtree muted (#666666)."
- "Design a Wispr Flow waitlist input: white field (#ffffff), 8px radius, 44px height, 1px hairline at rgba(26,26,26,0.30), placeholder in soft grey (#888888). On focus, border thickens to 50%-ink and a 2px blue focus ring (#2d62ff) appears. A lavender download pill sits flush right of the field, no gap."

### Iteration Guide

1. **Canvas stays lemon-cream.** Anything other than `#ffffeb` — especially pure white — reads as a different brand. The warm paper is the floor.
2. **Garamond display goes big.** The 120px / 1.0 line-height hero is the title-page signal — shrinking it to ~48px or loosening the leading collapses the literary effect.
3. **The CTA is pastel with dark ink.** Lavender `#f0d7ff` with `#1a1a1a` text — never white text, never a saturated button. The dark-on-pastel move is the brand's confidence.
4. **One dark surface only.** The fathom-green panel is a chapter break; don't add a second dark band or a dark mode.
5. **Pastels stay muted and subordinate.** Glow orange, fathom green, and pulse wine support; lavender leads. Don't let any of them out-shout the CTA.
6. **Respect the radius staircase.** 8px inputs → 12px buttons → 16px cards; only chips/badges go fully round.
7. **Tonal elevation, not shadows.** Lift cards with `#e4e4d0` against `#ffffeb`, not drop-shadows.
8. **Body at 16px (18px for editorial passages), all in Figtree.** Keep Garamond for display; switch to Figtree 600 for compact heads under ~24px.
Prose

1. Visual Theme & Atmosphere

Wispr Flow’s site reads like a literary journal that happens to ship a voice-dictation engine. The body canvas is a pale lemon-cream #ffffeb (the --base-color--lumen token) — not white, not grey, but a warm, faintly yellow paper that softens every edge it touches. The hero headline lands in EB Garamond at an enormous 120px on a 1.0 line-height, set in a warm near-black #1a1a1a (--base-color--vast). The leading is title-page tight: the lines stack like a frontispiece rather than a marketing deck, and the serif’s old-style proportions give the whole top of the page a hand-set, book-cover gravity.

The atmosphere is the deliberate opposite of the dark-dashboard AI-tool template. Where Otter, Fireflies, and the broader “AI meeting / transcription” category reach for navy gradients and neon-blue voltage, Wispr Flow reaches for paper. The single action layer is a soft lavender pill (#f0d7ff, the --base-color--dawn token) at a 12px radius, reading “Download for macOS” — and crucially its label is dark ink, not white. A pastel CTA with dark text is a quiet, premium move: it refuses the high-contrast “click me” energy of a saturated button and instead invites rather than shouts.

Body copy runs in Figtree, a friendly geometric-humanist sans with generous apertures and a slightly rounded warmth that pairs naturally with the Garamond display. The serif/sans duet is the brand voice: Garamond carries every headline and pull-quote, Figtree carries every paragraph, label, and button. Hierarchy comes primarily from family swap and size, not from heavy weight modulation — the display layer sits at a comfortable book-weight 400, letting the typeface’s own contrast do the work.

The chromatic system is a muted pastel palette rather than a single accent. Beyond the lavender CTA, the page draws on a warm glow orange (#ffa946) for attention chips and waveform highlights, a deep fathom green (#034f46) for the page’s one inverted panel — where lemon-cream text floats on bottle-green — and a wine-deep pulse (#7f1c34) for rare emphasis and error states. None of these compete with the lavender; they sit a half-octave below it, like the secondary colors in a risograph print.

The cumulative effect is editorial calm with a premium-productivity register. Surfaces lift through warm tonal layering (#ffffeb#e4e4d0) and 30%-ink hairlines rather than shadow stacks. The one dark surface — the fathom-green feature panel — functions as a chapter break, a deep-green spread inserted into an otherwise paper-light book. Voice dictation, the most utilitarian of categories, is dressed here as something closer to a writer’s tool than a transcription utility.

Key Characteristics:

  • Pale lemon-cream canvas (#ffffeb, --base-color--lumen) — warm paper, never white or grey
  • EB Garamond serif display at a huge 120px / 1.0 line-height — title-page leading
  • Figtree humanist sans for all body, labels, and buttons
  • Single action voltage: soft lavender pill (#f0d7ff, --base-color--dawn) with dark-ink label
  • Muted pastel support system: glow orange (#ffa946), fathom green (#034f46), pulse wine (#7f1c34)
  • One inverted dark surface only — the fathom-green feature panel — used as a chapter break
  • Warm near-black ink (#1a1a1a) for body; deepest #111 reserved for peak display
  • Tonal elevation (#ffffeb#e4e4d0); 30%-ink hairlines, minimal shadow chrome
  • 12px radius on the CTA, 16px on cards — soft but not fully-pill
  • Serif/sans duet (Garamond + Figtree) as the entire type voice
  • Calm, premium, literary register — the antithesis of the dark-AI-dashboard template

2. Color Palette & Roles

Primary

  • Canvas / Lumen (#ffffeb) [→ --base-color--lumen]: the pale lemon-cream floor for every public page — warm paper.
  • Ink / Vast (#1a1a1a) [→ --base-color--vast]: the dominant text color — warm near-black, distinct from pure #000.
  • Ink Darkest (#111111) [→ --base-color-neutral--neutral-darkest]: peak display copy, the deepest ink on the page.
  • Brand / Dawn (#f0d7ff) [→ --base-color--dawn]: the soft lavender CTA pill — the single action voltage. Always carries dark-ink text.

Brand & Inverted

  • Brand Ink (#1a1a1a): the label color sitting on the lavender pill — dark, never white.
  • Brand Hover (#e8c6ff): pressed/hover state — lavender deepens a half-step.
  • Surface / Fathom (#034f46) [→ --base-color--fathom]: deep bottle-green — the inverted feature panel surface, the page’s one dark moment.
  • On Surface (#ffffeb): lemon-cream text used on the fathom-green panel.

Accent

  • Glow (#ffa946) [→ --base-color--glow]: warm orange — attention chips, waveform highlight, “Beta” micro-labels.
  • Fathom (#034f46) [→ --base-color--fathom]: deep green, doubled as accent for inline marks on light surfaces.
  • Pulse (#7f1c34) [→ --base-color--pulse]: wine-deep — rare emphasis, and the basis for the error ink.

Interactive

  • Link (#1a1a1a): inline body links — ink with a soft 30%-hairline underline always present.
  • Link Hover (#000000): hover — ink darkens to near-black, underline thickens 1 → 1.5px.
  • Selected (#f0d7ff fill, #1a1a1a text on toggle pills).
  • Focus Ring (#2d62ff) [→ --base-color-system--focus-state]: a vivid blue focus ring — the one cool, saturated color on the page, reserved for keyboard focus.
  • Disabled (#888888 text, #e4e4d0 fill): drained warm grey on deep cream.

Neutral Scale

  • Ink Darkest (#111111) [→ --neutral-darkest] — peak display copy
  • Ink / Vast (#1a1a1a) [→ --vast] — body, primary nav
  • Neutral (#666666) [→ --base-color-neutral--neutral] — captions, byline, timestamp (muted)
  • Soft (#888888) — disabled link text, placeholder
  • Light scale (#aaa, #ccc, #eee) [→ --neutral-light--neutral-lightest] — dividers, faint UI strokes

Surface & Borders

  • Canvas / Lumen (#ffffeb) — page floor
  • Lumen Dark (#e4e4d0) [→ --base-color--lumen-dark] — deeper lemon-cream for nested panels and cards
  • Fathom (#034f46) — inverted dark panel
  • White (#ffffff) [→ --base-color--white] — used sparingly for chips, inset fields, announcement pills
  • Hairline (#1a1a1a4d) [→ --border-color--border-primary] — default 30%-ink border
  • Hairline Soft (#1a1a1a1a) — 10%-ink for subtle dividers
  • Hairline Strong (#1a1a1a80) — 50%-ink for focused inputs

Shadow Colors

Wispr Flow uses warm-tinted shadows — rgba(26, 26, 15, …) rather than pure black, matching the page’s warm ink temperature. Shadows are minimal and reserved for hover and elevated surfaces; the system trusts tonal layering and hairlines for most depth. There is no brand-tinted (lavender) glow on CTA hover.

  • rgba(26,26,15,0.05) 0 1px 2px 0 — ambient
  • rgba(26,26,15,0.05) 0 4px 12px -2px — card / button hover
  • rgba(26,26,15,0.10) 0 12px 24px -8px, rgba(26,26,15,0.05) 0 4px 8px -2px — elevated dropdown / popover

Semantic

  • Success (#114e0b ink on #cef5ca surface) [→ --success-green-dark / --success-green] — confirmation; a pale mint surface with deep-green ink
  • Warning (#5e5515 ink on #fcf8d8 surface) [→ --warning-yellow-dark / --warning-yellow] — advisory; muted ochre on pale lemon
  • Danger (#7f1c34 ink on #f8e4e4 surface) [→ pulse / --error-red] — form-error; wine ink on pale rose
  • Focus (#2d62ff) [→ --focus-state] — keyboard focus ring blue

3. Typography Rules

Font Family

Display Primary: EB Garamond — the open-source revival of Claude Garamond’s old-style serif, carrying every headline and pull-quote. Fallback chain: "Tiempos Text", "Iowan Old Style", Georgia, serif. EB Garamond runs at book-weight 400 for the hero and most display moments, stepping to 500/600 only at smaller h3-h4 sizes. Its old-style figures (onum) and humanist proportions give the page its literary, hand-set gravity.

Body Primary: Figtree — a friendly geometric-humanist sans with open apertures and a faint warmth. Fallback chain: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif. Figtree carries all running text, labels, buttons, and captions across weights 400, 500, 600.

Mono companion: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace — used only for keyboard-shortcut callouts (the global dictation hotkey) and rare inline code.

OpenType features: kern and liga always on. onum (oldstyle figures) enabled on EB Garamond display copy — numerals gain a literary, in-line-with-lowercase feel inside running serif text. No swash or smallcaps.

Hierarchy

RoleFontSizeWeightLine HeightLetter SpacingOT FeaturesNotes
display-heroEB Garamond1204001.00-0.02emkern, liga, onumHero headline — the peak typographic moment, title-page leading
display-xlEB Garamond804001.02-0.02emkern, ligaSecondary hero / section opener
display-lgEB Garamond644001.05-0.015emInverted fathom-panel headline
h1EB Garamond484001.08-0.012emSection h1 on light surface
h2EB Garamond364001.15-0.008emFeature spread h2
h3EB Garamond285001.25-0.004emSub-feature opener — steps to weight 500
h4Figtree226001.300Card title — switches to the sans for smaller heads
deck-lgFigtree224001.450Hero deck beneath the Garamond headline
deck-mdFigtree204001.500Sub-section deck
title-lgFigtree206001.350Card title on cream feature card
title-mdFigtree186001.400Sub-card title, footer column heads
body-lgFigtree184001.550Long-form body inside testimonials
body-mdFigtree164001.550Default running-text
body-smFigtree144001.500Card meta, captions
captionFigtree125001.400.02emTimestamp, byline, chip text
labelFigtree135001.400.01emForm labels, inline UI labels
overlineFigtree116001.300.08emuppercaseSection eyebrow above display copy
button-lgFigtree166001.200Primary lavender pill label
button-mdFigtree146001.200Secondary / nav button
quoteEB Garamond324001.35-0.005emPull-quote inside testimonial card
codemono144001.500Keyboard-shortcut callout

Principles

  • The serif/sans duet is the brand voice. EB Garamond carries every display moment; Figtree carries every body, label, and button moment. Hierarchy comes from family swap and size, not from heavy weight modulation.
  • Title-page leading at the largest size. The 120px hero rides at 1.0 line-height — the unusually tight leading is what gives the page its frontispiece feel rather than a marketing deck.
  • Book-weight display. The Garamond display layer holds weight 400 through h2; it only firms to 500/600 once it drops to h3/h4 size, where the serif’s contrast needs the help.
  • Sans takes over below ~24px headings. h4 and card titles switch from Garamond to Figtree 600 — the serif’s small-size legibility yields to the sans for compact UI heads.
  • 16px body is the floor, 18px for editorial passages. Default body sits at 16px / 1.55; long testimonial and feature copy steps up to 18px for magazine readability.
  • Negative tracking only on Garamond display. Display sizes tighten from -0.02em (hero) toward 0 as they shrink. Figtree body and labels sit at zero or slightly positive tracking.
  • Old-style figures in serif display. onum on Garamond gives numerals a literary, lowercase-aligned feel inside running serif text.
  • EB Garamond + Figtree are both freely available. EB Garamond (OFL) and Figtree (OFL) make this pairing directly reproducible — no proprietary foundry license required.

4. Component Stylings

Buttons

cta-lavender — The signature primary. #f0d7ff (Dawn) fill, dark-ink #1a1a1a label at 16px / 600, 12px radius, 14×24px padding, 48px height. Used for “Download for macOS”, “Download for Windows”, “Get started”. The dark-on-pastel treatment is the brand fingerprint — it invites rather than shouts. Never white text.

cta-lavender-hover — Pointer hover. Lavender deepens to #e8c6ff over 240ms, optionally gaining the faint ambient shadow. No scale, no transform. The hover is color-only.

button-ink — Secondary high-contrast action. #1a1a1a ink fill, lemon-cream #ffffeb label at 14px / 600, 12px radius, 12×22px padding, 44px height. Pairs beside the lavender pill when a darker secondary is needed (e.g. “View pricing”).

button-ghost — Tertiary. Transparent fill, ink label, 1px 30%-ink hairline border (#1a1a1a4d), 12px radius, 12×22px padding. Used for “Watch demo” / “See how it works” beside the primary CTA.

Cards

fathom-panel-card — The signature dark surface. #034f46 deep bottle-green fill, lemon-cream #ffffeb text, 16px radius, 40px padding. Holds an inverted feature spread — the page’s one dark moment, functioning as a chapter break inside an otherwise paper-light book.

feature-card-cream — Soft lemon-cream feature panel. #e4e4d0 (Lumen Dark) fill, 16px radius, 10%-ink hairline (#1a1a1a1a), 32px padding. Flat, no shadow. Used for the bulk of feature blocks where cream-on-cream tonal layering reads as elevation.

testimonial-quote — Pull-quote card. Lemon-cream #ffffeb fill, 16px radius, 10%-ink hairline, 32×28px padding. Quote in 32px / 400 EB Garamond, byline beneath in 12px / 500 Figtree muted with a 40px circular avatar flush left.

feature-spread — Full-bleed editorial spread. No card chrome. EB Garamond headline, Figtree body, screenshots sit inline on the lemon-cream floor. Used for “How Wispr Flow works” walkthrough sections.

Badges, Tags, Pills

badge-lavender — Inline category tag (“New”, “Mac”). #f0d7ff fill, dark-ink text, 9999px radius, 4×12px padding, 12px / 500 caption.

badge-glow — Attention chip (“Beta”, announcement micro-label). #ffa946 (Glow) fill, dark-ink text, 9999px radius, 4×12px padding. The one warm-orange moment.

announcement-chip — Hero announcement pill. White #ffffff fill, dark-ink text, 9999px radius, 6×14px padding, 1px 30%-ink border. Sits at the top of the hero, single instance per page — white-on-lemon contrast makes it read as a distinct affordance.

Inputs / Forms

text-input — White #ffffff fill, 1px 30%-ink hairline (#1a1a1a4d), 8px radius, 44px height, 10×14px padding. Placeholder in 16px / 400 soft grey (#888888). On focus, border thickens to 50%-ink (#1a1a1a80) and a 2px focus-state blue ring (#2d62ff) appears. Note the input radius (8px) is smaller than the button radius (12px) and card radius (16px) — a deliberate radius step-down for fine controls.

email-input-hero — Inline waitlist / email signup. White fill, hairline, 8px radius, 44px height. The lavender pill CTA sits flush right, forming a combined affordance — rectangular-rounded input plus softer-rounded pill.

top-nav — Lemon-cream surface, 64px height, 1px bottom hairline. Wordmark flush left in Figtree 600, three nav links centred (Product, Pricing, Blog) in 14px / 600 Figtree ink, “Sign in” text + lavender “Download” pill flush right.

nav-link — Ink (#1a1a1a), no underline at rest. Hairline underline appears on hover. Active page gets a 1.5px ink underline.

link-inline — Ink with a soft 30%-ink hairline underline always present; underline darkens and thickens to 1.5px on hover. No colored-link convention — links are ink, not lavender.

Decorative

waveform-glyph — A voice-dictation waveform mark, rendered in the glow orange (#ffa946), that pulses on the live-demo loop. The one animated brand glyph — it ties the visual system to the product’s voice-input nature.

pull-quote-flourish — An EB Garamond " glyph in fathom green at 64px sometimes appears flush left of a pull-quote, decoratively.

5. Layout Principles

Spacing System

  • Base unit: 4px
  • Scale: 0 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96
  • Section padding (vertical): 64–96px for major bands — generous editorial cadence
  • Card internal padding: 40px on the fathom-green panel, 32px on cream feature cards, 24px on smaller nested panels
  • Inter-card gutters: 24px between feature cards in a 3-up grid; 16px in dense 4-up grids

Grid & Container

  • Max content width: ~1280px on the inner grid with 24px gutters
  • Prose width: ~720px for long-form testimonial body — narrower than the page gutter so reading flow stays magazine-tight
  • Header height: 64px fixed top-nav
  • Feature grid pattern: 3-up at desktop, 2-up at tablet, 1-up at mobile

Whitespace Philosophy

The page is composed as a sequence of editorial spreads — each section gets 64–96px of vertical breathing room. The cadence is closer to a magazine than a scroll-tracked SaaS dashboard. Lemon-cream runs edge-to-edge between sections; cards lift via the deeper #e4e4d0 cream rather than shadow. The 24px gutters around the 1280px max-width container leave generous side margin even at desktop widths.

Section Cadence

A typical Wispr Flow page runs:

  1. Lemon-cream hero (120px EB Garamond display, 22px Figtree deck, lavender download pill)
  2. Live-demo / waveform band (the product’s voice-dictation loop on lemon-cream)
  3. Feature stack (3-up cream cards on lemon-cream, with badges)
  4. Fathom-green panel spread (the one inverted dark surface — a chapter break)
  5. Testimonial spread (lemon-cream surface, 32px Garamond pull-quotes, byline and avatars)
  6. Pricing band (cream cards, lavender pill inside the recommended tier)
  7. Editorial closer (Garamond headline, Figtree deck, single lavender pill CTA)
  8. Footer (Figtree title-md column heads, body-sm muted links)

Light/dark alternation is replaced with cream / deeper-cream alternation (#ffffeb and #e4e4d0), punctuated by the single fathom-green panel.

6. Shapes & Radius Scale

TierValueUse
Micro2pxFine UI strokes, tightest inline marks
Small4pxInternal sub-elements inside cards
Standard8pxText inputs, fine controls
Relaxed12pxAll buttons (primary, secondary, ghost)
Featured16pxFeature cards, fathom panel, testimonial card
Pill9999pxBadges, chips, toggle pills

Wispr Flow’s shape voice is soft but restrained — the CTA sits at a friendly 12px (not fully-pill), cards relax to 16px, and only small chips and badges go fully round (9999px). The progression input (8px) → button (12px) → card (16px) is a deliberate radius staircase: the smaller the element, the tighter the corner.

There are no compound radii. Every shape rounds uniformly on all four corners.

7. Depth & Elevation

LevelTreatmentUse
0 — Flatno shadowCanvas, hero, feature spreads, cream cards, fathom panel (~90% of surfaces)
1 — Ambientrgba(26,26,15,0.05) 0 1px 2px 0Top-nav at scroll, very subtle inputs
2 — Card / button hoverrgba(26,26,15,0.05) 0 4px 12px -2pxLavender pill hover, optional card hover
3 — Elevatedrgba(26,26,15,0.10) 0 12px 24px -8px, rgba(26,26,15,0.05) 0 4px 8px -2pxDropdowns, popovers
4 — Modalscrim rgba(17,17,10,0.50) + dialog with elevated shadowSign-in / waitlist modal

Shadow Philosophy

Wispr Flow is a warm-tonal-elevation system, not a shadow-elevation system. Depth comes almost entirely from warm tonal layering (#ffffeb#e4e4d0) and 30%-ink hairlines. Shadows are reserved for hover feedback on the CTA, elevated dropdowns, and modals. The marketing chrome itself is flat. There is no brand-tinted (lavender) glow — the lavender pill never radiates; it deepens on hover instead. The warm cream tones and the single fathom-green panel carry the page’s sense of layer.

8. Interaction & Motion

Easing

  • Standard: cubic-bezier(0.4, 0, 0.2, 1) — default for hover state color swaps, hairline transitions
  • Emphasized: cubic-bezier(0.2, 0, 0, 1) — modal entry, waveform demo loop
  • Out-soft: cubic-bezier(0.0, 0, 0.2, 1) — section reveals on scroll

Durations

BucketValueUse
Fast150msHairline tone swaps, focus-ring fades
Standard240msButton hover, link color shifts, card surface deepening
Slow320msModal entry, section scroll-reveal, waveform pulse cycle

Per-Component Recipes

  • Lavender pill hover: background #f0d7ff#e8c6ff over 240ms standard, optional ambient shadow fade-in. No scale, no glow. The pill stays grounded.
  • Ink button hover: background #1a1a1a#000000 over 240ms; lemon-cream label unchanged.
  • Cream card hover: surface darkens fractionally over 240ms; no lift, no translate.
  • Link hover: ink darkens toward #000 over 150ms; the 30%-ink underline thickens 1 → 1.5px and darkens.
  • Waveform pulse: the demo waveform glyph animates in the glow orange (#ffa946) on a slow ~320ms loop, syncing to the simulated voice input.
  • Scroll reveal: sections fade in with a 12px translate-up over 320ms ease-out-soft when entering viewport (one-shot, then static).
  • Modal enter: scrim fades in over 240ms, then dialog scales 0.96 → 1.0 and fades from opacity 0 → 1 over 320ms emphasized.

Page Transitions

Page-to-page navigation uses a 320ms cross-fade. The fixed top-nav stays static; only the body band fades. Smooth-scroll anchored links use 600ms emphasized easing.

Reduced Motion

Respects prefers-reduced-motion: reduce. All translate and scale transforms suppress. The waveform pulse becomes a static glyph. Scroll-reveal becomes an instant render-on-mount. Hover states degrade to color-only.

9. Accessibility & A11y

Contrast Pairs

PairRatioLevel
#1a1a1a ink on #ffffeb canvas17.2AAA
#111111 ink-darkest on #ffffeb18.66AAA
#1a1a1a ink on #f0d7ff lavender CTA13.15AAA
#ffffeb on #034f46 fathom panel9.39AAA
#ffffff on #034f46 fathom panel9.50AAA
#1a1a1a on #e4e4d0 deep-cream card13.51AAA
#114e0b on #cef5ca success surface8.28AAA
#5e5515 on #fcf8d8 warning surface7.02AAA
#7f1c34 pulse on #ffffeb9.80AAA
#666666 muted on #ffffeb5.68AA body
#2d62ff focus-state on #ffffeb4.82AA (non-text ring)

The dark-ink-on-pastel CTA is the standout: at 13.15:1 the lavender pill passes AAA even though it reads as a soft, low-energy button — proof that a pastel action surface need not sacrifice legibility when paired with ink rather than white.

Focus Indicators

Focus ring is 2px solid #2d62ff (the focus-state blue) with 2px outline-offset — the one cool, saturated color on the page, used deliberately so keyboard focus is unmistakable against the warm cream. Focus-visible suppresses the ring on mouse interactions and preserves it on keyboard navigation.

ARIA Patterns

  • Top nav: standard <nav> landmark with aria-label="Primary". The “Download” pill is an <a> to the installer (platform-detected) or a <button> opening a download modal.
  • Hero waitlist / signup: <form> with aria-label="Sign up for Wispr Flow". Inline email input + CTA render as separate elements for assistive tech.
  • Live-demo waveform: decorative — marked aria-hidden="true". The demo text it produces is exposed as real text, not an image.
  • Modal (sign-in / download): focus trap, Esc closes, click outside closes, focus returns to trigger.
  • Pricing tiers: a role="radiogroup" for monthly/annual toggles, with aria-checked reflecting selection.

Keyboard Navigation

  • Top nav: Tab moves logo → nav links → Sign in → Download pill
  • Hero signup: Tab focuses input then CTA. Enter from input submits.
  • Pricing tier cards: Tab moves card → card; arrow keys do not navigate
  • All interactive controls reachable; visible 2px blue focus ring on each

Screen Reader Hints

The waveform demo is decorative and hidden from screen readers; its produced text is exposed as live, selectable text. The fathom-green panel’s contrast is verified AAA so inverted text needs no special handling. Badges convey status through text content, not color alone (e.g. “Beta” label inside the glow chip).

Reduced Motion

All transitions degrade to opacity-only. The waveform pulse becomes static. Scroll-reveal becomes render-on-mount. Hover states lose any translate; only color shifts remain.

10. Responsive Behavior

Breakpoints

NameWidthKey Changes
Mobile<640pxTop nav collapses to logo + hamburger; hero h1 drops 120 → 44px; feature cards 1-up; CTAs stack vertically; fathom panel padding 40 → 24px
Tablet640–1024pxTop nav keeps inline links; hero h1 settles at ~72px; feature cards 2-up
Desktop1024–1280pxFull top nav; hero h1 at 120px; feature cards 3-up
Wide>1280pxContent width caps at 1280px; gutters absorb the rest

Touch Targets

  • Lavender pill CTA: 48px height — passes WCAG AAA at 14×24 padding
  • Ink secondary button: 44px height — passes WCAG AA
  • Email input field: 44px height
  • Inline link tap-target: 44px row height even at 16px / 1.55 body type (line-height adds spacing)

Collapsing Strategy

  • Top nav links collapse into a hamburger sheet below 640px
  • Hero CTA + secondary stack vertically on mobile
  • Fathom-green panel reduces padding (40 → 24px) and stacks its inner two-column content
  • Feature grids: 3 → 2 → 1 columns; never reflow rows

Image Behavior

Product screenshots and the waveform demo respect their intrinsic aspect ratios at all viewport widths. On the fathom panel, inverted-on-green imagery keeps a 16px radius and a faint 10%-cream inner hairline to separate from the deep-green surface.

Container Queries

Used on the feature cards to swap from horizontal (icon-left) to stacked (icon-top) layout at the card’s own ~360px width threshold, independent of viewport.

11. Content & Voice

Tone

Calm, confident, plainspoken — premium without being precious. Wispr Flow positions itself as a tool for people who write and speak for a living, trusting the reader to grasp the value (faster, more natural input than typing) without overselling. Headlines lean on the Garamond display to do the emotional work, so the copy itself stays restrained and direct.

Microcopy Patterns

  • Button verbs: “Download for macOS”, “Download for Windows”, “Get started”, “Sign in” — direct, platform-named, never “Submit” or “Click here”
  • Error message recipe: [What went wrong] + [What to try next] — e.g., “We couldn’t reach the mic. Check your input permissions and try again.”
  • Success confirmations: short, personal — “Flow is ready.” or “You’re all set.” rather than generic “Success!”
  • Field labels: conversational — “Where should we send your download link?” not “Email”

Empty States

The empty dictation history: “Nothing here yet. Press your hotkey and start talking.” — observational, action-prompting.

The empty workspace state: “Your transcripts will appear here as you dictate.” — future-tense, anticipatory.

CTA Verb Conventions

  • Primary action: “Download for macOS” / “Download for Windows” (hero, nav), “Get started” (post-hero)
  • Secondary action: “Watch demo”, “See how it works” (tertiary, ghost button)
  • Tertiary text: “View pricing”, “Read the docs”
  • Avoided: “Submit”, “Click here”, “Buy now” — Wispr Flow frames the relationship as downloading and using, not buying

12. Dark Mode & Theming

Light-only marketing surface. The public site stays lemon-cream throughout; there is no dark variant of the marketing pages. The page’s only dark moment is the single fathom-green panel (#034f46 with lemon-cream text) — used as a deliberate chapter break, not as a theme. The desktop app (Mac/Windows) carries its own product chrome independent of the site.

The brand position is the same as Granola’s: paper is warm, type is literary, and a dark canvas would push Wispr Flow toward the dark-AI-tool category (the very template it is built to avoid). The fathom panel proves the system can go dark gracefully — but it does so once, as punctuation.

13. Lineage & Influences

Wispr Flow’s visual lineage runs through the new wave of “literary productivity” tools that reject the dark-AI-dashboard convention in favour of warm paper and editorial serif. Its closest sibling is Granola — both pair a humanist sans with a book serif over a warm, non-white canvas, and both treat a utilitarian AI category (note-taking, dictation) as something closer to stationery. Where Granola uses a single olive voltage, Wispr Flow uses a muted pastel system anchored on lavender; where Granola caps its serif at 68px, Wispr Flow pushes EB Garamond to a frontispiece 120px.

The pastel-CTA-with-dark-ink move borrows from contemporary risograph and indie-print aesthetics: soft, slightly chalky colors (lavender, glow orange, mint) carrying dark text rather than the high-saturation, white-text buttons of mainstream SaaS. The EB Garamond display recalls the broadsheet and book-jacket tradition — Garamond is the canonical text serif of Western publishing, and at 120px it reads as a title page. The lemon-cream canvas is itself a quiet borrowing from cream book stock and uncoated paper, signalling craft and calm over the cold blue-white of a typical web app.

What Wispr Flow rejects: dark mode on the marketing surface, gradient washes, neon-blue AI voltage, white-text saturated buttons, and exclamation-mark microcopy. The brand is premium-editorial: the page is a journal, the type is a Garamond/Figtree duet, and the color is a muted pastel chord rather than a single loud accent.

Influences:

14. Do’s and Don’ts

Do

  • Set the canvas to lemon-cream (#ffffeb) — the warm paper is the brand floor, never white or grey
  • Set display in EB Garamond at book-weight 400, pushing to a large size (the hero rides at 120px / 1.0 line-height)
  • Use the lavender pill (#f0d7ff) for primary actions with dark-ink text — the pastel-with-ink CTA is the fingerprint
  • Carry all body, labels, and buttons in Figtree — the serif/sans duet is the type voice
  • Reserve the fathom-green panel (#034f46) as the single dark chapter break, with lemon-cream text
  • Use the glow orange (#ffa946) sparingly — attention chips and the waveform glyph only
  • Step the radius staircase: 8px inputs, 12px buttons, 16px cards
  • Layer surfaces tonally (#ffffeb#e4e4d0); lean on hairlines, not shadow stacks
  • Keep links ink-colored with a soft underline — links are not lavender
  • Use the focus-state blue (#2d62ff) for keyboard focus rings — it’s the one saturated voltage allowed
  • Enable old-style figures (onum) inside Garamond display copy

Don’t

  • Don’t use white as the page canvas — lemon-cream is the brand; white reads as a different product
  • Don’t put white text on the lavender pill — the label is always dark ink
  • Don’t introduce a dark mode for the marketing surface — paper is warm and light, full stop
  • Don’t let the support pastels (glow, fathom, pulse) compete with lavender — they sit a half-octave below
  • Don’t make every button fully-pill — buttons relax to 12px; only chips and badges go round
  • Don’t substitute a neon-blue or indigo accent — that collapses Wispr Flow into the dark-AI-tool template
  • Don’t apply lavender glow to the CTA on hover — it deepens, it never radiates
  • Don’t stack shadows for elevation — warm tonal layering and hairlines carry depth
  • Don’t drop body below 16px — default running text sits at 16px / 1.55, editorial passages at 18px
  • Don’t use Garamond below ~24px headings — switch to Figtree 600 for compact UI heads
  • Don’t use exclamation marks in microcopy — the voice is calm and observational
  • Don’t color inline links lavender — links are ink with a soft underline

15. Agent Prompt Guide

Quick Color Reference

Canvas (Lumen):   #ffffeb
Cream-deep:       #e4e4d0
Ink (Vast):       #1a1a1a
Ink-darkest:      #111111
Brand (Dawn):     #f0d7ff   ← CTA pill, DARK-INK label
Fathom green:     #034f46
Glow orange:      #ffa946
Pulse wine:       #7f1c34
Muted:            #666666
Hairline:         rgba(26,26,26,0.30)   (#1a1a1a4d)
Focus ring:       #2d62ff

Example Component Prompts

  • “Create a Wispr Flow-style hero: pale lemon-cream canvas (#ffffeb), a 120px EB Garamond serif headline in warm near-black (#1a1a1a) at 1.0 line-height and -0.02em tracking, a 22px Figtree deck beneath in the same ink at 1.45 line-height. Below: a soft lavender pill (#f0d7ff fill, dark-ink #1a1a1a label, 12px radius, 14×24px padding, 48px height) labelled ‘Download for macOS’, paired with a transparent ghost button (‘Watch demo’) with a 30%-ink hairline border.”
  • “Design a Wispr Flow fathom-green panel: deep bottle-green surface (#034f46), 16px radius, 40px padding, lemon-cream text (#ffffeb). Inside: a 64px EB Garamond headline and a two-column Figtree body. This is the page’s single dark surface — a chapter break inside an otherwise lemon-cream page. No shadow.”
  • “Build a Wispr Flow cream feature card: deeper lemon-cream fill (#e4e4d0), 16px radius, 32px padding, a 10%-ink hairline (rgba(26,26,26,0.10)), no shadow. Inside: a Figtree 600 card title (#1a1a1a) and 16px / 1.55 Figtree body. Optionally a small glow-orange badge (#ffa946, dark ink, fully-pill) reading ‘Beta’.”
  • “Create the Wispr Flow nav: 64px tall lemon-cream surface (#ffffeb), 1px bottom hairline at rgba(26,26,26,0.30). Wordmark left in Figtree 600. Three centred links (Product, Pricing, Blog) in 14px / 600 Figtree ink. Right side: ‘Sign in’ text link in ink, then a lavender download pill (#f0d7ff fill, dark-ink label, 12px radius, ‘Download for macOS’).”
  • “Build a Wispr Flow testimonial card: lemon-cream fill (#ffffeb), 16px radius, 1px hairline at rgba(26,26,26,0.10), 32×28px padding, no shadow. Inside: a 32px / 400 EB Garamond pull-quote in #1a1a1a at 1.35 line-height. Beneath: a 40px circular avatar flush left, name in 18px / 600 Figtree ink, role in 12px / 500 Figtree muted (#666666).”
  • “Design a Wispr Flow waitlist input: white field (#ffffff), 8px radius, 44px height, 1px hairline at rgba(26,26,26,0.30), placeholder in soft grey (#888888). On focus, border thickens to 50%-ink and a 2px blue focus ring (#2d62ff) appears. A lavender download pill sits flush right of the field, no gap.”

Iteration Guide

  1. Canvas stays lemon-cream. Anything other than #ffffeb — especially pure white — reads as a different brand. The warm paper is the floor.
  2. Garamond display goes big. The 120px / 1.0 line-height hero is the title-page signal — shrinking it to ~48px or loosening the leading collapses the literary effect.
  3. The CTA is pastel with dark ink. Lavender #f0d7ff with #1a1a1a text — never white text, never a saturated button. The dark-on-pastel move is the brand’s confidence.
  4. One dark surface only. The fathom-green panel is a chapter break; don’t add a second dark band or a dark mode.
  5. Pastels stay muted and subordinate. Glow orange, fathom green, and pulse wine support; lavender leads. Don’t let any of them out-shout the CTA.
  6. Respect the radius staircase. 8px inputs → 12px buttons → 16px cards; only chips/badges go fully round.
  7. Tonal elevation, not shadows. Lift cards with #e4e4d0 against #ffffeb, not drop-shadows.
  8. Body at 16px (18px for editorial passages), all in Figtree. Keep Garamond for display; switch to Figtree 600 for compact heads under ~24px.
Ship with this

Drop wispr-flow into your project, then ship the actual sections in an afternoon.

1 · install design
npx @webdesignhot/design-md add wispr-flow
2 · ship landing page
npx agentkit init --design wispr-flow
How AgentKit reads DESIGN.md