A complete, documented UI foundation for Beany's client portal: colour with defined roles, a type scale, spacing rules and a full component library. Every value is a design token, so the whole thing hands straight to Claude code for a React and Tailwind build.
This is not a flat picture of a UI. It is the working UI, expressed as semantic HTML and CSS custom properties that map one to one onto a Tailwind theme. The token table at the bottom is the contract: change a value once, the portal and every component update together.
Beany sits at the intersection of human warmth and tech precision. The system encodes that in three rules.
A serif for the human moments, a grotesque for the data. Warm off-white surfaces instead of cold grey. One apricot accent for the human touch.
Money is the product. Every figure uses tabular lining numerals so columns align to the pixel. Status colour is never decorative, it always means something.
Generous spacing, hairline borders, one primary action per view. Nothing shouts. This is the opposite of the busy, blue, typical accounting dashboard.
Each colour has a defined role. Primary green carries actions and positive states, apricot is the single warm accent used sparingly, and the four status colours each map to one meaning. Surfaces and text run on a warm neutral ramp, never pure grey.
Two families. Fraunces, a warm optical serif, for display and key figures. Hanken Grotesk, a clean humanist sans, for all UI and body. Spline Sans Mono for token labels and code. The scale is a 1.2 ratio on a 16px base.
One 4px base unit drives the whole layout. Components, padding and gaps all snap to the scale below, so rhythm stays consistent across every screen. The portal uses a 12-column fluid grid with a 260px fixed sidebar.
sh-1 raised · sh-2 floating · sh-3 modal
Every component the portal needs, in its real states. These are the exact elements rendered live on the dashboard, not redrawn for the docs.

+3
Your May GST return is in.
$4,210 is due on 28 July.
#1039 is 9 days past due.
Hana shared your cashflow forecast.
| Invoice | Client | Amount | Status |
|---|---|---|---|
| #1042 | The Corner Cafe | $3,200.00 | Paid |
| #1041 | Harbourside Bistro | $2,640.00 | Awaiting |
| #1039 | Ponsonby Deli | $1,200.00 | Overdue |
This is what makes the handoff fast. The design lives as CSS custom properties that map directly onto a Tailwind theme and a tokens.json. Hand this section plus the markup to Claude code and it can scaffold the React component library without guessing a single value.
| --color-primary | #0F6B4F | Actions, links, positive amounts |
| --color-accent | #E07A43 | Single warm highlight |
| --color-bg | #F7F4EE | App background |
| --color-ink | #1B1A17 | Primary text |
| --font-display | Fraunces | Headings, figures |
| --font-ui | Hanken Grotesk | UI and body |
| --radius | 12px | Default corner |
| --space-unit | 4px | Spacing base, scale 1–8 |
Total net pay of $18,240.00 across 6 staff. Approving sends payslips and schedules payment for 30 June.