2026-04-26 21:30:27 -04:00
|
|
|
{% load static %}
|
|
|
|
|
{# PICK SEA overlay — Celtic Cross spread entry #}
|
|
|
|
|
{# Included in room.html when table_status == "SKY_SELECT" and sky_confirmed #}
|
|
|
|
|
{# Layout is the reverse of PICK SKY: cards left (transparent), form right #}
|
|
|
|
|
|
|
|
|
|
<div class="sea-backdrop"></div>
|
|
|
|
|
<div class="sea-overlay" id="id_sea_overlay">
|
|
|
|
|
|
|
|
|
|
<div class="sea-modal-wrap">
|
|
|
|
|
<div class="sea-modal">
|
|
|
|
|
|
|
|
|
|
<header class="sea-modal-header">
|
|
|
|
|
<h2>PICK <span>SEA</span></h2>
|
2026-04-27 01:02:01 -04:00
|
|
|
<p>Draw cards to circumscribe your character's influences and seed the Voronoi map.</p>
|
2026-04-26 21:30:27 -04:00
|
|
|
</header>
|
|
|
|
|
|
|
|
|
|
<div class="sea-modal-body">
|
|
|
|
|
|
|
|
|
|
{# ── Cards column (transparent) ───────────────────────────── #}
|
|
|
|
|
<div class="sea-cards-col">
|
|
|
|
|
<div class="sea-cross">
|
|
|
|
|
{# Crown — position 3 #}
|
|
|
|
|
<div class="sea-cross-cell sea-pos-crown">
|
|
|
|
|
<div class="sea-card-slot sea-card-slot--empty"></div>
|
|
|
|
|
</div>
|
|
|
|
|
{# Past — position 4 #}
|
|
|
|
|
<div class="sea-cross-cell sea-pos-past">
|
|
|
|
|
<div class="sea-card-slot sea-card-slot--empty"></div>
|
|
|
|
|
</div>
|
|
|
|
|
{# Center — Significator (already placed) #}
|
|
|
|
|
<div class="sea-cross-cell sea-pos-center">
|
2026-04-27 01:02:01 -04:00
|
|
|
<div class="sig-stage-card" style="--sig-card-w: 4rem">
|
2026-04-26 21:30:27 -04:00
|
|
|
{% if my_tray_sig %}
|
2026-04-27 01:02:01 -04:00
|
|
|
<div class="fan-card-face">
|
|
|
|
|
{% if my_tray_sig.arcana == "MIDDLE" %}
|
|
|
|
|
<p class="sig-qualifier-above">{% if user_polarity == "levity" %}Leavened{% else %}Graven{% endif %}</p>
|
|
|
|
|
<p class="fan-card-name">{{ my_tray_sig.name_title }}</p>
|
|
|
|
|
{% elif my_tray_sig.arcana == "MAJOR" %}
|
|
|
|
|
<p class="fan-card-name">{{ my_tray_sig.name_title }}</p>
|
|
|
|
|
<p class="sig-qualifier-below">{% if user_polarity == "levity" %}Leavened{% else %}Graven{% endif %}</p>
|
|
|
|
|
{% else %}
|
|
|
|
|
<p class="fan-card-name">{{ my_tray_sig.name_title }}</p>
|
|
|
|
|
{% endif %}
|
|
|
|
|
</div>
|
2026-04-26 21:30:27 -04:00
|
|
|
{% endif %}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{# Future — position 5 #}
|
|
|
|
|
<div class="sea-cross-cell sea-pos-future">
|
|
|
|
|
<div class="sea-card-slot sea-card-slot--empty"></div>
|
|
|
|
|
</div>
|
|
|
|
|
{# Root — position 1 #}
|
|
|
|
|
<div class="sea-cross-cell sea-pos-root">
|
|
|
|
|
<div class="sea-card-slot sea-card-slot--empty"></div>
|
|
|
|
|
</div>
|
2026-04-27 01:02:01 -04:00
|
|
|
{# Crossing — position 2 (rotated) deferred; re-add once layout is finalized #}
|
2026-04-26 21:30:27 -04:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{# ── Form column (priUser / opaque) ───────────────────────── #}
|
|
|
|
|
<div class="sea-form-col">
|
|
|
|
|
|
|
|
|
|
<div class="sea-form-main">
|
|
|
|
|
<div class="sea-field">
|
|
|
|
|
<label for="id_sea_spread">Spread</label>
|
|
|
|
|
<select id="id_sea_spread" name="spread" class="sea-select">
|
|
|
|
|
{% if user_polarity == "levity" %}
|
|
|
|
|
<option value="waite-smith" selected>Celtic Cross, Waite-Smith</option>
|
|
|
|
|
<option value="escape-velocity">Celtic Cross, Escape Velocity</option>
|
|
|
|
|
{% else %}
|
|
|
|
|
<option value="escape-velocity" selected>Celtic Cross, Escape Velocity</option>
|
|
|
|
|
<option value="waite-smith">Celtic Cross, Waite-Smith</option>
|
|
|
|
|
{% endif %}
|
|
|
|
|
</select>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<button type="button" id="id_sea_deal" class="btn btn-primary" disabled>
|
|
|
|
|
Deal
|
|
|
|
|
</button>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>{# /.sea-modal-body #}
|
|
|
|
|
|
|
|
|
|
</div>{# /.sea-modal #}
|
|
|
|
|
|
|
|
|
|
<button type="button" id="id_sea_cancel" class="btn btn-cancel btn-sm">NVM</button>
|
|
|
|
|
|
|
|
|
|
</div>{# /.sea-modal-wrap #}
|
|
|
|
|
</div>{# /.sea-overlay #}
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
(function () {
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
const overlay = document.getElementById('id_sea_overlay');
|
|
|
|
|
const cancelBtn = document.getElementById('id_sea_cancel');
|
|
|
|
|
|
|
|
|
|
function openSea() {
|
|
|
|
|
document.documentElement.classList.add('sea-open');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function closeSea() {
|
|
|
|
|
document.documentElement.classList.remove('sea-open');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const pickSeaBtn = document.getElementById('id_pick_sea_btn');
|
|
|
|
|
if (pickSeaBtn) pickSeaBtn.addEventListener('click', openSea);
|
|
|
|
|
cancelBtn.addEventListener('click', closeSea);
|
|
|
|
|
overlay.addEventListener('click', (e) => { if (e.target === overlay) closeSea(); });
|
|
|
|
|
})();
|
|
|
|
|
</script>
|