light · bold · sans · fintech · coral

DESIGN.md inspired by Monzo

Hot Coral `#ff4f40` on bright white, MonzoSans humanist geometry, and a transparent challenger-bank warmth.

By webdesignhot · monzo.com
$ npx @webdesignhot/design-md add monzo
Learn more about the CLI
Compare to…
try on →
theme
1440 × 900
mobile · 390 × 844
Tokens webdesignhot/0.1
  • bg #ffffff
  • surface #ffffff
  • surface-soft #fafafa
  • surface-coral-tint #fff1ef
  • surface-navy #091723
  • surface-navy-soft #13283a
  • text AAA · 21.0 #000000
  • text-body #1a1a1a
  • text-muted #5b5b5b
  • text-subtle #8a8a8a
  • text-on-navy #ffffff
  • text-on-navy-muted #b8c2cc
  • brand AA·LG · 3.3 #ff4f40
  • brand-hover #ff6557
  • brand-deep #e83b2d
  • brand-ink #c42d22
  • brand-soft #fff1ef
  • on-brand #ffffff
  • navy #091723
  • navy-hover #13283a
  • on-navy #ffffff
  • link #c42d22
  • link-hover #ff4f40
  • border — · 1.3 #e4e4e4
  • border-strong AAA · 21.0 #000000
  • border-soft #f0f0f0
  • border-focus #091723
  • border-on-navy rgba(255, 255, 255, 0.16)
  • semantic-success #1f8a4c
  • semantic-warning #c77700
  • semantic-danger #d23b2e
  • semantic-info #091723
  • focus-ring rgba(9, 23, 35, 0.45)
  • shadow-ambient rgba(9, 23, 35, 0.06)
  • shadow-soft rgba(9, 23, 35, 0.10)
  • shadow-standard rgba(9, 23, 35, 0.14)
  • shadow-coral-glow rgba(255, 79, 64, 0.30)
Typography
Ship faster than ever.
display-hero MonzoSansDisplay 80px w700 -0.03em
Ship faster than ever.
display-lg MonzoSansDisplay 56px w700 -0.02em
The quick brown fox jumps over the lazy dog.
money-figure MonzoSansDisplay 48px w700 -0.02em
Ship faster than ever.
h1 MonzoSansDisplay 40px w700 -0.018em
Built for teams that ship.
h2 MonzoSansDisplay 32px w600 -0.012em
A complete kit
h3 MonzoSansDisplay 24px w600 -0.005em
The quick brown fox jumps over the lazy dog.
h4 MonzoSansText 20px w600 0
The quick brown fox jumps over the lazy dog.
title-sm MonzoSansText 18px w600 0
The quick brown fox jumps over the lazy dog.
body-lg MonzoSansText 18px w400 0
The quick brown fox jumps over the lazy dog.
body MonzoSansText 16px w400 0
The quick brown fox jumps over the lazy dog.
body-strong MonzoSansText 16px w600 0
The quick brown fox jumps over the lazy dog.
button MonzoSansText 16px w600 0
The quick brown fox jumps over the lazy dog.
money-inline MonzoSansText 16px w600 0
The quick brown fox jumps over the lazy dog.
nav-link MonzoSansText 15px w500 0
The quick brown fox jumps over the lazy dog.
body-sm MonzoSansText 14px w400 0
OUR DESIGN SYSTEM
label MonzoSansText 13px w500 0
OUR DESIGN SYSTEM
caption MonzoSansText 12px w500 0.02em
The quick brown fox jumps over the lazy dog.
eyebrow MonzoSansText 12px w600 0.08em
The quick brown fox jumps over the lazy dog.
legal MonzoSansText 12px w400 0
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
  • none 0px
  • micro 2px
  • sm 4px
  • md 8px
  • lg 12px
  • xl 16px
  • xxl 24px
  • pill 500px
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 navy
  • muted text-muted
  • border border
  • ring focus-ring
Lineage & influences

Monzo's lineage runs through the UK challenger-bank moment of the mid-2010s and the broader push to make finance feel human. Its core move — build a whole identity around one warm, almost-neon Hot Coral plus a friendly humanist sans — is a deliberate rejection of legacy-bank codes (navy suits, serif gravitas, marble-and-pillar trust). Instead it borrows from consumer-tech and community-product design: a bright-white canvas, flat characterful illustration, plain-English copy, and pill-shaped CTAs that read closer to a friendly app onboarding than a banking brochure. The translucent coral card became the brand's most-shared object, and the site's palette flows back from that physical artefact. Monzo shares DNA with fellow neobanks (Starling, Revolut, Wise) but leans hardest into a single iconic colour and a genuinely community-led posture, with the deep navy as its grown-up trust anchor: coral does the warmth, navy does the seriousness.

  • UK challenger-bank contemporary in the friendly-fintech wave Monzo competes within
  • Neobank peer — bold colour and app-first marketing posture
  • Fintech reference for crisp typography, generous whitespace, and developer-grade polish
  • Bright, illustration-led, plain-English fintech communication
  • Swiss grid discipline and clean sans-serif hierarchy underpinning the layout
  • Standard easing curves and elevation logic, adapted to a quieter navy-tinted shadow system
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: Monzo
tagline: Hot Coral `#ff4f40` on bright white, MonzoSans humanist geometry, and a transparent challenger-bank warmth.
updated_at: 2026-05-28T22:15:26.033Z
published_at: 2026-05-28T22:15:26.033Z
author: webdesignhot
source_url: https://monzo.com
spec: webdesignhot/0.1
quality: curated
featured: false
categories: [saas]
tags: [light, bold, sans, fintech, coral]
preview_swatch: ['#ffffff', '#ff4f40', '#091723']
related: []
description: 'Monzo''s site is a bright-white canvas (`#ffffff`) carrying the most recognisable colour in UK fintech — Hot Coral `#ff4f40`, the glowing orange-pink of the famous translucent debit card. Where the high-street banks reach for navy, burgundy, and corporate teal, Monzo built an entire identity around one warm, almost neon coral that reads as friendly rather than financial. The marketing site pairs that coral with crisp black ink (`#000000`) on white, set in MonzoSans — a custom humanist-geometric family (MonzoSansDisplay for headlines, MonzoSansText for running copy) whose soft, rounded terminals make even balance figures feel approachable. The register is community-and-transparency: plain-English copy, real customer numbers, and a "made with you" tone that treats the reader as a member, not a mark. Coral does the heavy lifting as the brand voltage — wordmark, highlights, illustration fills, hover states — while a deep navy (`#091723`) anchors the occasional dark surface and certain high-commitment buttons (the production sign-up audit caught navy on its primary action). CTAs are full pills (500px radius), corners are gently rounded, and the layout breathes with generous white space punctuated by coral-tinted cards and full-bleed coral or navy hero bands. The result is the warmest, most human-feeling brand in consumer banking — a bank that looks like it was designed by people who actively did not want to look like a bank.'


# 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: navy
  muted: text-muted
  border: border
  ring: focus-ring
colors:
  bg: '#ffffff'                   # bright white canvas — the brand's default ground
  surface: '#ffffff'              # default surface, same as canvas
  surface-soft: '#fafafa'         # faint off-white for alternating bands
  surface-coral-tint: '#fff1ef'   # coral at ~6% — soft informational card bg
  surface-navy: '#091723'         # deep navy dark surface / dark hero band
  surface-navy-soft: '#13283a'    # +1 step on the navy dark surface
  text: '#000000'                 # primary black ink on white
  text-body: '#1a1a1a'            # near-black running body copy
  text-muted: '#5b5b5b'           # captions, metadata, secondary copy
  text-subtle: '#8a8a8a'          # disabled, lowest hierarchy
  text-on-navy: '#ffffff'         # white ink on the navy dark surface
  text-on-navy-muted: '#b8c2cc'   # muted cool-grey ink on navy
  brand: '#ff4f40'                # Hot Coral — the signature Monzo brand voltage
  brand-hover: '#ff6557'          # lighter coral for hover/active glow
  brand-deep: '#e83b2d'           # pressed/active deeper coral
  brand-ink: '#c42d22'            # coral text on white where AA contrast is needed
  brand-soft: '#fff1ef'           # coral at ~6% — informational tint background
  on-brand: '#ffffff'             # white text on a coral fill
  navy: '#091723'                 # deep navy — dark surfaces, high-commitment CTA fill
  navy-hover: '#13283a'           # lifted navy on hover
  on-navy: '#ffffff'              # white text on navy fill
  link: '#c42d22'                 # link in coral-ink (AA-safe coral on white)
  link-hover: '#ff4f40'           # brightens to Hot Coral on hover
  border: '#e4e4e4'               # default 1px hairline divider on white
  border-strong: '#000000'        # full-black hairline (outlined cards, ghost buttons)
  border-soft: '#f0f0f0'          # softest divider band
  border-focus: '#091723'         # navy focus border on inputs
  border-on-navy: 'rgba(255, 255, 255, 0.16)' # hairline on the navy dark surface
  semantic-success: '#1f8a4c'     # success green on white
  semantic-warning: '#c77700'     # caution amber on white
  semantic-danger: '#d23b2e'      # error red (coral-adjacent) on white
  semantic-info: '#091723'        # info uses the brand navy
  focus-ring: 'rgba(9, 23, 35, 0.45)' # 3px navy focus ring
  shadow-ambient: 'rgba(9, 23, 35, 0.06)'  # faint navy-tinted ambient shadow
  shadow-soft: 'rgba(9, 23, 35, 0.10)'
  shadow-standard: 'rgba(9, 23, 35, 0.14)'
  shadow-coral-glow: 'rgba(255, 79, 64, 0.30)' # rare coral glow on featured CTAs

typography:
  display:
    family: 'MonzoSansDisplay, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'
    weights: [500, 600, 700]
    opentype-features: ['kern', 'liga']
  body:
    family: 'MonzoSansText, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'
    weights: [400, 500, 600]
    opentype-features: ['kern', 'liga']
  mono:
    family: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace'
    weights: [400, 500]
    opentype-features: ['tnum']
  scale:
    display-hero:    { size: 80, weight: 700, lineHeight: 1.00, tracking: '-0.03em',  family: display }
    display-lg:      { size: 56, weight: 700, lineHeight: 1.05, tracking: '-0.02em',  family: display }
    h1:              { size: 40, weight: 700, lineHeight: 1.10, tracking: '-0.018em', family: display }
    h2:              { size: 32, weight: 600, lineHeight: 1.20, tracking: '-0.012em', family: display }
    h3:              { size: 24, weight: 600, lineHeight: 1.25, tracking: '-0.005em', family: display }
    h4:              { size: 20, weight: 600, lineHeight: 1.30, tracking: '0',        family: body }
    title-sm:        { size: 18, weight: 600, lineHeight: 1.35, tracking: '0',        family: body }
    body-lg:         { size: 18, weight: 400, lineHeight: 1.55, tracking: '0',        family: body }
    body:            { size: 16, weight: 400, lineHeight: 1.55, tracking: '0',        family: body }
    body-strong:     { size: 16, weight: 600, lineHeight: 1.55, tracking: '0',        family: body }
    body-sm:         { size: 14, weight: 400, lineHeight: 1.50, tracking: '0',        family: body }
    label:           { size: 13, weight: 500, lineHeight: 1.40, tracking: '0',        family: body }
    caption:         { size: 12, weight: 500, lineHeight: 1.40, tracking: '0.02em',   family: body }
    eyebrow:         { size: 12, weight: 600, lineHeight: 1.20, tracking: '0.08em',   family: body }
    button:          { size: 16, weight: 600, lineHeight: 1.20, tracking: '0',        family: body }
    nav-link:        { size: 15, weight: 500, lineHeight: 1.40, tracking: '0',        family: body }
    money-figure:    { size: 48, weight: 700, lineHeight: 1.05, tracking: '-0.02em',  family: display, opentype: 'tnum' }
    money-inline:    { size: 16, weight: 600, lineHeight: 1.40, tracking: '0',        family: body, opentype: 'tnum' }
    legal:           { size: 12, weight: 400, lineHeight: 1.50, tracking: '0',        family: body }

