Contrast
Read off the rendered pixels at every section, on light ground and dark.
Caught the header at 1.0:1 over the dark section: ink on ink, invisible.
The Measure
Six phases, one checkpoint, and a written record at the end of each. Every figure on the front page traces back to something on this one.
Studios accumulate a house style because it is cheaper to repeat one, and it makes every client look like the studio instead of like themselves. Research is re-run from scratch for each engagement, and the previous site is not in the room.
00–05
A conversation, then a written specification and a fixed price.
Every engagement starts with questions rather than a mood board: who the site is for, what it has to make happen, what already exists, and what is non-negotiable. The answers become a specification you sign off on, and a price that does not move afterwards. This is the only checkpoint; from here the work runs to a live link.
Fresh research for your site, done after the interview and never before.
No house palette, no house typeface, no hero layout carried over from the last client. The vocabulary is derived from your subject once the interview has established what the subject is. There is a written list of the design defaults that get checked against and rejected, the looks that turn up whenever nobody decided anything, and your stated wishes override that list.
Every asset accounted for: what exists, what is missing, what cannot legally ship.
Photography, logos, copy, fonts and data are inventoried before the build starts, because the expensive surprises live here. Images are licensed and credited file by file or they do not go on the page. This site credits its own twenty plates by artist and source.
Tokens, not guesses. Contrast measured rather than eyeballed.
Colour, type and spacing are defined once as tokens and used everywhere, so a change is one edit rather than forty. Contrast is measured from the rendered pixels, not estimated from the palette. Keyboard focus, reduced motion and the no-JavaScript case are handled while the thing is being built, not bolted on afterwards.
Five adversarial passes, each with a different lens.
Each pass goes over the finished build looking for what the previous one missed: layout, contrast and legibility, copy, performance, and the behaviour that only breaks on a phone. The point of a pass is to find something. A pass that finds nothing was not a pass, and the findings are written down whether or not they are flattering.
Live on Cloudflare, every figure on record, and the whole thing yours.
You get the repository, the domain and the deploy, with build notes that stay current rather than a PDF written once. Nothing is rented back to you and there is no lock-in. A care plan is available if you want changes handled; it is optional, and the site keeps working if you decline it.
01 / 05
Each one has caught something real
Contrast
Read off the rendered pixels at every section, on light ground and dark.
Caught the header at 1.0:1 over the dark section: ink on ink, invisible.
Overflow
No text escaping its box or the screen, at 360, 390, 430, 768 and 1440.
Caught the opening headline running 29px past the edge of a 360px phone.
Touch targets
Measured in both directions, not just one.
Caught marks that were 44 tall and 22 wide, which a careless check passes.
Console and network
Zero errors and zero failed requests on the deployed page.
Caught the reel logging an aborted request nobody would ever have noticed.
Links
Every address resolved before it ships.
Caught a button pointing at an anchor that exists on one page and not the other.