{# Installing as an app. The manifest is a route, not a file, because it carries the instance name; the icons are PNG because a launcher will not take an SVG. theme-color is rewritten by app.js when the theme changes -- the value here is only what the browser paints with before the stylesheet has resolved. #} {% block head %}{% endblock %} {# Applied before first paint so a reload never flashes the wrong theme. The server already rendered data-theme from the signed-in user's preference; this only corrects it for a visitor whose local choice differs (or who is signed out, where the server has nothing to go on). #} {% include "partials/icons.html" %} {% block body %}{% endblock %} {# The version in the query string is what versions the worker's cache, so a release invalidates it without anyone remembering to bump a constant. serviceWorker is absent over plain http, which is why a LAN install without TLS silently offers no install prompt -- that is the browser's rule, not ours. #} {% block scripts %}{% endblock %}