Design System: Kladde

Overview

Creative North Star: “The Engineer’s Kladde” — a Kladde is the German rough notebook an engineer keeps at the bench: dated, candid, drawn by hand, and trusted precisely because it is unpolished.

The site reads as a 30-year engineering journal laid out as a hand-drawn technical zine. Warmth and candor carry the authority: sharp hand lettering (Excalifont, the Excalidraw hand) over a cool paper-white ground with faint fiber grain, a hyperlegible humanist body face, and highlighter yellow/pink/teal swipes marking what matters. Panel borders wobble like marker strokes; the portrait is taped in with translucent tape; the AI-provenance disclosure is a drawn rubber stamp worn proudly, not fine print. There is no mascot — the portrait is the character.

The world explicitly refuses two defaults: the cream-serif “AI-editorial” look (the ground is cool white, never cream) and its terminal opposite (no tracked-out uppercase mono labels; mono is for code only). Dark mode is a night notebook: same drawn language, brightened accents, dark ink board.

Key Characteristics:

Colors

Two inks (teal and pink) and three highlighters on plain cool paper, brightening at night to hold contrast on the ink board. All pairings verified ≥ 4.5:1.

Primary

Secondary

Highlighters

Neutral

Named Rules

The Ink-on-Highlighter Rule. Text sitting on a highlighter fill (#FFE34D, #FF6BAE, #00C7B7, active chips, marker buttons) is always dark ink (#17181A), in both light and dark mode. Highlighter fills never carry light text.

The Cool Paper Rule. The ground is cool paper white (#FCFCF9) with fiber grain — never cream, never warm beige, and never grid paper.

The Neutral-Ramp Rule. Secondary UI text (inactive chips, muted labels) draws from the cool neutral ramp (#404040 / #D4D4D4 and gray-600/gray-400 utilities), never from slate or warm grays.

Typography

Display Font: Excalifont (fallback: cursive) — vendored single-weight woff2, OFL-1.1 Body Font: Atkinson Hyperlegible Next (fallback: sans-serif) — via @fontsource Code Font: Fragment Mono (fallback: monospace) — via @fontsource Icon Font: Material Symbols Rounded — functional nav controls only (dropdown carets, mobile menu open/close, external-link markers); decorative glyph uses were removed and stay removed. Illustrative arrows and marks are hand-drawn inline SVG, never icon glyphs.

Character: Sharp technical hand lettering over a hyperlegible humanist body: the pairing of a person’s handwriting with text built to be read. Excalifont carries all headings, buttons, figcaptions, and drawn labels; Atkinson carries every paragraph.

Hierarchy

Named Rules

The Single-Weight Hand Rule. Excalifont ships one weight (400). Display elements never request bold or medium; faux-bold synthesis is banned. Emphasis in display type comes from highlighter swipes and marker underlines, not weight.

The Mono-for-Code Rule. Fragment Mono appears only in code. No tracked-out uppercase mono labels, no eyebrows, no kickers anywhere.

Layout

A single centered column, max-w-6xl with px-4 sm:px-6 lg:px-8 gutters, inside a py-12 lg:py-16 main region. Sections separate with generous vertical space (mb-16 lg:mb-24) and drawn dividers: .rule-t/.rule-b wavy ink strokes or 2px dashed borders (border-dashed border-gray-300, dark border-gray-700).

Post cards sit in a 1 → 2 column grid (md:grid-cols-2, gap-8 / 2rem); the sketched TOC uses a 1 → 2 column grid with wide gap-x-12. The intro splits 7/5 on a 12-column grid at lg, with the taped portrait rotated 1° in the narrow column. Standard Tailwind breakpoints (sm 640, md 768, lg 1024). The homepage hero staggers in with .reveal steps (0.08s increments); listing pages lazy-load past 10 posts via /api/*.json.

Elevation & Depth

Depth is drawn, not lit. Surfaces are flat panels with 2px ink borders; shadows appear only as a light pencil smudge responding to hover, paired with a -translate-y-0.5 lift on buttons and chips. The taped photo and dropdown panels carry the pencil shadow at rest to read as physical objects on the page.

Shadow Vocabulary

Named Rules

The Pencil-on-Hover Rule. Panels are flat at rest. shadow-pencil plus a half-step lift is the hover response; no larger or colored shadows exist in this world.

The Already-Drawn Rule. Motion is a drawing gesture: the doodle arrow draws on via stroke-dashoffset (1.1s, cubic-bezier(0.22, 1, 0.36, 1)), hero elements reveal with a 14px rise. Under prefers-reduced-motion, every drawn element renders already drawn — complete, not hidden.

Shapes

The form language is a marker-drawn box, expressed as the sketch-radius family: 2px ink borders with asymmetric radius pairs built from 255px/225px against a 15px counter-corner — 255px 15px 225px 15px / 15px 225px 15px 255px for .sketch-border and .marker-btn, mirrored (15px 225px 15px 255px / 255px 15px 225px 15px) for .sketch-border-alt, and a tighter 12px counter-corner variant (255px 12px 225px 12px / 12px 225px 12px 255px) for .filter-chip — so straight CSS corners read as hand wobble. Rules are wavy SVG strokes; secondary dividers are dashed. Number badges are irregular teal ink-edged blobs (.doodle-num), not circles. Highlighter marks are rough-edged SVG blob fills painted behind text with box-decoration-break: clone so multi-line swipes stay ragged.

Conventional radii survive in quiet chrome, on the Tailwind scale: chips 0.25rem, rounded-lg 0.5rem on dropdowns and mobile menu items, and the configured rounded 0.75rem / xl 1rem / 2xl 1.5rem / 3xl 2rem steps for softly rounded containers. Two pre-existing utility-chrome exceptions sit outside the zine system and are permitted but never extended: the scrollbar thumb (20px radius) and the lightbox image (4px radius). Arrows and icons drawn as inline SVG use curved, hand-wavering paths (stroke-linecap="round"); functional UI glyphs (menu, dropdown carets, external-link) use Material Symbols Rounded.

Components

Buttons

Chips

Cards / Containers

Colophon Stamp (signature)

The AI-provenance disclosure (“This site is drawn with AI · checked by Jörn”) rendered as a hand-inked double-outline rubber stamp (.stamp): SVG stroke in Stamp Pink, rotated -2°, Excalifont text-xs. It is a brand feature displayed beneath the portrait, never shrunk into footer fine print.

Taped Photo (signature)

The portrait sits in a white-mat frame (2px ink border, pencil shadow, slight rotation) with two translucent yellow tape strips (.tape-tl/.tape-tr, rotated ±38°, dashed edges) across the corners, a hand-lettered two-part figcaption, and a Stamp Pink doodle arrow annotation drawn toward it.

Pre-existing utility chrome, deliberately outside the drawn world. Lightbox: 92%-black overlay (rgba(10, 11, 12, 0.92)), image at 4px radius with the Lightbox shadow, 0.3s ease fade — it stays neutral so photographs read unstyled; do not zine-ify it, and do not copy its radius or shadow onto page surfaces. Scrollbar: slim 8px thumb, 20px radius, neutral #D4D4D4 light / #525252 dark.

Do’s and Don’ts

Do:

Don’t: