SynAmp Spectrum · v1

The design system, in one page.

Tokens, type, colour and every component the marketing site and the app share. One gold signal, one spectrum, on a deep slate ground — with AA contrast enforced throughout.

Colour

Four layers: neutrals carry 70–90% of the pixels, one gold signal, a semantic set, and the spectrum — the brand's single decorative asset, reserved for the amp light and the visualizer.

Ground & surfaces

--ink
#0E0E10 · 0.165 L
--bg
#212637 · brand slate
--well
#14161F
--surface
#2A3145
--surface-2
#343D54
--surface-3
#414B66

Signal & ink

--fg
#F1F1F1 · 13.3:1 on slate
--muted
#A4ABC1 · 6.57:1
--faint
#6E7690 · decorative only
--gold accent
#FFCD00 · 10.0:1
--coral
#FF4A47 · 4.53:1
--violet
#5216B3 · fills only

The spectrum

--sp-berry
--sp-pink
--sp-coral
--sp-orange
--sp-gold
--sp-lime
--sp-green
--sp-cyan
--sp-blue
--sp-violet

Accent discipline

At most two visible uses of gold per screen — typically one eyebrow and one primary action. The spectrum appears only in the amp light and the visualizer, never as a page wash or on body text.

Tokens

Spacing is a 4px scale; radii run 4 → 20px; motion uses two easings and four durations and collapses under reduced-motion.

Spacing

--s-2 · 8
--s-4 · 16
--s-5 · 24
--s-6 · 32
--s-7 · 48

Radii & elevation

481220pill

--dur-1 120ms · --dur-2 200ms · --dur-3 320ms · --dur-4 520ms

--ease cubic-bezier(.2,0,0,1)

Typography

Momo Trust Display for headlines (single 400 weight — hierarchy comes from size and colour), Space Grotesk for body and UI, JetBrains Mono for labels, values and ledgers.

Display · Momo Trust Display · clamp 40–72
Make your library sing
H2 · Momo · 28–44
Off the subscriptions first
H3 · Momo · 21–26
Describe what you want to hear
Lede · Space Grotesk · 17–22
A self-hosted music system that understands your library as sound, not just tags.
Body · Space Grotesk · 16 / 1.6
Body copy sits between 50 and 75 characters per line. Space Grotesk keeps the geometric, gently quirky character of the old brand while staying highly legible at UI sizes.
Eyebrow · JetBrains Mono · caps · +0.18em
Self-hosted · AI playlists
Small · mono · +0.02em
BPM 128 · key A min · energy 0.62
ALL CAPS · tracking required
Library care & integrity

Type rules

ALL CAPS always carries +0.06em or more. Latin display tightens to −0.02em; CJK stays at 0 tracking with line-height 1.3–1.4, including cover titles. Never fake italics — Momo has one weight and no oblique, so emphasis is colour and weight.

Buttons

One primary action per viewport. Hover moves the background, never the label toward the background. Minimum touch target is 44px.

Variants
Sizes
With icon

Forms

Every control defines focus-visible and error states. Labels are mono, uppercase and tracked; hints use muted ink, errors use the AA-safe danger ink with an icon.

Point your phone here — not Navidrome's own port.
Please enter a valid email address.

Chips, tags & badges

Chips filter and toggle; tags label; badges carry status. The same vocabulary runs from the marketing site to the app.

Chips & filters Upbeat
TagsMergeSetup5 min readRoll-up
Badges Done In progress Next Planned
Segmented

Cards, panels & callouts

Cards group; panels expose a head and body; callouts carry a single note. No coloured left-border tiles — structure comes from borders and surface steps.

The Brain

Ask in plain language and see exactly why each track made the cut.

Feature card

Roll-ups

Shuffle a whole branch of playlists, recursively.

Well

Now playing

Recessed surface for persistent chrome and inputs.

Panel head

0 nodes

Panel body content sits below a hairline divider.

Gold callout

For the one thing the reader must not miss on a page.

Warning

This proposal can't be applied as it stands.

Danger

Writing to the library is the riskiest thing SynAmp does.

Data & meters

Progress always shows filled encoding, never an empty outline. Metrics lead with the number; tables are dense but readable.

Analysed5,548▲ 1,204 this week
Unreadable1▼ 2 resolved
Subscriptions after P10
Analysing your library12%
AnalysedQueuedVerified
TrackBPMEnergy
Dreams1210.48
Weightless780.21
Teardrop770.36
Svefn-g-englar——

Feedback & overlays

Toasts confirm, dialogs interrupt, tooltips explain, empty states direct. All of them are keyboard reachable and announce politely.

Tooltip target

Select a playlist

Create a playlist to collect tracks, or a folder to group them. Roll-ups turn a whole branch into one live list.

Skeleton & inline code

Run synamp-sync, then press ⌘ K to search.

A quiet note for secondary information.

Accessibility

Accessibility is a gate, not a feature. Contrast, focus, motion and touch targets are enforced in the tokens themselves.

Contrast against the dark ground — WCAG 2.1 AA requires 4.5:1 for body text and 3:1 for large text and UI.
PairRatioVerdict
--fg #F1F1F1 on --bg #21263713.3:1AAA
--muted #9AA1B8 on --bg5.84:1AA
--gold #FFCD00 on --ink #0E0E1012.8:1AAA
--on-gold on --gold (button text)12.8:1AAA
--coral #FF4A47 on --bg4.53:1AA · large
--faint #6E7690 on --bg3.33:1Decorative only

Focus & keyboard

Every focusable element shows a 2px gold focus ring with a 2px offset. The full journey — nav, tabs, accordions, forms, dialogs — is keyboard operable; dialogs trap focus natively and close on Escape.

Motion & data

The visualizer never autoplays sound, and stays still under prefers-reduced-motion, Save-Data or a slow connection, with an explicit opt-in. All transitions collapse to near-zero under reduced-motion.

Targets & text

Interactive targets are 44px minimum. Body text never drops below 15px on mobile; nothing relies on colour alone — status always pairs a dot with a word.

Structure

Landmarks, a skip link, table captions, labelled inputs, descriptive alt text and aria-selected/aria-current state keep the page legible to assistive tech.