DESIGN.md · Analysis

21 Hours on the Moon

21hrs.space · 10 Jul 2026 · 47 colors · FuturaStd, AkkuratMonoLL

21 Hours on the Moon

An immersive Apollo 11 lunar exploration experience combining archival imagery, 3D visualization, and temporal navigation. The design system employs a retro-futuristic aesthetic rooted in 1960s space-age instrumentation, with a monochromatic palette punctuated by warm accent tones and technical UI elements.

Colors

surface#000000
surface-dim#0a0a0a
surface-bright#1a1a1a
surface-container-lowest#050505
surface-container-low#0f0f0f
surface-container#1a1a1a
surface-container-high#2a2a2a
surface-container-highest#3a3a3a
on-surface#fff3ea
on-surface-variant#d9d9d9
inverse-surface#fff3ea
inverse-on-surface#000000
outline#e4b592
outline-variant#666666
surface-tint#dad0c8
primary#ee1212
on-primary#fff3ea
primary-container#8b0a0a
on-primary-container#fff3ea
inverse-primary#ff4444
secondary#e4b592
on-secondary#000000
secondary-container#d9a080
on-secondary-container#1a1a1a
tertiary#dad0c8
on-tertiary#000000
tertiary-container#c0b5a8
on-tertiary-container#1a1a1a
error#ee1212
on-error#fff3ea
error-container#8b0a0a
on-error-container#fff3ea
primary-fixed#ff4444
primary-fixed-dim#cc0f0f
on-primary-fixed#fff3ea
on-primary-fixed-variant#fff3ea
secondary-fixed#f0c9b0
secondary-fixed-dim#d9a080
on-secondary-fixed#1a1a1a
on-secondary-fixed-variant#2a2a2a
tertiary-fixed#e8ddd0
tertiary-fixed-dim#d0c5b8
on-tertiary-fixed#1a1a1a
on-tertiary-fixed-variant#2a2a2a
background#000000
on-background#fff3ea
surface-variant#1a1a1a

Typography

display
fontFamily: FuturaStd · fontSize: 100px · fontWeight: 700 · lineHeight: 110px · letterSpacing: -0.02em
headline-lg
fontFamily: FuturaStd · fontSize: 50px · fontWeight: 700 · lineHeight: 58px · letterSpacing: -0.01em
headline-md
fontFamily: FuturaStd · fontSize: 32px · fontWeight: 700 · lineHeight: 40px · letterSpacing: 0em
title-lg
fontFamily: AkkuratMonoLL · fontSize: 20px · fontWeight: 500 · lineHeight: 28px · letterSpacing: -0.1em
body-lg
fontFamily: AkkuratMonoLL · fontSize: 18px · fontWeight: 400 · lineHeight: 28px · letterSpacing: -0.05em
body-md
fontFamily: AkkuratMonoLL · fontSize: 16px · fontWeight: 400 · lineHeight: 24px · letterSpacing: -0.1em
label-md
fontFamily: AkkuratMonoLL · fontSize: 14px · fontWeight: 500 · lineHeight: 20px · letterSpacing: -0.1em
label-sm
fontFamily: AkkuratMonoLL · fontSize: 10px · fontWeight: 300 · lineHeight: 14px · letterSpacing: -0.1em

Design guidance

Overview

21 Hours on the Moon is an immersive digital archive celebrating the Apollo 11 lunar landing, employing a **Retro-Futuristic Instrumentalism** aesthetic that evokes 1960s space-age technology and mission control interfaces. The design channels the precision, clarity, and gravitas of NASA's golden era—combining monochromatic depth with warm metallic accents (#e4b592, #dad0c8) and a singular red alert tone (#ee1212) that punctuates critical interactive moments. The UI treats the user as a mission operator: every element is purposeful, every interaction is deliberate, and every visual hierarchy reinforces the historical weight of the subject matter.

