dark · bold · sans · ai · music

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.

By webdesignhot · www.udio.com
$ npx @webdesignhot/design-md add udio
Learn more about the CLI
Compare to…
try on →
theme
1440 × 900
mobile · 390 × 844
Tokens webdesignhot/0.1
  • 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
Typography
Ship faster than ever.
display-hero "InnovatorFont" 80px w700 -0.03em
Ship faster than ever.
h1 "InnovatorFont" 60px w400 -0.02em
Ship faster than ever.
display-lg "InnovatorFont" 56px w700 -0.02em
Built for teams that ship.
h2 "InnovatorFont" 40px w600 -0.018em
A complete kit
h3 "InnovatorFont" 32px w600 -0.012em
The quick brown fox jumps over the lazy dog.
h4 "InnovatorFont" 24px w600 -0.005em
The quick brown fox jumps over the lazy dog.
h5 "InnovatorFont" 20px w600 0
The quick brown fox jumps over the lazy dog.
body-lg "InnovatorFont" 18px w400 0
The quick brown fox jumps over the lazy dog.
body "InnovatorFont" 16px w400 0
The quick brown fox jumps over the lazy dog.
body-sm "InnovatorFont" 14px w400 0
OUR DESIGN SYSTEM
caption "InnovatorFont" 13px w400 0
OUR DESIGN SYSTEM
label "InnovatorFont" 13px w500 0
OUR DESIGN SYSTEM
caption-tabular ui-monospace 13px w500 0
npx @webdesignhot/design-md add stripe
code ui-monospace 13px w400 0
The quick brown fox jumps over the lazy dog.
eyebrow "InnovatorFont" 12px w600 0.08em
The quick brown fox jumps over the lazy dog.
overline "InnovatorFont" 12px w500 0.02em
Spacing
  • 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
Radius
  • micro 2px
  • sm 4px
  • button 6px
  • md 8px
  • lg 12px
  • xl 16px
  • pill 9999px
Components
Text link →
Card preview A complete kit — everything your product needs. Hero, pricing, FAQ, dashboard, docs — every layout your product needs.
New Stable v1.0
Design roles 8/8 mapped · webdesignhot/0.1

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
Export 4 formats · paste-ready
Tailwind

theme.extend block for tailwind.config.js

tailwind.config.js
CSS variables

:root { --bg, --text, --brand, … } you can paste anywhere

design.css
DTCG JSON

W3C Design Tokens Community Group format

design.tokens.json
Figma Variables

Importable into Figma → Variables → Import

figma-variables.json
The file
---
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.
Prose

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-softrgba(255, 255, 255, 0.05) — 5% white whisper (Sign-In button, hover).
  • surface-strongrgba(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

RoleFontSizeWeightLine HeightLetter SpacingOT FeaturesNotes
Display HeroInnovator80px7001.0-0.03emkern ligaReserved for major launches
Display LargeInnovator56px7001.05-0.02emkern ligaSection lead
H1Innovator60px4001.05-0.02emkern ligaHomepage hero — observed 60px, the signature
H2Innovator40px6001.1-0.018emligaMajor section
H3Innovator32px6001.2-0.012emligaSub-section
H4Innovator24px6001.25-0.005emCard heading
H5Innovator20px6001.3normalInline emphasis
EyebrowInnovator12px6001.40.08emuppercaseSection pre-label
Body LargeInnovator18px4001.55normalLede paragraph
BodyInnovator16px4001.55normalDefault body (observed 16/400)
Body SmallInnovator14px4001.5normalCompact UI body
CaptionInnovator13px4001.4normalImage captions
LabelInnovator13px5001.4normalUI labels, chips
Caption Tabularmono13px5001.4normaltnumTrack duration, BPM
OverlineInnovator12px5001.40.02emMinor pre-label
Codemono13px4001.55normaltnum zeroInline 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.
  • 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

TierValueUse
Micro2pxDecorative dividers, tag corners
Standard (sm)4pxCompact chips (rare)
Button6pxPrimary / secondary / ghost buttons, inputs — Udio’s signature corner
Comfortable (md)8pxTrack tiles, tooltips, dropdowns
Relaxed (lg)12pxCards, composer, modals
Featured (xl)16pxLarge feature panels
Pill9999pxReserved — 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

LevelTreatmentUse
0Flat — no shadowDefault black page surface, hero, body sections
1Tonal — #0a0a0a against #000000Cards, panels
2rgba(0,0,0,0.40) 0 1px 3pxSticky nav on scroll
3rgba(0,0,0,0.50) 0 4px 12pxHover-lifted cards
4rgba(0,0,0,0.60) 0 16px 32px -8pxDropdowns, popovers
5rgba(0,0,0,0.80) 0 24px 48px -12pxModals, dialogs
Special0 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 ” 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

NameWidthUse
Mobile< 640pxSingle-column feed; full-screen nav sheet
Tablet640–1024px2–3 column track grid
Desktop1024–1280px4-column track grid; full nav
Wide1280–1536px5-column track grid
Ultra> 1536pxPage 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:

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.
Ship with this

Drop udio into your project, then ship the actual sections in an afternoon.

1 · install design
npx @webdesignhot/design-md add udio
2 · ship landing page
npx agentkit init --design udio
How AgentKit reads DESIGN.md