/ Brand Kit
Internal · v2026.08
Download for AI brand-kit.md
Brand Kit
Everything we use to keep our identity coherent — logo, brand colors, typography. Built for internal use across decks, marketing, partner-facing surfaces, and anywhere the Vela name shows up.
Logo system Brand color Typography Owner: Robert Salesas, CTO
01 · Identity

Logo System

Our identity is one SVG: logo-vela-intelligence.svg — the star and the wordmark locked together as a single file. The wordmark carries specific kerning, optical sizing, and forced uppercase that can only be preserved by using the vector file. Treat it as one unit. The icon-only star exists only as a fallback for square contexts (favicons, avatars).

Primary mark · use this everywhere logos/primary/logo-vela-intelligence.svg · 2272 × 307 · currentColor
Brand rule. The star and the wordmark "VELA INTELLIGENCE" must always appear together. Never re-typeset the name — the wordmark has its own spacing, weight, and all-caps treatment that the SVG preserves. Never crop the star away. Never substitute Montserrat or any other font for the wordmark.

The primary lockup on backgrounds

Same SVG, four contexts. The lockup is colored by currentColor — the surface chooses, the mark adapts.

Black on canvas
Default · highest contrast
White on brand
Hero · slide title pages
White on dark
Dark UI · video · broadcast
White on accent
Sparingly · campaign highlight

Alternate lockups

For contexts where the horizontal lockup doesn't fit — narrow columns, square avatars with the wordmark beneath, headers where only the name needs to appear. Each is shipped as its own SVG with the same locked spacing and all-caps wordmark as the primary lockup. Use these instead of the primary, never combined with it.

Star + VELA · stacked
logos/stacked/logo-vela.svg · 256 × 381 · narrow & square contexts
VELA · wordmark only
logos/wordmark/vela-intelligence-vela-wordmark.svg · 2498 × 700
SVG
VELA INTELLIGENCE · wordmark only
logos/wordmark/vela-intelligence-wordmark.svg · 9423 × 724
NOTE
The brand rule still applies: the wordmark in any lockup is the SVG — never re-typeset, always all-caps, always with its locked spacing. Picking an alternate lockup is a layout decision; the wordmark itself never changes.

Icon-only fallback

The star may appear alone only when the surface is square and too small to read the wordmark — favicons, profile avatars, app icons, social chips at < 32 px. Anywhere larger, use the full lockup.

Star · icon-only
≤ 32 px contexts only
Star · on brand
App icon · loading state
Star · on dark
Dark favicon
Star · brand tint
UI accents only

Usage

Do
  • Always use the full lockup SVG (logo-vela-intelligence.svg) whenever there is room for the wordmark to be read.
  • Keep the star and "VELA INTELLIGENCE" together as one unit — they ship as one SVG for a reason.
  • Preserve minimum clear space equal to the height of one star-point (≈ 25% of the lockup height) on all sides.
  • Render the file in currentColor when embedded in product code, so theme switches "just work" between light and dark mode.
  • Pair the white-on-brand variant with the primary 600/700 shades — not the lighter 50–300 shades.
Don't
  • Don't separate the star from the wordmark — they belong together. The star alone is only for square contexts under 32 px.
  • Don't re-typeset "Vela Intelligence" in Montserrat or any other font. The wordmark has its own kerning and forced uppercase — use the SVG.
  • Don't change the case — the wordmark is always all-caps. No "Vela Intelligence" in mixed-case as a graphic.
  • Don't change the spacing between the star and the wordmark, or rearrange them vertically as a custom stack.
  • Don't recolor the star and wordmark independently — they are one mark, one color.
  • Don't rotate, skew, outline, or stretch the lockup. Don't add drop shadows beyond the brand-supplied hero treatment.
02 · Color

Color Palette

Three primary families — Brand Primary, Brand Secondary, Brand Accent — plus two tertiary families: Slate (cool gray for text) and Gold (warm contrast). Each ramps across 11 shades. The canonical brand shades in practice are Brand Primary 900 (the dark canvas), Brand Secondary 600 (voice / trust), and Brand Accent 400 (action / CTA) — that last one is intentionally lighter than the 600 default because Brand Accent at 600 reads as muddy, and the brand needs its accent bright. Hover any swatch and pick T to copy the CSS-variable token (e.g. --brand-primary-600), H for hex, O for the oklch() value — ready to paste into CSS or HTML.

Brand Primary · Brand Primary
hue 260 · light · default
Brand Secondary · Brand Secondary
hue 163 · supports, signal-of-trust
Brand Accent · Brand Accent
hue 50 · highlights · canonical at 400

Tertiary palettes

Two supporting families for roles the primary brand colors don't carry alone. They fill specific functional jobs — they don't compete with Brand Primary/Brand Secondary/Brand Accent for brand expression. Surfaces and borders are not in here: they use Brand Primary 800–950 directly, because the brand canvas IS Brand Primary.

