1# world-index-presentation Specification23## Purpose4TBD - created by archiving change add-world-index-presentation. Update Purpose after archive.5## Requirements6### Requirement: INDEX SHALL present the active world as the header subject78The INDEX presentation SHALL render an 11px tracked `INDEX | WORLD NN`9eyebrow, the active world name in `--fg`, weight 800, and its muted tagline10with 8px vertical spacing. The tagline SHALL fall back to11`walk the path, pick a proof` when the normalized world has none. The large12standalone INDEX heading and overlapping world-number stack SHALL not be13rendered. The presentation SHALL also show `★ n / N`, where both counts are14scoped to the active world view model.1516#### Scenario: Desktop world header establishes hierarchy1718- **WHEN** INDEX renders an active world on a desktop canvas19- **THEN** the eyebrow, name, tagline, and per-world count are legible,20 separated by the specified spacing, and do not overlap the board or world21 strip2223#### Scenario: Missing tagline uses the approved fallback2425- **WHEN** the normalized active world has no tagline26- **THEN** INDEX renders `walk the path, pick a proof` in the tagline region2728#### Scenario: Mobile header remains inside its owning region2930- **WHEN** INDEX renders at 390px wide31- **THEN** the complete world name, fallback or authored tagline, and per-world32 count remain inside the header region without covering the board or footer3334### Requirement: INDEX SHALL render the world strip as an actionable control3536The desktop strip SHALL render `[Q] ◀ ● • • ▶ [E]` with drawn Q and E keycaps,3714px arrows, 10px dots, and one dot per world. The active dot SHALL use the38normalized world's accent when present; inactive dots SHALL use the neutral dot39role. On mobile or coarse pointers, keycaps SHALL be omitted and each arrow40SHALL expose a 44px tap target. Hit geometry SHALL match the visible arrows.4142#### Scenario: World strip exposes adjacent actions4344- **WHEN** INDEX renders three worlds on desktop45- **THEN** it shows Q, a previous arrow, three dots, a next arrow, and E in46 that order, with the active dot accented4748#### Scenario: Mobile strip exposes touch targets4950- **WHEN** INDEX renders on a 390px canvas or a coarse pointer51- **THEN** Q/E keycaps are absent and the previous and next arrows each have a52 44px tappable target5354#### Scenario: Dot slide follows a world transition5556- **WHEN** the D20 seam reports a world switch57- **THEN** the active dot travels from its prior position to its new position58 over 110ms with back-ease, while the world sheet uses the same transition59 start and its 280ms ease6061#### Scenario: Reduced motion settles the strip6263- **WHEN** reduced motion is enabled during a world switch64- **THEN** the strip renders the destination dot and sheet immediately without65 an intermediate slide6667### Requirement: The first-entry world card SHALL present and dismiss world identity6869The INDEX SHALL consume the D20 `world-card` request and render a centered,70hard-edged card containing the normalized glyph at 96px, `WORLD NN` eyebrow,7132px name, 15px muted tagline when present, a meta line with proof count,72`★ n / N`, and `by <author>` only when an author exists, followed by an action.73These elements SHALL use a 16px vertical rhythm. The card SHALL never show74`by Unknown author`. Its 2px stroke SHALL use the normalized world accent.75Desktop SHALL show `[ENTER] enter world`; mobile and coarse-pointer layouts76SHALL show a full-width 48px accent `ENTER WORLD` button without a keycap.77The card SHALL fit all copy inside at desktop and mobile sizes and preserve78the existing iris entry choreography. ENTER or the79equivalent confirmed pointer/touch action SHALL dismiss the card and leave the80player on the settled INDEX sheet without selecting a proof. The card SHALL81not install packs or mutate simulation state.8283#### Scenario: INDEX first entry opens a readable world card8485- **WHEN** D20 requests a card with origin `index`86- **THEN** the card shows its glyph, `WORLD NN`, name, tagline, proof count,87 completion, author when present, and the correct desktop or touch action88 without clipping8990#### Scenario: Core uses a first-party identity9192- **WHEN** the player first enters the Core world93- **THEN** its card uses `🐈`, `Where the rules first bend.`, the `you` accent,94 and `by Miau Is True` rather than the fallback identity9596#### Scenario: Missing author leaves no placeholder9798- **WHEN** an imported world omits author99- **THEN** its meta line omits the byline segment and never prints100 `by Unknown author`101102#### Scenario: Workshop PLAY uses the same card presentation103104- **WHEN** D20 requests a card with origin `workshop`105- **THEN** the card uses the same composition and preserves the Workshop106 selected pack's first node for the subsequent INDEX sheet107108#### Scenario: Card confirmation returns to INDEX109110- **WHEN** the player confirms ENTER on an open world card111- **THEN** the card closes and INDEX remains on the active world's sheet; no112 proof move or simulation turn is recorded113114#### Scenario: Touch confirmation has a large target115116- **WHEN** the card is rendered for a coarse pointer117- **THEN** the card has no visible keycap and its full-width accent118 `ENTER WORLD` button is 48px high and tappable across that width119120#### Scenario: Card motion respects reduced motion121122- **WHEN** reduced motion is enabled123- **THEN** the card appears in its settled geometry without an iris intermediate124125### Requirement: Mobile INDEX controls SHALL use touch affordances and coherent narration126127Below 760px or on coarse pointers, INDEX SHALL omit keyboard keycap hints,128render `tap the cat to play` below the active proof banner, and expose the129bottom `☰ menu` thumb affordance. Workshop SHALL remain reached through that130menu. The INDEX accessibility label SHALL include world number/name,131world-scoped completion, total proof count, and the keyboard world-switch132action where keyboard controls are available. An open card label SHALL include133world identity, author, and its ENTER action.134135#### Scenario: Mobile footer removes desktop hints136137- **WHEN** INDEX renders below 760px or for a coarse pointer138- **THEN** it shows the cat play prompt and menu thumb affordance without the139 desktop ENTER, ESC, or SPACE keycap row140141#### Scenario: Accessibility follows the visible world state142143- **WHEN** the active world or its completed count changes144- **THEN** the INDEX label names the current world and its updated `n of N`145 proof progress, and announces Q/E switching when applicable146147#### Scenario: Presentation leaves simulation and grid state unchanged148149- **WHEN** any header, strip, card, or mobile footer presentation is measured,150 animated, or dismissed151- **THEN** engine rules, simulation snapshots, integer board coordinates,152 progress keys, and pointer semantics remain unchanged