Belem Design System
Belem is a loud, bright agency site. It opens on a full-screen orange-to-violet gradient with a centred white statement, then a white sheet with an 80px rounded top slides up over the sticky hero and everything after it is clean white with black type, soft lilac-white cards and glossy pastel 3D objects (glass cubes, knots, lenses). Type is a pairing of a wide geometric display face, Unbounded, set uppercase, and the compact grotesk Inter Tight for sentences.
Four signatures make it recognisable:
- The sticky gradient hero and the sliding sheet. The hero is position: sticky at min-height: 100svh with a full-bleed orange (#FE5A1D) to violet (#6F00FF) gradient image. The first section has border-radius: 80px 80px 0 0 and scrolls up over it like a sheet of paper.
- Outline pill navigation. Five uppercase Unbounded links, each its own 2px-outlined pill (50px radius, 41px tall), top right. They are white over the hero and black over the white page.
- Two-tone statements. Big Inter Tight 600 sentences start in full ink and finish in a softer tone: grey (black at 50%), pastel pink #DFA5A4, lavender #A8AEDA, or white at 50% on gradients. We worry about the details so / you don't have to.
- Everything is uppercase except sentences. body itself is text-transform: uppercase in Unbounded; only <p> and the Inter Tight statements switch back to sentence case.
Belem is a light design with gradient accents.
Colors
Surfaces
#FFFFFFPage background (--floral-white, which is white despite the name)
#F7F7FCService cards and project image wells; a faint lilac white
#FFFFFFInputs on the gradient contact band
#686868Placeholder text on field
Ink
#FFFFFFText on primary
#000000Text on secondary
#000000Headlines, nav, tags, metrics (--light-blue, which is black despite the name)
#000000 · 75%Paragraphs
#000000 · 50%The grey tail of a statement (opacity 0.5, renders about #808080; the CSS class .gray-text-2, #2C2C2C at 50%, is not measured on the page)
#FFFFFFText on the gradient; the muted one is the statement tail
#FFFFFF · 50%Muted text on media
Action
#000000The filled pill button on white (about belem, Contact us)
#000000#FFFFFFThe same pill inverted, on the gradient hero (Get in touch)
#DFA5A4Dusty pink: statement tails, metric labels (WORLDWIDE CLIENTS), icon circles
#A8AEDALavender: statement tails and icon circles
#A7DCE1Further icon-circle and tag backgrounds
#A8DAB4Further icon-circle and tag backgrounds
Lines & effects
#0000002px outlines on pills, tags and the underline link
#FE5A1DThe radial gradient (circle farthest-side at 0 0) of the hero, the contact band and the lightbox link
#6F00FFThe radial gradient (circle farthest-side at 0 0) of the hero, the contact band and the lightbox link
Typography
Inter Tight · display-metric
The quick brown fox jumps>601, +1,870 (.title-4, 10vw). 144px · 600 · 1.0
Inter Tight · headline-hero
The quick brown fox jumpsThe centred hero statement. 54px · 600 · 1.4
Inter Tight · title-card
The quick brown fox jumpsService card copy, also two-tone. 25px · 600 · 1.4
Inter Tight · body
The quick brown fox jumpsParagraphs at 75% opacity; 16px at ≤479. 17px · 500 · 1.3
Unbounded · label-button
The quick brown fox jumpsFilled pill buttons. 15px · 600 · 1.33
Unbounded · eyebrow
The quick brown fox jumpsWHO WE ARE. 14px · 600 · 1.0
Spacing & shape
| Purpose | Value |
|---|---|
| Container | .container max 1200px, centred |
| Section rhythm | 100px top and bottom, 80px at ≤991 and 50px at ≤767 and ≤479 (.section; the 5% sides stay) |
| Breakpoints | 991px, 767px and 479px (the most rules), plus a 1440px+ step |
Spacing scale
| Token | Value | Preview |
|---|---|---|
xs | 8px | |
sm | 15px | |
md | 20px | |
lg | 30px | |
xl | 40px | |
2xl | 50px |
Layout spacing
| Token | Value | Preview |
|---|---|---|
nav-x | 25px | |
nav-y | 30px | |
gutter | 72px | |
section | 100px |
Border radius
Surfaces
How the surfaces stack, from the page background up. Hex codes and roles are in Colors above.
Motion
| Fade-up on scroll | opacity 0 → 1 and y 50px → 0, 500ms |
| Slide-in from the sides | x −30px or x 30px → 0, 500ms, paired left and right columns |
| Heading wipe | A black .heading-overlay block starts at translateX(−100%), crosses the heading and exits, revealing the text |
| Scale-in | scale 0 → 1, 500ms ease-out-quint for icon circles |
| Button text roll | Out to y −110% (500ms ease-out), in from y 100% → 0% (500ms ease-in); nav pills do the same in 300ms ease |
| Press | scale 1 → 0.95, 300ms ease-out-sine, and back |
| Hover fills | Background colour and filter, 300ms ease; nav pill transition 0.2s; blog title 0.3s |
| Marquee | .text-rotator moves sideways tied to page scroll |
| Hero parallax | Mouse-move on the hero shifts its content slightly |
Do’s and don’ts
- Open with the sticky orange-to-violet gradient hero and slide the first white section over it with an 80px top radius.
- Set nav links as separate 2px outline pills (50px radius, 41px tall) in Unbounded 13px / 600 / 1px uppercase.
- Write statements in Inter Tight 600 at 33px (54px in the hero) with a two-tone tail: black at 50%, pink #DFA5A4 or lavender #A8AEDA.
- Use the black pill (#000000, white text, 40px radius, 60px tall) on white and the white pill on the gradient.
- Put cards on #F7F7FC with a 30px radius and let a 3D render bleed off the card edge.
- Keep paragraphs Inter Tight 17px / 500 / 1.3 at 75% black.
- Add shadows, blur or hairline dividers. Outlines are 2px and solid.
- Use the pastels (#DFA5A4, #A8AEDA, #A7DCE1, #A8DAB4) for body text or anything under 25px, apart from the bracketed metric labels.
- Use ink-subtle (black at 50%) below 25px; it is a statement tail, not meta text.
- Set Unbounded in sentence case or Inter Tight in uppercase headlines.
- Spread the gradient beyond the hero and the contact band.
- Copy the input's white text colour from the shipped CSS; typed text must be ink.
Example prompt
Any page in the Belem 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 Belem 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/belem.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






