DESIGN.md inspired by Udio
A pitch-black stage with near-white Innovator display type and a single magenta-pink spotlight — a recording console reimagined as a creative canvas.
Compare to…
- bg
#000000 - bg-alt
#08080a - surface
#0a0a0a - surface-soft
rgba(255, 255, 255, 0.05) - surface-strong
rgba(255, 255, 255, 0.08) - text AAA · 19.9
#f9f9f9 - text-strong
#ffffff - text-muted
#c2c2c2 - text-soft
#8a8a8a - text-faint AA·LG · 4.4
#737373 - brand AA·LG · 4.5
#e30b5d - brand-deep
#c2094f - brand-soft
rgba(227, 11, 93, 0.15) - on-brand
#ffffff - link
#f9f9f9 - link-hover
#e30b5d - selected-bg
rgba(227, 11, 93, 0.15) - disabled
#737373 - border — · 1.2
rgba(255, 255, 255, 0.10) - border-strong — · 1.5
rgba(255, 255, 255, 0.18) - border-subtle
rgba(255, 255, 255, 0.05) - border-pink
rgba(227, 11, 93, 0.40) - success-bg
rgba(34, 197, 94, 0.12) - success-text
#86efac - warning-bg
rgba(245, 166, 35, 0.12) - warning-text
#fcd34d - danger-bg
rgba(239, 68, 68, 0.12) - danger-text
#fca5a5 - info-bg
rgba(255, 255, 255, 0.08) - info-text
#c2c2c2
- step-0 0px
- step-1 4px
- step-2 8px
- step-3 12px
- step-4 16px
- step-5 24px
- step-6 32px
- step-7 48px
- step-8 64px
- step-9 96px
- step-10 128px
- micro
2px - sm
4px - button
6px - md
8px - lg
12px - xl
16px - pill
9999px
Maps the 8 canonical role names to this entry's actual tokens. Use these to plug the design into role-aware tools — shadcn/ui themes, role-aware Tailwind plugins, atelier-lint — without hard-coding token names.
- background → bg
- foreground → text
- primary → brand
- primary-foreground → on-brand
- accent → brand
- muted → text-muted
- border → border
- ring → brand
theme.extend block for tailwind.config.js
:root { --bg, --text, --brand, … } you can paste anywhere
W3C Design Tokens Community Group format
Importable into Figma → Variables → Import
---
name: Udio
tagline: A pitch-black stage with near-white Innovator display type and a single magenta-pink spotlight — a recording console reimagined as a creative canvas.
updated_at: 2026-05-29T10:00:00.000Z
published_at: 2026-05-28T23:11:09.374Z
author: webdesignhot
source_url: https://www.udio.com
spec: webdesignhot/0.1
quality: curated
featured: false
categories: [ai, media]
tags: [dark, bold, sans, ai, music]
preview_swatch: ['#000000', '#e30b5d', '#f9f9f9']
related: [suno]
description: 'Udio''s site is a darkened stage. The canvas goes to absolute `#000000` black with near-white `#f9f9f9` text, and the display face is a custom grotesque — the *Innovator* family — carrying h1 at 60px. (An audit will read `Times` as the body font; that is the unloaded serif fallback, not the brand face.) The single chromatic accent is a hot magenta-pink `#e30b5d` reserved almost entirely for the Sign-Up CTA — a `6px`-radius pink button that is the one saturated mark on an otherwise monochrome black-and-white surface. Where Suno warms its canvas to `#101012` and rounds cards to 20px, Udio commits to absolute black and sharp `6px` corners — a harder, more console-like register where the user''s music, not the chrome, supplies all the color.'
# Canonical 8-role aliases (bg / text / brand / border / accent / muted / surface / danger).
# Maps role names to this entry's actual token names so role-aware
# downstream tools resolve `theme.background` → entry's `bg`, etc.
# Auto-generated by scripts/add-aliases.mjs — do not edit manually;
# regenerate after changing color token names.
aliases:
background: bg
foreground: text
primary: brand
primary-foreground: on-brand
accent: brand
muted: text-muted
border: border
ring: brand
colors:
# Primary
bg: '#000000' # absolute black — the darkened stage
bg-alt: '#08080a' # barely-lifted panel ground for inset zones
surface: '#0a0a0a' # raised panel, near-black
surface-soft: 'rgba(255, 255, 255, 0.05)' # 5% white whisper — Sign-In fill, hover wash
surface-strong: 'rgba(255, 255, 255, 0.08)' # 8% white emphasised panel
text: '#f9f9f9' # near-white display & body
text-strong: '#ffffff' # pure white for primary headlines
text-muted: '#c2c2c2' # muted UI label
text-soft: '#8a8a8a' # quiet metadata
text-faint: '#737373' # disabled / faintest
# Brand
brand: '#e30b5d' # signature hot magenta-pink — the spotlight, Sign-Up CTA
brand-deep: '#c2094f' # pressed pink
brand-soft: 'rgba(227, 11, 93, 0.15)' # pink wash for selected / hover
on-brand: '#ffffff' # white on pink
# Interactive
link: '#f9f9f9' # links stay near-white on black
link-hover: '#e30b5d' # pink on hover — the spotlight moment
selected-bg: 'rgba(227, 11, 93, 0.15)' # pink-wash selected row
disabled: '#737373'
# Borders
border: 'rgba(255, 255, 255, 0.10)' # 10% white hairline (default)
border-strong: 'rgba(255, 255, 255, 0.18)' # emphasised rule
border-subtle: 'rgba(255, 255, 255, 0.05)' # whisper hairline
border-pink: 'rgba(227, 11, 93, 0.40)' # brand-tinted ring
# Semantic
success-bg: 'rgba(34, 197, 94, 0.12)'
success-text: '#86efac'
warning-bg: 'rgba(245, 166, 35, 0.12)'
warning-text: '#fcd34d'
danger-bg: 'rgba(239, 68, 68, 0.12)'
danger-text: '#fca5a5'
info-bg: 'rgba(255, 255, 255, 0.08)'
info-text: '#c2c2c2'
typography:
display:
family: '"InnovatorFont", "Innovator", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif'
weights: [400, 500, 600, 700]
opentype-features: ['kern', 'liga']
note: 'Custom grotesque (Innovator family). Audits read "Times" — that is the unloaded serif fallback, NOT the brand face.'
body:
family: '"InnovatorFont", "Innovator", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif'
weights: [400, 500, 600]
opentype-features: ['kern', 'liga']
note: 'Body shares the Innovator family; "Times" in raw audit = fallback before the custom face loads.'
mono:
family: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace'
weights: [400, 500]
opentype-features: ['tnum', 'zero']
scale:
display-hero: { size: 80, weight: 700, lineHeight: 1.0, tracking: '-0.03em', family: display, opentype: 'kern liga' }
display-lg: { size: 56, weight: 700, lineHeight: 1.05, tracking: '-0.02em', family: display, opentype: 'kern liga' }
h1: { size: 60, weight: 400, lineHeight: 1.05, tracking: '-0.02em', family: display, note: 'observed 60px InnovatorFont — the homepage signature' }
h2: { size: 40, weight: 600, lineHeight: 1.1, tracking: '-0.018em', family: display }
h3: { size: 32, weight: 600, lineHeight: 1.2, tracking: '-0.012em', family: display }
h4: { size: 24, weight: 600, lineHeight: 1.25, tracking: '-0.005em', family: display }
h5: { size: 20, weight: 600, lineHeight: 1.3, tracking: '0', family: display }
eyebrow: { size: 12, weight: 600, lineHeight: 1.4, tracking: '0.08em', family: display, transform: uppercase }
body-lg: { size: 18, weight: 400, lineHeight: 1.55, tracking: '0', family: body }
body: { size: 16, weight: 400, lineHeight: 1.55, tracking: '0', family: body }
body-sm: { size: 14, weight: 400, lineHeight: 1.5, tracking: '0', family: body }
caption: { size: 13, weight: 400, lineHeight: 1.4, tracking: '0', family: body }
label: { size: 13, weight: 500, lineHeight: 1.4, tracking: '0', family: body }
caption-tabular: { size: 13, weight: 500, lineHeight: 1.4, tracking: '0', family: mono, opentype: 'tnum' }
overline: { size: 12, weight: 500, lineHeight: 1.4, tracking: '0.02em', family: body }
code: { size: 13, weight: 400, lineHeight: 1.55, tracking: '0', family: mono, opentype: 'tnum zero' }
radius:
micro: 2
sm: 4
button: 6
md: 8
lg: 12
xl: 16
pill: 9999
spacing:
base: 4
scale: [0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128]
layout:
page-width: 1280
prose-width: 720
site-gutter: 'clamp(20px, 5vw, 48px)'
header-height: 64
grid-columns: 12
feed-pattern: 'long vertical feed; full-bleed black stage; centered hero; composer / track rows below'
section-rhythm: '64-96px'
components:
button-primary:
background: '#e30b5d'
text: '#ffffff'
padding: '10px 16px'
radius: 6
border: 'none'
font: 'Innovator 500 / 14px'
hover-bg: '#c2094f'
active-bg: '#a8074494'
use: 'Primary CTA — magenta-pink Sign-Up button, the one saturated mark.'
button-secondary:
background: 'rgba(255, 255, 255, 0.05)'
text: '#ffffff'
padding: '10px 16px'
radius: 6
border: '1px solid rgba(255, 255, 255, 0.10)'
font: 'Innovator 500 / 14px'
hover-bg: 'rgba(255, 255, 255, 0.08)'
use: 'Sign-In twin — 5% white fill on black, exactly as sampled.'
button-ghost:
background: 'transparent'
text: '#f9f9f9'
padding: '8px 12px'
radius: 6
font: 'Innovator 500 / 14px'
hover-bg: 'rgba(255, 255, 255, 0.06)'
use: 'Quiet utility — nav links, footer, repeated inline.'
button-white:
background: '#f9f9f9'
text: '#000000'
padding: '10px 16px'
radius: 6
font: 'Innovator 500 / 14px'
hover-bg: '#ffffff'
use: 'Inverted CTA — near-white button on the black stage for high-emphasis non-brand actions.'
card:
background: '#0a0a0a'
border: '1px solid rgba(255, 255, 255, 0.10)'
radius: 12
padding: '24px'
use: 'Info / track card — near-black fill, 10% white hairline edge.'
card-track-tile:
background: '#0a0a0a'
border: 'none'
radius: 8
padding: '0'
aspect-ratio: '1 / 1'
use: 'Track-art tile — image bleeds to edge, sharp 8px corner.'
input:
background: '#0a0a0a'
border: '1px solid rgba(255, 255, 255, 0.18)'
radius: 6
padding: '8px 12px'
font: 'Innovator 400 / 14px'
placeholder-color: '#8a8a8a'
focus-ring: '0 0 0 2px #e30b5d'
use: 'Form fields, search.'
prompt-composer:
background: '#0a0a0a'
border: '1px solid rgba(255, 255, 255, 0.18)'
radius: 12
padding: '12px 16px'
font: 'Innovator 400 / 16px'
placeholder-color: '#8a8a8a'
inner-button: 'pink Create button hard-right with white label'
use: 'Studio prompt box — describe a track, generate; mirrors the in-product creator.'
badge-tag:
background: 'rgba(255, 255, 255, 0.08)'
text: '#c2c2c2'
padding: '4px 10px'
radius: 6
font: 'Innovator 500 / 12px'
use: 'Genre / mood chip.'
badge-pink:
background: 'rgba(227, 11, 93, 0.15)'
text: '#e30b5d'
padding: '4px 10px'
radius: 6
font: 'Innovator 500 / 12px'
use: '"New" / "Pro" badge — pink-wash pill.'
nav-link:
background: 'transparent'
text: '#f9f9f9'
padding: '8px 12px'
font: 'Innovator 500 / 14px'
hover-text: '#e30b5d'
active-bg: 'rgba(255, 255, 255, 0.06)'
motion:
ease-standard: 'cubic-bezier(0.4, 0, 0.2, 1)'
ease-emphasized: 'cubic-bezier(0.2, 0, 0, 1)'
duration-fast: 150
duration-standard: 240
duration-slow: 320
duration-page: 480
reduced-motion: 'respects prefers-reduced-motion: reduce — looping waveforms freeze, transforms collapse to opacity-only, durations halve.'
breakpoints:
mobile: 640
tablet: 1024
desktop: 1280
wide: 1536
shadows:
none: 'none'
ambient: 'rgba(0, 0, 0, 0.40) 0 1px 3px'
standard: 'rgba(0, 0, 0, 0.50) 0 4px 12px'
elevated: 'rgba(0, 0, 0, 0.60) 0 16px 32px -8px'
pink-glow: '0 0 24px rgba(227, 11, 93, 0.35)'
modal: 'rgba(0, 0, 0, 0.80) 0 24px 48px -12px'
ring: '0 0 0 2px #e30b5d'
ring-soft: '0 0 0 3px rgba(227, 11, 93, 0.30)'
accessibility:
contrast-text-on-bg: 19.95 # #f9f9f9 on #000000 — AAA at all sizes
contrast-text-strong-on-bg: 21.0 # #ffffff on #000000 — AAA, the maximum
contrast-text-muted-on-bg: 11.79 # #c2c2c2 on #000000 — AAA
contrast-text-soft-on-bg: 6.08 # #8a8a8a on #000000 — AA at all sizes
contrast-on-brand: 4.70 # #ffffff on #e30b5d — AA at body sizes
contrast-brand-on-bg: 4.47 # #e30b5d on #000000 — AA at body sizes (large-text / link-hover safe)
focus-ring: '2px solid #e30b5d with 2px offset'
reduced-motion-honored: true
keyboard-nav: 'tab order: skip-link → masthead → composer → feed → footer; Enter activates focused CTA.'
prose-line-length: 'capped at 720px on text pages.'
dark-mode: dark-only # Udio is dark-only; the black stage is the brand.
colors-dark: same as colors # primary surface is already black.
---
## 1. Visual Theme & Atmosphere
Udio is a darkened stage. The canvas drops to absolute `#000000` black — no warm tint, no near-black compromise — and the type rests on it in `#f9f9f9`, a near-white that sits a single notch below pure white. The combination is the brand's defining mood: harder and more absolute than Suno's warm `#101012` booth, more committed than a generic dark dashboard. Where Suno stages a recording booth at golden hour, Udio runs the lights all the way down. The page reads like a mixing console in a blacked-out studio — the only light is what you bring to it.
The display face is the custom **Innovator** family — a clean modern grotesque that carries the homepage h1 at **60px**. This is the single most important thing to get right and the easiest to miss: a raw CSS audit of Udio reports the body font as `Times`, which looks like a serif brand. It is not. `Times` is the **unloaded serif fallback** that shows for a flash before the custom Innovator web font arrives; the real brand face is a sans-serif grotesque across both display and body. Any reproduction that sets Udio in a serif has misread the fallback for the face.
The single chromatic accent is **hot magenta-pink `#e30b5d`** (rgb 227, 11, 93). Its discipline is extreme: in the sampled chrome the pink appears almost exclusively on the **Sign-Up** call to action — a `6px`-radius solid-pink button — while its twin, Sign-In, stays a quiet 5%-white fill. Everything else on the marketing surface is black, near-white, and grey. The pink is a spotlight: one saturated mark on a monochrome stage, drawing the eye to the single action that matters. This is the same restraint Suno uses with its hot pink, but Udio is even stingier with it and pairs it with absolute black rather than a warmed canvas.
The shapes are sharp. Buttons and inputs round to just **6px** — a tight, console-like corner, far from Suno's 20px album tiles or Apple Music's near-circles. The result is a surface that feels like equipment rather than a soft consumer app: precise, technical, built for making rather than browsing. Section rhythm runs 64–96px, hairlines are 10% white, and there are no gradients or meshes — the black is flat and total, so the user's generated tracks and artwork can supply every bit of color the page contains.
Atmospheric vocabulary: **blacked-out-stage, absolute-black-canvas, near-white-Innovator-type, magenta-pink-spotlight, sharp-6px-corner, console-register, single-saturated-mark, fallback-is-not-the-face, monochrome-chrome, music-supplies-the-color.**
**Key Characteristics**
- Absolute `#000000` black canvas — no warm tint, the lights are fully down
- Near-white `#f9f9f9` type — one notch below pure white, easier on the eyes than `#fff`
- Custom Innovator grotesque (NOT Times — that is the unloaded fallback) at 60px h1
- Hot magenta-pink `#e30b5d` accent — a single spotlight, almost only on the Sign-Up CTA
- Sharp `6px` button/input radius — console-precise, not soft-consumer
- Sign-In = 5% white fill; Sign-Up = solid pink — the asymmetry IS the hierarchy
- Monochrome chrome — black, near-white, grey; user content supplies all color
- 10% white hairlines — tonal stacking, no heavy cast shadows
- Flat and total — no gradients, no meshes, no glow except the rare pink-glow state
- Dark-only — the black stage is the brand; there is no light variant
## 2. Color Palette & Roles
### Primary
- **bg** `#000000` — absolute black; the darkened stage, the page ground.
- **text** `#f9f9f9` — near-white display and body copy; one notch below pure white for reduced glare on full black.
- **bg-alt** `#08080a` — barely-lifted panel ground for inset zones.
- **surface** `#0a0a0a` — raised panel / card fill, still reads near-black.
### Brand
- **brand** `#e30b5d` — hot magenta-pink spotlight (rgb 227, 11, 93). Primary CTA, link hover, focus ring, the single chromatic accent.
- **brand-deep** `#c2094f` — pressed / hover-darkened pink.
- **brand-soft** `rgba(227, 11, 93, 0.15)` — 15% pink wash for selected rows and hovered states.
- **on-brand** `#ffffff` — white label on the pink button.
### Accent
Udio has **no secondary chromatic accent**. The brand pink is the only saturated color on the chrome; everything else is monochrome. Resist the urge to add a blue or teal — the single-spotlight discipline is the brand.
### Interactive
- **link** `#f9f9f9` — links stay near-white on black; underline on hover for affordance.
- **link-hover** `#e30b5d` — pink on hover, the spotlight moment.
- **selected-bg** `rgba(227, 11, 93, 0.15)` — selected row / active item in lists.
- **disabled** `#737373` — neutral disabled chrome.
### Neutral Scale
- **near-white** `#f9f9f9` — primary text.
- **white** `#ffffff` — rare absolute white for the highest-emphasis headline only.
- **grey-300** `#c2c2c2` — muted UI label.
- **grey-500** `#8a8a8a` — quiet metadata, placeholders.
- **grey-600** `#737373` — disabled / faintest readable.
- **panel** `#0a0a0a` — raised surfaces.
- **whisper** `rgba(255, 255, 255, 0.05)` — softest hover wash; the Sign-In fill.
### Surface & Borders
- **surface-0 (page)** — `#000000` absolute black stage.
- **surface-1 (panel)** — `#0a0a0a` raised card.
- **surface-soft** — `rgba(255, 255, 255, 0.05)` — 5% white whisper (Sign-In button, hover).
- **surface-strong** — `rgba(255, 255, 255, 0.08)` — 8% white emphasised panel.
- **border** `rgba(255, 255, 255, 0.10)` — 10% white hairline (default).
- **border-strong** `rgba(255, 255, 255, 0.18)` — emphasised rule, input edge.
- **border-subtle** `rgba(255, 255, 255, 0.05)` — quietest division.
- **border-pink** `rgba(227, 11, 93, 0.40)` — brand-tinted ring for focus/active.
### Shadow Colors
Udio's shadows are **deep black on black** — the canvas already absorbs cast shadows, so elevation is carried mostly by tonal stepping (`#000000` → `#0a0a0a` → 5–8% white) rather than visible drop shadows. The one brand-tinted exception is a **pink glow** (`0 0 24px rgba(227, 11, 93, 0.35)`) used sparingly on an actively-generating or now-playing element — the single place the spotlight bleeds into elevation.
### Semantic
- **success** — bg `rgba(34, 197, 94, 0.12)`, text `#86efac`. Save / generation-complete confirmation.
- **warning** — bg `rgba(245, 166, 35, 0.12)`, text `#fcd34d`.
- **danger** — bg `rgba(239, 68, 68, 0.12)`, text `#fca5a5`.
- **info** — bg `rgba(255, 255, 255, 0.08)`, text `#c2c2c2` — stays monochrome rather than borrowing a blue, to protect the single-accent rule.
## 3. Typography Rules
### Font Family
- **Display & Body**: `"InnovatorFont", "Innovator", ui-sans-serif, system-ui, -apple-system, sans-serif` — a custom modern grotesque, self-hosted. **Critical:** an automated audit of Udio reports `Times` as the computed font; that is the *unloaded serif fallback* shown for a flash before the Innovator web font arrives, **not** the brand face. Udio is a sans-serif brand. Display and body share the one family.
- **Mono**: `ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace` — reserved for tabular data (durations, BPM, sample rates).
- **OpenType features**: `kern` and `liga` enabled across the family. `tnum` and `zero` in mono.
### Hierarchy
| Role | Font | Size | Weight | Line Height | Letter Spacing | OT Features | Notes |
|---|---|---|---|---|---|---|---|
| Display Hero | Innovator | 80px | 700 | 1.0 | -0.03em | kern liga | Reserved for major launches |
| Display Large | Innovator | 56px | 700 | 1.05 | -0.02em | kern liga | Section lead |
| H1 | Innovator | 60px | 400 | 1.05 | -0.02em | kern liga | Homepage hero — observed 60px, the signature |
| H2 | Innovator | 40px | 600 | 1.1 | -0.018em | liga | Major section |
| H3 | Innovator | 32px | 600 | 1.2 | -0.012em | liga | Sub-section |
| H4 | Innovator | 24px | 600 | 1.25 | -0.005em | — | Card heading |
| H5 | Innovator | 20px | 600 | 1.3 | normal | — | Inline emphasis |
| Eyebrow | Innovator | 12px | 600 | 1.4 | 0.08em | uppercase | Section pre-label |
| Body Large | Innovator | 18px | 400 | 1.55 | normal | — | Lede paragraph |
| Body | Innovator | 16px | 400 | 1.55 | normal | — | Default body (observed 16/400) |
| Body Small | Innovator | 14px | 400 | 1.5 | normal | — | Compact UI body |
| Caption | Innovator | 13px | 400 | 1.4 | normal | — | Image captions |
| Label | Innovator | 13px | 500 | 1.4 | normal | — | UI labels, chips |
| Caption Tabular | mono | 13px | 500 | 1.4 | normal | tnum | Track duration, BPM |
| Overline | Innovator | 12px | 500 | 1.4 | 0.02em | — | Minor pre-label |
| Code | mono | 13px | 400 | 1.55 | normal | tnum zero | Inline code (rare) |
### Principles
- **The brand face is sans-serif Innovator — never a serif.** If your reproduction is set in Times or any serif, you have copied the unloaded fallback, not the face. This is Udio's number-one reproduction trap.
- **Hero h1 observed at 60px.** The homepage signature is Innovator at 60px on a tight 1.05 line-height; the 80px display-hero is reserved for launch banners.
- **Negative tracking at display sizes only.** -0.02em to -0.03em above 40px; normal tracking at 24px and below — the grotesque is already compact.
- **Body is 16px / 400 / 1.55.** Comfortable editorial leading, not chat-app tight; the black stage benefits from a little air between lines.
- **Single-family discipline.** Innovator carries display, body, captions, and labels; mono appears only for tabular numerals.
- **Near-white, not pure white, for running text.** `#f9f9f9` at body sizes reduces halation against full black; reserve `#ffffff` for the single highest-emphasis headline.
- **No italics in display.** Italics belong to occasional inline emphasis in body copy.
- **Eyebrows go uppercase at 0.08em.** The widest tracking in the system, used to label sections without competing with the grotesque headlines.
## 4. Component Stylings
### Buttons
**Primary (Pink Sign-Up)**
- Background: `#e30b5d` magenta-pink. Text: `#ffffff`, Innovator 500 / 14px.
- Padding: `10px 16px`. Radius: `6px`. No border.
- Hover: bg → `#c2094f` over 240ms.
- Active: bg darkens further (pressed beat).
- Focus: 2px pink ring with 2px offset.
- Use: The primary CTA — *Sign Up, Create, Get Pro.* The one saturated mark on the page; never duplicate it.
**Secondary (Sign-In, 5% White)**
- Background: `rgba(255, 255, 255, 0.05)`. Text: `#ffffff`, Innovator 500 / 14px.
- Border: `1px solid rgba(255, 255, 255, 0.10)`. Radius: `6px`.
- Hover: bg → `rgba(255, 255, 255, 0.08)`.
- Use: Twin to primary — *Sign In, Learn more.* Sampled exactly as a 5%-white fill; the deliberate quietness next to the pink IS the hierarchy.
**Ghost (Quiet)**
- Background: transparent. Text: `#f9f9f9`, Innovator 500 / 14px.
- Padding: `8px 12px`. Radius: `6px`.
- Hover: bg → `rgba(255, 255, 255, 0.06)`.
- Use: Nav links, footer, repeated inline utilities.
**White (Inverted)**
- Background: `#f9f9f9`. Text: `#000000`, Innovator 500 / 14px.
- Padding: `10px 16px`. Radius: `6px`.
- Hover: bg → `#ffffff`.
- Use: High-emphasis non-brand action where pink would be wrong — near-white button on the black stage.
### Cards
**Info / Track Card**
- Background: `#0a0a0a`. Border: `1px solid rgba(255, 255, 255, 0.10)`. Radius: `12px`. Padding: `24px`.
- Shadow: none at rest; on hover, `rgba(0, 0, 0, 0.50) 0 4px 12px`.
- Use: Feature card, plan card, capability tile.
**Track-Art Tile**
- Background: `#0a0a0a` (placeholder while artwork loads). Border: none. Radius: `8px`. Aspect: 1:1.
- Hover: 1.02× scale + soft black shadow; play-button overlay fades in.
- Use: Generated-track grid — artwork bleeds to edge, title/artist drop below in near-white / grey.
**Now-Generating Tile**
- Same as track tile, but with `pink-glow` shadow (`0 0 24px rgba(227, 11, 93, 0.35)`) and an optional 1px pink hairline ring.
- Use: The single tile that is actively generating or playing — the pink glow signals state without a separate badge.
### Badges, Tags, Pills
**Genre Tag** — bg `rgba(255, 255, 255, 0.08)`, text `#c2c2c2`, Innovator 500 / 12px, padding `4px 10px`, radius `6px`. Hover deepens bg to 12% white.
**Pink Badge** — bg `rgba(227, 11, 93, 0.15)`, text `#e30b5d`, radius `6px`. "New", "Pro", "Beta" markers — the only badge that may carry the brand color.
**Eyebrow Label** — no chrome, just type. Innovator 600 / 12px / uppercase / 0.08em tracking, color `#8a8a8a`.
### Inputs / Forms
**Text Input**
- Background: `#0a0a0a`. Border: `1px solid rgba(255, 255, 255, 0.18)`. Radius: `6px`. Padding: `8px 12px`.
- Font: Innovator 400 / 14px. Placeholder: `#8a8a8a`.
- Focus: `0 0 0 2px #e30b5d` ring, border → `#e30b5d`.
- Error: border → `#ef4444`, helper red below.
**Prompt Composer (Studio)**
- Background: `#0a0a0a`. Border: `1px solid rgba(255, 255, 255, 0.18)`. Radius: `12px`. Padding: `12px 16px`.
- Font: Innovator 400 / 16px. Placeholder: `#8a8a8a` ("Describe your song…").
- Inner action: pink **Create** button hard-right with white label.
- Use: The product's hero shape — describe-and-generate box that ties marketing to the in-product creator.
### Navigation
- Header height `64px`. Background `transparent` over the black stage (`backdrop-filter: blur(12px)` on scroll).
- Logo: Udio wordmark in near-white, Innovator 600.
- Nav links: Innovator 500 / 14px, color `#f9f9f9`, padding `8px 12px`. Hover: text → `#e30b5d`.
- Right-side: secondary "Sign In" (5% white fill, 6px) + primary pink "Sign Up" (6px). The asymmetry is the whole CTA story.
- Mobile (<640px): hamburger collapses to a full-screen sheet; links stack at 20px / 600.
### Optional Components
**Dropdown Menu** — bg `#0a0a0a`, border `rgba(255, 255, 255, 0.10)`, radius `8px`, shadow `rgba(0, 0, 0, 0.60) 0 12px 24px -8px`. Items: Innovator 400 / 14px, hover bg `rgba(255, 255, 255, 0.06)`.
**Tooltip** — bg `#0a0a0a`, text `#f9f9f9`, radius `6px`, padding `6px 10px`, font `12px / 500`.
**Toast** — bg `#0a0a0a`, border `rgba(255, 255, 255, 0.10)`, radius `8px`, padding `12px 16px`, shadow standard.
**Modal** — bg `#0a0a0a`, radius `12px`, shadow `rgba(0, 0, 0, 0.80) 0 24px 48px -12px`, max-width `560px`. Backdrop: 80% black over the already-black stage.
**Waveform Visualizer** — translucent panel `rgba(255, 255, 255, 0.05)` with near-white bars; pink-tinted only on the actively-playing track.
## 5. Layout Principles
### Spacing System
- **Base unit**: 4px.
- **Scale**: 0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128.
- **Density observation**: Udio is *medium*. Marketing sections breathe at 64–96px rhythm; product rows and track grids pack tighter at 16–24px gutters. The black canvas tolerates dense grids because the spacing between tiles reads as negative space, not clutter.
### Grid & Container
- **Page max width**: `1280px` for chrome; feed and grid pages bleed to viewport on the black ground.
- **Site gutter**: `clamp(20px, 5vw, 48px)`.
- **Grid**: 12 columns with 16–24px gutters.
- **Track grid**: 4–6 columns at 1:1 aspect, collapsing to 3 → 2 → 1 across breakpoints.
- **Hero treatment**: centered 60px Innovator headline, body 16px below in near-white, prompt composer / dual CTA beneath; full-bleed black behind.
### Whitespace Philosophy
The whitespace is **stage-dark and total**. Because the ground is absolute black, empty space reads as depth rather than emptiness — the page feels like a room with the lights off, not a blank document. Section gutters at 64–96px; intra-section at 16–24px.
### Section Cadence
- Hero (black stage, centered) → Capability / feature panels (black, occasional 8% white inset cards) → Track showcase grid (full-bleed) → Pricing → Footer (`#0a0a0a`, a single tonal step up).
- The whole site stays in black territory; there is no light section.
- Section breaks: 64–96px vertical space + 1px hairlines (`rgba(255, 255, 255, 0.10)`).
## 6. Shapes & Radius Scale
| Tier | Value | Use |
|---|---|---|
| Micro | 2px | Decorative dividers, tag corners |
| Standard (sm) | 4px | Compact chips (rare) |
| Button | 6px | Primary / secondary / ghost buttons, inputs — Udio's signature corner |
| Comfortable (md) | 8px | Track tiles, tooltips, dropdowns |
| Relaxed (lg) | 12px | Cards, composer, modals |
| Featured (xl) | 16px | Large feature panels |
| Pill | 9999px | Reserved — rare, for filter chips only |
Udio's signature radius is **6px on buttons and inputs** — a sharp, console-precise corner sampled directly from both CTAs. Cards relax slightly to 12px and track tiles to 8px, but the whole system stays well below Suno's 20px. Pills are deliberately rare; Udio's controls read as equipment, not soft consumer chips.
## 7. Depth & Elevation
| Level | Treatment | Use |
|---|---|---|
| 0 | Flat — no shadow | Default black page surface, hero, body sections |
| 1 | Tonal — `#0a0a0a` against `#000000` | Cards, panels |
| 2 | `rgba(0,0,0,0.40) 0 1px 3px` | Sticky nav on scroll |
| 3 | `rgba(0,0,0,0.50) 0 4px 12px` | Hover-lifted cards |
| 4 | `rgba(0,0,0,0.60) 0 16px 32px -8px` | Dropdowns, popovers |
| 5 | `rgba(0,0,0,0.80) 0 24px 48px -12px` | Modals, dialogs |
| Special | `0 0 24px rgba(227, 11, 93, 0.35)` | Pink-glow on now-generating / now-playing tile only |
### Shadow Philosophy
Udio's depth is **tonal-first against absolute black**. Because the canvas is `#000000`, a cast shadow has almost nothing darker to fall onto, so elevation is communicated by stepping the surface tone up (`#000000` → `#0a0a0a` → 5–8% white) and by hairline borders rather than by visible drop shadows. The single brand-tinted exception is the pink glow on an actively-generating tile — the only place the spotlight color bleeds into elevation, used to signal *working / playing* without a separate badge.
## 8. Interaction & Motion
### Easing Curves
- **`ease-standard`**: `cubic-bezier(0.4, 0, 0.2, 1)` — Material default for most transitions.
- **`ease-emphasized`**: `cubic-bezier(0.2, 0, 0, 1)` — punchier exit; modal and sheet enter.
### Duration Buckets
- **Fast (150ms)** — color transitions, focus rings, link hovers.
- **Standard (240ms)** — button hover, card hover, dropdown reveal.
- **Slow (320ms)** — modal enter/exit, composer expansion.
- **Page (480ms)** — route transitions, hero reveal.
### Per-Component Micro-States
- **Button hover (primary pink)**: bg `#e30b5d` → `#c2094f` over 240ms; no scale — the button stays planted.
- **Sign-In hover**: fill `5% → 8%` white over 150ms.
- **Track tile hover**: 1.02× scale over 240ms + soft black shadow; play overlay fades in over 150ms.
- **Now-generating tile**: pink glow pulses subtly (`@keyframes glow-pulse` 35% → 50% opacity over 2s, infinite, respects reduced-motion).
- **Link hover**: color `#f9f9f9` → `#e30b5d` over 150ms; underline thickens 1px → 2px.
- **Composer focus**: ring grows 2px → 3px at 30% pink; placeholder fades to 60%.
### Page Transitions
Hero / feed cross-fade over 480ms. Track tiles fade in via `IntersectionObserver` at 80% viewport, 320ms with 12px translate-up. The black ground holds constant across navigation so transitions read as content moving on a fixed stage.
### Reduced Motion
`@media (prefers-reduced-motion: reduce)` — looping waveforms freeze on a static frame; pink glow stops pulsing (holds at 35%); all transforms collapse to opacity-only; durations halved.
## 9. Accessibility & A11y
### Contrast Pairs
- **`#f9f9f9` text on `#000000` bg**: 19.95:1 — AAA at all sizes.
- **`#ffffff` text on `#000000` bg**: 21.0:1 — AAA, the theoretical maximum.
- **`#c2c2c2` text on `#000000` bg**: 11.79:1 — AAA at all sizes.
- **`#8a8a8a` text on `#000000` bg**: 6.08:1 — AA at all sizes, AAA at large.
- **`#737373` text on `#000000` bg**: 4.43:1 — AA at large / disabled only.
- **`#ffffff` text on `#e30b5d` brand**: 4.70:1 — AA at body sizes; safe for the pink CTA label.
- **`#e30b5d` text on `#000000` bg**: 4.47:1 — AA at large text / link-hover; keep pink text at ≥18px or bold, or use near-white for small body links.
### Focus Indicators
- Default ring: `0 0 0 2px #e30b5d` with 2px offset.
- Soft ring (composer focus): `0 0 0 3px rgba(227, 11, 93, 0.30)`.
- Every interactive surface shows a visible focus state; the pink ring reads clearly against the black ground.
### ARIA Patterns
- **Navigation**: `<nav aria-label="Main">` with a skip-link.
- **Composer**: `<form aria-label="Create a song">` with an `aria-label` on the input.
- **Track grid**: `role="feed"`; each tile is `<article>` with `aria-labelledby` pointing at the title; the now-playing tile uses `aria-current="true"`.
- **Audio player**: `role="region" aria-label="Audio player"` with labelled controls.
- **Dialog**: `role="dialog" aria-modal="true" aria-labelledby` with a focus trap.
- **Live regions**: `aria-live="polite"` for "song ready" toasts.
### Keyboard Navigation
- Tab order: skip-link → masthead → composer → feed → footer.
- `Enter` activates the focused CTA; `Space` toggles play/pause on a focused tile.
- Arrow keys navigate within the track grid.
- `Esc` closes modals and sheets.
### Screen Reader Hints
- Track tiles: alt text matches "<title> by <artist>".
- Now-playing state: `aria-current="true"` plus `aria-label="Now playing: <title>"`.
- Generating state: `aria-busy="true"` while a track is being created.
- Decorative pink glow: `aria-hidden="true"`.
### Reduced Motion
Honoured globally. Looping waveforms freeze; pink glow holds static; durations halved.
## 10. Responsive Behavior
### Breakpoints
| Name | Width | Use |
|---|---|---|
| Mobile | < 640px | Single-column feed; full-screen nav sheet |
| Tablet | 640–1024px | 2–3 column track grid |
| Desktop | 1024–1280px | 4-column track grid; full nav |
| Wide | 1280–1536px | 5-column track grid |
| Ultra | > 1536px | Page locks at 1280; gutters expand; grid up to 6 columns |
### Touch Targets
- Minimum tap target: 44×44px.
- Buttons: 44px minimum height on mobile (vertical padding bumps to 12px).
- Track tile: tile = tap target; play overlay icon 48×48 at center.
- Composer / send buttons: 48×48 visual with extended tap area.
### Collapsing Strategy
- **Header**: full nav at ≥1024px; hamburger sheet below.
- **Hero**: 60px → 44px → 34px headline across desktop/tablet/mobile.
- **Composer**: full-width at mobile; max-width 720px on tablet+; centered.
- **Track grid**: 5-up → 4-up → 3-up → 2-up → 1-up across sizes.
- **Section spacing**: 96px → 64px → 48px across sizes.
- **CTAs**: Sign-In + Sign-Up sit side-by-side on desktop; stack with Sign-Up on top on mobile.
### Image Behavior
- Track artwork uses `srcset` with 1x/2x/3x for crisp Retina rendering.
- Native lazy-loading on below-fold tiles.
- `aspect-ratio: 1 / 1` locked.
### Container Queries
Used inside track tiles to switch caption layout (single line vs. wrap) when tile width crosses 200px.
## 11. Content & Voice
### Tone
**Direct, capable, creator-facing.** Udio writes like a piece of pro equipment that happens to be friendly — confident and concrete, light on marketing exuberance. Headlines state the capability ("Make your music"); subheads explain how. The voice positions Udio as a serious creative instrument rather than a toy.
### Microcopy Patterns
- **Button verbs**: "Sign Up," "Sign In," "Create," "Generate," "Continue," "Save." Title-case, plain.
- **Error messages**: "Couldn't generate that track. Try again, or [contact support]."
- **Success confirmations**: "Saved." "Your track is ready." Brief.
- **Loading states**: "Generating…" or "Creating your track…" — process-honest language.
### Empty States
- *"No tracks yet. Describe one above to get started."*
- *"No matches. Try a different prompt or genre."*
- Empty is treated as normal, never as an error.
### CTA Verb Conventions
- Primary on hero: "Sign Up," "Create," "Start creating"
- Secondary: "Sign In," "Hear examples," "See pricing"
- Footer: "Pricing," "Discord," "API," "Support"
The voice is **plain-spoken and tool-confident** — closer to a DAW's quiet competence than to a hype-driven consumer launch.
## 12. Dark Mode & Theming
**Dark-only — the black stage is the brand.** Udio offers no light variant; the marketing surface, the track grid, and the studio all render on the `#000000` ground. That is the brand's defining choice, the same way Suno's booth is dark-first.
There are no light-mode tokens to flip — a theme toggle audit returns score 0, no signals. If a light surface is ever needed (a rare legal or print-export context), invert to `bg: #f9f9f9 / text: #0a0a0a` and keep the pink at `#e30b5d` (it darkens to `#c2094f` for AA contrast on near-white), but **never** render the marketing surface or the track grid in light mode. The stage stays black.
## 13. Lineage & Influences
Udio's identity is **a recording console reimagined as a black creative canvas**. The ground is absolute `#000000`; the type is near-white `#f9f9f9` in the custom Innovator grotesque; and the one chromatic mark is a hot magenta-pink `#e30b5d` reserved almost entirely for the Sign-Up CTA. The system is deliberately monochrome so that user-generated tracks and artwork supply all the color — the chrome is the dark room, the music is the light. The sharp `6px` corners and the absence of gradients give the surface a precise, equipment-like feel: this is a studio tool, not a soft consumer feed.
The lineage runs through three streams. From **dark-canvas music UI** (Apple Music, Spotify's darker surfaces) it takes the black ground and the album-tile grid that lets artwork carry the color. From **the pink-magenta music accent** — the same family SoundCloud and Suno use — it takes a single saturated cue color, but applies it with more restraint, holding it almost entirely on one button. From **modern grotesque type culture** it takes a clean custom sans (Innovator) at large display sizes with tight tracking, in the register of foundries like Pangram Pangram. What Udio rejects: Suno's *warmed* `#101012` canvas and soft 20px album tiles — Udio commits to absolute black and sharp 6px corners; and it rejects any secondary accent, keeping the page strictly black, near-white, grey, and one pink.
**Named influences:**
- **Apple Music** — dark-canvas + album-tile grid pattern; artwork carries the color. *https://www.apple.com/apple-music/*
- **Spotify** — dark music-UI register; headline-weight display type. *https://open.spotify.com*
- **Suno** — the closest contemporary AI-music sibling; shared hot-pink-on-dark language, which Udio renders harder (absolute black, sharper corners). *https://suno.com*
- **SoundCloud** — the legacy pink-magenta cue color as a music-context accent. *https://soundcloud.com*
- **Pangram Pangram** — modern-grotesque type culture that informs the custom Innovator display register. *https://pangrampangram.com*
## 14. Do's and Don'ts
### Do
- **Do** keep the canvas at absolute `#000000` — Udio commits all the way to black, no warm tint.
- **Do** set type in the sans-serif **Innovator** family; treat any `Times` reading as the unloaded fallback to discard.
- **Do** use near-white `#f9f9f9` for running text rather than pure white — it cuts halation on full black.
- **Do** reserve `#e30b5d` pink for the single most important action (Sign-Up / Create) and link hover; one saturated mark per view.
- **Do** keep Sign-In quiet — a 5% white fill — so the pink Sign-Up clearly wins. The asymmetry is the hierarchy.
- **Do** round buttons and inputs to just `6px` — the sharp console corner is the brand.
- **Do** carry elevation by tonal stepping (`#000000` → `#0a0a0a` → 5–8% white) and hairlines, not heavy drop shadows.
- **Do** use 10% white hairlines (`rgba(255, 255, 255, 0.10)`) for default borders.
- **Do** add the pink glow only to a now-generating / now-playing element — the one brand-tinted shadow.
- **Do** let user artwork supply the color; keep the chrome monochrome.
### Don't
- **Don't** set Udio in a serif — `Times` in the audit is the fallback, not the face. This is the top reproduction error.
- **Don't** warm the canvas to `#101012` or any near-black; that is Suno's register, not Udio's.
- **Don't** introduce a second chromatic accent (no blue, no teal) — the single-spotlight discipline is the brand.
- **Don't** spread the pink across general UI, fills, or panels beyond the 15% wash; solid pink everywhere collapses the spotlight.
- **Don't** round buttons past `6–8px` into Suno's 20px territory — the corners must stay sharp.
- **Don't** make Sign-In as loud as Sign-Up; the muted secondary is intentional.
- **Don't** add gradients, meshes, or glow beyond the single pink-glow state — the black is flat and total.
- **Don't** use pure white for body copy at small sizes; halation against `#000000` hurts readability.
- **Don't** use pink text below 18px on black without bumping weight — `#e30b5d` on black is 4.47:1 (large-text AA only).
- **Don't** ship a light mode for the marketing surface or track grid — the stage is black.
## 15. Agent Prompt Guide
### Quick Color Reference
```
bg: #000000
bg-alt: #08080a
surface: #0a0a0a
surface-soft: rgba(255, 255, 255, 0.05)
text: #f9f9f9
text-strong: #ffffff
text-muted: #c2c2c2
text-soft: #8a8a8a
brand: #e30b5d
brand-deep: #c2094f
border: rgba(255, 255, 255, 0.10)
border-strong: rgba(255, 255, 255, 0.18)
```
### Example Component Prompts
1. **"Create a Udio-style hero — absolute `#000000` black canvas, a centered 60px headline in the Innovator grotesque (sans-serif, NOT a serif) with `-0.02em` tracking in near-white `#f9f9f9`. Below it, 16px body weight 400 in `#c2c2c2`. A dual CTA row: a `6px`-radius solid magenta-pink `#e30b5d` 'Sign Up' button with white label, and beside it a quiet 'Sign In' button at `rgba(255, 255, 255, 0.05)` fill with a 10% white hairline."**
2. **"Design a Udio prompt composer — `#0a0a0a` background, `1px rgba(255, 255, 255, 0.18)` border, `12px` radius, 16px placeholder 'Describe your song…' in `#8a8a8a` (Innovator 400). A pink `#e30b5d` 'Create' button hard-right with a white label. Focus expands the ring to 3px at 30% pink."**
3. **"Build a Udio track tile — 1:1 aspect, `8px` radius, `#0a0a0a` placeholder ground while artwork loads, no border. Hover scales 1.02× with a soft black shadow and a fade-in play overlay. Title and artist drop below: title in Innovator 500 / 14px near-white, artist in 400 / 13px `#8a8a8a`."**
4. **"Render the Udio now-generating state — same as the track tile, but add a pink glow shadow `0 0 24px rgba(227, 11, 93, 0.35)` and an optional 1px pink hairline ring. The glow pulses subtly between 35% and 50% opacity over 2s, paused under prefers-reduced-motion."**
5. **"Compose a Udio nav — 64px header, transparent over the black stage with 12px backdrop-blur on scroll, Udio wordmark hard-left in near-white Innovator 600. Link list Innovator 500 / 14px near-white with `#e30b5d` hover. Right-side: quiet 'Sign In' (5% white fill, 6px) + primary pink 'Sign Up' (6px). Make the two CTAs visibly asymmetric."**
6. **"Create a Udio pricing card — `#0a0a0a` fill, `1px rgba(255, 255, 255, 0.10)` hairline, `12px` radius, 24px padding. Plan name in Innovator 600 / 24px near-white, price in 700 / 40px, feature list in 400 / 16px `#c2c2c2`. The Pro plan's CTA is the only pink `#e30b5d` button; the free plan uses the 5%-white secondary."**
### Iteration Guide
1. **Start with `#000000`, not a near-black.** If the bg is `#101012` or any warm tint, you're in Suno's booth; Udio runs the lights fully down.
2. **Make sure the type is sans-serif.** If your headline rendered in a serif, you copied the `Times` fallback — swap to a clean grotesque (Innovator) immediately.
3. **Use near-white `#f9f9f9`, not `#ffffff`, for body.** The single notch down reduces glare on full black.
4. **Add the pink exactly once.** `#e30b5d` belongs on the single primary action (Sign-Up / Create) and link hover — never as a fill or a second button.
5. **Mute the secondary CTA.** Sign-In should be a 5%-white fill so the pink Sign-Up wins; if both buttons look equally loud, you've lost the hierarchy.
6. **Sharpen the corners to 6px.** If buttons and inputs are at 12–20px, you're too soft; tighten to the console radius.
7. **Strip any second accent.** Remove blues, teals, gradients, and meshes — keep the page black, near-white, grey, and one pink.
8. **Carry depth with tone, not shadow.** Step surfaces `#000000` → `#0a0a0a` → 5–8% white and use hairlines; reserve the only glow for the pink now-generating state.
1. Visual Theme & Atmosphere
Udio is a darkened stage. The canvas drops to absolute #000000 black — no warm tint, no near-black compromise — and the type rests on it in #f9f9f9, a near-white that sits a single notch below pure white. The combination is the brand’s defining mood: harder and more absolute than Suno’s warm #101012 booth, more committed than a generic dark dashboard. Where Suno stages a recording booth at golden hour, Udio runs the lights all the way down. The page reads like a mixing console in a blacked-out studio — the only light is what you bring to it.
The display face is the custom Innovator family — a clean modern grotesque that carries the homepage h1 at 60px. This is the single most important thing to get right and the easiest to miss: a raw CSS audit of Udio reports the body font as Times, which looks like a serif brand. It is not. Times is the unloaded serif fallback that shows for a flash before the custom Innovator web font arrives; the real brand face is a sans-serif grotesque across both display and body. Any reproduction that sets Udio in a serif has misread the fallback for the face.
The single chromatic accent is hot magenta-pink #e30b5d (rgb 227, 11, 93). Its discipline is extreme: in the sampled chrome the pink appears almost exclusively on the Sign-Up call to action — a 6px-radius solid-pink button — while its twin, Sign-In, stays a quiet 5%-white fill. Everything else on the marketing surface is black, near-white, and grey. The pink is a spotlight: one saturated mark on a monochrome stage, drawing the eye to the single action that matters. This is the same restraint Suno uses with its hot pink, but Udio is even stingier with it and pairs it with absolute black rather than a warmed canvas.
The shapes are sharp. Buttons and inputs round to just 6px — a tight, console-like corner, far from Suno’s 20px album tiles or Apple Music’s near-circles. The result is a surface that feels like equipment rather than a soft consumer app: precise, technical, built for making rather than browsing. Section rhythm runs 64–96px, hairlines are 10% white, and there are no gradients or meshes — the black is flat and total, so the user’s generated tracks and artwork can supply every bit of color the page contains.
Atmospheric vocabulary: blacked-out-stage, absolute-black-canvas, near-white-Innovator-type, magenta-pink-spotlight, sharp-6px-corner, console-register, single-saturated-mark, fallback-is-not-the-face, monochrome-chrome, music-supplies-the-color.
Key Characteristics
- Absolute
#000000black canvas — no warm tint, the lights are fully down - Near-white
#f9f9f9type — one notch below pure white, easier on the eyes than#fff - Custom Innovator grotesque (NOT Times — that is the unloaded fallback) at 60px h1
- Hot magenta-pink
#e30b5daccent — a single spotlight, almost only on the Sign-Up CTA - Sharp
6pxbutton/input radius — console-precise, not soft-consumer - Sign-In = 5% white fill; Sign-Up = solid pink — the asymmetry IS the hierarchy
- Monochrome chrome — black, near-white, grey; user content supplies all color
- 10% white hairlines — tonal stacking, no heavy cast shadows
- Flat and total — no gradients, no meshes, no glow except the rare pink-glow state
- Dark-only — the black stage is the brand; there is no light variant
2. Color Palette & Roles
Primary
- bg
#000000— absolute black; the darkened stage, the page ground. - text
#f9f9f9— near-white display and body copy; one notch below pure white for reduced glare on full black. - bg-alt
#08080a— barely-lifted panel ground for inset zones. - surface
#0a0a0a— raised panel / card fill, still reads near-black.
Brand
- brand
#e30b5d— hot magenta-pink spotlight (rgb 227, 11, 93). Primary CTA, link hover, focus ring, the single chromatic accent. - brand-deep
#c2094f— pressed / hover-darkened pink. - brand-soft
rgba(227, 11, 93, 0.15)— 15% pink wash for selected rows and hovered states. - on-brand
#ffffff— white label on the pink button.
Accent
Udio has no secondary chromatic accent. The brand pink is the only saturated color on the chrome; everything else is monochrome. Resist the urge to add a blue or teal — the single-spotlight discipline is the brand.
Interactive
- link
#f9f9f9— links stay near-white on black; underline on hover for affordance. - link-hover
#e30b5d— pink on hover, the spotlight moment. - selected-bg
rgba(227, 11, 93, 0.15)— selected row / active item in lists. - disabled
#737373— neutral disabled chrome.
Neutral Scale
- near-white
#f9f9f9— primary text. - white
#ffffff— rare absolute white for the highest-emphasis headline only. - grey-300
#c2c2c2— muted UI label. - grey-500
#8a8a8a— quiet metadata, placeholders. - grey-600
#737373— disabled / faintest readable. - panel
#0a0a0a— raised surfaces. - whisper
rgba(255, 255, 255, 0.05)— softest hover wash; the Sign-In fill.
Surface & Borders
- surface-0 (page) —
#000000absolute black stage. - surface-1 (panel) —
#0a0a0araised card. - surface-soft —
rgba(255, 255, 255, 0.05)— 5% white whisper (Sign-In button, hover). - surface-strong —
rgba(255, 255, 255, 0.08)— 8% white emphasised panel. - border
rgba(255, 255, 255, 0.10)— 10% white hairline (default). - border-strong
rgba(255, 255, 255, 0.18)— emphasised rule, input edge. - border-subtle
rgba(255, 255, 255, 0.05)— quietest division. - border-pink
rgba(227, 11, 93, 0.40)— brand-tinted ring for focus/active.
Shadow Colors
Udio’s shadows are deep black on black — the canvas already absorbs cast shadows, so elevation is carried mostly by tonal stepping (#000000 → #0a0a0a → 5–8% white) rather than visible drop shadows. The one brand-tinted exception is a pink glow (0 0 24px rgba(227, 11, 93, 0.35)) used sparingly on an actively-generating or now-playing element — the single place the spotlight bleeds into elevation.
Semantic
- success — bg
rgba(34, 197, 94, 0.12), text#86efac. Save / generation-complete confirmation. - warning — bg
rgba(245, 166, 35, 0.12), text#fcd34d. - danger — bg
rgba(239, 68, 68, 0.12), text#fca5a5. - info — bg
rgba(255, 255, 255, 0.08), text#c2c2c2— stays monochrome rather than borrowing a blue, to protect the single-accent rule.
3. Typography Rules
Font Family
- Display & Body:
"InnovatorFont", "Innovator", ui-sans-serif, system-ui, -apple-system, sans-serif— a custom modern grotesque, self-hosted. Critical: an automated audit of Udio reportsTimesas the computed font; that is the unloaded serif fallback shown for a flash before the Innovator web font arrives, not the brand face. Udio is a sans-serif brand. Display and body share the one family. - Mono:
ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace— reserved for tabular data (durations, BPM, sample rates). - OpenType features:
kernandligaenabled across the family.tnumandzeroin mono.
Hierarchy
| Role | Font | Size | Weight | Line Height | Letter Spacing | OT Features | Notes |
|---|---|---|---|---|---|---|---|
| Display Hero | Innovator | 80px | 700 | 1.0 | -0.03em | kern liga | Reserved for major launches |
| Display Large | Innovator | 56px | 700 | 1.05 | -0.02em | kern liga | Section lead |
| H1 | Innovator | 60px | 400 | 1.05 | -0.02em | kern liga | Homepage hero — observed 60px, the signature |
| H2 | Innovator | 40px | 600 | 1.1 | -0.018em | liga | Major section |
| H3 | Innovator | 32px | 600 | 1.2 | -0.012em | liga | Sub-section |
| H4 | Innovator | 24px | 600 | 1.25 | -0.005em | — | Card heading |
| H5 | Innovator | 20px | 600 | 1.3 | normal | — | Inline emphasis |
| Eyebrow | Innovator | 12px | 600 | 1.4 | 0.08em | uppercase | Section pre-label |
| Body Large | Innovator | 18px | 400 | 1.55 | normal | — | Lede paragraph |
| Body | Innovator | 16px | 400 | 1.55 | normal | — | Default body (observed 16/400) |
| Body Small | Innovator | 14px | 400 | 1.5 | normal | — | Compact UI body |
| Caption | Innovator | 13px | 400 | 1.4 | normal | — | Image captions |
| Label | Innovator | 13px | 500 | 1.4 | normal | — | UI labels, chips |
| Caption Tabular | mono | 13px | 500 | 1.4 | normal | tnum | Track duration, BPM |
| Overline | Innovator | 12px | 500 | 1.4 | 0.02em | — | Minor pre-label |
| Code | mono | 13px | 400 | 1.55 | normal | tnum zero | Inline code (rare) |
Principles
- The brand face is sans-serif Innovator — never a serif. If your reproduction is set in Times or any serif, you have copied the unloaded fallback, not the face. This is Udio’s number-one reproduction trap.
- Hero h1 observed at 60px. The homepage signature is Innovator at 60px on a tight 1.05 line-height; the 80px display-hero is reserved for launch banners.
- Negative tracking at display sizes only. -0.02em to -0.03em above 40px; normal tracking at 24px and below — the grotesque is already compact.
- Body is 16px / 400 / 1.55. Comfortable editorial leading, not chat-app tight; the black stage benefits from a little air between lines.
- Single-family discipline. Innovator carries display, body, captions, and labels; mono appears only for tabular numerals.
- Near-white, not pure white, for running text.
#f9f9f9at body sizes reduces halation against full black; reserve#fffffffor the single highest-emphasis headline. - No italics in display. Italics belong to occasional inline emphasis in body copy.
- Eyebrows go uppercase at 0.08em. The widest tracking in the system, used to label sections without competing with the grotesque headlines.
4. Component Stylings
Buttons
Primary (Pink Sign-Up)
- Background:
#e30b5dmagenta-pink. Text:#ffffff, Innovator 500 / 14px. - Padding:
10px 16px. Radius:6px. No border. - Hover: bg →
#c2094fover 240ms. - Active: bg darkens further (pressed beat).
- Focus: 2px pink ring with 2px offset.
- Use: The primary CTA — Sign Up, Create, Get Pro. The one saturated mark on the page; never duplicate it.
Secondary (Sign-In, 5% White)
- Background:
rgba(255, 255, 255, 0.05). Text:#ffffff, Innovator 500 / 14px. - Border:
1px solid rgba(255, 255, 255, 0.10). Radius:6px. - Hover: bg →
rgba(255, 255, 255, 0.08). - Use: Twin to primary — Sign In, Learn more. Sampled exactly as a 5%-white fill; the deliberate quietness next to the pink IS the hierarchy.
Ghost (Quiet)
- Background: transparent. Text:
#f9f9f9, Innovator 500 / 14px. - Padding:
8px 12px. Radius:6px. - Hover: bg →
rgba(255, 255, 255, 0.06). - Use: Nav links, footer, repeated inline utilities.
White (Inverted)
- Background:
#f9f9f9. Text:#000000, Innovator 500 / 14px. - Padding:
10px 16px. Radius:6px. - Hover: bg →
#ffffff. - Use: High-emphasis non-brand action where pink would be wrong — near-white button on the black stage.
Cards
Info / Track Card
- Background:
#0a0a0a. Border:1px solid rgba(255, 255, 255, 0.10). Radius:12px. Padding:24px. - Shadow: none at rest; on hover,
rgba(0, 0, 0, 0.50) 0 4px 12px. - Use: Feature card, plan card, capability tile.
Track-Art Tile
- Background:
#0a0a0a(placeholder while artwork loads). Border: none. Radius:8px. Aspect: 1:1. - Hover: 1.02× scale + soft black shadow; play-button overlay fades in.
- Use: Generated-track grid — artwork bleeds to edge, title/artist drop below in near-white / grey.
Now-Generating Tile
- Same as track tile, but with
pink-glowshadow (0 0 24px rgba(227, 11, 93, 0.35)) and an optional 1px pink hairline ring. - Use: The single tile that is actively generating or playing — the pink glow signals state without a separate badge.
Badges, Tags, Pills
Genre Tag — bg rgba(255, 255, 255, 0.08), text #c2c2c2, Innovator 500 / 12px, padding 4px 10px, radius 6px. Hover deepens bg to 12% white.
Pink Badge — bg rgba(227, 11, 93, 0.15), text #e30b5d, radius 6px. “New”, “Pro”, “Beta” markers — the only badge that may carry the brand color.
Eyebrow Label — no chrome, just type. Innovator 600 / 12px / uppercase / 0.08em tracking, color #8a8a8a.
Inputs / Forms
Text Input
- Background:
#0a0a0a. Border:1px solid rgba(255, 255, 255, 0.18). Radius:6px. Padding:8px 12px. - Font: Innovator 400 / 14px. Placeholder:
#8a8a8a. - Focus:
0 0 0 2px #e30b5dring, border →#e30b5d. - Error: border →
#ef4444, helper red below.
Prompt Composer (Studio)
- Background:
#0a0a0a. Border:1px solid rgba(255, 255, 255, 0.18). Radius:12px. Padding:12px 16px. - Font: Innovator 400 / 16px. Placeholder:
#8a8a8a(“Describe your song…”). - Inner action: pink Create button hard-right with white label.
- Use: The product’s hero shape — describe-and-generate box that ties marketing to the in-product creator.
Navigation
- Header height
64px. Backgroundtransparentover the black stage (backdrop-filter: blur(12px)on scroll). - Logo: Udio wordmark in near-white, Innovator 600.
- Nav links: Innovator 500 / 14px, color
#f9f9f9, padding8px 12px. Hover: text →#e30b5d. - Right-side: secondary “Sign In” (5% white fill, 6px) + primary pink “Sign Up” (6px). The asymmetry is the whole CTA story.
- Mobile (<640px): hamburger collapses to a full-screen sheet; links stack at 20px / 600.
Optional Components
Dropdown Menu — bg #0a0a0a, border rgba(255, 255, 255, 0.10), radius 8px, shadow rgba(0, 0, 0, 0.60) 0 12px 24px -8px. Items: Innovator 400 / 14px, hover bg rgba(255, 255, 255, 0.06).
Tooltip — bg #0a0a0a, text #f9f9f9, radius 6px, padding 6px 10px, font 12px / 500.
Toast — bg #0a0a0a, border rgba(255, 255, 255, 0.10), radius 8px, padding 12px 16px, shadow standard.
Modal — bg #0a0a0a, radius 12px, shadow rgba(0, 0, 0, 0.80) 0 24px 48px -12px, max-width 560px. Backdrop: 80% black over the already-black stage.
Waveform Visualizer — translucent panel rgba(255, 255, 255, 0.05) with near-white bars; pink-tinted only on the actively-playing track.
5. Layout Principles
Spacing System
- Base unit: 4px.
- Scale: 0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128.
- Density observation: Udio is medium. Marketing sections breathe at 64–96px rhythm; product rows and track grids pack tighter at 16–24px gutters. The black canvas tolerates dense grids because the spacing between tiles reads as negative space, not clutter.
Grid & Container
- Page max width:
1280pxfor chrome; feed and grid pages bleed to viewport on the black ground. - Site gutter:
clamp(20px, 5vw, 48px). - Grid: 12 columns with 16–24px gutters.
- Track grid: 4–6 columns at 1:1 aspect, collapsing to 3 → 2 → 1 across breakpoints.
- Hero treatment: centered 60px Innovator headline, body 16px below in near-white, prompt composer / dual CTA beneath; full-bleed black behind.
Whitespace Philosophy
The whitespace is stage-dark and total. Because the ground is absolute black, empty space reads as depth rather than emptiness — the page feels like a room with the lights off, not a blank document. Section gutters at 64–96px; intra-section at 16–24px.
Section Cadence
- Hero (black stage, centered) → Capability / feature panels (black, occasional 8% white inset cards) → Track showcase grid (full-bleed) → Pricing → Footer (
#0a0a0a, a single tonal step up). - The whole site stays in black territory; there is no light section.
- Section breaks: 64–96px vertical space + 1px hairlines (
rgba(255, 255, 255, 0.10)).
6. Shapes & Radius Scale
| Tier | Value | Use |
|---|---|---|
| Micro | 2px | Decorative dividers, tag corners |
| Standard (sm) | 4px | Compact chips (rare) |
| Button | 6px | Primary / secondary / ghost buttons, inputs — Udio’s signature corner |
| Comfortable (md) | 8px | Track tiles, tooltips, dropdowns |
| Relaxed (lg) | 12px | Cards, composer, modals |
| Featured (xl) | 16px | Large feature panels |
| Pill | 9999px | Reserved — rare, for filter chips only |
Udio’s signature radius is 6px on buttons and inputs — a sharp, console-precise corner sampled directly from both CTAs. Cards relax slightly to 12px and track tiles to 8px, but the whole system stays well below Suno’s 20px. Pills are deliberately rare; Udio’s controls read as equipment, not soft consumer chips.
7. Depth & Elevation
| Level | Treatment | Use |
|---|---|---|
| 0 | Flat — no shadow | Default black page surface, hero, body sections |
| 1 | Tonal — #0a0a0a against #000000 | Cards, panels |
| 2 | rgba(0,0,0,0.40) 0 1px 3px | Sticky nav on scroll |
| 3 | rgba(0,0,0,0.50) 0 4px 12px | Hover-lifted cards |
| 4 | rgba(0,0,0,0.60) 0 16px 32px -8px | Dropdowns, popovers |
| 5 | rgba(0,0,0,0.80) 0 24px 48px -12px | Modals, dialogs |
| Special | 0 0 24px rgba(227, 11, 93, 0.35) | Pink-glow on now-generating / now-playing tile only |
Shadow Philosophy
Udio’s depth is tonal-first against absolute black. Because the canvas is #000000, a cast shadow has almost nothing darker to fall onto, so elevation is communicated by stepping the surface tone up (#000000 → #0a0a0a → 5–8% white) and by hairline borders rather than by visible drop shadows. The single brand-tinted exception is the pink glow on an actively-generating tile — the only place the spotlight color bleeds into elevation, used to signal working / playing without a separate badge.
8. Interaction & Motion
Easing Curves
ease-standard:cubic-bezier(0.4, 0, 0.2, 1)— Material default for most transitions.ease-emphasized:cubic-bezier(0.2, 0, 0, 1)— punchier exit; modal and sheet enter.
Duration Buckets
- Fast (150ms) — color transitions, focus rings, link hovers.
- Standard (240ms) — button hover, card hover, dropdown reveal.
- Slow (320ms) — modal enter/exit, composer expansion.
- Page (480ms) — route transitions, hero reveal.
Per-Component Micro-States
- Button hover (primary pink): bg
#e30b5d→#c2094fover 240ms; no scale — the button stays planted. - Sign-In hover: fill
5% → 8%white over 150ms. - Track tile hover: 1.02× scale over 240ms + soft black shadow; play overlay fades in over 150ms.
- Now-generating tile: pink glow pulses subtly (
@keyframes glow-pulse35% → 50% opacity over 2s, infinite, respects reduced-motion). - Link hover: color
#f9f9f9→#e30b5dover 150ms; underline thickens 1px → 2px. - Composer focus: ring grows 2px → 3px at 30% pink; placeholder fades to 60%.
Page Transitions
Hero / feed cross-fade over 480ms. Track tiles fade in via IntersectionObserver at 80% viewport, 320ms with 12px translate-up. The black ground holds constant across navigation so transitions read as content moving on a fixed stage.
Reduced Motion
@media (prefers-reduced-motion: reduce) — looping waveforms freeze on a static frame; pink glow stops pulsing (holds at 35%); all transforms collapse to opacity-only; durations halved.
9. Accessibility & A11y
Contrast Pairs
#f9f9f9text on#000000bg: 19.95:1 — AAA at all sizes.#fffffftext on#000000bg: 21.0:1 — AAA, the theoretical maximum.#c2c2c2text on#000000bg: 11.79:1 — AAA at all sizes.#8a8a8atext on#000000bg: 6.08:1 — AA at all sizes, AAA at large.#737373text on#000000bg: 4.43:1 — AA at large / disabled only.#fffffftext on#e30b5dbrand: 4.70:1 — AA at body sizes; safe for the pink CTA label.#e30b5dtext on#000000bg: 4.47:1 — AA at large text / link-hover; keep pink text at ≥18px or bold, or use near-white for small body links.
Focus Indicators
- Default ring:
0 0 0 2px #e30b5dwith 2px offset. - Soft ring (composer focus):
0 0 0 3px rgba(227, 11, 93, 0.30). - Every interactive surface shows a visible focus state; the pink ring reads clearly against the black ground.
ARIA Patterns
- Navigation:
<nav aria-label="Main">with a skip-link. - Composer:
<form aria-label="Create a song">with anaria-labelon the input. - Track grid:
role="feed"; each tile is<article>witharia-labelledbypointing at the title; the now-playing tile usesaria-current="true". - Audio player:
role="region" aria-label="Audio player"with labelled controls. - Dialog:
role="dialog" aria-modal="true" aria-labelledbywith a focus trap. - Live regions:
aria-live="polite"for “song ready” toasts.
Keyboard Navigation
- Tab order: skip-link → masthead → composer → feed → footer.
Enteractivates the focused CTA;Spacetoggles play/pause on a focused tile.- Arrow keys navigate within the track grid.
Esccloses modals and sheets.
Screen Reader Hints
- Track tiles: alt text matches ”
by <artist>”. - Now-playing state:
aria-current="true"plusaria-label="Now playing: <title>". - Generating state:
aria-busy="true"while a track is being created. - Decorative pink glow:
aria-hidden="true".
Reduced Motion
Honoured globally. Looping waveforms freeze; pink glow holds static; durations halved.
10. Responsive Behavior
Breakpoints
| Name | Width | Use |
|---|---|---|
| Mobile | < 640px | Single-column feed; full-screen nav sheet |
| Tablet | 640–1024px | 2–3 column track grid |
| Desktop | 1024–1280px | 4-column track grid; full nav |
| Wide | 1280–1536px | 5-column track grid |
| Ultra | > 1536px | Page locks at 1280; gutters expand; grid up to 6 columns |
Touch Targets
- Minimum tap target: 44×44px.
- Buttons: 44px minimum height on mobile (vertical padding bumps to 12px).
- Track tile: tile = tap target; play overlay icon 48×48 at center.
- Composer / send buttons: 48×48 visual with extended tap area.
Collapsing Strategy
- Header: full nav at ≥1024px; hamburger sheet below.
- Hero: 60px → 44px → 34px headline across desktop/tablet/mobile.
- Composer: full-width at mobile; max-width 720px on tablet+; centered.
- Track grid: 5-up → 4-up → 3-up → 2-up → 1-up across sizes.
- Section spacing: 96px → 64px → 48px across sizes.
- CTAs: Sign-In + Sign-Up sit side-by-side on desktop; stack with Sign-Up on top on mobile.
Image Behavior
- Track artwork uses
srcsetwith 1x/2x/3x for crisp Retina rendering. - Native lazy-loading on below-fold tiles.
aspect-ratio: 1 / 1locked.
Container Queries
Used inside track tiles to switch caption layout (single line vs. wrap) when tile width crosses 200px.
11. Content & Voice
Tone
Direct, capable, creator-facing. Udio writes like a piece of pro equipment that happens to be friendly — confident and concrete, light on marketing exuberance. Headlines state the capability (“Make your music”); subheads explain how. The voice positions Udio as a serious creative instrument rather than a toy.
Microcopy Patterns
- Button verbs: “Sign Up,” “Sign In,” “Create,” “Generate,” “Continue,” “Save.” Title-case, plain.
- Error messages: “Couldn’t generate that track. Try again, or [contact support].”
- Success confirmations: “Saved.” “Your track is ready.” Brief.
- Loading states: “Generating…” or “Creating your track…” — process-honest language.
Empty States
- “No tracks yet. Describe one above to get started.”
- “No matches. Try a different prompt or genre.”
- Empty is treated as normal, never as an error.
CTA Verb Conventions
- Primary on hero: “Sign Up,” “Create,” “Start creating”
- Secondary: “Sign In,” “Hear examples,” “See pricing”
- Footer: “Pricing,” “Discord,” “API,” “Support”
The voice is plain-spoken and tool-confident — closer to a DAW’s quiet competence than to a hype-driven consumer launch.
12. Dark Mode & Theming
Dark-only — the black stage is the brand. Udio offers no light variant; the marketing surface, the track grid, and the studio all render on the #000000 ground. That is the brand’s defining choice, the same way Suno’s booth is dark-first.
There are no light-mode tokens to flip — a theme toggle audit returns score 0, no signals. If a light surface is ever needed (a rare legal or print-export context), invert to bg: #f9f9f9 / text: #0a0a0a and keep the pink at #e30b5d (it darkens to #c2094f for AA contrast on near-white), but never render the marketing surface or the track grid in light mode. The stage stays black.
13. Lineage & Influences
Udio’s identity is a recording console reimagined as a black creative canvas. The ground is absolute #000000; the type is near-white #f9f9f9 in the custom Innovator grotesque; and the one chromatic mark is a hot magenta-pink #e30b5d reserved almost entirely for the Sign-Up CTA. The system is deliberately monochrome so that user-generated tracks and artwork supply all the color — the chrome is the dark room, the music is the light. The sharp 6px corners and the absence of gradients give the surface a precise, equipment-like feel: this is a studio tool, not a soft consumer feed.
The lineage runs through three streams. From dark-canvas music UI (Apple Music, Spotify’s darker surfaces) it takes the black ground and the album-tile grid that lets artwork carry the color. From the pink-magenta music accent — the same family SoundCloud and Suno use — it takes a single saturated cue color, but applies it with more restraint, holding it almost entirely on one button. From modern grotesque type culture it takes a clean custom sans (Innovator) at large display sizes with tight tracking, in the register of foundries like Pangram Pangram. What Udio rejects: Suno’s warmed #101012 canvas and soft 20px album tiles — Udio commits to absolute black and sharp 6px corners; and it rejects any secondary accent, keeping the page strictly black, near-white, grey, and one pink.
Named influences:
- Apple Music — dark-canvas + album-tile grid pattern; artwork carries the color. https://www.apple.com/apple-music/
- Spotify — dark music-UI register; headline-weight display type. https://open.spotify.com
- Suno — the closest contemporary AI-music sibling; shared hot-pink-on-dark language, which Udio renders harder (absolute black, sharper corners). https://suno.com
- SoundCloud — the legacy pink-magenta cue color as a music-context accent. https://soundcloud.com
- Pangram Pangram — modern-grotesque type culture that informs the custom Innovator display register. https://pangrampangram.com
14. Do’s and Don’ts
Do
- Do keep the canvas at absolute
#000000— Udio commits all the way to black, no warm tint. - Do set type in the sans-serif Innovator family; treat any
Timesreading as the unloaded fallback to discard. - Do use near-white
#f9f9f9for running text rather than pure white — it cuts halation on full black. - Do reserve
#e30b5dpink for the single most important action (Sign-Up / Create) and link hover; one saturated mark per view. - Do keep Sign-In quiet — a 5% white fill — so the pink Sign-Up clearly wins. The asymmetry is the hierarchy.
- Do round buttons and inputs to just
6px— the sharp console corner is the brand. - Do carry elevation by tonal stepping (
#000000→#0a0a0a→ 5–8% white) and hairlines, not heavy drop shadows. - Do use 10% white hairlines (
rgba(255, 255, 255, 0.10)) for default borders. - Do add the pink glow only to a now-generating / now-playing element — the one brand-tinted shadow.
- Do let user artwork supply the color; keep the chrome monochrome.
Don’t
- Don’t set Udio in a serif —
Timesin the audit is the fallback, not the face. This is the top reproduction error. - Don’t warm the canvas to
#101012or any near-black; that is Suno’s register, not Udio’s. - Don’t introduce a second chromatic accent (no blue, no teal) — the single-spotlight discipline is the brand.
- Don’t spread the pink across general UI, fills, or panels beyond the 15% wash; solid pink everywhere collapses the spotlight.
- Don’t round buttons past
6–8pxinto Suno’s 20px territory — the corners must stay sharp. - Don’t make Sign-In as loud as Sign-Up; the muted secondary is intentional.
- Don’t add gradients, meshes, or glow beyond the single pink-glow state — the black is flat and total.
- Don’t use pure white for body copy at small sizes; halation against
#000000hurts readability. - Don’t use pink text below 18px on black without bumping weight —
#e30b5don black is 4.47:1 (large-text AA only). - Don’t ship a light mode for the marketing surface or track grid — the stage is black.
15. Agent Prompt Guide
Quick Color Reference
bg: #000000
bg-alt: #08080a
surface: #0a0a0a
surface-soft: rgba(255, 255, 255, 0.05)
text: #f9f9f9
text-strong: #ffffff
text-muted: #c2c2c2
text-soft: #8a8a8a
brand: #e30b5d
brand-deep: #c2094f
border: rgba(255, 255, 255, 0.10)
border-strong: rgba(255, 255, 255, 0.18)
Example Component Prompts
-
“Create a Udio-style hero — absolute
#000000black canvas, a centered 60px headline in the Innovator grotesque (sans-serif, NOT a serif) with-0.02emtracking in near-white#f9f9f9. Below it, 16px body weight 400 in#c2c2c2. A dual CTA row: a6px-radius solid magenta-pink#e30b5d‘Sign Up’ button with white label, and beside it a quiet ‘Sign In’ button atrgba(255, 255, 255, 0.05)fill with a 10% white hairline.” -
“Design a Udio prompt composer —
#0a0a0abackground,1px rgba(255, 255, 255, 0.18)border,12pxradius, 16px placeholder ‘Describe your song…’ in#8a8a8a(Innovator 400). A pink#e30b5d‘Create’ button hard-right with a white label. Focus expands the ring to 3px at 30% pink.” -
“Build a Udio track tile — 1:1 aspect,
8pxradius,#0a0a0aplaceholder ground while artwork loads, no border. Hover scales 1.02× with a soft black shadow and a fade-in play overlay. Title and artist drop below: title in Innovator 500 / 14px near-white, artist in 400 / 13px#8a8a8a.” -
“Render the Udio now-generating state — same as the track tile, but add a pink glow shadow
0 0 24px rgba(227, 11, 93, 0.35)and an optional 1px pink hairline ring. The glow pulses subtly between 35% and 50% opacity over 2s, paused under prefers-reduced-motion.” -
“Compose a Udio nav — 64px header, transparent over the black stage with 12px backdrop-blur on scroll, Udio wordmark hard-left in near-white Innovator 600. Link list Innovator 500 / 14px near-white with
#e30b5dhover. Right-side: quiet ‘Sign In’ (5% white fill, 6px) + primary pink ‘Sign Up’ (6px). Make the two CTAs visibly asymmetric.” -
“Create a Udio pricing card —
#0a0a0afill,1px rgba(255, 255, 255, 0.10)hairline,12pxradius, 24px padding. Plan name in Innovator 600 / 24px near-white, price in 700 / 40px, feature list in 400 / 16px#c2c2c2. The Pro plan’s CTA is the only pink#e30b5dbutton; the free plan uses the 5%-white secondary.”
Iteration Guide
- Start with
#000000, not a near-black. If the bg is#101012or any warm tint, you’re in Suno’s booth; Udio runs the lights fully down. - Make sure the type is sans-serif. If your headline rendered in a serif, you copied the
Timesfallback — swap to a clean grotesque (Innovator) immediately. - Use near-white
#f9f9f9, not#ffffff, for body. The single notch down reduces glare on full black. - Add the pink exactly once.
#e30b5dbelongs on the single primary action (Sign-Up / Create) and link hover — never as a fill or a second button. - Mute the secondary CTA. Sign-In should be a 5%-white fill so the pink Sign-Up wins; if both buttons look equally loud, you’ve lost the hierarchy.
- Sharpen the corners to 6px. If buttons and inputs are at 12–20px, you’re too soft; tighten to the console radius.
- Strip any second accent. Remove blues, teals, gradients, and meshes — keep the page black, near-white, grey, and one pink.
- Carry depth with tone, not shadow. Step surfaces
#000000→#0a0a0a→ 5–8% white and use hairlines; reserve the only glow for the pink now-generating state.
Drop udio into your project, then ship the actual sections in an afternoon.
npx @webdesignhot/design-md add udio npx agentkit init --design udio