01The concept
The Cenotaph at Night is built around a refusal. Every neighboring room in the War Wing is allowed cinematic force; this one declines film. A single floodlit photograph remains immovable while the visitor supplies the only decisive camera movement by scrolling toward midnight.
The emotional spine is a civic vigil at 23:58. It begins with architecture, moves through two minutes of expectation, and ends with individual names. The page is about what survives in public ritual: stone, flowers, imperfect records, and a shared pause.
02The two minutes
The signature lives in main.js. updateVigil() measures progress through the 570vh .vigil section and changes the large tabular clock from 23:58 to 23:59, then 00:00. At midnight it applies the midnight class, dimming the clock, pausing grain, settling petals, and revealing names.
people composes 54 fictional entries; .names-track rises like smoke while a semantic list remains available to screen readers. Near the end, after-midnight reveals “Last Post.” In the closing roll, real buttons call carryName(), letting keyboard and pointer visitors select one person for the final inscription.
03The still image
The key frame began as a GPT Image 2 still generated through Higgsfield, then was stored locally at /assets/gen/cenotaph/hero.jpg. The wider War Wing workflow can pass a still to Kling 3.0 for a loop, but this room deliberately stops after the image stage. .hero-still uses an exact 16:9 intrinsic size, cover cropping, monochrome grading, and the one-time still-develop reveal.

Everything else remains code-generated: SVG marks and plaques, CSS floodlight and grain, procedural names, and the canvas poppy field. resizeCanvas() caps the petals; animatePetals() runs only while its room is visible and the tab is active.
04Sound and restraint
Sound is off by default and exists only behind the header switch. createSound() synthesizes two low tones and filtered noise. At midnight, updateSoundState() fades the tones and leaves wind. Hiding the tab suspends audio. There is no bugle recording because typography carries that ritual without turning it into performance.
prefers-reduced-motion collapses the load reveal, canvas drift, and grain into static states. The sticky clock still changes through ordinary scrolling, preserving meaning without demanding animation.
05Palette and type
The palette behaves like material under a night floodlight. Poppy red is the only chromatic accent; brass and candle amber are treated as physical metals and illumination.
The display face is self-hosted Forum, chosen for its carved, lapidary forms. EB Garamond carries body copy, inscriptions, and ranks with a warmer human rhythm.
Reproduce this
Prompt an AI agent to build a pure HTML, CSS, and JavaScript memorial as a sequence of ritual spaces. Ask for one locally stored, floodlit architectural still with no video, a long sticky section whose scroll changes a clock, an accessible wall of fictional names, and a canvas field that becomes still at midnight. Specify a near-black and stone palette with one red accent, self-hosted classical typography, optional synthesized sound behind an explicit switch, and static reduced-motion states. Require screenshot audits at phone, tablet, and desktop widths.