The Infinite brand system
BrandThe 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.
reference/tools/build-brand-kit.mjs.Or take a single file:
- mark.svgcurrentColor · no margin
- lockup.svg551×151
- wordmark.svg362×100
- badge.svgink disc
- icon-cropped-ink.svgtight · ink
- icon-cropped-white.svgtight · white
- icon-padded-ink.svgpadded · ink
- icon-padded-white.svgpadded · white
- favicon-light.svgmint square
- favicon-dark.svgink square
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 fillsDark bands
--bg-surface-inverse#0b0d0cInverse sections--bg-panel-dark#0d0f0ePanels on dark--bg-node-dark#131615Nodes, chips on dark--border-hairline-inverse#242927Hairlines on darkText
--text-primary#101413Headings, body--text-secondary#4c5451Supporting copy--text-label#616c66Labels: AA on tint--text-inverse#f7f9f8Text on darkText on dark
--text-secondary-dark#b9c2beSupporting copy on dark--text-label-dark#7c8781Labels on darkAccents
--accent-green#007765Links, focus ring--accent-green-strong#005d50Hover, emphasis--cerulean#29c2ffData accent--status-error#b42318ErrorsAccents on dark
--accent-green-dark#00e6c5Accent on dark--accent-green-strong-dark#66eda8Emphasis on darkControls
--button-primary-bg#101413Primary button--button-primary-bg-hover#232827Primary hover--button-primary-bg-active#2a2f2dPrimary active--border-hairline#e3e9e6Hairlines, dividersTypography
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-displayABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
Newsreader
--font-serifABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
Geist Mono
--font-monoABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
Agent slot
--font-agentABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
.t-display1Display 1serif 400 · 36→60px · -0.01emMoney that moves like software
.t-display2Display 2500 · 36→56px · -0.012emScreened before funds move
.t-articleTitleArticle title500 · 32→44px · -0.01emIntroducing Infinite Accounts
.t-h2H2500 · 27→36px · -0.012emAccounts, payments, compliance
.t-h3H3500 · 20→24px · -0.01emBuilt for the regulated path
.t-statementStatement500 · 22→32px · -0.01emHuman-approved policy governs every outcome
.t-statementMStatement M500 · 20→24px · -0.008emDirect answers read as prose, not a wall of display type
.t-pullQuotePull quoteserif 400 · 28→36px · -0.01emCases arrive assembled, not queued
.t-slideTitleSlide title500 · 24px · -0.01em.t-cardTitleCard title500 · 20px · -0.01emManaged Account
.t-ledeLede400 · 20px · -0.005emA single API for accounts, payments, and the compliance work around them.
.t-bodyBody400 · 16pxOpen a real deposit account with its own routing number, then move balances over ACH, wire, SWIFT, or stablecoin rails.
.t-proseProse400 · 17pxA payment is screened, settled, and documented on one network, then the receiving rail takes the last mile.
.t-bodySBody small400 · 14pxSettlement windows follow the receiving rail, not the sending one.
.t-captionCaption400 · 14pxFigures are illustrative and not a quote of live pricing.
.t-statNumeralStat numeral500 · 44→56px · -0.015em · tabular$1,234.56
.t-statLabelStat label400 · 14pxSample amount, illustrative
.t-eyebrowEyebrow500 · 14pxProducts
.t-figLabelFigure label500 · 11px · +0.5px, micro-type floorORIGINATING BANK
.t-navNav500 · 14pxPlatform
.t-buttonButton500 · 14px.t-footerLinkFooter link400 · 14px · 1.7.t-footerLegalFooter legal400 · 12px.t-codeCode400 · 13pxPOST /v1/transfers
.t-agentAgent / CLImono 400 · 13px · Berkeley slotPOST /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.
.t-display1clamp(2.25rem, 1.35rem + 2.9vw, 3.75rem) / 1.08 / -0.01emReserved displayMoney that moves like software
.t-display23.5rem / 1.08 / -0.012emEvery page h1Screened before funds move
.t-articleTitleclamp(2rem, 1.62rem + 1.28vw, 2.75rem) / 1.12 / -0.01emBlog post h1Introducing Infinite Accounts
.t-h22.25rem / 1.1 / -0.012emSection headingsAccounts, payments, compliance
.t-h31.5rem / 1.2 / -0.01emSub-sectionsBuilt for the regulated path
.t-statNumeralclamp(2.75rem, 2.36rem + 1.3vw, 3.5rem) / 1.07 / -0.015emTabular amounts$1,234.56
.t-statLabel0.875rem / 1.43 / 0Captions a numeralSample amount, illustrative
.t-statementclamp(1.375rem, 1.18rem + 0.65vw, 2rem) / 1.28 / -0.01emShort marqueeHuman-approved policy governs every outcome
.t-statementMclamp(1.25rem, 1.12rem + 0.43vw, 1.5rem) / 1.4 / -0.008em40 to 70 word answersDirect answers read as prose, not a wall of display type
.t-pullQuoteclamp(1.75rem, 1.49rem + 0.87vw, 2.25rem) / 1.28 / -0.01emQuoted voiceCases arrive assembled, not queued
.t-lede1.25rem / 1.4 / -0.005emThe line under an h1 or h2A single API for accounts, payments, and the compliance work around them.
.t-prose1.0625rem / 1.53 / 0Long-form readingOpen a real deposit account with its own routing number, then move balances over ACH, wire, SWIFT, or stablecoin rails.
.t-body1rem / 1.5 / 0Scan voiceSettlement windows follow the receiving rail, not the sending one.
.t-bodyS0.875rem / 1.45 / 0Supporting scanFigures are illustrative and not a quote of live pricing.
.t-caption0.875rem / 1.45 / 0CaptionsFigures are illustrative and not a quote of live pricing.
.t-nav0.875rem / 1.43 / 0NavPlatform
.t-button0.875rem / 1.43 / 0Buttons.t-eyebrow0.875rem / 1.43 / 0Categorical section nounProducts
.t-code0.8125rem / 1.4 / 0Code samplesPOST /v1/transfers
.t-figLabel11px / 14px / 0.5pxIn-diagram chromeORIGINATING 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 defaultRaised
--bg-surface-raised#ffffffCards, panelsTint
--bg-surface-tint#eef3f0Alternating bands--bg-accent-wash#e4efeaAccent fillsBorder
--border-hairline#e3e9e6Hairlines, dividersLabel
--text-label#616c66Labels: AA on tint--text-label-dark#7c8781Labels on darkSecondary
--text-secondary#4c5451Supporting copy--text-secondary-dark#b9c2beSupporting copy on darkPrimary
--text-primary#101413Headings, body--text-inverse#f7f9f8Text on darkGround 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 darkSignal
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.
bankglobetransfersparkshielduserscodehublockpulsedocwireboltcoinsfxclockroute
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 pageProduct 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