Skip to content
SloplessTry the picker

Base style · contemporary · dense

Industrial Hardware

Braun and Teenage Engineering product UI: a warm-grey enclosure laid out like a control surface, with raised keys, knobs, dark LCD readouts, tiny part-number labels, big product shots and one orange signal colour.

Moods
technical, minimal, playful, serious
Suits
ecommerce, music, devtools, science, gaming, architecture
Type
Archivo

Principles

  • Lay every section out like a control surface: a modular grid of keys, dials and readouts, never floating cards
  • Use one signal colour (orange) for actions and status only: the primary key, the power light, the active readout
  • Give keys and modules a solid bevel edge that presses on hover; warm-grey surfaces with 1 px seams and 6 px corners, no soft shadows
  • Label everything like a spec plate: tiny uppercase mono labels, part numbers, units and indices beside precise small type
  • Let the product be the hero: big product shots in device bezels, backed by spec tables, not adjectives

Hard rules

  • No floating cards with soft drop shadows, no gradients, glows, glass or blobs; depth comes only from the bevel edge and the seam.
  • No second accent colour on the page: no blue links beside orange keys, no rainbow status chips.
  • No orange body text, no orange headings, no orange knobs or encoders; orange text only appears on LCD glass.
  • No three equal feature cards; features are keys in a keypad (3×2) or rows in a spec table.
  • No rounded pills on panels (6 px corners only; pill keys only in the key-strip nav), no circles except encoders, knob caps, the power key and status dots.
  • No stock photos of people with devices, no 3D renders of abstract shapes; product shots, technical drawings and grayscale portraits only.

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 Industrial Hardware 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.

Do

  • Treat the page as an enclosure: `bg` is the warm-grey case, `surface` the lighter key caps and plates, `surfaceAlt` a recessed control panel, `accent2` (near-black) the LCD glass.
  • Build sections as modules on the 12-column grid with a 16 px gutter; panels share one material: `surface` fill, 1 px `border` seam, 6 px corners (`radius`), and the solid bevel edge (`shadow: bevel`, 4 px, the border colour darkened) under every raised key and plate.
  • Press keys physically: on hover the key drops 2 px and its bevel halves; on press it sits flush (no bevel). 120 ms, `cubic-bezier(0.3, 0, 0.2, 1)`; nothing else moves.
  • Use the signal colour only for actions and status: the primary key, the power key, a status dot, values on an LCD. At most one orange fill per section.
  • Set LCD readouts as `accent2` panels with values in the mono face in `accent` (orange on near-black), labels in the panel's muted foreground; LCD panels have no border and no bevel.
  • Draw controls as shapes, never orange: encoder rings (`ring`, heading colour, 40 px) on dial keys, knob caps (`circle`, surface colour, 96 px) on a recessed panel; at most four in a row.
  • Label like a spec plate: part labels, indices (01, 02), units, versions and dates in the mono face, uppercase, tracked, at `label` size; headings in the grotesk at weight 600 (700 only for the spec-plate headline), tight tracking.
  • Keep type precise and small next to big product shots: body 15 px, small 13 px; hero headlines at step 7–8 (≤ 14 ch), section titles at step 5.
  • Show the product: `treatment: product` shots in a `device` bezel (screws, status light, grille) in heroes, on bordered surface plates elsewhere; technical drawings for exploded views and design notes.
  • Put facts in tables, not adjectives: ruled spec rows with the value in mono, right-aligned.
  • At 375 px: modules stack in source order at full width; keypads keep two or three keys per row, dials two per row; the LCD strip stacks its readouts.

