Return to Lot 87 Builder’s Catalogue Technical folio · Pass 03
87

How the room was built

The theatre
behind the fall.

Interaction notes, material recipes & the exact arithmetic behind a live evening sale.
01

Concept

A webpage staged as
a live saleroom.

Lot 87 treats an auction as theatre: a lit artwork occupies centre stage, the walnut rostrum rises below, and the interface behaves like equipment in the room.

The hierarchy follows the auctioneer’s attention: Emilia Varos’s fictional painting, the illuminated bid amount, then your cream paddle. Scholarship and disclosure follow the performance. Specific provenance, an inspectable condition report and a live total let spectacle and trust share one room.

01Enter
the room
02Raise
paddle
03Phone
answers
04Gavel
falls
02

Visual & interactive technique

Every prop is
made in code.

The Painting & Frame

The artwork is an inline SVG in index.html. Layered paths form the rust earth and orchard trunks; radial gradients make a captive moon; sparse circles become fruit. A restrained turbulence filter adds tooth to the invented oil-and-casein surface. The gilt frame is CSS: nested gold gradients, inset rules and a long shadow produce physical depth without an image request.

The Raking-Light Examination

The brass surface-exam control calls toggleInspection() in main.js. It opens an SVG conservation layer through #inspection-aperture, revealing an earlier path, shifted trunks and handling marks. setInspectionPosition() converts pointer coordinates into the painting’s 560 × 680 viewBox, so the circular lamp follows the visitor without reading layout in an animation loop. Touch and keyboard users can switch on the centred finding with the same button.

The Bid Sequence

main.js advances the hammer in exact £20,000 steps. updateBoard() synchronizes amount, source, telephone lamp, conversions and the bid tape; appendPatter() preserves the auctioneer’s latest calls. Two telephone bids answer; the third paddle wins. declareSold() locks the control, swings the CSS gavel and slams SOLD across the frame.

The Crack & Atmosphere

makeCrack() synthesizes filtered noise and a falling triangle oscillator through Web Audio—no sound file is loaded. Concentric CSS shock rings, six light rays and the stamped SOLD band make the impact visible. The visibility-aware delay() pauses the sequence in a hidden tab. An IntersectionObserver stages later sections without a continuous animation loop.

The Honest Ledger

updateLedger() applies 26% to the first £300,000, 21% to the balance, then 20% VAT to premium alone. It recalculates with every bid. Native details keeps the condition report keyboard-accessible; an assertive live region announces the win without duplicating visual copy.

03

Palette & type tokens

Walnut, brass,
paper, signal.

Aubergine
#3A2438
Walnut
#5B3428
Catalogue
#F0E8D5
Sold
#B3232C
Brass
#C9AA63

Playfair Display carries catalogue titles and the auctioneer’s voice; Archivo handles factual prose; Chivo Mono gives amounts, dates and labels bid-board precision. --display, --body and --mono keep those roles consistent. Brass guides attention, cream carries evidence and SOLD red appears only at consequential moments.

04

Reproduce this

Prompt for a world,
not a layout.

Prompt an AI agent to build a self-contained live-auction world in semantic HTML, CSS and JavaScript. Name one dominant saleroom colour, catalogue paper and a red reserved for SOLD. Require a code-rendered artwork, exact increments, changing bidder sources, conversions, cumulative patter, an interactive paddle, synthesized impact audio and transparent premium arithmetic. Name local fonts; forbid external assets. Demand phone, tablet and desktop screenshots, hidden-tab and reduced-motion behaviour, keyboard focus, overflow checks and written self-critique.