Medium Design System
Medium is a two-colour agency site: a deep green-black canvas (#192928) and one acid lime (#BFEA88) for every word, line and button. Type is Inter Tight in uppercase, from a 180px hero down to 14px labels, with no second family and no grey. It feels like a bold poster wall: huge stacked words, thin vertical lines fading in and out behind them, and big rounded project cards that pile on top of one another as you scroll.
Four signatures make it recognisable:
- Fading vertical hairlines. About 23 thin vertical lines run the full page height behind the content. Each is a linear-gradient(#192928 10%, #BFEA88 50%, #192928 90%), so it glows lime in the middle and fades into the canvas at both ends.
- Lime on green-black, nothing else. Text, icons, borders and the filled button are all #BFEA88. The only other colours are inside the project images.
- Stacked project cards. Full-width images with a 30px radius stack on top of each other while scrolling, each new one slightly wider, leaving coloured slivers of the earlier cards at the top.
- Tilted type. OUR WORK sits rotated and skewed in the middle of the screen, and a lime marquee tape crosses the page at −6° with a soft shadow.
Medium is a dark-only design.
Colors
Surfaces
#192928Page background, menu overlay (--black)
#192928Same as the canvas
#BFEA88The tilted marquee tape
Ink
#192928Text on primary
#BFEA88All text, icons, borders (--color)
#BFEA88Body text is full ink, same as ink
#BFEA88 · 77%Footer links (.gray-link, opacity .77)
#192928Text on inverse-canvas
#FFFFFFText in the 150px circle that follows the cursor over projects
Action
#BFEA88The filled Get in touch button and the form submit
Lines & effects
#262523Faint 1px borders (2 instances)
#BFEA882px borders: count badges, footer tags
Typography
Inter Tight · display-hero
The quick brown fox jumpsHero The digital / creativity / agency., one word group per line. 180px · 600 · 1.1
Inter Tight · headline-xl
The quick brown fox jumps.title-1 (Philosophy). 70px · 600 · 1
Inter Tight · title-lg
The quick brown fox jumpsService names 01. 27px · 500 · 1.5
Inter Tight · body-lg
The quick brown fox jumpsParagraphs and service lists (Branding and Identity). 19px · 500 · 1.3
Inter Tight · label
The quick brown fox jumpsButtons. 16px · 600 · 1.25
Inter Tight · caption
The quick brown fox jumpsDefault body text. 14px · 500 · 1.43
Spacing & shape
| Purpose | Value |
|---|---|
| Container | .container max 1200px, centred |
| Section rhythm | 150px top and bottom (.section), 80px at ≤991 and 50px at ≤767 |
| Breakpoints | 991px, 767px and 479px, plus a min-width 768px step |
Spacing scale
| Token | Value | Preview |
|---|---|---|
xs | 15px | |
sm | 16px | |
md | 30px | |
lg | 40px | |
xl | 50px | |
2xl | 80px | |
3xl | 100px |
Layout spacing
| Token | Value | Preview |
|---|---|---|
column-gap | 30px | |
section-short | 50px | |
gutter | 72px | |
section-work | 100px | |
nav-height | 120px | |
section-overflow | 130px | |
section | 150px |
Border radius
Motion
| Heading reveal | Text moves y 200% → 0% inside a mask, 1100ms outQuint |
| Skew settle | skewY 7° → 0°, 500ms (the OUR WORK block and headings) |
| Fade-up | opacity 0 → 1, 1000ms outQuart, with y ±100px → 0 over 1000ms outQuart |
| Card stack | scale → 1, 500ms, as each project card enters |
| Label roll (buttons, menu) | y 0 → −100%, 400ms inOutCubic |
| Cursor circle | Follows the mouse; scale 0.8 over 300ms outQuad on press, back to 1 over 300ms ease |
| Icon nudge | x / y ±6px, 500ms on mouse move |
| Button background | 0.2s cubic-bezier(.645,.045,.355,1); background colour 300ms ease |
| Logo hover | filter, 300ms ease |
Do’s and don’ts
- Use only #192928 and #BFEA88 for UI, with lime at 77% for secondary links.
- Set everything in uppercase Inter Tight; headlines at weight 600, body at 500.
- Put the fading vertical-line field (#192928 10% → #BFEA88 50% → #192928 90%) behind full-height sections.
- Stack project images as 30px-radius cards that grow slightly wider down the stack.
- Use one lime filled button (30px radius, 48px tall, 14px 23px padding) per section.
- Number services as 01. and show counts in a 36px outlined circle.
- Add a third colour, a grey or a white UI text. White is only for the cursor circle.
- Add shadows anywhere except the tilted marquee tape.
- Use lowercase body copy or a second typeface.
- Use the measured #333333 input text on the dark canvas; use ink.
- Round section images; only project cards, buttons and tags are rounded.
- Make reveals faster than 500ms; this template eases in slowly (1000–1100ms).
Example prompt
Any page in the Medium style
More design systems like this
Agency design systems, the same colors first.
Bring any of them to your AI tool
All Access unlocks all 398 design systems, ready for Claude, ChatGPT, Gemini, Cursor, v0 and Lovable, plus 400+ templates on all 5 platforms.
Get All AccessUpgrade to All AccessHow to use the Medium design system
Pick a file to see what it’s for and where it goes.
What it is
The whole design system in one markdown file, written for AI: every color, type style, spacing value, component and motion rule, plus do's, don'ts and a ready prompt.
Best for
Claude, ChatGPT, Gemini, Cursor and v0, or any other AI tool that builds pages or code.
How to use it
- Put
DESIGN.mdin your project and mention it in your request, or save it as.cursor/rules/medium.mdc - For the rule file, start it with a front-matter block that sets
alwaysApply: true, so every chat uses it - Ask: “Build a pricing page using DESIGN.md.” Cursor follows the colors, fonts, spacing and rules
- Put
DESIGN.mdin the project root - Add one line to
CLAUDE.md: “Follow DESIGN.md for all UI.” - Ask for any page or component; Claude reads the file first
- Attach
DESIGN.mdto the chat (or paste it in) - Ask: “Build a landing page in this design system.”
- Keep the file in the chat or project knowledge, so follow-up pages stay on style
What it is
Every token as data, in the W3C Design Tokens format: colors with their roles, type styles, radius, spacing, and component tokens that point at them.
Best for
Figma (Tokens Studio), Style Dictionary and other design-token tools, and build scripts.
How to use it
- In Figma, open Tokens Studio, choose Import, and pick
tokens.json - Or point Style Dictionary’s
sourceat it to generate tokens for any platform - In code, import it like any JSON file
What it is
A Tailwind CSS v4 theme: every color, font, type style, radius and spacing value becomes a Tailwind utility, like bg-canvas, text-headline-lg or rounded-md.
Best for
Tailwind v4 projects, and AI builders that write Tailwind (v0, Lovable, Bolt).
How to use it
- Save
theme.cssnext to your main CSS file - Import it after Tailwind:
@import "tailwindcss"; @import "./theme.css"; - Use the classes:
bg-canvas text-ink rounded-md p-lg
What it is
The same tokens as plain CSS variables on :root. Component values point at the color variables, so changing one color updates everything that uses it.
Best for
Any website: plain CSS, Webflow custom code, Framer, WordPress.
How to use it
- Add it to your stylesheet, or in Webflow paste it into Site settings → Custom code inside a
<style>tag - Use the variables anywhere:
color: var(--color-ink) - Change a token once and every place that uses it follows