radius:
  none: 0
  micro: 2
  sm: 4
  md: 8
  lg: 12
  xl: 16
  xxl: 24
  pill: 500

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

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

components:
  button-primary:        { bg: brand, text: on-brand, padding: '14px 28px', height: 48, radius: pill, font: button }
  button-primary-navy:   { bg: navy, text: on-navy, padding: '14px 28px', height: 48, radius: pill, font: button }
  button-secondary:      { bg: bg, text: text, border: '1.5px solid border-strong', padding: '12.5px 26.5px', height: 48, radius: pill, font: button }
  button-ghost:          { bg: transparent, text: text, padding: '14px 20px', font: button }
  button-on-coral:       { bg: bg, text: text, padding: '14px 28px', height: 48, radius: pill, font: button }
  card:                  { bg: surface, border: '1px solid border', radius: xl, padding: 24 }
  card-coral:            { bg: brand, text: on-brand, radius: xxl, padding: 32 }
  card-coral-tint:       { bg: surface-coral-tint, radius: xl, padding: 24 }
  card-navy:             { bg: surface-navy, text: text-on-navy, radius: xxl, padding: 32 }
  badge-coral:           { bg: brand-soft, text: brand-ink, radius: pill, padding: '4px 12px', font: caption }
  badge-navy:            { bg: surface-navy, text: text-on-navy, radius: pill, padding: '4px 12px', font: caption }
  input-text:            { bg: bg, border: '1px solid border', radius: md, padding: '12px 16px', height: 48, text: text }
  top-nav:               { bg: bg, text: text, height: 64, font: nav-link }
  footer:                { bg: surface-navy, text: text-on-navy-muted, padding: '64px 0', font: body-sm }

motion:
  ease-standard: 'cubic-bezier(0.4, 0, 0.2, 1)'
  ease-emphasized: 'cubic-bezier(0.2, 0, 0, 1)'
  ease-entrance: 'cubic-bezier(0, 0, 0.2, 1)'
  ease-gentle: 'cubic-bezier(0.33, 1, 0.68, 1)'
  duration-fast: 150
  duration-standard: 240
  duration-slow: 320
  duration-page: 400
  reduced-motion: 'respects prefers-reduced-motion: reduce — coral-card parallax, illustration loops, count-up balance figures, and scroll-reveal staggers collapse to static end states'

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

shadows:
  ambient: 'rgba(9, 23, 35, 0.06) 0 1px 2px'
  soft: 'rgba(9, 23, 35, 0.10) 0 4px 12px'
  standard: 'rgba(9, 23, 35, 0.14) 0 8px 24px'
  elevated: 'rgba(9, 23, 35, 0.18) 0 20px 48px -12px'
  coral-glow: 'rgba(255, 79, 64, 0.30) 0 0 28px'
  ring: '0 0 0 3px rgba(9, 23, 35, 0.45)'

accessibility:
  contrast-text-on-bg: 21.0
  contrast-body-on-bg: 17.4
  contrast-brand-on-bg: 3.1
  contrast-on-brand-on-brand: 3.2
  contrast-navy-on-white: 16.1
  contrast-link-on-bg: 5.8
  focus-ring: '3px solid rgba(9,23,35,0.45) with 2px offset'
  reduced-motion-honored: true
  min-target: 44

lineage:
  summary: 'Monzo''s lineage runs through the UK challenger-bank moment of the mid-2010s and the broader push to make finance feel human. Its core move — build a whole identity around one warm, almost-neon Hot Coral plus a friendly humanist sans — is a deliberate rejection of legacy-bank codes (navy suits, serif gravitas, marble-and-pillar trust). Instead it borrows from consumer-tech and community-product design: a bright-white canvas, flat characterful illustration, plain-English copy, and pill-shaped CTAs that read closer to a friendly app onboarding than a banking brochure. The translucent coral card became the brand''s most-shared object, and the site''s palette flows back from that physical artefact. Monzo shares DNA with fellow neobanks (Starling, Revolut, Wise) but leans hardest into a single iconic colour and a genuinely community-led posture, with the deep navy as its grown-up trust anchor: coral does the warmth, navy does the seriousness.'
  influences:
    - { name: 'Starling Bank', role: 'UK challenger-bank contemporary in the friendly-fintech wave Monzo competes within', url: 'https://www.starlingbank.com' }
    - { name: 'Revolut', role: 'Neobank peer — bold colour and app-first marketing posture', url: 'https://www.revolut.com' }
    - { name: 'Stripe', role: 'Fintech reference for crisp typography, generous whitespace, and developer-grade polish', url: 'https://stripe.com' }
    - { name: 'Wise', role: 'Bright, illustration-led, plain-English fintech communication', url: 'https://wise.com' }
    - { name: 'International Typographic Style', role: 'Swiss grid discipline and clean sans-serif hierarchy underpinning the layout', url: 'https://en.wikipedia.org/wiki/International_Typographic_Style' }
    - { name: 'Material Design', role: 'Standard easing curves and elevation logic, adapted to a quieter navy-tinted shadow system', url: 'https://m3.material.io' }

dark-mode: none
---

## 1. Visual Theme & Atmosphere

Monzo's marketing surface is built on **bright white** (`#ffffff`) lit by the single most recognisable colour in UK fintech: **Hot Coral `#ff4f40`**. This is the exact glowing orange-pink of the famous translucent debit card — a colour so tied to the brand that customers refer to "the coral card" the way they would name a person. Where every legacy high-street bank reaches for navy, burgundy, or corporate teal to signal gravity, Monzo did the opposite: it staked its entire identity on one warm, almost-neon coral that reads as *friendly* before it reads as *financial*. On the site, coral is the brand voltage — it fills the wordmark, the illustration shapes, the highlight underlines, the hover states, and a large share of the CTAs.

Type is **MonzoSans**, the brand's custom humanist-geometric family, split into two cuts: **MonzoSansDisplay** for headlines and **MonzoSansText** for running copy. The letterforms are geometric enough to feel modern and engineered, but softened with gently rounded terminals and a generous x-height that make even a six-figure balance feel approachable. Headlines run heavy (600–700) with tight negative tracking, so the display tier reads as confident and human rather than cold and corporate. Body copy in MonzoSansText sits at a comfortable 16–18px with 1.55 line-height — calm, plain-English, designed to be read by someone deciding whether to trust you with their money.

The page rhythm alternates **bright-white default sections** with **chromatic interruptions** in the two brand anchors. Most of the page is white-on-white with black ink and coral accents. Then, at moments of emotional weight — the hero, a product reveal, a "join us" call — the brand drops a **full-bleed coral band** or a **deep-navy band** (`#091723`). The navy is the brand's grown-up counterweight: it carries the dark hero sections, the footer, and certain high-commitment buttons. Notably, the production sign-up audit caught **navy on the primary sign-up action** — Monzo reserves the deepest, most stable surface for the highest-trust gesture, while coral does the lighter, more playful work everywhere else.

Geometry is **soft but not bubbly**. Corners are gently rounded (8–24px on cards), and every CTA is a **full pill** (500px radius) — the pill is a brand-defining shape that echoes the rounded card and the friendly tone. Shadows are quiet and navy-tinted, used to lift cards a few pixels off the white rather than to dramatise. Illustration is a constant: flat, characterful coral-and-navy spot illustrations of people, coins, and phones thread through the pages, reinforcing the "made with you" community posture.

The overall atmosphere is **warm, transparent, and human** — a bank that looks like it was designed by people who actively did not want to look like a bank. It is optimistic without being childish, plain-spoken without being dull, and confident enough to make one loud coral carry the whole identity.

**Key Characteristics:**
- Bright-white canvas (`#ffffff`) as the default ground — light-by-default, never dark-by-default
- Single brand voltage: Hot Coral `#ff4f40` — the famous translucent-card colour, warm and almost neon
- Deep navy `#091723` as the grown-up counterweight — dark hero bands, footer, high-commitment CTAs
- MonzoSans custom family: MonzoSansDisplay for headlines, MonzoSansText for body — humanist-geometric with soft terminals
- Display tier runs heavy (700) with tight negative tracking (-0.018em to -0.03em)
- Full-pill CTAs at 500px radius — a brand-defining friendly shape
- Gently rounded card corners (8–24px), never sharp, never fully bubbled
- Quiet navy-tinted shadows — lift, not drama
- Flat coral-and-navy spot illustrations carry the community/"made with you" tone
- Plain-English, member-not-mark copy register: transparent, warm, optimistic

## 2. Color Palette & Roles

### Canvas
- **Canvas / BG** (`#ffffff`): Bright-white default ground for the entire site — light-by-default.
- **Surface** (`#ffffff`): Default card and section surface, identical to canvas.
- **Surface Soft** (`#fafafa`): Faint off-white for gently alternating section bands.
- **Surface Coral Tint** (`#fff1ef`): Coral at ~6% — soft informational card background.
- **Surface Navy** (`#091723`): Deep-navy dark surface for hero bands and the footer.
- **Surface Navy Soft** (`#13283a`): +1 step on the navy surface — cards on navy, hover.

### Text
- **Ink** (`#000000`): Primary black headline and high-emphasis text on white.
- **Body** (`#1a1a1a`): Near-black running body copy — slightly softer than pure black.
- **Muted** (`#5b5b5b`): Captions, metadata, secondary copy on white.
- **Subtle** (`#8a8a8a`): Disabled and lowest-hierarchy text.
- **Text on Navy** (`#ffffff`): White ink on the navy dark surface.
- **Text on Navy Muted** (`#b8c2cc`): Cool muted-grey ink on navy for secondary copy.

