Skip to content

Monzo Design System

Monzo's design system as a DESIGN.md file. Hot Coral #ff4f40, MonzoSansDisplay at 16-61px, 19 colors, 19 components. For React, Next.js, and AI tools.

Add shadcn.io to your AI agent. · Pro It installs blocks, icons and templates in your design system from a prompt, with Pro.

Set up MCP
Primary
#ff4f40
Typeface
MonzoSansDisplay
Shape
Soft
Base radius
24px
Colors
19
Type tokens
14
Components
19
Spacing values
9

About

About Monzo DESIGN.md

Curated by Dov Azencot · Updated May 13, 2026 · Source monzo.com (opens in a new tab)

Monzo's marketing canvas is the visual argument for a UK challenger bank built around its physical card. The Hot Coral hex `#ff4f40` is famous, but on the site itself it is held back: the card mockup is Hot Coral, the illustrated phone tiles in the "Manage your money today" grid are Hot Coral, and almost nothing else. The primary CTA on every band is a dark-navy pill at `#091723` with white text and a `500px` radius — pill geometry so committed the radius value rounds up to half-a-thousand pixels rather than the customary 9999. Display type is MonzoSansDisplay at the single weight `800`, scaling from a 16px section eyebrow up to a 61px hero ("It all starts with a Hot Coral card") with `lineHeight: 1.0`. Body type is MonzoSansText at weights 400 and 600. Two structural background colours — white `#ffffff` and deep navy `#091723` — split the page into payday-storytelling bands and white product-catalogue bands.

This page packages the Monzo marketing canvas into a single DESIGN.md file built on the Google Labs DESIGN.md specification. Inside the spec: 19 colour tokens grouped into brand, surface, ink, and link roles; 12 typography tokens spanning a 61px hero down to a 13px caption with the full MonzoSansDisplay 800 and MonzoSansText 400/600/700 weight stack; six radius tokens including the load-bearing `500px` pill and a `4px` micro-tag corner; nine spacing tokens climbing from 4px to a 64px section band; and 19 components tokens covering buttons, payday cards, illustrated product tiles, the top nav, the dark "Humans on hand" support card, FAQ rows, and the legal-link footer. Every value is quoted as an exact hex, pixel, or weight number.

A working React or Next.js developer drops the file into Claude, Cursor, or GitHub Copilot and the agent reproduces Monzo's friendly-bank rhythm rather than a generic neobank dashboard. Tokens map onto Tailwind config or CSS variables, and components reference each other by name. The system is worth studying for one disciplined choice that mirrors Airbnb's restraint with Rausch: a famous brand colour treated as a material — the colour of the card, the colour of the illustration — rather than the colour of the button. Where most fintech brands try to brand the click, Monzo brands the object the click buys.

What makes it distinct

5

  1. Hot Coral as object color`#ff4f40` fills the physical card and illustrated phone tiles, never a CTA button
  2. Primary CTA is a dark-navy pill`#091723` background, white text, 500px radius, 12px-24px padding
  3. MonzoSansDisplay 800 across every heading16px h3 to 61px hero, no thin display tier exists
  4. Pill `500px` and tight `4px` are the two dominant radii`500px` for buttons and rounded chips, `4px` for inline tags
  5. Two-mode rhythmwhite #ffffff product bands slam against deep #091723 payday bands with no gradient transitions

monzo.com

Live at monzo.com

A snapshot of the brand in production. Scroll the frame to see the whole page.

Monzo's website at monzo.com

Colors

19 colors

Monzo's system runs on #ff4f40 as its primary voltage, used in 3 of 19 components. Type is set in MonzoSansDisplay across 14 tokens from 13px to 61px, weights 400–800. Shape language is soft — components average 140px corner radius, with no sharp interactive edges.

Brand & Accent

Sparing, CTA-only voltage · 2

Surface

Page and card backgrounds · 5

Text

Headlines, body, captions · 8

Borders & Hairlines

Dividers, outlines, rules · 3

Other

Specialty colors · 1

Typography

14 type tokens