Don't

  • No floating cards with soft drop shadows, no gradients, glows, glass or blobs; depth comes only from the bevel edge and the seam.
  • No second accent colour on the page: no blue links beside orange keys, no rainbow status chips.
  • No orange body text, no orange headings, no orange knobs or encoders; orange text only appears on LCD glass.
  • No three equal feature cards; features are keys in a keypad (3×2) or rows in a spec table.
  • No rounded pills on panels (6 px corners only; pill keys only in the key-strip nav), no circles except encoders, knob caps, the power key and status dots.
  • No stock photos of people with devices, no 3D renders of abstract shapes; product shots, technical drawings and grayscale portraits only.
  • No display or script faces, no italics, no weights above 700, no centred paragraphs (a dial's value and label may centre under it).
  • No Doto / dot-matrix lettering and no all-black page by default; this is a warm-grey object with one colour, not a monochrome dot screen.

Heroes (4)

Control surface

hero.hardware-control-surface · hero

Desktop, 1440 px
Phone, 390 px
Rule
The product sits in a device bezel in 1–7; 8–12 is the control side: display headline, lead, a 2×2 of raised readout keys and the keys row; a dark LCD strip runs under both.
Slots
eyebrow, meta, heroImage, headline, subhead, stats[4..4], cta, cta2, tagline, facts[3..3]
Grid
product 1-7 · controls 8-12
Notes
The LCD strip is the accent2 (near-black) panel with accent (orange) mono text; it sits under the product in 1–7 and is hidden at phone width. Readout keys get the bevel edge.

A 12-column grid. Columns 1–7: the 4:3 product shot in a device bezel and, under it, the LCD panel (accent2, 16 × 20 px padding): the tagline in orange uppercase mono, then three key / value facts in mono on a 3-column row. Columns 8–12, spaced between top and bottom: a row with the mono eyebrow (link colour) and a muted mono note; the display headline (step 7, weight 600, tight, ≤ 14 ch) and a muted lead; a 2×2 of raised readout keys (surface fill, 1 px seam, bevel, mono label top, value at step 5 bottom); a primary key with arrow and a secondary key. Phone: product, then copy, keys and buttons; the LCD panel and the note are hidden so the hero stays within one and a bit screens.

Spec plate

hero.hardware-spec-plate · hero

Desktop, 1440 px
Phone, 390 px
Rule
A nameplate row (orange model chip + mono note), a display headline across 1–8 with the lead and keys in 9–12, then a 16:9 product shot in a device bezel beside a ruled spec table.
Slots
eyebrow, meta, headline, subhead, cta, cta2, heroImage, label, items[6..6]
Grid
headline 1-8 · intro 9-12 · product 1-8 · specs 9-12

A nameplate row: an orange chip (accent fill, 6 px corners, onAccent mono model name) beside a muted mono note. The display headline across 1–8 (step 8, weight 700, ≤ 16 ch); the body line and keys in 9–12, bottom-aligned with it. Below: a 16:9 product shot in a device bezel in 1–8 and, in 9–12, a raised surface spec table: a mono part label over five or six ruled rows (name 600 left, value in mono right).

Knob panel

hero.hardware-knob-panel · hero

Desktop, 1440 px
Phone, 390 px
Rule
Copy in 1–5; 6–12 is a control panel on surfaceAlt: a mono header, a dark LCD readout, a row of four ring dials with values and a row of six numbered keys.
Slots
eyebrow, headline, subhead, cta, cta2, label, meta, tagline, price, stats[4..4], features[6..6]
Grid
copy 1-5 · panel 6-12
Notes
Dials are rings in the heading colour (never orange); the LCD is the only accent text. Keys are surface caps with the bevel edge.

Copy in 1–5, spaced between: eyebrow, display at step 7 (≤ 12 ch), muted lead at the top, keys at the bottom. Columns 6–12 are one recessed control panel (surfaceAlt, 1 px seam, 20 px padding): a mono header row; an LCD readout (accent2) with an orange mono label and the price in orange mono at step 7; four 96 px knob caps (surface-coloured discs on the grey panel) with a value and a mono label centred under each; a row of six numbered surface keys with bevels. Spaced between, so the panel has no empty foot. Phone: knobs two per row, keys three per row.

Exploded callouts

hero.hardware-exploded-callouts · hero

Desktop, 1440 px
Phone, 390 px
Rule
Display headline in 1–7 with lead and keys bottom-aligned in 9–12; below, a technical drawing of the product in 4–9 between two numbered callout columns (1–3 and 10–12).
Slots
headline, eyebrow, subhead, cta, cta2, features[3..3], heroImage, items[3..3]
Grid
headline 1-7 · intro 9-12 · left 1-3 · drawing 4-9 · right 10-12

Display headline in 1–7 (step 8, ≤ 14 ch); eyebrow, body line and keys in 9–12, bottom-aligned. Below: a 1:1 technical drawing of the product on a bordered surface plate in 4–9, with three numbered callout tags (01–03) and leader lines matching the left column, flanked by two callout columns (1–3 and 10–12), three callouts each: a top seam, a mono index in the link colour, a title at step 1 (600) and one muted line. The callouts read like the numbered parts of an exploded view.

Navigation (2)

Content blocks (15)

Keypad

features.hardware-keypad · features

Desktop, 1440 px
Phone, 390 px
Rule
Intro in 1–4 (part label, h2, line, secondary key); six features as raised keys in a 3×2 keypad across 5–12, mono index top, title and line bottom.
Slots
label, title, body, cta2, features[6..6]
Grid
intro 1-4 · keys 5-12

Columns 1–4, spaced between: part label, h2 at step 5, a muted line; a secondary key with arrow at the bottom. Columns 5–12: six features as raised keys in a 3×2 keypad (gap 12 px): a mono index (muted) and a mono tag (link colour) at the top, the title at step 1 (600) and one muted line at the bottom. Two keys per row on phones.

Spec table

features.hardware-spec-table · features

Desktop, 1440 px
Phone, 390 px
Rule
A product shot on a bordered surface plate with a mono caption in 1–5; a ruled spec table in 6–12: index, part, description and value in mono.
Slots
label, title, image, caption, meta, items[6..6]
Grid
product 1-5 · table 6-12

Columns 1–5: part label, h2, a 4:3 product shot on a bordered surface plate and a mono caption (shot and caption hidden on phones, where the table carries the section). Columns 6–12: a mono header over six ruled spec rows, each a 12-column row: mono index (link) in 1, name (600) in 2–5, a muted line in 6–10 (hidden on phones), the value in mono, right-aligned, in 11–12.

Dial row

stats.hardware-dial-row · stats

Desktop, 1440 px
Phone, 390 px
Rule
Part label and h2 left, a muted line right; four figures as dial keys, each a ring in the heading colour over a big value and a mono label.
Slots
label, title, body, stats[4..4]

Part label and h2 on the left, a muted line bottom-aligned on the right. Four dial keys in one row (two per row on phones): raised surface key, 16 px padding, spaced between: a 40 px encoder ring in the heading colour at the top, the value at step 6 (600, tight) and a mono label at the bottom.

LCD readouts

stats.hardware-lcd-readouts · stats

Desktop, 1440 px
Phone, 390 px
Rule
One dark LCD panel (accent2): a mono header row, then four readouts with values in orange mono at step 7 over mono labels, ruled between.
Slots
label, meta, stats[4..4]

One LCD panel (accent2, 24 px padding, no border): a header row with an orange mono label and a mono note, then four readouts ruled between: value in orange mono at step 6, mono label beneath.

Product plates

gallery.hardware-product-plates · gallery

Desktop, 1440 px
Phone, 390 px
Rule
A big product plate (1:1 shot, caption, mono index) in 1–6; 7–12 holds the label, h2 and line over a 2×2 of smaller product plates with caption and mono year.
Slots
image, caption, index, label, title, body, gallery[4..4]
Grid
hero 1-6 · plates 7-12

Columns 1–6: one big product plate (surface, seam, bevel, 12 px padding): a 1:1 product shot and a caption row (name 600, mono index). Columns 7–12: part label, h2 and a muted line at the top, a 2×2 of smaller product plates (4:3 shot, name and mono year) at the bottom.

Numbered principles

list.hardware-numbered-principles · list

Desktop, 1440 px
Phone, 390 px
Rule
Part label and h2 in 1–5 with a lead in 7–12; principles in two ruled columns, each a mono number in the link colour beside a title and one line.
Slots
label, title, lead, features[6..6]
Grid
title 1-5 · lead 7-12

Part label and h2 in 1–5, a muted lead in 7–12, bottom-aligned. Below: principles in two ruled columns, each a mono number at step 3 in the link colour beside a title at step 1 (600) and one muted line.

Review panel

testimonial.hardware-review-panel · testimonial

Desktop, 1440 px
Phone, 390 px
Rule
A raised surface panel in 1–8 with the quote at step 4 and an orange status dot beside the name and mono role; a dark LCD tile in 9–12 with a mono figure in orange.
Slots
quote, author, role, label, number, meta
Grid
quote 1-8 · lcd 9-12

A raised surface panel in 1–8 (24 px padding): the quote at step 4 (500, tight) at the top; at the bottom a 40 px orange status dot beside the name (600) and the mono role. Columns 9–12: an LCD tile (accent2) with an orange mono label, an orange mono figure at step 8 and a mono note, spaced between.

Order sheet

pricing.hardware-order-sheet · pricing

Desktop, 1440 px
Phone, 390 px
Rule
Label and h2 with a mono note right; models as rows of an order sheet: mono tag, model name, one line, mono price and a secondary key.
Slots
label, title, meta, plans[3..3]

Part label and h2 with a mono note right. Models as rows of an order sheet, ruled: a mono tag in the link colour (1–2), the model at step 3 (3–5), one muted line (6–8), the price in mono at step 2 (9–10) and a small secondary key (11–12). Never three equal plan cards.

Manual

faq.hardware-manual · faq

Desktop, 1440 px
Phone, 390 px
Rule
Label, h2, line and a secondary key in 1–4; questions as a numbered manual in 5–12: mono number, question at step 1, answer muted, ruled.
Slots
label, title, body, cta2, faqs[4..5]
Grid
intro 1-4 · manual 5-12

Columns 1–4: part label, h2, a muted line and a secondary key. Columns 5–12: questions as a numbered manual, ruled: mono number in the link colour, the question at step 1 (600), the answer in muted small type. All answers visible.

Power key

cta.hardware-power-key · cta

Desktop, 1440 px
Phone, 390 px
Rule
One surfaceAlt control panel: label, h2 at step 6, line and an inline email form in 1–7; a large round orange power key with a mono caption in 9–12.
Slots
label, title, body, newsletter, meta
Grid
copy 1-7 · key 9-12

One recessed control panel (surfaceAlt, seam, bevel, 32 px padding): part label, h2 at step 6 (≤ 18 ch), a muted line and an inline email form in 1–7; a 180 px round orange power key with a mono caption centred in 9–12.

Compatibility grid

logos.hardware-compat-grid · logos

Desktop, 1440 px
Phone, 390 px
Rule
Label and h3 in 1–4; partners as a 3×2 grid of bordered port cells in 5–12, each with a mono index and the name.
Slots
label, title, clients[6..6]
Grid
intro 1-4 · ports 5-12

Part label and h3 at step 4 in 1–4. Columns 5–12: partners as a 3×2 grid of bordered port cells (no fill), each with a mono index and the name (600). Two per row on phones.

Firmware log

blog.hardware-firmware-log · blog

Desktop, 1440 px
Phone, 390 px
Rule
Label and h2 with an arrow key right; posts as a firmware log: a raised mono date chip, title and one line on a 12-column row, ruled.
Slots
label, title, cta2, posts[4..4]

Part label and h2 with a ghost arrow key right. Posts as a firmware log, ruled: a raised surface date chip in mono, sized to its text, in 1–3, the title at step 1 (600) in 4–8 and one muted line in 9–12.

Service panel

contact.hardware-service-panel · contact

Desktop, 1440 px
Phone, 390 px
Rule
A raised surface panel in 1–7 with label, h2, line and a name / email / message form; four fact keys stacked in 8–12 (mono label, value).
Slots
label, title, body, contact, facts[4..4]
Grid
form 1-7 · facts 8-12

A raised surface panel in 1–7 (24 px padding): part label, h2, a muted line and a name / email / message form. Columns 8–12: four fact keys stacked (surfaceAlt, mono label, value 600).

Crew IDs

team.hardware-crew-ids · team

Desktop, 1440 px
Phone, 390 px
Rule
Label and h2; four people as ID plates: a 1:1 grayscale portrait, a mono number in the link colour, name and mono role.
Slots
label, title, body, team[4..4]

Part label and h2 with a muted line right. Four people as ID plates (surface, seam, bevel, 8 px padding): a 1:1 grayscale portrait, a mono number in the link colour, the name (600) and the mono role. Two per row on phones.

Design notes

content.hardware-design-notes · content

Desktop, 1440 px
Phone, 390 px
Rule
Label, a statement at step 4 and two muted paragraphs in 1–5; a technical drawing of the product on a bordered surface plate in 6–12 with a mono caption.
Slots
label, statement, body, body2, image, caption
Grid
copy 1-5 · drawing 6-12

Columns 1–5: part label, a statement at step 4 (600, ≤ 30 ch) and two muted paragraphs. Columns 6–12: a 4:3 technical drawing of the product on a bordered surface plate with a mono caption.

Footers (2)

Baseplate

footer.hardware-baseplate · footer

Desktop, 1440 px
Phone, 390 px
Rule
Like the label under a device: boxed logo and tagline, stacked links, an inline email form, then a seam and a mono row with the legal line and address.
Slots
siteName, tagline, pages, newsletter, legal, address

Like the label under a device, over a 1 px top seam: boxed logo and a muted tagline in 1–4, numbered links stacked in 5–8, an inline email form in 9–12; then a second seam and one mono row with the legal line and the address, space between.

Compact rail

footer.hardware-compact-rail · footer

Desktop, 1440 px
Phone, 390 px
Rule
One seam, then one row: wordmark, slash links and the mono legal line, space between.
Slots
siteName, pages, legal

A 1 px seam, then one row: wordmark, slash-separated links and the mono legal line, space between.