The brand voice is authoritative yet intimate—technical without jargon, reverent without sentimentality. Sentences are declarative and precise: "Armstrong and Aldrin spent 21 hours, 36 minutes on the lunar surface." Typography pairs the geometric boldness of FuturaStd (headlines, CTAs) with the monospaced clarity of AkkuratMonoLL (body, labels, timelines), creating a visual rhythm that mirrors both the futurism of the 1960s and the mechanical precision of spacecraft systems. The palette is deliberately constrained—pure black canvas (#000000), warm cream text (#fff3ea), and accent metallics—forcing the user's attention onto content and interaction rather than decorative color.

Colors

The color system is rooted in **high-contrast monochromacy with strategic warm accents**, reflecting both the aesthetic of Apollo-era mission control and the visual clarity required for immersive content consumption. **Primary (#ee1212)** is a vivid red alert tone reserved exclusively for critical CTAs ("Scroll to Land" button), error states, and mission-critical interactive elements; it appears sparingly to maximize impact and maintain visual hierarchy. **Secondary (#e4b592)** is a warm bronze-tan used for frame corners, decorative borders, and tertiary interactive states—evoking the metallic instrumentation of 1960s hardware. **Tertiary (#dad0c8)** is a soft taupe used for progress bars, secondary UI elements, and subtle highlights. **On-surface (#fff3ea)** is a warm cream-white that ser

Typography

The type system employs a **dual-family hierarchy** that separates display/headline content (FuturaStd, 700 weight) from body/label content (AkkuratMonoLL, 300–500 weights). FuturaStd's geometric, slightly condensed letterforms evoke 1960s modernism and command visual authority—used at 100px (display), 50px (headline-lg), and 32px (headline-md) for hero titles and major section breaks. AkkuratMonoLL's monospaced, technical character set grounds the interface in precision and recalls mission control typography—deployed at 18px (body-lg), 16px (body-md), and 10px (label-sm) for narrative content, UI labels, and timeline annotations. Letter-spacing is consistently negative (-0.1em on body, -0.05em on body-lg) to tighten the monospace letterforms and create visual density, reinforcing the tech

Layout

The layout employs a **fixed, full-viewport canvas-first model** with a 12-column grid overlay (visible in debug mode) for precise alignment of UI chrome. The container max-width is 1280px, but the primary experience is full-bleed (100vw × 100dvh) to maximize immersion in the 3D lunar visualization. Spacing follows a semantic scale: **gutter (30px)** separates major UI zones (menu, timeline, frame corners); **lg (40px)** creates breathing room between section blocks; **md (24px)** is the default padding for cards and interactive elements; **sm (12px)** is used for compact label spacing and internal component padding. The timeline container is positioned absolutely at the bottom (bottom: 20px on mobile, bottom: 12px on tablet+) with a calculated width (calc(100% - 40px) on mobile, calc(100%

Elevation & Depth

Depth is conveyed through **layered transparency, border emphasis, and selective shadow application** rather than traditional drop shadows. The visual hierarchy consists of three discrete levels: **Level 1 (Canvas Base)**: The Three.js canvas renders the lunar surface and stars at z-index: -1 and z-index: 2, providing the immersive background. **Level 2 (UI Chrome)**: Frame corners, timeline, and menu buttons sit at z-index: 3–4 with a 2px solid border in {colors.outline} (#e4b592) and a subtle box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15) to separate them from the canvas. Interactive buttons use

Shapes

The shape language follows **Architectural Sharpness with Minimal Softening**, reflecting the precision of 1960s spacecraft design and mission control interfaces. Border-radius is applied conservatively: **lg (1rem / 16px)** is used for frame corners (border-radius: 10px 0 0 on rotated elements) and major card containers, creating a subtle softness that prevents the design from feeling austere. **md (0.75rem / 12px)** is applied to buttons and input fields, providing just enough rounding to feel contemporary while maintaining the technical aesthetic. **DEFAULT (0.5rem / 8px)** is used for smal

Components

Action Elements **Button-Primary** (#ee1212 background, {colors.on-primary} text) is reserved for mission-critical CTAs like "Scroll to Land" and error acknowledgments. It uses a 2px solid border in {colors.primary}, 12px horizontal padding, 48px height, and a 200ms cubic-bezier(0.4, 0, 0.2, 1) transition. On hover, the background shifts to {colors.primary-fixed-dim} (#cc0f0f) and the border follows, creating a subtle darkening effect. **Button-Secondary** uses a transparent background with a 2px border in {colors.outline} (#e4b592) and {colors.on-surface} text; on hover, the background becomes {colors.surface-container-high} and the border shifts to {colors.secondary}, creating a warm, inviting state. **Button-Ghost** is a minimal variant with a 1px border at rgba(255, 243, 234, 0.3)

Do's and Don'ts

**Do**

  • Do use {colors.primary} (#ee1212) exclusively for mission-critical CTAs and error states—never for decorative elements or secondary actions.
  • Do maintain the monochromatic black-and-cream palette as the dominant visual language; use {colors.secondary} and {colors.tertiary} as accent metallics only.
  • Do apply negative letter-spacing (-0.1em on body, -0.05em on body-lg) to AkkuratMonoLL to maintain visual density and technical precision.
  • Do layer UI elements using z-index and border emphasis rather than drop shadows; when shadows are necessary, use box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15) or stronger for elevated states.
  • Do use FuturaStd exclusively for display and headline content (50px+); reserve AkkuratMonoLL for body, labels, and UI chrome.

**Don't**

  • Don't introduce new accent colors or gradients; the palette is intentionally constrained to maintain the retro-futuristic aesthetic.
  • Don't use rounded corners larger than 1rem (16px) on major components; excessive rounding undermines the technical precision of the design.
  • Don't apply blur or backdrop-filter effects; the design relies on solid borders and transparency to suggest depth, not glassmorphism.
  • Don't use system fonts or generic sans-serif fallbacks; always load FuturaStd and AkkuratMonoLL via @font-face to preserve the 1960s space-age character.
  • Don't animate color transitions faster than 200ms or slower than 400ms; the interaction timing should feel responsive and mechanical, not organic or playful.