live · build 2026.05

brand book.

The complete Vibe Mode design system. Three pillar accents, one mono typeface, no rounded corners, CRT phosphor energy. This page is the live specification — every value here is the source of truth. The machine-readable spec lives in DESIGN.md, lintable with npx @google/design.md.

about

Vibe Mode is the visual identity for vibecoding.app — a directory of AI coding tools, agencies, and events for a Gen-Z developer audience. The audience lives in terminals, GitHub READMEs, Obsidian vaults, and the Claude Code CLI; the design speaks their visual language.

Terminal-native

Monospace everywhere. Section headers are written as // like a code comment. The SEO page is a manpage.

CRT atmosphere

Scanline overlay, scan-bar drift, chromatic-aberration on the wordmark, phosphor-green cursor. 1990s CRT seen through a 2026 OLED.

Card grammar

Editorial content uses a proper card with a hero zone, 20px padding, author chip footer. Data content (logs, tables) stays raw.

three pillars

The brand's primary information architecture. Every accent color, badge, and pillar glyph refers to one of these three. Do not introduce a fourth accent.

tools
/tools · 184 listed
The directory of AI coding tools — IDEs, agents, builders. Lime is also the default CTA color across the whole site because every CTA eventually routes to a tool.
agencies
/agencies · 22 vetted
Agencies who fix what shipped broken. Rescue migrations, agent debugging, prototype hardening. Magenta lives only in the agencies pillar.
events
/events · 47 upcoming
Conferences, hackathons, meetups worth flying for. Cyan lives only in the events pillar.

colors

Click any swatch to copy its hex. The palette is intentionally narrow: a near-black surface stack, a five-step text scale, and three pillar accents. No semantic colors (success / warning / error) — status is communicated through copy and the pillar accents only.

surfaces
text scale
pillar accents — the only saturated colors in the system