Set in MonzoSansDisplay across 14 tokens, from 13px to 61px, weights 400–800. Shown in its own stack: where the font isn't installed, the fallback the file names stands in.

  • display-xxl61px · weight 800 · lh 1The quick brown fox jumps over the lazy dog
  • display-xl49px · weight 800 · lh 1.2The quick brown fox jumps over the lazy dog
  • display-lg44px · weight 800 · lh 1.2The quick brown fox jumps over the lazy dog
  • display-md39px · weight 800 · lh 1.2The quick brown fox jumps over the lazy dog
  • display-sm31px · weight 800 · lh 1.2The quick brown fox jumps over the lazy dog
  • heading-lg25px · weight 700 · lh 1.2The quick brown fox jumps over the lazy dog
  • heading-md20px · weight 600 · lh 1.2The quick brown fox jumps over the lazy dog
  • heading-sm16px · weight 600 · lh 1.2The quick brown fox jumps over the lazy dog
  • body-lg20px · weight 400 · lh 1.4The quick brown fox jumps over the lazy dog
  • body-md16px · weight 400 · lh 1.4The quick brown fox jumps over the lazy dog
  • body-md-label16px · weight 600 · lh 1.4The quick brown fox jumps over the lazy dog
  • body-md-strong16px · weight 700 · lh 1.375The quick brown fox jumps over the lazy dog
  • body-sm13px · weight 400 · lh 1.4The quick brown fox jumps over the lazy dog
  • button-md16px · weight 600 · lh 1.4The quick brown fox jumps over the lazy dog

Layout

Radii and spacing

7 corner radii and 9 spacing values. Shape language: soft.

Radii

  • none0px
  • xs4px
  • md24px
  • lg32px
  • xl64px
  • full500px
  • circle100%

Spacing

  • xxs4px
  • xs8px
  • sm10px
  • md16px
  • lg20px
  • xl24px
  • xxl32px
  • section48px
  • band64px

Components

19 components

Each rendered from its tokens (color, type, radius, padding) on Monzo's own canvas.

  • Button Primary
    button-primaryButton Primary
  • Button Primary On Dark
    button-primary-on-darkButton Primary On Dark
  • Button Secondary
    button-secondaryButton Secondary
  • Button Outline Light
    button-outline-lightButton Outline Light
  • Pill Tag
    pill-tagPill Tag
  • Badge Coral
    badge-coralBadge Coral
  • Top Nav
    top-navTop Nav
  • Nav Link
    nav-linkNav Link
  • Hero Band Light
    hero-band-lightHero Band Light
  • Hero Band Dark
    hero-band-darkHero Band Dark
  • Card Payday Dark
    card-payday-darkCard Payday Dark
  • Card Product Tile
    card-product-tileCard Product Tile
  • Card Feature Mint
    card-feature-mintCard Feature Mint
  • Card Support Light
    card-support-lightCard Support Light
  • Faq Row
    faq-rowFaq Row
  • Link List Row
    link-list-rowLink List Row
  • Inline Link
    inline-linkInline Link
  • Download Tile
    download-tileDownload Tile
  • Footer Dark
    footer-darkFooter Dark

In use

The system, in use

Monzo's tokens on the kind of product it builds.

Build something people actually use.

A short paragraph of marketing copy that previews how the brand's display tier and body tier read together. Two sentences is usually enough.

Get startedLearn more
Marketing heroHeadline, sub-copy, primary CTA — the universal homepage opener.

FAQ

Monzo design system FAQ

Common questions about Monzo's tokens, components, and how to use this DESIGN.md in your project.

Read next

Specs, directories, and component libraries that pair with this design system.

Use it

Use Monzo in your project

One machine-readable file. Drop it into Claude, Cursor, or any AI tool that reads DESIGN.md.

Download DESIGN.md
  1. Download the DESIGN.md

    One machine-readable file: every color, type, radius, spacing, and component token of Monzo.

  2. Feed it to your AI tool

    Drop it into Claude, Cursor, or GitHub Copilot. The agent writes React components and Tailwind classes that match Monzo's visual language.

  3. Reference the tokens directly

    Or paste the values into your Tailwind config, CSS variables, or component library: every color, size and radius is a quoted, ready-to-copy value.

Read the full DESIGN.md: overview, rationale, do’s and don’ts

Overview

