PortfolyoX Design System
PortfolyoX is a loud, single-person designer portfolio. The whole page sits on a flat mint green, and the type and UI on it are pure black (white only on photos and inside buttons): a name set in uppercase Unbounded at billboard size, a portrait cut into the letters, black pill buttons and 2px black rules. Project work runs as wide, square-cornered image cards that carry most of the other colour on the page, alongside the violet portrait square and two small category tags.
Four signatures make it recognisable:
- The layered name. The hero spells the owner's name (PARIE / DOE) in display-hero at 274px across two lines, and a portrait on a violet square sits between the letter layers: some letters pass in front of the photo, others behind it (z-index on .hero-title.first).
- Mint everywhere. #74CBAE (the Webflow variable is misleadingly called --ghost-white) fills the hero and the .page-content wrapper, so every section, including the nav, sits on the same green. There are no alternating bands.
- Uppercase Unbounded for all UI. The body tag itself is text-transform: uppercase in Unbounded; paragraphs and list items switch to Inter Tight in sentence case, and the small category pills and footer copyright are Inter Tight too.
- Black outline geometry. 270px outlined skill circles, 50px outlined FAQ toggles, 3px underlines under section titles and a 2px timeline track: drawn in black on green (the track at 15%).
Colors
Surfaces
#74CBAEPage background: hero and .page-content wrapper
#FFFFFFThe body background under the green wrapper
Ink
#FFFFFFText on primary
#000000Headings, nav, labels, rules, icons
#000000Body text is full black too (same as ink)
#FFFFFFProject titles and blog titles on photos
#FFFFFF · 90%Blog dates and meta on photos
Action
#000000The filled pill button and the 150px circle button
#222222Pill button hover (.button-with-animation:hover)
#4353FFThe fill that grows inside a skill circle on hover
Lines & effects
#111314 · 15%The 2px vertical track of the experience timeline
#000000Rules: the 3px section-title underline; 2px FAQ row border, circle outlines, blockquote bar
#FFFFFF · 60%1px divider inside blog cards
#181818 · 10%Dimming layer over project images
#00E20FBlog category pills (white text)
#E25300Blog category pills (white text)
Typography
Unbounded · display-hero
The quick brown fox jumpsThe hero name, .hero-title.first = 17.1rem. 274px · 500 · 0.9 · 3px
Unbounded · headline-project
The quick brown fox jumpsProject names on the work cards (Webflow, Panton, Move, Coca Cola), white with a 0 3px 6px black-10% text shadow. 35px · 500 · 1
Unbounded · title-lg
The quick brown fox jumpsExperience job titles (FULL-STACK DEVELOPER). 23px · 500 · 1.3
Unbounded · label-nav
The quick brown fox jumpsNav links (ABOUT, PORTFOLIO, NEWS, HIRE ME). 18px · 500 · 1.78
Unbounded · eyebrow
The quick brown fox jumpsThe marquee line AVAILABLE FOR FREELANCE WORLDWIDE — GET IN TOUCH. 14px · 600 · 1.4 · 1px
Inter Tight · body-lg
The quick brown fox jumpsHero lead paragraph. 20px · 600 · 1.3
Spacing & shape
| Purpose | Value |
|---|---|
| Container | 1200px max (.container), 1100px for the footer (.medium-container), 600px for the experience timeline (.process-wrapper) |
| Section rhythm | 100px top and bottom (.section), 60px at ≤991 |
| Breakpoints | 991, 767 and 479px, plus a 1440px+ step |
Spacing scale
| Token | Value | Preview |
|---|---|---|
hair | 2px | |
xs | 5px | |
sm | 15px | |
md | 20px | |
lg | 30px | |
xl | 50px | |
2xl | 100px |
Layout spacing
| Token | Value | Preview |
|---|---|---|
gutter | 72px | |
section | 100px | |
nav-height | 100px | |
section-works | 130px |
Border radius
Surfaces
How the surfaces stack, from the page background up. Hex codes and roles are in Colors above.
Motion
| Nav and button text roll | Label moves up out of a 31px mask while a copy moves in; about 500ms |
| Underline grow | Height 0 → 2px, 300–500ms ease |
| Button arrow | Moves in from translate(0, 200%), about 500ms |
| Circle button on project cards | scale 0 → 1, 500ms; follows the cursor (mouse move, ±5–10px moves) |
| Skill circle fill | The #4353FF disc grows, 300–500ms ease |
| Fade-up on scroll | opacity 0 → 1 600ms outExpo with y 50px → 0 600ms outExpo; longer fades use 1000ms outQuart |
| FAQ and icon rotate | 300–500ms ease |
| Image hover | Opacity 1 → 0.8, transition: all 0.2s; filter changes 300ms ease |
| Work cards | Scroll-linked stacking, cards scale up to 1 as they arrive |
| Timeline marker | The 80px black segment travels down the 2px track with page scroll |
Do’s and don’ts
- Put every section on canvas #74CBAE and keep type on the green and all rules ink #000000.
- Set headings and labels in uppercase Unbounded 500; paragraphs in Inter Tight 18px weight 600.
- Use the black button-primary pill (40px radius, 60px tall, 20px 45px padding) for the one main action.
- Draw outlines and dividers at 2px solid black, and underline section titles at 3px.
- Keep photos square-cornered and full-width in the work section.
- Use circles for secondary shapes: 150px black buttons, 270px outlined skills, 50px toggles.
- Add white or grey bands, cards with shadows, or a second background tone.
- Use grey or muted body text; the template keeps paragraphs in full black.
- Round images or project cards.
- Use tag-green #00E20F with white text for anything but a short 14px category pill; white on that green is low contrast. Prefer tag-orange #E25300 for longer labels.
- Set Unbounded in sentence case or above weight 600 for headings.
- Animate longer than 600ms outside the 1000ms page fade.
Example prompt
Any page in the PortfolyoX 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 PortfolyoX 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/portfolyox.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






