SendFleet Brand System — v2.0

The identity of
zero-friction
email.

SendFleet is a transactional email API for developers who want email to work — not to become a project. Our brand reflects that: direct, confident, technically precise, and never cold.

SendFleetBrand name
#f5a623Primary accent
Syne 800Display font
#0a0a0aBackground
v2.0Guidelines


02 — Logomark anatomy

Every element has purpose

The mark is a refined envelope — stripped of decoration and sharpened for clarity. The amber square container signals brand; the dark envelope inside is the utility.

Amber square container — rx:40 at 200px base, scales proportionally
Envelope body — dark filled rect with 7px radius; the core mail metaphor
V-fold stroke — amber chevron showing the sealed envelope top
Corner flap seams — two diagonal amber strokes grounding the form
Clipping mask — all inner strokes are strictly clipped to the body rect
Amber on dark / dark on amber — two-tone system creates depth

/* Logomark colour constants — never alter */

--logo-container: #f5a623; /* amber square */

--logo-envelope: #0a0a0a; /* envelope fill */

--logo-strokes: #f5a623; /* fold & seam strokes */


/* Base SVG viewBox — always 200×200 */

envelope-body: x28 y46 w144 h108 rx7

v-fold: M28,46 L100,92 L172,46

left-seam: M28,154 L68,108

right-seam: M172,154 L132,108


03 — Clearspace & sizing

Give the logo room to breathe

The minimum clearspace on all sides of the wordmark equals the height of the logomark (X). Never crowd the mark against other elements, text, or the edge of a container.

SendFleet
X clearspace X clearspace
Context Min. wordmark width Mark-only min.
Digital (screen) 120px 16px
Print 30mm 8mm
Favicon / App icon Mark only 16px
Social avatar Mark only 400px recommended

04 — Logo misuse

What never to do

These rules protect the integrity and legibility of the SendFleet identity across every surface and context. Each violation weakens brand recognition.

SendFleet
SendFleet
SendFleet

05 — Color palette

Dark, precise, amber-lit

Our palette is built on deep near-black backgrounds with a warm amber accent. Keep 80% of every layout in the dark palette. Click any swatch to copy its hex value.

Export as:

Core palette — click to copy

Amber
#f5a623
Primary accent · CTAs · "Fleet" logotype
Obsidian
#0a0a0a
Page background · Logomark fill
Parchment
#f0ede8
Primary text · Headlines
Void
#111111
Surface L1 · Cards · Sidebar
Shade
#181818
Surface L2 · Inputs · Code blocks
Dust
#8a8480
Secondary text · Labels · Placeholders
Mint
#22c55e
Sent · Success · Active badge
Ember
#ef4444
Failed · Error · Revoked badge
Cobalt
#60a5fa
Info · Notice · Alert states

Amber ramp — click any stop to copy hex

accent-bg6%
hover-bg10%
border20%
dim35%
mid50%
dark#7a5112
hover#e8961a
base ★#f5a623
light#f7ba58
pale#fad08a
ghost#fde8bf

Contrast ratios

Amber on Obsidian Body text sample — WCAG check
Amber #f5a623 / Obsidian #0a0a0a
8.7:1 AAA
Dark on Amber Button label text
Obsidian #0a0a0a / Amber #f5a623
8.7:1 AAA
Parchment on Obsidian Primary body text
Parchment #f0ede8 / Obsidian #0a0a0a
19.3:1 AAA
Dust on Void Secondary labels
Dust #8a8480 / Void #111111
3.7:1 AA-only
Do
  • Use amber for primary actions and brand moments only
  • Keep 80% of every layout in the dark palette
  • Use semantic colours (green/red) strictly for status
  • Use alpha values from the amber ramp for backgrounds
Don't
  • Use amber for decorative elements without purpose
  • Mix warm amber with cool blue as co-accents
  • Use green or red outside status/feedback contexts
  • Place light text directly on the amber base colour

06 — Typography

Three fonts, three jobs

Syne carries authority and display weight. Instrument Sans handles everything readable. JetBrains Mono is strictly for code, API keys, and developer-facing copy. Never swap these roles.

