design system

01 · Identity

The pixel-slab Face is the house mark; each live app carries its own glyph, icon, and banner in its own accent.

Face

dreem
44px
88px
152px

App glyphs

pitchEar training
padded
tight
scalesScale explorer
padded
tight
grooveRhythm trainer
padded
tight

App icons

dreem app icondreem
pitch app iconpitch
scales app iconscales
groove app icongroove

Favicons

dreem favicondreem
dev favicondev
pitch faviconpitch
scales faviconscales
groove favicongroove

Banners

dreem banner
dreem
pitch banner
pitch
scales banner
scales
groove banner
groove

02 · Tokens

Every surface reads the same CSS variables — one set of names, six accents, both themes.

Colors

acc
#F59E0B
on-acc
#0D0D0C
ink
ink-2
line
tile
field
field-border

App accents

Pitch
#1FB85A
on-acc
glow
ring
shine
Scales
#3AA6FF
on-acc
glow
ring
shine
Groove
#FF5A2C
on-acc
glow
ring
shine
Design System
#F59E0B
on-acc
glow
ring
shine
dreem.ing
#E9FF60
on-acc
glow
ring
shine

Backgrounds

dreem-bgradial page gradient — behind every app; dark & light
color-glowaccent glow — the DreemBackground blob; per-app tint (boosted here)

spring-damped accent glow that slowly chases the cursor — exported as DreemBackground, mounted behind every app (not this page — it stays plain); `contained` scopes it to a box and tracks the cursor within it

Typography

Instrument Serif
serif · display headings
400 + italic
The quick brown fox jumps over
Schibsted Grotesk
disp · wordmarks · numerals
400–800
The quick brown fox 0123456789
Martian Mono
mono · body · micro-labels
variable 100–800
The quick brown fox 0123456789

Radii

field · 4px
card · 8px
pill · 9999px

Sizing

Sizes are curves, not steps. scaleAt(w, a, b, c) pins a value at three calibration widths — 375 / 900 / 2200 — and interpolates linearly between them, so the UI scales continuously instead of snapping at breakpoints. The hero letter goes further: useTitleFit measures the real title box and fits the letter's ink to it.

900px viewport
hero letter58 → 78 → 100 78px
control height30 → 36 → 50 36px
field label9 → 10 → 11 10px
row gap9 → 11 → 14 11px
375900220050px30px
Aa

03 · Controls

The form primitives every app shares — field-toned, hairline-bordered, accent-lit when active.

Button Group

Stepper

6

Interactive Stepper

Slider

64

Toggle

PlayBtn

Button

Glass caps

SlideToggle — hardware switch, shared by every app

The rule that keeps these consistent: the face is FLAT. Depth is one hairline pair — a thin shadow on the top inner edge, a thin light on the bottom — and nothing more. Give that top shadow blur and the resting button reads as being held DOWN; real travel belongs to :active / .is-down, which sinks the cap and lights the accent bloom. Separation from a surface is an OUTER hairline, never an inset dark ring: inset reads as a bevel, which is the same trick that makes something look recessed.

Icon buttons

Button Toggle

tap to retune

Text field

Text area

Field · settings

Metronome
Click on every beat
Counting
Syllables under the staff
Tempo
Beats per minute
Swing
Shuffle the off-beats — coming soon

04 · Motion

Collapses animate to natural size with the grid 0fr↔1fr trick — no measuring, no jank.

HCollapse

6

VCollapse

Metronome
Click on every beat
Volume

05 · Overlay

ModalShell — a glass dialog on desktop, a drag-to-dismiss bottom sheet under 640px.

ModalShell

portal-rendered · focus-trapped · esc / backdrop closes

Dialog

Settings

448px, centered, ✕ in the header — desktop and wide windows

Drawer

Settings

full-width, drag handle above the header, no ✕ — phones under 640px

07 · Chrome

Transient UI that floats above the page — toasts, not nav.

Toast

Link copied
share flashes the real fixed TopNavToast, top-right

08 · Surfaces

dreem.ing studio-site patterns — cards, spec lists, site CTAs, and the app preview frame. Separate register from app bg-tile demos above.

Vertical card

Coming soon
gamepadHALF 60%Half a 60%. All the keys a game needs.PROTOTYPING

Horizontal card

THE SYSTEM · IN DESIGNOne modular system.
Every board above.
Shared bezels, shared feet, one hardware kit — configured for the 40s, the 60s, the pads. MODULAR SYSTEM

App card

pitchLIVEAn ear-training game. Ten rounds, one note at a time, identify it by sound alone.pitch.dreem.ing
tunerSOONA chromatic tuner. No telemetry between you and E standard.

Numbered list

  • 0110 ROUNDS PER SESSION
  • 02TRACKED STATS · LOCAL ONLY
  • 03HONEST SCORES — PERFECT EAR TO EARLY DAYS

Site buttons

APP STORE · SOONGOOGLE PLAY · SOON

Separate from app Button / IconButton — site uses rounded-[4px], leading-arrow solid CTAs, and outline store chips.

SupportPrivacy policyModular system

Hover → cyan on the live site

Browser frame

pitch.dreem.ing

Which note is this?

01 / 10 · playing

C
D
E
F
G
A
B