Tenet Design System
Tenet is a clean, bright marketing site for an agency or SaaS product. It reads as calm and expensive: white canvas, black Geist type at medium weight, soft grey cards, and a single burst of colour in the hero, a blurred iridescent orb (pink, yellow, violet, cyan) bleeding in from the top right with a violet-to-blue glow behind the headline. Apart from the photography, everything else is black, white and #F7F7F7.
Four signatures make it recognisable:
- The serif swap. Every centred headline mixes sans and serif: most words in Geist 500, one or two words in Prata with a gradient fill that fades from black to 50% black (Turning potential into results., Showcasing our most impactful projects, Discover why users rave about Tenet).
- The white eyebrow tag. A small white label with a soft shadow and a 6.4px radius sits above most section titles (5 uses; the testimonial title has none): Welcome to Tenet, Featured Work, From Founder.
- The frosted pill nav. Logo left, a translucent grey tray in the centre holding the links (the active one is a solid black chip), and a black Contact button right.
- Floating white labels on work images. Project images fill their card and a white strip inset 7px from the edges carries the title and the categories.
Tenet is a light-only design.
Colors
Surfaces
#FFFFFFPage background and every second section
#F7F7F7The gray section bands, service cards, pricing tables, core card (CSS var --gray)
#000000Dark photo cards (metric and quote cards) with white text
Ink
#FFFFFFText on primary
#000000Headlines, card titles, labels (CSS var --first-color)
#000000 · 80%Paragraphs: every p has opacity: .8
#000000 · 70%Nav links and dropdown links at rest
#000000 · 60%Work categories (Strategy, Concept)
#FFFFFF#FFFFFFText on inverse-canvas
Action
#000000Every filled button, the active nav chip, 38px icon squares
#000000#110FDFRadial corner glows only (blue at top-left, violet at bottom-right, fading out by 47%)
#B300FFWith accent: Radial corner glows only (blue at top-left, violet at bottom-right, fading out by 47%)
Lines & effects
#000000 · 50%Form placeholders
#000000 · 12%Input borders
#000000 · 20%The one solid outline border
#AAA9A51×30px vertical dividers in the nav and dropdown
#000000 · 7%The nav link tray
#FFFFFF · 12%The 1px frame behind pricing tables
Typography
Geist · display-hero
The quick brown fox jumpsHero h1 Turning potential into results. 70px · 500 · 1.0 · -1px
Geist · headline-cta
The quick brown fox jumpsClosing CTA Refresh your brand and get ready for what's next. 56px · 500 · 1.0 · -1px
Geist · title-lg
The quick brown fox jumps.second-title (137×): card titles, quotes, metric headlines. 24px · 500 · 1.1
Geist · body-lg
The quick brown fox jumpsHero and section leads. 18px · 500 · 1.3
Geist · label
The quick brown fox jumpsButtons (.button-first). 16px · 500 · 1.5 · -0.48px
Geist · caption
The quick brown fox jumpsWork categories, pricing feature rows. 15px · 500 · 1.3
Spacing & shape
| Purpose | Value |
|---|---|
| Container | .container max 1200px, centred |
| Section rhythm | .section padding is 120px top and bottom and 5% on the sides (72px at 1440), 100px at ≤991 and 80px at ≤767 |
| Breakpoints | 991px, 767px and 479px (plus a min-width: 768px set) |
Spacing scale
| Token | Value | Preview |
|---|---|---|
hair | 5px | |
xs | 10px | |
sm | 15px | |
md | 20px | |
lg | 25px | |
xl | 30px | |
2xl | 75px |
Layout spacing
| Token | Value | Preview |
|---|---|---|
tray | 7px | |
column-gap | 20px | |
section-side | 72px | |
nav-height | 90px | |
section | 120px |
Border radius
Surfaces
How the surfaces stack, from the page background up. Hex codes and roles are in Colors above.
Motion
| Button text roll | Two stacked copies of the label; on hover y 0% → −100% and 100% → 0%, 500ms. No colour change. |
| Scroll-in fade | opacity 0 → 1, 1000ms outQuart, often with y 50px → 0 over 500ms |
| Testimonial columns | y 0% → −100% over 40000ms, linear, looping |
| Logo marquee | Horizontal endless scroll of the logo strip |
| Image hover zoom | scale 1 → 1.1, 500ms |
| Link underline | width grows, 300ms ease |
| Dropdown arrow | rotate, 600ms outExpo (open) and 400–600ms inOutQuint |
| Nav and dropdown links | CSS transition: all .15s (nav) and .3s (dropdown) |
| Scroll-linked | Page scroll and while scrolling in view move elements up to y −100px while in view |
Do’s and don’ts
- Put one or two words of every centred title in Prata with the black-to-50% gradient fill, and the rest in Geist 500.
- Keep the palette to #FFFFFF, #F7F7F7 and #000000, alternating white and grey bands.
- Use 6.4px for every button, card, tag and input.
- Set paragraphs at black 80% (ink-muted), meta at 60% (ink-subtle), nav at 70%.
- Open most sections with the white eyebrow tag, then the title, then a one-line lead, all centred.
- Use the one soft shadow 0 12px 16px -4px #0000000D, 0 4px 6px -2px #1018280A for floating white cards.
- Add a coloured button or use blue #110FDF or violet #B300FF for text or fills. They are glows only.
- Set whole headlines in Prata, or use Prata under 16px.
- Use weights above 600 or below 400; Geist 500 is the default.
- Change the button colour on hover. Use the text roll.
- Round cards beyond 6.4px or give images their own radius.
- Use heavy shadows or borders to separate cards; use the grey/white surface step.
Example prompt
Any page in the Tenet style
More design systems like this
Tech 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 Tenet 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/tenet.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





