DESIGN.md · Analysis

Hafidz Humaidi Portfolio

hafidzhumaidi.vercel.app · 6 Sept 2026 · 47 colors · Outfit

Hafidz Humaidi Portfolio

A developer and UI/UX designer portfolio showcasing technical expertise and creative vision through a dark, aurora-inspired aesthetic with teal accent interactivity.

Colors

surface#1a1a1a
surface-dim#0f0f0f
surface-bright#2a2a2a
surface-container-lowest#0a0a0a
surface-container-low#141414
surface-container#1a1a1a
surface-container-high#242424
surface-container-highest#2e2e2e
on-surface#e5e7eb
on-surface-variant#9ca3af
inverse-surface#f3f4f6
inverse-on-surface#1a1a1a
outline#6c757d
outline-variant#4b5563
surface-tint#14b8a6
primary#14b8a6
on-primary#0a0a0a
primary-container#0d9488
on-primary-container#ccfbf1
inverse-primary#2dd4bf
secondary#6366f1
on-secondary#ffffff
secondary-container#4f46e5
on-secondary-container#e0e7ff
tertiary#f97316
on-tertiary#ffffff
tertiary-container#fed7aa
on-tertiary-container#7c2d12
error#ef4444
on-error#ffffff
error-container#fecaca
on-error-container#7f1d1d
primary-fixed#ccfbf1
primary-fixed-dim#99f5e9
on-primary-fixed#001a18
on-primary-fixed-variant#0d7377
secondary-fixed#e0e7ff
secondary-fixed-dim#c7d2fe
on-secondary-fixed#1e1b4b
on-secondary-fixed-variant#3730a3
tertiary-fixed#ffe8cc
tertiary-fixed-dim#ffd4a8
on-tertiary-fixed#3b2414
on-tertiary-fixed-variant#b85c0d
background#1a1a1a
on-background#e5e7eb
surface-variant#2d3449

Typography

display
fontFamily: Outfit · fontSize: 60px · fontWeight: 800 · lineHeight: 68px · letterSpacing: -0.04em
headline-lg
fontFamily: Outfit · fontSize: 48px · fontWeight: 800 · lineHeight: 56px · letterSpacing: -0.02em
headline-md
fontFamily: Outfit · fontSize: 32px · fontWeight: 700 · lineHeight: 40px · letterSpacing: -0.01em
title-lg
fontFamily: Outfit · fontSize: 24px · fontWeight: 700 · lineHeight: 32px · letterSpacing: 0em
body-lg
fontFamily: Outfit · fontSize: 18px · fontWeight: 400 · lineHeight: 28px · letterSpacing: 0em
body-md
fontFamily: Outfit · fontSize: 16px · fontWeight: 400 · lineHeight: 24px · letterSpacing: 0em
label-md
fontFamily: Outfit · fontSize: 14px · fontWeight: 600 · lineHeight: 20px · letterSpacing: 0.01em
label-sm
fontFamily: Outfit · fontSize: 12px · fontWeight: 600 · lineHeight: 16px · letterSpacing: 0.05em

Design guidance

Overview

Hafidz Humaidi's portfolio embodies a 'Dark Aurora Minimalism' aesthetic—a fusion of deep, near-black surfaces (#1a1a1a) with vibrant teal accents (#14b8a6) and dynamic aurora-inspired gradients that evoke technical sophistication and creative energy. The design philosophy prioritizes clarity through contrast: a monochromatic canvas allows the teal accent and interactive elements to command attention, while subtle glassmorphic layers (backdrop-filter: blur(12px), rgba backgrounds at 0.05–0.2 opacity) create depth without visual clutter. The brand serves developers and designers seeking a portfolio that speaks both technical precision and artistic vision.

The voice is direct, confident, and unpretentious. Sentences are short and action-oriented ('Saya membantu bisnis dan individu mengubah ide menjadi solusi dig'—help businesses transform ideas into solutions). Typography is bold and modern (Outfit at 800 weight for headlines), reinforcing a maker's sensibility. The tone avoids corporate jargon; instead, it celebrates craft, learning, and tangible outcomes. Example: 'Perjalanan saya di dunia digital dimulai sejak bangku SMK' (My journey in the digital world began in vocational school)—personal, grounded, and relatable.

Colors

