Pattern
Navigation model
There is no menu. The Index is the hub, every page ends on it, and the way back travels with the reader.
01
The model
- The Index is the hub
- The home lists six pages as tiles. Each tile is the real top of its page, so the reader sees where a door leads before opening it.
- No top bar
- Nothing is fixed to the top of the screen on any page. The way back lives in the content instead.
- Every page ends on the Index
- Every page but the home and the night page (404, Blackhole) ends on the whole home, after 200px (160 tablet, 120 phone). Reaching the end of a page is reaching the hub; the current page’s tile is marked
aria-current="page". - The way back travels
- In the band (“← Index” or “← Index / Parent”), at the top of the rail, and on phones as a block that appears after a short scroll up.
- Two levels only
- Top-level pages hang off the Index; second-level pages (articles, Hirsla Support, Privacy, Legal, What’s New, Links) hang off one parent and show a breadcrumb.
- Hidden pages
- The Bookshelf has no tile: reachable by link,
noindex, still in the sitemap and llms.txt.
02
Where the way back appears
- Phone
- Band; scroll-up block on every page but the home.
- Tablet
- Band; rail number row with the trail at its start; scroll-up block only where there is no rail (Thoughts list, Bookshelf).
- Desktop
- Band; top of the sticky rail; the Bookshelf’s filter column. Never the scroll-up block.
03
Parts
Header band, Breadcrumb and way back, Rail, Scroll-up way back, Index tile, Page transitions.
04
Adding a page
A new page copies an existing one of its template (see Content page, Starting a new one), gets its title, description, and share card (see Page head and metadata), goes into sitemap.xml and llms.txt, gets the home ending from sync-index.sh, and does not get a tile unless the owner decides. A new tile means changing the TILES lists in sync-index.sh and vt.js, and a layout decision: three rows of two, each pairing a visual tile with a text tile.