Fjord
v0.1 · specimen 2026-05-04

Fjord.
Loud at the edges.

A design system for a web that went soft. Locked tokens. Heavy rules. One accent. No foam.

01 Rules

Three rules. Print them. Tape them to the monitor.

01

Every corner is ninety degrees. There is no middle.

02

Text is the interface. Decoration is opinion.

03

One accent color. If you need two, rewrite the sentence.

02 Typography

Three faces, same jaw.

A Display — Archivo

Thick, tight, unflinching.

B Body — Space Grotesk

Geometric, warm, reads long. Carries paragraphs, fields, and most of the chrome. Holds its ground next to Archivo without picking a fight.

C Mono — IBM Plex Mono

labels, code, captions, status · tabular numbers 0123456789

Type scale — ratio 1.383

xs10pxThe grid is a frame
sm14pxThe grid is a frame
md16pxThe grid is a frame
lg22pxThe grid is a frame
xl30pxThe grid is a frame
2xl42pxThe grid is a frame
3xl58pxThe grid is a frame
disp80pxThe grid is a frame

Body specimen

Setting body text against thick rules and oversized display creates a hierarchy that doesn’t need decoration. Adjust line-height and tracking to find the breathing room that works for your specific font pairing — then leave it alone.

Brutalist accents are for emphasis, not ornament. One hot color can cover primary action, focus state, and active selection. If you find yourself reaching for a second, ask whether the first one is doing enough.

03 Color

Cream, ink, one hot accent.

bg#f1ece1
surface#e6dfcd
ink#16130f
muted#6e6555
accent#ff4314
a-ink#ffffff

The accent is reserved. Primary action, focus, single emphasis — never decoration.

04 Components

Buttons, inputs, controls.

Buttons

Form fields

Drop files here or click to choose · images, PDFs, ZIPs

Breadcrumbs & pagination

Progress

A 32% · uploading
B 78% · rendering

Stepper

01 Choose stack Type, color, ratio
02 Lock tokens Export to canon
03 Build kit In progress
04 Ship v0.1 release

Avatars

JD KA MR +3
JD KA MR SK +9

Tooltip

Tabs

Overview — tabs use the same thick rule as section dividers, anchored to a 12px baseline. Active state inverts to ink.

Activity — auto-pairing by source order. Each <section> after the <header> binds to the button at the same index.

Settings — arrow keys, Home, and End move between tabs and switch the panel in one step (auto-activation).

Billing — full ARIA: role=tablist/tab/tabpanel, aria-selected, aria-controls, and roving tabindex.

Badges

Default Solid Accent Outline Live New

Callouts

Note

Keep accents reserved for primary attention. The thick left bar already pulls the eye.

Read this.

For the loud ones — warnings, blocks, anything you can’t afford to miss.

05 Data

Cards, tables, numbers.

Stat cards

Active users
12,840
19200
210400
311200
410800
512100
611900
712840
↑ 8.2% wow
Conversion
3.91%
14.21
24.08
34.17
43.96
54.02
63.88
73.91
↓ 0.26pt wow
Revenue
$48.2k
132100
228400
335200
441800
538600
644900
748200
All-time high

Sparklines (inline)

Word-sized trends sit next to numbers without breaking line height — signups +12.4% · churn −0.4pt · uptime 99.97%

Data table

Project Owner Status Tasks Updated
Specimen sheet jane Active 28 2h
Token export pipeline kai Review 11 6h
Dark variant audit mira Draft 4 1d
Component coverage jane Done 62 3d

Bar chart

Mon
8,420
Tue
11,180
Wed
9,640
Thu
12,800
Fri
17,640
Sat
10,400
Sun
7,620

Line chart

A Plain
DayUsers
Mon8420
Tue11180
Wed9640
Thu12800
Fri17640
Sat10400
Sun7620
B Plain · with area
WkRevenue
W132100
W228400
W335200
W441800
W538600
W648200
W744900
W852700
C Accent · loud
DayUsers
Mon8420
Tue11180
Wed9640
Thu12800
Fri17640
Sat10400
Sun7620
D Accent · with area
WkRevenue
W132100
W228400
W335200
W441800
W538600
W648200
W744900
W852700

Pie chart

StatusCount
Complete61
In progress27
Blocked12

Donut (progress ring)

Capacity Complete Of target

Gauge (filled level)

Capacity Complete Of target

Lists

A Plain
  • Cream base, ink rules
  • Single hot accent for primary action
  • No radius, no soft shadows
  • Mono for labels and captions
B Numbered
  1. Pick the type stack first
  2. Lock the scale ratio
  3. Choose one accent — only one
  4. Build components from there
06 Patterns

Overlays & empty states.

Modal

Esc or click backdrop to close

Loader

Loading

Empty state

[ ]

Nothing here.

Build one or import one. The space won’t fill itself.

07 Code

Tokens in a single sheet.

:root {
            --font-display: "Archivo", system-ui, sans-serif;
            --font-body:    "Space Grotesk", system-ui, sans-serif;
            --font-mono:    "IBM Plex Mono", ui-monospace, monospace;

            --fs-base:    16px;
            --fs-ratio:   1.383;

            --wt-display: 800;
            --lh-tight:   0.95;
            --lh-body:    1.55;
            --tr-display: -0.035em;
            --tr-caption: 0.12em;

            --sp:         8px;
            --rule:       2px;
            --rule-thick: 12px;
            --radius:     0px;

            --bg:         #f1ece1;
            --surface:    #e6dfcd;
            --ink:        #16130f;
            --muted:      #6e6555;
            --accent:     #ff4314;
            --accent-ink: #ffffff;
        }
Lock the tokens?

This becomes the canonical sheet. Anything already in tokens.css gets overwritten. No undo.