Tertiary · Slate
hue 240 · text on dark · cool gray
Tertiary · Gold
hue 85 · warm contrast · used sparingly
Tertiary · Paper
hue 85 · warm neutral surfaces · print & slides · canonical at 50

Paper is the counterpart to Slate. Slate is the cool neutral — Brand Primary's side of the wheel with the chroma pulled out, carrying text on the dark canvas. Paper is the warm neutral — Gold's hue with the chroma pulled out, carrying surfaces in the contexts that get read rather than presented on a screen. It stops at 300 deliberately: it is a surface family, not a colour family, and anything darker would just be a warm black that Brand Primary 950 already does better.

Slate 50 · #F2F6F8
Cool, blue-cast. Reads as screen.
Paper 50 · #F8F5EE
Warm, neutral. Reads as page.
Gold 50 · #FFF4DE
Cream, clearly yellow. A statement.
Paper · use for
  • Paper 25 — a raised surface above the canvas: cards, callouts, pull-quotes. On paper, raised means lighter, not darker.
  • Paper 50 — the canvas itself. Document pages and deck content slides.
  • Paper 100 — a recessed band: table stripes, sidebars, code blocks.
  • Paper 200 — hairlines, rules, table borders.
  • Paper 300 — the warm rest ground: section breaks, the sand slide in a deck cadence.
Paper · never
  • As a data-series colour, a text colour, or an accent. Paper is a ground — it has no voice.
  • Behind a chart at Paper 300. The warm rest ground drops the series palette to 2.7–3.2 contrast and it fails. Data goes on Paper 50 or 25.
  • With Slate 500 as muted text — it measures 4.4 on Paper 50 and misses AA. Step to Slate 600.
  • With Brand Accent 400 as type — 3.4 on Paper 50, fails. Accent 600 for text; 400 stays a fill.
Foreground on Paper 50 Ratio Verdict
Brand Primary 900 — the default type colour on paper14.4AAA
Slate 700 — secondary copy9.5AAA
Brand Secondary 700 — accent text8.9AAA
Brand Accent 600 — emphasis, the paper CTA7.3AAA
Slate 600 — muted copy, metadata6.8AA
Slate 5004.4fails AA — use Slate 600
Brand Accent 4003.4fails AA as text — fill only
Slate · use for
  • Slate 50 — primary body text on the dark navy canvas (near-white with a cool cast). Replaces a generic #F4F4F4 off-white.
  • Slate 200 — secondary text. Subheadings, descriptions under headlines, less-prominent paragraphs.
  • Slate 400 — tertiary text. Captions, metadata, timestamps ("Updated 2h ago"), source citations, helper text under form fields, disabled-state labels.
  • Slate 700–950 — extremely rare; used only when an element specifically needs a desaturated dark variant the Brand Primary ramp can't supply.
Gold · use for
  • Gold 100–200 — warm contrast slide backgrounds in formal pitch decks. The sand-coloured rest from the navy → green cadence.
  • Gold 300–500 — the "Social" pillar dot in ESG contexts, and similar single-purpose semantic markers.
  • Never as a brand voice or CTA color — Gold supports a moment of warmth, then steps back.

Status tones

Four tones — Info, Success, Warning, Danger — for client-facing demos, pitch slides, roadmap labels, diagram pips ("live / planned / deprecated"), status pages, release notes. They share hue, peak chroma, and the same Gaussian curve as the in-product design system's status tokens, so anything that moves between a brand surface and the console reads as the same colour family.

Boundary — this is not a replacement for the design system's full status-token matrix (hover, border, light-fill, dark-fill, surface-adaptive variants). For interactive UI — alerts, toasts, badges, table-row status — pull from @vela/ds-tokens directly. The brand kit gives you one canonical shade per tone for non-interactive use, plus the full ramp for diagrams and charts.

