Brand
Guide.
Version 1.0 Updated May 2026 Fonts League Spartan · Figtree Token source brand/design-tokens.css
Identity

Logo assets

Use the full logo for headers and marketing lockups. The icon for compact UI placement. Three colorways cover all surfaces.

Texttree gradient logo
Full logo · Gradient (updated)
textree-logo-icon-radial.svg
Texttree dark logo
Full logo · Dark ink
textree-logo-full-dark.svg
Texttree light logo
Full logo · White
textree-logo-full-light.svg
Icon · Green gradient
textree-icon-gradient.svg
Icon · Dark ink
textree-icon-dark.svg
Icon · White
textree-icon-light.svg
Do
  • Use gradient logo on white or warm-white backgrounds
  • Use dark logo on light grey / warm surfaces
  • Use white logo on brand blue or dark backgrounds
  • Give the logo clear space equal to the icon width on all sides
  • Use the icon alone when the wordmark is too wide for the space
Don't
  • Place the logo on busy photography or patterned backgrounds
  • Recolor, stretch, rotate, or apply drop shadows
  • Use the gradient logo on blue or dark backgrounds
  • Use the white logo on white or light surfaces
  • Add a tagline to the lockup without explicit approval
Color

Color palette

Green leads brand and marketing. Blue leads developer surfaces. One saturated color per region — never two filled saturated CTAs at equal weight.

Brand green · marketing primary
lighter
#C7E8D7
light
#4FB983
base ★
#269D61
dark
#1F7A4D
darker
#155235
Action blue · developer primary
lighter
#D4E7FF
light
#3C90FF
base ★
#214DFF
dark
#1A3ECC
darker
#0D2687
Orange · warm accent, never text
lighter
#FFD3AD
light
#FF8E29
base ★
#FF7718
dark
#F95616
darker
#D3450D
Neutrals · ink + paper
page bg
#F9F8F7
border
#E5E5E5
muted
#8E8E8E
secondary
#595959
ink ★
#303030
action / primary
Filled green CTA. One per view.
action / secondary
Outlined blue. 1.5px border.
accent / warm
Emphasis only. Never for text.
status / success
Green — stays on-brand.
status / info
Blue — matches secondary accent.
status / error
Red — status only, never brand.

One saturated color per region.

Green leads on brand surfaces. Blue leads on developer surfaces. They don't compete at the same weight.

  • Primary CTAs are always filled green — one per page region.
  • Secondary CTAs use blue as outline + text only — never a filled blue next to a filled green.
  • Orange is reserved for the test-mode indicator and warmth accents. Never body text.
  • Red is status-only. It never appears as a brand color on marketing surfaces.
Typography

Type system

League Spartan for display and headings — tight, authoritative. Figtree for body and UI — warm, readable. System mono for code.

Display — League Spartan
AaBbCc
0123456789
Regular 400 Medium 500 Bold 700 Black 800
Body — Figtree
AaBbCc
0123456789
Light 300 Regular 400 Semi 600 Bold 700 Italic
Display XL League Spartan 700
72px / 0.92 lh
-0.05em
Send.
H1 League Spartan 700
48px / 0.96 lh
-0.04em
Instant SMS for AI agents.
H2 League Spartan 700
40px / 1.0 lh
-0.04em
Reliable SMS execution.
H3 League Spartan 700
32px / 1.05 lh
-0.02em
Spend controls by default.
H4 League Spartan 700
24px / 1.15 lh
-0.01em
Webhooks are verified and replayable.
Eyebrow League Spartan 700
11px / 1.4 lh
+0.16em uppercase
Product section label
Body Figtree 400
17px / 1.65 lh
0 tracking
Provider webhooks are verified, normalized, deduplicated, and replayable. Workspace and campaign suppressions gate outbound paths before any provider call is made.
Body SM Figtree 400
14px / 1.6 lh
Send rate, delivery health, and what to set up next. Use in table rows, metadata, and secondary descriptions.
Mono System mono stack
13px / 1.65 lh
No webfont
curl https://api.texttree.ai/api/v1/messages \
-H "Authorization: Bearer $TEXTREE_KEY" \
-d "phone_number=+15551234567"
Geometry

Spacing & radii

8px grid. All layout uses --space-1 (8px) and up. Sub-pixel tokens reserved for hairlines and focus rings only.

Spacing scale
--space-px
1px
--space-h
4px
--space-1
8px
--space-2
16px
--space-3
24px
--space-4
32px
--space-5
40px
--space-6
48px
--space-8
64px
--space-10
80px
--space-12
96px
Shadows · borders carry the system
Flat
Hairline border
Most UI cards
XS
0 1px 2px
Inline lifts
MD
Menus, popovers
LG
Modals, drawers
Border radii
sm
8px · inputs
md
12px · buttons
lg
16px · cards
xl
24px · modals
full
999px · pills
Components

UI primitives

Flat, border-led cards. Green primary CTA. Blue outlined secondary. Status always text + color.

Buttons
Hover shifts fill to next-darker step — no opacity changes.
Status badges · text + color, never color alone
Queued Sending Delivered Failed Voided
Labels are sentence case: "Delivered" not "DELIVERED". Never use color as the only signal.
Form inputs · 1.5px borders
Focus ring: 3px blue at 14% alpha.
Metric cards
Messages sent
1,284
+18% vs prev 7 days
Delivery rate
97.8%
−0.4% last 7 days
Code blocks · dark surface, monospace, copy action
curl Copy
curl https://api.texttree.ai/api/v1/messages \
  -H "Authorization: Bearer $TEXTREE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phone_number": "+15551234567", "body": "Hello from Texttree"}'
Language label uppercase mono. Dark background #262626. Code tabs order: curl → JS → Python → Elixir.
Voice & tone

How Texttree writes

Plain, declarative, infrastructural. Reads like a careful engineer wrote it — because one did.

Direct

Verbs first, always.

Every CTA and list item opens with a verb. "Send", "Inspect", "Configure", "Replay". No "Get started" or "Learn more".

Honest

Ship what you describe.

Docs and in-app strings match the API contract that ships. Vision-led copy is for marketing. Docs don't describe future product.

Never

No exclamation marks. Period.

No emoji in product surfaces. No "seamless", "robust", "next-gen", "world-class". No breathless hype. No warm marketing `we`.

Safety-led

Guardrails are features.

"Suppression", "opt-out", "spend limit", "replayable" appear in product copy intentionally — they communicate trust, not restriction.

Sentence case

Only acronyms get caps.

All headings, nav labels, and button labels in sentence case: "Send SMS", "View docs", "API reference". SMS, API, JSON stay uppercase.

Infrastructure voice

Copy that survives a code review.

If you wouldn't write it in a commit message, don't put it in the UI. Operator-first framing; no consumer-product language.

Canonical brand voice — from the bootstrap launch post
"The point is not to finish the product in one pass. The point is to make it hard to accidentally build the wrong one."
Use these words
send deliver inspect replay queue suppression opt-out spend operator workspace provider event test mode live mode guardrail replayable
Avoid these words
seamless unlock empower journey robust world-class next-gen solution leverage streamline cutting-edge game-changer
Iconography · Heroicons outline

All product icons come from Heroicons (outline, 1.5px stroke). No custom icon set, no emoji in product surfaces. 16px inline, 20px nav & toolbar, 24px standalone.

home
paper-airplane
chat-bubble
bolt
key
shield-check
user-group
magnifying
check
x-mark
plus
arrow-trending