Monzo's marketing canvas is two structural surfaces — white #ffffff and deep navy #091723 — alternating in full-bleed bands, with Hot Coral #ff4f40 reserved for the object the bank sells. The hero opens on white with "Monzo for all your money" sitting in MonzoSansDisplay at 39px / weight 800; below it the link list ("Bank accounts", "Savings and ISAs", "Investments") renders in Hot Coral as inline link text rather than buttons. The payday band ("Make payday twice as nice") slams in at #091723 with a #112231 card inset, the same load-bearing dark-on-dark step the spec captures in {colors.surface-payday} over {colors.canvas-dark}. Every primary CTA across both modes is a navy pill #091723 with white text at radius 500px — Hot Coral never fills a button.

Hot Coral as object color: Monzo treats {colors.primary} (#ff4f40) the way Airbnb treats Rausch — as a material, not a CTA. The card mockup in the hero is Hot Coral. The illustrated phone tiles in the "Manage your money today" grid are Hot Coral. The Monzo "M" mark is Hot Coral. The button is navy. Where most fintech brands paint the click, Monzo paints the thing the click buys.

Display type is MonzoSansDisplay at the single weight 800 across every heading tier from 16px section eyebrow up to a 61px hero with lineHeight: 1.0. There is no thin display alternative. Body type is MonzoSansText at weight 400 for prose, weight 600 for labels and button text, weight 700 for <strong> emphasis. Letter-spacing stays at normal (zero) on every token — Monzo does not lean on negative tracking. The brand's editorial signal is the single-weight 800 stack, not the tracking adjustments other display systems rely on.

Key Characteristics:

  • Two-mode band rhythm — {colors.canvas-light} (white) for product-catalogue bands, {colors.canvas-dark} (#091723) for payday storytelling bands, switched in full-bleed with no soft transitions.
  • Hot Coral {colors.primary} (#ff4f40) is the colour of the card, the colour of illustrated phone tiles, and the colour of inline link emphasis on the link-list rows — never the colour of a CTA button.
  • The primary CTA is {components.button-primary} — a navy pill {colors.ink} (#091723) with white text, {rounded.full} (500px) radius, {spacing.md} {spacing.xl} (12px 24px) padding, 51px tall.
  • Display is MonzoSansDisplay at weight 800 exclusively — 16px to 61px, with lineHeight: 1.0 on the hero and 1.2 everywhere else.
  • The pill radius is the literal value 500px rather than the customary 9999px — a deliberate maximal-pill commitment that survives in production CSS.
  • Cards use two corner sizes: 64px on the large dark payday card and 24px on illustrated product tiles and mint-fill feature cards. Inline tags use 4px.

Colors

Source pages: home (/).

Brand

  • Hot Coral ({colors.primary} — #ff4f40): frequency 20. Used as text (9), border (9), bg (2). The brand's signature colour — saturated coral-orange that fills the physical card mockup, illustrated phone tiles, and the Monzo wordmark glyph. Rare on the marketing canvas (under 5% of total chromatic load); reserved as an object colour.
  • Hot Coral Bright ({colors.primary-bright} — #f64d3f): a slightly redder variant captured by the extractor — clusters with Hot Coral. Used inside card-product-tile shadow gradients and in some illustration accents.
  • On Primary ({colors.on-primary} — #ffffff): white text and iconography on Hot Coral surfaces.

Ink

  • Ink ({colors.ink} — #091723): frequency 300. Used as text (137), border (137), bg (26). The brand's load-bearing dark — used as the primary CTA fill, default body-text colour on white, border on outline buttons. Not pure black — a deep blue-leaning navy that adds warmth at body sizes.
  • Ink Canvas ({colors.ink-canvas} — #112231): frequency 5. Used as bg (5). The themeColor declared in the brand's manifest and the slightly lighter elevated dark surface — fills card-payday-dark over the #091723 band canvas.
  • Ink Deep ({colors.ink-deep} — #012433): a very dark navy captured by the extractor — clusters with ink-canvas. Reserved for hairlines inside dark cards.
  • Ink Mute ({colors.ink-mute} — #3b4c54): frequency 2. Used as bg (2). A desaturated gray-blue used for muted secondary text on white and for tertiary chrome.

Link

  • Link ({colors.link} — #0000ee): frequency 52. Used as text (26), border (26). The browser-default link blue — Monzo lets unstyled <a> elements render at #0000ee in footer legal links and a handful of content rows. Not the brand's "primary link" colour; the actual link list above the fold renders in Hot Coral.

Surface

  • Canvas Light ({colors.canvas-light} — #ffffff): frequency 346. Used as text (178), border (129), bg (39). Default page background; carries product-catalogue bands and the hero.
  • Canvas Dark ({colors.canvas-dark} — #091723): same hex as {colors.ink}, doubling as a structural surface — the payday band, the support card section, the footer.
  • Surface Payday ({colors.surface-payday} — #112231): the elevated dark step over canvas-dark — fills card-payday-dark.
  • Surface Mint ({colors.surface-mint} — #e3ebe4): frequency 3. Used as bg (3). A very pale mint with a green-tinted hue — fills card-feature-mint and pill-tag backgrounds.
  • Surface Cream ({colors.surface-cream} — #f2f8f3): a paler tinted near-white captured in the white cluster — used as a soft second light surface step on FAQ accordion expanded states.

Hairline & Scrim

  • Hairline Light ({colors.hairline-light} — rgba(9,23,35,0.12)): 12%-alpha ink — 1px borders between FAQ rows and link-list dividers on white.
  • Hairline Dark ({colors.hairline-dark} — rgba(255,255,255,0.12)): 12%-alpha white — 1px borders inside dark payday bands.
  • Divider Soft ({colors.divider-soft} — rgba(9,23,35,0.06)): 6%-alpha ink — micro-dividers on dense lists.
  • Scrim ({colors.scrim} — #000000): frequency 539. Used as text (270), border (264), shadow (5). Pure black appears via browser-default rendering on a handful of unstyled elements and the fallback shadow. Monzo's actual body ink is {colors.ink} (#091723), not pure black — the high #000000 count reflects user-agent defaults, not the brand's chosen text colour.

Semantic

The marketing canvas does not declare a separate semantic palette (success / warning / danger / info). Error states live inside the authenticated app product and are out of scope here.

Typography

Font Family

Two proprietary families:

  • MonzoSansDisplay at the single weight 800 — every heading tier from {typography.heading-sm} (16px) up to {typography.display-xxl} (61px) renders in this one weight. There is no thin display alternative in the marketing system.
  • MonzoSansText at weights 400 (body prose), 600 (labels, button text), 700 (<strong> emphasis). Body sizes are 13px (caption), 16px (default), and 20px (lead).

Both families are proprietary, served from monzo.com under the CSS variables --font-stack-title (MonzoSansDisplay) and --font-stack-body (MonzoSansText). When MonzoSans cannot be licensed, Inter at the same weight stack is the closest open-source path; alternatively General Sans, DM Sans, or Söhne render the same blocky-friendly silhouette. Clamp display line-height to 1.0 on the hero and 1.2 elsewhere; keep letter-spacing at normal.

Hierarchy

TokenSizeWeightLine HeightUse
{typography.display-xxl}61px8001.0Hero ("It all starts with a Hot Coral card")
{typography.display-xl}49px8001.2Section opener on white bands
{typography.display-lg}44px8001.2Section opener on dark payday bands
{typography.display-md}39px8001.2"Monzo for all your money" hero variant
{typography.display-sm}31px8001.2Card title ("Make payday twice as nice")
{typography.heading-lg}25px7001.2Tile heading on product grid
{typography.heading-md}20px6001.2Sub-section heading, FAQ row label
{typography.heading-sm}16px6001.2Smallest display tier — eyebrow, mini-card title
{typography.body-lg}20px4001.4Hero supporting text on dark bands
{typography.body-md}16px4001.4Default prose body
{typography.body-md-label}16px6001.4Nav links, button text, label rows
{typography.body-md-strong}16px7001.375<strong> inline emphasis inside paragraphs
{typography.body-sm}13px4001.4Caption, footer legal text, app-store sub-label
{typography.button-md}16px6001.4Pill button label (matches body-md-label)

Principles

  • Single display weight is the brand. MonzoSansDisplay never appears below weight 800 in the marketing system. Drop to weight 600 only when the type token is MonzoSansText (heading-md, heading-sm).
  • Tracking is zero. Every display and body token sits at letterSpacing: normal. Negative tracking is not the brand's typographic signature.
  • Line-height collapses on the hero. display-xxl at 61px uses lineHeight: 1.0. Every other token uses 1.2 on display or 1.4 on body.
  • Body labels are weight 600. Nav, button text, and label rows use MonzoSansText 600 — heavier than the body 400 by one step, so labels read as actionable without becoming display.

Note on Font Substitutes

MonzoSans is proprietary. Inter at weight 800 (display) plus 400/600/700 (body) is the closest open-source substitute. Avoid weight ≤ 500 on display tokens — the brand's single-weight-800 commitment collapses at lighter weights.

Layout

Spacing System

  • Base unit: 8px (with 4 / 10 / 16 sub-tokens).
  • Tokens: {spacing.xxs} 4px · {spacing.xs} 8px · {spacing.sm} 10px · {spacing.md} 16px · {spacing.lg} 20px · {spacing.xl} 24px · {spacing.xxl} 32px · {spacing.section} 48px · {spacing.band} 64px.
  • Section padding: 48–64px on marketing surfaces; 24px on mobile.
  • Card internal padding: 48px on the large dark payday card, 24px on illustrated product tiles, 32px on the light support card.
  • Button padding: 12px 24px on every pill variant — the same value across primary, secondary, outline, and on-dark.

Grid & Container

The page centers in a ~1100px column on desktop; the dark payday band extends edge-to-edge with the card inset clamped to the column. The product-tile grid is a 4-up that collapses to 2-up at 768px and 1-up at 480px. Section gaps tend toward 64px with content rows tightening to 16px inside FAQ accordions and link lists.

Whitespace Philosophy

Bands have generous vertical breathing room (64px section padding) and the column width holds at ~1100px even on wide screens — the brand chooses readability over edge-to-edge density. Inside cards the rhythm tightens: 16px between body rows, 8px on adjacent label-and-value pairs.

Elevation & Depth

LevelTreatmentUse
0FlatDefault surface — most cards have no shadow at all
1Tonal step #112231 over #091723The payday card lifts off the dark band via luminance, not shadow
2box-shadow: rgba(0,0,0,0.08) 0 4px 16pxFloating illustrated product tiles on white
3Band switch — white slams against #091723The brand's primary depth medium

Decorative Depth

Monzo's depth system is structural: the alternation between {colors.canvas-light} and {colors.canvas-dark} is the visual lift, not a shadow ladder. Drop shadows appear only on illustrated product tiles where the Hot Coral card mockup needs to feel physical against the white canvas. The dark payday card uses tonal luminance (#112231 over #091723) to register as elevated without a shadow.

Shapes

Border Radius Scale

TokenValueUse
{rounded.none}0pxHero bands, footer, nav, FAQ row borders
{rounded.xs}4pxInline tags, small badges, the only sharp-cornered-but-rounded chip
{rounded.md}24pxIllustrated product tiles, mint feature cards, download tiles
{rounded.lg}32pxMid-size feature cards
{rounded.xl}64pxThe large dark payday card
{rounded.full}500pxAll pill buttons and pill-shaped tags
{rounded.circle}100%Profile photos, avatar circles

Pill Geometry

The 500px value is the actual radius Monzo ships — not the customary 9999px infinity-radius shortcut. The literal 500px reads in the stylesheet as a maximal-pill commitment rather than a "round it off to whatever" convention. Every button across primary, secondary, outline, and dark variants uses this same radius, with {spacing.md} {spacing.xl} (12px 24px) padding and 51px height.

Components

Buttons

button-primary — the dominant CTA system-wide.

  • Background {colors.ink} (#091723), text {colors.on-dark} (#ffffff), type {typography.button-md}, padding 12px 24px, rounded {rounded.full} 500px, height 51px.
  • Used on every marketing band as the single filled pill. Hot Coral never fills this button.

button-primary-on-dark — the inverse for dark bands.

  • Background {colors.canvas-light} (#ffffff), text {colors.ink} (#091723), same pill geometry.
  • Appears inside the dark payday band when a white pill needs to read as the brightest pixel.

button-secondary — soft mint fill.

  • Background {colors.surface-mint} (#e3ebe4), text {colors.ink}, same pill geometry.

button-outline-light — 1px ink border on white.

  • Background {colors.canvas-light}, text {colors.ink}, 1px solid {colors.ink} border, same pill geometry, height 51px.

Tags & Badges

pill-tag — mint pill chip.

  • Background {colors.surface-mint} (#e3ebe4), text {colors.ink}, type {typography.body-sm}, padding 8px 16px, rounded {rounded.full}.

badge-coral — small Hot Coral tag.

  • Background {colors.primary} (#ff4f40), text {colors.on-primary} (#ffffff), type {typography.body-sm}, padding 4px 8px, rounded {rounded.xs} 4px. The single Hot-Coral-as-background exception in the chip set.

Navigation

top-nav — the page header.

  • Background {colors.canvas-light}, text {colors.ink}, height 64px, padding 16px 24px. Logo wordmark on the left, primary nav center, sign-in + filled button-primary on the right.

nav-link — inline nav anchor.

  • Background {colors.canvas-light}, text {colors.ink} weight 600 via {typography.body-md-label}. No underline default; no hover colour shift documented.

Hero & Bands

hero-band-light — white catalogue hero.

  • Background {colors.canvas-light}, text {colors.ink}, type {typography.display-xxl} (61px / 800 / 1.0), padding 48px 24px 24px. Carries the "It all starts with a Hot Coral card" headline above the link list.

hero-band-dark — dark storytelling band.

  • Background {colors.canvas-dark} (#091723), text {colors.on-dark}, type {typography.display-md}, padding {spacing.band} {spacing.xl} (64px 24px). Carries "Monzo for all your money" and the payday section openers.

Cards

card-payday-dark — the load-bearing dark feature card.

  • Background {colors.surface-payday} (#112231) over {colors.canvas-dark} (#091723), text {colors.on-dark}, padding 48px, rounded {rounded.xl} 64px. Tonal lift via luminance, no shadow.

card-product-tile — Hot Coral illustrated tile.

  • Background {colors.primary} (#ff4f40), text {colors.on-primary}, type {typography.heading-md}, padding {spacing.xl} (24px), rounded {rounded.md} 24px. Hosts the phone-mockup illustration grid.

card-feature-mint — soft mint interlude.

  • Background {colors.surface-mint} (#e3ebe4), text {colors.ink}, padding 24px, rounded {rounded.md} 24px.

card-support-light — the "Humans on hand, 24/7" support card.

  • Background {colors.canvas-light}, text {colors.ink}, padding 32px, rounded {rounded.md} 24px. 1px hairline-light border.

Rows & Lists

faq-row — the FAQ accordion row.

  • Background {colors.canvas-light}, text {colors.ink} via {typography.heading-md}, padding 16px 0px, 1px {colors.hairline-light} border between rows. No rounded corners; full-bleed of the column.

link-list-row — the Hot Coral inline link list.

  • Background {colors.canvas-light}, text {colors.primary} (#ff4f40), type {typography.heading-md} weight 600. Padding 16px 0px. This is the one place Hot Coral appears as text colour rather than object colour.

inline-link — body-prose inline link.

  • Text {colors.link} (#0000ee), no background, no padding. Browser-default link blue rendered without override on legal-footer rows.

Tiles & Footer

download-tile — app-store download pill.

  • Background {colors.canvas-light}, text {colors.ink} via {typography.body-md-label}, padding 12px 24px, rounded {rounded.md} 24px, 1px ink border, height 51px.

footer-dark — the regulatory footer.

  • Background {colors.canvas-dark} (#091723), text {colors.on-dark-mute} (rgba(255,255,255,0.72)), type {typography.body-sm}, padding 64px 24px. Holds 4 columns of link groups, social icons, and the FCA / FSCS legal row.

Do's and Don'ts

Do

  • Reserve {colors.primary} (#ff4f40) for object surfaces — the card mockup, illustrated phone tiles, the Monzo glyph. Hot Coral fills card-product-tile and badge-coral and no other component.
  • Use {colors.ink} (#091723) as the primary CTA fill across every band — the navy pill is the brand's CTA voltage, not Hot Coral.
  • Render every heading in MonzoSansDisplay at weight 800. Drop to MonzoSansText only on heading-md and heading-sm where the label voice is closer to body.
  • Use literal 500px for pill radius — not 9999px. The brand ships the explicit value.
  • Switch background colour in full-bleed bands, never with gradient transitions — the slam is the depth system.

Don't

  • Don't fill a CTA with Hot Coral #ff4f40 — the brand assigns Hot Coral to materials (card, illustration, glyph), not to actions. A Hot-Coral filled button breaks the disciplined-scarcity rule that gives the colour its voltage.
  • Don't bump MonzoSansDisplay below weight 800 — the single-weight-800 commitment is the brand's editorial signature. Lighter display weights collapse into generic neobank type.
  • Don't apply negative letter-spacing to display tokens — every Monzo display token sits at letterSpacing: normal. Tracking adjustments belong to other systems, not this one.
  • Don't substitute 9999px for {rounded.full} (500px) on buttons. The visual result clips identically, but the literal 500px carries the brand's stylesheet voice.
  • Don't use #000000 for body text — the brand's actual ink is {colors.ink} (#091723), a deep blue-leaning navy. Pure black appears only via user-agent defaults on unstyled elements.
  • Don't soft-fade between {colors.canvas-light} and {colors.canvas-dark} band boundaries — the hard slam is the brand's structural depth medium; a gradient transition removes the magazine-spread rhythm.

Known Gaps

  • Hover and pressed states are not captured across button variants — only the base CTA token is documented. The brand likely applies a subtle luminance lift on button-primary hover, but no precise value is extractable.
  • Focus rings rely on browser-default outline behaviour; no token captures the focus colour or stroke width.
  • Logged-in app surfaces (transactions, pots, payments, account settings) are out of scope. Only the public marketing canvas at monzo.com is in this spec.
  • Illustration palette inside Hot Coral phone-tile mockups (the oranges, peaches, light blues, mint art layered inside card-product-tile) appears as raster art rather than CSS-rendered colour and is not enumerated as design tokens.
  • Motion specs for the scroll-bound --scroll-scale CSS variable (declared at :root) are not documented — the brand uses light scroll-tied scaling on hero illustrations.
  • Semantic palette (success, warning, danger, info) is not declared in the marketing system — error states live inside the authenticated app product.

Fintech & Crypto

More systems like this

More DESIGN.md files in Fintech & Crypto.

Pricing

Build it with Pro

The DESIGN.md files are free. Pro adds 6,000+ blocks, premium templates and the MCP server, so your AI editor builds in your system for you.

4.9/5 out of 5 · 150+ reviewsfrom 150+ founders and developers.

Billed once a year in USD. Cancel anytime.

Individual

For personal projects & open source

$32instead of $49/mo

$389 billed yearly

  • How many people can use the license.Seats: 1 seat
  • Client work, SaaS products and anything you charge for.Commercial use: Personal & open source only
  • Production-ready React sections: hero, pricing, features, dashboards and more.Pro blocks: 6,000+ blocks
  • Complete multi-page sites you can ship as they are.Templates: All 14 templates
  • React icons from every major library, installable with one command.React icons: 294k+ icons
  • Presets that restyle every block, in light and dark.Themes: All 59 themes
  • Lets your AI editor search, preview and install blocks for you.MCP server: Basic usage
  • Priority requests are answered first.Support: Standard

Team

Most popular

For freelancers, agencies & startups

$66instead of $99/mo

$789 billed yearly · ≈ $13/dev/mo

Everything in Individual, plus

  • How many people can use the license.Seats: Up to 5 seats
  • Client work, SaaS products and anything you charge for.Commercial use: Included
  • Lets your AI editor search, preview and install blocks for you.MCP server: High usage
  • Priority requests are answered first.Support: Priority

Organization

For companies with larger teams

$132instead of $199/mo

$1,589 billed yearly

Everything in Team, plus

  • How many people can use the license.Seats: Unlimited seats
  • Lets your AI editor search, preview and install blocks for you.MCP server: Unlimited usage
  • Secure checkout via Stripe
  • Code lives in your repo
  • Keep what you've shipped if you cancel
  • License terms

Your system, built for you

Every block, template and icon, installed by your AI agent in your design system. The DESIGN.md files stay free.

Get Pro