The concept
Lastlight is both Wing VII’s finale and its curtain call. The page begins in nocturne indigo and physically scrolls into first-light gold. Its central image is a dark horizon holding twenty-four embers, one for every preceding room from Noctiluca to Gaslight. Each ember uses the originating room’s palette and links back to it. Dawn extinguishes them according to what daylight would reveal first, not by catalogue number: high ice and stars, nocturnal animals, sheltered lights, working lights, public lamps, then the gas mantle.
The emotional rule was tenderness rather than spectacle for its own sake. Every disappearance carries a one-line farewell. The sequence feels less like switching off an interface and more like walking a reverse lamplighter’s round.
The Dawn Dissolve
The signature lives in index.html inside .dawn-scroll, a 760vh runway containing the sticky .dawn-stage. Every .room-light has an individual --x, --y, --c, and data-off value. In main.js, updateDawn() converts travel into zero-to-one progress. It updates --p, computes a local --life for each ember, flips .is-off, moves the sun, changes the solar-angle readout, and selects the nearest farewell.
skyAt() interpolates five RGB stops from deep indigo through blue hour, rose and pale day. The −6° civil-twilight callout appears at the matching point. At full progress, all embers recede and the closing inscription takes the sky.
Atmosphere in code
seededStars() creates deterministic star maps, so the composition never jumps between visits. drawHeroSky() and drawDawnSky() paint capped canvas fields plus a faint noctilucent ribbon; fitCanvas() limits pixel density. The animation loop only changes scintillation and halts whenever document.hidden is true. CSS supplies shaped room glyphs, layered ridges, cityline, radial-gradient sun, haze, lens falloff, and low-opacity SVG grain.
Late in the sequence, the Afterimage control offers one tender reversal. toggleMemory() recalls every extinguished glyph in its own palette, staggered in true dawn order, while the sky holds a darker photographic veil. It is a real button with persistent pressed state, so touch, mouse, and keyboard receive the same curtain-call moment.
Reduced-motion mode removes the curtain, twinkle, ember pulse, smooth scrolling, and transitional easing while preserving the complete scroll-controlled story and an immediate Afterimage state. No visual depends on a downloaded asset. That constraint is the Wing VII signature: light itself is the material, and every photon here is code.
Reproduce this
Prompt an AI agent to build a code-only editorial experience around one irreversible natural transition. Ask for a sticky full-viewport scene controlled by scroll, a small set of physically meaningful colour stops, and many individually authored linked lights with distinct positions, colours, thresholds, and micro-copy. Require semantic HTML, a plain-text equivalent of the visual navigation, self-hosted fonts, reduced-motion fallbacks, visibility-paused animation, and screenshot audits at phone, tablet, and desktop widths. Most importantly, name the emotional sequence before asking for effects. Here, every implementation decision serves one sentence: twenty-four rooms say goodnight in the order dawn would find them.