### Brand
- **Hot Coral** (`#ff4f40`): The signature Monzo brand colour — wordmark, accents, illustration fills, coral CTA fills, hover states. This is THE brand.
- **Coral Hover** (`#ff6557`): Lighter coral for hover/active glow on coral fills.
- **Coral Deep** (`#e83b2d`): Pressed/active deeper coral.
- **Coral Ink** (`#c42d22`): Darkened coral used for coral-coloured *text* on white where AA contrast is required (Hot Coral itself is too light for small text on white).
- **Coral Soft** (`#fff1ef`): Coral at ~6% — informational tint backgrounds and soft badges.
- **On Brand** (`#ffffff`): White text on a coral fill.

### Navy (Dark Anchor)
- **Navy** (`#091723`): Deep navy — dark surfaces, dark hero bands, and high-commitment CTA fills (e.g. the production sign-up button).
- **Navy Hover** (`#13283a`): Lifted navy on hover for navy fills.
- **On Navy** (`#ffffff`): White text on a navy fill.

### Interactive
- **Link** (`#c42d22`, Coral Ink): Default link colour — coral-ink for AA contrast on white, no underline at rest, underline on hover.
- **Link Hover** (`#ff4f40`): Brightens to full Hot Coral on hover with underline.
- **CTA Hover (coral)**: Fill shifts `#ff4f40` → `#ff6557`; optional coral-glow blooms on featured CTAs.
- **CTA Hover (navy)**: Fill shifts `#091723` → `#13283a`.
- **Disabled**: `#f0f0f0` background, `#8a8a8a` text.
- **Selected**: Coral-tint chip (`#fff1ef` bg, `#c42d22` text).

### Borders
- **Border** (`#e4e4e4`): Default 1px hairline divider on white.
- **Border Strong** (`#000000`): Full-black hairline — outlined/secondary buttons and outlined cards.
- **Border Soft** (`#f0f0f0`): Softest divider band.
- **Border Focus** (`#091723`): Navy focus border on inputs.
- **Border on Navy** (`rgba(255, 255, 255, 0.16)`): Hairline on the navy dark surface.

### Shadow Colors
Monzo's shadows are **navy-tinted, not pure black** — `rgba(9, 23, 35, 0.06–0.18)`. On a bright-white canvas, low-opacity shadows read cleanly, so the brand keeps elevation subtle (lift, not drama). A rare **coral-glow** (`rgba(255, 79, 64, 0.30) 0 0 28px`) is reserved for featured CTAs and hero moments.

### Semantic
- **Success** (`#1f8a4c`): Success green on white — distinct from coral.
- **Warning** (`#c77700`): Caution amber on white.
- **Danger** (`#d23b2e`): Error red — deliberately nudged away from Hot Coral so error never reads as "brand".
- **Info** (`#091723`): Info uses the brand navy.

## 3. Typography Rules

### Font Family

**Display: MonzoSansDisplay** — the brand's custom humanist-geometric display cut, used for every headline and hero figure. Geometric construction softened by rounded terminals and a tall x-height. Weights deployed: 500, 600, 700. OpenType `kern` and `liga` on.

**Body: MonzoSansText** — the companion text cut, optically tuned for running copy at 13–18px. Weights: 400, 500, 600. This is the workhorse for body, labels, captions, nav, and buttons.

**Fallback chain**: `MonzoSansText, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif`. The chain hands off to the platform UI font, then Segoe/Roboto, then Helvetica/Arial — keeping a friendly humanist sans in every fallback slot.

**Mono: system mono** — `ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace`, used sparingly for reference IDs and code. Weights: 400, 500. `tnum` on for any tabular figure.

**Tabular numerals**: balance figures and money displays use `tnum` so digit columns align — important when a figure animates with a count-up.

### Hierarchy

| Role          | Font              | Size | Weight | Line Height | Letter Spacing | OT Features | Notes                                   |
|---------------|-------------------|------|--------|-------------|----------------|-------------|-----------------------------------------|
| display-hero  | MonzoSansDisplay  | 80   | 700    | 1.00        | -0.03em        | kern, liga  | Top-of-page hero headline               |
| display-lg    | MonzoSansDisplay  | 56   | 700    | 1.05        | -0.02em        | kern, liga  | Secondary hero / big section opener     |
| h1            | MonzoSansDisplay  | 40   | 700    | 1.10        | -0.018em       | kern, liga  | Page title                              |
| h2            | MonzoSansDisplay  | 32   | 600    | 1.20        | -0.012em       | kern, liga  | Section heading                         |
| h3            | MonzoSansDisplay  | 24   | 600    | 1.25        | -0.005em       | kern, liga  | Subsection / feature-card title         |
| h4            | MonzoSansText     | 20   | 600    | 1.30        | 0              | kern        | Card body title                         |
| title-sm      | MonzoSansText     | 18   | 600    | 1.35        | 0              | kern        | List heading                            |
| body-lg       | MonzoSansText     | 18   | 400    | 1.55        | 0              | kern        | Lead paragraph                          |
| body          | MonzoSansText     | 16   | 400    | 1.55        | 0              | kern        | Default body copy                       |
| body-strong   | MonzoSansText     | 16   | 600    | 1.55        | 0              | kern        | Inline emphasis                         |
| body-sm       | MonzoSansText     | 14   | 400    | 1.50        | 0              | kern        | Secondary body                          |
| label         | MonzoSansText     | 13   | 500    | 1.40        | 0              | kern        | Form labels, UI labels                  |
| caption       | MonzoSansText     | 12   | 500    | 1.40        | 0.02em         | kern        | Captions, metadata                      |
| eyebrow       | MonzoSansText     | 12   | 600    | 1.20        | 0.08em         | kern        | Uppercase section eyebrow               |
| button        | MonzoSansText     | 16   | 600    | 1.20        | 0              | kern        | All CTA labels                          |
| nav-link      | MonzoSansText     | 15   | 500    | 1.40        | 0              | kern        | Top navigation links                    |
| money-figure  | MonzoSansDisplay  | 48   | 700    | 1.05        | -0.02em        | tnum        | Balance / big money figure              |
| money-inline  | MonzoSansText     | 16   | 600    | 1.40        | 0              | tnum        | Inline transaction amounts              |
| legal         | MonzoSansText     | 12   | 400    | 1.50        | 0              | kern        | Footer disclosure / regulatory copy     |

### Principles

- **Two cuts, one family**: Display headlines use MonzoSansDisplay; everything 20px and under uses MonzoSansText. Never set body in the display cut — the text cut is optically corrected for small sizes.
- **Display runs heavy**: The headline tier is 700, confident and warm. This distinguishes Monzo from lighter fintech systems and signals approachable confidence.
- **Tight negative tracking on display only**: -0.018em to -0.03em on display sizes; body stays at 0. The tightening compresses big headlines into a tidy block.
- **Generous body line-height**: 1.55 on body copy — Monzo is a *reading* brand (plain-English explanations of money), so running copy is set spacious and calm.
- **Eyebrow is uppercase + tracked**: 12px MonzoSansText 600 with 0.08em tracking, uppercase — the only place letter-spacing opens up.
- **Black ink, not coral, for headlines**: Headlines are `#000000` on white; coral is an *accent* on type (a highlighted word, an underline), never the default headline colour.
- **Tabular numerals on money**: Any balance or animated figure uses `tnum` so digits don't jitter as values change.
- **Humanist warmth over geometric coldness**: Where a colder system would pick a strict geometric sans, Monzo's rounded terminals and tall x-height keep the type human — that warmth is deliberate.

## 4. Component Stylings

### Buttons

**Primary CTA — Coral** ("Get started", "Open an account")
- Background: `#ff4f40` (Hot Coral)
- Text: `#ffffff`, weight 600, 16px
- Padding: 14px / 28px
- Height: 48px
- Radius: pill (500)
- Hover: bg `#ff6557`; optional coral-glow `rgba(255,79,64,0.30) 0 0 28px` on featured
- Active: bg `#e83b2d`
- Use case: most primary marketing actions, the warm/playful tier

**Primary CTA — Navy** ("Sign up", high-commitment)
- Background: `#091723` (Navy)
- Text: `#ffffff`, weight 600, 16px
- Padding: 14px / 28px
- Height: 48px
- Radius: pill (500)
- Hover: bg `#13283a`
- Active: bg `#091723` with inset
- Use case: the highest-trust gesture — the production sign-up button uses navy, not coral

**Secondary — Outlined** ("Learn more")
- Background: `#ffffff`
- Text: `#000000`, weight 600
- Border: 1.5px solid `#000000`
- Padding: 12.5px / 26.5px
- Height: 48px
- Radius: pill (500)
- Hover: bg `#000000`, text `#ffffff` (invert)

**Ghost / Text** ("See all features")
- Background: transparent
- Text: `#000000`, weight 600; coral-ink underline grows on hover
- No border; used inline and in dense nav contexts

**On-Coral CTA** (button sitting on a coral hero band)
- Background: `#ffffff`
- Text: `#000000`, weight 600
- Padding: 14px / 28px, height 48px, radius pill
- Use case: contrast CTA when the section background is coral

### Cards

**Default Card**
- Background: `#ffffff`
- Border: 1px solid `#e4e4e4`
- Radius: 16px (xl)
- Padding: 24px
- Shadow: none at rest; `rgba(9,23,35,0.10) 0 4px 12px` on hover
- Use case: feature grid, content tiles

**Coral Card** (the signature loud tile)
- Background: `#ff4f40`
- Text: `#ffffff`
- Radius: 24px (xxl)
- Padding: 32px
- Use case: hero feature, "join us" moment, promo

**Coral-Tint Card** (soft informational)
- Background: `#fff1ef`
- Text: `#000000`, with coral-ink accents
- Radius: 16px
- Padding: 24px
- Use case: tips, callouts, gentle highlights

**Navy Card** (grown-up tile)
- Background: `#091723`
- Text: `#ffffff` / `#b8c2cc` muted
- Radius: 24px
- Padding: 32px
- Use case: security, business, "serious" product moments

### Badges, Tags, Pills

**Coral Badge**
- Background: `#fff1ef` (coral soft)
- Text: `#c42d22` (coral ink), weight 500, 12px
- Padding: 4px / 12px
- Radius: pill (500)
- Use case: "New", "Free", "Popular"

**Navy Badge**
- Background: `#091723`
- Text: `#ffffff`, weight 500, 12px
- Padding: 4px / 12px
- Radius: pill
- Use case: "Beta", "Coming soon"

### Inputs / Forms

**Text Input**
- Background: `#ffffff`
- Border: 1px solid `#e4e4e4`
- Radius: 8px (md)
- Height: 48px
- Padding: 12px / 16px
- Focus: border `#091723` 1.5px, ring `rgba(9,23,35,0.45)` 3px
- Label above in 13px MonzoSansText 500
- Error: border `#d23b2e`, helper text `#d23b2e`
- Use case: email capture, account forms

**Select / Dropdown**
- Same shell as text input; chevron in `#5b5b5b`
- Open: 8px radius menu, `rgba(9,23,35,0.14) 0 8px 24px` shadow, white surface

**Checkbox / Toggle**
- Toggle ON: track `#ff4f40` (coral), white knob — the coral toggle is a brand moment
- Checkbox checked: `#091723` fill, white tick

### Navigation

