Artifact Machine / Design System

Internal reference — v1.0

The system

Every rule here exists because something in the category is broken and this is the correction. Where a choice is only taste, it is marked as taste.

1 · Live contrast audit

Computed in your browser right now against the real rendered values, not from a spreadsheet written when the tokens were authored. Edit tokens.css into non-compliance and this section turns red.

measuring…
PairingUseRatioNeedsResult

2 · Colour

A measurement of 24 logos in the website-audit category returned blue 11, neutral 4, orange 3, green 2 — the category is ~46% blue and thick with mascots and gradients. Warm ink-and-paper with one burnt-orange accent is chosen because it is the open lane, not because it is pretty.

Ember — the only accent

Ink — warm neutrals

Hue 75, never true grey. A trace of ember in every surface makes the page read as paper rather than as a default UI slab.

Status

Deliberately desaturated so they can sit inside an audit result without fighting the brand. Never the only signal — always paired with a label or shape.

--am-pass · Passed
--am-warn · Review
--am-fail · Failed
--am-retired · Retired

3 · Type — two voices

The split is semantic, not decorative. If a person wrote it, it is sans. If the machine measured it, it is mono. That one rule does most of the work of making these pages read as an instrument rather than as marketing.

Sans — the speaking voice

Small tools that stay.

Headlines, body, navigation, anything a human wrote.

Mono — the machine's voice

strict-transport-security · 0.94 · 340

Scores, headers, URLs, counts, timestamps, IDs.

Scale

Fluid via clamp(), so no breakpoint ever restates a size.

TokenSpecimen

4 · Form

Hard edges. A rounded corner is the fastest way to make a tool look like a consumer app. The one permitted softening is the chamfer — a 45° cut, not a curve — which is the brand's own corner and carries the product tiles.

Security Headers Check

17 headers, one row per domain.

AI Access Check

Can a model read this site at all?

Accessibility Check

What automated scanning can and cannot see.

Buttons

The 15° rule

One angle in the entire system, used sparingly — a single rotated element against an orthogonal grid. Two angles is noise.

transform: rotate(var(--am-tilt))

5 · Motion

Short and mechanical. Nothing bounces — a machine does not bounce. Anything over 240ms starts to feel like a website performing for you. All of it is disabled under prefers-reduced-motion.

instant
90ms — state flips, active states
fast
140ms — hover, focus, colour changes
base
200ms — reveals, expansions
slow
320ms — the largest permitted; use rarely
ease
cubic-bezier(0.2, 0, 0.13, 1) — decisive, no overshoot

6 · Forbidden

Enforced by review, not by the compiler. Each has a reason; none is arbitrary.