The Infinite brand system

Brand

The brand system as it ships, read from the live tokens and the Marks Figma file.

Marks

The mark is a coin in motion: four nested meridians, each broken at the base. It carries the brand alone; the lockup adds the wordmark for first-contact surfaces like the nav and the footer.

Transparent icon exports come at two margins, both from the Marks file: tight, where the mark fills 90% of the square, for app icons and avatars that get masked; and padded at 60%, for favicons and anywhere the mark sits on a busy background.

Mark · inherits currentColor
Mark on ink
Badge · avatars, app tiles
Lockup · in use in the nav and footer
Lockup on ink
Download the brand kitEvery mark in ink and white: vector plus press-resolution PNG, transparent, with icon tiles, the colour tokens, and usage notes. Built from the files below by reference/tools/build-brand-kit.mjs.

Or take a single file:

Colour

Ink and a single green, split into light and dark band sets. Reference the token, never the hex. The values below are read from app/globals.css.

Backgrounds

--bg-surface#f2f5f3Page default
--bg-surface-raised#ffffffCards, panels
--bg-surface-tint#eef3f0Alternating bands
--bg-accent-wash#e4efeaAccent fills

Dark bands

--bg-surface-inverse#0b0d0cInverse sections
--bg-panel-dark#0d0f0ePanels on dark
--bg-node-dark#131615Nodes, chips on dark
--border-hairline-inverse#242927Hairlines on dark

Text

--text-primary#101413Headings, body
--text-secondary#4c5451Supporting copy
--text-label#616c66Labels: AA on tint
--text-inverse#f7f9f8Text on dark

Text on dark

--text-secondary-dark#b9c2beSupporting copy on dark
--text-label-dark#7c8781Labels on dark

Accents

--accent-green#007765Links, focus ring
--accent-green-strong#005d50Hover, emphasis
--cerulean#29c2ffData accent
--status-error#b42318Errors

Accents on dark

--accent-green-dark#00e6c5Accent on dark
--accent-green-strong-dark#66eda8Emphasis on dark

Controls

--button-primary-bg#101413Primary button
--button-primary-bg-hover#232827Primary hover
--button-primary-bg-active#2a2f2dPrimary active
--border-hairline#e3e9e6Hairlines, dividers

Typography

Geist Sans is the brand face. Newsreader is the display serif, used only on display lines and pull quotes. Geist Mono is for code, IDs and amounts. The Agent slot falls through to Geist Mono until Berkeley Mono is licensed.

Geist Sans

--font-brand, --font-display

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

Newsreader

--font-serif

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

Geist Mono

--font-mono

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

Agent slot

--font-agent

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

.t-display1Display 1serif 400 · 36→60px · -0.01em

Money that moves like software

.t-display2Display 2500 · 36→56px · -0.012em

Screened before funds move

.t-articleTitleArticle title500 · 32→44px · -0.01em

Introducing Infinite Accounts

.t-h2H2500 · 27→36px · -0.012em

Accounts, payments, compliance

.t-h3H3500 · 20→24px · -0.01em

Built for the regulated path

.t-statementStatement500 · 22→32px · -0.01em

Human-approved policy governs every outcome

.t-statementMStatement M500 · 20→24px · -0.008em

Direct answers read as prose, not a wall of display type

.t-pullQuotePull quoteserif 400 · 28→36px · -0.01em

Cases arrive assembled, not queued

.t-slideTitleSlide title500 · 24px · -0.01em

Deposit-account ledger

.t-cardTitleCard title500 · 20px · -0.01em

Managed Account

.t-ledeLede400 · 20px · -0.005em

A single API for accounts, payments, and the compliance work around them.

.t-bodyBody400 · 16px

Open a real deposit account with its own routing number, then move balances over ACH, wire, SWIFT, or stablecoin rails.

.t-proseProse400 · 17px

A payment is screened, settled, and documented on one network, then the receiving rail takes the last mile.

.t-bodySBody small400 · 14px

Settlement windows follow the receiving rail, not the sending one.

.t-captionCaption400 · 14px

Figures are illustrative and not a quote of live pricing.

.t-statNumeralStat numeral500 · 44→56px · -0.015em · tabular

$1,234.56

.t-statLabelStat label400 · 14px

Sample amount, illustrative

.t-eyebrowEyebrow500 · 14px

Products

.t-figLabelFigure label500 · 11px · +0.5px, micro-type floor

ORIGINATING BANK

.t-navNav500 · 14px

Platform

.t-buttonButton500 · 14px

Book a demo

.t-footerLinkFooter link400 · 14px · 1.7
.t-footerLegalFooter legal400 · 12px

© 2026. All rights reserved.

.t-codeCode400 · 13px

POST /v1/transfers

.t-agentAgent / CLImono 400 · 13px · Berkeley slot

POST /v1/accounts 200 acct_4f2c

Type roles

Each size has one job. The values are the live classes, clamp included. Mono is for figure labels and code, never headings, eyebrows, or stats.

Display.t-display1clamp(2.25rem, 1.35rem + 2.9vw, 3.75rem) / 1.08 / -0.01emReserved display

Money that moves like software

Page title.t-display23.5rem / 1.08 / -0.012emEvery page h1

Screened before funds move

Article title.t-articleTitleclamp(2rem, 1.62rem + 1.28vw, 2.75rem) / 1.12 / -0.01emBlog post h1

