{% load static %} {% comment %} DRAW SEA — Sea Select felt + Gaussian spread modal, unified with my_sea.html (2026-06-07). Replaces the legacy dark single-modal. TWO surfaces, mirroring my_sea: • Sea Select FELT (.sea-page--room) — a --duoUser fill of the hex pane; the real Celtic-Cross spread deals here + the deck stacks. Opened by #id_pick_sea_btn (html.sea-open); the room gear's NVM returns to the hex. • Gaussian spread MODAL (#id_sea_spread_modal) — the .sea-select combobox (the two Celtic Cross 6-card options ONLY, per user-spec 2026-06-07) + AUTO DRAW + DEL + a miniaturized shape preview + a corner #id_sea_cancel NVM (closes back to the felt). Opened via the burger #id_sea_btn. Each draw persists onto the seat's Character.celtic_cross via epic:sea_save. {% endcomment %}
{# ── Felt cross — the REAL deal target (.my-sea-cross). Sig pins core; the #} {# six CC positions render w. labels + saved-hand pre-fill. The default #} {# spread is the polarity-matched Celtic Cross (or the saved one). #}
{% include "apps/gameboard/_partials/_my_sea_slot.html" with position="crown" saved=saved_by_position.crown crossing=False %}
{% include "apps/gameboard/_partials/_my_sea_slot.html" with position="leave" saved=saved_by_position.leave crossing=False %}
{# Center significator — supply the card-FACE image when the sig's #} {# deck has one (mirrors my_sea); else fall through to the corner- #} {# rank + suit-icon text thumbnail (the tray sig stays text-only). #} {# my_tray_sig's deck_variant is the card's OWN deck (the Sig #} {# Select pick comes from the Role Select contributed deck via #} {# _room_deck_variant), so this is the right image source. #}
{% if my_tray_sig %} {% if my_tray_sig.deck_variant.has_card_images %} {{ my_tray_sig.name }} {% else %} {{ my_tray_sig.corner_rank }} {% if my_tray_sig.suit_icon %}{% endif %} {% endif %} {% endif %}
{% include "apps/gameboard/_partials/_my_sea_slot.html" with position="cover" saved=saved_by_position.cover crossing=False %}
{% include "apps/gameboard/_partials/_my_sea_slot.html" with position="cross" saved=saved_by_position.cross crossing=True %}
{% include "apps/gameboard/_partials/_my_sea_slot.html" with position="loom" saved=saved_by_position.loom crossing=False %}
{% include "apps/gameboard/_partials/_my_sea_slot.html" with position="lay" saved=saved_by_position.lay crossing=False %}
{# ── Deck stacks — pinned bottom-right of the felt, so FLIP stays usable #} {# while the spread modal is closed. ALWAYS two stacks (Gravity + Levity), #} {# unlike my_sea / Sig Select: in the room's Sea Select phase the gamer may #} {# draw from EITHER populated half (sea_deck returns both), even a CARTE #} {# user whose monodeck is presented across the two polarity stacks #} {# (user-spec 2026-06-07). So the polarization-conditional shared partial #} {# is intentionally NOT used here. #}
DECKS
Gravity
Levity
{# ── Gaussian spread modal — opens on the burger #id_sea_btn. #} {# Sea stage — portaled big-card viewer (shared w. my_sea). #} {% include "apps/gameboard/_partials/_sea_stage.html" %}
{# ── Spread modal open/close — opens on the burger #id_sea_btn (active while #} {# the felt is up). Closes on the corner NVM (#id_sea_cancel), the Gaussian #} {# backdrop, Escape, or a guard-OK (so AUTO DRAW / DEL run against a closed #} {# modal). Mirrors my_sea's Phase-2 IIFE. #} {# ── Sea glow handoff — the SEA glow-machine does NOT fire while drawing. The #} {# post-completion CASCADE (in the picker IIFE above) STARTS it on the burger #} {# as the felt eases out (DRAW SEA → SEED MAP), mirroring CAST SKY's burger → #} {# sky-btn cue. This IIFE only carries the handoff: burger → sea_btn → #} {# .sea-select → end, so the user is led to review their sea. User-spec #} {# 2026-06-07. #}