Display — Syne
Aa
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
Weights: 400 · 500 · 600 · 700 · 800
Use: H1 · H2 · H3 · Logotype
Range: 18px → 80px
Body — Instrument Sans
Aa
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
Weights: 400 · 500 · 600
Use: Body · Labels · UI text
Range: 12px → 18px
Code — JetBrains Mono
Aa
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 !@#$%^&*()
Weights: 300 · 400 · 500
Use: Code · API keys · Badges
Range: 10px → 14px
Display / H1Syne 80076px / lh 0.97ls −0.03em
Zero friction.
H2Syne 80040px / lh 1.1ls −0.02em
One endpoint. That's it.
H3Syne 70022px / lh 1.2
Background delivery, zero blocking
Body largeInstrument Sans 40017px / lh 1.75
SendFleet is deliberately minimal. No drag-and-drop editors, no SDKs to install. Just a clean API that delivers email and gets out of your way.
BodyInstrument Sans 40015px / lh 1.65
API keys are hashed with SHA-512; the prefix is used for fast lookup. Sending is async — the API returns within 50ms.
Eyebrow / LabelJetBrains Mono 40010.5px / ls 0.13em / UPPERCASE
— 05 — Color palette
Inline codeJetBrains Mono 40013px / colour: amber
Send with the X-API-Key header, a valid prefix.secret value, and a JSON body.

07 — Grid & spacing

The 8pt grid

All layout decisions snap to an 8pt baseline grid. Content lives in a 1400px max-width container with 24px gutters on mobile and 64px on desktop. Click any spacing row to copy the value.

12-column grid — 1400px max

← 4 col / 4 col gap / 4 col →

sp-1 (base)
8pxIcon gaps, tight list items
sp-2
16pxLabel-to-input, badge padding
sp-3
24pxCard padding, section gaps
sp-4
32pxCard inner padding (large)
sp-6
48pxSection vertical spacing
sp-8
64pxPage section padding
sp-10
80pxHero sections, major breaks
6px--r
10px--rl
16px--rxl
99pxpill

08 — Motion

Fast, purposeful, subtle

Motion reinforces SendFleet's promise of speed. Transitions are short, easing is smooth. We animate to communicate state change — never for decoration. Hover the boxes below.

Micro interaction
150ms ease
UI feedback
200ms ease
Page element
400ms spring
Delight / Bounce
600ms overshoot
Morph
150ms shape

/* Motion tokens */

--duration-micro: 150ms; /* hover, focus ring, button press */

--duration-ui: 200ms; /* dropdown, modal open, tab switch */

--duration-page: 400ms; /* page reveal, hero entrance */

--ease-std: ease;

--ease-spring: cubic-bezier(0.22, 1, 0.36, 1);

--ease-out: cubic-bezier(0, 0, 0.2, 1)


/* Prefer reduced motion */

@media (prefers-reduced-motion: reduce) {
 * { transition-duration: 0.01ms !important; }
}


09 — Iconography

Feather-style, 2px stroke

All product icons use a consistent 2px stroke, rounded linecaps, and rounded joins on a 24×24 grid. Click any icon to copy its SVG code. Hover for download options.

API key

Webhook

Endpoint

Token

Send

Success

Error

Pending

Queued

Warning

Revoked

Mail

Inbox

Reply

Address

Navigate

Create

Copy

Download

Status

Search

Filter

Close

Ext. link

Usage

Growth

Pie chart

Log table

Clock

Shield

Info

Refresh

Dashboard

Terminal

Preview

Recipients

/* Icon sizing standards */

--icon-xs: 12px; /* badge indicators */

--icon-sm: 14px; /* inline, button prefix */

--icon-md: 16px; /* nav, card headers (default) */

--icon-lg: 20px; /* feature callouts */

--icon-xl: 24px; /* hero illustrations */


stroke-width: 2px

stroke-linecap: round

stroke-linejoin: round

fill: none /* always, unless status dot */


10 — Imagery

Code over lifestyle

SendFleet's audience is developers. Imagery should reflect their world — real terminal windows, API payloads, and live dashboards. Avoid stock photography of "people using laptops" and decorative gradients.

Code & terminals
Use screenshots of actual API calls, code editors, and terminal output. Real JSON payloads are more compelling than any illustration.
Dashboard screenshots
Product UI on dark backgrounds with real data states — sent emails, usage bars, revoked keys. Use the actual dashboard, not a mock.
Avoid these
Stock photos, purple gradients, 3D blob illustrations, blurry bokeh backgrounds. These dilute the precision and credibility of the brand.
Preferred — dark-background code screenshot

# Send a transactional email in one call

curl -X POST https://app.sendfleet.net/api/send/ \
  -H "X-API-Key: abc12345.sk_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{'
"name": "Jane",
"email": "jane@example.com",
"subject": "Welcome!",
"message": "Thanks for signing up."
'}'

→ 200 OK
"message_id": "550e8400-e29b-41d4-a716-446655440000"
"success": true
"queued_at": "2026-05-01T09:41:22Z"

11 — UI components

The component library

All interactive components follow the dark-first system. Every component has a single clear function — never add decoration that doesn't communicate something.

