← Back to all designs

Revolut

Revolut's marketing surfaces pair a stark black canvas with the brand's cobalt-violet (`#494fdf`) and a wide accent palette of deep, fully-saturated product colours — teal, light-blue, deep pink, light-green, warning orange. The system reads as fintech-meets-product-brochure: oversized 80px–136px Aeonik Pro display headlines, generous whitespace, photography-led hero bands, and full-width product

Homepage Example

Welcome to Revolut

A modern, elegant design system built for the digital age. Clean lines, thoughtful spacing, and purposeful color choices define every interaction.

Get Started Learn More

Pixel Perfect

Every element is carefully crafted to ensure consistency across all platforms and devices.

Design Tokens

A comprehensive token system that makes scaling and maintaining your design effortless.

Built for Teams

Collaborate seamlessly with designers and developers using a shared design language.

Color Palette (32)

primary#494fdf
primary-bright#4f55f1
primary-deep#3a40c4
on-primary#ffffff
ink#191c1f
body#1f2226
charcoal#3a3d40
mute#505a63
ash#5c5e60
stone#8d969e
faint#c9c9cd
on-dark#ffffff
canvas-light#ffffff
canvas-dark#000000
surface-soft#f4f4f4
surface-card#ffffff
surface-deep#0a0a0a
surface-elevated#16181a
hairline-light#e2e2e7
hairline-strong#191c1f
accent-teal#00a87e
accent-blue-link#376cd5
accent-light-blue#007bc2
accent-light-green#428619
accent-green-text#006400
accent-yellow#b09000
accent-warning#ec7e00
accent-pink#e61e49
accent-danger#e23b4a
accent-deep-red#8b0000
accent-brown#936d62
link#376cd5

Typography (16)

Revolut
display-xxl136px · weight 500
Revolut
display-xl80px · weight 500
Revolut
display-lg48px · weight 500
Revolut
display-md40px · weight 500
Revolut
heading-lg32px · weight 500
Revolut
heading-md24px · weight 500
Revolut
heading-sm20px · weight 500
Revolut
body-lg18px · weight 400
Revolut
body-md16px · weight 400
Revolut
body-md-bold16px · weight 600
Revolut
body-sm14px · weight 400
Revolut
button-lg20px · weight 500
Revolut
button-md16px · weight 600
Revolut
button-sm14px · weight 600
Revolut
caption13px · weight 400
Revolut
link-emph16px · weight 700

Components (21)

button-primary
button-primary
button-primary-pressed
button-primary-pressed
button-dark
button-dark
button-soft
button-soft
button-outline-light
button-outline-light
button-outline-dark
button-outline-dark
button-pill-sm
button-pill-sm
text-input
text-input
hero-band-dark
hero-band-dark
hero-band-photo
hero-band-photo
feature-card-light
feature-card-light
feature-card-dark
feature-card-dark
plan-card
plan-card
plan-card-featured
plan-card-featured
product-mockup
product-mockup
download-tile
download-tile
badge-tag
badge-tag
badge-feature
badge-feature
nav-bar
nav-bar
sub-nav-pill
sub-nav-pill
footer
footer

Border Radius

none (0px)
sm (8px)
md (12px)
lg (20px)
xl (28px)
full (9999px)

Design Philosophy

Overview

Revolut's marketing canvas operates in a high-contrast two-mode system: a

**near-black storytelling canvas** (`{colors.canvas-dark}` — `#000000`)

that hosts hero bands, product mockups, and the planning section, alternating

with **white catalogue bands** (`{colors.canvas-light}` — `#ffffff`) that

host comparison tables, FAQ rows, and download tiles. The two modes switch

in full-bleed bands rather than soft transitions; sections slam against each

other to create the magazine-spread rhythm the brand is known for.

The display typography is **Aeonik Pro at weight 500**, used at sizes from

