Four numerals — mechanics

The fork in this look

The fork is the two printed verbs. A first wheel, swipe or Page Down is "scroll ↓": theme, then chapters in full. Any printable key on the poster lands in the hero rule; / focuses the nearest rule. Asking before scrolling folds the page: sections below the poster shrink to head lines and only answers open, each numbered under its own numeral. Any contents link unfolds it, answers kept.

When the first component names a day, a same-document view transition flies that numeral from its band to the new section's sticky slot as its ground widens to full bleed; one shared instance (wght 900, wdth 68.75) makes it pure scale and translate, 480 ms. Unsupported browsers jump.

Scroll is an 11 px label, costs nothing and is what search indexes; type is the page's heaviest line and spends a model turn (about $0.006–0.012 warm).

The standard route

The fixed facts strip is the nav and the scroll verb's contents the page set, each also a static route (/agenda/, /lineup/, /register/, /venue/, plus the /partners/ tier rows the mock lacks). No day tabs: the numeral you are on is the chapter. Rows open in place (description, portraits, add to calendar), thickening their leader to 2 px. People: 59 of 77 portraits fill the numerals; names link to /lineup/<slug>/. Tickets stay on black.

Asking the mind

The rule you type on sets the scope: the hero's is all four days; "ask inside the 4" appends an allow-listed scope: d2 and on-screen row ids to the surface note, never the cached prefix.

Thinking empties the material: on send the scoped numerals' solid bands drain to outline and hatch (160 ms), leaders retracting; say streams into the edge slot; as each component closes its sessions pour back solid, the rest hollow. An answer without sessions restores the day.

Answers insert under the section owning their first component: a day, people for cross-day speakers, tickets, place. Older answers recede by squeezing to wdth 50.

The assistant in the chrome

The composer is a rule, never a box: 2 px, type, a caret that holds still while the mind reads.

The edge-parked card is the "asked on this page" slot: on the poster, band 4's line rotating three moderated, precomputed answers; past it, parked under "Tickets ↗" in the strip's fourth column as type and a 1 px rule, a fifth fact, not Intercom. It holds the last question, the streaming say, a pointer ("answer 02 is under the 4 ↓") and [ clear ]. With no rule in view, / makes the strip's bottom edge one; on phones the slot is the rule, parked at the bottom edge.

The state line, Martian Mono 11 px under each sticky numeral, is the mind's only status voice ("reading the 4" → "re-filled · 11 speaker slots solid · meals hollow") and the polite status region.

Data, performance and accessibility

The fixture carries what the numerals draw: days with hours and summaries; 50 sessions with times, types, speakers and moderators; 77 speakers; four ticket tiers; 39 partners; eight FAQ. Generate the page's slice from it.

WordPress and Whova must add rooms (all null), descriptions, 18 portraits, title and organization via show_in_rest, a moderated "asked" list (question, answer, scope, approval) and pass inclusions: "every slot on both pass tiers" (kicker and answer 01) stays out until then. Rename anchors: the mock's #d4 is Tuesday, the data's d4 Thursday.

Motion budget: one style write per numeral per frame, leader polylines reused, glyph metrics precomputed (eight instances per string, raster-scanned at load today), nothing idle but the caret. Reduced motion: no pour, squeeze, drain or flight; the state line reports. Keyboard: Enter sends, Escape clears the last filter back to its rule, rows are aria-expanded buttons, focus thickens leaders. Screen readers get each numeral's shape as a data-generated label and hear outcomes, not tokens; focus never moves itself.

Build plan

Carries over from prototype/: server.py (SSE, scanner, sanitizer, sessions, guards, selftest), its seven-component catalogue widened to the brief's set plus sources and coverage; data/ets.sample.json with builder and validator; mind.html's renderer spine (component map, final-answer reconcile, announcements, error copy, demo); standard.html's merge logic, re-aimed at chapter rows and people numerals.

New: the numeral engine as a module (fills from any id set, drain, refill); scope, fold and transition; edge slot and state lines; slot-grammar renderers; static routes; precomputed answers for the three verbs. About four engineer-weeks of front end (engine, renderers, chrome, routes and QA); the back-end plan is unchanged.

Risks

Solid means "speaker slot" on the poster and "matches" in an answer, so the state line must restate it. Cross-day answers land under people; test placement on the 20 eval cases. Never carry a visitor who scrolled while waiting. SVG text on a variable width axis is fragile (the mock self-heals); test Safari first. Sponsors will expect logos. At 13,600 px with 77 portraits, lazy-load and measure on hotel wifi.