{# Cross-user contamination guard. localStorage is browser-wide; if User A uploads a portfolio and User B logs in on the same browser, the stale `cassandra.pie` would otherwise render as User B's holdings. We stamp the logged-in user's id in localStorage on every authenticated page load and wipe per-user keys if the id changed since last time. Theme stays — it's cosmetic. #} {# Apply saved theme before stylesheet renders to avoid a flash. #}
{{ BRAND_NAME }} {% if BETA_MODE %}BETA{% endif %} {# Tone toggle is the one widget we keep visible in the mobile header even when the drawer is closed — it directly affects the readability of the content right next to it. #}
{# Mobile hamburger — shown only at ≤480px via CSS. #} {# Wrapper: display:contents on desktop (zero layout effect), fixed slide-out panel on mobile. Holds nav + header-right widgets. #}
{% set cu = request.state.current_user if request.state and request.state.current_user is defined else None %} {% if cu and cu.user %}
{% endif %} {% if cu and (cu.user or cu.is_admin) %}
{% endif %} v0.1 · UTC
{# Drawer backdrop. Hidden by default; CSS shows it when body.drawer-open is set. Click closes the drawer. #}
{% block main %}{% endblock %}
{# Shared glossary tooltip (Novice mode). Single floating element positioned by JS to escape sticky-bar stacking and viewport edges. #}