The pleasure principle — mechanics

The fork in this look

The first interaction is writing: the rule sits in the lamp holding someone else's question in grey. Typing on the cover lands there, / focuses a rule anywhere, Enter on the empty rule asks the grey question. "Walk the lineup ← →" is the 12 px second verb.

The lamp never moves, so it carries view-transition-name: lamp everywhere: walks, answers and navigations are one transition, a white frame over a hard cut of the body. Only one transition moves: "Read it in the light ↑" names the strip light lamp, jumps the document to the top and grows the strip into the lamp in 240 ms.

The mind gets the brightest object; the standard route, a 12 px label and the whole page.

The standard route

Asking the mind

Questions are written on a rule (cover lamp, 78th light, edge card; one conversation) and become the heading verbatim. Thinking is power, not shimmer: Enter switches the lamp off, the question an afterglow in #8D8D8D; at the first say word it re-strikes once and say streams in Mona Sans wide light. When the first component naming a person closes, the mind walks to them. The renderer, never the model, picks the body: the speaker_card id, else the first walkable person in a grid or session, else the light alone.

In the lamp, ink on white:

Fallbacks: off_topic and not_in_snapshot stay unnumbered, with choices; emptied components vanish; ERR copy loses its // and brackets. Proxy down or budget spent, the keyword router answers and says so. Without JavaScript the form submits to #asked.

The assistant in the chrome

Data, performance and accessibility

The fixture holds 77 speakers (59 photographs, 36 bios), 50 sessions and 39 partners, all placeholder, plus eight FAQ. Whova and WordPress must add half-length photographs (13 of 59 hold at poster scale), Whova session ids (fixture ids embed times), real tracks (these seven are invented), a cover-person setting, and staff-written questions per section: messages are never logged, so "Asked on this page" becomes "Often asked here", changing by section, not every 6 s (WCAG 2.2.2).

Motion budget: strike, flash, caret, numerals' opsz. The strike's seven light changes in 0.34 s break WCAG 2.3.1: two stutters, no flash on key repeat, at most three flashes a second, lamp and frame together. Reduced motion: no strike or flash, solid caret, instant jumps. Keyboard: the mockup's ← → handler also fires in the field; make that a roving-tabindex grid (Space reveals, Enter walks); add "Shortcuts off" (WCAG 2.1.4). Screen readers: echo and flash hidden, focus never moved. LCP is one 17–54 KB portrait; the 257 KB sprite waits.

Build plan

Carries over: server.py (stream, sanitizer, sessions, budget, guards, cache, fallbacks); the fixture; the reconciled catalogue; from mind.html and standard.html, streamAnswer, reconcile(), summarize(), ERR and mergeIntoPage(), retargeted to lights; the concept's walk, flash, fit(), dayAnswer, keyword router and portrait pipeline. Changes: server.py grows from seven components to the catalogue, sources and coverage, with page notes naming visible ids; card() and write() drop innerHTML. The body costs no tokens: it is chosen client-side. New: lamp renderers, off-on thinking, the body rule, the Asked index, section pages, the grid, the flash cap, face landmarks off macOS-only Apple Vision. Effort: demo two days; front end two and a half weeks, one developer; pipeline one week.

Risks