Menu

Retro Design System

Tokens and primitives for the blog, projects, chores, and arcade-flavored product surfaces. Built from hard outlines, bright rewards, readable controls, and a little cartridge logic.

version v1 tokens 32 primitives 10 status playable
01 //

Typography

Departure Mono carries the game layer: headings, counters, labels, badges, and compact UI. Body copy can stay plain and readable, but anything structural should feel like a cartridge label.

display QUEST LOG

font-family: var(--font-mono)

body Clear product copy

18px max for long reading, tighter for UI

numeric 007 / 120

scores, counters, positions, save slots

02 //

Color

The palette starts with ink and warm paper, then uses blue, yellow, green, pink, cyan, and red as explicit game states. Each color should have a job: action, reward, info, danger, or highlight.

ink--retro-ink
paper--retro-paper
blue--retro-blue
yellow--retro-yellow
green--retro-green
pink--retro-pink
cyan--retro-cyan
red--retro-red
03 //

Spacing

Use a 4px grid. Dense UI lives between 8px and 24px; page rhythm gets 32px, 48px, or 64px. Hard shadows count as visual space, so leave room for them.

space 14px
space 28px
space 416px
space 624px
space 832px
space 1248px
04 //

Borders + Shadows

Edges are square. Default objects use a 4px black border and hard offset shadow. Smaller controls may use 2px borders, but soft shadows stay out of the arcade layer.

panel / 4px border / 6px shadow
card / pressable shadow
divider / dashed route line
05 //

Motion

Motion should feel mechanical: press, blink, scan, fill. Keep it short and deterministic, and disable ambient motion when reduced motion is requested.

charge
06 //

Sprites + Iconography

Prefer existing pixel-adjacent assets over generic outline icons. Sprites can label a route, reward a completed action, or make a card feel like a save file.

blog
projects
reward
speed
social
07 //

Buttons

Buttons are physical controls. Primary actions use yellow, confirmation uses green, destructive actions use red, and secondary actions stay white.

08 //

Inputs

Labels sit above fields. Focus uses a strong outline and a small shadow shift, never a soft glow.

10 //

Tables

Admin surfaces use dense rows with heavy dividers, compact actions, and enough whitespace to scan without losing the arcade feel.

record state score action
writing-console live 94
chore-quest active 120
11 //

Lists

Lists should read like quest objectives: short labels, visible completion, and no decorative clutter.

  • write the route
  • draw the panel
  • ship the test
  1. load save
  2. inspect state
  3. press start
12 //

Meters + Progress

Meters show score, allowance progress, craft, or completion. Use blocky fills and visible labels.

daily points / 7
project polish
13 //

Cards + Panels

Cards are save files, blog cartridges, or quests. Panels hold grouped controls and should not nest.

Writing Console

Notes on software, teams, and shipping with a little arcade texture.

Markdown Blog
save file 02

Chore Quest

Recurring work, points, completed runs, and payout support.

Clear Table

Reset the surface, collect the score, and move to the next quest.

14 //

Feedback

Feedback should be loud enough to notice and small enough to keep working. Use color by state, not decoration.

15 //

Empty + Loading States

Use a boot log when the system is fetching unknown work. Use an empty panel when the next action is clear.

[ok] connect database

[ok] fetch projects

[..] render cards

No projects yet

Create one save file to unlock the cabinet.

16 //

Voice + Tone

Use short, concrete product language with game flavor only where it clarifies the workflow. Avoid turning routine UI into a joke.

Do

  • Save Project
  • Completed today
  • Allowance earned
  • Open save file

Do not

  • Welcome to my amazing portal
  • Gamify every single button
  • Use soft shadows or rounded SaaS cards
  • Hide the next action