The reborn house system: all-blue, a live procedural feTurbulence edge on every primary container, ordered-halftone fill, tone dithered never smooth, Bricolage Grotesque display over JetBrains Mono data. Dark and light are the same system at rest — flip the toggle: every component re-paints through the --c-* cascade with zero structural change. Green phosphor, scanlines, and emissive glow are retired.
Display carries the human voice (titles, names, narrative); mono carries everything machine — digits, timestamps, labels, status. The warm-sans ⟷ cool-mono contrast is the type signature. No serif (the rejected v1 serif/mono clash). No grey body text on dark.
Text stays razor-sharp — the warp is on a ::before at z-index:-2; content rides z-index:1 on an isolated layer. Edge gaps are transparent (reveal the layer behind), so heavy edges belong on plain ground. Emphasis ladder = warp intensity encodes recency/importance.
Middle: the same would-be gradient run through filter:var(--dither) → stepped/ordered, instrument-honest. Right: raw smooth gradient — the generative-design tell, anti-ruled. Grain (feTurbulence posterize) is reserved for special artifacts, not the general system.
A focused 45-minute working session to align on partnership scope and define what a successful pilot looks like.
① Web — full fidelity
Live filter:url(#edgeLive) breathing edge, JS countdown, webfonts, halftone, dither. The portal + booking + calendar pages. prefers-reduced-motion → #edgeStatic.
② Web — degraded / print
Reduced-motion + @media print flatten the warp to a crisp border and force a white ground (PDF is print material). Same DOM.
③ Email — hybrid (light body + dark brand band)
Email clients run no SVG filters, no JS, unreliable webfonts. So the procedural edge + halftone become a pre-rendered PNG in a dark header band; the body is light, table-based, bulletproof-button, system-font fallback. Below is the tier rendered live (in real email the band is a flat image):
boas.dev
meeting confirmed · Jun 29
You're confirmed for Saturday, Jun 29 at 14:00 GMT. We'll align on scope and define the pilot.
View your portal →