Design system

How David Wademan Music looks

Every colour, size and component on the site is defined once. To change the look, change a token in resources/css/app.css (the @theme block); the whole site follows.

Video players (VID-)

Audio players (AUD-)

Colour

The site has a dark and a light mode. It follows the visitor’s device setting until they choose with the sun / moon button in the header (THEME-01). These swatches show the mode you are in: switch to see the other. In light mode night and chalk trade places, and the crayons go a touch deeper.

Surfaces and text

  • night

    --color-night

    Page background

  • deep

    --color-deep

    Raised sections

  • deep-stripe

    --color-deep-stripe

    Placeholder stripe

  • chalk

    --color-chalk

    Main text

  • mist

    --color-mist

    Secondary text

  • line

    --color-line

    Rules and borders

  • ink

    --color-ink

    Dark type on crayons (never flips)

Show crayons

  • marigold

    --color-marigold

    Focus ring, highlights

  • coral

    --color-coral

    Hello Kitty – Let’s Go

  • lagoon

    --color-lagoon

    Crayola

  • lilac

    --color-lilac

    Brookhaven

  • sky

    --color-sky

    Miko

Light mode options (to choose)

Marigold and coral struggle on the light background: they are warm, like the cream. These options show the fixes side by side, always in light colours. Ratios are measured contrast against the background; 4.5:1 is the standard for reading text. Pick one of each by ID.

1. One shade or two

Each crayon does two jobs: big fills (cards, play buttons) and small things that must be read (coloured words, hairlines, outlines). One shade can’t do both on cream, so each has two: the bright original for fills, a deep version for text (the -text tokens). Dark mode is unchanged. Chosen by Paul; the one-shade option is retired.

