Brand Bible  ·  Version 2.0

CarbonX.
The institutional carbon exchange.

v2.0 is a refinement, not a redesign. The deep navy, the golden-ratio grid, and the Inter / JetBrains Mono stack stay. What changes: a unified CX monogram replaces the leaf, two competing greens collapse into one teal hue family, and the PWA install experience is hardened end to end.

Issued
22 May 2026
Supersedes
v1.0 — Apr 2026
Owner
CarbonX Brand
Status
In effect
§ 01

Positioning

Who CarbonX is for and what the visual language must signal at first glance.

CarbonX is financial infrastructure for a regulated commodity — voluntary carbon credits. The audience is institutional: corporate procurement teams, commodity desks, sustainability funds, registry counterparties. Not consumer offsetters.

The closest peers visually are Sylvera, Patch, and Watershed — terminal-aesthetic, data-forward, restrained. The brands we are not are Pachama (warm/scientific/photographic), legacy NGOs (Verra, Gold Standard), or consumer-offset apps. Every design choice in this bible exists to make CarbonX read as "Bloomberg terminal for carbon", not "we plant trees."

When in doubt: choose the more institutional option. Mono over sans for data. Navy over green for surface. One restrained accent over two competing ones. Specifications and registry IDs visible everywhere, because that is what credibility looks like in this category.

§ 03

Color System

v2.0 collapses two competing greens into one teal hue family and demotes gold from CTA to status-only. Click any swatch to copy.

Surfaces · the dark navy ground
Brand · teal in two values, same hue family

Primary Teal is the institutional surface accent — body links, button fills, secondary UI affordances. Signal Teal is the bright variant reserved for the logo X mark, verified/success states, hover glow, and focus rings. Same hue (~170°), different brightness. They are not interchangeable.

Foreground
Status · semantic only, never brand

What changed from v1.0

The gold #D9A839 token was used in v1.0 as both a "premium accent CTA" and the Pending status. This created hierarchy conflicts — a buy button and a stale-trade warning rendered in nearly the same color. In v2.0, gold is status-only. The single brand accent is teal (in its two values). All CTAs use Primary Teal with Signal Teal on hover.

§ 04

Typography

Inter for display and body. JetBrains Mono for everything numeric, identifier, or specification-flavored. Use mono aggressively in product — every ticker, registry ID, vintage year, and tCO₂e quantity reinforces the institutional cue.

Inter · 800 · -0.04em
Display Hero
Institutional carbon.
Inter · 700 · -0.03em
H1 / Section
Verified offset, settled in escrow.
Inter · 600 · -0.02em
H2
Real-time pricing across registries
Inter · 500
UI label / button
Place buy order
Inter · 400
Body
Trade verified voluntary carbon credits with real-time pricing, escrow settlement, and verified registry integration. Designed for institutional buyers, project developers, and counterparties operating across VCS, Gold Standard, and Article 6 frameworks.
JetBrains Mono · 500
Ticker / data
VCS-1234   ·   24.18 USD   +1.20%
JetBrains Mono · 400
Eyebrow / metadata
REGISTRY · VERRA  ·  VINTAGE 2024  ·  METHODOLOGY VM0007

Optional: Inter Display for hero scale

Inter Display is the same family with tighter spacing optimized for 24px+. If you want a slightly sharper hero, swap headlines ≥ 28px to Inter Display. Body remains Inter. Both load via the same Google Fonts URL.

§ 05

Grid Pattern

8 × 8 px grid drawn from the foreground white, dimmed to golden-ratio opacity. Carried over from v1.0 — the single most distinctive atmospheric element in the system.

GRID · 8PX · OPACITY φ⁻¹
0.1618
GOLDEN-RATIO RECIPROCAL
/* Apply as an absolute overlay inside hero / section atmospheres */
.grid-bg {
  background-image:
    linear-gradient(to right,  hsl(var(--foreground)) 1px, transparent 1px),
    linear-gradient(to bottom, hsl(var(--foreground)) 1px, transparent 1px);
  background-size: 8px 8px;
  opacity: 0.1618;
}

