brand book 1.0 · october 2026
vendo.

A vending machine for pro software. Pick a slot, pay once, get a key.

name from the Latin vendo, "I sell" audience developers, founders and anyone who pays for SaaS mascot vee, a little vending machine with coin eyes
1 · the idea

a store that feels like a good app

vendo sells pro plans the way a vending machine sells snacks. Every product sits in a numbered slot with one clear price, and there's exactly one of each. The store looks and behaves like the software its buyers already love: quiet surfaces, fast search, keyboard shortcuts, and real product icons.

A1

storefront first

Products are always one scroll away. The hero sells the store, then gets out of the way.

B2

one of each

Slot codes and "1 left" are true. They're the signature detail, and we never fake scarcity.

C3

quiet, then bright

Paper and ink everywhere, so vendo blue and the product icons can carry the color.

D4

say it plainly

Lowercase headlines, short sentences, real numbers. No hype and no countdown timers.

2 · logo

meet vee

The mark is a tiny blue vending machine with feet. Its eyes are two coin slots and its mouth is the slot your coin drops into. It's one solid shape with three white cut-outs, so it reads at 16 pixels and still has a personality. The wordmark is just the name, set bold, with a blue full stop.

vee · the mark
app icon · favicon · avatars
  1. the bodyA 48 × 46 rounded box on a 64 grid with a 17-unit radius, the same soft square as an app icon. Two 10-unit feet make it a character instead of a button.
  2. the blueThe body is vendo blue #2563ff (#3d77ff in dark mode), the same blue as the buttons and the dot in the wordmark. The eyes and mouth are white.
  3. the slotA 12 × 4.5 slot for a mouth. It's where the coin goes, so vee is literally smiling at your money.
vendo.
on paper
vendo.
on ink
vendo.
one color on blue
vee · the mark

Always vendo blue with a white face, on light and dark.

app icon

White vee on an ink tile. Favicon, social avatars, emails. The corner radius is 18 on 64.

one color

Receipts, stamps and embossing. Eyes and mouth become cut-outs.

vee's faces · use in empty and quiet states only
hellodefault
winkfaq, success
lookingno results
hungryempty cart
wordmark · clear space & sizes
vendo.

The wordmark is Unbounded SemiBold at −4% tracking, used for the name and nothing else, always lowercase, and always ends with a blue full stop. Keep half of vee's width clear on every side. vee works down to 16px; the lockup needs at least 80px of width.

don't
  • drop the blue dot or change its color
  • capitalize the wordmark. It's vendo, never Vendo or VENDO
  • give vee arms, a hat, or a gradient. One shape, three cut-outs
  • recolor vee in anything but vendo blue
  • put vee on photos without the ink app tile behind it
3 · color

paper, ink, one blue and a coin

A calm neutral base with a hint of warmth. vendo blue is reserved for the one action that moves money. The same blue is the brand accent: vee, the full stop after the name and the hero headline, and the lights in the footer machine. The product icons bring the rest of the color. Dark mode has its own selected values, so it isn't a simple inversion.

paper 62
card 18
ink 12
blue 6
brand
--vend
vendo blue#2563ff · dark #3d77ffadd to cart, check out, cart
--coin
accent blue#2563ff · dark #4d84ffvee, the full stop, machine lights
--ok
stock green#108a4a · dark #3ccf7fin cart, savings, stock dot
--sale
sale red#d92f3a · dark #ff6b72discount pills only
neutrals
--paper
paper#f4f4f1 · dark #0e0e10page canvas
--card
card#ffffff · dark #18181bproducts, panels, dialogs
--paper-2
well#ebebe6 · dark #17171aslot windows
--ink
ink#111113 · dark #f3f3f0text, prices, dark buttons
--ink-2
graphite#55555c · dark #ababb2secondary text
--line-2
hairline#d3d3cc · dark #34343aborders, dividers
category dots · rows a to e
A · ai coding B · create & design C · productivity D · build & ship E · business
4 · type

one family: inter

