[ Colophon · how this was built ]
Cut to the browser,
never the framework.
Selvedge is a design-showcase concept — a fictional tailoring house dressed in real code. It is made the way the site claims its suits are: by hand, from honest materials, with nothing glued that could be sewn. This page is the ticket sewn into the breast pocket — what it is cut from, and how the two signatures actually work.
The brief
One page, two rooms. Light is the fitting room — chalk paper and charcoal ink. Dark is the
cutting room after hours — charcoal cloth and chalk ink. The whole palette is a single set of
custom properties that flip on :root[data-theme]; there is no second stylesheet
and no duplicated markup. Choose a room once and every surface, line and label follows.
The one thread of colour is a burgundy — --accent for fills and buttons, and a
lightened --accent-ink so the same colour stays readable as text once the lights
go down.
The two signatures
Every showcase earns its keep with something you can only do on the web. Selvedge has two, and both are driven by CSS state rather than a per-frame JavaScript loop — so they stay smooth, survive with scripting off, and fall still the moment a visitor asks for less motion.
The measuring figure
Hover — or tab — across the tailor's dummy and a caliper draws itself in: a rule, two ticks,
a lead line and a reading. The lines animate by pulling stroke-dashoffset from
1 to 0 over a normalised pathLength, so one length of
SVG handles any screen size. A short script only swaps the readout text and keeps the keyboard
and pointer in step; the drawing itself is pure stylesheet.
The bolt of cloth
Each fabric card unrolls as it scrolls into view. A rolled bolt-end travels left to right while
a clip-path inset opens the weave behind it — the cloth appears to play off the
roll. An IntersectionObserver adds one class to start it; the movement, timing and
easing all live in CSS, tuned on a house easing curve named for the draw of the needle.
With JavaScript off, every bolt shows fully unrolled and every caliper is drawn in one honest frame — the page is never blank, only quieter.
Built like a coat
Five principles held the build together — the same five, more or less, that hold a jacket together.
-
01
Cut by hand
No framework, no bundler, no build step. Three files — markup, one stylesheet, one small script — that a browser reads directly. Nothing to compile means nothing to rot.
-
02
One pattern, two rooms
Colour, line and shadow are all tokens. The dark room is not a repaint — it is the same pattern with the numbers flipped, including a text-safe accent so nothing dims into the cloth.
-
03
Enhanced, not required
The content reads in full before a line of script runs. Every reveal and animation is gated behind a
.jsclass, so the no-script visitor gets the finished garment, not a fitting in progress. -
04
Motion with manners
Everything that moves respects
prefers-reduced-motion. Ask for less and the bolts sit unrolled, the calipers stand still, and the hero settles without a sweep — the same information, none of the theatre. -
05
Fitted to everyone
A skip link, visible focus rings, real button semantics on the measuring points, live regions on the readout and the form, and colour contrast checked in both rooms so every label clears the tape.
The materials
The whole ticket, if you like to read the selvedge:
- Markup
- Hand-written semantic HTML — one page, plus this colophon.
- Style
- A single stylesheet, themed with CSS custom properties.
- Behaviour
- ~110 lines of dependency-free JavaScript, deferred.
- Motion
- CSS transitions on
clip-path&stroke-dashoffset; oneIntersectionObserver. - Type
- Cormorant for display, Inter for text, Space Mono for the tape.
- Build
- None. Copy the folder to any static host and it serves.
The house
Selvedge is fiction — the address, the mills, the prices and the ledger are invented for the showcase. What is real is the cloth it is cut from: the markup, the stylesheet and the script you are reading now. Designed & built by Parable.