{% comment %} One card — a standalone `card` block, or one of a `gallery`'s. Shared, because it was not: the gallery branch grew a copy that rendered the image, title and link and quietly dropped the subtitle and the buttons, so a carousel arrived in the thread with its text and its actions missing. Two copies of markup this fiddly diverge; one cannot. Every URL here reached the view model through is_renderable_url, so an href is already known to be http(s) — see apps/inbox/rendering.py. `rel` and `target` are still explicit: the destination was chosen by the same stranger who wrote the message. {% endcomment %}