All systems nominal 47.61°N 122.33°W Crew 2 · Powder on duty
FM

Flight Manual

Colophon · rev 1.0

How this site is built, for the people who open DevTools.

One static page, generated ahead of time, with no client framework and almost no JavaScript. Everything you read works with scripts off. The one exception is the FO-01 survey model: about 400 lines of hand-written WebGL 2, no 3D library, fetched only when it scrolls into view and rendered only when something changes.

Budget

Measured on the home page at build time · uncompressed

HTML + inline CSS
106.3 KB
JavaScript
3 KB · inline, no framework
Fonts
88.8 KB · 5 files, self-hosted, latin subset
Images
223.2 KB · mark, crew
Total
418.3 KB · 17 requests
Survey model
34.7 KB · WebGL + mesh, loaded when you scroll to it

Principles

Built to hold. Static output, no runtime dependencies, nothing to break at 3 a.m. Every external link is a plain link.

Restraint. One accent colour, used for the thing that matters on each screen. No shadows anywhere: depth comes from overlap and line weight.

Grounded in real hardware. The FO-01 survey sheet is drawn from real elevation data, not an illustration. The orbit, the ticks and the status bar all borrow from actual instruments.

Motion obeys physics. Things move because they would: the orb orbits, the mark weaves, the lamp blinks. Set Engines: Idle in the header, or ask your OS for reduced motion, and everything parks in its resting pose.

Survey data

FO-01's contours come from Terrain Tiles on AWS (Mapzen's terrarium encoding, zoom 12), derived from public elevation datasets including USGS 3DEP. Four tiles were resampled to a 64 × 64 grid of roughly 240 m cells, smoothed, and contoured every 400 ft with contourpy. The 3D model resamples that grid to 129 × 97 vertices at decimetre precision and draws contours in the fragment shader, so they stay sharp at any zoom. The transect samples the same grid along a straight line from Crestone to the summit, so it reads a little under the published 14,294 ft: the cells average the peak with its surroundings. Summit heights in the text are the published figures.

The pipeline is two files: the grid, checksummed row by row, and scripts/terrain.py. Swap in a GPX track and a finer grid and the same plate becomes a real route.

Design system

Everything here is drawn from Flight Manual, the NYKO design system: 26 colour tokens across a Night and a Day theme, three type families and a 4 px spacing scale. Every text colour clears WCAG AA on the surfaces it's allowed on, and keyboard focus is a solid 2 px ring in every theme.

Signal colours

ember
#FF4A22
amber
#FFB300
flame-core
#FFF3E0
brand-blue
#3238C9
signal
#8A93FF
nominal
#3FD69B
caution
#FFB300
hull-mid
#9AA4BE
hull-shadow
#525C7A

Night surfaces and ink

surface-000
#0A0D18
surface-100
#101322
surface-200
#171B2E
ink
#E6E9F2
ink-muted
#9AA4BE
ink-subtle
#7E88A6
line
#262B42
control
#616B8A
Display
Big Shoulders Display 800
Text
IBM Plex Sans 400 / 500
Telemetry
IBM Plex Mono 400 / 500
Stack
Astro 5 · static · Fontsource

Credits

Mark, system and site: Nykolas Farhangi. Typefaces: Big Shoulders Display and IBM Plex, both under the SIL Open Font License. Co-pilot: Powder.