/* Hero variant: radial mask so the grid fades to dark at the edges */
.grid-bg.hero-mask {
  mask-image: radial-gradient(ellipse 55% 70% at 28% 45%, black 40%, transparent 85%);
}

Use on hero sections, large CTA blocks, and dashboard backgrounds. Do not use on dense data tables or cards — the pattern competes with content. For cards, use solid --card.

§ 06

Components

Live patterns for the most common product surfaces. All examples below are rendered with the v2.0 tokens.

Buttons

Primary fills with Primary Teal; hover shifts to Signal Teal with a glow. No gold CTAs.

Status Badges
✓ VERIFIED ⌛ PENDING ✕ BLOCKED ⓘ REVIEW

Mono type, 11px, semantic color at 8% bg / 40% border.

Price Ticker
VCS-1234 $24.18 ▲ +1.20%
GS-9821 $18.62 ▼ −0.43%

Tabular-nums mono. Success teal for up-ticks, destructive for down.

Project Card
VCS · ID 1842 ✓ VERIFIED

Mai Ndombe REDD+ Forest

Democratic Republic of Congo · Vintage 2024

Price / tCO₂e
$24.18
Available
142,500

Formula display

Mono with Signal Teal for variables and white for operators. This pattern signals scientific rigor — use it on methodology pages, MRV documentation, and project deep-dives.

ΔC_forest = (AGBC + BGBC + DOM + SOC) × CF
Baseline (BSL) = 3.847 tCO₂e ha⁻¹ yr⁻¹ ± 0.23 (95% CI)
AGBC = a × DBHb × exp(c × H)     Chave et al.
Leakage factor per VCS §3.7.5 · Woodchopping displacement, biogenic correction
§ 07

PWA Specification

What it takes to make CarbonX install cleanly on iOS, Android, and desktop — and look intentional doing it.

Theme color — fix the inconsistency

v1.0 shipped <meta name="theme-color" content="#0a0a0a"> but the brand background is #091221. This affects the iOS status bar tint and PWA splash. In v2.0, every PWA-relevant color resolves to #091221.

<!-- Place in <head> -->
<meta name="theme-color" content="#091221">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="CarbonX">
<link rel="manifest" href="/manifest.webmanifest">
<link rel="icon" type="image/svg+xml" href="/icons/icon.svg">
<link rel="apple-touch-icon" sizes="180x180" href="/icons/apple-touch-icon-180.png">

Icon set

Required PNG outputs from the CX monogram

icon-32.png32 × 32 — favicon fallback
icon-192.png192 × 192 — Android home
icon-512.png512 × 512 — splash + store
icon-maskable-192.png192 — 10% safe padding
icon-maskable-512.png512 — 10% safe padding
icon-monochrome-512.pngWhite-on-transparent
apple-touch-icon-180.png180 — iOS home screen

Master source: /icons/icon.svg (the CX monogram in this bible). Maskable variants must inset 10% on all sides so Android's adaptive icon cropping doesn't clip the C or X.

iOS splash screens

Apple does not auto-generate these. Each device size needs an explicit apple-touch-startup-image link. Without them, the launch flashes white before the dark UI loads.

Generate from the CX monogram on a #091221 ground at minimum these sizes:

  • iPhone 15/16 Pro Max — 1290 × 2796
  • iPhone 15/16 Pro — 1179 × 2556
  • iPhone 15/16 — 1170 × 2532
  • iPad Pro 13" — 2048 × 2732

Batch with Progressier or any PWA-asset generator.

App shortcuts

Long-press on the installed icon should expose power-user shortcuts. Three is the sweet spot — more clutters the menu.

