Back
Ahmed Soudan.
v1.0 — Design System

asoudan.com
design system.

Dark-first. Montserrat. Cyan primary (#00F1F1) + amber secondary (#F0A840). A small set of tokens and components extracted directly from the live codebase — ready to mirror in Figma.

DirectionImmersive · Editorial
FontMontserrat 100–900
Primary#00F1F1 Cyan
Secondary#F0A840 Amber
ThemesDark · Light
01 — Foundations

Principles

Four rules extracted from the live site that keep the system coherent. Dark canvas, bright point of focus, quiet chrome.

01

Dark is the default

The site opens dark and stays dark. Light is a courtesy, not a baseline.

02

Two accent grades

Cyan #00F1F1 primary — points, never decorates. Amber #F0A840 secondary — highlights CTAs, tags, and interactive elements.

03

Foreground by opacity

Twelve opacity steps of the foreground replace a grey scale. Hierarchy by alpha, not hue.

04

Theme switch as fade

Every surface inherits a 0.3s background-color / border / color transition, so toggling theme reads as a single coordinated fade.

02 — Typography

Type system

Montserrat carries everything, using the full 100–900 weight range for hierarchy. JetBrains Mono is added for tokens, metadata, and code — a supporting voice, never decorative.

DisplayMontserrat 88 / 100
Design, moving.
H1Montserrat 64 / 200
Twenty years of work.
H2Montserrat 44 / 300
Selected case studies
H3Montserrat 28 / 500
Org-level Reports
H4Montserrat 20 / 600
Section subhead
LedeMontserrat 20 / 300
A short paragraph that sits under a title, carrying the argument in a line or two before the body takes over.
BodyMontserrat 16 / 400
The body sets at 16px with a 1.6 line-height. Measure caps at about 62 characters. Body copy runs at the 70%-foreground opacity step, so headings at full strength always read as the senior element on the page.
SmallMontserrat 14 / 400
Captions, hints, and secondary copy live here. Tone is quieter but never below 14px.
MonoJetBrains Mono 13
--accent: #00F1F1;
EyebrowMontserrat 11 / 600, 0.24em
— Case study · 2024 · 12 min read

Scale tokens

RoleSize / lineWeightUse
Eyebrow11 / 14600 · tracked 0.24emSection numbers, metadata
Caption12 / 18500UI labels, meta
Small14 / 22400Captions, hints
Body16 / 26400 · fg-70Default prose
Body L18 / 28400Nav, emphasis
Lede20 / 30300 · fg-70Intros
H420 / 26600Card headings
H328 / 34500Subsections
H244 / 46300Page titles
H164 / 64200Hero
Display88 / 84100Cinematic entrance
03 — Color

Palette

Deep blue-black canvas. Off-white foreground stepped down by opacity for hierarchy. Two accent tokens: cyan (#00F1F1) points, amber (#F0A840) highlights. Both grade down for light mode. Footer stays dark.

Surface — dark (default)

--bg-primary#0a0c14
Canvas
--bg-secondary#141620
Section fill
--bg-tertiary#111322
Inset
--bg-surface#1a1d2e
Card
--bg-surface-2#23273a
Input / raised
--bg-footer#0d0f1a
Footer
--accent#00F1F1
Cyan
--accent-hover#00c8c8
Cyan — hover
--secondary#F0A840
Amber
--secondary-hover#d4922a
Amber — hover

Foreground opacity ladder

The site does not keep a separate grey scale — instead, the foreground token rgba(255,255,255,α) steps through twelve opacities. Mirror these one-for-one in Figma as colour styles.

fg / 1.00Headings
fg-70Body
fg-50Meta
fg-30Disabled
fg-15Dividers
fg-06Tag bg

Light theme pairs

--bg-primary#f8f8f8
Canvas
--bg-secondary#eceef1
Section
--bg-surface#ffffff
Card
--fg#16192A
Ink
--accent#008b8b
Cyan — dark
--accent-hover#006f6f
Cyan — darker
--secondary#B45309
Amber — light
--secondary-hover#92400E
Amber — darker
--bg-footer#1a1d2e
Footer (still dark)
--border-cardfg × 0.12
Card border

Selection & focus

Selection

Selected text uses the theme-specific accent opacity and ink color.

Focus ring

2px solid accent · 2px offset. No exceptions.

Scrollbar

6px rail, track matches canvas, thumb is cyan at 3px radius.

04 — Space · Radius · Borders

Rhythm tokens

Tailwind's default 4px step scale. Borders are all variations of the foreground opacity ladder, so light/dark stay perfectly paired. No hard shadows — depth comes from glow.

Spacing scale

4
0.25rem
8
0.5rem
12
0.75rem
16
1rem
24
1.5rem
32
2rem
48
3rem
64
4rem
96
6rem
128
8rem

Radius

4 · sm
8 · md
12 · lg
pill

Glow (elevation)

shadow · base
glow · soft
glow · hover

Grid & motion

TokenValueUse
max-width1200pxContent container
page gutter32pxEdge inset
measure62chBody text max-width
transition base0.3s easeBackground / border / color on every element
theme-switch0.35s easeBody bg/color cross-fade
05 — Components

Core library

The pieces used across the home page, case studies, and template sub-sites. All rebuilt in Figma with the tokens above.

Buttons

44px height · pill radius · 12px / 600 / 0.12em tracked label. Primary: filled accent, ink color, accent glow. Secondary: amber border + text, permanent double-ring glow (0 0 0 1px / 0 0 18px). Ghost: text-only fg-70, hover to accent.

Links

Inline text uses the accent with a subtle underline — for example, a link to a case study. Standalone CTAs use the arrow form so the motion is the signal:

Tags

UX Research Product Design Featured Design System Amber Tag EdTech 12 min read 2024

Form

10px / 600 / 0.16em tracked label. Focus ring is accent with 18% glow.

Inputs sit on --bg-surface-2 against the card.

Floating nav

H
W
CV
C

Pill-shaped, blurred background (--nav-bg). Active dot gets the accent at 12% with a 1px inset ring.

Project tile

Header

06 — Applied

Pages in use

The tokens assembled into the two surfaces the site spends most of its life in — the cinematic entrance and a case-study open.

Hero

Ahmed Soudan
designs products
that move.

Digital Product Designer — 20 years, 300+ projects, specialising in UX research and EdTech.

Case study · 12 min

Org-level Reports

Redesigning analytics for a 1,000-person research team.

The team needed a single view of programme health across faculties. Existing tooling fragmented the signal across six dashboards.

UX ResearchEdTechShipped