{% load tarot_filters %} {% for card in cards %}
{{ card.corner_rank }} {% if card.suit_icon %}{% endif %}
{% if card.gravity_emanation %} {# Polarity-split title (cards 48-49 + trumps 19-21); no qualifier slots — qualifier is baked into the title between "The" and the proper noun #}

{{ card.gravity_emanation|italicize:card.italic_word }}

{% else %} {% if card.name_group %}

{{ card.name_group }}

{% endif %} {% if card.arcana != "MAJOR" and card.gravity_qualifier %}

{{ card.gravity_qualifier }}

{% endif %}

{{ card.name_title|italicize:card.italic_word }}{% if card.arcana == "MAJOR" and card.gravity_qualifier %},{% endif %}

{% if card.arcana == "MAJOR" and card.gravity_qualifier %}

{{ card.gravity_qualifier }}

{% endif %} {% endif %}

{{ card.get_arcana_display }}

{% comment %} Class names always match semantic content: qualifier text in .fan-card-reversal-qualifier, title text in .fan-card-reversal-name. DOM order is per-arcana, controlling visual layout after the 180° SPIN rotation (DOM-second appears visually on top): Major / polarity-split — title on top → name class is DOM-second Non-major — qualifier on top → qualifier class is DOM-second {% endcomment %} {% if card.gravity_reversal %} {# Polarity-split: single-line title in the name slot, qualifier slot empty. #}

{{ card.gravity_reversal|italicize:card.italic_word }}

{% elif card.arcana == "MAJOR" %}

{{ card.gravity_qualifier|default:card.levity_qualifier }}

{{ card.name_title|italicize:card.italic_word }}{% if card.gravity_qualifier %},{% endif %}

{% else %}

{{ card.name_title|italicize:card.italic_word }}

{{ card.reversal_qualifier|default:card.gravity_qualifier }}

{% endif %}
{{ card.corner_rank }} {% if card.suit_icon %}{% endif %}
{% endfor %}