Clear space: one block
Keep a quarter of the mark's width free on every side: the size of one block. Nothing else enters that space.
Locals is the brand partners see when they move money for their customers. It should feel like a bank statement you trust: warm paper, one deep green, one signal lime, numbers set in mono.
B3 is a 3×3 grid of city blocks. Five are built and draw the L of locals. Three are still waiting. One is lit: the market where the money lands.
Keep a quarter of the mark's width free on every side: the size of one block. Nothing else enters that space.
48
32
24
20
16
64 px wideThe mark holds down to 16 px, the favicon size. The lock-up needs at least 64 px of width. Below that, use the mark alone.
In white-label use the partner's brand leads. Locals appears once, as "Powered by locals", in a footer or a settings screen.
Forest carries the brand and the dark sections. Lime is for one thing per screen: the main action on dark, the highlighted word, the lit dot. Click a swatch to copy it.
Mostly paper. Forest for the sections that matter. Lime is the smallest slice, which is why it works.
#E4F6CF fill, #24531A text, #3FAE2A dot.
#FBEFD6 fill, #7A4F05 text, #F2B33D amber.
Paper 2 fill, muted text, #B7B2A3 dot.
#EF6F4D coral, for failed transfers and errors.
One open-source variable family, served from our own domain: no font service, no tracking. Amounts, ids and codes use the system mono.
Display · 76–92 · 800 · −3.5%Local rails.H2 · 34–60 · 750Global money.H3 · 22–28 · 750Quote first. Then pay.Body · 17 / 1.55 · 400Customers pay the way they always do, from their own bank, in their own currency.Eyebrow · 13 · 650 · +8%How it worksMono · system · 13.5A$12,500.00 → 8,137.50 USDCui-monospace, 'SF Mono', 'Cascadia Code', Menlo, Consolas, monospace
Drawn on a 24 grid with a 1.6 stroke and round caps. Duotone: the line takes the text colour and the fill takes --ic-fill, so one file works on paper and on forest.
In use Icons sit in a rounded box: 18–22 px inside 32–46 px. Paper box on light, forest box with lime line for the active or the important one. Use as {{> i_name}}.
Circular, simplified to read at 24 px, with a hairline ring. Keys are currency codes. Regional currencies use the Locals roundel; stablecoins use their coin. 28 in the set.
20 chip
26 list
38 header
52 hero
Short sentences that end with a period. Rails, currencies and statuses by name. No promises we cannot show.
HeadlineCollect in AUD. Settle in USDC.The future of borderless money is here!CoverageLive in Australia and the US. Coming soon in the UK.Available in 160+ markets*PricePrice locked until the quote expires.Best rates, guaranteed.StatusTransfer completed. 8,137.50 USDC settled.Woohoo! Your money is flying your way!!CardsAvailability depends on where the cardholder lives.Cards for everyone, everywhere.Sample dataBSB 000-000 · account 1234 5678 · Harbour & CoReal-looking numbers and real names.ActionsTalk to us · Read the docsGet started for free today!Animation shows a state changing: a deposit arriving, a rate locking, a route turning live. Every animated block also has a still version that shows where it ends.
Colour and label change together, in 0.4 s. The pill never moves.
--ease-out is cubic-bezier(0.22, 1, 0.36, 1). Fast start, soft landing.
The barrio grid lights one block every 0.7 s and fades it over 1.6 s. It sits behind content, never on top.
Amounts count up when they enter the screen, once per change. Never on a loop.
prefers-reduced-motion, every block renders its final state. No loops, no typing.?shot in the URL renders the same final state, so every capture is the finished one.See the still version of this section.
Built once in ui.css and reused everywhere. The class name is under each one.
.btn-dark · .btn-ghost
.btn-primary on forest
.live-pill
.status · .soon · .pending
.bank
.hook-chip
.timeline · .tl.is-done
.payout-toast
.checks with icon ticks
.mini-card
Tell us where your customers are. We will tell you what is live, what is next, and how fast you can launch.