{# Island stylesheet (issue #48). Placed BEFORE the inline
Skip to main content
{% block nav %}
{% endblock %}
{# Guided-tutorial banner: present only when the API layer resolved a real
tutorial-run/step for this page. Injected here (outside every page's body
block, and outside the workbench htmx swap target) so fragment swaps never
remove it. #}
{% if tutorial %}{% include "fragments/tutorial_banner.html" %}{% endif %}
{% block body %}{% endblock %}
{# Shared island loader (issue #48): the ONLY script every page pulls in. It
no-ops when a page has no [data-island] nodes and dynamically imports only
the island bundles present, so adding an island never touches base.html.
The guard keeps dev/source-run (no build) working — no broken script tag. #}
{% if asset_url('main') %}{% endif %}