Portfolio
Design System
A living reference for the portfolio's visual language — colors, type, spacing, and interactive components. All built on CSS custom properties.
Colors
CSS variable tokens. All components consume these — never hardcoded values.
Gray Scale
Surface
--surface
Background
--bg
BG Subtle
--bg-subtle
BG Muted
--bg-muted
Fills & Lines
Component Fill
--component-fill
Card Footer
--card-footer
Border
--border
Border Strong
--border-strong
Foreground
Primary
--fg
Secondary
--fg-secondary
Muted
--fg-muted
Disabled
--fg-disabled
Accent
Blue
--accent
Blue Muted
--accent-muted
Teal
--teal
Teal Muted
--teal-muted
Semantic
Success
--success
Warning
--warning
Danger
--danger
Typography
Geist Sans for UI text. Geist Mono for code and data. Font smoothing globally.
-webkit-font-smoothing: antialiased applied globally. tabular-nums on all dynamic numbers.
Spacing
4pt base grid. Only use these values for margin, padding, and gap.
Tailwind: 1 = 4px · 2 = 8px · 4 = 16px · 6 = 24px · 8 = 32px
Border Radius
Concentric rule: outer radius = inner radius + padding. Live demo below.
xs
4px
sm
6px
md
10px
lg
12px
xl
16px
2xl
24px
full
∞
Formula: outer = inner + padding
Live: Concentric Radius
Inner radius is fixed at 8px. Outer = 8 + padding = 20px
Shadows
Multi-layer transparent shadows adapt to any background. Cards use borders instead.
shadow-sm
shadow-md
shadow-lg
Transparent layers adapt to dark/light. Solid border doesn't.
Border vs Shadow demo
Shadow only
Border only
Toggle dark mode to see the difference
Badges
Semantic status indicators. Use dot variant for live/active states.
Add dot prop for live status indicators.
Cards
White content area + gray footer strip. The jakub.kr pattern.
SOC 2
Passing94%
Dec 2025
HIPAA
Review78%
Mar 2026
ISO 27001
Critical61%
Jan 2026
Recent Activity
12 eventsSOC 2 — Access Control review
Resolved2m agoHIPAA — Encryption at rest
Review14m agoISO 27001 — Risk assessment
Open1h agoShowing 3 of 12
Starfire — GRC Dashboard
Controls
247
+12
Findings
34
−5
Critical
3
+1
Coverage
89%
+2%
Meridian Health Systems · Fictional GRC tool
First projectCode Block
Monospace inline code with animated copy icon swap using AnimatePresence.
npx skills add jakubkrehel/make-interfaces-feel-betternpm run devouter_radius = inner_radius + paddinganimation-delay: calc(var(--stagger) * 60ms)Form Fields
Label, hint, error, and icon support. Focus uses accent ring.
Helpful hint text.
This field is required.
Markdown supported.
Focus: --accent ring · Error: --danger ring
Controls
Spring-animated toggle. Avatar with initials fallback.
Toggle
Avatar
Toggle: spring(700, 35) · Avatar falls back to initials when no src
Bento Grid
chanhdai.com-style feature cards. Mix sizes to create visual hierarchy.
Design Engineer
Building interactive portfolios where work speaks through live components — not screenshots.
Components
Reusable UI primitives built with accessibility and animation in mind.
12 components
Design Tokens
CSS custom properties for color, spacing, and radius — dark mode out of the box.
48 tokens
Stats
Large tabular numbers with labels. Use tabular-nums to prevent layout shift.
94%
SOC 2 Score
+3%
12
Components
↑ 4 new
1
Projects shipped
Starfire
48
Design tokens
All modes
Always use tabular-nums on stats that change.
Tech Stack
Icon badge grid. chanhdai.com-style tech display with hover states.
Next.js
React
TypeScript
Tailwind
Framer
Vercel
Figma
Postgres
Node.js
Git
VS Code
Supabase
Hover to highlight · 12 technologies in the stack
Testimonial
Quote card with avatar and attribution. chanhdai.com-style.
“Kene has an exceptional eye for detail. The interactive demos in their portfolio don't just show the work — they let you feel it.”
Alex Morgan
Design Lead @ Meridian
“Rarely do you find someone who bridges design and engineering so naturally. Every component is considered, every interaction intentional.”
Sam Lee
Product Manager
Animation
Applied to every component. Rules from jakub.kr's make-interfaces-feel-better skill.
npx skills add jakubkrehel/make-interfaces-feel-betterPatterns
CSS background patterns for page sections — dot grids, line grids, and framed content columns.
Dot Grid
radial-gradient · 24px grid · var(--fg-muted) 1px
Fine Dot Grid
radial-gradient · 16px grid · var(--border-strong) 1px
Line Grid
linear-gradient (H + V) · 32px grid · var(--border)
Diagonal Lines
repeating-linear-gradient · 45deg · 12px pitch
Framed Content Column
dot grid bg · vertical border lines frame the content column
CSS Snippets
background-image: radial-gradient(circle, var(--border-strong) 1px, transparent 1px); background-size: 20px 20px;background-image: linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px); background-size: 32px 32px;background-image: repeating-linear-gradient(45deg, var(--border) 0px, var(--border) 1px, transparent 1px, transparent 12px);Animated Signature
SVG stroke-drawing signature that replays when scrolled into view — anchors the footer.
Brand Logos
Inline SVG marks for the AI and creative tools in the workflow.
Cursor Avatar
Skeuomorphic cursor mark in a circular chip — the site's playful avatar treatment.
Phone Frame
Device mockup with an animated status bar and notch clip — frames the case-study previews.
Project Preview
Self-contained animated vignettes (Varmply, ShipLock) used on the home page and project cards.
Read More
Progressive-disclosure toggle that reveals additional content inline.
The design system started as a handful of primitives and grew alongside the portfolio.
v0.2