// excerpt from /manifest.webmanifest
{
  "name": "CarbonX – Voluntary Carbon Credits Trading",
  "short_name": "CarbonX",
  "theme_color": "#091221",
  "background_color": "#091221",
  "display": "standalone",
  "shortcuts": [
    { "name": "Market",      "url": "/market"      },
    { "name": "Portfolio",   "url": "/portfolio"   },
    { "name": "Settlements", "url": "/settlements" }
  ]
}

The full manifest is shipped as a sibling file alongside this bible. After deploy, audit Lighthouse PWA (target ≥ 95) and verify the Android manifest preview in Chrome DevTools shows the maskable icon correctly framed.

§ 08

Lovable Implementation

One copy-paste prompt that updates the entire CarbonX codebase to v2.0 — tokens, components, logos, manifest, head tags. The full prompt ships as lovable-prompt.md; the essential excerpts are below.

Token block for globals.css

:root {
  /* Surfaces */
  --background:  218 50% 7%;
  --card:        216 42% 11%;
  --popover:     216 40% 13%;
  --sidebar:     218 48% 8%;
  --border:      216 28% 16%;

  /* Brand — teal in two values */
  --primary:     174 50% 42%;  /* #36A99E */
  --signal:      170 58% 53%;  /* #3FCBB7 */
  --ring:        170 58% 53%;

  /* Foreground */
  --foreground:  210 18% 93%;
  --muted-fg:    210 12% 48%;

  /* Status (semantic only) */
  --success:     160 45% 42%;
  --warning:     40 65% 52%;   /* demoted from CTA gold */
  --destructive: 0 55% 48%;
  --info:        210 55% 52%;

  --radius: 0.625rem;
}

LogoMark React component

// /components/brand/LogoMark.tsx
export function LogoMark({ size = 40, className = "" }) {
  return (
    <svg viewBox="0 0 512 512" width={size} height={size} className={className} aria-label="CarbonX">
      <rect width="512" height="512" rx="96" fill="hsl(var(--background))"/>
      <path d="M 222 184 A 92 92 0 1 0 222 328"
            fill="none" stroke="hsl(var(--foreground))"
            strokeWidth="50" strokeLinecap="round"/>
      <g stroke="hsl(var(--signal))" strokeWidth="50" strokeLinecap="round">
        <line x1="312" y1="184" x2="442" y2="328"/>
        <line x1="442" y1="184" x2="312" y2="328"/>
      </g>
    </svg>
  );
}

Workflow

  1. Open the CarbonX project in Lovable.
  2. Paste the full prompt from lovable-prompt.md in one shot — Lovable handles consolidated brand refreshes more cleanly than incremental edits.
  3. Generate the icon PNG set from carbonx-logo-mark.svg using any vector tool (Figma, Sketch, or the Progressier batch generator). Upload to /public/icons/.
  4. Generate iOS splash screens (same source SVG, navy #091221 ground). Upload to /public/splash/.
  5. Drop manifest.webmanifest into /public/.
  6. Deploy. Audit Lighthouse → PWA score should be ≥ 95.
§ 09

Voice & Press

How CarbonX speaks in marketing, product, and press. Short version: like an exchange operator, not a sustainability NGO.

Default register

Direct, technical, evidence-led. Mention registries, methodologies, vintages, and settlement mechanics by name. Numbers over adjectives. Assume the reader is a sophisticated buyer — they know what a tCO₂e is and they want to know who verified it.

What to avoid

Generic climate-positive language ("save the planet", "every credit makes a difference"), nature stock photography, leaf metaphors, founder-led activism tone. The category is full of this and it reads as low-rigor. CarbonX's edge is institutional credibility — voice should reinforce that.

One-liner

"Trade verified voluntary carbon credits with real-time pricing, escrow settlement, and institutional-grade compliance."

Lock the words "verified", "escrow", and "institutional-grade" — they do the heavy positioning lifting in one sentence.

copied to clipboard