TITLE Sandpile PROMPT An interactive simulation of the Abelian sandpile model: drop grains of sand onto a grid; any cell holding four or more grains topples, sending one grain to each of its four neighbours, which may topple in turn. From this single rule comes an intricate, symmetric fractal tapestry and avalanches of every size. Concept: self-organised criticality as a hands-on poster; the viewer pours sand and watches order assemble itself. Mood: bright, graphic, like a four-colour screenprint that happens to be alive. Palette: paper #F5F0E6 for cells with 0 grains, deep ink #111111 for 1, vivid orange #F25C05 for 2, strong blue #0E79B2 for 3, and bright yellow #F2C80F for cells that are unstable (4 or more) and toppling: so avalanches flash yellow as they propagate. Light page; flat colour; crisp pixels (image-rendering: pixelated) with a subtle paper grain overlay so it feels printed. Simulation: grid stored in typed arrays (Int32 grain counts so a heap of many thousands fits in one cell, Uint8 flags), sized so cells are about 3 CSS px (an odd side length up to 301, about 249 on a 1440x900 desktop, about 109 on a phone); open boundary (grains fall off the edge into a sink border). Toppling processed with an active list, several waves per frame under a time budget so large avalanches play out visibly as spreading yellow fronts rather than instantly; a five-step speed control goes from "one topple wave per frame" (slow, mesmerising) through 4, 16 and 64 waves to "flat out" (as fast as possible). Rendering through ImageData scaled up with nearest-neighbour. Modes: (1) "Pour": click/tap and hold to pour a steady stream of grains at the pointer; the pile under it grows and collapses outward in pulses, building the classic fractal figure with its nested triangles and stripes. Multiple pour points can be dropped and left running (click to pin a "tap" that keeps dripping; click it again to remove): two taps make interfering figures with a seam between them. (2) "Identity": a button that computes and displays the sandpile group's identity element for the current grid size (start with every cell at 6, stabilise; subtract from 6 everywhere, stabilise again), animating the long stabilisation in two captioned stages: a famously beautiful picture. (3) "Rain": single grains fall at random positions on a critical pile (if the table is too empty it is first loaded, with a diagonal wipe, to the critical density of 2.125 grains per cell); each grain's avalanche is highlighted with a flat yellow overprint and measured; tapping the table drops a grain of your own. Layout: poster-like and asymmetric: the square field large at the centre; at the left a tall narrow column with the title in giant stacked lowercase letters in a heavy geometric sans (Futura/"Century Gothic"/"Avenir Next"/system-ui heavy) with hard orange and blue offset shadows like a misregistered print: "sand / pile" with the dot of the "i" drawn as a tiny living sandpile that keeps toppling; below it, the rule stated as a four-step pictogram (a cell with three dots holds, four is too many, it topples, one dot goes to each neighbour) animated in a loop; a live legend of the colours with counts and bars; and an avalanche-size histogram on log-log axes that accumulates in Rain mode, its points settling onto a straight line (the power law, with a fitted line and its slope), with a one-sentence explanation: "Small slides are common, vast ones rare, and nothing in the rule says where one becomes the other." A narrow rail at the right holds the controls and the tally. Phone: title above, field full width, controls beneath, then rule, legend and histogram. Signature moment: the first big collapse. On load the field is empty for half a second, then a centred tap starts pouring fast-forwarded grains so that within about three seconds a crisp fractal medallion has bloomed outward in yellow-fronted waves; it then slows to a gentle drip so the viewer sees the structure refine. Dropping a large handful (double-click: 10,000 grains at once) causes a huge, slow, symmetric avalanche: the showpiece. Interaction details: hover shows a 1-cell cursor with the cell's grain count; a "handful" size selector (1 / 100 / 10,000 grains) sets what a double-click or the "drop it" button (at the centre) releases; "sweep the table" clears with a diagonal wipe; a fourfold mirror toggle mirrors every drop and pinned tap; a "save as poster" button exports the current field as PNG (canvas only). Controls are drawn as flat geometric chips in the palette with black outlines and hard offset shadows that depress on press; keyboard focus rings in blue; Space toggles a tap at the centre; with the field focused, arrow keys move the cursor, Enter pins or removes a tap and Shift+Enter drops a handful. Counters in tabular numerals: grains added, grains lost off the edge, topplings, largest slide. A status line under the field explains the current mode and reports the last avalanche. Reduced motion: avalanches resolve instantly without yellow flashing; intro shows the finished medallion. Performance: time-budgeted toppling loop (about 8 ms per frame), pause when hidden. DESCRIPTION A living four-colour screenprint. A cream sheet carries a giant stacked "sand / pile" title with misregistered orange and blue shadows, and the dot of its "i" is itself a seven-by-seven sandpile that never stops toppling. Beside it a large square table with a black outline and a hard shadow sits empty for half a second, then a tap opens over the centre and a fractal medallion of ink, orange and blue blooms outward behind a ragged yellow front before settling into a slow drip. Everything else on the sheet is a readout of that one rule: a looping four-panel pictogram, a legend whose bars and counts follow the table, a tally in tabular numerals, and a log-log plot whose orange points drop into place along a blue fitted line as random rain is measured. The viewer pours, pins taps, drops handfuls of ten thousand grains, computes the group identity, sweeps the table with a diagonal wipe and saves the result as a poster. VISUAL TECHNIQUES - Abelian sandpile on Int32/Uint8 typed arrays with a sink border and a swapped pair of active lists, toppled in waves under a per-frame time budget - Palette-indexed Uint32 writes into ImageData on a grid-resolution canvas, scaled with image-rendering: pixelated - Flat yellow "overprint" tint that marks the footprint of each measured avalanche for a fixed number of frames - Procedurally generated paper grain tiled over the whole page with multiply blending - Title fitted to its column by measurement, with hard offset text shadows and a canvas sandpile positioned as the dot of the i from measured glyph metrics - SVG rule pictogram built from palette-coloured cells, cycling with phase-shifted keyframes and grains that fly to the neighbours - Log-binned histogram in SVG with decade grid, points that settle by eased transforms, and a least-squares power-law line with its slope - Diagonal wipes (sweep and critical loading) with eased ink front drawn into the pixel buffer - Identity element computed live in two animated stabilisations - Flat chip controls with black outlines and hard shadows that depress on press; custom range slider; blue focus rings - PNG export of the field by nearest-neighbour upscaling INTERACTION MODEL Hover the table to see a one-cell cursor and the grain count under it. Press and hold to pour a stream that follows the pointer; a short click pins a dripping tap and a click on a tap removes it; a double-click (or double-tap) drops the selected handful of 1, 100 or 10,000 grains, and "drop it" does the same at the centre. The fourfold mirror repeats every drop and tap in all four quarters. The speed slider sets how many topple waves run per frame, from one to flat out. Identity replaces the table with the two-stage computation of the sandpile group's identity; Rain loads a critical pile if needed, drops random single grains, overprints and measures each avalanche, fills the histogram, and lets a tap on the table drop one grain by hand. Sweep the table wipes everything diagonally and resets tally and histogram; Save as poster downloads the field as a PNG. Keyboard: Space toggles a tap at the centre; with the table focused the arrow keys move the cursor (Shift for bigger steps), Enter pins or removes a tap and Shift+Enter drops a handful; all chips and the slider are focusable. Hovering or pressing the title feeds extra grains to the dot of the i. With reduced motion, avalanches resolve without yellow flashes and the page opens on the finished medallion.