Danger vs Brand Accent 600 — Brand Accent 600 (#873D00) remains the brand-side default for "danger / urgent" (see §4.2). The Danger ramp below exists so the four tones live as a coherent set, and for the rare demo where a vivid red is genuinely required (e.g. a "critical risk" pip where Brand Accent's burnt-orange reads as warning not stop).

The marked default (●) is the canonical step on the dark navy canvas — Info 400, Success 400, Warning 300, Danger 400. On light surfaces, step one down (Info 500, Success 600, Warning 400, Danger 600). Warning sits a step lighter than the others because yellow at L ≤ 0.55 reads as olive / muddy.

Status · Info
hue 255 · neutral information · canonical at 400 (dark) / 500 (light)
Status · Success
hue 150 · healthy / done · canonical at 400 (dark) / 600 (light)
Status · Warning
hue 55 · caution / needs attention · canonical at 300 (dark) / 400 (light) — yellow needs lifting
Status · Danger
hue 27 · critical / blocked · canonical at 400 (dark) / 600 (light) — default to Brand Accent 600 in most brand contexts
03 · Typography

Typography

Three type families. Manrope carries the headings and the numbers we want to feel confident. Inter handles everything that needs to read like a sentence. JetBrains Mono does the specific monospace work — eyebrows, code, token names, hex values, metadata.

Manrope Display & headings
Download Manrope.zip
AaBb
a‑z A‑Z 0‑9 · — ‘ ’ “ ” ( ) [ ] { } & @ # $ %
SemiBold
600 · subheads, labels
Bold
700 · default heading
ExtraBold
800 · hero, metric value
Inter Body, UI, captions
Download Inter.zip
AaBb
a‑z A‑Z 0‑9 · — ‘ ’ “ ” ( ) [ ] { } & @ # $ %
Light
300 · long-form fallback
Regular
400 · body default
Medium
500 · emphasis
SemiBold
600 · labels, strong
JetBrains Mono Code · eyebrows · tokens
Download JetBrains_Mono.zip
Aa01
a‑z A‑Z 0‑9 · < > { } [ ] ( ) / \ # @ & %
Regular
400 · code, hex, oklch
Medium
500 · token names
SemiBold
600 · uppercase eyebrows

Getting the fonts

All three families are SIL Open Font License and ship inside this repository — nothing to buy, nothing to sign. There are three ways to load them. Pick by what you're making; never mix two in one document.

What you're making How to load the fonts
A page or artifact served from this repo styles/fonts/vela-fonts.css — self-hosted, no network, exact TTFs the brand is specified against. Preferred.
A standalone HTML file that gets hosted elsewhere or emailed around packages/vela-tokens/vela-fonts-remote.css — all three families from Google Fonts in a single @import.
A PDF, Keynote, Word doc, Figma file — anything native Install onto the machine. CSS can't help you here — the app renders against the system font library. See below.

Installing onto a Mac

From the repository root:

./scripts/install-fonts.sh

Copies five variable TTFs into ~/Library/Fonts. Per-user — no sudo, no password, nothing outside your home folder is touched. Safe to run again any time: identical files are skipped, changed files are replaced, and older hand-installed duplicates are retired only when the bytes prove they're redundant. Run ./scripts/install-fonts.sh --check to see the status without changing anything.

Verify it worked
  • Open Font Book. You should see Manrope, Inter and JetBrains Mono — one entry each, no duplicates.
  • Quit and reopen any app that was already running. Most macOS apps only scan the font library at launch, so a font installed mid-session won't show up in Keynote or Word until you restart them.
No terminal? Install by hand
  • Open styles/fonts/files/ in Finder.
  • Select the five .ttf files — Manrope, Inter (×2), JetBrains Mono (×2). Ignore the .txt licence files.
  • Double-click, then click Install in Font Book.
GOTCHA
If Manrope comes out thin and wispy, the app isn't applying variable weight axes. Manrope's variable font defaults to ExtraLight (weight 200), so any tool that ignores the wght axis falls back to that instead of the Bold you asked for. Inter and JetBrains Mono both default to 400, so they degrade gracefully — Manrope is the only one that fails visibly. The fix: install the static cuts from fonts/Manrope.zipstatic/ (SemiBold 600, Bold 700, ExtraBold 800) alongside the variable file.
NOTE
A font manager is not an installer. Apps like Typeface, RightFont or FontBase index and preview fonts; whether a font is actually available to Keynote or a PDF exporter depends on it being activated into the system font library. If brand output is rendering in a fallback face, check ~/Library/Fonts first — that is the only place that matters.

Type scale

Heading 1
36 / 1.20
The shape of intelligent finance
Heading 2
24 / 1.20
The shape of intelligent finance
Heading 3
20 / 1.20
The shape of intelligent finance
Heading 4
16 / 1.20
The shape of intelligent finance
Body Lg
16 / 1.50
The shape of intelligent finance — Inter regular, comfortable reading.
Body Md
14 / 1.50
The shape of intelligent finance — Inter regular, default body size used across product surfaces.
Body Sm
13 / 1.50
The shape of intelligent finance — Inter regular, used in dense tables and side panels.
Caption
13 / 1.40
Compliance · Risk · Onboarding
Overline
12 / 1.50
Section Label
04 · Color in practice

Gradient & Color Behavior

How the brand colors actually live on a page. Observed from the marketing site: a dark navy atmosphere, two-color pairings only, and "gradient" expressed more often as a colored glow than a literal fill. The working anchors below (navy, green, orange, sand) are pulled directly from the site CSS — they sit alongside the OKLCH brand palettes and are a candidate for a deeper color reconciliation pass.

A · The atmosphere

The brand's native habitat is dark navy, not white. Off-white type, green glow, orange singular CTA. Every page on the marketing site obeys this composition.

Vela Intelligence · Hero composition
From Documents
to Decisions.
Explainable intelligence for high-stakes decisions. Off-white on navy. Atmospheric green glow at opposite corners. One orange action.

B · Working anchors & roles

Every working color the brand uses, mapped to its canonical palette swatch. The hex is what currently ships; the palette name is the source of truth.

Canvas · atmosphere Brand Primary 900 · "Navy" oklch(0.260 0.087 260) · #07214D
Voice · trust · "yes" Brand Secondary 600 oklch(0.450 0.114 163) · #006842
Singular CTA Brand Accent 400 · "Orange" oklch(0.630 0.181 50) · #DB5F00
Focal · slides Brand Primary 950 · "Black" oklch(0.220 0.063 260) · #081937
Warmth · tertiary Gold 200 · "Sand" oklch(0.830 0.114 85) · #E9C26C
Text on dark · tertiary Slate 50 · "Off-white" oklch(0.970 0.005 240) · #F2F6F8
RULE
One orange per view, plenty of green, all on navy. Text uses Slate, never pure white. Surfaces and borders use Brand Primary 800–950 directly — no separate "dark surface" tertiary.

C · Pairing rules

CSS ONLY
Every gradient is a CSS function — linear-gradient(), radial-gradient(), conic-gradient(). Never a raster image (no background-image: url('gradient.png')) and never an SVG used as a page backdrop. Image-based gradients band visibly, leave hard seams where the image ends when users scroll or resize, and break on retina / ultra-wide / dark-mode. The single exception is inside SVG asset files — the Brand Secondary → Brand Accent labs gradient lives inside labs/zephlyn-icon.svg and labs/vaelth-icon.svg because those are vector icons, not page backdrops.

Gradients pair exactly two colors. There are four allowed recipes and one explicit "never".

Brand Secondary → Brand Accent
linear-gradient(135deg, Brand Secondary 400, Brand Accent 400)
Reserved for Vela Labs sub-brand only. Never on main brand surfaces.
Brand Primary 900 → 700
linear-gradient(160deg, Brand Primary 900, 800, 700)
Same-hue depth. Mood, atmosphere, slide backgrounds. Never chromatic shift.
Brand Secondary 600 → 700
linear-gradient(160deg, Brand Secondary 600, Brand Secondary 700)
Positive signal in motion. Progress bars, "pass" states, slide accents.
Color → transparent
linear-gradient(90deg, transparent, Slate 700, transparent)
Fade in, fade out. Dividers and atmospheric strips only.
Brand Primary + Brand Accent · never
— do not blend —
These are contrast colors. Brand Accent CTA on Brand Primary canvas is the brand. Blending them flattens the relationship.

D · Glow as a brand technique

The site does most of its "colored light" with box-shadow, not with gradient fills. Hover any element below to see it.

Action glow
box-shadow: 0 0 20px oklch(Brand Accent 400 / 0.30)
Regulated Environments
Hover — card lifts with an green aura.
Surface glow
box-shadow: 0 0 30px oklch(Brand Secondary 600 / 0.20)
Environmental Social Governance
Pip glow
box-shadow: 0 0 8px oklch(brand / 0.6)
RULE
Glow alpha: 0.15–0.30 with blur 20–30px for surfaces. 0.6 with blur 8px for status pips. Same hue family as the element — green cards glow green, orange CTAs glow orange.

E · Translucency

Brand color at reduced alpha is the third "gradient" technique. Use these target alphas for tinted glassmorphic surfaces.

100%full
90%headers
50%scrims
35%borders
15%atmospheric
100%full
90%headers
50%scrims
35%borders
15%atmospheric

F · Gradient angles

Where direction matters, only these angles appear in brand-approved usage.

90°
Dividers · meters · utility
135°
Sand / warm surfaces · icons
160°
Slide backgrounds · cinematic
45°
Small icons · sub-brand marks

G · Accents for data — charts, graphs, multi-series

When you need more than the brand triad — bar charts, line series, donut segments, any data split into groups — extend the palette from the token families in the original brand tokens.

METHOD
(1) Lead with the brand triad — Brand Primary, Brand Secondary, Brand Accent. (2) Lock the lightness at L = 0.63 (the 400-shade) so every series sits at equal visual weight. (3) Step the hue ~30–60° around the colour wheel from the brand hues (260 · 163 · 50). (4) Pick only from the yaml token families: rose, coral, red, wine, crimson, clay, orange, amber, gold, yellow, lemon, lime, sage, green, jade, mint, teal, sea, cyan, pool, ice, azure, fjord, sky, blue, cobalt, iris, dusk, violet, lilac, orchid, plum, grape, fuchsia, pink, blush. (5) Never use Gold or Slate as a data series — they're surfaces, not signals. (6) Never use the Labs Brand Secondary → Brand Accent gradient in a chart.

Recommended chart palette · all at L = 0.63

Brand · 1 Brand Primary 400 #4D87E6 · hue 260
Brand · 2 Brand Secondary 400 #339F74 · hue 163
Brand · 3 Brand Accent 400 #D56400 · hue 50
Extra · 4 Lime 400 #7E9500 · hue 120
Extra · 5 Pool 400 #009BA8 · hue 205
Extra · 6 Plum 400 #A869CD · hue 312
Extra · 7 Amber 400 #B77B00 · hue 75
Extra · 8 Teal 400 #00A089 · hue 178

The same palette on three contexts — see how each colour holds up

Almost-black · Brand Primary 950
Brand PrimaryBrand SecondaryBrand AccentLimePoolPlumAmberTeal
Brand canvas · Brand Primary 900
Brand PrimaryBrand SecondaryBrand AccentLimePoolPlumAmberTeal
Almost-white · Slate 50
Brand PrimaryBrand SecondaryBrand AccentLimePoolPlumAmberTeal

Picking order — what to reach for, in what scenario

ScenarioPalette
1–3 categorical seriesBrand Primary 400, Brand Secondary 400, Brand Accent 400 — brand triad at the chart lightness
4–6 categorical seriesBrand triad + Lime 400, Pool 400, Plum 400 — fill the gaps between brand hues
7–8 categorical seriesAbove + Amber 400, Teal 400
> 8 categorical seriesReconsider — aggregate, facet, or split the view; more than 8 hues stops being legible
Sequential (low → high)One brand or tertiary ramp end-to-end: Brand Secondary 100 → 800 (growth), Brand Primary 100 → 800 (concentration), Slate 100 → 800 (neutral)
Diverging (neg ← 0 → pos)Brand Accent 400 ← Slate 200 → Brand Secondary 400 — brand contrast through a neutral midpoint
ESG pillarsE = Brand Secondary 300 · S = Gold 300 · G = Slate 400 — codified; Brand Secondary 300 reads brighter than 400 on dark, which is the actual rendering context

On a paper ground — step down to the 500 row

Everything above is pinned at L = 0.63 because it was tuned for the navy canvas. On Paper it is too light. Measured against Paper 50, the 400 row lands at 3.02–3.44 — technically over the 3.0 minimum for non-text graphics, but with no margin at all, and print shifts colour. Teal and Brand Secondary sit at 3.02 and 3.03; one press variation puts them under.

Step down one stop. The 500 row measures 4.07–4.81 on Paper 50 — comfortable, still vivid, and it needs no new values because every family already defines its 500.

Paper canvas · Paper 50 · the 500 row
Brand PrimaryBrand SecondaryBrand AccentLimePoolPlumAmberTeal
Series OKLCH HEX On Paper 50
Brand Primary 500oklch(0.550 0.160 260)#346ECD4.53
Brand Secondary 500oklch(0.550 0.120 163)#00875D4.18
Brand Accent 500oklch(0.550 0.185 50)#B252004.75
Lime 500oklch(0.550 0.160 120)#687C004.26
Pool 500oklch(0.550 0.110 205)#00818C4.14
Plum 500oklch(0.550 0.160 312)#9050B44.81
Amber 500oklch(0.550 0.160 75)#9866004.54
Teal 500oklch(0.550 0.120 178)#0084724.07
RULE
Pick the row from the ground, not the document. 400 on navy, 500 on Paper. Never mix rows inside one artifact — two charts in the same deck at different lightness read as two different palettes. And never put a chart on Paper 300: the warm rest ground drops the 500 row to 2.72–3.21 and it fails. Data belongs on Paper 50 or Paper 25.
SOURCE
Every value on this page is generated from, or transcribed against, brand-kit.md — the canonical source. Slate is hue 240, Gold is hue 85, the chart extras are Lime 120 · Pool 205 · Plum 312 · Amber 75 · Teal 178, and every 50-step sits at L 0.970. If you change a colour, change it there first and mirror it here.

Swatch hexes on this page are generated at runtime by reducing chroma to the sRGB gamut boundary — the same mapping brand-kit.md's tables were built with, which is why a saturated stop like Brand Accent 600 resolves to #873D00 rather than the #9B2400 you get from clamping each channel. Six of the 55 published swatches still differ by ±1 in one channel; that is float rounding at the gamut boundary between two implementations, not a drift worth chasing. OKLCH is canonical — prefer the O button over H.
05 · Iconography

Icons

Vela uses two Font Awesome styles, picked by purpose — not by where the icon appears. Sharp Duotone (fa-sharp-duotone fa-solid) when the icon enhances — feature emphasis, illustration, decorative depth. Solid (fa-solid) when the icon is informational — bullets, button glyphs, chevrons, arrows, status pips, anything functional or directive. The signature feature-icon treatment is a 42 × 42 Brand Secondary 600 tile with a Slate 50 icon at 18 px (1.125 rem).

Regulated
fa-shield-halved
Diligence
fa-clipboard-check
Layered
fa-layer-group
Balanced
fa-scale-balanced
Continuous
fa-arrows-rotate
Risk
fa-triangle-exclamation
KIT
The Vela Font Awesome Kit (b122b96a8f) is licensed under our account. velaintelligence.com and our approved related domains are enabled on the kit. Don't load it from a non-approved domain — license violation.
Embed & usage
<!-- in <head> -->
<link rel="preconnect" href="https://kit.fontawesome.com" crossorigin>
<link rel="preconnect" href="https://ka-f.fontawesome.com" crossorigin>
<script src="https://kit.fontawesome.com/b122b96a8f.js" crossorigin="anonymous"></script>

<!-- usage -->
<i class="fa-sharp-duotone fa-solid fa-shield-halved"></i>   <!-- enhancement: feature icon -->
<i class="fa-solid fa-arrow-right"></i>                      <!-- informational: button arrow -->
06 · Sub-brand

Vela Labs

A distinct visual language for experimental work and internal tools. Labs uses an green crystal mark and the green → orange diagonal gradient on its product icons — the only place this two-hue blend is approved. Labs borrows the navy atmosphere from the main brand, but speaks with a brighter, more playful voice on top of it.

Vela Labs · crystal
The crystal mark
Solid green (#2D6A4F) at three opacities — 1.0, 0.6, 0.4. The three facets create depth without ever leaving the green hue. Use this mark wherever Labs is named or branded; it replaces (never accompanies) the Vela Intelligence lockup.

Labs product icons

Each Labs product gets its own glyph drawn in stroke, filled with the green → orange diagonal gradient. Same gradient, different shape. This is the only sanctioned use of the two-hue blend.

Elyndor
repo + arrow glyph · encrypted S3 backups
Tablyn
table glyph · SQLite MCP server
Vaelth
circle + square glyph
Zephlyn
stacked planes glyph
Next Labs product
follows the same recipe
RULE
The green → orange gradient belongs to Vela Labs. Don't use it on Vela Intelligence main-brand surfaces — that's how the two brands stay legible side-by-side.
07 · Sub-brand

Deal Intelligence

Deal Intelligence is the first product-vertical sub-brand under Vela Intelligence. Where Labs is for experiments, this is a full product line — and the pattern future siblings will follow (Risk Intelligence, ESG Intelligence, etc.). It uses its own mark (the jack) and its own DEAL INTELLIGENCE wordmark drawn in Figtree 700 with hand-tuned spacing — the same custom-spacing recipe as the parent VELA INTELLIGENCE wordmark, with the INTELLIGENCE half lifted verbatim from the parent. The shared "Intelligence" word is the cue that this is a Vela family product. The Deal Intelligence lockup replaces the Vela Intelligence lockup in its own context — the two never appear together.

RULE
Do not recreate the wordmark from a font. Both VELA INTELLIGENCE and DEAL INTELLIGENCE are Figtree 700 letterforms with custom per-letter spacing — outlining the text fresh from Figtree (or any other font) will lose that spacing and produce a regression. The canonical SVGs in logos/wordmark/ and logos/sub-brands/<name>/wordmark/ are the source of truth; treat them as immutable. New sub-brand wordmarks must be drawn by a designer.
Deal Intelligence · jack
The jack mark
A solid four-point sparkle with a tight, pinched waist — visually a "jack" (the toy). Symmetric in both axes (viewBox 256 × 256), tips at distance 120 from center, quadratic-bezier sides with control points at inset 10 — the inset that earns the jack reading. Single filled path, no gradients, no outline rings, no opacity layers. Distinct from the parent Vela four-point star; the two marks never appear together.

App-icon tile

Jack at 38% of tile width, Slate 50 fill, on a Brand Primary 900 (#07214D) rounded square (256 × 256, corner radius 56). Use for native app icons, web favicons at large sizes, splash screens, and product surfaces.

Deal Intelligence app icon
logos/sub-brands/deal-intelligence/mark/
  deal-intelligence-mark.svg          /* currentColor */
  deal-intelligence-mark-black.svg
  deal-intelligence-mark-white.svg
  deal-intelligence-app-icon.svg      /* navy tile */

Wordmark

DEAL INTELLIGENCE, drawn in Figtree 700 all-caps with custom per-letter spacing. The INTELLIGENCE half is lifted verbatim from the parent wordmark; only DEAL is new. (Figtree's G with its near-45° terminal is the distinguishing tell — compare Manrope's straight-cut G.)

Deal Intelligence wordmark

Primary lockup

Jack mark + wordmark, horizontal. Default whenever the full name fits. Caps vertically centered on the mark.

Deal Intelligence primary lockup

Usage

Use
  • Primary lockup wherever the full name fits horizontally — this is the default.
  • Wordmark only in formal / legal contexts, footers, places where the mark would feel redundant.
  • Mark only for favicons, avatars, and contexts below ~32 px where the wordmark is illegible.
  • App-icon tile for native app icons, web favicons at large sizes, splash screens, product surfaces.
  • Use the hard-fill -white.svg / -black.svg when the consuming surface has a fixed theme.
Don't
  • Don't show the Deal Intelligence lockup alongside the Vela Intelligence lockup — pick one per surface.
  • Don't use the parent Vela four-point star as the Deal Intelligence mark; the jack replaces it.
  • Don't add gradients, outlines, opacity layers, or drop shadows to the jack — single filled path only.
  • Don't rotate, skew, stretch, or recolor outside the Slate 50 / Brand Primary 950 pairing.
  • Don't substitute the wordmark font — Figtree 700 all-caps with custom spacing, no exceptions, no programmatic regeneration.
PATTERN
Future product-vertical sub-brands (Risk Intelligence, ESG Intelligence, etc.) follow the same recipe: one distinct mark of comparable visual weight, <NAME> INTELLIGENCE wordmark drawn by a designer in Figtree 700 with custom spacing (reusing the parent's INTELLIGENCE half verbatim), file layout mirroring logos/sub-brands/deal-intelligence/, and the same "replaces, never accompanies" rule against the parent lockup.
08 · Contexts & semantic tokens

The Four Contexts

The brand has one identity and four habitats. All four share the same hue families, the same accent green, the same singular action orange — what changes is which stops get picked and which one carries the ground. No new hues are introduced anywhere. Screen is canonical and stays dark. Product is dark by default with an opt-in light surface. Deck and Document are the two contexts that live on paper, and they exist because a navy canvas that works beautifully for a landing page becomes exhausting across forty slides or twenty minutes of dense reading.

Context Canvas Primary type What it's for
Screen · canonicalBrand Primary 900Slate 50Marketing site, hero sections, social, brand-asset previews, partner collateral
ProductBrand Primary 900 · Slate 50 opt-inSlate 50 · Brand Primary 900The console, dashboards, internal tools — long-session UI
DeckA cadencevaries by slidePitch decks, sales decks, six-slide explainers — anything presented
DocumentPaper 50Brand Primary 900Consulting reports, PDFs, Markdown→PDF deliverables — anything read
RULE
The canvas is a decision, not a default. Pick the context first; everything else follows from it. Do not reach for the navy canvas because it is the brand's habitat — reach for the canvas the context calls for. Screen and Product are dark-first. Deck and Document are not.
TEST
Presented, or read? When Deck and Document seem to overlap, this settles it. A deck is presented — someone is talking over it, each slide is seen for ninety seconds, and it needs rhythm and contrast to hold a room. A report is read — alone, for twenty minutes, and it needs restraint and consistency. Same palette, opposite instincts.

The navy migration

The defining trick is that Brand Primary 900 stays the brand's structural anchor in both modes — it just changes role. On dark, it is the canvas; on light, it becomes the primary text. The eye reads the same hue in both modes; only the figure-ground inverts. This is what keeps both modes recognisably Vela Intelligence.

Dark · default · canonical
Brand Primary 900 canvas
Slate 50 primary text · Brand Secondary 500 accent · Brand Secondary 300 emphasis · Brand Accent 400 CTA
Light · product-surface only · opt-in
Slate 50 canvas
Brand Primary 900 primary text · Brand Secondary 600 accent · Brand Secondary 700 emphasis · Brand Accent 400 CTA

Deck — a cadence, not a canvas

The mistake that makes a deck exhausting is picking one ground and using it for forty slides. A deck alternates. Its unit of design is the sequence, not the slide. Seven archetypes, each with a fixed ground:

Cover
Brand Primary 900
Slate 50 type
Divider
Brand Primary 900
number + title only
Content
Paper 50 · the workhorse
most of the deck
Data
Paper 25
charts sit cleanly
Rest
Paper 300
a pause · one idea
Focal
Brand Primary 950
max two per deck
Close
Brand Primary 900
the ask

A well-shaped section, read left to right — the navy returns often enough to feel like the brand, and leaves often enough that nobody gets tired:

divider
content
content
data
rest
divider
CADENCE
Never run more than four consecutive slides on the same ground. One Brand Accent element per slide at most — and never on two slides in a row. Accent is punctuation; a deck full of orange highlights is a deck with no highlights. Brand Secondary does the structural work: rules, underlines, active states, the eye-path.
DATA
Charts go on Paper 50 or Paper 25 — never Paper 300, where the series palette drops to 2.7–3.2 contrast and fails. On paper grounds use the 500 row (§04); on navy grounds use the 400 row. Do not mix rows within one deck — two charts at different lightness read as two different palettes.

Document — paper, and restraint

A report is read alone for twenty minutes. It wants consistency, not rhythm. Paper 50 is the canvas for essentially the whole document — the cover is the one dark page.

Cover · the one dark page
Counterparty Risk
Review 2026
Prepared for Meridian Capital · August 2026
Body page · Paper 50
3.2 Exposure concentration
Body copy sits in Slate 700 on the warm ground. Headings take Brand Primary 900 — the same navy that is the canvas on screen, here carrying the type instead.
A callout sits on Paper 25 — lighter than the page, because on paper raised means lighter.
Metadata takes Slate 600, never Slate 500.
Document · treatments
  • Tables — Paper 100 header · Paper 25 body · Paper 200 borders · Paper 100 stripes.
  • Callouts, pull-quotes — Paper 25 card, Paper 200 hairline, Brand Secondary 600 left rule.
  • Code blocks — Paper 100 ground, JetBrains Mono, Brand Primary 900.
  • Section openers — a Brand Secondary 600 rule above a navy heading.
  • Emphasis — Brand Accent 600. Accent 400 stays a fill colour only.
Document · never
  • No full-bleed navy in the body. The cover earns it; interior pages do not. A dark page inside a report reads as a slide that wandered in — and in print it is a solid block of ink.
  • No atmospheric glow. The two-radial technique in §04 belongs to screens. On paper it renders as a muddy smear, and in print it bands.
  • Do not paginate a report like a deck. Section openers are a rule and a heading, not a dark page.

Semantic tokens

The brand kit publishes raw OKLCH ramps in §02. Semantic tokens sit on top and name colours by their UI role, so component CSS doesn't reach into raw --brand-primary-800 directly, and so a single component file can serve both modes by aliasing the same role to different stops. See the canonical CSS-variable definitions in brand-kit.md §7.

Token Role Dark Light Document
Surfaces
--canvasPage backgroundBrand Primary 900Slate 50Paper 50
--surface-deepMost-emphatic surface (table headers, menu)Brand Primary 950Slate 100Paper 100
--card-bgRaised card surface80/20 P800 + S800 @ 85%94/6 white + S100 @ 96%Paper 25
--hairlineSubtle dividersSlate 50 / 15% αBrand Primary 900 / 12% αPaper 200
Accents
--accentStructural decorationBrand Secondary 500Brand Secondary 600Brand Secondary 600
--accent-emphasisInteractive states (hover, focus, link)Brand Secondary 300Brand Secondary 700Brand Secondary 700
--ctaSingular call-to-actionBrand Accent 400Brand Accent 400Brand Accent 600
Text
--text-primaryPrimary body textSlate 50Brand Primary 900Brand Primary 900
--text-secondarySecondary copy, captions, navSlate 200Slate 700Slate 700
--text-mutedMetadata, timestampsSlate 400Slate 500Slate 600
--whiteText on coloured fillsSlate 50 — unchanged across modes
Status (aliases §02c ramps)
--status-infoNeutral informationInfo 400Info 500Info 500
--status-successHealthy, done, positiveSuccess 400Success 600Success 600
--status-warningCaution, needs attentionWarning 300Warning 400Warning 400
--status-dangerCritical, blocked (text + borders)Danger 400Danger 600Danger 600
--status-danger-fillSolid danger fillsBrand Accent 600 — unchanged across modes
Logo
--logo-colorMark / wordmark fill (currentColor source path only)Slate 50Brand Primary 900Brand Primary 900

Naming note — --accent-emphasis means the more emphatic of the two accent tokens, not the literally brighter one. On dark, it's lighter (Brand Secondary 300); on light, it's darker (Brand Secondary 700). The role is preserved; the lightness inverts.

Danger note — on dark surfaces, Brand Accent 600 (the brand-side danger voice) reads as muddy when used as text. --status-danger therefore points at Danger 400 on dark and Danger 600 on light for text and border roles. Solid danger fills stay at Brand Accent 600 in both modes — the colour reads as "stop" on either canvas, and --white provides the on-fill text.

Light-mode body atmosphere

The optional two-radial-glow atmosphere from §4 has a light-mode counterpart. Both glows use Brand Secondary 300 at very low alpha — same family as the dark mode's Brand Secondary 600 glow, lifted to the lighter stop because we're glowing on white rather than on navy. No Gold corner — Gold's role is warm contrast on specific surfaces, pulling it into an atmospheric layer would dilute that specificity.

body[data-mode="light"] {
  background:
    radial-gradient(circle at 22% 18%, oklch(0.730 0.107 163 / 0.08) 0%, transparent 38%),
    radial-gradient(circle at 82% 78%, oklch(0.730 0.107 163 / 0.06) 0%, transparent 40%),
    linear-gradient(160deg, var(--canvas) 0%,
                    color-mix(in srgb, var(--surface-deep) 70%, var(--canvas)) 100%);
}
RULE
The mode is held on <body data-mode="dark|light">. The product persists per-user preference. Default is dark. Light mode never auto-mirrors prefers-color-scheme — switching is always an explicit user choice inside the product, so a user's OS theme flip never surprises them with a brand switch.
Copied