My Sea

{# `my_sea_slots` (built by `latest_draw_slots()` in `gameboard.models`) #} {# carries one entry per spread position in DRAW_ORDER — filled slots #} {# render the drawn card, empty slots render as labelled placeholders. #} {# Spread lock-in: the row is created at first card draw, so the moment #} {# 1+ cards exist all the spread's positions show in the applet. The #} {# scroll container handles overflow (mirrors the Palettes applet). #} {% if not request.user.significator_id %} {# Sprint 4b applet-gate — DRYly rendered as a project-wide Brief #} {# banner (`note-banner` Gaussian-glass shell, portaled to the #} {# page h2). Inline body falls through to the empty-state "No #} {# draws yet" since no sig → no draws is the only possible state.#} {% include "apps/gameboard/_partials/_my_sea_sign_gate_brief.html" %}

No draws yet.

{% elif my_sea_slots %}
{% for slot in my_sea_slots %} {% if slot.card %}
{# Mirrors the my_sign.html `.sig-stage-card` layout — #} {# corner top-left, face w. name + arcana, mirror corner #} {# bottom-right. Label is a SIBLING of the slot inside #} {# the wrap so it sits BELOW the slot box (user-spec #} {# 2026-05-23: same position as the my_sea.html picker's #} {# `.sea-pos-label`). #}
{{ slot.card.corner_rank }} {% if slot.card.suit_icon %}{% endif %}
{# `slot.face` is the rendering payload from `TarotCard. #} {# applet_face()` — mirrors `populateCard` in #} {# `stage-card.js`: #} {# • Polarity-split (cards 19-21, 48-49): single-line #} {# title, qualifier blank. #} {# • Pattern B Major (2-5, 10-15, 22-35, 41): swapped #} {# reversal name + polarity qualifier carried. #} {# • Pattern B' Major (16-18): swapped reversal name, #} {# no qualifier on reversal. #} {# • Non-Major: qualifier ABOVE the title. #} {# Empty `.fan-card-qualifier` is hidden by `:empty` CSS. #} {% if slot.face.qualifier_first %}

{{ slot.face.qualifier }}

{{ slot.face.title }}

{% else %}

{{ slot.face.title }}

{{ slot.face.qualifier }}

{% endif %}

{{ slot.card.get_arcana_display }}

{{ slot.card.corner_rank }} {% if slot.card.suit_icon %}{% endif %}
{{ slot.label }}
{% else %}
{{ slot.label }}
{% endif %} {% endfor %}
{% else %}

No draws yet.

{% endif %}