This block arrives as mode: template, then keeps layering fresh backend reactions from the shared kiss stream on top of the initial template render.
{# Deferred templates render twice — here and in the browser — so they stay
inside the frontend Twig subset: iterables must be plain context paths,
and {% for %}...{% else %} does not exist there. Hence the explicit
emptiness check, and stars precomputed into the row. #}