**Top Nav**
- Height: 64px
- Background: `#ffffff` (transparent over white; gains 1px `#e4e4e4` bottom border after scroll)
- Logo left (Monzo wordmark in `#ff4f40` coral), nav links centre/left, "Log in" ghost + "Sign up" navy pill right
- Nav link: 15px / 500, colour `#000000`; hover: coral-ink underline grows
- Mega-menu: white surface, 16px radius, `rgba(9,23,35,0.14) 0 8px 24px` shadow

**Footer**
- Background: `#091723` (navy — closes the page on the grown-up anchor)
- Text: `#b8c2cc` for links, `#ffffff` for category headers
- Padding: 64px vertical
- Coral Monzo wordmark and app-store badges; regulatory/legal copy at 12px

## 5. Layout Principles

### Spacing System
Base 4px. Scale: 0, 4, 8, 12, 16, 24, 32, 48, 64, 96. Section spacers run 64–96px; component padding clusters at 16/24/32. The system is generous — Monzo gives copy and illustration room to breathe rather than packing the page.

### Grid & Container
- Page max-width 1280px
- Prose / reading width 720px
- 12-column grid with 24px gutters
- Hero: content constrained to 1280px, background can go full-bleed (white, coral, or navy)
- Feature grids: 3-up on desktop, 2-up tablet, 1-up mobile

### Whitespace Philosophy
Monzo treats whitespace as **trust signalling**. A bank that crowds the page looks anxious; Monzo's wide margins, large headline-to-body gaps, and airy section padding read as calm and self-assured. Illustration sits in this whitespace rather than competing with it — the coral-and-navy spot art has room to be a character, not clutter.

### Section Cadence
White section → white section → coral or navy full-bleed band (the emotional beat) → white section → navy footer. The chromatic bands are punctuation: most of the page is bright white, and the coral/navy moments mark where the brand wants the reader to feel something — the hero, the product reveal, the join-us call, the close.

## 6. Shapes & Radius Scale

| Tier        | Value | Use                                                  |
|-------------|-------|------------------------------------------------------|
| None        | 0     | Full-bleed bands, edge-to-edge images               |
| Micro       | 2     | Status dots, tiny indicators                        |
| Small       | 4     | Tooltips, small chips                               |
| Standard    | 8     | Inputs, dropdowns, small buttons                    |
| Comfortable | 12    | Default content tiles, list items                   |
| Featured    | 16    | Feature cards, mega-menu surfaces                   |
| Relaxed     | 24    | Coral / navy hero cards, large image containers     |
| Pill        | 500   | All CTAs, badges, toggles, tags                     |

Monzo's signature geometry is **16–24px on cards + full pill (500px) on every CTA**. The pill is the brand-defining shape — it echoes the rounded debit card and reinforces the friendly, human tone. Cards stay gently rounded; nothing is ever sharp-cornered, and nothing is fully circular except status dots and the toggle knob.

## 7. Depth & Elevation

| Level | Treatment                                                       | Use                                       |
|-------|----------------------------------------------------------------|-------------------------------------------|
| 0     | Flat on white canvas (`#ffffff`), no shadow                     | Hero text, body, section backgrounds      |
| 1     | 1px border `#e4e4e4`, no shadow                                 | Default resting card                       |
| 2     | Ambient shadow `rgba(9,23,35,0.06) 0 1px 2px`                   | Sticky nav after scroll                    |
| 3     | Soft shadow `rgba(9,23,35,0.10) 0 4px 12px`                     | Card hover                                 |
| 4     | Standard shadow `rgba(9,23,35,0.14) 0 8px 24px`                 | Mega-menu, dropdown, popover               |
| 5     | Elevated shadow `rgba(9,23,35,0.18) 0 20px 48px -12px`          | Modal dialog                               |
| Glow  | Coral-glow `rgba(255,79,64,0.30) 0 0 28px`                      | Featured CTA, hero coral moment            |

### Shadow Philosophy

Monzo's shadows are **navy-tinted and intentionally quiet**. On a bright-white canvas, even low-opacity shadow reads cleanly, so the brand keeps elevation in the 0.06–0.18 range — enough to lift a card a few pixels, never enough to dramatise. Tinting the shadow with the brand navy (`rgba(9,23,35,…)`) instead of pure black keeps elevation feeling part of the palette rather than a hard grey wash. The single louder treatment is the rare **coral-glow**, used only on a page's most important CTA or a featured coral hero card.

## 8. Interaction & Motion

### Easing
- **Standard**: `cubic-bezier(0.4, 0, 0.2, 1)` — most state changes
- **Emphasized**: `cubic-bezier(0.2, 0, 0, 1)` — modal/menu entrances
- **Entrance**: `cubic-bezier(0, 0, 0.2, 1)` — scroll-reveal fade-ups
- **Gentle**: `cubic-bezier(0.33, 1, 0.68, 1)` — count-up balance figures, soft illustration loops

### Durations
- **Fast**: 150ms — link/colour hover, underline grow
- **Standard**: 240ms — button fill shift, card hover lift
- **Slow**: 320ms — modal / mega-menu entrance
- **Page**: 400ms — between-page crossfade and chromatic band reveal

### Per-Component Recipes
- **Button hover (coral)**: fill `#ff4f40` → `#ff6557` over 150ms; featured CTA blooms coral-glow over 240ms ease-standard
- **Button hover (navy)**: fill `#091723` → `#13283a` over 150ms
- **Secondary button hover**: invert to black fill / white text over 150ms
- **Card hover**: lift with `rgba(9,23,35,0.10) 0 4px 12px` over 240ms, translateY -2px
- **Nav link hover**: coral-ink underline grows left→right over 150ms
- **Balance count-up**: figure animates from 0 to value over ~800ms ease-gentle with `tnum`
- **Scroll reveal**: section fades up 16px over 320ms ease-entrance, staggered ~60ms per item
- **Modal entrance**: overlay fades 240ms; dialog scales 0.98 → 1.0 over 320ms ease-emphasized
- **Illustration loops**: subtle, slow (3–6s) loops on hero spot art; opt-in only

### Reduced Motion
Strictly honoured via `prefers-reduced-motion: reduce`. Count-up figures snap to final value, scroll-reveal staggers become instant, illustration loops freeze on their resting frame, coral-glow becomes a static glow, and modal scale becomes an instant fade.

## 9. Accessibility & A11y

### Contrast Pairs (computed on the live tokens)
- `#000000` text on `#ffffff` bg: **21.0:1** — AAA (the maximum)
- `#1a1a1a` body on `#ffffff` bg: **17.4:1** — AAA
- `#091723` navy on `#ffffff` bg: **16.1:1** — AAA (navy headings/buttons)
- `#ffffff` on `#091723` navy: **16.1:1** — AAA (white on navy fill)
- `#c42d22` coral-ink link on `#ffffff`: **5.8:1** — AA (this is why links use coral-ink, not Hot Coral)
- `#ffffff` on `#ff4f40` Hot Coral: **3.2:1** — AA for large text / UI only; large/bold button labels qualify, but small coral-fill body text is avoided
- `#ff4f40` Hot Coral on `#ffffff`: **3.1:1** — large-only; **never use Hot Coral for small text on white** — switch to coral-ink `#c42d22`

> Accessibility note: Hot Coral is a *fill and accent* colour, not a small-text colour on white. The system pairs coral fills with white labels at button scale (≥16px bold), and uses **coral-ink `#c42d22`** wherever coral-coloured text must meet AA at body sizes.

### Focus Indicators
3px solid `rgba(9, 23, 35, 0.45)` navy ring with 2px offset on every interactive element. Navy (not coral) is used for focus so the ring stays AA-distinct on both white and coral surfaces.

### ARIA Patterns
- **Dialog**: `role="dialog"`, `aria-modal="true"`, focus-trap, Escape to close
- **Mega-menu**: `aria-expanded` on the trigger, `role="menu"` panel, arrow-key navigation
- **Toggle**: `role="switch"` with `aria-checked` (the coral toggle)
- **Live region**: form success/error toasts use `aria-live="polite"`
- **Money figure**: visible "£" + numerals with `aria-label` spelling the amount

### Keyboard Nav
Tab order follows visual flow. Mega-menu opens on Enter/Space and traps arrow keys; modals are focus-trapped with Escape-to-close. All pill CTAs are reachable and show the navy focus ring.

### Screen Reader Hints
- Monzo wordmark: `role="img"` with `aria-label="Monzo"`
- Decorative spot illustrations: `aria-hidden="true"`
- Balance figures: `aria-label="Balance: forty-eight pounds"` style spelled-out labels

### Reduced Motion
All animation honoured — see Section 8. Count-up and reveal animations degrade to static states.

## 10. Responsive Behavior

### Breakpoints
| Name    | Width      | Use                              |
|---------|------------|----------------------------------|
| mobile  | <640       | Stacked single-column            |
| tablet  | 640–1024   | 2-column grid                    |
| desktop | 1024–1280  | 3-column grid, full nav          |
| wide    | ≥1280      | Full layout, 1280px container    |

### Touch Targets
Minimum 44×44px. CTAs at 48px height across breakpoints; toggles and icon buttons keep a 44px hit area even when the visible glyph is smaller.

### Collapsing Strategy
- Top nav collapses to a hamburger + slide-in drawer below 1024px
- display-hero scales 80 → 56 → 40px (desktop → tablet → mobile)
- h1 scales 40 → 32 → 28px
- Feature grid 3-col → 2-col → 1-col
- Coral / navy hero bands stay full-bleed; inner content re-stacks vertically

### Image & Illustration Behavior
- Phone-frame mockups at iOS-bezel radius (~32–40px)
- Spot illustrations scale fluidly and centre above copy on mobile (side-by-side on desktop)
- `loading="lazy"` for below-fold imagery; coral/navy SVG illustrations inline for crispness

### Container Queries
Feature and money cards use container queries where supported: below ~320px the card stacks label-above-figure; at ≥320px it aligns label and figure on one row.

## 11. Content & Voice

### Tone
**Warm, plain-English, transparent.** Monzo's voice treats the reader as a *member*, not a *mark* — it explains money honestly, avoids jargon, and sounds like a helpful, optimistic friend who happens to run a bank. Sentences are short and human; the brand says "you" and "we" freely, admits trade-offs openly, and never reaches for the aspirational-luxury register of legacy finance.

### Microcopy Patterns
- **Button verbs**: "Get started", "Open an account", "Sign up", "Log in", "Learn more", "Join Monzo"
- **Error recipe**: kind and specific. "That email doesn't look right — mind checking it?"
- **Success confirmation**: "You're in. Welcome to Monzo." — warm, member-first
- **Loading state**: "One moment…" — never a cold spinner-only state

### Empty States
- **No transactions**: "Nothing here yet. Your spending will show up as it happens."
- **No pots/savings**: "Create your first Pot to start saving."
- Empty states are encouraging and concrete — they say what to do next, with no apology and no marketing fluff.

