Portfolio Design System
ML /design-system
Reference

Portfolio design system

Every color, type style, spacing value, and component used to build the site, documented in one place so future changes stay consistent.

Source: the live portfolio

01

Color tokens

Nine tokens drive every color on the site. Swatches follow the theme toggle above: use it to compare both.

--bg
light #FFFFFF
dark #000000
--surface
light #FFFFFF
dark #0B120E
--surface-2
light #F1F4F2
dark #111A14
--border
light #DADFDC
dark rgba(232,255,241,.3)
--text
light #0A0F0C
dark #E8FFF1
--text-muted
light #5E6B63
dark #7FA08B
--accent
light #0F8F4A
dark #39FF88
--accent-soft
light 12% alpha
dark 15% alpha
--accent-2
light #5B6B78
dark #7E91A0
02

Typography

Three families, each with a fixed job, never mixed.

Display
Bricolage Grotesque
Hey, I'm Maxime
How I work
Body
Archivo
I design scalable B2B and SaaS products, from marketplaces to AI-driven features.
Mono
JetBrains Mono
01 · 2023 → 2026 · Multichannel campaigns · ready ✓

Font size scale

SizeFamilyUsed for
2.6rem – 5.4rem (clamp)DisplayHero title
2rem – 2.75rem (clamp)DisplayCase study title
1.7rem – 2.5rem (clamp)DisplaySection heading (h2)
1.3rem (clamp top)BodyHero pitch
1.15remDisplayCard, timeline & process title (h3)
1remBodyBase body text · metric numbers (mono)
.95remMonoContact link · logo
.9remBody / MonoCard, process & timeline descriptions · cm-meta value
.85remMonoButton label · nav links · marquee · screenshot caption
.75remMonoTimeline period · status pill · role label · clock · footer
.7remMonoEyebrow · metric label · chip · tag · side rail

Line height

ValueUsed for
1Tight display headings: hero title, contact panel heading
1.6Reading text: base body copy, card & timeline paragraphs
1.9Boot-log terminal sequence (deliberately airy)
03

Spacing scale

An 8pt scale. Every padding, margin, and gap in the site is one of these eleven values.

--space-4 · 4px
--space-8 · 8px
--space-16 · 16px
--space-24 · 24px
--space-32 · 32px
--space-40 · 40px
--space-48 · 48px
--space-56 · 56px
--space-64 · 64px
--space-80 · 80px
--space-96 · 96px
04

Buttons

Hover the button.

See my workButton (primary)
Let's talkButton (ghost)
05

Chip

Used for the case-study tag overlay on card covers and modal covers.

Outbound
06

Badge

The "Open to new opportunities" status pill in the hero. The dot pulses on a loop.

Open to new opportunities
08

Tag

Used in the tech-stack row under each Recent work card.

Design systems
09

Card

Used for the four Recent work entries. Cover uses a dotted texture over a diagonal gradient; hover lifts the card and scales the cover.

Outbound

Multichannel campaigns

Designed the workflow builder that lets reps launch outreach across channels from a single campaign.

5channels
1unified inbox
EmailLinkedIn
10

List row with arrow

Used for "How I work" and "Experience". On hover the body slides right 16px and a left-pointing arrow nudges in a loop for as long as the row is hovered.

01

Discovery & research

User interviews and a heuristic audit before the first mockup.

02

Architecture & flows

Journey mapping and low-fidelity wireframes to validate structure.

11

Cursor-follow glow

The same effect on the hero, contact panel, playground, and modal cover: a 280px radial gradient centered on the cursor, blended with multiply (light theme) or screen/soft-light (dark theme, for visibility against near-black). Move your cursor over the panel.

Move your cursor here

Same panel used for the Playground tool grid and the contact block.

12

Tool tile

Used inside the Playground panel: icon, name, border lift on hover.

Figma
ChatGPT
13

Case study modal

Cover (dotted texture, tag), a macOS-style wireframe frame for screenshots, and a quote block with a left accent rule.

14

Motion reference

Every named animation on the site, with its timing. All respect prefers-reduced-motion.

EffectWhereTiming
Cursor-follow glowHero, contact, playground, modal cover280px radius (220px on hero) · opacity .3s ease
Modal iris revealCase study openclip-path circle · 2s cubic-bezier(.16,1,.3,1), from click point
Ring flashCase study openborder grows to 300vmax, fades · 2s
Arrow nudge loopProcess & timeline rows, on hover1.1s ease-in-out infinite
Terminal caret blinkHero title, boot log1s step-end infinite
Marquee scrollSkills ticker32s linear infinite
Status dot pulse"Open to new opportunities" pill2.4s ease-in-out infinite
Custom cursorWhole page (desktop, fine pointer)dot + ring, scale/color shift near interactive elements
15

Icons

Hand-drawn inline SVGs, 2px stroke, round caps, no icon library.

Close
Row arrow
Sun
Moon