Industry design system

Industry is a wireframe: steel-blue on a light technical ground, Barlow Condensed headings over Barlow, a modular grid, and cards, figures and buttons framed as blueprint objects — square-cornered, hairline-bordered, with “+” registration marks at the corners. Cards and figures stay transparent line drawings; the primary button is the one solid object on the board, an accent fill that keeps the square corners and the marks. Photography is duotoned into the steel accent and icons are thin-stroke.

How to use this

Direction

Modular grid layouts — content in equal-width cells, strong horizontal and vertical rhythm, visible structure. Cards, buttons and major sections are wireframe objects: square-cornered, thin-bordered, with + crosshair corner marks (the .blueprint class + four <i class="corner tl/tr/bl/br"> children) — never soft filled rounded blocks. Images and figures get the same treatment: square, hairline-framed and marked, never rounded or clipped. Wrap hero and inline images in the .duotone class — they are desaturated and washed in the accent, like a screen print that re-colors with the theme.

Color

A light ground (--color-bg #f2f2f3) with --color-text #1d1f20 and a single accent #5980a6 (this is a mono scheme: no second accent was chosen — the --color-accent-2-* variables carry a machine-derived stand-in kept only so both sets resolve; treat them as one role). Each role carries a 100–900 tonal ramp (--color-neutral-100 … --color-accent-2-900) generated in OKLCH on a shared perceptual lightness scale, so the same step of any ramp has the same visual weight. Use the light steps (100–300) for tinted fills, hovers and subtle borders, 500 as the role’s base, and the dark steps (700–900) for text on tinted fills and for pressed states; prefer ramp steps over ad-hoc color-mix(). For elevation use --shadow-sm/md/lg (already tuned to the ground) rather than ad-hoc box-shadows.

Type

Barlow Condensed for headings over Barlow for body text, loaded as --font-heading / --font-body. Density 0.85× and radius 4px are already baked into the --space-* / --radius-* scales — use the variables, not raw numbers.

Icons

Use Lucide icons (https://lucide.dev), at stroke-width 1.5 for a lighter, more technical look throughout.

Interaction states

Interactive states are themed, never browser defaults: give every interactive element a :hover tint and a pressed state from the accent ramp (one step past the base — --color-accent-600 on a light ground, --color-accent-400 on a dark one, or a color-mix() tint for outlined/ghost variants), and style keyboard focus with :focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; } — never leave the default blue focus ring.

Components

Class What it is Shown in
.btn with .btn-primary, .btn-secondary, .btn-ghost, .btn-icon, .btn-block Actions — the primary is a solid accent fill components/buttons.html
.tag with .tag-accent, .tag-accent-2, .tag-neutral, .tag-outline Small labels tinted from the ramps (mono palette: accent-2 reads the same as accent) components/buttons.html
.field + label, .input, .radio + .dot, .seg + .seg-opt Form fields and choices on native elements — no script components/forms.html
.card with .card-kicker, .card-title, .card-body, .card-meta; .elev-sm/md/lg Transparent, hairline-bordered cards with corner registration marks components/cards.html
.nav + .nav-brand The header bar components/navigation.html
.table Data tables with themed header and row rules components/table.html
.dialog-backdrop + .dialog (+ .dialog-title/-body/-actions) A modal at the top elevation components/dialog.html
.hr A horizontal rule — present, but this system prefers whitespace; avoid it —
.blueprint + four <i class="corner tl/tr/bl/br"> children The wireframe frame every card, figure and primary button wears components/cards.html
.duotone The image wrapper — every content photograph goes through it foundations/image.html

States are built in: hovers and pressed states come from the accent ramp, keyboard focus is the 2px accent :focus-visible ring, ::selection is an accent tint, and disabled controls drop to 45% opacity. Don’t restyle them per page. The accent-to-ground pair is tuned to at least 3:1 — enough for icons, large text and interface chrome, not for body copy — so for paragraph-size text in the accent use a deep ramp step (--color-accent-700 on this ground) rather than the accent itself.

Do

Don’t

Files