{#if !hasGrid}
No measurements match the current filters.
{:else}
{#each model.metrics as metric (metric)}
{metricLabel(metric)}
{/each} {#each model.axes as axis (axis)}
{metricLabel(axis)}
{#each model.metrics as metric (metric)} {@const c = cellAt(axis, metric)} {/each} {/each}
−1 0 +1

Spearman ρ per cell — positive = blue tint, negative = orange tint, strength = saturation.

{/if}

Coverage gates: at least {model.gates.minConfigs} configurations and {model.gates.minValues} distinct axis values per cell — these are coverage rules, not a guarantee of statistical significance.