Off Register — mechanics
The fork in this look
The fork is the route line under the hero trim: "Read the print ↓" is the standard route, "Or make your own impression." with the registration cross is the mind. Tab and Enter work the three groups, / opens the mind with the composer focused, and a printable key pressed outside any field opens it with that character in #mind-input. "Read the full print ↗" and Escape return to the section the last answer was about; a remembered door lands a returning visitor in mind-only with the first impression printed.
The standard route
The sheet is the indexable site, each section read from the snapshot: the roster from the featured speakers, the day tabs from agenda.days and the rows from agenda.sessions, the place section from the Event record, "Get tickets ↗" from the Eventbrite URL. Sub-pages reuse the section skins, cream for people and place, indigo for the programme; /agenda/#day-2 selects the Tuesday tab on arrival. The press rail stays on the home sheet; sample lines follow the placeholder flags.
Asking the mind
Questions are asked on the mind spread, from the composer, the hero door, the edge tab or the data-question buttons under the lineup and agenda. It opens with an impression already printed from precomputed {say, ui, sources} documents, so the first model call is the visitor's own words.
Thinking is registration. On submit the spread's impressions lift to the resting 0.018 em offset; the phase: thinking event pulls --register toward 0; the first say character completes the settle and starts the stepped print pass (.printing, five steps, 0.5 s); each ui event prints its component with a short pass. After 8 s without words the inks hold a hair off register and the help line says so; a retry prints at 25 s. Reduced motion jumps to register at submit and skips the pass.
The catalogue as print matter, every value by id:
- Text (
say) streams into the 22 px Newsreader paragraph; the Dela Gothic display line is never model-written but comes from the first component or afaq's site-authored question. - Speakers:
speaker_gridis the roster pattern, Dela Gothic names with the two deliberate indents, up to twelve in two columns;speaker_cardis the portrait treatment, the real photo split into the two rotated screens, name on a vermilion band, bio and sessions below, a "[ clean print ]" switch. No real photo means a name-only card, never a screened avatar. - Sessions and agenda day flip the answer column to the indigo working spread;
agenda_dayprints the day caption ("TUESDAY · MAY 4") and names a track filter,session_cardone session with its speakers as roster rows. - Venue is the place pattern: "Austin, Texas." as the display line, dates in italic, the venue status as the caption; a hotel or travel focus moves that row first.
- Tickets: tier rows (name, price with fees, phase end, refunds as smallprint) above the vermilion "Get tickets ↗" between two rules.
- Choices: up to four italic follow-ups with the cross glyph; the absorbed page link prints as the underlined "See dates and place" action, the contextual return.
- Sources: the 15 px "Source:" line maps page ids to labels and URLs, plus the renderer's sample marker.
- Fallbacks:
not_in_snapshotandoff_topicprint words without a display line, plus choices; a refusal prints the canned line; a truncation keeps what printed, greyed; busy or unavailable prints "The mind is quiet right now — read the print." and leaves the inks off register; without the proxy today's keyword-matchedanswer()map runs.
The assistant in the chrome
On the standard route the mind is the vertical "Ask the mind ↗" tab shown past the hero, plus the section buttons; both send mode: "standard" with the page and the ids on screen, open the spread and print. The merge rules run on the return: the answer link and Escape bring the full print back at the relevant section, the day tab selected for an agenda answer, the roster filtered to the grid's ids under a "Showing 4 speakers · [ clear ]" caption. The server keeps the append-only thread; the spread shows one impression at a time, so the previous question stays as a 14 px provenance line.
Data, performance and accessibility
Whova photos are cross-origin, so the two-plate halftone is pre-rendered server-side per photo hash rather than in a tainted canvas. The #ink-edge filter and the multiply blend repaint on every --register change, so it stays on the hero words and the answer display line and drops during the settle. The ::before plate duplicates its text, so every .print-type without aria-hidden needs an aria-label; the answer region swaps aria-atomic for aria-busy while streaming and announces the finished sentence with a component summary. Vermilion type on cream and cream copy on the vermilion broadside both sit near 2.9:1, so that reading copy prints as the dark overprint (indigo multiplied over vermilion, about 4.9:1).
Build plan
Carries over unchanged: prototype/server.py (SSE contract, cached prefix, sanitizer, budget guards), data/ets.sample.json and its builder, the catalogue, and from mind.html the fixture index, streamAnswer(), reconcile(), summarize(), the ERR map and escLink(), plus mergeIntoPage() and selectDay() from standard.html. New: the Off Register renderers, the registration choreography bound to the SSE phases, the halftone pre-render job, the precomputed first impressions, the contextual-return map, the woff2 font subset and the snapshot-driven sheet. Effort: about three weeks of one front-end engineer after the data groundwork; the route handler is shared by every concept.
Risks
- The settle reads as thinking only if the inks were seen apart; hence the lift before every settle.
- One impression at a time hides the thread; follow-ups lean on the provenance line and the choices.
- Vermilion small text fails AA on cream; the size and overprint rules live in the renderer.
- Misregistration becomes costume if the slip grows; the proportional cap and settle-on-answer hold it.