Citymapper DESIGN.md
Brands
Citymapper is the London-born journey planner whose company page opens with its mission, "Making Cities Usable". It was started by Azmat Yusuf, a former Google engineer, in London — press accounts put the founding in…
At a glance
- Group
- Brands
- Main color
- #37ab2fGreen design systems
- Font
- Proxima Soft
Colors in this file
- #ffffff
canvas
- #2e9127
primary-hover
- #090512
night
- #4a4a4a
text-secondary
- #333333
hover
- #37ab2f
primary
- #383838
foreground
- #000000
backgroundColor
- #f6f6f6
surface
- #001122
shade
Overview
Visual Theme & Atmosphere
Citymapper is the London-born journey planner whose company page opens with its mission, "Making Cities Usable". It was started by Azmat Yusuf, a former Google engineer, in London — press accounts put the founding in 2010 or 2011 — and grew city by city into an app its company page credits with "50m+ downloads" and "multiple Apps of the Year from Apple and Google". In March 2023 it joined Via, the New York transit-technology company; Citymapper's own announcement says the apps keep running and the team joins "with the same roadmap and mission".
Its identity took its present shape in late 2013, when — as Fonts In Use records — Citymapper "switched to a comprehensive identity using Proxima Nova Soft", the rounded-terminal sans that still sets the site. Its design lead at the time, Gilbert Wedam, described the aim to It's Nice That in 2015 as building a product that makes you feel something, not only one that does something well, and named London's own transit graphics — the roundel, the buses, the Tube map — as the inspiration.
The web home reads that way: a key green #37ab2f that is the brand, a soft charcoal ink
#383838, a near-black #090512 with a faint violet cast, pale grey surfaces, rounded
type, and very round buttons. It is friendly rather than technical.
What makes it worth reading:
- The green has a name for its job:
--color-key. - Borders are shadows. Dividers are a 0.5px box-shadow hairline in
--color-shade#001122at 6%; the page has almost no borders at all. - Focus is authored four ways — black, blue, white, and none — depending on the control.
Primary tasks
- Plan a journey from the home page; open the web app.
- Get the iPhone or Android app; switch city.
Brand Narrative
Citymapper set out to make a transit tool people would like, not just use — its 2015 design lead said as much — and took its visual cues from the transport systems it maps. The 2013 identity gave it a rounded typeface; the web still speaks in that voice, with one green that means Citymapper, round buttons, soft charcoal text and a black that is not quite black.
The token layer is small and practical: a named key colour, a grey ramp exposed under two names, and a focus colour that exists as a token but is used by only two buttons — a system that has drifted a little from its own intent, and records it.
Principles
- One key colour. Green is the brand; everything else supports it.
- Soft over sharp. Rounded type, round buttons, off-black ink.
- Lift, don't flash. Primary destinations rise under the pointer.
Personas
Not researched. No persona claim is made from a UI capture.
Colors
Measured with getComputedStyle on citymapper.com: 68 custom properties, 66 colours and two
font stacks, all flat names with no framework prefix. Read two ways — enumerating the root's
computed style and walking every stylesheet rule — and the two lists agree exactly.
Green — the key
- Primary (
#37ab2f) —--color-key,--color-greenand--color-green-50. Rendered as#37ab2eon the Go button, one channel off. - Primary Hover (
#2e9127) — the Go button's hover fill, one channel off--color-green-60#2f9027. - Green Light (
#53cb4b) —green-40· Green Dark (#24711f) —green-70, also--color-key-70· Bright Green (#2dc922) —--color-bright-green, a one-off outside the ramp.
Greys — one ramp, two names
--color-grey-* and --color-contrast-* are the same ramp value for value: 1 #fdfdfd · 5
#f6f6f6 · 10 #e8e8e8 · 20 #cbcbcb · 30 #bababa · 40 #a8a8a8 · 50
#8b8b8b · 60 #747474 · 70 #666666 · 80 #4a4a4a · 90 #383838 · 95
#1f1f1f.
- Foreground (
#383838) —--color-text,grey-90. The computed colour of 422 visible elements, and of most<p>. - Text Secondary (
#4a4a4a) —grey-80, 78 elements; the search field's text. - Surface (
#f6f6f6) —grey-5, the most-painted background (14). - Canvas (
#ffffff) —--color-root/--color-white, written as the keywordwhite.
Near-black and shade
- Night (
#090512) —--color-blackand--color-contrast, writtenrgb(9, 5, 18). Not pure black; it carries a little blue and violet. The app-store buttons use it. The header's Get Me Somewhere button is pure#000000. - Shade (
#001122) —--color-shade, used only inside shadows — the hairline dividers and the app-store buttons' hover lift.
Blues — two families
- Blue (
#417193) —--color-blue, a muted steel ramp (blue-10#cfdce4toblue-90#002f50). - Bright Blue (
#1e8aff) —--color-bright-blue, with#e9f3ffas its tint. It feeds--color-focus, writtenrgba(30, 138, 255, 0.6), and--color-focus-alpha-0(the same at 0), which every control carries as its resting outline colour.
Accents
Orange #fe9001 · Yellow #f5c402 · Red #d22020 · Purple #895a93, each with a
short ramp (red has a single step).
Typography
Font family
Proxima Soft — the rounded Proxima — is the rendered face, served by Adobe Fonts (Typekit kit
wrk4ssz, weights 400 and 700, both loaded in document.fonts). Every element computes
proxima-soft, BloggerSans, sans-serif.
BloggerSans also loads, regular and bold, self-hosted from citymapper.com/static/fonts/ — it
sits second in the stack and renders what the Typekit face does not cover. It is recorded as found,
not as a brand face.
The custom properties disagree with the live cascade: --font-base and --font-body both declare
"Proxima Nova Soft", proxima, -apple-system, BlinkMacSystemFont, but no element uses them. The
rendered family is the proxima-soft stack above.
Scale
Controls set 14px (the header button), 16px (body, the search field, the city switcher), 20px (the app-store buttons) and 24px (Go), bold at 700 except body and the field at 400. Headings use the same family; weight separates them.
Layout
- Separators are box-shadows:
rgba(0,17,34,0.06) 0 -0.5px 0 0.5pxappears 12 times, and the border census is effectively empty. - Component padding sits on a 4px base — 4, 8, 16, 20px — with 64px / 72px for large panels.
Responsive Behavior
Not measured. Desktop 1440×1000 only.
Elevation & Depth
At rest the page is flat apart from the hairlines. Elevation appears on interaction: the app-store
buttons rise on hover with rgba(0,17,34,0.2) 0 12px 28px, rgba(0,17,34,0.06) 0 0 0 0.5px. Several
elements carry a zero-size shadow in the shade colour at rest, ready to transition.
Motion & Easing
The app-store buttons animate their scale and shadow on hover; the resting zero-size shadows exist so that the transition has something to animate from. Durations were not recorded, and no motion token is published.
Tier 1 sources: (live web home — 68 custom properties read two ways via getComputedStyle and a recursive rule walk; five controls measured at rest, hover, pressed and focus; Proxima Soft confirmed loaded via Adobe Fonts, captured 2026-09-23); (nonsense-path control — the host answers HTTP 200 for every path, and this renders the same client-side "Not Found" as other unknown paths, so a catch-all 200 is not taken as a page, captured 2026-09-23); (Citymapper's own announcement of joining Via — apps continue, team joins "with the same roadmap and mission", read 2026-09-23)
Regional sources: (TechCrunch, 2023-03-16 — Via confirms the acquisition); (City A.M., 2020 — Citymapper, founded in 2010 by former Google employee Azmat Yusuf, appoints advisers); (Fonts In Use — the late-2013 identity in Proxima Nova Soft); (It's Nice That, 2015 — interview with design lead Gilbert Wedam)
Components
Five controls, every state on its own page load, focus read before the mouse moved.
- Get Me Somewhere —
#000000, white 14px/700, 38px,4px 8px, rounded0 4px 4px 0as the right half of a joined pair. Hover#333333; press adds opacity 0.7. - Go —
#37ab2e, white 24px/700, a 96px-radius pill, 52px,14px 30px. Hover#2e9127. - App-store buttons —
#090512, white 20px/700, 48px, 80px radius. Hover lifts: the button scales to 1.04 and gainsrgba(0,17,34,0.2) 0 12px 28px, a long shadow in the shade colour. - Switch City —
rgba(255,255,255,0.1)on the dark header, white 16px/700, 64px radius. Hover doubles the fill torgba(255,255,255,0.2). - Start-location field — transparent,
#4a4a4a16px, 5px radius, 38px. Nothing visible changes on hover or focus.
Focus — four treatments
| control | focus |
|---|---|
| Get Me Somewhere, Go | outline: 2px solid #000000 (Get Me Somewhere also turns #333333) |
| App-store buttons | outline: 3px solid rgba(30,138,255,0.6) — --color-focus |
| Switch City | outline: 3px solid rgba(255,255,255,0.5) |
| Start-location field | none — the outline colour changes, but its style stays none, so nothing draws |
Every control rests with --color-focus-alpha-0 as its outline colour; only the app-store buttons
arrive at --color-focus itself. The primary search field — the first thing most visitors use —
has no visible keyboard focus.
Radius
Rendered: 20px ×17 (cards) · 8px ×7 · 5px ×2 · 80px ×2 · 45px ×2 · 96px · 64px · 24px · 4px. Round is the default; the largest radii are pills.
States
Five components, every state measured. Hover: the dark button lifts to #333333, Go darkens to
#2e9127, the app-store buttons scale and cast a shadow, the city pill doubles its fill, the search
field does not change. Focus: black, blue, white or none, as tabled above. No disabled state was
observed.
Do's and Don'ts
Do
- Use
#37ab2fas the one brand colour and#383838for text. - Draw dividers as a hairline shade shadow, not a border.
- Round everything; make buttons pills.
- Let hover lift a button (scale plus shadow) rather than recolour it, where it is a primary destination.
Don't
- Don't use pure black for the brand black — it is
#090512. - Don't read
--font-baseas the rendered family. - Don't copy the search field's missing focus indicator.
- Don't count BloggerSans as the brand face.
Voice & Tone
Not assessed as authored voice. The web home carries only 262 characters of text; the company page writes in short, emoji-punctuated lines.
Agent Prompt Guide
Quick Color Reference
#37ab2f key green · #2e9127 green hover · #383838 ink · #4a4a4a secondary ·
#f6f6f6 surface · #ffffff canvas · #090512 near-black · #001122 shade (shadows only) ·
#1e8aff bright blue (focus) · #417193 steel blue · #fe9001 orange · #d22020 red
Example Component Prompts
- "A 52px pill button:
#37ab2f, white 24px/700 Proxima Soft; hover#2e9127; focus2px solid #000." - "A dark 48px app-store pill:
#090512, white 20px/700; hover scales to 1.04 withrgba(0,17,34,0.2) 0 12px 28px."
Governance
Known Gaps
- Contrast,
button-go. Text#ffffffon#37ab2emeasures 2.99:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted. - Contrast,
pill-city. Text#ffffffon#ffffff1ameasures 1.00:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted. - Contrast,
input-search. Text#4a4a4aon#00000000measures 2.37:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted.
Use it with your agent
Save the file as DESIGN.md in your project root, then ask your agent to follow it for UI work. Or let the agent fetch it over MCP.
Download
MCP server
MCP tool call
Related Design.md files
Celonis
Brands · Poppins
"We make processes work for people, companies, and the planet." Celonis was founded in 2011, "bringing Process Mining from academia into the boardroom"; its timeline runs through cloud (2018), unicorn and decacorn…
Medium
Brands · Charter
Reading and writing platform with magazine-like simplicity and strong black-and-green branding. Medium's public site uses restrained editorial layout, serif-forward reading tone, and the signature Medium green (#1A8917).
Instacart
Brands · Instacart Sans
Instacart's product UI is defined by a confident, utilitarian clarity: a white canvas (#ffffff) with a soft cool-grey surface (#F6F7F8) for secondary zones, and a single saturated green (#108910) that functions as…
Xbox
Brands · Segoe UI
Microsoft Fluent Design meets gaming. Xbox Green (#107C10), deep dark backgrounds, Segoe UI typography, Game Pass branding, achievement gamerscore, and controller-centric Xbox ecosystem.
Rebellions
Brands · Pretendard
Rebellions (리벨리온) is a Korean AI-inference semiconductor company. It was founded in September 2020 "to push beyond the limits of general-purpose hardware" and "design inference-first silicon from the ground up," in…
Robinhood
Brands · Capsule Sans
Robinhood is the American brokerage that turned investing from a gated, mahogany-paneled ritual into something that looks and feels like a consumer app. The brand's visual signature is a single, electric act of…