WINDWARD

WINDWARD is a fictional surface-wind observatory. Its one job is to make an invisible field legible at a glance — thousands of tapering strokes advected through a live wind field over a dark relief, gusting gold where the flow squeezes through the passes, with a corner instrument that sounds the bearing and knots anywhere you point.

Palette

One dusk ground, one bright accent reserved strictly for the moving air, and a derived slate ink for every word — so nothing small is ever set in the line colour.

Terrain dusk
#12161C
The ground the wind crosses. Near-black with a blue cast — night over a range, not a void.
Streamline
#7FD1C4
The wind itself. A cool marine teal for the flowing strokes — LINE/MARK only, never body text.
Gust highlight
#EAD7A0
Warm sand-gold. Strokes flare to this where a gust accelerates through a pass — the one heat in a cool field.
Slate ink
#C6D0D9
Derived body ink — ~11:1 on the dusk ground. Carries the headline and prose the teal could not.
Ink dim
#93A0AC
Secondary copy and captions, still comfortably above 4.5:1.
Line dim
#4E8A82
Minor contour lines and eyebrow rules — the teal held back to a whisper for the terrain.

Type

Windward
Archivo · Display

An engineered grotesque with wide, upright letterforms that read like instrument signage. It holds a wordmark at 12rem without wobble, and the tight cut keeps a huge headline dense rather than airy.

247° · 23kn
IBM Plex Mono · Data

The measurement voice. Tabular figures keep the bearing, knots and coordinates from jittering as they tick, and the mono width signals "this is a reading, not a claim."

Technique

A single seeded value-noise height field is the source of everything. Sampled on a grid and run through marching squares, it becomes the SVG contour relief — nine elevation levels, majors every third line brighter. Sampled again for its gradient, it becomes the wind vector grid: a prevailing flow deflected to follow contours around ridges and accelerated through the low saddles by a venturi term.

The signature is the streaming field. A few thousand massless tracers are advected through the vector grid by bilinear sampling; each frame the canvas is faded with a destination-out wipe rather than a paint, so old trails erode toward transparency and the SVG relief shows through underneath. Stroke length, width and opacity read the local speed; the colour lerps from teal toward gust-gold as a coherent gust front marches diagonally across the range every ~18 seconds. Point anywhere and a live sample reports the wind the way a station would — the compass bearing it blows from, in knots.

No libraries — just canvas 2D, inline SVG and the noise function. Motion caps devicePixelRatio at 2, sizes to the container, rebuilds the relief and grid on a debounced resize, and pauses the loop when the tab is hidden.

Iteration log

Designed & built by Sapience Analytics — part of the Generative Assets collection.