Portfolyo Design System
Portfolyo is a one-person portfolio (demo name John Doe) that reads like a printed CV poster. Everything is black on white, almost every heading is set in uppercase Inter Tight 500, and the structure is drawn with thick 2px black rules rather than boxes or shadows. Colour comes only from the portrait and the bright, glossy 3D artwork in the work carousel.
Four signatures make it recognisable:
- The ruled nav. A 130px header split into two cells by 2px black lines: JOHN DOE centred in the left cell, and ABOUT ME · PORTFOLIO · NEWS · HIRE ME on the right, with a 2px rule under both.
- Uppercase everything. body sets text-transform: uppercase. Only paragraphs and list items (Inter, sentence case) escape it.
- Scroll-filled intro. The 34px about text starts at 10% black and fills to full black line by line as you scroll (A GRAPHIC DESIGNER WITH 7 YEARS OF EXPERIENCE…).
- Ruled work carousel. Square-cornered project images in a horizontal slider, separated by 2px vertical black lines, each with an uppercase title and an outlined pill tag below.
Portfolyo is a light-only design.
Colors
Surfaces
#FFFFFFPage, nav, buttons at rest
#F1F1F7Webflow variable --ghost-white; not measured on the home page
#000000Hovered buttons and the active timeline segment
Ink
#000000Text on primary
#000000All headings, labels, links and rules
#000000Body text
#C3C8CCSmall top text in the testimonial block only
#000000 · 10%The resting state of scroll-filled text, before it fills to ink
#FFFFFFText on inverse-canvas
Action
#FFFFFFThe outlined pill button at rest
#000000The pill fills black with white text on hover
Lines & effects
#DDDDDDThe vertical rail of the experience timeline
#0000002px nav rules, button and tag outlines, title underlines, carousel dividers, the footer top rule
Typography
Inter Tight · display-hero
The quick brown fox jumpsHEY, I'M / JOHN DOE. 80px · 500 · 1.2 · 3px
Inter Tight · headline-lg
The quick brown fox jumpsScroll-filled about text. 34px · 500 · 1.3
Inter · title-price
The quick brown fox jumpsPricing figures. 33px · 500 · 1.2
Inter · body-lg
The quick brown fox jumpsParagraphs (p), sentence case. 18px · 500 · 1.2
Inter Tight · label-lg
The quick brown fox jumpsPill button labels (in a 31px roll mask). 21px · 600 · 1.52 · 1px
Inter · caption
The quick brown fox jumpsTimeline dates (ADOBE AT 2017-2020). 13px · 600 · 1.2 · 1px
Spacing & shape
| Purpose | Value |
|---|---|
| Container | max 1200px for text blocks; most bands run full width with 5% side padding (72px at 1440px) |
| Section rhythm | .section is 100px top and bottom; the footer is padding 50px 5% |
| Breakpoints | 991px, 767px and 479px (Webflow defaults), plus a 1440px+ step |
Spacing scale
| Token | Value | Preview |
|---|---|---|
xs | 7px | |
sm | 16px | |
md | 25px | |
lg | 30px | |
xl | 50px | |
2xl | 60px | |
3xl | 100px |
Layout spacing
| Token | Value | Preview |
|---|---|---|
hero | 50px | |
gutter | 72px | |
section | 100px | |
nav-height | 130px |
Border radius
Surfaces
How the surfaces stack, from the page background up. Hex codes and roles are in Colors above.
Motion
| Scroll-filled text | Lines rest at opacity 0.1 and fill to 1 while scrolling through the viewport |
| Fade-up | y 50px → 0 and opacity 0 → 1, 600ms outExpo |
| Pop in | scale 0 → 1, 500–600ms outExpo |
| Underline grow | Size, 300–500ms ease; 800ms outExpo for the longest line |
| Text roll | Label moves y 0% in a 20–31px mask, 300ms ease |
| Arrow turn | rotate, 400ms ease |
| Button fill | CSS transition: all .2s (white → black) |
| Links | all .3s; background-color .1s, color .1s on small controls |
Do’s and don’ts
- Set headings, nav, buttons and tags in uppercase Inter Tight 500–600; keep paragraphs and lists in sentence-case Inter.
- Draw structure with 2px #000000 rules: the nav grid, carousel dividers, title underlines, the footer top.
- Use the outlined pill (2px black, 30px radius) for actions and fill it #000000 with #FFFFFF text on hover.
- Keep images square-cornered; the only round image is the hero portrait.
- Let scroll-filled text start at 10% black (ink-reveal) and fill to ink.
- Use the 1–3px tracking only where measured: 3px on the hero name, 2px on nav, 1px on section and project titles and buttons.
- Add an accent colour, gradients or shadows to the UI.
- Use ink-faint #C3C8CC for anything but the small testimonial top label; it is too pale for reading text.
- Leave text at ink-reveal (10%) once it is in view.
- Set paragraphs in uppercase, or headings in sentence case.
- Use borders thinner than 2px on components; 1px is only for footer dividers.
- Round the work or blog images.
Example prompt
Any page in the Portfolyo style
More design systems like this
Portfolio 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 Portfolyo 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/john.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






