{{ card.coverage }} of {{ results.count }} runs with usable data
How this is calculated
{{ card.definition }}{% if card.key in ('cadence','power','ground_contact','stride_length') %} Coverage counts runs, not sensor recording time.{% endif %}
{% endfor %}
{% if query.chart != 'none' %}
TRENDS / {{ query.group|upper }}
{{ 'Your question over time' if query.group in ('day','week','month','year') else 'Your question by ' ~ query.group }}
Solid: current · Dashed: previous
{% for series in results.chart.series %}
{{ series.label }} {{ series.unit }}
{% endfor %}
Select a current-period point to inspect its runs. {% if query.trend %}Trend: {{ query.trend }} · Summary cards and the grouped table show the untransformed values.{% else %}Missing data leaves a gap.{% endif %} Time comparisons align by elapsed days; categorical comparisons use the same categories.
{% endif %}
{% endif %}
{% if results.chart.scatter %}
RELATIONSHIP / RUN AVERAGES
{{ results.chart.scatter.x[0] }} vs {{ results.chart.scatter.y[0] }}
{% if results.chart.scatter.correlation is not none %}Pearson r = {{ '%.3f'|format(results.chart.scatter.correlation) }}{% else %}Correlation unavailable{% endif %}
Each point is one run. Select a point to open that run. Correlation describes association; it does not establish cause.
Page {{ results.page }} of {{ results.pages }} · up to 25 runs per page{% if results.page > 1 %}Previous{% endif %}{% if results.page < results.pages %}Next{% endif %}
{% endif %}
Gaps, rolling metrics and streaks use your complete history before filters. Arithmetic and filters apply per run; summaries apply per group. Contributing runs show the individual input values for each summary. Empty sums remain missing; count is zero. Group ranking/limits and having select the displayed cohort before chart trends.