{# r2b: per-browser state applied BEFORE FIRST PAINT, so a revealed booth does not flash blurred on the next page of the reel. Every change of page is a full load (the in-place client re-fetches the current URL and never navigates), so this runs on every page and decides afresh from THIS page's `data-booth` — booth A's reveal cannot follow you into booth B. Storage that throws reads as the default and never raises. #} {% block title %}The Booth{% endblock %} {# The two SVOS voices. display=swap and the system stacks in --font-sans / --font-mono are the failure mode booth-dev named: a dead or slow link must degrade to instantly-readable text, never to invisible text. The request carries the origin only (strict-origin-when-cross-origin), so booth names do not reach Google. #}
The Booth held for review · wipes in {{ ttl_hours }}h unless kept {# r2b D3 — System · Light · Dark. JS-only (with scripts off the page follows the OS), so it is markup with `hidden` and the script shows it. The top bar is outside every data-region: no in-place swap replaces it. #}
{# R2 C3: where the in-place script says what its saves are doing (as S5b: _status.html, one per page; the CSS floats it, so where it sits in the markup moves nothing). #} {% include "_status.html" %} {% block content %}{% endblock %}