Design languageLiving Inkv1 · 2026

Living Ink.

A printed sheet that is alive. Warm paper, black ink, one vermilion mark, two typefaces — and dots placed on purpose. Everything on bcr.co is made of the same material as the portrait in the hero.

01 — PrinciplesSix, in order
01

Paper, not screen.

The ground is warm paper, the text is ink, the rules are one pixel of ink. No gray chrome, no cards with shadows, no tinted panels.

02

Two typefaces.

Public Sans carries the voice; Courier carries the marks. Nothing else. The ink is the design.

03

One accent, one job.

Vermilion marks the live thing: the live dot, the current item, the one link to act on. It never fills a surface.

04

Dots are the material.

Photographs and ambient texture are halftone. Interface screenshots are plates — tipped in, shown true, captioned.

05

Motion is attention, not decoration.

Things respond to the pointer the way ink responds to pressure: locally, gently, and then they settle. Reduced motion turns it off and the page is still complete.

06

Marks, not chrome.

Metadata lives in the margins as typesetter's marks: index numbers, folios, crop marks, figure captions.

02 — ColorPaper · ink · one accent
Paper#f1efe6 · ground
Plate#f8f7f1 · behind screenshots
Ink#191b18 · text, rules, dots
Ink 264% · secondary text
Rule18% · hairlines
Accent#bc3f20 · the live thing

Ink 2 reads at 4.8:1 on paper and the accent at 4.7:1, so both can carry text. The 42% ink is for decorative marks only.

Modes

Signal ground#11150f
Signal ink#d4ef90
Signal rule#3b4530
Offset red#d64731 · hover only
Offset blue#243b91 · hover only
Mint#8fd3ad · the time-out band

Signal is the dark counterpoint, used for one section (the experiments). Inside it the tokens are remapped, so every component adapts without new rules. Offset is misregistration: a touched headline slips its registration by two pixels, red one way and blue the other.

03 — TypePublic Sans · Courier New
.t-displayclamp(60, 10.8vw, 124) / .88 · 700 · −.065em

Human,
by design.

.t-statementclamp(40, 6.2vw, 92) / .95 · 400 · −.045em

Let's chat.

.t-h1clamp(44, 6.4vw, 84) / .92 · 700 · −.045em

The UI was killing the deal.

.t-h2clamp(32, 4vw, 52) / .98 · 400 · −.045em

Design for the job, not the demo.

.t-h324 / 1.15 · 700 · −.02em

Let the record build itself.

.t-leadclamp(20, 2vw, 24) / 1.35 · 400

I work with domain experts — analysts, quality engineers, lab scientists, IT administrators — from research through delivery.

body17 / 1.55 · 400 · max 62ch

The quality engineer needs to move fast under pressure. The compliance officer needs a complete record that may not be needed for months. These are in direct conflict. I solved it by designing documentation to happen as a byproduct of the workflow itself.

.mark11 / 1.6 mono · .08em · uppercase

01 — Selected work · Fig. 02 · WireScreen — organization profile

Headlines are bold; statements are regular. The hero sets the rule: "Human, by design." is bold; the statements that open each section are not. Marks are uppercase and terse; prose is sentence case.

04 — MarksThe printer speaks here
Live dot — the thing that is on 01 / 04 — folio Fig. 03 · caption A text link
A plate: a screenshot on plate paper with a hairline, crop marks at the corners and a figure caption
Fig. 01 · A plate — plate paper, hairline, crop marks, caption

Plates are how screenshots enter the page: on plate paper, inside a hairline, with crop marks outside the corners and a figure number below. They are shown true, never tinted, never in a device bezel.

05 — MotionFelt, not seen

Ink under pressure: local, gentle, then it settles.

ElementBehaviourNumbers
PortraitGaze follows the pointer anywhere on the page; nearby dots displace.6 px displacement · reach 105 px · rests only when the pointer leaves the window
Living ruleDots within reach of the pointer grow and darken, then settle.spacing 9 · reach 140 · growth ×1.7 · falloff (1−t²)² · settle ×.18 per frame
RevealBlocks rise into place once, as they enter the viewport.10 px · 700 ms · cubic-bezier(.16, 1, .3, 1)
OffsetA touched headline slips its registration.±2 px · 160 ms
WordmarkStarts as "bcr" with the accent dot at the end. A second after load it unfolds into "brian c reyes" and the dot slides onto the i as its tittle. Hovering folds it back; leaving unfolds it.900 ms · letters fade in over 600 ms
Neon Grid plateThe floor game runs live in its plate: targets light up, a player's shadow stomps them, the clock runs. The pointer lights the tile under it and can stomp a target too.32 × 18 tiles · a new target about every 1.5 s · 100 points a stomp
Reduced motionReveals, living rules and the Neon Grid are off; the plate shows its still. The portrait still answers the pointer, since it only moves when you do.prefers-reduced-motion: reduce
06 — LayoutFull bleed, capped measure
TokenDesktop≤ 650 pxNote
Gutter34 px23 pxThe hero's own margins
Section128 px88 pxBetween numbered sections
Block64 px44 pxInside a section
Grid12 columns · 24 px gap1 columnTwo-column layouts collapse at 900 px
Measure62chReading text never runs wider
ContainernoneThe page is full bleed, like the sheet
07 — VoiceShort sentences
Say

The UI was killing the deal.

Not

A comprehensive UX overhaul that elevated the platform experience.

Say

Documentation time fell from about 40 minutes to about 10.

Not

Dramatically streamlined the documentation process.

Say

Fig. 02 · Dense, sortable tables replaced the card grid

Not

Image of the new table design

The business problem first, the screen second. Numbers where they exist, no adjectives where they don't. The site speaks as Brian, in the first person — except the marks, which speak as the printer.

08 — Signal modeThe dark counterpoint

Same marks, same rules, inverted ink.

  • A row in signalEverything remaps: ink, rules, plate paper, the accent.One section per page, at most