Primary buttons — amber fill, dark text
Secondary & danger buttons
Sent Failed Queued Info
Status badges — semantic colours only
Form inputs — amber focus ring
!Approaching monthly usage limit.
Alert — warning state
Success
API key copied to clipboard.
Toast notification
API keys
Production
abc12345••••••••
Active
Staging
xyz98765••••••••
Revoked
Card with list — primary data pattern

Sent

247

Left

253

Plan
Free
Stats bar — usage grid pattern

12 — Design tokens

CSS custom properties

All design decisions are encoded as CSS custom properties on :root. Click any row to copy the token as a CSS declaration. Never hardcode a value that exists as a token.

Token Value Usage
--bg #0a0a0a Page background
--bg-1 #111111 Cards, sidebar
--bg-2 #181818 Inputs, code, table rows
--bg-3 #222222 Hover states, scrollbar thumb
--line rgba(255,255,255,0.07) Dividers, subtle borders
--line-2 rgba(255,255,255,0.13) Input borders, emphasis
--text #f0ede8 Primary text, headings
--text-2 #8a8480 Secondary text, labels
--text-3 #555250 Tertiary, placeholders, disabled
--accent #f5a623 Primary accent — amber
--accent-dim #7a5112 Dark amber for deep backgrounds
--accent-bg rgba(245,166,35,0.08) Amber-tinted surface
--accent-border rgba(245,166,35,0.22) Amber border, callout ring
--green #22c55e Success, sent, active
--red #ef4444 Error, failed, revoked
--blue #60a5fa Info, notice
--r 6px Default border radius (buttons, tags)
--rl 10px Large radius (cards, toasts)
--rxl 16px Extra large (sections, modals)
--display "Syne", sans-serif Display font stack
--sans "Instrument Sans", sans-serif Body font stack
--mono "JetBrains Mono", monospace Code / monospaced font stack

13 — Voice & tone

Developer-first, human second

SendFleet speaks like a senior engineer who's seen enough email infrastructure to know what matters and what's noise. Confident, concise, occasionally dry. Never corporate, never filler.

Direct
Say exactly what the thing does. No qualifiers, no hedging. If the API responds in milliseconds, say "milliseconds" — not "quickly" or "near-instantly".
"One endpoint. No SDK required."
🔩
Technical, not jargon-heavy
Use precise technical language but don't gatekeep. SHA-512 is a meaningful detail; "enterprise-grade cryptography" is noise and signals you don't trust the reader.
"Keys are hashed with SHA-512. We can't read them."
🎯
Honest
When something has a limitation, say it. "The full secret is shown once" is clearer and more trustworthy than any euphemism about security policy.
"If you lose it, generate a new one. The old key can be revoked."
🧊
Calm under pressure
Error messages and rate limits should be informative, not alarming. A calm, informative tone builds trust precisely when things go wrong.
"You've used 87% of your monthly limit. Upgrade anytime."

Before and after

✕ Don't
Our cutting-edge, enterprise-grade email delivery solution leverages best-in-class technology to ensure your mission-critical communications are delivered with unparalleled reliability.
→ Do
One endpoint. JSON payload. Email delivered. That's it.
✕ Don't
Oops! Something went wrong on our end. We're super sorry! Please try again later or reach out to our amazing support team!
→ Do
Request failed. Check your API key and try again. If the issue persists, email support@sendfleet.net.
✕ Don't
We take your security incredibly seriously and have implemented industry-leading measures to keep your data safe and sound.
→ Do
We store a SHA-512 hash of your key. The full secret is never saved. Lose it — generate a new one.

14 — Naming & terminology

Consistent vocabulary

Using consistent terms across UI, docs, and marketing prevents confusion and reinforces identity. Click any row to copy the correct term.

Use this Not this Notes
SendFleet Sendfleet / sendfleet / SF Always title-case, always one word
API key api key / apikey / token Two words, uppercase API
prefix key prefix / lookup token The 8-char public identifier, always lowercase
secret key private key / full key / password The full prefix.secret string shown once
revoke delete / disable / invalidate Permanent action — use the precise term
email log message log / email history The pageable record of all sent emails
send endpoint mail API / sending route POST /api/send/ — singular, no version prefix in casual copy
queued pending / in progress / processing Intermediate delivery state before Celery picks up
Starter / Growth / Enterprise Free / Pro / Business Official plan names, always capitalised
dashboard portal / console / admin The authenticated web UI at app.sendfleet.net
On abbreviations: Use "SF" only as the two-letter monogram inside the 28px nav mark. Never abbreviate "SendFleet" to "SF" in prose, docs, or marketing copy. In code, variable and package names may freely use the sf prefix (e.g. sfApiKey, sfClient, sf_send).