The color system is anchored in a near-black surface (#1a1a1a) that serves as the primary canvas, with a full grayscale stack (surface-dim: #0f0f0f, surface-bright: #2a2a2a, surface-container-high: #242424) for layering and depth. Primary accent is teal (#14b8a6), used exclusively for interactive CTAs, focus states, and brand highlights—it appears on the 'Lihat Proyek' button (rgba(20, 184, 166, 0.1) background with 1px border at rgba(20, 184, 166, 0.2)), navigation active states, and hover effects. Secondary accent is indigo (#6366f1), reserved for card borders and section highlights (e.g., the 'Tentang Saya' section uses border-indigo-500). Tertiary accent is orange (#f97316) for supporting UI elements and badges. On-surface text is light gray (#e5e7eb) for primary readability, with on-s

Typography

The type system uses Outfit exclusively, a geometric sans-serif that conveys modern technical confidence. Display (60px, 800 weight, -0.04em letter-spacing) anchors hero sections and major headings; headline-lg (48px, 800 weight) is used for primary names and section titles ('Hafidz Humaidi'); headline-md (32px, 700 weight) for subsections; title-lg (24px, 700 weight) for card titles. Body-lg (18px, 400 weight, 28px line-height) is used for descriptive paragraphs and longer-form content, while body-md (16px, 400 weight, 24px line-height) serves input fields and secondary text. Label-md (14px, 600 weight, 0.01em letter-spacing) is applied to button text and navigation links; label-sm (12px, 600 weight, 0.05em letter-spacing) for badges and micro-copy. All headlines use tight line-heights (5

Layout

The layout employs a 12-column grid with a max-width of 1280px (max-w-6xl in Tailwind), centered via mx-auto. The hero section uses a two-column layout on desktop (md:grid-cols-2) with asymmetric spacing: the left column (text content) aligns to the start with pt-24 (96px top padding), while the right column (avatar card) uses justify-end to float right. Sections are separated by py-20 (80px vertical padding), creating a rhythm of lg spacing (40px) between major content blocks. Horizontal padding is consistent at px-4 (16px on mobile) to px-6 (24px on desktop), providing a gutter that scales with viewport. The container uses overflow-visible to allow aurora effects and floating elements to extend beyond bounds. White-space is generous: the hero section reserves min-h-[85vh] (85% viewport h

Elevation & Depth

Depth is achieved through a layered glassmorphic system rather than traditional shadows. Level 1 (Base): the background is a dark canvas (#1a1a1a) with an aurora animation overlay (canvas element with dynamic gradients) and a semi-transparent black scrim (bg-black/40, rgba(0, 0, 0, 0.4)) to reduce contrast and create atmospheric depth. Level 2 (Standard Cards & Buttons): backdrop-filter: blur(8px–12px), background: rgba(255, 255, 255, 0.05–0.1), border: 1px solid rgba(255, 255, 255, 0.1–0.15). Example: the 'Lihat Proyek' button uses rgba(20, 184, 166, 0.1) with a 1px teal border at rgba(20, 18

Shapes

The shape philosophy is 'Soft-Technical Precision'—rounded corners are used strategically to soften the austere dark aesthetic while maintaining geometric clarity. Buttons use rounded-full (9999px border-radius) for primary CTAs ('Lihat Proyek', 'Kontak Saya'), creating pill-shaped forms that feel approachable and modern. Secondary buttons and input fields use rounded-md (0.75rem / 12px) for a more structured, technical appearance. Cards use rounded-lg (1rem / 16px) for standard containers and rounded-xl (1.5rem / 24px) for elevated surfaces like the 'Tentang Saya' section. The avatar card use

Components

Action Elements Buttons are the primary interaction mechanism. The primary CTA button uses a teal-tinted glassmorphic treatment: background rgba(20, 184, 166, 0.1), border 1px solid rgba(20, 184, 166, 0.2), rounded-full, padding 12px 32px, height 48px. On hover, the background brightens to rgba(20, 184, 166, 0.2) and the border shifts to rgba(20, 184, 166, 0.5), with a transition: all 300ms ease-out. The secondary button uses a neutral glass layer: background rgba(255, 255, 255, 0.05), border 1px solid rgba(255, 255, 255, 0.1), rounded-md, padding 12px 16px, height 44px. Hover state increases opacity to rgba(255, 255, 255, 0.1) and shifts text to on-surface (#e5e7eb). All buttons use label-md typography (14px, 600 weight) and include a 300ms transition for smooth state changes.

Co

Do's and Don'ts

**Do**

  • Do use teal (#14b8a6) exclusively for primary interactive elements—buttons, focus states, and active navigation—to create a consistent, recognizable accent throughout the interface.
  • Do apply glassmorphic treatments (backdrop-filter: blur(8px–20px), rgba backgrounds at 0.05–0.2 opacity, 1px borders) to all interactive surfaces to maintain visual cohesion and depth.
  • Do pair Outfit at 800 weight for headlines and 400 weight for body text to create strong typographic contrast and reinforce the modern, technical aesthetic.
  • Do use rounded-full (9999px) for primary CTAs and rounded-md/lg for secondary containers to signal interaction hierarchy through shape language.
  • Do maintain generous white-space (py-20 between sections, pt-24 in hero) to emphasize breathing room and focus user attention on key content.

**Don't**

  • Don't use colors other than teal for primary interactive states—avoid red, orange, or other accent colors for CTAs, as they dilute brand recognition and confuse interaction hierarchy.
  • Don't apply solid backgrounds or hard shadows to cards and buttons; the glassmorphic aesthetic depends on transparency, blur, and subtle borders to feel cohesive.
  • Don't mix font families; Outfit is the exclusive typeface. Avoid system fonts, serif fonts, or monospace fonts in body copy, as they break the modern, unified aesthetic.
  • Don't reduce border-radius on primary buttons below rounded-full (9999px); smaller radii make CTAs feel less inviting and undermine the approachable brand voice.