{% comment %} Chart/calendar source data, wrapped in OOB-swappable containers so an htmx filter response replaces the embedded JSON in place. The dashboard JS re-reads these and redraws the trends chart, activity calendar and gear-usage donut on ds:datachanged. The hx-swap-oob attribute is inert on the initial full-page load (htmx only acts on it in AJAX swap responses), so the same fragment is used inline and in the partial. {% endcomment %}
{{ calendar|json_script:"dashboard-calendar" }}
{{ gear_usage|json_script:"dashboard-gear-usage" }}
{{ records|json_script:"dashboard-records" }}