Style Guide · 2026 · v1.0

SWR Design System

A single source of truth for the Sainted Word Records visual language — warm cream surfaces, sepia-tinted ink, hot-pink as the single saturated hue. Five named visual languages (Neon, Film, Grid, Smoke, Hallucination) are treated as the system's product identity moments.

Drop a song.
Get a music video.

A browser-based audio-reactive engine. One HTML file. Five visual languages. Zero install.

Principle 01

Warm by default, hot for moments

Cream surfaces, sepia ink. Hot-pink only for product identity, the launch CTA, and the 5 visual languages.

Principle 02

Pills over rectangles

Every button, badge, tab, and input is full-radius. Rectangles live only in data tables, code blocks, and visual-language tiles.

Principle 03

Editorial over generic-AI

Fraunces (display) + Geist (body) + Geist Mono (code). The system leads with a serif hero and a generous body voice.

01 Brand Mark

The SWR monogram is the system's identity. The wordmark is the full label. Three surface variants each: current, black, white.

Monogram

SWR monogram — black
Monogram · Black
swr-monogram-black.svg
SWR monogram — current
Monogram · Current
swr-monogram-current.svg
SWR monogram — white
Monogram · White
swr-monogram-white.svg

Wordmark

SWR wordmark — black
Wordmark · Black
swr-wordmark-black.svg
SWR wordmark — current
Wordmark · Current
swr-wordmark-current.svg
SWR wordmark — white
Wordmark · White
swr-wordmark-white.svg

02 Brand Voice

SWR is an audio-reactive video engine that ships in 90 seconds. The voice pairs editorial confidence (Fraunces) with engineer's precision (Geist Mono).

Do

Lead with the product action: "Drop a song. Get a music video." — short, declarative, no qualifiers.

Don't

Stack hype adjectives ("revolutionary", "groundbreaking", "next-gen") or generic AI tropes.

Do

Use concrete nouns and numbers: "5 visual languages", "48-hour turnaround", "30-second MP4".

Don't

Bury the action. Front-load qualifiers. Three clauses in one sentence.

Do

Talk about audio in music terms — BPM, beat, FFT, chromagram.

Don't

Talk about audio in data terms — "audio data", "signal processing", "frequency analysis".

03 Color

33 tokens across 5 groups. 90% warm-monochrome. Saturated hues reserved for product identity.

Surface & Canvas

Canvas
#faf7f2
Page bg, hero surface
Surface
#f1ebe1
Sidebar, alt section
Surface Soft
#ffffff
Card backgrounds
Surface Deep
#0e0c0a
Hero bands, dark sections

Ink & Text

Ink
#1a1612
Headlines, CTAs
Charcoal
#4a4035
Body text
Slate
#5a4d40
Secondary text
Stone
#8a7a66
Muted captions, kicker

Brand & Accent

Saturated hues for product identity. Don't apply to general navigation.

Hot
#e6306b
Launch CTA, hero accent
Hot Glow
#ff2d8a
Neon identity, dark mode
Orange
#ff8a3a
Film identity, secondary CTA
Green
#1c8c64
Success, live state
Neon Green
#00ffa3
Hallucination identity
Cool
#0085b3
Cool identity, links
Gold
#fff04a
Highlight, version tag
Purple
#7c4dff
Reserved · future use

Token Reference

GroupTokenValueUse
surfacecanvas#faf7f2Page bg
inkink#1a1612Headlines, CTA
brandhot#e6306bLaunch CTA, accent
brandorange#ff8a3aFilm identity
brandcool#0085b3Cool identity, links
hairlinehairline#ddd3c2Default border

04 Typography

Three typefaces mixed by role. Fraunces (display) · Geist (body) · Geist Mono (code).

Display / Hero
--font-display · Fraunces 300–800
44–80px / -0.025em
Music videos that breathe with the song.
H1 · Section title
--font-display · Fraunces
44px / 500 / -0.02em
A platform for audio-reactive video.
H2 · Card title
--font-display · Fraunces
28–32px / 500 / -0.015em
Five visual languages. One engine.
H3 · Feature title
--font-body · Geist
20–22px / 600
Adaptive beat detection
Body
--font-body · Geist
16px / 400 / 1.6
Default paragraph. Generous line-height for long-form. Max 72ch per line.
Mono · Code
--font-mono · Geist Mono
13px / 1.7
// drop a song, get a video
const engine = new "SWREngine"("song.wav");