Unbounded is reserved for the name. Inter does everything else you read: medium weight with tight tracking for headlines, regular for subheads and body, all lowercase like a Mac menu bar. Geist Mono is only for codes, receipts and the terminal.

Inter Medium500 · tracking −3.5% to −4%

Headlines, section titles, product names in dialogs, and the wordmark. Always lowercase.

the keys to pro software.
Inter400 / 500 / 600

Body copy, product names, prices, filters and buttons. Prices use tabular figures.

$22.92$17.19$240Granola BusinessThe AI notepad for people in back-to-back meetings.
Geist Mono400 / 500

Slot codes, keyboard keys and receipts.

A1C2⌘K↵order #0412 · saved 449.06
wordmark18 → 132pxvendo.
--t-3xl44 → 92pxhero headline
--t-2xl28 → 40pxsection title
sub16 → 19pxthe line under a headline
--t-lg18pxlead paragraph
--t-md15pxbody · product names at 16px semibold
--t-sm13.5pxdescriptions, filters, buttons
--t-xs12pxmeta, captions, labels
5 · components

the parts of the store

These are the live components from the store, rendered from the same CSS. Controls feel like a classic Mac: glossy Aqua pills with dark text and a crisp edge, and cards that are little windows with traffic lights and a filename.

buttons

Blue moves money. Dark adds in bulk. Ghost navigates. Green means done.

chips & labels
A1−93%newlimitedpopular⌘K
product icons
CursorRunwayGranolaLinearMercury

Each brand's own icon, taken from its website and shown on a white plate like an app icon. Icons identify the product; they never suggest vendo is the brand's official store, so the "not affiliated" line stays in the footer.

search & feedback
Cursor Pro added
A1−92%

Cursor Pro

popular

1 year

Build software with AI.

$17.19$240
1 leftai code editor
product card anatomy
partrule
slot windowwell color with the product icon centered at 60px
slot codetop left, mono. The row letter is the category and the number is the position in that row
discount pilltop right in sale red, rounded down so it's never overstated
title + badge16px semibold with at most one badge: new, limited or popular
meta + descriptionplan length and seats, then the description clamped to two lines
price rowprice in ink, list value struck through, add button on the right
stock linedashed divider, green dot, "1 left" or "reserved in your cart"
6 · layout & tokens

the grid underneath

Everything sits on a 4px base. All values live in assets/tokens.css, and components only reference tokens.

spacing
4
8
12
16
24
32
48
64
96
radius
xs 6
sm 10
md 14
lg 20
xl 28
icon 26%
elevation
sh-1 · rest
sh-2 · hover
sh-3 · overlay
breakpoints
max width1280px, gutter 16 → 32px
≥ 1180floating product icons and the receipt in the hero
≥ 1020236px filter sidebar + auto-fill grid of 260px cards
< 1020category chip row + filters in a bottom sheet
< 560one card per row, toolbar wraps
7 · motion

small, springy, rare

Motion confirms what happened. Icons drift gently in the hero, cards lift on hover, the cart slides in from the right, and a toast pops up when something is added. Everything stops for prefers-reduced-motion.

tokenvalueused for
--d-fast120mshover color, button press
--d-mid220mscard lift, dialog pop, toast
--d-slow360mscart drawer slide
--easecubic-bezier(.2,.7,.2,1)default for everything
--springcubic-bezier(.34,1.4,.64,1)icon hover and the toast only
bob6–8s alternatehero icons, staggered
8 · voice

a friendly machine that tells the truth

Lowercase for headlines, labels and buttons. Sentence case for anything longer than a phrase. Real numbers over adjectives, and no fake countdowns: scarcity is real here, one key per slot.

write it like this
yespick a slot. pay once. get a key.
noUnlock UNBEATABLE deals on premium SaaS today!!
yesMost plans only activate on a new account. Check before you buy.
noWorks for everyone, guaranteed.
yes1 left
noHurry! Only 2 minutes left!
empty states
your cart is emptynothing in that slot

vee shows up when there's nothing else to look at. Never as decoration next to products.

icons · 24px grid, 1.8 to 2px stroke, round caps