{# The navbar's reference picker: which book you are in, and where in it to go. Context: reference (or null), oob. reference is built by sw.js from bible/verses.json, which compile_bible.py writes from the same tree it renders the books from -- so an option can never name an anchor that is not in the page it lands on. It used to be built in the browser, by app.js, reading the chapters and verses off the book already on screen. That was free, and it only worked where there was a document to read: this shell is composed in a service worker, which has no DOM, before any document exists. What the picker needs is a fact on disk now, and everything below is markup and htmx. Outside the collapse deliberately -- it is the main way of moving around a book now that the chapter list is gone from the page, and a chapter picker behind a hamburger is no use on a phone. d-none for the empty state rather than the hidden attribute: Bootstrap declares .d-flex after Reboot's [hidden] rule, both !important and at the same specificity, so the utility would win. Two things bring it back into step with the page, because the navbar is never the swap target -- every boosted link lands in #content: a navigation sw.js appends this template to the fragment with oob set, the same way a bookmark write carries the modal's status line, so one response moves both. a restore htmx swaps the history element straight in and processes no out-of-band elements at all, so the picker asks for itself instead. worker-ready is in the same trigger for the empty state below. Neither carries the book: the request does, in HX-Current-URL, which is the address the page is actually showing. An address baked into this attribute is the one thing here that can go stale, because the picker outlives the page it was rendered for. #}