05 Spacing

A 4px base scale. Rarely below 4px or above 120px on UI.

--space-1
4px
--space-2
8px
--space-4
16px
--space-6
24px
--space-8
32px
--space-12
48px
--space-16
64px
--space-20
80px
--space-24
96px
--space-30
120px

06 Radius & Shape

Seven radii. Pill-by-default, 12–16px documentation cards, 24px product identity moments.

xs · chips
4px
sm · UI
6px
md · cards
12px
lg · containers
16px
xl · hero band
24px
pill · default
9999px

07 Shadows

Three shadow systems: subtle card elevation, stronger pop for hovered surfaces, brand-tinted hot-pink glow for featured product cards.

Card elevation
0 1px 2px rgba(26,22,18,0.04), 0 4px 12px rgba(26,22,18,0.04)
Pop · hover
0 2px 8px rgba(26,22,18,0.06), 0 16px 48px rgba(26,22,18,0.08)
Brand glow
0 0 24px rgba(230,48,107,0.16)

08 Buttons

Pill-shaped by default. Primary is ink and hovers to hot-pink. Brand-color buttons are reserved for product identity moments.

Primary actions

Secondary & Ghost

Brand actions (reserved for product moments)

Use only on the launch CTA, the 5 visual-language cards, and the service-tier hero.

09 Badges & Pills

Tags, status indicators, version labels. Full-radius. Color encodes meaning, never decoration.

Default Hot · v1.0 Film Grid Smoke Hallucination Live

10 Cards

12px documentation cards for prose surfaces, 24px vibrant gradient product cards for the 5 visual-language identity moments.

Documentation cards

Guide
How to render a 30s video

Drop a song, pick a visual language, hit record. The engine does the rest in 90 seconds.

Release
v1.0 · self-evolving

The engine ships 2 fresh audio-reactive personalities every morning, automatically.

Concept
On-device variants

After 3 uses of a single persona, the engine mutates a personalized variant tuned to your BPM.

11 Inputs

Pill-shaped inputs by default. Hairline border, ink focus ring.

12 Iconography

1.6px stroke icons on a 22px box. Single weight.

13 Visual Languages — 5 product identity cards

The system's most important moment. Each visual language is a self-contained engine variant with its own color, motion, and signature. Treat them like products, not themes.

01 · NEON

Neon Church

electric · club · urban
screen blend · sharpened easings · scanlines
02 · FILM

Morning Haunt

16mm · sepia · grain
handheld · warm tone · smooth drift
03 · GRID

Brutalist Grid

hard · monochrome · precision
2×2 cells · snap-beat · binary easings
04 · SMOKE

Dream Sequence

cream · motion blur · drift
0.5 opacity · slow drift · fog
05 · HALLUCINATION

System Error

RGB shift · scanlines · chaos
rgb drift · difference · noise overlay

How a visual language is specified

Each language is a self-contained .swr-set JSON file with palette, motion, FX chain, and a single signature blob. The engine loads the file, swaps the WebGL uniforms, and the music video takes a new shape.

// 1 of 5 visual languages — the Neon personality
{
  "id": "swr-preset-neon-v1",
  "name": "Neon Church",
  "palette": { "a": "#ff2d8a", "b": "#00f0ff", "bg": "#0a0610" },
  "motion": "screen-blend",
  "fx":    { "chroma": 0.85, "glow": 0.6, "scanlines": 0.3 },
  "signature": "cuts-on-the-beat"
}

14 Do & Don't

The rules that hold the system together.

Do

Use cream surfaces and sepia ink for 90% of the system. Let the 5 visual languages and the launch CTA bring the color.

Don't

Apply hot-pink or orange to navigation or general UI. They're reserved for the launch CTA and the 5 visual languages.

Do

Default to pill radius (9999px) for buttons, badges, and inputs. Rectangles live only in data tables, code blocks, and the 24px product cards.

Don't

Mix a third typeface into the system. Fraunces + Geist + Geist Mono is the trio. Adding more dilutes the brand.

Do

Use the hot-pink brand glow on hero bands, product cards, and the launch CTA. It's the system's "this is the moment" signal.

Don't

Push the hero past 80px on desktop or below 40px on mobile. The system tunes for that band.


SWR Style Guide · v1.0 · compiled 2026-10-10 Live at sainted-word-records landing