← Back to the almanac  ·  Index
Almanac No. 113 · Deep Time · How it was built

Saros

A dark almanac that runs the Moon through its phases while the 223-lunation Saros cycle predicts each eclipse. The single job of the page: make why eclipses return every eighteen years something you can watch in seven seconds — with a partial already caught mid-frame.

The concept

Saros is a fictional deep-time almanac for a reader who has looked up at an eclipse and wondered how anyone knew it was coming. The Babylonians did: an eclipse repeats after 223 synodic months — 6,585 days, or 18 years, 11 days, 8 hours — because that span is also a whole number of draconic months, returning the Moon to the same node. The page is that clock, drawn. The Moon marches through its phases at the centre; a wheel of 223 lunations turns beside it with the eclipse-capable months lit in gold; a drone tuned to the beat between the two lunar periods swells as the shadow arrives.

Palette — argued from the subject

A night sky seen from the shadow side. The bright accent is reserved for light — the corona, the eclipse marks, the pointer — while text runs in a lighter slate ink so body copy clears 4.5:1 over the animated field.

Night
#0E1424
The unlit sky. A blue-black, not a true black — the Moon is never in perfect dark.
Moon-slate light
#C7CFE0
The lit lunar surface — cool, chalky, faintly blue. Never white.
Corona
#E6D08A
The accent, for lines and marks only: the eclipse ticks, the pointer, the sun behind a new moon.
Umbral copper
~#8A3A28
Earth's shadow on the eclipsed Moon — the light bent red through our atmosphere.
Ink
#C6CEDF
Body text on night, above 8:1. Readouts stay legible over the sky.
Umbra line
#3A4A66
Hairlines, the wheel's inner ring, the dark limb — structure that recedes.

Type

Saros — the shadow returns
EB Garamond for display and headings. An almanac is a printed object; a humanist old-style face with a true italic gives the page the authority of an ephemeris without period costume. The wordmark's italic S in corona gold is the one moment of typographic bravery.
223 LUNATIONS · 18 y 11 d 8 h
IBM Plex Mono for every readout, tick label, and date. Tabular figures keep the lunation counter, the Saros percentage, and the node latitude from twitching as they change — the discipline an instrument needs.

Techniques

Iteration log

Pass 1 · Craft

The Moon was lit inside-out

The first terminator used an arc-plus-ellipse path, and it was wrong at the extremes: a new moon rendered fully bright and a waxing gibbous rendered nearly dark — the illuminated fraction was inverted through the crescent and gibbous ranges. I derived the exact per-column lit rule, validated a scanline reference across all eight canonical phases, then rebuilt drawPhase (and the wheel's hub moon) as a scanline clip. Also fixed a copy defect: the readout announced the next eclipse while one was plainly in frame — it now describes the current one.

Pass 2 · Depth

Two kinds of shadow, and a clock that waits

Eclipses were being painted as a red bite on every syzygy, including new moons — nonsense for a solar eclipse, where the Moon is dark. Split the render: coppery umbra for lunar, annulus-clipped gold corona with rays for solar. Then the second-read detail — the day-rate now eases toward a near-stop as the Moon closes on a syzygy-at-node, so the page lingers on each eclipse and drifts through the ordinary months. Added earthshine on the dark limb and mare mottling so the disc rewards a closer look.

Pass 3 · Hardening

375px, reduced motion, and the resting frame

On a phone the Moon and the wheel had been placed side by side and collided; they now stack vertically with shrunk radii, the wake-hint is hidden, and the panel compacts — scrollWidth holds at 375 with no element crossing the edge. Under prefers-reduced-motion the loop never starts: a single settled frame renders on the partial lunar eclipse, no audio, no rAF. The loop pauses on document.hidden, resize is handled, DPR is capped at 2, and the drone is gated on the first gesture. Removed one ornament — a redundant corona ring that fought the umbra — per the Chanel rule.

Designed & built by Sapience Analytics — part of the Generative Assets collection. The almanac · Index