{% comment %}
Open-first skeleton: the server paints placeholder cards + a spinner
BEFORE /graph resolves, so first paint carries feedback even when the
store rebuild takes seconds. loadGraph()'s render() and the
boardStates painters replace this wholesale and flip aria-busy to
false the moment data — or a named empty/error state — lands. Pure
markup + 18-skeleton.css: no JS needed to show it.
{% endcomment %}
{% translate "Loading board…" %}
Route — how this card was handled (newest last)