Living Specificationv1.0

Portfolio Design System

A single source of truth for the typography, color palette, spacing scale, and reusable UI components powering harrikilpio.com. Built with pure CSS custom properties, Utopia fluid typography, and Astro SSR.

Font: Space Grotesk
Scale: Utopia Fluid (320px → 1400px)
Grid: 4px / 8px Base Spacing
Framework: Vanilla CSS + Astro

Color Palette

Warm, high-contrast, editorial palette designed for comfort during long reading sessions.

Surfaces & Backgrounds

Foundation layers used to establish depth and contrast across views.

#F0ECE4
--color-bg

Main canvas background (warm beige)

#FFFFFF
--color-surface

Card & container white surface

#F5F1EB
--color-surface-hover

Interactive surface hover state

#EDE9E1
--color-surface-elevated

Subtle header / footer elevated surface

Typography & Content

Accessible grayscale hierarchy tuned for maximum readability on warm backgrounds.

#1A1A1E
--color-text-primary

Headlines, strong text & high emphasis

#4A4A52
--color-text-secondary

Body copy, descriptions & paragraphs

#636368
--color-text-muted

Captions, hints, timestamps & labels

Borders & Dividers

Structural boundary lines separating sections and card surfaces.

#D8D2C8
--color-border

Primary card borders & major dividers

#E8E3DA
--color-border-subtle

Hairline dividers & table borders

Accents & Category Highlights

Primary interaction colors and category markers.

#1A1A1E
--color-accent

Primary CTA and interactive accent

#3A3A44
--color-accent-hover

Button & link hover state

rgba(26, 26, 30, 0.08)
--color-accent-subtle

Low-contrast accent background

#922B21
--color-accent-category

Category & warning rust accent

rgba(146, 43, 33, 0.08)
--color-accent-category-subtle

Category tag tint

Experience Badges

Semantic tones indicating career proficiency levels.

#CBE5D9
--badge-experienced-bg

Experienced background (sage green)

#A8BFB2
--badge-experienced-border

Experienced border tone

#E8E3DA
--badge-comfortable-bg

Comfortable background (warm gray)

#C8C2B8
--badge-comfortable-border

Comfortable border tone

Typography

Space Grotesk primary typeface paired with system monospace. The type scale dynamically clamps across screen sizes from mobile (320px) to desktop (1400px) with Utopia calculations.

Aa Bb Gg 123 &%
Space Grotesk

Primary Sans-Serif • Weights 400 (Regular), 500 (Medium), 600 (Semibold), 700 (Bold)

const code = true;
ui-monospace / SFMono

Code & Technical Identifiers

Fluid Type Ladder

--font-size-4xl40px → 61pxDisplay & Hero Titles
Display Title
--font-size-3xl33px → 49pxPage Titles (H1)
Page Headline
--font-size-2xl28px → 39pxSection Headings (H2)
Section Heading
--font-size-xl23px → 31pxSubsection Titles (H3)
Subsection Title
--font-size-lg19px → 25pxLead Paragraphs & Subtitles
Lead Paragraph Style
--font-size-base16px → 20pxBody Text & General Copy
Standard body copy for readability across all device viewports.
--font-size-sm13px → 16pxSecondary Copy & Table Text
Supporting detail text and metadata.
--font-size-xs11px → 13pxBadges, Labels & Tooltips
TAG & BADGE LABEL

Spacing & Layout

An 8-point base grid with 4px sub-increments creates harmonic layout rhythm across margins, paddings, and component gaps.

--space-px2px (2px)
--space-14px (0.25rem)
--space-28px (0.5rem)
--space-312px (0.75rem)
--space-416px (1.0rem)
--space-520px (1.25rem)
--space-624px (1.5rem)
--space-832px (2.0rem)
--space-1040px (2.5rem)
--space-1248px (3.0rem)
--space-1664px (4.0rem)

Container Constraints

--container-max-width900px

Centered main column width providing optimal reading line length

--container-paddingvar(--space-6) = 24px

Responsive horizontal gutters protecting content on small viewports

Borders, Radii & Motion

Tactile edge styling and calibrated transition timings for interactive micro-interactions.

--radius-sm
4px

Inline code, small tags, sub-elements

--radius-md
8px

Cards, buttons, table wrappers

--radius-lg
12px

Modal overlays & featured hero cards

--radius-full
9999px

Pill badges, status indicators

Hover Me (150ms)
--transition-fast150ms ease

Button hovers, link color shifts, badge background updates

Hover Me (250ms)
--transition-normal250ms ease

Card elevations, drawer toggles, layout state changes

UI Components

Live instances of portfolio UI components rendered with standard HTML classes.

Experience Badges (.badge)

Used on the homepage and work approach pages to classify skill mastery levels.

Experienced.badge.badge--experienced
Comfortable.badge.badge--comfortable
Architecture & DesignWith custom skill text

Buttons & CTAs (.btn)

Primary call-to-action and secondary navigation buttons.

Primary Action.btn.btn--primary
Secondary Action.btn.btn--secondary

Surface Cards (.card)

Bordered content container with hover elevation and accent border highlight.

Featured Project2023–Present

Design System Architecture

This card element demonstrates the standard .card class styling, including hover background shifts, border accent coloring, and padding tokens.

Data Tables (.table-container)

Responsive scrollable tables with sticky headers and zebra striping.

Design TokenCategoryDefault ValueStatus
--color-bgSurface Color#F0ECE4Active
--font-family-sansTypographySpace GroteskActive
--radius-mdBorder Radius8pxActive
--transition-fastMotion150ms easeStandard