Design decisions — Phase 1
Palette and type
- Graphite
#080A0Ebackground, charcoal#11151Csurfaces, cool blue#78A9FFas the only accent, silver#C9D0D9for secondary text, paper#EEF1F5for text. The warm tones come from the photographs only. - Geist for text and headlines, Geist Mono for technical labels and tabular numerals, Instrument Serif italic for a single accent in display headlines.
- 12-column grid, thin rules, generous spacing; no gradients, glass effects or neon.
Hero: two compositions compared
| A — editorial split (chosen) | B — full-bleed photograph | |
|---|---|---|
| Layout | Headline on 7 columns, photograph on 5 columns in its native portrait framing | Photograph behind the headline, darkened by an overlay |
| Authenticity | The whole shelving unit is visible, uncropped in width, with no treatment over the machines | A portrait photo forced into a landscape band loses most of the rack; the overlay alters how the hardware looks |
| Readability | Text on a flat background: contrast is constant at every width | Contrast depends on what lies under each word; fails on small screens |
| Performance | One image at ≤42vw on desktop | One image at 100vw, larger LCP |
A was selected on all three criteria. On mobile the photograph follows the text at full width.
Motion
- Scroll-driven reveals in pure CSS (
animation-timeline: view()), so content is never hidden when scripts fail. A slow parallax on one photograph. Dashed "trace" animation on network links. - Everything is disabled under
prefers-reduced-motion. - No 3D and no motion library.
Identity
- Original mark: six nodes on a hexagonal lattice joined to a core. No third-party logo or trademarked shape.
Diagrams
- The topology and the architecture diagram are HTML with real text (translatable, zoomable, readable by assistive technology) and small SVG connectors. They show roles and boundaries only.
Version 2 (2026-11-10): light theme and live telemetry
- The palette above is superseded. Background
#F6F7F9, white surfaces, ink#0C1322, one accent#1D5FD1; status text#076A40/#8A4B00. Tokens are named by role insrc/app/globals.css. - Chart series: CPU
#2A78D6, memory#EB6834, GPU#1BAF7A(distinct under colour-vision deficiency), always with a legend, a tooltip and a table view. Text never takes a series colour. - Meters are blue; only memory changes colour at high pressure, since a busy CPU or GPU is expected. The CPU wall uses one blue ramp, light to dark.
- Live data is fetched by the site's server from the monitoring agent and reduced to utilisation figures (
src/lib/live.ts). The browser only calls/api/live*.