{% comment %} Headline counter strip, refreshed on its own via HTMX without touching the map. The root
polls dashboard:stats every 10s and swaps ITSELF (hx-swap="outerHTML") with the response — which is this same partial, re-rendered by StatsView with fresh counts. Because the replacement carries the same hx-* attributes, the poll is self-sustaining. On full page load DashboardView supplies the initial numbers; htmx takes over from there. {% endcomment %}
{{ total_events }}
Total events
{{ unique_attackers }}
Unique attackers
{% for decoy in top_decoys %}
{{ decoy.hits }}
{{ decoy.decoy_type }}
{% endfor %}