{# Daily-cost panel fragment. Targeted by HTMX swaps when the breakdown selector changes. The wrapping
is what HTMX replaces; the chart inside is initialised by the bootstrap script in base.html (which listens for ``htmx:afterSettle``), keyed off the ``.cost-chart`` class and ``data-figure-id`` attribute. No executable JS in this fragment — that way the swap can't fire chart init mid-settle. The Plotly figure JSON is delivered through a non-executing " inside a future trace name can't break out of an outer script. #}
Break down by: {% for opt in breakdown_options %} {{ opt }} {% endfor %} {% if has_data %} {{ total_cost }} across {{ day_count }} day{{ '' if day_count == 1 else 's' }} {% endif %}
{% if has_data %}

Tip: click any bar to drill into hourly cost for that day.

{% else %}

No cost data yet.

{% endif %}