Introducing Infinite Accounts

Section title.t-h22.25rem / 1.1 / -0.012emSection headings

Accounts, payments, compliance

Subsection.t-h31.5rem / 1.2 / -0.01emSub-sections

Built for the regulated path

Stat.t-statNumeralclamp(2.75rem, 2.36rem + 1.3vw, 3.5rem) / 1.07 / -0.015emTabular amounts

$1,234.56

Stat label.t-statLabel0.875rem / 1.43 / 0Captions a numeral

Sample amount, illustrative

Statement.t-statementclamp(1.375rem, 1.18rem + 0.65vw, 2rem) / 1.28 / -0.01emShort marquee

Human-approved policy governs every outcome

Answer.t-statementMclamp(1.25rem, 1.12rem + 0.43vw, 1.5rem) / 1.4 / -0.008em40 to 70 word answers

Direct answers read as prose, not a wall of display type

Pull quote.t-pullQuoteclamp(1.75rem, 1.49rem + 0.87vw, 2.25rem) / 1.28 / -0.01emQuoted voice

Cases arrive assembled, not queued

Lede.t-lede1.25rem / 1.4 / -0.005emThe line under an h1 or h2

A single API for accounts, payments, and the compliance work around them.

Prose.t-prose1.0625rem / 1.53 / 0Long-form reading

Open a real deposit account with its own routing number, then move balances over ACH, wire, SWIFT, or stablecoin rails.

Body.t-body1rem / 1.5 / 0Scan voice

Settlement windows follow the receiving rail, not the sending one.

Small.t-bodyS0.875rem / 1.45 / 0Supporting scan

Figures are illustrative and not a quote of live pricing.

Caption.t-caption0.875rem / 1.45 / 0Captions

Figures are illustrative and not a quote of live pricing.

Label.t-nav0.875rem / 1.43 / 0Nav

Platform

Button.t-button0.875rem / 1.43 / 0Buttons

Book a demo

Eyebrow.t-eyebrow0.875rem / 1.43 / 0Categorical section noun

Products

Code.t-code0.8125rem / 1.4 / 0Code samples

POST /v1/transfers

Figure label.t-figLabel11px / 14px / 0.5pxIn-diagram chrome

ORIGINATING BANK

The frame is a 1px --grid-line hairline with --grid-mark quarter-rings at the corners, each broken the way the meridians in the mark are.

Gray roles

Gray is a role, not a numbered ramp. These are the tokens the site already ships, grouped by what they do.

Ground

--bg-surface#f2f5f3Page default

Raised

--bg-surface-raised#ffffffCards, panels

Tint

--bg-surface-tint#eef3f0Alternating bands
--bg-accent-wash#e4efeaAccent fills

Border

--border-hairline#e3e9e6Hairlines, dividers

Label

--text-label#616c66Labels: AA on tint
--text-label-dark#7c8781Labels on dark

Secondary

--text-secondary#4c5451Supporting copy
--text-secondary-dark#b9c2beSupporting copy on dark

Primary

--text-primary#101413Headings, body
--text-inverse#f7f9f8Text on dark

Ground on dark

--bg-surface-inverse#0b0d0cInverse sections
--bg-panel-dark#0d0f0ePanels on dark
--bg-node-dark#131615Nodes, chips on dark
--border-hairline-inverse#242927Hairlines on dark

Signal

Green means money moved: settled, approved, route live. One token, never a fill.

--signal-go#007765Paper. Alias of --accent-green.
--signal-go#00e6c5Dark band. The mint, not the ink green.

$1,234.56

Sample amount, illustrative

Icons

The blueprint set: 20px glyphs, 1.5px stroke, round caps. Duotone: primary geometry at full currentColor, secondary geometry muted to 45%, so one colour carries the icon on light and dark bands alike. Defined in components/home/icons.tsx.

  • bank
  • globe
  • transfer
  • spark
  • shield
  • users
  • code
  • hub
  • lock
  • pulse
  • doc
  • wire
  • bolt
  • coins
  • fx
  • clock
  • route

Motion

Motion is quick and quiet: controls answer in 100ms, nothing in the UI runs past 300ms, and marketing reveals get 500ms. Everything honours prefers-reduced-motion. Reference the token, never the literal; values mirror app/globals.css.

--duration-instant100msControls: hover, press
--duration-fast150msSmall UI: chips, toggles
--duration-base200msDefault UI transitions
--duration-slow300msOverlays, dropdowns: UI ceiling
--duration-reveal500msMarketing reveals on scroll
--ease-outcubic-bezier(0.23, 1, 0.32, 1)Everything entering or responding
--ease-in-outcubic-bezier(0.77, 0, 0.175, 1)Movement within the page

Product names

Products are set in the brand family as plain names. There is no per-product mark. Each carries a blueprint glyph in nav, the home overview, and the footer, which is the only product-level visual today.

Infinite Accounts

Managed global accounts

  • Bank Accounts
  • Wallet Accounts
  • First Party
  • Third Party
  • Transfer Routes

Infinite Pay

Move money on every rail

  • Orchestration
  • Links
  • Invoicing

Infinite Agents

Managed compliance AI

  • Agentic Payments
  • Compliance AI
  • Embedded Compliance
  • Compliance deployment