Skip to content

Starling Bank Design System

Starling Bank's aubergine #321e37 ink, mint-cyan #19d3c5 buttons and Avantt with CoFo Sans Semi-Mono, as tokens for React, Next.js and AI tools.

Primary color
#19d3c5
Typeface
Avantt
Shape
Mixed
Base radius
16px
Colors
15
Type tokens
12
Components
18
Spacing values
9

About Starling Bank DESIGN.md

Curated by Dov Azencot, updated May 18, 2026. Source starlingbank.com (opens in a new tab).

Starling Bank's marketing site refuses the neobank-as-startup aesthetic in two specific ways. First, it picks aubergine #321e37 — a near-purple very-dark plum — as the universal text and border color instead of off-black or a slate gray; the tone appears 611 times in the captured page, more than any other color, and quietly tints every surface that would otherwise read as institutional. Second, it splits the accent voltage in two: a deep mint-cyan #19d3c5 fills the primary CTA pill, and a brighter neon mint #50ffeb does the secondary-button border and the inline link highlight. The two mints look almost identical at a glance, but Starling uses them in strictly opposite roles — the saturated one outlines, the deeper one fills.

The DESIGN.md file packages the system into a machine-readable spec for React tooling. Inside: 15 colors tokens drawn from the aubergine-ink tier, the two-tone mint accent, the customer-photography lavenders and sands, and the structural cream-modal surface; 12 typography tokens split across two families — Avantt for every spoken surface at weights 450, 550, and 600, and CoFo Sans Semi-Mono for buttons, labels, and small-caps annotations at weight 550; 5 radius tokens centered on a tight 4px corner with a 24px tier for cards; an 8px base spacing scale with the 3.75px gap unit Starling uses inside its category-tab strip; and 18 components covering the mint CTA, the cream cookie modal, the dark photographic hero, the card-color picker, and the app-screenshot savings tile.

Feed this file to Claude or Cursor and it reproduces Starling's specific moves: aubergine ink instead of off-black, two-tone mint accent with strict fill-vs-border discipline, the Avantt-plus-mono typographic split, tight 4px corner radius on body chrome with a 24px lift on cards, and the willingness to let an in-app phone screenshot carry an entire feature band. The one move worth borrowing only if you have a real card-color SKU lineup: the 5-up card-picker that doubles as the brand-palette gallery. Most neobanks need that band to be a feature-strip; Starling makes it a product configurator.

What makes it distinct

5 highlights

  1. Aubergine-as-ink#321e37 carries 611 occurrences as the universal text and border color, replacing what most banks would render as off-black
  2. Two-tone mint voltage#19d3c5 fills the primary CTA, #50ffeb borders the secondary; the brighter neon never fills, the deeper mint never outlines
  3. Avantt + CoFo Sans Semi-Mono pairingAvantt at unusual weights (450, 550, 600) for spoken surfaces, CoFo Sans Semi-Mono at 550 for every button and label
  4. Card-color picker as featureA 5-up scrolling row showing the Starling debit card in mint, lavender, aubergine, sand, and cream lets the brand palette double as a product configurator
  5. App-screenshot-led savings bandThree lifestyle photographs with phone-screen overlays let the product UI carry the marketing band, no decorative illustration

Live at starlingbank.com

Starling Bank in production, as captured. Scroll the window to see the whole page.

Starling Bank's website at starlingbank.com

15 colors

Starling Bank's system runs on #19d3c5 as its primary voltage, used in 1 of 18 components. Type is set in Avantt across 12 tokens from 12px to 48px, weights 450–600. Shape language is mixed across 18 components, blending pills, soft rounds, and squarer corners.

Brand & Accent

Sparing, CTA-only voltage · 6

Surface

Page and card backgrounds · 4

Text

Headlines, body, captions · 3

Borders & Hairlines

Dividers, outlines, rules · 1

Other

Specialty colors · 1

12 type tokens

