01 · The concept
Taller Calavera imagines a Día de los Muertos workshop whose old broadside tradition somehow acquired a browser. José Guadalupe Posada’s crowded, democratic satire supplies the visual grammar; marigold altars supply the warmth. Bone paper and dense ink fields alternate like successive pulls from a press.
The writing refuses museum solemnity. Invented teachers, addresses, press complaints, and workshop details make death sociable: a neighbor in an excellent hat, ready to tease vanity without cruelty.
02 · Generative bones
renderBroadside() in main.js seeds a compact random system, then asks skeletonFigure() for four performers. Skull, ribs, jointed limbs, five hats, three costumes, five props, and three dance poses recombine while preserving a legible silhouette.
The same seed chooses a written literary calavera from coupletTemplates, assigns an edition number, roughens the SVG plate, and lays hatching underfoot. Pulling the lever travels through a physical press cycle before the new proof settles.
03 · Paper with weight
initPapel() builds a responsive chain of canvas points. Each free point carries velocity, eases toward a hanging curve, and receives a sinusoidal wind force. Paper polygons inherit that moving edge; skull, flower, and diamond holes are cut with destination-out.
Repeating gradients in .paper-grain provide fiber. Cross-hatching, double borders, crooked registration, hard overprints, and deliberately offset shadows create the remaining print character without image files.
04 · The living altar
initPetals() caps cempasúchil at 38 canvas particles and halves that count on phones. Independent CSS cycles gutter the candle flames. addDancer() writes a submitted name with textContent, then miniatureCalavera() hashes it into a unique hat, pose, and accent before remembering only three names locally.
Both canvas loops stop when document.hidden is true. Reduced-motion users receive settled paper, petals, candles, and dancers.
05 · Type & rhythm
Anton carries mastheads, dates, labels, and public notices; Spectral handles copy, marginalia, verses, and names. Monumental display tracking stays tight, while tiny uppercase furniture opens up. The five inks are bone, near-black, marigold, picado pink, and oxide teal.
06 · Interaction rules
The opening reveal is one orchestrated pull. Later chapters enter once through initScrollPrints(). initBlockReveal() turns the printed sheet as a keyboard-operable object; syncBlockFace() mirrors the current generated SVG into a high-contrast carved matrix, while pointer position moves only its raking light. Links retain visible focus, phone targets reach 44 pixels, and ledger updates use polite live regions. The broadside SVG is described; decorative canvases remain silent; essential copy stays in HTML.
Reproduce this
Prompt an AI agent to build a static editorial experience around a specific folk-print tradition. Demand a modular SVG character grammar instead of one illustration: interchangeable anatomy, costumes, poses, props, and a seeded composer. Add responsive canvas physics for a culturally relevant material and one visitor action that enters the scene. Lock a five-ink overprint palette and a display/body pairing. Require layout-distinct chapters, invented program detail, reduced-motion and hidden-tab safeguards, local-only assets, and screenshot review at phone, tablet, and desktop widths. Finally, ask the companion guide to name the real rendering functions so the spectacle remains reproducible.