The Lawn · counter · 6m
No sugar on the toast — allergy
The design system, on one page · same tokens as the website
Everything the POS is built from, on one page. Same tokens as the marketing site, plus the pieces a till needs that a marketing page never did. Use this to check a new screen before building it.
Page ground. Black with a warm cast so cream never goes blue.
Cards and the rail.
Raised — buttons, hover states.
Every divider. One pixel, never a shadow.
Type. The logo's white, warmed.
Secondary type.
The brand accent. Means press this.
Hover and focus.
Paid, ready, passing, open.
Placed, waiting, impersonating.
Voided, failed, below reorder.
Why state has its own scale. Amber already means “press this” in this brand. In most POS software amber means “waiting, check this”. Both cannot be true on one screen, so order state uses three tones that appear nowhere else — and every one is paired with a word, never colour alone.
Daylight is the same tokens, redefined. The switch in every topbar swaps them at the :root, so nothing below has to know. Amber darkens to ember there, because amber on white fails contrast.
Coffee under an open sky
Order queue
Brick paths, folding chairs on cut grass, and four strings of bulbs that come on around six. Espresso from the hut at the end of the path.
₱6,480.00 · 038 · 18:44:12 · lw_live_••••3f9c
“Take the long way home tonight.”
The script face never appears on a control. It is the shop's voice to a customer — receipts and the order page — not a label on a button a barista presses a hundred times a shift.
One primary per screen. If two things are amber, neither is the thing to press.
The dot exists so state reads at a glance from a metre away. The plain variant is for labels that are not state — a tag, a channel, a count.
The keypad is on screen because the tablet's own keyboard covers half the till. Every key is 54px.
Notice — amber. Something worth reading.
Notice — go. Something that went right.
Notice — wait. Something in progress.
Notice — stop. A risk, a cost, or a thing that cannot be undone.
Not everything is a card. Border, fill and radius each say “separate object”. Spend them on the thing that needs lifting.
| No. | Spot | Channel | Total | State |
|---|---|---|---|---|
| 038 | The Shade | QR | ₱230.00 | Closed |
| 037 | The Lawn | Counter | ₱300.00 | Closed |
| 034 | The Rail | Counter | ₱160.00 | Voided |
Money is right-aligned and tabular everywhere. Columns of figures that do not line up are harder to read than they look.
The Lawn · counter · 6m
No sugar on the toast — allergy
Grey is closed, not quiet. Saturday opens at two — four empty cells that would otherwise read as a dead morning.
Modals are driven by :target, not JavaScript. The back button closes them and every one is deep-linkable — staff.shift.html#m-close opens the close-shift dialog directly. That is a prototype convenience that happens to be good behaviour worth keeping.
A destructive modal states what is lost, in figures, before it offers the button. “Are you sure?” is not a warning.