Design System — v0.1.0

Sharp.
Warm.
Intellectual.

A token-first CSS design system rooted in the forests of northern Germany. Framework-agnostic tokens and components for brand, websites, and web apps.

About

A design system that knows what it is.

From the Old Saxon farn — feather-leaf, forest floor, northern ground.

Farn is built on a single conviction: that a design system should have a point of view. Not a collection of neutral components, but a coherent vocabulary — warm enough to feel human, sharp enough to feel considered.

The name and palette draw from the forests of northern Germany — birch, fern, iron, ash. These aren't decorative references; they shaped the specific colour choices. Four token palettes, a two-layer semantic architecture, framework-agnostic custom properties, and component classes with light and dark surface variants.

Explore the colour system →
Iron Night
Birch Mist
Forest
Bloom

Foundations

Typography & Spacing

Fraunces for display — an optical-size variable serif with visible personality. Instrument Sans for body and UI — humanist enough to feel warm, geometric enough to feel clean. A 12px-base spacing scale where proximity signals relationship.

Display — Fraunces 800
Good
design
thinks.

Fraunces brings personality to headings without sacrificing legibility. Optical size axis at large weights gives it warmth and confidence.

Body — Instrument Sans 400

The combination creates the "familiar but not like everything else" quality the system aims for. Geometric enough to feel clean, humanist enough to not feel cold.

const theme = stored ?? system;
document.documentElement
.setAttribute('data-theme', theme);
--space-xs · 6px
--space-sm · 12px
--space-md · 24px
--space-lg · 36px
--space-xl · 48px
--space-2xl · 60px
--space-3xl · 72px
--space-4xl · 96px

Components

The building blocks

Every component is specified for both light and dark surfaces. Token-first — no hardcoded colours anywhere in the implementation.

Cards

Platform · 4 min
Platform thinking at scale
How internal platform teams shift from cost centre to product organisation.
12 Apr 2025Read →
Featured
The product builder archetype
End-to-end ownership from strategy through shipped code — the emerging role.
2 May 2025Read →
Composable layout
Build pages from reusable layout primitives, not fixed templates.

Buttons

Badges & Tags

General Category Published Draft Archived Beta Research

Forms & Inputs

Enter a valid email address
We'll get back to you within 2 business days

Dividers

Hairline — between list items


Section — between content groups


Decorative — editorial scene break


Quotes

The platform is never finished. The moment you ship it, the next set of needs is already forming at the edges.

— Teresa Torres, Continuous Discovery Habits

Good platform thinking starts with the developer, not the platform.

Jacob Lueg Tiedemann

"Working this way changed how I think about internal tooling entirely. It stopped being infrastructure and started being product."

Maya Rodriguez

VP Engineering, Acme

Surfaces

Base, layer, overlay.

Three depth levels, all relative to the current theme. Apply data-surface to any element — tokens cascade automatically. Combine with data-theme to force a specific context.

Base

data-surface="base"

Page-level background. Resets to base within any deeper surface context.

Layer

data-surface="layer"

Cards, sidebars, panels. One depth level above the page.

Overlay

data-surface="overlay"

Modals, dropdowns, floating elements. Highest depth level.

Principles

Opinions, encoded.

Four ideas the system holds to — and enforces through its tokens.

Proximity signals relationship

The spacing scale encodes hierarchy — small gaps within components, large gaps between sections. Distance is meaning.

Motion is functional

Every transition communicates a state change. Decorative animation earns its place or it doesn't ship. When in doubt, don't animate.

Accessibility is built in

Every colour pair is tested for WCAG contrast. Focus rings are never removed. Touch targets stay at least 44×44px.

Semantic tokens over raw palette

Components reference purpose-named tokens, never raw colours. Light, dark, and surface overrides resolve automatically.

What Farn is

Tokens and classes. No framework.

Farn is not a JavaScript component framework — no React or Vue components, no runtime, no required build step. It ships CSS: a two-layer token system plus an opt-in set of component classes you style with. Works with any stack, or none. No Tailwind, no CSS-in-JS — just custom properties.