Mobile nav becomes a hamburger menu; Juniper joins the Help page

The horizontally scrolling nav strip lost its scroll position on every
page load and hid the far entries. The top bar is now brand +
hamburger (aria-expanded/aria-controls, 44px target); the nav drops
down as the same stacked list the desktop rail shows — badges, gold
current-page marker — and navigation naturally closes it.

Help gains "The piper": Juniper's full artwork with credit and the
trademark attribution, which mobile previously never showed anywhere
(the sidebar portrait is hidden there). Also fixes the Help cards
flex-rowing their paragraphs into accidental columns on desktop —
visible in the README's own screenshot — via a card.prose block
variant.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016jXZFSTZQKzAC8fqpWSz9g
This commit is contained in:
Eric Wagoner
2026-08-03 16:47:40 -04:00
co-authored by Claude Fable 5
parent f82489716a
commit 78debdd62f
5 changed files with 70 additions and 24 deletions
+2 -2
View File
@@ -205,7 +205,7 @@ def test_both_pages_carry_navigation_and_skip_link(tmp_path):
web = _app(_cfg(tmp_path))
for path, current in (("/", 'href="/"'), ("/review", 'href="/review"')):
html = web.get(path).text
assert 'nav aria-label="Primary"' in html
assert 'aria-label="Primary"' in html
assert f'<a {current} aria-current="page"' in html.replace("\n", " ") or (
current in html and 'aria-current="page"' in html
)
@@ -232,7 +232,7 @@ def test_every_page_serves_with_shared_shell(tmp_path):
):
html = web.get(path).text
assert marker in html, path
assert 'nav aria-label="Primary"' in html, path
assert 'aria-label="Primary"' in html, path
assert 'aria-current="page"' in html, path
assert "logo-full.jpg" in html, path # Juniper's portrait in the rail
assert "art by Juniper" in html, path