DESIGN.md · Analysis
Paul Hartmann
paulhartmann.dev · 7 Sept 2026 · 47 colors · "Arial Narrow", "Helvetica Neue", Arial, sans-serif, Inter, "Helvetica Neue", Arial, sans-serif
Paul Hartmann
Independent full-stack engineer building precise, scalable digital products. A design system rooted in architectural minimalism and high-contrast clarity.
Colors
Typography
- display
- fontFamily: "Arial Narrow", "Helvetica Neue", Arial, sans-serif · fontSize: 166px · fontWeight: 800 · lineHeight: 0.78 · letterSpacing: -0.075em
- headline-lg
- fontFamily: "Arial Narrow", "Helvetica Neue", Arial, sans-serif · fontSize: 104px · fontWeight: 700 · lineHeight: 0.92 · letterSpacing: -0.06em
- headline-md
- fontFamily: "Arial Narrow", "Helvetica Neue", Arial, sans-serif · fontSize: 60px · fontWeight: 700 · lineHeight: 1.06 · letterSpacing: -0.05em
- title-lg
- fontFamily: Inter, "Helvetica Neue", Arial, sans-serif · fontSize: 48px · fontWeight: 600 · lineHeight: 1 · letterSpacing: -0.05em
- body-lg
- fontFamily: Inter, "Helvetica Neue", Arial, sans-serif · fontSize: 20px · fontWeight: 400 · lineHeight: 1.5 · letterSpacing: 0em
- body-md
- fontFamily: Inter, "Helvetica Neue", Arial, sans-serif · fontSize: 16px · fontWeight: 400 · lineHeight: 1.5 · letterSpacing: 0em
- label-md
- fontFamily: "SFMono-Regular", Consolas, "Liberation Mono", monospace · fontSize: 12px · fontWeight: 600 · lineHeight: 1 · letterSpacing: 0.08em
- label-sm
- fontFamily: "SFMono-Regular", Consolas, "Liberation Mono", monospace · fontSize: 12px · fontWeight: 500 · lineHeight: 1.3 · letterSpacing: 0.08em
Design guidance
Overview
Paul Hartmann is an independent full-stack engineer building precise, scalable digital products for founders and focused teams. The design system embodies **Architectural Minimalism**—a philosophy that strips away ornamental complexity in favor of stark, high-contrast clarity. The aesthetic is unapologetically monochromatic: pure black (#000000) canvas, pure white (#ffffff) accents, and a carefully calibrated grayscale palette (muted #b3b3b3, dim #737373, divider #1a1a1a). The UI evokes a sense of technical precision and inevitability; every pixel serves a function, every interaction feels decisive. The brand personality is direct, pragmatic, and systems-oriented—no breathless marketing language, no soft edges. Example sentence in voice: "Strategy, interface, engineering, and launch in one precise practice."
Colors
The color system operates on a principle of **maximum contrast and functional clarity**. Primary (#ffffff) is the signature accent—used exclusively on call-to-action buttons, interactive elements, and focus states. It commands attention through its stark opposition to the black canvas. On-primary (#000000) ensures text and icons remain legible at all scales. The surface stack descends from pure black (#000000) through carefully spaced grays: surface-container-lowest (#050505), surface-container (#101010), surface-container-high (#1a1a1a), and surface-container-highest (#2d2d2d). This granular stack enables subtle depth without introducing color. Secondary (#737373) and tertiary (#b3b3b3) are supporting neutrals used for secondary text, disabled states, and subtle UI elements. Outline (#505
Typography
The type system pairs two distinct families to reinforce hierarchy and function. Display and headline levels use **Arial Narrow** (fontWeight 700–800, letterSpacing -0.06em to -0.075em) for maximum impact and architectural presence. Body and label text use **Inter** (fontWeight 400–600) for legibility and approachability. The display tier (166px, lineHeight 0.78) is reserved for hero statements and section titles; headline-lg (104px, lineHeight 0.92) anchors major sections; headline-md (60px, lineHeight 1.06) supports subsections. Body-lg (20px, lineHeight 1.5) and body-md (16px, lineHeight 1.5) handle descriptive copy with generous line-height for readability on dark backgrounds. Label-md (12px, letterSpacing 0.08em, fontFamily monospace) is applied to navigation, metadata, and UI labels—
Layout
The layout system uses a **12-column fluid grid** with a maximum container width of 1280px. Horizontal padding (--page) scales fluidly: clamp(20px, 5.55vw, 80px), ensuring responsive breathing room from mobile to desktop. The gutter between grid columns is fixed at 24px. Section spacing follows a semantic scale: xs (8px), sm (12px), md (24px), lg (40px), xl (64px), xxl (96px). Major section breaks use lg or xl spacing (40px–64px) to create rhythm and visual rest. The hero section occupies 100svh with 144px top padding and 48px bottom padding, establishing a generous entry point. Work cards flex at 72vw (clamped to 880px max) within a horizontal scroll rail, creating a carousel effect. The split layout (about section) uses a 5-column media block paired with a 6-column copy block, maintainin
Elevation & Depth
Depth in this system is achieved through **stark contrast and geometric precision** rather than soft shadows. The design employs three elevation levels: Level 1 (Base) is the pure black background (#000000) with no embellishment. Level 2 (Standard Cards) introduces subtle inset shadows and borders: box-shadow: inset 42px -28px 0 #101010, inset -28px 22px 0 #222222 creates a geometric, faceted appearance reminiscent of architectural models. Level 3 (Modals and Overlays) uses a fixed header with backdrop-filter: blur(16px) and background: rgba(0, 0, 0, 0.88), creating a frosted-glass effect with
Shapes
The shape philosophy is **Architectural Sharpness**—a commitment to 0px or minimal border-radius that reinforces precision and technical rigor. Buttons, cards, and inputs use 0px border-radius by default, creating sharp, rectilinear forms. The sole exception is the full-circle avatar and icon buttons (border-radius: 50%), which provide visual relief and signal interactivity. Input fields use 4px border-radius for subtle softening without compromising the austere aesthetic. This sharpness extends to all UI elements: work cards have 0px radius, the header has 0px radius, and even the menu overla
Components
Action Elements Buttons follow a unified interaction model: all buttons use 52px minimum height, 1px solid borders, and 0px border-radius. Primary buttons (button-primary) have backgroundColor: {colors.primary}, textColor: {colors.on-primary}, and apply a 0.25s transition on hover with transform: translateY(-3px) for subtle lift. Secondary buttons (button-secondary) use transparent background with a white border, inverting on hover. Ghost buttons (button-ghost) are identical to secondary but with explicit gap: 20px for icon spacing. All buttons use label-md typography (12px, 0.08em letter-spacing, monospace) for consistency. Hover states apply a 0.25s cubic-bezier(0.22, 1, 0.36, 1) easing curve for snappy, intentional feedback.
Containers & Surfaces Cards (card-work) have backgrou
Do's and Don'ts
**Do**
- Do use pure white (#ffffff) and pure black (#000000) as the primary contrast pair—they are the brand's signature and must never be diluted or substituted.
- Do apply negative letter-spacing (-0.04em to -0.075em) to all display and headline text to tighten word spacing and reinforce architectural precision.
- Do use 0px border-radius on buttons, cards, and inputs to maintain the sharp, technical aesthetic—exceptions are full-circle elements (50%) for semantic clarity.
- Do apply cubic-bezier(0.22, 1, 0.36, 1) easing to all transitions (0.25s–0.45s) for snappy, intentional motion that feels engineered.
- Do use the monospace font family (SFMono-Regular, Consolas, Liberation Mono) exclusively for labels, metadata, and UI text to reinforce technical identity.
- Do maintain the 8px unit grid for all spacing decisions—no arbitrary padding or margins outside the defined scale.
**Don't**
- Don't introduce color beyond the defined palette—no gradients, no accent colors, no brand-new hues. The system is intentionally monochromatic.
- Don't use border-radius > 4px on interactive elements (buttons, inputs, cards)—this dilutes the architectural sharpness and feels inconsistent with the brand.
- Don't apply box-shadow: 0 0 0 0 or soft drop shadows—use inset shadows and stark contrast instead. Shadows must be purposeful and geometric.
- Don't use transparency (rgba) for backgrounds except in the header (rgba(0, 0, 0, 0.88)) and overlay states—solid colors are more legible and intentional.
- Don't mix typefaces within a single text block—display uses Arial Narrow, body uses Inter, labels use monospace. No exceptions.
- Don't animate opacity alone—pair it with transform (translateY, scale, translateX) for motion that feels engineered and deliberate.
Edit, then copy or download.