{# data-ff-live turns this into an in-place update when JavaScript is
running. Without it the form and its links still work as a plain GET,
which is why every control below is a real input and every sort header a
real link. #}
{% if active_filters %}
{# What is currently narrowing the list, in words, each removable on its
own. The commonest support question about any admin is "why can I not
find this row", answered by a filter someone left set. #}
{% if actions %}
{# Outside #ff-results so it survives a live update, and so the selection it
describes is not wiped out by the fragment that replaces the rows. #}
{% endif %}
{% endblock %}