{# Invisible timed poller. Lives INSIDE the swapped fragment so its `url` is regenerated on every swap — that preserves the current sort/page/filters across live refreshes. CSP-safe (a plain `every Ns` trigger needs no eval; no `[expr]` filter is used). #} {% macro live_poll(url, target, secs=10) -%}
{%- endmacro %} {# Dashboard stat tile: a coloured icon square + number/label, optionally a link. #} {% macro _stat_icon(name) -%} {%- if name == 'targets' %}