{# The type field renders unconditionally — with no type chosen yet, #}
{# nothing else on the page is guarded to show (FR-002, plan.md D-3). #}
{{ type_field|as_crispy_field }}
{% for group in field_groups %}
{% for field in group.fields %}{{ field|as_crispy_field }}{% endfor %}
{% endfor %}
{#
(django-mvp) supplies its own daisyUI classes — #}
{# this app's utility-class allowlist (T021, FR-008) covers only #}
{# literal Tailwind utility class attributes, never a hand-written #}
{# daisyUI component class. #}
{% endblock formset %}
{% block actions %}
{# The stock block (form_view.html) posts default_next=list on its #}
{# Save button, which NextURLMixin consults ahead of success_url — #}
{# every save would land on the catalogue rather than the reference #}
{# (plan.md D-3). This button carries no name/value pair, so nothing #}
{# overrides success_url = "detail". #}