Branding

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

Pick a look

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

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 five 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.
claudecore.mdClaudecore spec — where it came from, the three rules, the juice motion table, the genie, the sketch. Iterating.
claudecore.cssClaudecore drop-in stylesheet.
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