TITLE Frost on the Window PROMPT A night-time window pane on which frost grows in real time: feathered fern-like ice crystals creep in from the edges and from scratches in the glass; the viewer can breathe on the glass to melt a patch and watch it freeze over again. Full-bleed Canvas 2D simulation. Concept: slow crystalline growth as a living drawing, seen against the warm blur of a street outside. Mood: tender, wintry, intimate; the inside of a cold room at 2 a.m. Palette: night blue-black #0A1522, window-glass blue #16304A, ice pale #CFE8F5, crystal white #FFFFFF, and the warm sodium light of street lamps outside #F2B56B (with a few soft red and green points from a distant traffic light, used sparingly). Dark page. Layers: (1) Background "outside": out-of-focus bokeh discs (large, soft-edged, slightly polygonal, overlapping with additive blending) from street lamps and windows, a hint of a dark roofline and bare branches, slow drifting snow as blurred specks; bokeh discs gently pulse and one occasionally passes (a car's headlights sliding across). (2) The glass: faint condensation gradient, a wooden window frame and one muntin cross dividing the pane into four, drawn at the screen edges in dark silhouette with a thin highlight. (3) The frost: the simulation. Frost simulation: a growth model that produces dendritic, feathery "fern frost" rather than blobs: e.g. many growing tips that advance along a heading with slight curvature, spawn side branches at regular intervals at ±~60° (hexagonal symmetry bias) with decreasing length, stop when they meet existing ice (occupancy grid), and thicken over time; seeded along the frame edges, along a few invisible "scratch" curves across the glass, and at random nucleation points that create star-shaped flowers. Draw ice as fine bright strokes with a soft glow, with sparkle: a small fraction of crystals glint as the bokeh light passes behind them. The frost refracts what is behind it: where ice is dense, the background appears more diffuse and paler (composite a blurred, lightened copy of the background through the frost density mask). Growth is slow but always visible: tips creeping at a few pixels per second, the whole pane taking around two minutes to fill, never fully (clear islands remain). Interaction (signature moment): press and hold anywhere (mouse or touch): "breathing" on the glass: a round patch of fog blooms (soft white haze with tiny condensation droplets), the frost within it melts back from the centre outward into droplets, a few of which grow heavy and run down the pane in stick-slip jerks leaving clear trails, and some beads freeze where they stop; through the cleared patch the street outside is sharper. Release, and after a moment the fog fades and new frost begins to regrow into the patch from its rim, with fresh, different ferns. Dragging a finger draws a clear line (write a name on the window) which slowly frosts over. Moving the pointer without pressing leaves the faintest warmth trail. Keyboard: with the pane focused, arrow keys move a small ring and holding Space breathes there. Typography: nearly none. One small line set low on the glass as if written with a fingertip in the frost and then half frozen over: "breathe here". A discreet thermometer drawn on the frame (mercury column, −11 °C) whose hover shows "−11 °C outside · 14 °C inside". A small control for optional sound on the sill (off by default, drawn as a little radiator whose fins warm to sodium when on): a faint ticking radiator and muffled wind, plus a soft breath while holding. Corner caption in tiny tracked caps at low contrast but readable: "FROST ON THE WINDOW". Entrance: clear glass with bokeh for a second, then the first ferns shoot in from the lower-left corner quickly (fast at first, then slowing to the ambient rate) so the first three seconds show dramatic growth. Performance: incremental drawing to an offscreen frost canvas (only new segments drawn each frame), capped number of active tips, DPR capped at 2. Reduced motion: frost appears mostly grown and static, the street is still; melting works with simple fades and the frost fades back afterwards. DESCRIPTION A cold room at 2 a.m., seen as one full-bleed window: four panes in a dark wooden frame, a sodium-lit street dissolved into heptagonal bokeh behind them, and frost drawing itself across the glass in real time. The first ferns shoot out of the lower-left corner, then everything slows to a patient creep: curved plumes with herringbone side branches at sixty degrees, six-armed frost flowers, lines of ice running along invisible scratches, all stopping where they meet older ice so the pane fills over about two minutes yet keeps clear islands. Where the ice is dense the street behind turns pale and diffuse, and crystals glint when a lamp or a passing car's headlights slide behind them. Hold a finger to the glass and a haze of breath blooms, the frost melts outward into beads, a few drops run down leaving clear tracks, and when you let go the patch quietly freezes over again with ferns that were never there before. The only words are "breathe here", fingertip-written in old condensation and already half frozen, a thermometer on the frame, and a tiny caption on the sill. VISUAL TECHNIQUES - Canvas 2D growth simulation: hundreds of advancing tips with curvature, alternating side branches at plus and minus 60 degrees, promoted leader branches, directly drawn barbs, and six-armed nucleation stars - Occupancy grid collision so ferns stop at existing ice and at the frame, with noisy elliptical exclusion zones that keep clear islands - Incremental drawing: only new segments are stroked each frame into an offscreen frost canvas, with later passes thickening older stems - Low-resolution density mask used to composite a blurred, lightened copy of the street through the frost (refraction and glow) - Procedural out-of-focus street: feathered seven-bladed bokeh sprites with additive blending, pulsing lamps, a cycling traffic light, passing headlights, drifting snow, and a roofline and branches blurred by repeated downsampling - Sparkle system: sampled crystal points flare as four-point glints only when a light disc lies behind them - Breath: radial fog patches tinted by the blurred street and pitted with a droplet pattern, destination-out melting of frost and mask, condensation beads with highlights, stick-slip runner drops carving trails, beads that freeze in place - Regrowth: melted zones remember their rim and reseed fast inward-growing ferns after a delay - Hand-built single-stroke lettering for "breathe here", punched out of a condensation haze with a refrozen ridge and small crystals across it - Canvas-drawn wood frame, muntin cross and sill with grain, bevel highlight and sodium light on the ledges; inline SVG thermometer and radiator icon - Web Audio: filtered brown-noise wind with slow modulation, randomised metallic radiator ticks, band-passed breath - Entrance time-warp (fast then slowing), devicePixelRatio capped at 2, capped tip counts, loop paused when the tab is hidden, pre-grown static variant for reduced motion INTERACTION MODEL Press and hold anywhere on the glass (mouse, pen or touch) to breathe: a fog patch grows for as long as you hold still, frost melts from the centre outward into droplets, and a few heavy drops run down the pane leaving clear trails. Release and the fog fades, then new ferns grow into the patch from its rim. Drag while pressing to draw a narrow clear line, such as a name, which slowly frosts over again. Moving the pointer without pressing leaves a faint, short-lived warmth trail, and a small ring marks the pointer. With the keyboard, focus the pane, move with the arrow keys (Shift for larger steps) and hold Space or Enter to breathe. Hovering, focusing or tapping the thermometer on the left of the frame reveals "−11 °C outside · 14 °C inside". The radiator button on the sill turns the optional sound on and off. Resizing the window regrows the frost for the new pane size.