Skip to content
Design system

The look. The feel.
The rules.

Tokens, components, and patterns that make NoReply look like NoReply. The current source of truth - if it's not here, it's not the system yet.

Colour

Brand chip palette

The six marker colours - Coral, Peach, Yellow, Lavender, Mint, Cream - each defined as a full OKLCH scale. Step 500 is the brand tone; 200-300 for soft chip backgrounds, 600-700 for interactive, 800+ for text on light.

Coral

OKLCH hue 28
coral-50
coral-100
coral-200
coral-300
coral-400
coral-500
coral-600
coral-700
coral-800
coral-900
coral-950

Peach

OKLCH hue 60
peach-50
peach-100
peach-200
peach-300
peach-400
peach-500
peach-600
peach-700
peach-800
peach-900
peach-950

Yellow

OKLCH hue 95
yellow-50
yellow-100
yellow-200
yellow-300
yellow-400
yellow-500
yellow-600
yellow-700
yellow-800
yellow-900
yellow-950

Lavender

OKLCH hue 320
lavender-50
lavender-100
lavender-200
lavender-300
lavender-400
lavender-500
lavender-600
lavender-700
lavender-800
lavender-900
lavender-950

Mint

OKLCH hue 170
mint-50
mint-100
mint-200
mint-300
mint-400
mint-500
mint-600
mint-700
mint-800
mint-900
mint-950

Cream

OKLCH hue 85
cream-50
cream-100
cream-200
cream-300
cream-400
cream-500
cream-600
cream-700
cream-800
cream-900
cream-950

Neutrals - chrome, borders, type (forest scale)

forest-50
forest-100
forest-200
forest-300
forest-400
forest-500
forest-600
forest-700
forest-800
forest-900
forest-950
background
card
muted
accent
Typography

Editorial Cooper, friendly Nunito

Cooper Light handles every H1 and H2 for the editorial feel. Nunito covers body and UI. A rounded UI font handles the wordmark only.

font-cooper · Cooper Light

The quick brown fox.

font-cooper · scale

Aa - 60px

Aa - 48px

Aa - 36px

Aa - 30px

Aa - 24px

font-sans · Nunito (body + UI)

The quick brown fox jumps over the lazy dog. 0123456789. {} [] /\ & @ # $ %.

Smaller text used for secondary copy and metadata.

font-rounded · system rounded

NoReply

Eyebrow

Marker tag chips

A small rotated coloured pill that sits above headings. 2px corner radius, hand-placed rotation per instance via --chip-rotate.

CoralPeachYellowLavenderMintCream

Usage

<span
  className="tag-chip tag-chip-coral"
  style={{ "--chip-rotate": "-1.5deg" } as React.CSSProperties}
>
  Eyebrow text
</span>
Highlight

Marker highlights

A solid colour band painted behind text with subtle rounded corners. Multiply blend lets the paper speckle show through.

Get your money back in minutes.

Less than a coffee a week.

Backed by UK consumer law.

The savvy friend who reads the small print.

Refunds, in about three weeks.

Action

Buttons

Hit target ≥ 44px on mobile. Use lg for primary CTAs on landing pages, default for in-app actions, sm for toolbars and dense UI.

Form

Inputs

44px on mobile (touch target), 40px on desktop. 16px text on mobile to prevent iOS zoom. Coral focus ring.

Surface

Cards and elevation

Hairline borders + stacked shadows. Inner radius equals outer radius minus padding.

shadow-xs

Default surface for inline cards and inputs.

shadow-md

Floating menus, popovers, the mega-menu panel.

deep stack

Auth card. Stacked shadow for the page's primary surface.

Texture

Paper speckle

Two SVG-tile speckle variants. Faint sits on the page wrapper outside the rail; medium lives inside marketing sections.

.bg-paper-speckle-faint.bg-paper-speckle
Motion

Animation tokens

Use these tokens before reaching for inline cubic-beziers. Animations honour prefers-reduced-motion globally.

  • --ease-defaultcubic-bezier(0.4, 0, 0.2, 1)
  • --duration-fast150ms
  • --duration-normal200ms
  • --duration-slow300ms
Reference

Where to dig deeper

The system lives in code. These are the files to read or grep.

  • app/globals.cssTokens, primitives, marker, tag-chip, paper-speckle, marketing-section utilities
  • CLAUDE.mdBrand voice, Charlie character, design quality & motion mandates
  • AGENTS.mdQuick reference for automated agents
  • components/ui/*All shadcn primitives - button, input, card, dialog, etc.