2026-03-24 22:57:12 -04:00
|
|
|
{% for card in cards %}
|
2026-04-30 21:01:52 -04:00
|
|
|
<div class="fan-card"
|
|
|
|
|
data-index="{{ forloop.counter0 }}"
|
|
|
|
|
data-suit-icon="{{ card.suit_icon }}"
|
|
|
|
|
data-corner-rank="{{ card.corner_rank }}"
|
|
|
|
|
data-name-group="{{ card.name_group }}"
|
|
|
|
|
data-name-title="{{ card.name_title }}"
|
|
|
|
|
data-arcana="{{ card.get_arcana_display }}"
|
|
|
|
|
data-correspondence="{{ card.correspondence|default:'' }}"
|
|
|
|
|
data-keywords-upright="{{ card.keywords_upright|join:',' }}"
|
|
|
|
|
data-keywords-reversed="{{ card.keywords_reversed|join:',' }}"
|
|
|
|
|
data-energies="{{ card.energies_json }}"
|
|
|
|
|
data-operations="{{ card.operations_json }}"
|
|
|
|
|
data-levity-qualifier="{{ card.levity_qualifier }}"
|
|
|
|
|
data-gravity-qualifier="{{ card.gravity_qualifier }}"
|
2026-04-30 21:51:23 -04:00
|
|
|
data-reversal-qualifier="{{ card.reversal_qualifier }}"
|
|
|
|
|
data-levity-emanation="{{ card.levity_emanation }}"
|
|
|
|
|
data-gravity-emanation="{{ card.gravity_emanation }}"
|
|
|
|
|
data-levity-reversal="{{ card.levity_reversal }}"
|
|
|
|
|
data-gravity-reversal="{{ card.gravity_reversal }}">
|
2026-03-25 00:24:26 -04:00
|
|
|
<div class="fan-card-corner fan-card-corner--tl">
|
|
|
|
|
<span class="fan-corner-rank">{{ card.corner_rank }}</span>
|
|
|
|
|
{% if card.suit_icon %}<i class="fa-solid {{ card.suit_icon }}"></i>{% endif %}
|
|
|
|
|
</div>
|
2026-03-24 22:57:12 -04:00
|
|
|
<div class="fan-card-face">
|
2026-04-30 21:01:52 -04:00
|
|
|
<div class="fan-card-face-upright">
|
2026-04-30 21:51:23 -04:00
|
|
|
{% if card.levity_emanation %}
|
|
|
|
|
{# Polarity-split title (cards 48-49); no qualifier slots — qualifier is baked into the title between "The" and the proper noun #}
|
|
|
|
|
<h3 class="fan-card-name">{{ card.levity_emanation }}</h3>
|
|
|
|
|
{% else %}
|
|
|
|
|
{% if card.name_group %}<p class="fan-card-name-group">{{ card.name_group }}</p>{% endif %}
|
|
|
|
|
{% if card.arcana != "MAJOR" and card.levity_qualifier %}
|
|
|
|
|
<p class="sig-qualifier-above">{{ card.levity_qualifier }}</p>
|
|
|
|
|
{% endif %}
|
|
|
|
|
<h3 class="fan-card-name">{{ card.name_title }}{% if card.arcana == "MAJOR" and card.levity_qualifier %},{% endif %}</h3>
|
|
|
|
|
{% if card.arcana == "MAJOR" and card.levity_qualifier %}
|
|
|
|
|
<p class="sig-qualifier-below">{{ card.levity_qualifier }}</p>
|
|
|
|
|
{% endif %}
|
2026-04-30 21:01:52 -04:00
|
|
|
{% endif %}
|
|
|
|
|
</div>
|
2026-03-24 22:57:12 -04:00
|
|
|
<p class="fan-card-arcana">{{ card.get_arcana_display }}</p>
|
2026-04-30 21:01:52 -04:00
|
|
|
<div class="fan-card-face-reversal">
|
2026-04-30 21:51:23 -04:00
|
|
|
{% comment %}
|
|
|
|
|
DOM order: reversal-name first, reversal-qualifier second.
|
|
|
|
|
After SPIN's 180° rotation DOM-second appears visually on top.
|
|
|
|
|
{% endcomment %}
|
|
|
|
|
{% if card.levity_reversal %}
|
|
|
|
|
{# Polarity-split reversal title — single line, qualifier slot empty. Title goes in the qualifier slot so it visually lands on top after spin. #}
|
|
|
|
|
<p class="fan-card-reversal-name"></p>
|
|
|
|
|
<p class="fan-card-reversal-qualifier">{{ card.levity_reversal }}</p>
|
|
|
|
|
{% elif card.arcana == "MAJOR" %}
|
2026-04-30 21:01:52 -04:00
|
|
|
<p class="fan-card-reversal-name">{{ card.levity_qualifier|default:card.gravity_qualifier }}</p>
|
|
|
|
|
<p class="fan-card-reversal-qualifier">{{ card.name_title }}{% if card.levity_qualifier %},{% endif %}</p>
|
|
|
|
|
{% else %}
|
|
|
|
|
<p class="fan-card-reversal-name">{{ card.name_title }}</p>
|
|
|
|
|
<p class="fan-card-reversal-qualifier">{{ card.reversal_qualifier|default:card.gravity_qualifier }}</p>
|
|
|
|
|
{% endif %}
|
|
|
|
|
</div>
|
2026-03-25 00:24:26 -04:00
|
|
|
</div>
|
|
|
|
|
<div class="fan-card-corner fan-card-corner--br">
|
|
|
|
|
<span class="fan-corner-rank">{{ card.corner_rank }}</span>
|
|
|
|
|
{% if card.suit_icon %}<i class="fa-solid {{ card.suit_icon }}"></i>{% endif %}
|
2026-03-24 22:57:12 -04:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{% endfor %}
|