Raw web brutalism: system and mono type, visible 2 px borders on every cell, default-blue underlined links, harsh black-on-white contrast and zero polish.
Full page preview with sample copy, rendered from the same tokens and layout the agent receives.
For coding agents
Rules and live patterns
Every pattern Brutalist owns, drawn by the same renderer as the picker with the style's default tokens and sample copy. Each has an anchor (#<pattern id>). A design's own DESIGN.md and tokens.json stay the source of truth; this page shows what the patterns look like.
Give every cell, panel and input a visible border of `tokens.border.width` (2 px) in the heading colour (`border.style: thick`, never a grey hairline) on all four sides; let neighbouring borders collapse into one line (zero gap).
Use the mono face for labels, numbers, dates and metadata; headlines in the heading face, uppercase, heaviest weight, at steps 6–8.
Style links as links: accent colour, always underlined, no padding or background; use a filled button only for the one primary action per screen.
Let headlines run the full width of the page and break where they must; on phones drop to step 3 and hyphenate rather than shrinking further.
The hero is a plain HTML document: a mono path line, an uppercase h1 at step 8 across the full width, a 1 px rule, a paragraph and bare underlined links. No grid, no image.
Slots
eyebrow, headline, subhead, cta, cta2, meta
Notes
Looks like an unstyled page that happens to be enormous. Links are default-blue underlined text, never buttons.
Stack, full width, no grid: a mono small line like a file path or "last modified" stamp; the headline in uppercase at step 8, heaviest weight, leading tight, allowed to run edge to edge and break mid-word on phones; a 1 px rule; the subhead as a plain paragraph (max 60 ch); then two bare links (underlined, accent colour, no padding, no fill) side by side; a 1 px rule and a mono meta line. Nothing is boxed or aligned beyond the left edge.
A wall of bordered cells with no gutter: the headline cell spans 1–8 over two rows; eyebrow+subhead and the CTA stack in 9–12; a meta cell 1–4 and a wide text cell 5–12 close the wall.
Slots
headline, eyebrow, subhead, cta, meta, statement
Grid
headline 1-8 · info 9-12 · action 9-12 · meta 1-4 · body 5-12
Notes
Every cell has a 2 px border on all sides; neighbouring borders touch (collapse) — like an HTML table with border=1.
Five cells on a 12-column grid with zero gap, each with a 2 px border on all four sides (borders collapse into single lines). Cell 1: headline in 1–8 across rows 1–2, uppercase, step 7, heaviest weight. Cell 2 (9–12, row 1): mono eyebrow and the subhead. Cell 3 (9–12, row 2): one primary button at medium size, bottom of the cell, accent fill, square. Cell 4 (1–4, row 3): a mono meta line. Cell 5 (5–12, row 3): a one-line statement in body size (different copy from the subhead). At phone width cells stack in source order and keep their borders.
An accent marquee band on top, a full-width uppercase headline at step 5, then subhead 1–5 and CTA 10–12; a second marquee in the inverse colours at the bottom.
Slots
tagline, headline, subhead, cta, meta
Grid
headline full · subhead 1-5 · cta 10-12
Notes
Marquees scroll continuously (pause on hover and under prefers-reduced-motion).
Bleed edge to edge. Top: a marquee band in accent with onAccent mono uppercase text, 2 px borders top and bottom. Middle: the headline across the full width (step 5, heaviest weight, uppercase, tight — four or five lines at most at 1440 px), then the subhead in 1–5 and an underlined CTA bottom-aligned in 10–12. Bottom: a second marquee in heading-on-bg (inverse) with the meta copy. At phone width the headline drops to step 3 and may break mid-word with hyphens.
Strategy and design for companies that make thingsPositioningIdentityWebsitesStrategy and design for companies that make thingsPositioningIdentityWebsites
We make complicated companies simple to choose
Northfold is a 14-person studio helping manufacturers, labs and B2B teams explain what they do — and look like they mean it.
Start a project→
Booking projects from June 2026Booking projects from June 2026Booking projects from June 2026Booking projects from June 2026Booking projects from June 2026Booking projects from June 2026Booking projects from June 2026Booking projects from June 2026
Desktop
Strategy and design for companies that make thingsPositioningIdentityWebsitesStrategy and design for companies that make thingsPositioningIdentityWebsites
We make complicated companies simple to choose
Northfold is a 14-person studio helping manufacturers, labs and B2B teams explain what they do — and look like they mean it.
Start a project→
Booking projects from June 2026Booking projects from June 2026Booking projects from June 2026Booking projects from June 2026Booking projects from June 2026Booking projects from June 2026Booking projects from June 2026Booking projects from June 2026
A bordered grayscale photo fills 1–7 over three rows; the uppercase headline overlaps it from column 6 to 12 on row 1; subhead and CTA sit in 9–12 below.
The headline cell overlaps the photo by one column and has the page background, so it cuts into the image.
A grayscale photograph with a 2 px border and a raw caption (file name in mono) fills 1–7 across rows 1–3. The headline (step 7, heaviest weight, uppercase) sits on row 1 from column 6 to 12, on the page background, so it overlaps the photo by one column. Row 2: subhead in 9–12, one column clear of the photo. Row 3: a primary button in 9–11. At phone width the headline comes first, then the photo, subhead and button.
One line: the site name as plain bold text, slash-separated underlined links, and a mono version stamp on the right; a 2 px rule underneath.
Slots
siteName, pages, meta
A single row, space-between: the site name in bold body type (no logo mark), the page links separated by " / " and underlined in the accent colour, and a mono small stamp (version, date or "updated 3m ago"). A 2 px rule closes it. At phone width the links scroll horizontally.
Two bordered cells touching: the boxed site name in 1–3, the links in 4–12 underlined; borders collapse like a table.
Slots
siteName, pages
Grid
logo 1-3 · links 4-12
Two cells with 2 px borders on all sides and zero gap: 1–3 holds the boxed site name in uppercase; 4–12 holds the underlined links in a row. At phone width the cells stack and the links scroll horizontally.
A bordered table: a grey header row (label + count) then items as rows — number 1, title 2–6, text 7–11, mono date 12 — separated by 1 px rules.
Slots
sectionLabel, caption, items[3..12]
Grid
no 1-1 · item 2-6 · description 7-11 · date 12-12
The whole list sits in one box with a 2 px border. First row on surfaceAlt: the section label in mono uppercase on 1–6 and a mono caption (item count, "sorted by date") on 7–12. Then each item is a row with 1 px rules between: number (mono) on 1, title (h4, uppercase) on 2–6, body on 7–11, mono date on 12. Tabular, dense, no padding beyond 8–16 px. At phone width each row stacks and the header row keeps only the label (the caption hides).
Features in a four-column grid of bordered cells with zero gap; each cell: mono number, uppercase title, short text.
Slots
title, features[4..8]
Grid
title full · cells full
An h2 in uppercase at step 5 across the full width, then four to eight features in a 4-column grid with zero gap; each cell has a 2 px border (collapsed), 16–24 px padding, a mono number, an uppercase h3 and a short paragraph. Cells are not cards: no radius, no shadow, no hover lift. At phone width cells stack one per row.
An 8 px bar, a mono label, then a full-width uppercase statement at step 3 and two dense body columns 1–6 and 7–12.
Slots
sectionLabel, statement, body, body2
Grid
statement full · body 1-6 · body2 7-12
An 8 px bar in the text colour across the full width, a mono uppercase section label, the statement in uppercase at step 3 (heaviest weight, tight, full width, no max width), then the body in two columns 1–6 and 7–12 set tight (line-height 1.35). Dense on purpose. At phone width the columns stack.
Most rebrands fail because they start with a logo. Ours start with a sales call recording and a spreadsheet of lost deals.
Each engagement starts with a two-week audit: interviews with customers, sales and the people who build the product. The brief writes itself after that.
We hand over everything — source files, a living brand system and a website your team can edit without calling us.
Desktop
About
Most rebrands fail because they start with a logo. Ours start with a sales call recording and a spreadsheet of lost deals.
Each engagement starts with a two-week audit: interviews with customers, sales and the people who build the product. The brief writes itself after that.
We hand over everything — source files, a living brand system and a website your team can edit without calling us.
Photos as a contact sheet: six square grayscale frames per row with zero gap, each bordered with its file name in mono underneath.
Slots
sectionLabel, items[6..18]
Grid
sheet full
A mono label line, then six to eighteen photos in a 6-column grid, zero gap, each in a 2 px bordered cell: a square grayscale image and its file name (mono small) underneath, like a darkroom contact sheet. No hover zoom, no lightbox chrome. At phone width the sheet becomes one horizontally scrolling strip of the same bordered cells (about 1.25 cells visible), like a strip of negatives.
A mono label in columns 1–2, top-aligned; the quote in a bordered box across 3–12, uppercase at step 4, heaviest weight; author and role in mono below.
Slots
sectionLabel, quote, author, role
Grid
label 1-2 · quote 3-12
Columns 1–2: the section label, mono uppercase, top-aligned and never rotated. Columns 3–12: one box with a 2 px border holding the quote in uppercase at step 4, heaviest weight, no quotation-mark glyph ornament, then author and role in mono small, separated by " — ". At phone width the label sits above the box and the quote drops to step 3.
Figures as a strip of touching bordered cells: the number in mono at step 5, the label in uppercase mono under it.
Slots
stats[2..4]
Grid
strip full
Two to four cells in one row with zero gap and collapsed 2 px borders. Each cell: the number in the mono face at step 5 (weight 700, tabular) at the top, the uppercase mono label pinned to the bottom so labels line up across cells. Numbers are raw — no animation, no units in another colour. At phone width cells stack full width.
A full-bleed accent band; the headline in onAccent uppercase at step 7 is itself the call to action, followed by one underlined link.
Slots
headline, cta
Grid
headline full
Section background accent, bleeding edge to edge, 2 px borders top and bottom. The headline in onAccent, uppercase, step 7, heaviest weight, two or three lines, inset by the page margin (32 px) so the first letter lines up with the content above. Under it one underlined link in onAccent at large size with an arrow. The whole band is clickable. At phone width the headline drops to step 3.
Questions as numbered rows: mono number in 1, question (uppercase h4) 2–5, answer 6–12, 1 px rules between; every answer visible.
Slots
title, faqs[4..12]
Grid
number 1-1 · question 2-5 · answer 6-12
An uppercase h2, then four to twelve rows separated by 1 px rules: a mono number ("Q1") on 1, the question in uppercase h4 on 2–5, the answer as plain text on 6–12. All answers are open — no accordions, no chevrons. At phone width each row stacks.
Plans as lines in one bordered box: uppercase name left, mono price, a bare link right — justified across the full width.
Slots
title, plans[2..5]
Grid
list full
One box with a 2 px border. Each plan is a single row with space-between: plan name (uppercase h3), the price in mono at step 4, the inclusions as one small line, and a bare underlined link ("buy →"). Rows are separated by 1 px rules. The recommended plan is marked with "[recommended]" in mono, never a coloured card. At phone width each row wraps.
Posts as a changelog: mono date 1–2, underlined title 3–12 with a one-line summary under it; 1 px rules between entries.
Slots
title, posts[4..20]
Grid
date 1-2 · entry 3-12
An uppercase h2, then entries separated by 1 px rules: the date in mono (YYYY-MM-DD) on 1–2, the title as an underlined h4 link on 3–12 with a one-line summary in small type directly under it. No thumbnails, no tags, no read-time badges. At phone width the date sits above the title.
Client names typed out in a 6-column grid of bordered cells, uppercase mono, zero gap. No logos.
Slots
sectionLabel, clients[6..24]
Grid
names full
A mono label, then six to twenty-four client names, each in a bordered cell (collapsed 2 px borders), mono uppercase label size, in a 6-column grid. No logo images. At phone width two per row.
Two bordered cells: 1–6 holds the email at step 3 in mono plus phone and address; 7–12 holds a bare form with 2 px bordered inputs.
Slots
title, email, phone, address, contact
Grid
details 1-6 · form 7-12
Two cells with collapsed 2 px borders. Cell 1 (1–6): uppercase h2, the email in mono at step 3 (the main call to action, underlined), phone and address as plain lines. Cell 2 (7–12): the form — name, email, message — with labels above inputs, 2 px borders, no radius, and a submit button that looks like a default HTML button in the accent colour. At phone width cells stack.
Two bordered cells: links stacked and underlined in 1–6; address, email and legal in mono in 7–12. Site name bold above.
Slots
siteName, pages, address, email, legal
Grid
links 1-6 · info 7-12
The site name in bold uppercase, then two cells with collapsed 2 px borders: 1–6 lists every page link underlined, one per line; 7–12 has address, email and the legal line in mono small type. At phone width the cells stack.
A marquee of the legal line, then the site name in uppercase at step 8 across the full width with slash-separated links under it.
Slots
legal, siteName, pages
Grid
name full
A marquee band (2 px borders top and bottom) running the legal line in mono, then the site name in uppercase at step 8, heaviest weight, filling the width, then slash-separated links in one line. At phone width the name drops to step 4.