### CTA Verb Conventions
- **Acquisition**: "Get started", "Open an account", "Join Monzo"
- **Sign-in**: "Log in"
- **Exploration**: "Learn more", "See how it works", "Explore features"
- **Commitment**: "Sign up" — paired with the navy button, the high-trust gesture
- **Community**: "Join the community", "Tell us what you think" — the "made with you" posture

Monzo favours **plain, friendly imperatives** over corporate-finance phrasing — "Get started" over "Apply now", "Join Monzo" over "Become a customer".

## 12. Dark Mode & Theming

Monzo's marketing site is **light-by-default with no system-wide dark mode**. The brand instead uses **navy bands** (`#091723`) as a *content-tier dark surface* — hero sections, the footer, and "serious" product cards go navy — but this is a sectional treatment inside a light page, not a togglable theme. The site's theme-toggle audit returned a low signal (`data-theme-attr` present but no full dark stylesheet), confirming there is no shipped dark variant.

If extending Monzo to a true dark theme, invert toward the navy anchor rather than pure black:

```yaml
colors-dark:
  bg: '#091723'                 # the brand navy becomes the canvas
  surface: '#13283a'            # navy-soft as the card surface
  surface-2: '#1c3850'          # +1 elevated surface
  text: '#ffffff'
  text-body: '#e6ecf1'
  text-muted: '#b8c2cc'
  brand: '#ff6557'              # lift Hot Coral slightly so it glows on navy
  brand-hover: '#ff7a6e'
  on-brand: '#091723'           # near-navy ink on the lifted coral
  border: 'rgba(255,255,255,0.16)'
  link: '#ff8478'               # lighter coral reads as a link on dark navy
```

On dark navy, Hot Coral is **lifted** (`#ff4f40` → `#ff6557`) so it glows rather than muddies, and text-on-coral flips to near-navy. This keeps the brand identity (coral + navy) intact while inverting the canvas — the opposite move from a light page where coral text must *deepen* to coral-ink for contrast.

## 13. Lineage & Influences

Monzo's visual lineage runs through the **UK challenger-bank moment of the mid-2010s** and the broader move to make finance feel human. Its core idea — build an entire brand around one warm, almost-neon coral and a friendly humanist sans — is a deliberate rejection of legacy-bank visual codes (navy suits, serif gravitas, marble-and-pillar trust signalling). Instead Monzo borrows from **consumer-tech and community-product design**: the bright-white canvas, the flat characterful illustration, the plain-English copy, and the pill-shaped CTAs all read closer to a friendly app onboarding than a banking brochure. The translucent coral card itself became the brand's most-shared object — a piece of industrial design that did the marketing — and the website's whole palette flows back from that physical artefact.

What Monzo rejects is **corporate-finance distance**. Where legacy banks signal authority through coldness, Monzo signals trust through warmth, transparency, and generous whitespace. It shares DNA with fellow neobanks — the friendly-fintech wave that includes Starling, Revolut, and N26 — but distinguishes itself by leaning hardest into a single iconic colour and a genuinely community-led posture ("made with you", public roadmaps, an active forum). The navy anchor is the brand's nod to the seriousness banking still requires: coral does the warmth, navy does the trust, and the two together let Monzo be friendly without ever feeling unserious about your money.

