Moodboard
Not a Pinterest board. A set of read-closely references, each with a specific extraction — what we take, and just as importantly what we refuse. A moodboard that only says "I like this" produces pastiche. A moodboard that says "I take this one decision and reject that one" produces a system.
The reference set
1. Mercury — the observatory
What it is: Business banking. Near-black canvas (#171721), content floating as marginally lighter graphite surfaces, ivory text, a single cobalt (#5266eb) reserved exclusively for the primary action. Proprietary Arcadia / Arcadia Display, body at 400 and display at an unusual 480 — confident without shouting. 18 color tokens, of which only 2 are brand.
Take:
- Accent scarcity as a discipline. One chromatic event per view, spent on the single most important action. Everything else is neutral. This is the highest-leverage decision in the entire moodboard.
- The two-brand-tokens ratio. 16 structural tokens to 2 brand tokens is the correct proportion for financial UI.
- Decorative blues that never touch a button. Mercury's pale blues (
#9cb4e8,#cdddff) live in washes and mockups. They are scenery, not affordance. We adopt the hard separation: a color used for decoration may never also signal action. - Lead with one trusted number. The account balance is the page.
Refuse:
- Dark-first. Lopifi is light-first, because the primary users are accountants and finance teams reading dense numeric tables for eight hours, often next to a spreadsheet and often printing. Dark mode is a peer, not the default.
- A proprietary display face. We can't ship one, and the taste has to survive on Inter + Geist Mono.
2. Ramp — the anomaly surface
What it is: Spend management. Leads with total spend and deviations. Dense tables treated as the hero rather than as a lesser page behind the dashboard.
Take:
- The table is a first-class design surface, not a fallback. Ramp invests real craft in row density, column hierarchy, hover affordances, and bulk selection. Our
TransactionTablegets the same investment as ourBalanceCard. - Surface the exception, not the aggregate. A finance dashboard's job is to tell you what changed and what's wrong. That's why
AnomalyCardis in the core catalog and a generic "welcome back" hero is not.
Refuse:
- Marketing-grade motion inside the product. Spend review is a high-frequency task; per Emil's frequency law it should be near-motionless.
3. Stripe — the documentation standard
What it is: Payments infrastructure. The most-copied design language in developer fintech.
Take:
- Currency symbol set lighter than the value.
$attext-tertiary, digits attext-primary. Stripe and Mercury independently converged here; it's correct because the symbol is a unit label, not data. - Consistent decimal places within a column, always.
$1,200.00, never$1,200. - The docs site is the product. Interactive, touchable, copy-paste-ready. Sonner's adoption came from the same insight. Our docs site is a milestone, not an afterthought.
Refuse:
- The gradient-mesh marketing aesthetic. It belongs on stripe.com and nowhere near a ledger.
4. Linear — the keyboard-first tempo
Take:
- Speed as an aesthetic. Keyboard-initiated actions get zero animation. The command palette opens instantly. This is the single most common failure in AI-generated UI — animating a thing the user triggers 200 times a day.
- Hairline-defined surfaces. Linear separates regions with a 1px line, not a shadow. Shadows are reserved for genuinely floating things.
- A restrained, near-monochrome palette with high-contrast type.
Refuse:
- The purple. And more generally the "developer tool dark" register — Lopifi's users are not all engineers.
5. Wise — the FX honesty pattern
Take:
- The conversion breakdown as a component. Amount → fee (itemized) → rate (with timestamp) → recipient gets. Every line visible, no "estimated total" hand-wave. This shape is our
ConversionBreakdown. - The rate is a perishable fact. Show it with an as-of time and a lock countdown. A rate without a timestamp is a lie.
Refuse:
- The consumer-brand green as a system color. We keep green strictly semantic (positive value), never brand — otherwise "green" stops meaning "favourable".
6. Monzo / Revolut — the card object
Take:
- The payment card rendered as a physical object. Real proportions (ISO/IEC 7810 ID-1, 85.60 × 53.98 mm → aspect ratio 1.586), real corner radius (3.18mm → ~3.7% of width, ~5.9% of height), a card-flip for the CVV that uses actual 3D (
rotateY+preserve-3d), and a subtle spring tilt on pointer move. - Consumer warmth in a business product, used sparingly. The card is one of the few places in Lopifi where delight is not just allowed but required — you see it rarely, it's emotionally loaded, and it's the physical anchor of the whole product.
Refuse:
- Gradient card faces as the default. Ours are flat, tinted by a brand color the consumer sets, with a single specular sweep on hover.
7. Bloomberg Terminal — the tick
Take:
- The value flash. When a number updates live, its cell background flashes (green up / red down) and decays to transparent over ~640ms. Forty years of traders reading it proves it works, and it solves the exact problem a count-up animation creates: it draws the eye to a change without ever rendering an intermediate false value.
- Density is respect. Power users want more on screen, not more whitespace. Hence three density modes.
Refuse:
- Everything else. Chromatic chaos, 11px type, no hierarchy. We take one idea.
8. Apple (Wallet, Stocks, Numbers) — the physics
Take:
- Interruptible, velocity-preserving motion. Springs for anything a finger can grab. A sheet you flick away mid-animation must reverse from where it is, not restart.
- Momentum dismissal over distance thresholds. A quick flick should be enough (velocity > ~0.11 px/ms).
- Damping at boundaries rather than hard walls.
bounce: 0.2maximum. Financial UI does not wobble.
9. Swiss / accounting print tradition — the rules
Take:
- Rule lines carry meaning. A single hairline above a subtotal. A double rule beneath a grand total. This is centuries-old typographic grammar, it's still what accountants look for, and essentially zero web products implement it. It costs us two CSS declarations and buys enormous credibility.
- The em dash for nil.
—for a true zero in a statement. Blank for not-applicable.n/afor unknown. Three states, three glyphs. - Right-aligned figures, left-aligned labels, leaders optional.
10. Isometric illustration (overflow.design/isometric register)
Take: A flat-shaded, 30° axonometric illustration language for empty states, onboarding and flow diagrams — volume without photorealism, built from our own palette. Full system in foundations/08-imagery-and-isometric.md.
Refuse: Isometric art anywhere inside a data-dense surface. It's a narrative device — it appears where there is no data yet, or where a concept must be explained. Never as decoration on a working screen.
Synthesis: the resulting character
If you had to describe Lopifi in one line: an accountant's ledger, typeset properly, that responds instantly.
| Axis | Where Lopifi sits | |
|---|---|---|
| Warm ↔ Cool | Cool-neutral ink (hue 265, near-zero chroma) with a warm-white canvas | |
| Dense ↔ Airy | Dense by default, three density modes, generous only in the 24px card inset | |
| Flat ↔ Deep | Flat at rest, real depth only for floating surfaces | |
| Playful ↔ Serious | Serious, with four sanctioned moments of delight (the card flip and tilt, the payment success, the reconciliation match) | |
| Loud ↔ Quiet | Quiet. One accent. Silence is the brand. | |
| Static ↔ Alive | Alive at the edges: ticks, draws, presence — never in the middle of a number |
The four sanctioned "moments"
Everything else is quiet, so these land:
- The card flip (
PaymentMethodCard) — 3D, spring, rare, emotional. - The pointer tilt (
PaymentMethodCard) — desktop hover only, acceptable because the card is decorative. - The payment success (
PaymentSuccess) — stroke-drawn check, one scale, seen rarely. - The reconciliation match (
ReconciliationView) — two rows fly together and merge. The single most satisfying thing in accounting software, and it happens maybe forty times a close.
The palette in one sentence
Near-white canvas, pure-white surfaces, ink-black text, hairline borders, one ink-blue accent, and a green/red pair that is never the only signal.