/** * The built-in "access denied" page a BROWSER sees when the dashboard guard refuses a page * navigation — the SPA shell, its assets, or (Mode A only) a session-less visit. Before this page * existed the guard answered every denial with the JSON it answers the API with * (`{ "error": "forbidden" }`), which is the right thing for the SPA's `fetch` calls and the wrong * thing for a human staring at a browser tab. * * Deliberately a small, dependency-free, hand-authored HTML page (like `login_page.ts`) — NOT part * of the bundled SPA, so a denial never needs the SPA to load first. It carries NO `