**Influences:**
- **Starling Bank** ([starlingbank.com](https://www.starlingbank.com)) — UK challenger-bank contemporary; the friendly-fintech wave Monzo competes within
- **Revolut** ([revolut.com](https://www.revolut.com)) — Neobank peer; bold colour + app-first marketing posture
- **Stripe** ([stripe.com](https://stripe.com)) — Fintech reference for crisp typography, generous whitespace, and developer-grade polish
- **Swiss / International Typographic Style** ([Wikipedia](https://en.wikipedia.org/wiki/International_Typographic_Style)) — Grid discipline and clean sans-serif hierarchy underpinning the layout
- **Wise** ([wise.com](https://wise.com)) — Bright, illustration-led, plain-English fintech communication
- **Material Design** ([m3.material.io](https://m3.material.io)) — Standard easing curves and elevation logic adapted to a quieter, navy-tinted shadow system

## 14. Do's and Don'ts

**Do:**
- Use Hot Coral `#ff4f40` as the single brand voltage — wordmark, accents, illustration fills, the warm/playful CTA tier
- Default to a bright-white `#ffffff` canvas — Monzo is light-by-default
- Reserve navy `#091723` for the grown-up anchor: dark hero bands, the footer, and high-commitment CTAs (the sign-up button is navy)
- Pill every CTA at full radius (500px) — the pill is brand-defining
- Set headlines in MonzoSansDisplay 700 with tight negative tracking (-0.018em to -0.03em)
- Set body in MonzoSansText at 16–18px with 1.55 line-height — calm, readable, plain-English
- Use **coral-ink `#c42d22`** for any coral-coloured *text* on white (AA-safe)
- Tint shadows with navy (`rgba(9,23,35,…)`), keep them quiet (0.06–0.18)
- Lean on flat coral-and-navy spot illustration to carry the community tone
- Write microcopy as a warm, transparent member-first voice ("Get started", "Join Monzo")

**Don't:**
- Don't use Hot Coral for small body text on white — its 3.1:1 contrast fails AA; switch to coral-ink `#c42d22`
- Don't make navy the brand colour — navy is the *anchor*, coral is THE brand
- Don't go dark-by-default — Monzo's canvas is bright white; navy is a sectional surface, not the page
- Don't square the CTA corners — every button is a full pill
- Don't set headlines in MonzoSansText — display copy uses MonzoSansDisplay
- Don't let coral collide with the danger red — error uses `#d23b2e`, nudged away from coral so "error" never reads as "brand"
- Don't dramatise elevation — shadows lift a few pixels, they don't bloom (except the rare coral-glow on a featured CTA)
- Don't crowd the page — whitespace is how Monzo signals trust
- Don't use corporate-finance copy ("Apply now", "Become a customer") — use friendly imperatives
- Don't tint the headline ink coral — headlines are black `#000000`; coral is an accent on type, not the default

## 15. Agent Prompt Guide

### Quick Color Reference

```
Brand (Hot Coral):  #ff4f40
Coral Hover:        #ff6557
Coral Ink (text):   #c42d22
Coral Soft:         #fff1ef
Navy (anchor):      #091723
Navy Hover:         #13283a
Canvas / BG:        #ffffff
Ink:                #000000
Body:               #1a1a1a
Muted:              #5b5b5b
Border:             #e4e4e4
On Brand / On Navy: #ffffff
```

### Example Component Prompts

1. *"Create a Monzo hero: bright-white `#ffffff` background, 80px MonzoSansDisplay headline at weight 700 in black `#000000` with -0.03em tracking — text 'Banking made for you.'. Below, an 18px MonzoSansText lead in `#1a1a1a` at 1.55 line-height. Primary CTA: a full pill (500px radius) at 48px height filled navy `#091723` with white text weight 600, labelled 'Sign up'. Secondary CTA: outlined pill, 1.5px black border, black text, 'Learn more'. To the right, a flat coral-and-navy spot illustration of a person holding a coral card."*

2. *"Design a Monzo coral feature card: background Hot Coral `#ff4f40`, 24px radius, 32px padding. Title in 24px MonzoSansDisplay weight 700 white `#ffffff`. Body in 16px MonzoSansText white at 1.55 line-height. A white pill CTA at 48px with black text labelled 'Get started'. Keep all text white — coral fill, white ink."*

3. *"Build a Monzo balance card: white `#ffffff` surface, 1px `#e4e4e4` border, 16px radius, 24px padding. Top: a 13px `#5b5b5b` label 'Current balance'. Below: a 48px MonzoSansDisplay money figure in black `#000000` with tabular numerals reading '£1,248.50'. The figure count-ups from 0 over 800ms on load (gentle ease). Bottom row: two pill chips with coral-soft `#fff1ef` bg and coral-ink `#c42d22` text."*

4. *"Compose a Monzo 3-up feature grid: bright-white section, 24px gap. Each card white with 1px `#e4e4e4` border, 16px radius, 24px padding. Top of each: a 48px flat coral icon. Title 20px MonzoSansText weight 600 black. Body 16px weight 400 `#1a1a1a`. On hover, the card lifts -2px with a soft navy-tinted shadow `rgba(9,23,35,0.10) 0 4px 12px`."*

5. *"Create a Monzo navy CTA band: full-bleed `#091723` navy background, 64px vertical padding. Centred 40px MonzoSansDisplay headline weight 700 in white. Below, a 16px muted line in `#b8c2cc`. A single coral pill CTA `#ff4f40` at 48px with white text weight 600, labelled 'Join Monzo'. The coral pops against navy — this is the page's emotional close."*

6. *"Design a Monzo text input: white `#ffffff` field, 1px `#e4e4e4` border, 8px radius, 48px height, 12px/16px padding. A 13px MonzoSansText 500 label above reads 'Email address'. On focus, the border becomes navy `#091723` 1.5px with a 3px `rgba(9,23,35,0.45)` ring. Below it, a navy primary pill CTA labelled 'Get started'."*

### Iteration Guide

1. **Stay bright-white**: if your canvas is dark, you're not Monzo. The brand is light-by-default `#ffffff`; navy is a *band*, not the page.
2. **Commit to Hot Coral**: replace every generic blue/teal with `#ff4f40`. The warm coral is the whole identity — one loud colour carries the brand.
3. **Split the two CTA tiers**: coral for warm/playful actions, navy for the high-commitment gesture (sign-up). Don't make everything coral.
4. **Pill every CTA**: 500px radius, no exceptions. The pill echoes the rounded card and the friendly tone.
5. **Use the right coral for the right job**: Hot Coral `#ff4f40` for fills, coral-ink `#c42d22` for coral *text* on white — never small Hot Coral text (it fails AA).
6. **Set the two cuts correctly**: MonzoSansDisplay for headlines (700, tight tracking), MonzoSansText for everything 20px and under.
7. **Keep shadows quiet and navy-tinted**: lift a card 2px with `rgba(9,23,35,…)`, don't dramatise. Save the coral-glow for one featured CTA.
8. **Write like a member, not a marketer**: warm, plain-English, transparent copy — "Get started", "Join Monzo", kind error messages, encouraging empty states.
Prose

1. Visual Theme & Atmosphere

Monzo’s marketing surface is built on bright white (#ffffff) lit by the single most recognisable colour in UK fintech: Hot Coral #ff4f40. This is the exact glowing orange-pink of the famous translucent debit card — a colour so tied to the brand that customers refer to “the coral card” the way they would name a person. Where every legacy high-street bank reaches for navy, burgundy, or corporate teal to signal gravity, Monzo did the opposite: it staked its entire identity on one warm, almost-neon coral that reads as friendly before it reads as financial. On the site, coral is the brand voltage — it fills the wordmark, the illustration shapes, the highlight underlines, the hover states, and a large share of the CTAs.

Type is MonzoSans, the brand’s custom humanist-geometric family, split into two cuts: MonzoSansDisplay for headlines and MonzoSansText for running copy. The letterforms are geometric enough to feel modern and engineered, but softened with gently rounded terminals and a generous x-height that make even a six-figure balance feel approachable. Headlines run heavy (600–700) with tight negative tracking, so the display tier reads as confident and human rather than cold and corporate. Body copy in MonzoSansText sits at a comfortable 16–18px with 1.55 line-height — calm, plain-English, designed to be read by someone deciding whether to trust you with their money.

The page rhythm alternates bright-white default sections with chromatic interruptions in the two brand anchors. Most of the page is white-on-white with black ink and coral accents. Then, at moments of emotional weight — the hero, a product reveal, a “join us” call — the brand drops a full-bleed coral band or a deep-navy band (#091723). The navy is the brand’s grown-up counterweight: it carries the dark hero sections, the footer, and certain high-commitment buttons. Notably, the production sign-up audit caught navy on the primary sign-up action — Monzo reserves the deepest, most stable surface for the highest-trust gesture, while coral does the lighter, more playful work everywhere else.

Geometry is soft but not bubbly. Corners are gently rounded (8–24px on cards), and every CTA is a full pill (500px radius) — the pill is a brand-defining shape that echoes the rounded card and the friendly tone. Shadows are quiet and navy-tinted, used to lift cards a few pixels off the white rather than to dramatise. Illustration is a constant: flat, characterful coral-and-navy spot illustrations of people, coins, and phones thread through the pages, reinforcing the “made with you” community posture.

The overall atmosphere is warm, transparent, and human — a bank that looks like it was designed by people who actively did not want to look like a bank. It is optimistic without being childish, plain-spoken without being dull, and confident enough to make one loud coral carry the whole identity.

Key Characteristics:

  • Bright-white canvas (#ffffff) as the default ground — light-by-default, never dark-by-default
  • Single brand voltage: Hot Coral #ff4f40 — the famous translucent-card colour, warm and almost neon
  • Deep navy #091723 as the grown-up counterweight — dark hero bands, footer, high-commitment CTAs
  • MonzoSans custom family: MonzoSansDisplay for headlines, MonzoSansText for body — humanist-geometric with soft terminals
  • Display tier runs heavy (700) with tight negative tracking (-0.018em to -0.03em)
  • Full-pill CTAs at 500px radius — a brand-defining friendly shape
  • Gently rounded card corners (8–24px), never sharp, never fully bubbled
  • Quiet navy-tinted shadows — lift, not drama
  • Flat coral-and-navy spot illustrations carry the community/“made with you” tone
  • Plain-English, member-not-mark copy register: transparent, warm, optimistic

2. Color Palette & Roles

Canvas

  • Canvas / BG (#ffffff): Bright-white default ground for the entire site — light-by-default.
  • Surface (#ffffff): Default card and section surface, identical to canvas.
  • Surface Soft (#fafafa): Faint off-white for gently alternating section bands.
  • Surface Coral Tint (#fff1ef): Coral at ~6% — soft informational card background.
  • Surface Navy (#091723): Deep-navy dark surface for hero bands and the footer.
  • Surface Navy Soft (#13283a): +1 step on the navy surface — cards on navy, hover.

Text

  • Ink (#000000): Primary black headline and high-emphasis text on white.
  • Body (#1a1a1a): Near-black running body copy — slightly softer than pure black.
  • Muted (#5b5b5b): Captions, metadata, secondary copy on white.
  • Subtle (#8a8a8a): Disabled and lowest-hierarchy text.
  • Text on Navy (#ffffff): White ink on the navy dark surface.
  • Text on Navy Muted (#b8c2cc): Cool muted-grey ink on navy for secondary copy.

Brand

  • Hot Coral (#ff4f40): The signature Monzo brand colour — wordmark, accents, illustration fills, coral CTA fills, hover states. This is THE brand.
  • Coral Hover (#ff6557): Lighter coral for hover/active glow on coral fills.
  • Coral Deep (#e83b2d): Pressed/active deeper coral.
  • Coral Ink (#c42d22): Darkened coral used for coral-coloured text on white where AA contrast is required (Hot Coral itself is too light for small text on white).
  • Coral Soft (#fff1ef): Coral at ~6% — informational tint backgrounds and soft badges.
  • On Brand (#ffffff): White text on a coral fill.
  • Navy (#091723): Deep navy — dark surfaces, dark hero bands, and high-commitment CTA fills (e.g. the production sign-up button).
  • Navy Hover (#13283a): Lifted navy on hover for navy fills.
  • On Navy (#ffffff): White text on a navy fill.

Interactive

  • Link (#c42d22, Coral Ink): Default link colour — coral-ink for AA contrast on white, no underline at rest, underline on hover.
  • Link Hover (#ff4f40): Brightens to full Hot Coral on hover with underline.
  • CTA Hover (coral): Fill shifts #ff4f40#ff6557; optional coral-glow blooms on featured CTAs.
  • CTA Hover (navy): Fill shifts #091723#13283a.
  • Disabled: #f0f0f0 background, #8a8a8a text.
  • Selected: Coral-tint chip (#fff1ef bg, #c42d22 text).

Borders

  • Border (#e4e4e4): Default 1px hairline divider on white.
  • Border Strong (#000000): Full-black hairline — outlined/secondary buttons and outlined cards.
  • Border Soft (#f0f0f0): Softest divider band.
  • Border Focus (#091723): Navy focus border on inputs.
  • Border on Navy (rgba(255, 255, 255, 0.16)): Hairline on the navy dark surface.

Shadow Colors

Monzo’s shadows are navy-tinted, not pure blackrgba(9, 23, 35, 0.06–0.18). On a bright-white canvas, low-opacity shadows read cleanly, so the brand keeps elevation subtle (lift, not drama). A rare coral-glow (rgba(255, 79, 64, 0.30) 0 0 28px) is reserved for featured CTAs and hero moments.

Semantic

  • Success (#1f8a4c): Success green on white — distinct from coral.
  • Warning (#c77700): Caution amber on white.
  • Danger (#d23b2e): Error red — deliberately nudged away from Hot Coral so error never reads as “brand”.
  • Info (#091723): Info uses the brand navy.

3. Typography Rules

Font Family

Display: MonzoSansDisplay — the brand’s custom humanist-geometric display cut, used for every headline and hero figure. Geometric construction softened by rounded terminals and a tall x-height. Weights deployed: 500, 600, 700. OpenType kern and liga on.

Body: MonzoSansText — the companion text cut, optically tuned for running copy at 13–18px. Weights: 400, 500, 600. This is the workhorse for body, labels, captions, nav, and buttons.

Fallback chain: MonzoSansText, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif. The chain hands off to the platform UI font, then Segoe/Roboto, then Helvetica/Arial — keeping a friendly humanist sans in every fallback slot.

Mono: system monoui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace, used sparingly for reference IDs and code. Weights: 400, 500. tnum on for any tabular figure.

Tabular numerals: balance figures and money displays use tnum so digit columns align — important when a figure animates with a count-up.

Hierarchy

RoleFontSizeWeightLine HeightLetter SpacingOT FeaturesNotes
display-heroMonzoSansDisplay807001.00-0.03emkern, ligaTop-of-page hero headline
display-lgMonzoSansDisplay567001.05-0.02emkern, ligaSecondary hero / big section opener
h1MonzoSansDisplay407001.10-0.018emkern, ligaPage title
h2MonzoSansDisplay326001.20-0.012emkern, ligaSection heading
h3MonzoSansDisplay246001.25-0.005emkern, ligaSubsection / feature-card title
h4MonzoSansText206001.300kernCard body title
title-smMonzoSansText186001.350kernList heading
body-lgMonzoSansText184001.550kernLead paragraph
bodyMonzoSansText164001.550kernDefault body copy
body-strongMonzoSansText166001.550kernInline emphasis
body-smMonzoSansText144001.500kernSecondary body
labelMonzoSansText135001.400kernForm labels, UI labels
captionMonzoSansText125001.400.02emkernCaptions, metadata
eyebrowMonzoSansText126001.200.08emkernUppercase section eyebrow
buttonMonzoSansText166001.200kernAll CTA labels
nav-linkMonzoSansText155001.400kernTop navigation links
money-figureMonzoSansDisplay487001.05-0.02emtnumBalance / big money figure
money-inlineMonzoSansText166001.400tnumInline transaction amounts
legalMonzoSansText124001.500kernFooter disclosure / regulatory copy

Principles

  • Two cuts, one family: Display headlines use MonzoSansDisplay; everything 20px and under uses MonzoSansText. Never set body in the display cut — the text cut is optically corrected for small sizes.
  • Display runs heavy: The headline tier is 700, confident and warm. This distinguishes Monzo from lighter fintech systems and signals approachable confidence.
  • Tight negative tracking on display only: -0.018em to -0.03em on display sizes; body stays at 0. The tightening compresses big headlines into a tidy block.
  • Generous body line-height: 1.55 on body copy — Monzo is a reading brand (plain-English explanations of money), so running copy is set spacious and calm.
  • Eyebrow is uppercase + tracked: 12px MonzoSansText 600 with 0.08em tracking, uppercase — the only place letter-spacing opens up.
  • Black ink, not coral, for headlines: Headlines are #000000 on white; coral is an accent on type (a highlighted word, an underline), never the default headline colour.
  • Tabular numerals on money: Any balance or animated figure uses tnum so digits don’t jitter as values change.
  • Humanist warmth over geometric coldness: Where a colder system would pick a strict geometric sans, Monzo’s rounded terminals and tall x-height keep the type human — that warmth is deliberate.

4. Component Stylings

Buttons

Primary CTA — Coral (“Get started”, “Open an account”)

  • Background: #ff4f40 (Hot Coral)
  • Text: #ffffff, weight 600, 16px
  • Padding: 14px / 28px
  • Height: 48px
  • Radius: pill (500)
  • Hover: bg #ff6557; optional coral-glow rgba(255,79,64,0.30) 0 0 28px on featured
  • Active: bg #e83b2d
  • Use case: most primary marketing actions, the warm/playful tier

Primary CTA — Navy (“Sign up”, high-commitment)

  • Background: #091723 (Navy)
  • Text: #ffffff, weight 600, 16px
  • Padding: 14px / 28px
  • Height: 48px
  • Radius: pill (500)
  • Hover: bg #13283a
  • Active: bg #091723 with inset
  • Use case: the highest-trust gesture — the production sign-up button uses navy, not coral

Secondary — Outlined (“Learn more”)

  • Background: #ffffff
  • Text: #000000, weight 600
  • Border: 1.5px solid #000000
  • Padding: 12.5px / 26.5px
  • Height: 48px
  • Radius: pill (500)
  • Hover: bg #000000, text #ffffff (invert)

Ghost / Text (“See all features”)

  • Background: transparent
  • Text: #000000, weight 600; coral-ink underline grows on hover
  • No border; used inline and in dense nav contexts

On-Coral CTA (button sitting on a coral hero band)

  • Background: #ffffff
  • Text: #000000, weight 600
  • Padding: 14px / 28px, height 48px, radius pill
  • Use case: contrast CTA when the section background is coral

Cards

Default Card

  • Background: #ffffff
  • Border: 1px solid #e4e4e4
  • Radius: 16px (xl)
  • Padding: 24px
  • Shadow: none at rest; rgba(9,23,35,0.10) 0 4px 12px on hover
  • Use case: feature grid, content tiles

Coral Card (the signature loud tile)

  • Background: #ff4f40
  • Text: #ffffff
  • Radius: 24px (xxl)
  • Padding: 32px
  • Use case: hero feature, “join us” moment, promo

Coral-Tint Card (soft informational)

  • Background: #fff1ef
  • Text: #000000, with coral-ink accents
  • Radius: 16px
  • Padding: 24px
  • Use case: tips, callouts, gentle highlights

Navy Card (grown-up tile)

  • Background: #091723
  • Text: #ffffff / #b8c2cc muted
  • Radius: 24px
  • Padding: 32px
  • Use case: security, business, “serious” product moments

Badges, Tags, Pills

Coral Badge

  • Background: #fff1ef (coral soft)
  • Text: #c42d22 (coral ink), weight 500, 12px
  • Padding: 4px / 12px
  • Radius: pill (500)
  • Use case: “New”, “Free”, “Popular”

Navy Badge

  • Background: #091723
  • Text: #ffffff, weight 500, 12px
  • Padding: 4px / 12px
  • Radius: pill
  • Use case: “Beta”, “Coming soon”

Inputs / Forms

Text Input

  • Background: #ffffff
  • Border: 1px solid #e4e4e4
  • Radius: 8px (md)
  • Height: 48px
  • Padding: 12px / 16px
  • Focus: border #091723 1.5px, ring rgba(9,23,35,0.45) 3px
  • Label above in 13px MonzoSansText 500
  • Error: border #d23b2e, helper text #d23b2e
  • Use case: email capture, account forms

Select / Dropdown

  • Same shell as text input; chevron in #5b5b5b
  • Open: 8px radius menu, rgba(9,23,35,0.14) 0 8px 24px shadow, white surface

Checkbox / Toggle

  • Toggle ON: track #ff4f40 (coral), white knob — the coral toggle is a brand moment
  • Checkbox checked: #091723 fill, white tick

Top Nav

  • Height: 64px
  • Background: #ffffff (transparent over white; gains 1px #e4e4e4 bottom border after scroll)
  • Logo left (Monzo wordmark in #ff4f40 coral), nav links centre/left, “Log in” ghost + “Sign up” navy pill right
  • Nav link: 15px / 500, colour #000000; hover: coral-ink underline grows
  • Mega-menu: white surface, 16px radius, rgba(9,23,35,0.14) 0 8px 24px shadow

Footer

  • Background: #091723 (navy — closes the page on the grown-up anchor)
  • Text: #b8c2cc for links, #ffffff for category headers
  • Padding: 64px vertical
  • Coral Monzo wordmark and app-store badges; regulatory/legal copy at 12px

5. Layout Principles

Spacing System

Base 4px. Scale: 0, 4, 8, 12, 16, 24, 32, 48, 64, 96. Section spacers run 64–96px; component padding clusters at 16/24/32. The system is generous — Monzo gives copy and illustration room to breathe rather than packing the page.

Grid & Container

  • Page max-width 1280px
  • Prose / reading width 720px
  • 12-column grid with 24px gutters
  • Hero: content constrained to 1280px, background can go full-bleed (white, coral, or navy)
  • Feature grids: 3-up on desktop, 2-up tablet, 1-up mobile

Whitespace Philosophy

Monzo treats whitespace as trust signalling. A bank that crowds the page looks anxious; Monzo’s wide margins, large headline-to-body gaps, and airy section padding read as calm and self-assured. Illustration sits in this whitespace rather than competing with it — the coral-and-navy spot art has room to be a character, not clutter.

Section Cadence

White section → white section → coral or navy full-bleed band (the emotional beat) → white section → navy footer. The chromatic bands are punctuation: most of the page is bright white, and the coral/navy moments mark where the brand wants the reader to feel something — the hero, the product reveal, the join-us call, the close.

6. Shapes & Radius Scale

TierValueUse
None0Full-bleed bands, edge-to-edge images
Micro2Status dots, tiny indicators
Small4Tooltips, small chips
Standard8Inputs, dropdowns, small buttons
Comfortable12Default content tiles, list items
Featured16Feature cards, mega-menu surfaces
Relaxed24Coral / navy hero cards, large image containers
Pill500All CTAs, badges, toggles, tags

Monzo’s signature geometry is 16–24px on cards + full pill (500px) on every CTA. The pill is the brand-defining shape — it echoes the rounded debit card and reinforces the friendly, human tone. Cards stay gently rounded; nothing is ever sharp-cornered, and nothing is fully circular except status dots and the toggle knob.

7. Depth & Elevation

LevelTreatmentUse
0Flat on white canvas (#ffffff), no shadowHero text, body, section backgrounds
11px border #e4e4e4, no shadowDefault resting card
2Ambient shadow rgba(9,23,35,0.06) 0 1px 2pxSticky nav after scroll
3Soft shadow rgba(9,23,35,0.10) 0 4px 12pxCard hover
4Standard shadow rgba(9,23,35,0.14) 0 8px 24pxMega-menu, dropdown, popover
5Elevated shadow rgba(9,23,35,0.18) 0 20px 48px -12pxModal dialog
GlowCoral-glow rgba(255,79,64,0.30) 0 0 28pxFeatured CTA, hero coral moment

Shadow Philosophy

Monzo’s shadows are navy-tinted and intentionally quiet. On a bright-white canvas, even low-opacity shadow reads cleanly, so the brand keeps elevation in the 0.06–0.18 range — enough to lift a card a few pixels, never enough to dramatise. Tinting the shadow with the brand navy (rgba(9,23,35,…)) instead of pure black keeps elevation feeling part of the palette rather than a hard grey wash. The single louder treatment is the rare coral-glow, used only on a page’s most important CTA or a featured coral hero card.

8. Interaction & Motion

Easing

  • Standard: cubic-bezier(0.4, 0, 0.2, 1) — most state changes
  • Emphasized: cubic-bezier(0.2, 0, 0, 1) — modal/menu entrances
  • Entrance: cubic-bezier(0, 0, 0.2, 1) — scroll-reveal fade-ups
  • Gentle: cubic-bezier(0.33, 1, 0.68, 1) — count-up balance figures, soft illustration loops

Durations

  • Fast: 150ms — link/colour hover, underline grow
  • Standard: 240ms — button fill shift, card hover lift
  • Slow: 320ms — modal / mega-menu entrance
  • Page: 400ms — between-page crossfade and chromatic band reveal

Per-Component Recipes

  • Button hover (coral): fill #ff4f40#ff6557 over 150ms; featured CTA blooms coral-glow over 240ms ease-standard
  • Button hover (navy): fill #091723#13283a over 150ms
  • Secondary button hover: invert to black fill / white text over 150ms
  • Card hover: lift with rgba(9,23,35,0.10) 0 4px 12px over 240ms, translateY -2px
  • Nav link hover: coral-ink underline grows left→right over 150ms
  • Balance count-up: figure animates from 0 to value over ~800ms ease-gentle with tnum
  • Scroll reveal: section fades up 16px over 320ms ease-entrance, staggered ~60ms per item
  • Modal entrance: overlay fades 240ms; dialog scales 0.98 → 1.0 over 320ms ease-emphasized
  • Illustration loops: subtle, slow (3–6s) loops on hero spot art; opt-in only

Reduced Motion

Strictly honoured via prefers-reduced-motion: reduce. Count-up figures snap to final value, scroll-reveal staggers become instant, illustration loops freeze on their resting frame, coral-glow becomes a static glow, and modal scale becomes an instant fade.

9. Accessibility & A11y

Contrast Pairs (computed on the live tokens)

  • #000000 text on #ffffff bg: 21.0:1 — AAA (the maximum)
  • #1a1a1a body on #ffffff bg: 17.4:1 — AAA
  • #091723 navy on #ffffff bg: 16.1:1 — AAA (navy headings/buttons)
  • #ffffff on #091723 navy: 16.1:1 — AAA (white on navy fill)
  • #c42d22 coral-ink link on #ffffff: 5.8:1 — AA (this is why links use coral-ink, not Hot Coral)
  • #ffffff on #ff4f40 Hot Coral: 3.2:1 — AA for large text / UI only; large/bold button labels qualify, but small coral-fill body text is avoided
  • #ff4f40 Hot Coral on #ffffff: 3.1:1 — large-only; never use Hot Coral for small text on white — switch to coral-ink #c42d22

Accessibility note: Hot Coral is a fill and accent colour, not a small-text colour on white. The system pairs coral fills with white labels at button scale (≥16px bold), and uses coral-ink #c42d22 wherever coral-coloured text must meet AA at body sizes.

Focus Indicators

3px solid rgba(9, 23, 35, 0.45) navy ring with 2px offset on every interactive element. Navy (not coral) is used for focus so the ring stays AA-distinct on both white and coral surfaces.

ARIA Patterns

  • Dialog: role="dialog", aria-modal="true", focus-trap, Escape to close
  • Mega-menu: aria-expanded on the trigger, role="menu" panel, arrow-key navigation
  • Toggle: role="switch" with aria-checked (the coral toggle)
  • Live region: form success/error toasts use aria-live="polite"
  • Money figure: visible ”£” + numerals with aria-label spelling the amount

Keyboard Nav

Tab order follows visual flow. Mega-menu opens on Enter/Space and traps arrow keys; modals are focus-trapped with Escape-to-close. All pill CTAs are reachable and show the navy focus ring.

Screen Reader Hints

  • Monzo wordmark: role="img" with aria-label="Monzo"
  • Decorative spot illustrations: aria-hidden="true"
  • Balance figures: aria-label="Balance: forty-eight pounds" style spelled-out labels

Reduced Motion

All animation honoured — see Section 8. Count-up and reveal animations degrade to static states.

10. Responsive Behavior

Breakpoints

NameWidthUse
mobile<640Stacked single-column
tablet640–10242-column grid
desktop1024–12803-column grid, full nav
wide≥1280Full layout, 1280px container

Touch Targets

Minimum 44×44px. CTAs at 48px height across breakpoints; toggles and icon buttons keep a 44px hit area even when the visible glyph is smaller.

Collapsing Strategy

  • Top nav collapses to a hamburger + slide-in drawer below 1024px
  • display-hero scales 80 → 56 → 40px (desktop → tablet → mobile)
  • h1 scales 40 → 32 → 28px
  • Feature grid 3-col → 2-col → 1-col
  • Coral / navy hero bands stay full-bleed; inner content re-stacks vertically

Image & Illustration Behavior

  • Phone-frame mockups at iOS-bezel radius (~32–40px)
  • Spot illustrations scale fluidly and centre above copy on mobile (side-by-side on desktop)
  • loading="lazy" for below-fold imagery; coral/navy SVG illustrations inline for crispness

Container Queries

Feature and money cards use container queries where supported: below ~320px the card stacks label-above-figure; at ≥320px it aligns label and figure on one row.

11. Content & Voice

Tone

Warm, plain-English, transparent. Monzo’s voice treats the reader as a member, not a mark — it explains money honestly, avoids jargon, and sounds like a helpful, optimistic friend who happens to run a bank. Sentences are short and human; the brand says “you” and “we” freely, admits trade-offs openly, and never reaches for the aspirational-luxury register of legacy finance.

Microcopy Patterns

  • Button verbs: “Get started”, “Open an account”, “Sign up”, “Log in”, “Learn more”, “Join Monzo”
  • Error recipe: kind and specific. “That email doesn’t look right — mind checking it?”
  • Success confirmation: “You’re in. Welcome to Monzo.” — warm, member-first
  • Loading state: “One moment…” — never a cold spinner-only state

Empty States

  • No transactions: “Nothing here yet. Your spending will show up as it happens.”
  • No pots/savings: “Create your first Pot to start saving.”
  • Empty states are encouraging and concrete — they say what to do next, with no apology and no marketing fluff.

CTA Verb Conventions

  • Acquisition: “Get started”, “Open an account”, “Join Monzo”
  • Sign-in: “Log in”
  • Exploration: “Learn more”, “See how it works”, “Explore features”
  • Commitment: “Sign up” — paired with the navy button, the high-trust gesture
  • Community: “Join the community”, “Tell us what you think” — the “made with you” posture

Monzo favours plain, friendly imperatives over corporate-finance phrasing — “Get started” over “Apply now”, “Join Monzo” over “Become a customer”.

12. Dark Mode & Theming

Monzo’s marketing site is light-by-default with no system-wide dark mode. The brand instead uses navy bands (#091723) as a content-tier dark surface — hero sections, the footer, and “serious” product cards go navy — but this is a sectional treatment inside a light page, not a togglable theme. The site’s theme-toggle audit returned a low signal (data-theme-attr present but no full dark stylesheet), confirming there is no shipped dark variant.

If extending Monzo to a true dark theme, invert toward the navy anchor rather than pure black:

colors-dark:
  bg: '#091723'                 # the brand navy becomes the canvas
  surface: '#13283a'            # navy-soft as the card surface
  surface-2: '#1c3850'          # +1 elevated surface
  text: '#ffffff'
  text-body: '#e6ecf1'
  text-muted: '#b8c2cc'
  brand: '#ff6557'              # lift Hot Coral slightly so it glows on navy
  brand-hover: '#ff7a6e'
  on-brand: '#091723'           # near-navy ink on the lifted coral
  border: 'rgba(255,255,255,0.16)'
  link: '#ff8478'               # lighter coral reads as a link on dark navy

On dark navy, Hot Coral is lifted (#ff4f40#ff6557) so it glows rather than muddies, and text-on-coral flips to near-navy. This keeps the brand identity (coral + navy) intact while inverting the canvas — the opposite move from a light page where coral text must deepen to coral-ink for contrast.

13. Lineage & Influences

Monzo’s visual lineage runs through the UK challenger-bank moment of the mid-2010s and the broader move to make finance feel human. Its core idea — build an entire brand around one warm, almost-neon coral and a friendly humanist sans — is a deliberate rejection of legacy-bank visual codes (navy suits, serif gravitas, marble-and-pillar trust signalling). Instead Monzo borrows from consumer-tech and community-product design: the bright-white canvas, the flat characterful illustration, the plain-English copy, and the pill-shaped CTAs all read closer to a friendly app onboarding than a banking brochure. The translucent coral card itself became the brand’s most-shared object — a piece of industrial design that did the marketing — and the website’s whole palette flows back from that physical artefact.

What Monzo rejects is corporate-finance distance. Where legacy banks signal authority through coldness, Monzo signals trust through warmth, transparency, and generous whitespace. It shares DNA with fellow neobanks — the friendly-fintech wave that includes Starling, Revolut, and N26 — but distinguishes itself by leaning hardest into a single iconic colour and a genuinely community-led posture (“made with you”, public roadmaps, an active forum). The navy anchor is the brand’s nod to the seriousness banking still requires: coral does the warmth, navy does the trust, and the two together let Monzo be friendly without ever feeling unserious about your money.

Influences:

  • Starling Bank (starlingbank.com) — UK challenger-bank contemporary; the friendly-fintech wave Monzo competes within
  • Revolut (revolut.com) — Neobank peer; bold colour + app-first marketing posture
  • Stripe (stripe.com) — Fintech reference for crisp typography, generous whitespace, and developer-grade polish
  • Swiss / International Typographic Style (Wikipedia) — Grid discipline and clean sans-serif hierarchy underpinning the layout
  • Wise (wise.com) — Bright, illustration-led, plain-English fintech communication
  • Material Design (m3.material.io) — Standard easing curves and elevation logic adapted to a quieter, navy-tinted shadow system

14. Do’s and Don’ts

Do:

  • Use Hot Coral #ff4f40 as the single brand voltage — wordmark, accents, illustration fills, the warm/playful CTA tier
  • Default to a bright-white #ffffff canvas — Monzo is light-by-default
  • Reserve navy #091723 for the grown-up anchor: dark hero bands, the footer, and high-commitment CTAs (the sign-up button is navy)
  • Pill every CTA at full radius (500px) — the pill is brand-defining
  • Set headlines in MonzoSansDisplay 700 with tight negative tracking (-0.018em to -0.03em)
  • Set body in MonzoSansText at 16–18px with 1.55 line-height — calm, readable, plain-English
  • Use coral-ink #c42d22 for any coral-coloured text on white (AA-safe)
  • Tint shadows with navy (rgba(9,23,35,…)), keep them quiet (0.06–0.18)
  • Lean on flat coral-and-navy spot illustration to carry the community tone
  • Write microcopy as a warm, transparent member-first voice (“Get started”, “Join Monzo”)

Don’t:

  • Don’t use Hot Coral for small body text on white — its 3.1:1 contrast fails AA; switch to coral-ink #c42d22
  • Don’t make navy the brand colour — navy is the anchor, coral is THE brand
  • Don’t go dark-by-default — Monzo’s canvas is bright white; navy is a sectional surface, not the page
  • Don’t square the CTA corners — every button is a full pill
  • Don’t set headlines in MonzoSansText — display copy uses MonzoSansDisplay
  • Don’t let coral collide with the danger red — error uses #d23b2e, nudged away from coral so “error” never reads as “brand”
  • Don’t dramatise elevation — shadows lift a few pixels, they don’t bloom (except the rare coral-glow on a featured CTA)
  • Don’t crowd the page — whitespace is how Monzo signals trust
  • Don’t use corporate-finance copy (“Apply now”, “Become a customer”) — use friendly imperatives
  • Don’t tint the headline ink coral — headlines are black #000000; coral is an accent on type, not the default

15. Agent Prompt Guide

Quick Color Reference

Brand (Hot Coral):  #ff4f40
Coral Hover:        #ff6557
Coral Ink (text):   #c42d22
Coral Soft:         #fff1ef
Navy (anchor):      #091723
Navy Hover:         #13283a
Canvas / BG:        #ffffff
Ink:                #000000
Body:               #1a1a1a
Muted:              #5b5b5b
Border:             #e4e4e4
On Brand / On Navy: #ffffff

Example Component Prompts

  1. “Create a Monzo hero: bright-white #ffffff background, 80px MonzoSansDisplay headline at weight 700 in black #000000 with -0.03em tracking — text ‘Banking made for you.’. Below, an 18px MonzoSansText lead in #1a1a1a at 1.55 line-height. Primary CTA: a full pill (500px radius) at 48px height filled navy #091723 with white text weight 600, labelled ‘Sign up’. Secondary CTA: outlined pill, 1.5px black border, black text, ‘Learn more’. To the right, a flat coral-and-navy spot illustration of a person holding a coral card.”

  2. “Design a Monzo coral feature card: background Hot Coral #ff4f40, 24px radius, 32px padding. Title in 24px MonzoSansDisplay weight 700 white #ffffff. Body in 16px MonzoSansText white at 1.55 line-height. A white pill CTA at 48px with black text labelled ‘Get started’. Keep all text white — coral fill, white ink.”

  3. “Build a Monzo balance card: white #ffffff surface, 1px #e4e4e4 border, 16px radius, 24px padding. Top: a 13px #5b5b5b label ‘Current balance’. Below: a 48px MonzoSansDisplay money figure in black #000000 with tabular numerals reading ‘£1,248.50’. The figure count-ups from 0 over 800ms on load (gentle ease). Bottom row: two pill chips with coral-soft #fff1ef bg and coral-ink #c42d22 text.”

  4. “Compose a Monzo 3-up feature grid: bright-white section, 24px gap. Each card white with 1px #e4e4e4 border, 16px radius, 24px padding. Top of each: a 48px flat coral icon. Title 20px MonzoSansText weight 600 black. Body 16px weight 400 #1a1a1a. On hover, the card lifts -2px with a soft navy-tinted shadow rgba(9,23,35,0.10) 0 4px 12px.”

  5. “Create a Monzo navy CTA band: full-bleed #091723 navy background, 64px vertical padding. Centred 40px MonzoSansDisplay headline weight 700 in white. Below, a 16px muted line in #b8c2cc. A single coral pill CTA #ff4f40 at 48px with white text weight 600, labelled ‘Join Monzo’. The coral pops against navy — this is the page’s emotional close.”

  6. “Design a Monzo text input: white #ffffff field, 1px #e4e4e4 border, 8px radius, 48px height, 12px/16px padding. A 13px MonzoSansText 500 label above reads ‘Email address’. On focus, the border becomes navy #091723 1.5px with a 3px rgba(9,23,35,0.45) ring. Below it, a navy primary pill CTA labelled ‘Get started’.”

Iteration Guide

  1. Stay bright-white: if your canvas is dark, you’re not Monzo. The brand is light-by-default #ffffff; navy is a band, not the page.
  2. Commit to Hot Coral: replace every generic blue/teal with #ff4f40. The warm coral is the whole identity — one loud colour carries the brand.
  3. Split the two CTA tiers: coral for warm/playful actions, navy for the high-commitment gesture (sign-up). Don’t make everything coral.
  4. Pill every CTA: 500px radius, no exceptions. The pill echoes the rounded card and the friendly tone.
  5. Use the right coral for the right job: Hot Coral #ff4f40 for fills, coral-ink #c42d22 for coral text on white — never small Hot Coral text (it fails AA).
  6. Set the two cuts correctly: MonzoSansDisplay for headlines (700, tight tracking), MonzoSansText for everything 20px and under.
  7. Keep shadows quiet and navy-tinted: lift a card 2px with rgba(9,23,35,…), don’t dramatise. Save the coral-glow for one featured CTA.
  8. Write like a member, not a marketer: warm, plain-English, transparent copy — “Get started”, “Join Monzo”, kind error messages, encouraging empty states.
Ship with this

Drop monzo into your project, then ship the actual sections in an afternoon.

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