An LED readout bolted to a steel box. One number rules the screen and a binary state says whether it's moving. Shipped in Time Warrior — web and the SwiftUI menu-bar app share this token set.
Paste this into the session that's building the UI. Do not retype token values from memory — link or vendor the stylesheet.
Build this UI in the Lucian Labs "Punch Clock" look. Read https://lucianlabs.ca/branding/AGENT.md and https://lucianlabs.ca/branding/punch-clock.md before writing any CSS. Link https://lucianlabs.ca/branding/punch-clock.css and use its tokens and components. Every colour must be a var(--token) from that file. Follow the ban list in AGENT.md — check your output against it before you report the work done.
act, read, then detail. Never lead with nav or explanation.
Both are dark, square-cornered, and set numerals in Micro 5. The line matters.
| console | punch clock | |
|---|---|---|
| borders | 1px hairline | 2px, always |
| panels | translucent + blur | flat and opaque |
| ground | radial wash | flat #0e0e10 |
| body face | system sans | Finlandica |
| signals | blue, amber when armed | green/red stoplight, cyan focus |
| buttons | outlined, tinted | solid fill, near-black label |
| a view is | many panels, none dominant | one huge figure |
You are operating something in Console. You are watching a number here.
| client | in | out | hours | usd |
|---|---|---|---|---|
| nduro | 09:00 | 12:15 | 3.25 | $260 |
| lucianlabs | 13:00 | 14:30 | 1.50 | $120 |
| total | 4.75 | $380 | ||
Body sans numerals read as a database. Micro 5 reads as a readout. Prose and labels stay Finlandica and never take the display face.
punch in
export csv
total earned
yours to keep
$1,240.00 · 3.25 h · 30%
Start Tracking Now
Export Your Data
Total Earnings 💰
You're doing great!
Let's get started!
The SwiftUI port at time-warrior/apps/mac/…/Theme.swift mirrors these tokens — panel(), field(), BrandButtonStyle, PulseSquare, Tile. Change a token here, change it there. Known drift: --dim is #666 on web and #cfcfd6 in Theme.swift; the web value is canonical until that's reconciled.