Set in Avantt across 12 tokens, from 12px to 48px, weights 450–600. Shown in its own stack: where the font isn't installed, the fallback the file names stands in.

  • display-xl48px · weight 550 · lh 54px · tracking -1.44pxThe quick brown fox jumps over the lazy dog
  • display-lg36px · weight 550 · lh 40px · tracking -1.08pxThe quick brown fox jumps over the lazy dog
  • display-md28px · weight 450 · lh 28px · tracking -0.56pxThe quick brown fox jumps over the lazy dog
  • heading-md24px · weight 600 · lh 26px · tracking -0.48pxThe quick brown fox jumps over the lazy dog
  • heading-sm21.06px · weight 600 · lh 24px · tracking -0.36pxThe quick brown fox jumps over the lazy dog
  • body-md18px · weight 450 · lh 24px · tracking -0.36pxThe quick brown fox jumps over the lazy dog
  • body-sm15px · weight 450 · lh 25.5px · tracking -0.36pxThe quick brown fox jumps over the lazy dog
  • body-emphasis18px · weight 600 · lh 24px · tracking -0.36pxThe quick brown fox jumps over the lazy dog
  • caption12px · weight 450 · lh 19.2px · tracking -0.36pxThe quick brown fox jumps over the lazy dog
  • button-md18px · weight 550 · lh 18px · tracking -0.36pxThe quick brown fox jumps over the lazy dog
  • mono-label14px · weight 500 · lh 30px · tracking -0.28pxThe quick brown fox jumps over the lazy dog
  • mono-md18px · weight 500 · lh 24px · tracking -0.36pxThe quick brown fox jumps over the lazy dog

Radii and spacing

6 corner radii and 9 spacing values. Shape language: mixed, on a 16px base radius.

Radii6

  • none0px
  • sm4px
  • md16px
  • card17.904px
  • lg24px
  • hero30px

Spacing9

  • xs3.75px
  • sm6px
  • md12px
  • base16px
  • lg20px
  • xl24px
  • 2xl32px
  • 3xl48px
  • 4xl96px

18 components

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

  • Hero Section
    Hero Sectionhero-section
  • Hero Heading
    Hero Headinghero-heading
  • Section Heading
    Section Headingsection-heading
  • Body Paragraph
    Body Paragraphbody-paragraph
  • Body Paragraph Muted
    Body Paragraph Mutedbody-paragraph-muted
  • Mono Label
    Mono Labelmono-label
  • Button Primary
    Button Primarybutton-primary
  • Button Primary Hover
    Button Primary Hoverbutton-primary-hover
  • Button Secondary
    Button Secondarybutton-secondary
  • Button Secondary Hover
    Button Secondary Hoverbutton-secondary-hover
  • Top Nav
    Top Navtop-nav
  • Nav Link
    Nav Linknav-link
  • Cookie Modal
    Cookie Modalcookie-modal
  • Card Color
    Card Colorcard-color
  • Card Photo
    Card Photocard-photo
  • Link Highlight
    Link Highlightlink-highlight
  • Type here…
    Text Inputtext-input
  • Footer
    Footerfooter

The system, in use

Starling Bank's tokens on the kind of product it builds.

Marketing heroThe homepage: its nav, a headline and the main call to action.
Open account

Money that moves as fast as you do

Send, save and spend with an account built for the way you live and work.

Open an accountSee how it works
Secure checkout
Checkout$321.84
Wireless headphonesBlack · Qty 1$249.00Travel caseQty 1$49.00Tax$23.84
Total$321.84
Emailyou@example.comCard information1234 1234 1234 1234VISAMCAMEXExpiryMM / YYCVCCVCPay $321.84
DashboardThe signed-in app: a sidebar, the key numbers and a chart.
A
Gross volume$84,210
Net balance$23,904
Payments1,284
Disputes3
Gross volumeLast 30 days

Starling Bank design system FAQ

Starling Bank's tokens, its components and how to use this DESIGN.md in your project.

What are the color tokens in the Starling Bank DESIGN.md?

Starling Bank's DESIGN.md has 15 color tokens: primary (#19d3c5), primary-hover (#b1eddf), primary-pressed (#277463), accent (#50ffeb), accent-bright (#29e6d1), accent-tint (#a7fff5) and 9 more. Every value is a quoted hex you can copy.

What is Starling Bank's primary color hex code?

The color token `primary` is #19d3c5, used by 1 component. The surface behind it is `canvas` (#ffffff).

How do I use Starling Bank's colors in Tailwind CSS?