Do not blend pillar accents. Do not use them outside their pillar. The chromatic-aberration red and cyan used on the hero wordmark (#FF003C, #00F0FF) are decorative only and never appear in UI.

typography

One typeface: Geist Mono. If Geist Mono fails to load, fall back to JetBrains Mono then ui-monospace. Never mix in Inter, Geist Sans, Helvetica, or any proportional face.

hero-display148/0.92/-0.06em · 700
tools.
hero-subtitle36/1.0/-0.04em · 500
{ ">" } find it on vibecoding.app
card-title19/1.2/-0.015em · 600
claude-code 4.1: the terminal agent that finally ships.
body14/1.55/-0.005em · 400
Anthropic's terminal-first agent has quietly become the default for devs who'd rather pair-program than prompt-engineer.
meta-caps10/1.0/0.14em · 500
tool of the month · may 2026
mono-cli13/1.85 · 400
$ vibe match
→ 3 questions → 184 tools → 2 matches

spacing & layout

Spacing tokens are named by their role, not just by size. A `px-section` is always 32px because a section is always padded that way. Components consuming the wrong token are easy to catch in review.

tokendesktopmobilewhere
px-section32px16pxhorizontal padding of full-width sections
py-section64px40pxvertical rhythm between sections
py-hero112px48pxextra-tall hero block top padding
card-pad20px16–20pxdefault card body padding
card-pad-lg28px20pxreviews, featured tool
gap-cards20px10–12pxgutter between cards in a grid
gap-content16px12pxgutter inside a card row
rounded0px (everything is square)system-wide

motion & accessibility

Three named duration steps cover 95% of UI motion. Decorative CRT effects (scan drift, chromatic split, cursor blink) all freeze under `prefers-reduced-motion: reduce`.

tokenvalueuse
duration-instant80msbutton press, link underline
duration-fast140mshover, focus ring, badge swap
duration-base220mscard hover lift, panel reveal
duration-slow420mssection enter, modal in/out
duration-crt6sscan-bar drift loop (decorative only)
duration-cursor1.0sphosphor cursor blink loop
ease-outcubic-bezier(0.16, 1, 0.3, 1)default UI
contrast-targetWCAG 2.2 AAlinted in CI
focus-ring2px lime · 2px offset · squareevery interactive element

favicon

Three blocks at favicon scale on the brand bg canvas. Falls back gracefully to "the lime block" at 16px when dither tiles alias out.

16tab
32tab @2x
64pinned
180apple-touch

iconography

The icon system is built on three pillar shapes — down triangle, diamond, circle — each locked to its pillar color. They appear inline in nav (▼ /tools), as the icon on every pillar card, on social avatars, and wherever the brand needs a non-typographic mark. Secondary vocabularies: ASCII box-drawing for chrome, 1px stroked SVG for manpage-style technical diagrams only. No emoji. No Material / Heroicons / Feather / Lucide.

▼ tools
down triangle · #B8FF35
U+25BC
◆ agencies
diamond · #FF3AA0
U+25C6
● events
circle · #7AF0FF
U+25CF
┌─┐
│ │
└─┘
ASCII box-drawing · chrome & CLI mocks only
stroked svg (16px / 1px) · manpage diagrams only

social assets

Profile picture is shared between X and LinkedIn. Banners are platform-specific (different aspect ratios). All composed from the same brand vocabulary as the rest of the system.

social-x-banner.svg · 1500 × 500↓ download
social-linkedin-banner.svg · 1584 × 396↓ download
social-profile.svg · 400 × 400 · X + LinkedIn↓ download
author-portrait-bg.svg · portrait template↓ download

buttons

button-primary · lime CTA

The default action button across the site. Lime bg, ink text, square, mono caps.

button-secondary

Nav items, ⌘K trigger, secondary actions in cards.

button-ghost

Minimal affordance; arrow links in card footers.

pillar badges

tools

badge-tools · accent-tools text + surface bg

agencies

badge-agencies · accent-agencies text + surface bg

events

badge-events · accent-events text + surface bg

cards

Editorial content uses cards. Data content (activity log, leaderboard, FAQ) does not. A card always has: hero zone (pillar-tinted) → 20px body padding → meta line → mono title (2–3 lines) → divider → author chip + arrow.

tools · 10-min review
tool of the month
claude-code 4.1: the terminal agent that finally ships.
M
@maeve · editor
card · structure
┌──────────────────────┐
│   [HERO ZONE 16:9]   │  ← pillar tint
├──────────────────────┤
│ [badge]    meta line │
│                      │
│  CARD TITLE          │
│  (2–3 line cap)      │
│                      │
│ ──────────────────── │
│ @author · role    →  │
└──────────────────────┘

do's and don'ts

do · Geist Mono only
vibecoding.app

One typeface across the whole system. The terminal grammar dies the moment a sans-serif appears.

don't · introduce a sans
vibecoding.app

Never. Not for product, not for marketing, not for "headings". Geist Mono is the system.

do · square corners
cta

Zero radii. Every container, button, badge, input — sharp corners.

don't · rounded corners
cta

A single rounded corner pushes the aesthetic toward generic SaaS and breaks the terminal feel.

do · pillar accents siloed
tools agencies events

Lime stays in tools. Magenta stays in agencies. Cyan stays in events. The matcher CTA is lime because it routes to /tools.

don't · blend pillars

No gradient-of-three. No "tools + events" combos. Pillars are siloed.

do · respect reduced motion
@media (prefers-reduced-motion: reduce) {
  .crt-* { animation: none; }
}

Every CRT effect (scan drift, chromatic split, cursor blink) freezes.

don't · drop shadows
a card with shadow

Depth comes from pillar glow on glyphs, top accent lines, and the page vignette. No traditional drop shadows.

downloads

SVG sources. Rasterize to PNG via npx resvg-cli when a platform requires it (X, LinkedIn upload UIs prefer PNG).

assetfileuse
faviconfavicon.svgbrowser tab · PWA
wordmark · herowordmark-hero.svghomepage hero · banners · OG cards
logo · primarylogo-lockup.svgin-product · dark bg
logo · light bglogo-lockup-flat.svgemail, print, partner pages
logo · mark onlylogo-mark.svgcompact nav, OG corner
logo · email striplogo-email-strip.svgemail signatures, inline footers
profile picturesocial-profile.svgX + LinkedIn profile picture
X headersocial-x-banner.svgX 1500×500 header
LinkedIn coversocial-linkedin-banner.svgLinkedIn 1584×396 cover
portrait bgauthor-portrait-bg.svgauthor portrait background
spec sourceDESIGN.mdtokens · machine-readable