Branding

House looks, one rule set. Point an agent here and it builds in the brand instead of its own defaults.

Pick a look

Console
render export wav

Console

waveloop · choppa

Instrument panel at 2am. Dark, square-cornered, hairline-ruled, pixel-display chrome. Depth comes from borders, never shadows.

audio tools · dashboards · dev tools · editors · live state
Total earned
$260.00
running · nduro · $80/hr
punch out

Punch Clock

time warrior

An LED readout bolted to a steel box. Chunky 2px borders, flat opaque panels, one giant green figure, stoplight state.

timers · trackers · counters · meters · money clocks
Remaining
$42.50
Ana Iliovic · Tab 4471
Charge Tab

House Pour

drinktix

A letterpressed card on ivory stock. Warm charcoal ink, champagne gold, serif numerals, pill buttons. Quiet and expensive.

elevated brand experiences · premium · considered · warm
Field Notes
wavelang — An Agent-Authored DSL
what happens when the machine designs a language for itself
curated by Ana Iliovic

Field Notes

lucianlabs.ca/blog

A reading lamp over a dark desk. Serif prose on plum-black, amber headings, lavender in the margins. Reveal on approach, nothing on load.

blogs · essays · writeups · build logs · docs that argue
Lucian Labs shop
shopdevlog
Choppa$4.99 — iOS

Claudecore

ll-shop · elijahlucian.ca — iterating

A vending machine humming in a dark arcade. Near-black glass in a navy hairline, sky-blue chrome, gold on the goods, a three-layer glow, and a genie in and out of the orb.

floating widgets · docks · mini-players · pop-over shops · the personal site
YAMA-BRUHPortaSound
20
VOICE SELECTOR

Yama-Bruh

yama-bruh.lucianlabs.ca

A 90s portable keyboard on the kitchen table. Charcoal moulded plastic, teal silkscreen, chamfered caps whose colour is their job, and a red LED showing one number.

synths · drum machines · sequencers · sound toys · MIDI tools
Units shipped
1,284Units
$18.4kRevenue
96%Redeemed
ana@thevii.appACTIVE
rory@nduro.appINVITED

WaveLoop Admin

waveloop.app/admin

The borderless operator console. Navy under a blue-and-amber wash, surfaces parting by tone instead of lines, controls that fill rather than outline, Finlandica reading every label.

admin · back-office · ledgers · dashboards · review queues

Orbs — the minimized icon of each look

What the shop widget collapses to in every look, running live. Audit them side by side: each should read as its look at 32px with no label and no colour outside its own palette. Source: orbs.css — the widget's copy is generated from it.

claudecore
the blue sphere — highlight top-left, deeper at the rim, a glow
console
a block cursor, pulsing, in a hairline square
house-pour
a violet swirl behind an ivory rim, turning slowly
punch-clock
a green pip in a 2px box — it glitches every seven seconds
field-notes
the codex mark from the blog, throbbing lavender, a Fira Code label beneath
yama-bruh
a green cap on the case — press it and it travels — with a red standby LED that blinks twice every five seconds

Transitions — how each look arrives

A look change moves the way the look you are going into moves. Each stage swaps in from the look before it; replay them side by side and check each reads as its look. Default is the curve. Spec and contract: skin-swap.md.

claudecore
curve · 600ms · move
console
scanline · 600ms · move
house-pour
pour · 850ms · arrive
punch-clock
glitch · 300ms · settle
field-notes
iris · 600ms · move
yama-bruh
led · 300ms · settle

Systems

Not looks — reusable machinery. How a brand is defined, and how it changes on screen.

Hand it to an agent

Paste this at the top of the session that's building the UI. Swap the slug for house-pour if that's the look.

Build this UI in the Lucian Labs "Console" look.
Read, in order:
  https://lucianlabs.ca/branding/AGENT.md   (how to pick + what never to do)
  https://lucianlabs.ca/branding/console.md   (this look)
  https://lucianlabs.ca/branding/UX.md      (how it must behave)
Take tokens from https://lucianlabs.ca/branding/brands.json — never
retype them. On web you may link console.css directly; on any other
platform derive from the tokens and the UX contract.
Implement all seven interaction states, focus included, and use only
the five named durations. Check your output against the AGENT.md ban
list and the UX.md ship checklist before you report the work done.

Files

FileWhat it is
AGENT.mdRead first. How to pick, the ban list, and how to fill gaps the specs don't cover.
brands.jsonAll seven looks as machine-readable tokens.
UX.mdThe behaviour contract — seven interaction states, five durations with curves, screen states, responsiveness, accessibility. Platform-agnostic; applies to every look.
console.mdConsole spec — type ramp, accent budget, voice, gap-filling.
console.cssConsole drop-in stylesheet. Link it or vendor it.
console.htmlConsole rendered in its own look — the visual reference.
house-pour.mdHouse Pour spec.
house-pour.cssHouse Pour drop-in stylesheet.
house-pour.htmlHouse Pour rendered in its own look.
punch-clock.mdPunch Clock spec — includes the Console-vs-Punch-Clock table and the motion system.
punch-clock.cssPunch Clock drop-in stylesheet.
punch-clock.htmlPunch Clock rendered in its own look.
field-notes.mdField Notes spec — type ramp, the amber/lavender split, voice, gap-filling.
field-notes.cssField Notes drop-in stylesheet.
field-notes.htmlField Notes rendered in its own look.
waveloop-admin.mdWaveLoop Admin spec — the no-lines rule, fills, the Console comparison, type ramp, motion.
waveloop-admin.cssWaveLoop Admin drop-in stylesheet.
waveloop-admin.htmlWaveLoop Admin rendered as an operator console with mock data.
claudecore.mdClaudecore spec — where it came from, the three rules, the juice motion table, the genie, the sketch. Iterating.
claudecore.cssClaudecore drop-in stylesheet.
yama-bruh.mdYama-Bruh spec — where it came from, the three rules, cap colours, the LED, motion, voice.
yama-bruh.cssYama-Bruh drop-in stylesheet.
yama-bruh.htmlYama-Bruh rendered as a playable panel — voice bank, selector, rhythm, keys.
claudecore.htmlClaudecore rendered in its own look — the machine at 176px and at page scale, and the radio's sketch running.
orbs.cssThe minimized icon of every look — one rule set per slug, the source the shop widget's orbs are generated from.
theme-engine.mdThe theme contract, the eleven presets, and the per-theme motion table.
theme-engine.htmlAll eleven presets and their exit animations, live.
skin-swap.mdTwo-skin architecture and the curved-wipe transition, step by step.
skin-swap.htmlThe wipe, running — press it a few times, no two are alike.
site-brand.mdThe role contract a site reads, the family derivation, the light-look rules, and the root wipe's coordination with the shop.
site-brand.htmlA host page branded through the roles — five pips, and the whole page wipes.

Why this exists

Generated UI has a house style nobody chose: Inter, indigo gradients, rounded-2xl shadow-lg cards, a centred hero over three equal feature boxes, and an emoji in every heading. It is competent and it is anonymous, and it shows up whenever a model has to fill a gap the brief didn't cover.

These pages close the gaps in advance. The tokens say what the colours are, the specs say what to do when a component isn't listed, and the ban list names the defaults to delete on sight. An agent that reads all three produces something that looks like it came from here.

Rules that hold across the looks