20px to 136px. The flagship hero ("Banking & Beyond", "Join the 70+ million

using Revolut") sits at 80–136px with `lineHeight: 1.0` and tight negative

letter-spacing. Body type is **Inter** at weight 400 — open-source,

no-nonsense, paired with positive tracking (`0.24px`) on UI labels for

slightly more mechanical precision.

The brand accent is `{colors.primary}` (`#494fdf`) — a saturated cobalt

violet — but it appears scarcely on marketing surfaces. The actual primary

CTA on the hero is the **white pill on black** ("Choose your subscription"),

and the cobalt violet is reserved for featured plan cards, secondary CTAs in

white sections, and the brand glyph itself. A wide secondary palette of deep

teal, light-blue, deep-pink, light-green, warning orange, and yellow appears

inside product mockups and feature illustrations — never as button surfaces.

**Key Characteristics:**

Colors

Brand & Accent

Surface

Text

Semantic

Typography

Font Family

Revolut ships a two-family stack:

When Aeonik Pro cannot be licensed, **Inter Display**, **General Sans**, or **Söhne** are credible substitutes — all share the warm geometric character. Apply -1% letter-spacing on display sizes to match the original tightness.

Hierarchy

| Token | Size | Weight | Line Height | Letter Spacing | Use |

|---|---|---|---|---|---|

| `{typography.display-xxl}` | 136px | 500 | 1.0 | -2.72px | The flagship hero ("Banking & Beyond"). One per page. |

| `{typography.display-xl}` | 80px | 500 | 1.0 | -0.8px | Section openers ("Join the 70+ million using Revolut"). |

| `{typography.display-lg}` | 48px | 500 | 1.21 | -0.48px | Sub-section titles. |

| `{typography.display-md}` | 40px | 500 | 1.2 | -0.4px | Feature card titles. |

| `{typography.heading-lg}` | 32px | 500 | 1.19 | -0.32px | Plan card titles. |

| `{typography.heading-md}` | 24px | 500 | 1.33 | 0 | Section sub-titles. |

| `{typography.heading-sm}` | 20px | 500 | 1.4 | 0 | List headers, prominent labels. |

| `{typography.body-lg}` | 18px | 400 | 1.56 | -0.09px | Marketing prose. |

| `{typography.body-md}` | 16px | 400 | 1.5 | 0.24px | Default body. |

| `{typography.body-md-bold}` | 16px | 600 | 1.5 | 0.16px | Emphatic body. |

| `{typography.body-sm}` | 14px | 400 | 1.43 | 0 | Captions, metadata. |

| `{typography.button-lg}` | 20px | 500 | 1.4 | 0 | Hero CTAs (Aeonik Pro). |

| `{typography.button-md}` | 16px | 600 | 1.5 | 0.24px | Default button label. |

| `{typography.button-sm}` | 14px | 600 | 1.43 | 0 | Pill chips, sub-nav. |

| `{typography.caption}` | 13px | 400 | 1.4 | 0 | Footer disclosure, regulatory text. |

| `{typography.link-emph}` | 16px | 700 | 1.5 | 0.24px | Emphatic inline link in dark mode. |

Principles

Note on Font Substitutes

When Aeonik Pro is unavailable, clamp display `lineHeight` to 1.0 explicitly and apply -1% letter-spacing on display sizes. Inter Display, General Sans, or Söhne will read closest to the original. Inter is open-source and should be used directly.

Layout

Spacing System

Grid & Container

Whitespace Philosophy

Elevation & Depth

| Level | Treatment | Use |

|---|---|---|

| 0 — flat | No shadow, no border | Default canvas bands (light or dark), full-bleed hero. |

| 1 — surface card | `{colors.surface-card}` (white) on `{colors.surface-soft}` band | Feature cards inside light bands. |

| 2 — surface elevated dark | `{colors.surface-elevated}` (`#16181a`) on `{colors.canvas-dark}` | Plan cards inside the planning section. |

| 3 — featured surface | `{colors.primary}` on `{colors.canvas-dark}` | Featured plan card (cobalt violet inversion). |

| 4 — product mockup | Full-bleed photo asset | Hero phone / card / terminal mockup bands. |

The system has **no traditional drop-shadow language**. Surfaces register depth via colour-blocking (light → dark band switches) and surface-luminance shifts (`{colors.canvas-dark}` → `{colors.surface-elevated}`). Photography mockups carry their own depth from the asset itself.

Decorative Depth

Shapes

Border Radius Scale

| Token | Value | Use |

|---|---|---|

| `{rounded.none}` | 0px | Hero bands, full-bleed sections, footer. |

| `{rounded.sm}` | 8px | Inline tags, small chips. |

| `{rounded.md}` | 12px | Form inputs, download tiles. |

| `{rounded.lg}` | 20px | Feature cards, plan cards. |

| `{rounded.xl}` | 28px | Product mockup containers. |

| `{rounded.full}` | 9999px | Buttons, pills, badges, tabs. |

Photography Geometry

Components

Buttons

**`button-primary`** — white CTA on dark

**`button-dark`** — dark CTA on light

**`button-soft`** — soft surface CTA

**`button-outline-light`** — outlined CTA on light

**`button-outline-dark`** — outlined CTA on dark

**`button-pill-sm`** — small pill chip

Cards & Containers

**`hero-band-dark`** — full-bleed dark hero

**`hero-band-photo`** — photo-led hero

**`feature-card-light`** — feature card on white

**`feature-card-dark`** — feature card on dark

**`plan-card`** — subscription plan card

**`plan-card-featured`** — featured plan card

**`product-mockup`** — full-bleed product asset

**`download-tile`** — app store download tile

Inputs & Forms

**`text-input`** — default input

Navigation

**`nav-bar`** — top nav (desktop)

**`nav-bar`** (mobile)

**`sub-nav-pill`** — sub-nav chip

Signature Components

**`badge-tag`** — neutral tag

**`badge-feature`** — feature highlight badge

**`footer`** — global footer

Do's and Don'ts

Do

Don't

Responsive Behavior

Breakpoints

| Name | Width | Key Changes |

|---|---|---|

| Desktop XL | ≥ 1440px | 4-up plan grid, full-bleed product mockup bands, max content 1200. |

| Desktop | 1280–1439px | Container shrinks; xl side padding. |

| Tablet Large | 1024–1279px | Plan grid 4-up; feature grid 3-up. |

| Tablet | 768–1023px | Plan grid 2-up; feature grid 2-up. |

| Mobile Large | 426–767px | Plan grid 1-up; feature grid 1-up; nav collapses to hamburger; hero `display-xxl` clamps to 64px. |

| Mobile | ≤ 425px | All grids 1-up; hero clamps to 48px; section padding `{spacing.section}` collapses to 64px. |

Touch Targets

Collapsing Strategy

Image Behavior

Iteration Guide

1. Focus on ONE component at a time. Most surfaces share the `{colors.canvas-dark}` / `{colors.canvas-light}` pair with `{rounded.full}` for buttons and `{rounded.lg}` for cards.

2. Reference component names and tokens directly (`{colors.primary}`, `{component.plan-card-featured}`, `{rounded.lg}`) — do not paraphrase.

3. Run `npx @google/design.md lint DESIGN.md` after edits; orphaned-tokens warnings will catch unused entries.

4. Add new variants as separate entries (`-pressed`, `-featured`, `-disabled`) — do not bury them in prose.

5. Default body type to `{typography.body-md}` (Inter 400 with positive tracking); reach for `{typography.body-md-bold}` only on emphasis.

6. Keep `{colors.primary}` scarce — if more than one cobalt-violet element appears per viewport, ask whether one should drop to `{component.plan-card}` (`{colors.surface-elevated}`) instead.

Known Gaps