Two shades: fill and text (chosen, in use)

  • Aa Marigold (#875c00) 4.8:1 ✓
  • Aa Coral (#b93a29) 4.6:1 ✓
  • Aa Lagoon (#0c736b) 4.7:1 ✓
  • Aa Lilac (#6b4fd1) 4.7:1 ✓
  • Aa Sky (#2f64c4) 4.6:1 ✓

2. Coral

The fill for cards and play buttons. Each is shown with its deep text shade (from option 1) on the playing title.

Before #f56656

Intruder Alert

Tension Builders

Hello Kitty – Let’s Go

Score · Sanrio

The light-mode coral before LM-SHADE-2: a shade deeper than dark mode’s. Reads a little muddy on cream. Ink on it: 6.1:1 ✓

Original (now) #ff7a6b

Intruder Alert

Tension Builders

Hello Kitty – Let’s Go

Score · Sanrio

Dark mode’s coral, unchanged, and the fill in use since LM-SHADE-2. Brighter and lighter; the closest to the Crayon look. Ink on it: 7.3:1 ✓

Tomato #f2553c

Intruder Alert

Tension Builders

Hello Kitty – Let’s Go

Score · Sanrio

Warmer and punchier: more energy, and further from the cream. Ink on it: 5.4:1 ✓

Watermelon #ff6b81

Intruder Alert

Tension Builders

Hello Kitty – Let’s Go

Score · Sanrio

Cooler and pinker: pops most against warm cream, but changes the crayon’s character. Ink on it: 6.8:1 ✓

3. The playing track’s title

Now the playing title takes the show’s colour. Option 2 keeps it in the normal text colour and lets the filled play button say which track is playing: no contrast problem in either mode, and calmer. (Would apply in dark mode too.)

Coloured title (now, in coral’s text shade)

Intruder Alert

Tension Builders

Title contrast: 4.6:1 ✓

Title in the text colour

Intruder Alert

Tension Builders

Title contrast: 15.2:1 ✓

4. The “Design system” chip (until launch)

Outline (now)

Design system

1.7:1

Marigold sticker, ink type

Design system

10.5:1 ✓

5. Background

The biggest lever: a lighter background lifts every crayon at once. Shown with the original coral (LM-COR-2), two shades (LM-SHADE-2) and the plain title (LM-ROW-2).

Cream (now) #ece8df

Intruder Alert

Tension Builders

Hello Kitty – Let’s Go

Score · Sanrio

The chalk from dark mode’s type. Warm; dulls marigold and coral.

Linen #f2efe8

Intruder Alert

Tension Builders

Hello Kitty – Let’s Go

Score · Sanrio

A step lighter, still warm. Crayons lift a little.

Paper #f7f5f0

Intruder Alert

Tension Builders

Hello Kitty – Let’s Go

Score · Sanrio

Near white with a hint of warmth. Crayons pop most; feels less “chalk”.

Phone first

The phone is designed first and the desktop adds to it, not the other way round. These rules apply to every page.

  • Units

    Type and spacing are in rem (1rem = 16px by default), so they follow a visitor’s own text-size setting. px is only for hairlines (1px borders). vw appears only inside a clamp(). em is used inside a component so its padding scales with its own text.

  • Fluid, not stepped

    Large type is a clamp(smallest, fluid, largest), so it glides between phone and desktop sizes instead of jumping at a breakpoint. The tables below show the real result at 390px and 1280px.

  • Touch

    Every button, link in a menu and form control is at least 44px tall. Nothing depends on hover.

  • Layout

    Base styles are the phone layout, one column. A breakpoint prefix such as md: adds the wider layout from that width up. Wide sections are re-composed for the phone, not shrunk.

Breakpoints

  • base

    Phone, from 320px

  • sm:

  • md:

  • lg:

  • xl:

Typography

Two typefaces, both served from this site: Fraunces (display and reading) and Schibsted Grotesk (interface text). Sizes are measured live from the CSS: phone is a 390px screen, desktop is 1280px, and “this screen” is the window you are looking at now.

  • text-hero · The name on the homepage. Fluid: grows with the screen.

    Wademan

    Phone (390px)
    Desktop (1280px)
    This screen
    Token value
  • text-page · A page's own title, such as a project's name.

    Brookhaven

    Phone (390px)
    Desktop (1280px)
    This screen
    Token value
  • text-title · Section headings such as Listen and Work.

    Section title

    Phone (390px)
    Desktop (1280px)
    This screen
    Token value
  • text-heading · Table captions, panel headings.

    Sub-heading

    Phone (390px)
    Desktop (1280px)
    This screen
    Token value
  • text-lede · Intros and cue titles.

    Lede paragraph for introductions.

    Phone (390px)
    Desktop (1280px)
    This screen
    Token value
  • text-body · Default text. Never below this on a phone.

    Body text for descriptions and long reading.

    Phone (390px)
    Desktop (1280px)
    This screen
    Token value
  • text-small · Details, labels and notes.

    Small text for details, labels and notes.

    Phone (390px)
    Desktop (1280px)
    This screen
    Token value

Shape and space

  • rounded-field

    Form fields

  • rounded-card

    Cards and images

  • rounded-frame

    Large frames

  • rounded-pill

    Buttons and chips

  • px-gutter · Page side padding

    Phone (390px)
    Desktop (1280px)
    Token value
  • py-section · Space between page sections

    Phone (390px)
    Desktop (1280px)
    Token value
  • max-w-measure · Longest line of reading text

    Phone (390px)
    Desktop (1280px)
    Token value
  • max-w-page · Widest any page's content gets

    Phone (390px)
    Desktop (1280px)
    Token value

Motion

Motion keeps time with the music: every duration is a note at 90 bpm, so everything that moves shares one tempo. Few things move, and only to show where you are going. A device that asks for reduced motion gets ordinary page loads.

  • --motion-beat

    667ms

    One beat. Bigger moves.

  • --motion-eighth

    333ms

    An eighth. A page arriving.

  • --motion-sixteenth

    167ms

    A sixteenth. A page leaving, small steps.

  • --ease-settle

    cubic-bezier(0.2, 0.7, 0.2, 1)

    Arrivals: quick, then a soft landing.

  • --ease-glide

    cubic-bezier(0.65, 0, 0.25, 1)

    Travel: eases out and in again.

Moving between pages

Quiet page change

The header stays where it is. The old page fades in a sixteenth; the new one settles up into place in an eighth. No white flash between pages.

Card to project

Open a project card on the homepage or Work page: the card grows into the project’s key art and its title flies into place. Go back and it returns to its card.

Changing what’s shown

Choosing a channel on the Studio desk: the old record fades in a sixteenth while the monitor eases to the new height and the new lines settle in, a 32nd apart.

Player opening

Pressing a SoundCloud or Spotify row: its ring turns (a beat a turn) while the player loads out of sight, then the row eases open and the player fades in, already drawn.

Try it on the Work page

The switch is for comparing, and only affects this browser. Transitions play in Chrome, Edge and Safari; other browsers load pages as before.

Arriving on a page

Every designed page arrives the same way: the title rises out of a mask for a beat, the intro follows an eighth later, then a hairline draws across. The page’s own piece (the passes’ breeze on Live, the gatefold on About) starts after it.

Studio

As you scroll, load and switch

Lines draw in

A section heading’s hairline draws across the first time it comes into view.

Photos open

A large photo (Live’s stage photos, the homepage About photo, the Studio photo, a post’s picture) opens from a slight crop and settles, once.

Images fade in

An image still loading fades in when it arrives, instead of appearing in one go.

A wash while loading

While a photo that fills its column loads, its space shows a soft wash of the colour around it (the show’s crayon on a project, else mist), breathing slowly, in the photo’s own shape; the photo fades in over it.

Light and dark

Pressing the sun / moon button: the new mode spreads out in a circle from it, over a beat.

Everything that already moved (the header and phone menu, the footer credits, the hero strings, the passes, the desk, the gatefold) now takes its timing from the same tempo; each keeps its own curve.

The DWM mark on a stave, drawn in the text colour so it follows light and dark mode. The mark alone in the header; with the name in the footer, for people who don't know DWM yet. Files in assets/logo/, drawn by the logo component.

Header

Footer

Hero name

The homepage hero sets the site name large. With "Music" added, the original two steps (NAME-01) put "Wademan Music" on one long line. The first two words count as the name; each layout places anything after them differently, and all of them still work for "David Wademan" alone.

Two steps (live now)

David Wademan Music

Staircase

David Wademan Music

Music as a label

David Wademan Music

Name together

David Wademan Music

Header and footer

Chosen by Dave from the options: the floating capsule header with its phone menu, and the end credits footer. Every footer links the Privacy notice and Terms of use.

Header: floating capsule

Clear over the top of the page; once you scroll, it gathers into a blurred capsule floating below the top edge. Reading down, it fades back, nearly see-through; scroll up, point at it or tab to it and it comes back in full.

At the top of a page
Scrolled: the capsule
Reading down: faded back

Phone menu

On a phone, Menu opens it over the whole screen: large links, each on a hairline with its crayon (filled on the page you’re on), then how to get in touch. It wipes down from the top and the links arrive one after another.

Footer: end credits

The footer as a film’s closing credits: music by, selected credits and bass for, from Dave’s records, then how to reach him, the menu and the legal pages. Each block drifts up into place as it comes into view.

Components

Each lives in template-parts/components/ and is reused wherever it appears. Every example has an ID: quote it when giving feedback, and it links straight to the item.

play-button

Playing a cue is always the round control. It is 48px (or 64px) so it is easy to hit with a thumb, and it takes the colour of the show it sits in.

tone: ink

tone: accent

size: lg

Finer versions: a hairline ring, 40px (56px large), that fills on hover. The tap area is still 44px or more.

fine, ink

fine, accent

fine, large

theme-toggle

Switches between dark and light mode and remembers the choice. A sun in dark mode, a moon in light mode. Choosing what the device would pick anyway goes back to following the device.

button

Two kinds. One filled call to action per page at most (the main contact action); every other action is a word with an arrow.

Get in touch

View project

All credits

Get in touch

chip

Drama

Documentary

Animation

filter-chip and filter-sheet

Filters over a list. From tablet up, chips (CHIP-04). On a phone, a Filter button that opens a bottom drawer (FILT-01): narrow your window to see it. Both are on the Work page.

10 projects

Show

section-head

Listen

Cues from recent series. Press play, or click the waveform to jump in.

Other ways to set a heading and its lede. Each is shown with a short lede (a) and a long one (b), since an alignment that suits one line can look ragged at three.

Lede right-aligned to the page edge.

Work

Shows and projects I’ve scored.

Lede right-aligned to the page edge.

Bass

When I’m not writing, I’m playing. Live bass for touring acts, and bass and string arrangements in the studio.

Lede under the title, both on the left edge.

Work

Shows and projects I’ve scored.

Lede under the title, both on the left edge.

Bass

When I’m not writing, I’m playing. Live bass for touring acts, and bass and string arrangements in the studio.

A hairline runs from the title to the page edge; lede under the title.

Work

Shows and projects I’ve scored.

A hairline runs from the title to the page edge; lede under the title.

Bass

When I’m not writing, I’m playing. Live bass for touring acts, and bass and string arrangements in the studio.

Lede as a small caption beside the title, on its baseline.

Work

Shows and projects I’ve scored.

Lede as a small caption beside the title, on its baseline.

Bass

When I’m not writing, I’m playing. Live bass for touring acts, and bass and string arrangements in the studio.

Title left, a hairline across, the lede right-aligned at the end of the line. Chosen for the homepage. A lede too long for one line drops below the title (b); wrapping it on the right was rejected.

Work

Shows and projects I’ve scored.

Title left, a hairline across, the lede right-aligned at the end of the line. Chosen for the homepage. A lede too long for one line drops below the title (b); wrapping it on the right was rejected.

Bass

When I’m not writing, I’m playing. Live bass for touring acts, and bass and string arrangements in the studio.

track-row

  1. Placeholder cue

    Hello Kitty – Let’s Go

    1:12

  2. Placeholder cue

    Crayola

    0:48

embed-facade

A SoundCloud or Spotify track on a project page. Nothing from the service loads until it is pressed; then its player takes the row’s place (SoundCloud in the show’s colour).

The same row as a link out, for a record we can’t embed (Bandcamp and others): opens in a new tab.

  1. Hear the record The Black Ink · Opens on Bandcamp (opens in a new tab)

project-card

Cards respond to their own width, not the screen: the title steps down for long words. Use a grid that never lets a card go below 15rem.

  • Hello Kitty – Let’s Go

    Score
    Sanrio

  • LEGO DUPLO

    Score
    LEGO

  • Crayola

    Original music & score
    Crayola

  • Brookhaven

    Singles and scores
    Roblox

  • Miko

    Original music & score
    Miko

  • Extraordinary Adventures

    Score
    Narrowest card (15rem)

  • Extraordinary Adventures

    Score
    A medium card (24rem)

  • Extraordinary Adventures

    Score
    A wide card

  • text-card ·
  • text-card-long ·
  • text-card-xlong ·

project-card: concepts to compare

Directions for the same card, using the same data and tokens. Options are never edited once seen: a change is added as a new option with a new ID, and old ones are retired only when Dave chooses. Each option appears twice: “a” with a short title, “b” with a long one.

  • Sleeve, night disc rises from the top

    Brookhaven

    Singles and scores
    Roblox

  • Sleeve, night disc rises from the top

    Hello Kitty – Let’s Go

    Score
    Sanrio

  • Sleeve, night disc slides out of the side

    Brookhaven

    Singles and scores
    Roblox

  • Sleeve, night disc slides out of the side

    Hello Kitty – Let’s Go

    Score
    Sanrio

  • Sleeve, night disc on the right edge

    Brookhaven

    Singles and scores
    Roblox

  • Sleeve, night disc on the right edge

    Hello Kitty – Let’s Go

    Score
    Sanrio

  • Sleeve, coloured disc rises from the top

    Brookhaven

    Singles and scores
    Roblox

  • Sleeve, coloured disc rises from the top

    Hello Kitty – Let’s Go

    Score
    Sanrio

  • Sleeve, coloured disc slides out of the side

    Brookhaven

    Singles and scores
    Roblox

  • Sleeve, coloured disc slides out of the side

    Hello Kitty – Let’s Go

    Score
    Sanrio

  • Sleeve, coloured disc on the right edge

    Brookhaven

    Singles and scores
    Roblox

  • Sleeve, coloured disc on the right edge

    Hello Kitty – Let’s Go

    Score
    Sanrio

  • Cue first

    Singles and scores

    Brookhaven

    Roblox

  • Cue first

    Score

    Hello Kitty – Let’s Go

    Sanrio

  • Sticker

    Singles and scores

    Brookhaven

    Roblox

  • Sticker

    Score

    Hello Kitty – Let’s Go

    Sanrio

tour-pass

A tour laminate for each act Dave has toured with, hanging from a slack cord between pins (the Live page, LIVE-C1; chosen by Dave, 16 Oct 2026; LAM-01, the straight rail, is retired). Crayon fill and ink type, the same in both modes. Each pass draws its own piece of cord, dipping under its pass by a slightly different amount, so any number join into rows that wrap and balance (12 hang as two rows of 6); on a phone, one swipe row. On arrival the cord is strung left to right and each pass drops onto it, so the cord gives and settles; tap or hover lifts a pass, straightens it and its piece springs up. With reduced motion it simply hangs.

studio-desk and session-log

The Studio page (STUDIO-A1), shown here with two of Dave's sessions on the desk and the rest in the log. Up to four channels (sessions with "On the desk" switched on); choosing one raises its fader, lights its meter and puts its record on the monitor. Every other session is a row in the session log, which plays through the same monitor. The desk, tape and paper look the same in both modes.

Channel 01 · Bass

El Mahico

All Quarters

Session log

3 more

gatefold

The About page (ABOUT-A1): the inside of a record's gatefold sleeve. From 56rem it arrives closed (the cover photo with the name) and swings open on its spine; reload to see it again. A second photo inside on the left, liner notes on paper on the right, with credits set out like an album's personnel. On a phone the halves stack.

David Wademan playing bass on an outdoor stage in a denim shirt, a keyboard stand in front of him and a large screen behind

David Wademan Music Composer · Bass

I write music for the screen, and I play bass.

A short sample of the liner notes: two or three paragraphs in Dave's own words sit here.

They run in two columns when the panel is wide enough.

Composition
Sanrio, Crayola, LEGO
Bass
Kosheen, Blue, Five
DWM · Liner notes Get in touch

letter-form

The Contact page (CONTACT-A1): the enquiry as a letter to Dave on paper, the fields as blanks in one sentence. The topic is the site's dropdown drawn as a paper slip (with a mouse; phones use their own picker). Consent and "Send to Dave" share one line. Not connected yet: it says so on submit.

To: David Wademan Music · Re: a new project

Hi Dave,
I'm , and I'm writing about . You can reach me at .

credits-table

Composer credits
Title For Year
Hello Kitty – Let’s Go Sanrio TBC
Crayola Crayola TBC

From tablet up, the table with titles linked. On a phone (narrow your window), a stacked list: title in the show’s colour, “client · role” beneath, the year only when it’s known.

placeholder

Landscape photo

Portrait

Square

form-field

Refined fields, two directions. Line: no box, a hairline under serif text. Soft: a filled tile with the label inside. Dropdowns are redrawn: the chevron is set in from the edge and the open list is built from our tokens. On touch screens the phone’s own picker is used instead. A consent checkbox is included for each (a GDPR acceptance).

· 0:00