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
One family, differentiated by weight, size, and tracking. Geist Sans carries brand, display, eyebrows, and stats; Geist Mono carries figure labels and code.
Geist Sans
--font-brand, --font-displayABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
Geist Mono
--font-monoABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
.t-display1Display 1500 · 42→78px · -0.035emMoney that moves like software
.t-display2Display 2500 · 36→60px · -0.03emScreened before funds move
.t-articleTitleArticle title500 · 32→44px · -0.025emIntroducing Infinite Accounts
.t-h2H2500 · 36→56px · -0.028emAccounts, payments, compliance
.t-h3H3500 · 24→28px · -0.015emBuilt for the regulated path
.t-statementStatement500 · 28→40px · -0.02emHuman-approved policy governs every outcome
.t-statementMStatement M500 · 22→28px · -0.015emDirect answers read as prose, not a wall of display type
.t-pullQuotePull quote500 · 28→36px · -0.02emCases arrive assembled, not queued
.t-slideTitleSlide title500 · 24px · -0.015em.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-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.025em · 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
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
- Accounts
- Wallet Account
- First Party
- Third Party
Infinite Pay
Move money on every rail
- Payouts
- Payins
- Links
- Invoicing
- SWIFT Payments
- USD Payments
- Stablecoin Payments
- Foreign Exchange
- Transfer Routes
Infinite Agents
The managed compliance AI
- Agentic Payments
- Compliance AI
- Embedded Compliance
- Managed Compliance