Lucian Labs look E — the machine and the widgets. Shipped as ll-shop, elijahlucian.ca.
Paste this into the session that's building the UI. This look is under iteration — the widget is the reference where the spec is silent.
Build this UI in the Lucian Labs "Claudecore" look.
Read, in order:
https://lucianlabs.ca/branding/AGENT.md (how to pick + what never to do)
https://lucianlabs.ca/branding/claudecore.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 claudecore.css directly; on any other
platform derive from the tokens and the UX contract.
Motion is transform + opacity only, on the named spring and ease-in.
The reference implementation is https://cdn.lucianlabs.ca/scripts/ll-shop.js.
Left: the shop panel at its real 176px. Right: the same parts at page scale. The orb is what the panel becomes when closed — click either orb to see it pulse.
elijahlucian.ca's radio. A black canvas in a grey frame where the song builds a landscape as it plays. Here a timer stands in for the track; the hue is seeded from the title.
--label, not grey. Tiny, uppercase, tracked, Finlandica 700. The wordmark is the same thing with one word in --accent.Body is Finlandica at 300, 1rem, 1.5 line-height. One family does display and body — weight and tracking separate chrome from copy, not face.
Small copy, muted, 0.85rem.
[3/12] · 03:41 · $4.99 — iOS · 128 bpm
Space Mono is the mono — inherited from elijahlucian.ca, the look's one exception to the house Inconsolata rule.
Hover nudges 2px up on the spring and blooms the shadow. Press scales to 0.96. Focus is a 2px sky ring. The gradient on the primary is the look's named exception — two stops, 135°, only on the goods and the one CTA.
Tap through them. Arrivals ride the spring and retreats take ease-in, the label and the state land together, and the sky bar glides to the chosen tab.
| track | len | bpm |
|---|---|---|
| tidewater_07 | 03:41 | 96 |
| seal_dive | 01:18 | 128 |
| radio_edit | 00:09 | — |
buy something.
support this app <3
hire the guy who built these ↗
no posts yet.
couldn't load posts.
[3/12] · random · shuffle
Shop Now!
Support Us ❤️
Hire Me Today
You haven't posted anything yet!
Oops! Something went wrong.
Track 3 of 12
A look change moves the way the look you are going into moves. This is how a swap into Claudecore arrives.
| kind | duration | curve |
|---|---|---|
curve | 600ms · move | emphasised |
Mood's wipe, and the default: any look without a transition of its own arrives this way. A sinusoidal front sweeps across at a freshly randomised angle, so no two swaps look alike.
Frames: three polygon frames at sweep positions −260, 0, +260, the phase advancing so the curve travels. Reduced motion: no sweep — the 600ms colour tween, so the choice still lands.
Spec: skin-swap.md · source of truth LL_LOOKS['claudecore'].transition in /v2/ll-brand.js.