Design System ← back
Cubelets · v1.0

A voxel sculpture, in pastel.

Monument Valley palette. Nunito 600 throughout. Every panel is warm glass floating above a live 3D field — the scene is the screen, and the chrome never wins.

Monument Valley Pastel Vite · React · three.js 3 palette variants Capacitor → Android

Brand

A voxel heart built from dark + red cubes, with a single pink "cubelet" off-centre — the merge gameplay reduced to one frame. The icon is the brand statement; everything else stays quiet.

One frame of gameplay, scaled to a tile.

A heart shape made of red cubes, dark anti-cubes on the outside, and one pink cube — the "cubelet" that gives the game its name and its merge mechanic. Source: public/icon-512.png.

App icon · sizes

24 · favicon
48 · android
64 · marketing
96 · home-screen
128 · store
192 / 512

Color

Monument Valley Pastel. Three warm-cream backgrounds, two levels of warm glass, three tiers of espresso text, and a seven-stop cube swatch. No grey, ever — even shadows are warm brown.

Backgrounds

bg-0#f5e4cb
bg-1#efd4b0
bg-2#e8c09d

Glass surfaces

glass-bgrgba(255,245,225,0.62)
glass-bg-strongrgba(255,245,225,0.88)
glass-borderrgba(140,80,60,0.16)

Text — warm espresso

text#3b2a2a
text-dim#7a5c4f
muted#9b7e6c

The seven cube colours

c-violet#8b5a7d · accent
c-magenta#d87888 · R
c-coral#e8927d
c-gold#e6b94a · focus
c-sky#9ed6c2
c-green#7fbfa0 · G
c-cyan#5fb3a8 · B

Gradients

g-prismcoral → magenta → violet
g-warmcoral → gold
g-glass-lighttop-gloss overlay

Palette variants

Three full palettes ship in code, swapped at runtime via body[data-palette="…"]. Adding a variant only requires re-binding the tokens you want to change — usually the three backgrounds and one or two cube hues.

base
dusk
neon

base — daytime warm cream · dusk — rose plum evening · neon — misty mint (named before the aesthetic settled; cool sister of base).

Typography

Nunito at weight 600, applied on :root so every element inherits it. Display weight (800) is reserved for the score and titles. The rounded letterforms match the rounded cubes.

Display56 / 800
12,480
Title28 / 800
Game Over
Body16 / 600
Drop cubes onto the field. Match three to merge.
Caption13 / 600
Best run: 24,560
Micro11 / 700 · caps · 1px
UNLOCKED

Spacing

Friendly base-4 scale. Generous on the wide end — glass cards breathe.

sp-14px
sp-28px
sp-312px
sp-416px
sp-524px
sp-632px
sp-748px
sp-864px

Radius

Soft on glass, soft on chips — never sharp.

r-chip8px
r-btn12px
r-card18px
r-pill999px

Shadow

All warm brown. Grey shadows turn the cream into beige — these shadows make the chrome feel like it's sitting in the same world as the cubes.

sh-card
+ glow-violet
+ glow-cyan

Glass card

The base primitive. Warm-tinted translucent fill, 1px hairline, radius 18, soft-warm shadow, plus a 1px white inset highlight at the top edge to fake the reflection.

Lightweight

glass-bg, sits over the field

Settings-strength

glass-bg-strong, full panels

Buttons

Primary uses the g-prism gradient (coral → magenta → violet). Glass for secondary, ghost for tertiary. Pill variant for big "Play" CTAs.

Variants

Pill (start-screen CTA)

Score HUD

The floating pill at the top of the screen. Strong glass for legibility over the busy 3D field, score in display-800, the multiplier in g-warm.

12,480 ×3

Modifier picker

Three glass tiles between game phases — pick a perk before the next wave. Hover/tap glow uses sh-glow-violet.

Multiplier

2× scoring for the next 30 cubes.

Clear row

Wipe the bottom row and reset combo.

Slow time

Halve drop speed for 15 seconds.

Awards

Earned badges fill with g-warm; locked badges sit as desaturated glass discs. Names in micro-11 caps.

First merge
10×
Combo 10
Heart shape
25×
Combo 25
Endless

Cube colours · in 3D

These are the actual cubes dropped onto the field, with the watercolour shading recipe: a 135° light gradient on top, a soft inset shadow at the bottom, and a warm drop shadow beneath.

violet#8b5a7d
magenta#d87888
coral#e8927d
gold#e6b94a
sky#9ed6c2
green#7fbfa0
cyan#5fb3a8

Start screen — assembled

The system composed into the actual start screen. Logo, primary "Start" pill, score HUD floating top, glass nav buttons below.

9:41● ● ●
12,480×3
Cubelets

Doing it wrong

Things that will look out of place in Cubelets.

Don't

Cover the play field with a solid panel. Glass only — the player must always see the cubes behind the menu.

Don't

Use grey or cool shadows. All drop shadows are warm brown (rgba(140,80,60,…)); grey turns the cream into beige.

Don't

Use saturated UI fills. Saturated colour belongs to the cubes. Even the primary CTA uses the prism gradient, not a flat hue.

Don't

Switch font weight inside body copy. Nunito 600 everywhere; only Display (800) is a separate weight.

Do

Reach for --c-* tokens — never raw hex. A new screen must work in base, dusk, and neon.

Do

Use the prism gradient for "this is the brand" moments — the logotype, the primary play button, the loading hero.