Map the tokens to your CSS variables: `primary` (#19d3c5) to `--primary`, `canvas` (#ffffff) to `--background`, `ink` (#321e37) to `--foreground`. shadcn/ui's Tailwind setup maps them to classes such as `bg-primary` and `text-foreground`, so they then use Starling Bank's palette.

What is Starling Bank's primary brand color?

Starling runs a two-tone identity. The structural voltage is aubergine #321e37 (wired as --cm-font-colour, --cm-link-font-colour, --cm-primary-btn-font-colour, --cm-focus-colour) — it carries 611 occurrences in the captured page as the universal text and border color. The chromatic voltage is split into two mints: deep mint-cyan #19d3c5 (wired as --cm-primary-btn-bg and --cm-accent-colour) fills the primary CTA pill, and brighter neon mint #50ffeb (wired as --cm-secondary-btn-bg, --cm-secondary-btn-border, --cm-link-bg-colour) does the secondary-button border and the inline link highlight. The two mints are visually similar but functionally opposite: one fills, the other outlines.

Use Starling Bank in your project

One machine-readable file. Drop it into Claude Code, Cursor, VS Code 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 Starling Bank.

  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 Starling Bank'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

Starling Bank's marketing system makes two unusual choices for a UK neobank. Aubergine ink. Where Monzo runs a near-black navy on its display text and Revolut commits to flat black, Starling picks deep aubergine {colors.ink} (#321e37) as the universal text and border color — 611 occurrences across the captured page, including the body of every paragraph and the outline of every input. The tone is almost-but-not-quite a near-black; it adds a quiet purple undertone to the page that you read as warmth before you read as color. Wired in CSS as --cm-font-colour, --cm-link-font-colour, and --cm-focus-colour, it does the load-bearing work that off-black would normally do.

The chromatic voltage splits in two. Deep mint-cyan {colors.primary} (#19d3c5) is the fill color — it sits behind the primary CTA pill and behind product cards in the card-color picker, wired as --cm-primary-btn-bg and --cm-accent-colour. Brighter neon mint {colors.accent} (#50ffeb) is the border and highlight color — it outlines the secondary CTA pill, marks the inline link-text background, and renders behind the keyboard-focus ring, wired as --cm-secondary-btn-bg, --cm-secondary-btn-border, and --cm-link-bg-colour. The two mints look almost identical at a glance, but Starling uses them in strictly opposite roles. The two-tone mint discipline is the move; collapse it into one mint and the system loses its identity.

Typography is the second distinguishing move: Avantt at three non-standard weights (450, 550, 600) for every spoken surface, plus CoFo Sans Semi-Mono at weight 550 for every button label and small-caps annotation. The split is unusual in two ways — first, weight 450 and 550 are deliberately in-between the conventional 400/500/600 stops, which gives Avantt a slightly heavier feel without committing to the visual weight of a full medium or semibold; second, the mono never appears in body, only in actions and labels. Where Cloudflare runs FT Kunst Grotesk plus Apercu Mono and lets the mono carry footnotes and caption strips, Starling restricts the mono to buttons and labels alone — the body never touches it.

Key Characteristics:

  • Aubergine ink ({colors.ink} — #321e37) carries 611 occurrences as the universal text and border color, replacing what most banks would render as off-black or slate.
  • Two-tone mint accent: {colors.primary} (#19d3c5) fills the primary CTA, {colors.accent} (#50ffeb) borders the secondary and highlights inline links — strict fill-vs-border discipline.
  • Avantt at unusual weights (450, 550, 600) for spoken surfaces; CoFo Sans Semi-Mono at weight 550 for every button and small-caps label.
  • 4px corner radius ({rounded.sm}) on inputs, buttons, and chips — distinctively non-pill, which separates Starling from Monzo and Revolut whose CTAs are fully rounded.
  • Card-color picker as feature band — a 5-up scrolling row showing the Starling debit card in five colorways (mint, lavender, aubergine, sand, cream) that doubles as the brand-palette gallery.
  • Photographic savings-account grid — three lifestyle photographs each with a phone-screen overlay; the in-app UI carries the marketing copy without any decorative illustration layer.
  • Cream cookie-consent modal ({component.cookie-modal}) sits flush against the dark hero in a {colors.surface-cream} (#f6efea) surface — the modal is the first warm element a visitor sees, not a generic light-gray banner.
  • 3.75px gap unit ({spacing.xs}) inside the category-tab strip — Starling's tightest module, used to pack mono-label chips together.

Colors

Brand voltage (two-tone mint)

  • Mint Cyan Fill ({colors.primary} — #19d3c5): the primary fill color. Wired as --cm-primary-btn-bg and --cm-accent-colour. Fills the primary CTA pill ("Apply now"), the active card in the card-color picker, and the focus-glow on form fields. Strict fill role — never outlines.
  • Mint Hover Soft ({colors.primary-hover} — #b1eddf): the primary CTA's hover state, wired as --cm-primary-btn-bg-hover. A paler mint that lifts the pill without changing its hue.
  • Mint Pressed ({colors.primary-pressed} — #277463): the pressed state on the primary CTA, wired as --cm-primary-btn-bg-active. Drops in lightness to mark the press without losing the mint family.
  • Neon Mint Border ({colors.accent} — #50ffeb): frequency 15 — used as background (8) and border (7). The secondary-button background and the inline link-background highlight. Wired as --cm-secondary-btn-bg, --cm-secondary-btn-border, --cm-link-bg-colour. Strict border / highlight role; never fills a primary action.
  • Mint Bright Hover ({colors.accent-bright} — #29e6d1): the secondary-button hover state, wired as --cm-secondary-btn-bg-hover and --cm-secondary-btn-bg-active.
  • Mint Tint ({colors.accent-tint} — #a7fff5): the palest mint in the system, used as a subtle background wash inside the card-color picker.

Text & Hairlines

  • Aubergine Ink ({colors.ink} — #321e37): frequency 611 — the universal text and border color. Used as text (306), border (299), background (4), and shadow (2). Wired as --cm-font-colour, --cm-link-font-colour, --cm-primary-btn-font-colour, --cm-focus-colour. Carries every body paragraph, every nav link, every input outline.
  • Ink Muted ({colors.ink-muted} — #706273): frequency 25 — secondary text under headlines, the back-button icon color, footer category sub-labels. Wired as --cm-back-btn-svg-color and --cm-back-btn-color-hover.
  • Ink Soft ({colors.ink-soft} — #9a97ab): frequency 4 — the legal-copy footer color, used for the bottom-bound regulatory text that has to be visible but quiet.
  • Hairline ({colors.hairline} — #d6d2d7): the structural border tone — used on input outlines, neutral-button backgrounds, and card edges. Wired as --cm-neutral-btn-bg-active and --cm2.

Surfaces

  • Canvas ({colors.canvas} — #ffffff): frequency 407 — the body floor below the dark hero, the surface inside white cards, and the top-nav surface on scroll. Wired as --cm1 and the cluster of --_9o5tl81-2 aliases.
  • Surface Cream ({colors.surface-cream} — #f6efea): frequency 2 — the cookie-consent modal background and the modal surface. Wired as --cm-modal-bg and --cm5. The single warm surface on the page; everywhere else is canvas or aubergine.
  • Surface Warm ({colors.surface-warm} — #f2dac5): the sand-colored card variant in the card-color picker — one of the five card finishes Starling sells.
  • Surface Violet ({colors.surface-violet} — #d7a5f0): the lavender card variant in the card-color picker — another of the five physical card finishes, rendered here at 50% opacity (the D7A5F080 value in the CSS).

Feedback

  • Feedback Critical ({colors.feedback-critical} — #de352d): the system's error tone for form validation and warning states. Not rendered on the captured marketing page but declared for the product surfaces.

Typography

Font Families

The system runs two voices in strict role separation. Avantt (with Inter tight as fallback, wired as --cm-font-family and --cm-font-family-body) carries every spoken surface — display, heading, body, and caption. CoFo Sans Semi-Mono (with Roboto Mono as fallback, wired as --cm-font-family-btn and --cm-alt-font-family) carries every button label, every category chip, and every small-caps annotation.

The split is the typographic signature. Where Cloudflare runs FT Kunst Grotesk plus Apercu Mono and lets the mono carry footnotes, Starling restricts the mono to actions and labels — body text never touches it. The result reads quietly technical at the action level (the mono is the most distinctive thing about the CTA) while keeping body copy in a contemporary editorial sans.

Hierarchy

TokenSizeWeightLine HeightLetter SpacingUse
{typography.display-xl}48px55054px-1.44pxHero h1 ("Good with money starts here.")
{typography.display-lg}36px55040px-1.08pxSection h2 ("Game-changing banking. Life-changing habits.")
{typography.display-md}28px45028px-0.56pxSub-section spans on photographic bands
{typography.heading-md}24px60026px-0.48pxh4 / card-row titles
{typography.heading-sm}21.06px60024px-0.36pxh3 sub-titles
{typography.body-md}18px45024px-0.36pxDefault running text
{typography.body-sm}15px45025.5px-0.36pxTop-nav links, secondary copy
{typography.body-emphasis}18px60024px-0.36pxInline emphasis, span highlights
{typography.caption}12px45019.2px-0.36pxFooter regulatory text
{typography.button-md}18px55018px-0.36pxPrimary and secondary CTA labels (mono)
{typography.mono-label}14px50030px-0.28pxUppercase category labels (mono)
{typography.mono-md}18px50024px-0.36pxInline mono spans inside body copy

Principles

The unusual weights (450, 550, 600 for Avantt; 550 for CoFo Sans Semi-Mono) are the typographic move. Avantt at weight 550 is a half-step between medium 500 and semibold 600, which gives the display a slightly heavier optical density without committing to the muscle of a true semibold. The hero h1 at 48px / 550 with -1.44px tracking is the loudest typographic moment in the system. Body text at weight 450 is similarly a half-step above regular 400, giving the page a slightly more confident rendering at the 18px body size.

The button label always sits in the mono, never in Avantt. This is the strictest typographic rule in the system: if you see CoFo Sans Semi-Mono, you can tap it.

Note on Font Substitutes

Avantt is licensed; the closest open-source substitute is Inter — though Inter doesn't ship the in-between 450 and 550 weights, so use 400 / 500 / 600 as approximations (the system will read slightly lighter on display and slightly heavier on body). General Sans is closer in feel but not free. For CoFo Sans Semi-Mono, JetBrains Mono or IBM Plex Mono at weight 500 transfers cleanly at the same sizes; both have the slightly-wider-than-mono feel that defines the semi-mono category.

Layout

Spacing System

  • Base unit: 8px, with a distinctive 3.75px sub-unit used inside the category-tab strip.
  • Tokens: {spacing.xs} 3.75px · {spacing.sm} 6px · {spacing.md} 12px · {spacing.base} 16px · {spacing.lg} 20px · {spacing.xl} 24px · {spacing.2xl} 32px · {spacing.3xl} 48px · {spacing.4xl} 96px.
  • Section padding (vertical): {spacing.4xl} (96px) between major bands.
  • Card internal padding: {spacing.xl} (24px) default, with {spacing.2xl} (32px) on the larger photographic tiles.
  • Hero block padding: 96×24 — generous vertical on the dark photographic band.

Grid & Container

  • Max content width: ~1200px on most bands; ~1080px on display headlines for measure-control.
  • Hero block: dark {colors.ink} photographic canvas with {rounded.hero} (30px) rounded top corners, full-bleed photograph with white display text floating over it and a cream cookie modal flush in the lower-right.
  • Card-color picker: 5-up scrolling row of {rounded.card} (17.9px) card tiles in mint, lavender, aubergine, sand, and cream — the radius matches the physical-card geometry.
  • Savings-account grid: 3-column grid of {rounded.lg} (24px) photographic tiles each carrying a full-bleed lifestyle photograph at the top and an editorial caption beneath.
  • Top-nav band: dark aubergine {colors.ink} bar at the very top of the page (above the rounded hero corners), 64px tall, with white nav links and the mint "Apply now" CTA flush right.

Rhythm

The page alternates between dark photographic bands and light card bands. The hero is photographic on aubergine; the card-color picker drops to white; the savings-account grid returns to photographic-tile-on-white; the "Future fit banking" band returns to a photographic tile with the aubergine continuing inside it. There is no atmospheric gradient between bands — every section terminates flush on either canvas, aubergine, or a photograph, and the cream cookie modal is the only warm surface on the page.

Elevation

The system uses near-flat elevation with very subtle shadow accents. The captured page has 2 occurrences of aubergine {colors.ink} used as shadow ink and 4 occurrences of pure black — all confined to the cookie-consent modal (which lifts off the hero with a 12px aubergine-tinted shadow at ~3% alpha) and to a faint card-hover treatment.

  • Flat (no shadow): hero photograph, body cards, savings-grid tiles, footer — 95% of surfaces.
  • Cookie modal elevation: the cream {component.cookie-modal} sits with a 0px 0px 12px rgba(0,0,0,0.12) shadow — readable as the only meaningfully-elevated element on the page.
  • Hover lift: a subtle 0px 3px 24px rgba(0,0,0,0.03) shadow appears on card-hover but is so faint it functions as a state change more than a lift.
  • Tinted shadows: Starling uses aubergine-tinted shadows rather than pure black on most elements — the shadow color echoes the brand ink rather than introducing a neutral gray.

Shapes

The radius scale is tight body with card lift:

  • {rounded.none} 0px — section dividers and the hero photograph's bottom edge.
  • {rounded.sm} 4px — the dominant body radius. 23 occurrences across inputs, dropdowns, primary CTA pills, and small chips. The primary CTA at 4px is the move that separates Starling from Monzo and Revolut.
  • {rounded.md} 16px — 9 occurrences. Used on the cookie-modal surface and mid-size cards.
  • {rounded.card} 17.904px — 5 occurrences. The card-color picker's card tiles use this exact radius to match the geometry of the physical Starling debit card.
  • {rounded.lg} 24px — 9 occurrences. The larger photographic savings-account tiles.
  • {rounded.hero} 30px — 1 occurrence. The top corners of the dark photographic hero band.

There is no fully-rounded pill (9999px) anywhere on the captured page. The CTA-as-pill convention from other neobanks is deliberately rejected — every Starling button corner stays at 4px.

Components

hero-section — Dark aubergine {colors.ink} photographic canvas, 96×24 padding, {rounded.hero} (30px) on top corners. Holds the hero h1 in white at {typography.display-xl}, a sub-paragraph beneath, the mint CTA pill, and the cream cookie-consent modal flush in the lower-right.

hero-heading — White {colors.canvas} text on the dark photographic hero, Avantt 48px / 550, -1.44px tracking. The display tier — confidence by tracking and color contrast.

section-heading — Aubergine {colors.ink} text at {typography.display-lg} (36px / 550) — the section h2s below the fold ("Game-changing banking. Life-changing habits.", "There's an account with your name on it.", "Our savings accounts.").

body-paragraph — Default aubergine {colors.ink} text at {typography.body-md} (18px / 450) — the workhorse paragraph style.

body-paragraph-muted — Soft {colors.ink-soft} (#9a97ab) variant at {typography.caption} (12px / 450) — used for the footer regulatory text where contrast has to be readable but quiet.

mono-label — CoFo Sans Semi-Mono at {typography.mono-label} (14px / 500, line-height 30px, uppercased) — used for category chips above feature cells.

button-primary — The signature CTA. Mint {colors.primary} (#19d3c5) fill, aubergine {colors.ink} text, 1px mint border (same color as fill), {rounded.sm} 4px radius, 10×16 padding, 40px height. Label in CoFo Sans Semi-Mono 18px / 550. "Apply now" is the canonical instance.

button-primary-hover — Background flips to {colors.primary-hover} (#b1eddf) — a pale mint that lifts the pill. Pressed state drops to {colors.primary-pressed} (#277463).

button-secondary — Neon mint {colors.accent} (#50ffeb) fill, aubergine text, 1px neon-mint border, {rounded.sm} 4px radius, same 40px height. The brighter mint is the secondary-button signature.

button-secondary-hover — Background shifts to {colors.accent-bright} (#29e6d1) on hover and active states.

top-nav — Dark {colors.ink} aubergine bar at the very top, white text in {typography.body-sm}, 64px height, 12×24 padding. Sits above the rounded-corner hero band so the dark continues into the photograph.

nav-link — White {colors.canvas} text on the aubergine top-nav, Avantt 15px / 450, 6×12 padding. Hover treatment is text-color shift; no background change.

cookie-modal — Cream {colors.surface-cream} surface, aubergine text, {rounded.md} 16px radius, 24px padding. Sits flush in the lower-right corner of the hero band, casting a 12px aubergine-tinted shadow. The first warm element a visitor sees.

card-color — White {colors.canvas} surface, {rounded.card} 17.904px radius (matched to physical card geometry), 0 padding. The product cards in the 5-up card-color picker — each carries an image of the Starling debit card in a different finish (mint, lavender, aubergine, sand, cream).

card-photo — White {colors.canvas} surface, {rounded.lg} 24px radius, 0 padding (the photograph fills the tile edge-to-edge). Used in the 3-up savings-account grid below the fold.

link-highlight — Inline text on a neon-mint {colors.accent} background, aubergine text. The brand's inline link treatment — instead of an underline, the link gets a mint highlight band behind the text.

text-input — White {colors.canvas} fill, aubergine text, 1px {colors.hairline} border, {rounded.sm} 4px radius, 10×16 padding, 40px height. Focus state thickens the border and shifts color to aubergine {colors.ink}.

footer — White {colors.canvas} background, aubergine text, 48×24 padding. The regulatory copy at the very bottom uses {colors.ink-soft} (#9a97ab) — the quietest tone in the system.

Do's and Don'ts

Do keep the two-tone mint discipline strict. {colors.primary} (#19d3c5) fills, {colors.accent} (#50ffeb) outlines and highlights — and the rule never inverts. Filling a button with #50ffeb or outlining with #19d3c5 collapses the two-tone system into one mint and erases Starling's distinguishing chromatic move.

Do use aubergine {colors.ink} (#321e37) — never pure black or a slate gunmetal — for body text and input borders. The slight purple undertone is the warmth carrier of the entire system; substituting off-black removes the quiet brand voltage that runs across 611 captured occurrences.

Do render every button label in CoFo Sans Semi-Mono at weight 550. The mono-only button label is the strictest typographic rule in the system; if you see CoFo Sans Semi-Mono, you can tap it. Putting an Avantt label on a CTA breaks the signal.

Do match the card-tile radius to physical product geometry. The 17.904px radius ({rounded.card}) on the card-color picker tiles isn't a coincidence — it matches the corner radius of the physical Starling debit card. Use it on card-product surfaces only; for generic content cards, drop to {rounded.md} 16px or {rounded.lg} 24px.

Don't introduce a fully-rounded pill (9999px) anywhere. The captured page has no pill-rounded element — every CTA, every chip, every input stays at 4px corners. Adding a pill button makes Starling read like Monzo and erases the financial-product geometry signature.

Don't use the warmer surfaces ({colors.surface-warm} #f2dac5, {colors.surface-violet} #d7a5f0) outside the card-color picker. They are physical-card-finish accent tones, not structural surfaces. Using them as background fills elsewhere will read as if the page is sampling the product palette rather than running its own.

Don't use Avantt weight 700 or 800 anywhere. The system tops out at weight 600 — the unusual 450/550 in-between weights are the typographic identity; bumping to 700+ erases that identity and pulls the page into a generic semibold/bold convention.

Don't use the neon mint {colors.accent} (#50ffeb) as a body-text color. The captured page has zero text uses of #50ffeb — it is exclusively a fill/highlight tone. Rendering text in neon mint creates accessibility issues on the white canvas and breaks the strict fill-vs-border discipline.

Known Gaps

  • Form input states: {component.text-input} carries the resting state; error / validation styling uses {colors.feedback-critical} (#de352d) but the full state matrix is not exposed on the captured marketing surface.
  • Dark mode: the captured marketing surface uses dark photographic bands but has no true dark-mode variant. The product app's dark theme is not represented here.
  • Hover and focus rings: {component.button-primary-hover} and {component.button-secondary-hover} are documented; the keyboard-focus-ring treatment uses {colors.ink} (--cm-focus-colour) but the exact ring thickness and offset are not exposed.
  • Motion: the card-color picker scrolls horizontally on tap; the savings-grid photographs have a subtle scale-on-hover. The spec captures end-state values only; easing curves and durations live in the page's runtime JS.
  • Product surfaces: this DESIGN.md captures the marketing site only. The Starling app itself, the business-account onboarding, and the Marketplace partner UI all carry richer token systems that are not represented here.
  • Iconography: the system uses a custom fontello icon font, wired as --_140qdu62 with woff/woff2/eot/svg formats. The icon glyphs are not exposed as named SVGs in the captured marketing surface.
  • The other three card-finish colors: the card-color picker shows five physical cards; only the mint, aubergine, sand, and lavender finishes are captured here. The CSS exposes additional warm beige and taupe tones that may correspond to other physical finishes not yet shown.

More systems like this

Afterpay, Barclays, Betterment and 47 more in Banking & Payments: each brand's colors, type and components in one file your AI agent builds from.

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.

  • Secure checkout via Stripe
  • Code lives in your repo
  • Keep what you've shipped if you cancel
  • License terms

4.9 out of 5 from 150+ developers

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
  • Cancel anytime
  • Keep what you've shipped