Compare commits

...

2 Commits

Author SHA1 Message Date
Disco DeDisco
61162e36da fan-card-corner: icon outer-edge aligned; padding-left + fan-only padding-top
All checks were successful
ci/woodpecker/push/pyswiss Pipeline was successful
ci/woodpecker/push/main Pipeline was successful
- i { align-self: flex-start } — icon sits at outer card edge regardless of
  rank width; --br rotate(180deg) maps flex-start to visual right/outer edge
- padding-left: 0.5rem on .fan-card-corner — breathing room for rank + icon
- .fan-card .fan-card-corner { padding-top: 0.25rem } — top breathing room
  scoped to game kit fan only; stage cards (sea, sig) unaffected

Code architected by Disco DeDisco <discodedisco@outlook.com>
Git commit message Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 15:00:37 -04:00
Disco DeDisco
26a3af21fa PICK SEA crucifix grid: rename CSS position classes + remove dead code
Stage 1 — free 'cross':
- sea-cross-cell → sea-crucifix-cell (template, Jasmine fixture, SCSS)

Stage 2 — semantic position names:
- sea-pos-past → sea-pos-leave; grid-area: past → leave
- sea-pos-center → sea-pos-core; grid-area: center → core
- sea-pos-future → sea-pos-loom; grid-area: future → loom
- sea-pos-root → sea-pos-lay; grid-area: root → lay
- grid-template-areas updated to match
- sea-pos-crossing removed (dead code — no element ever carried it)

Jasmine + 35 ITs green.

Code architected by Disco DeDisco <discodedisco@outlook.com>
Git commit message Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 14:19:30 -04:00
4 changed files with 31 additions and 28 deletions

View File

@@ -21,13 +21,13 @@ describe("SeaDeal", () => {
<!-- Cross grid (simplified) -->
<div class="sea-cross">
<div class="sea-cross-cell sea-pos-crown">
<div class="sea-crucifix-cell sea-pos-crown">
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
<div class="sea-cross-cell sea-pos-past">
<div class="sea-crucifix-cell sea-pos-leave">
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
<div class="sea-cross-cell sea-pos-center">
<div class="sea-crucifix-cell sea-pos-core">
<div class="sea-sig-card"></div>
<div class="sea-pos-cover">
<div class="sea-card-slot sea-card-slot--empty"></div>
@@ -36,10 +36,10 @@ describe("SeaDeal", () => {
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
</div>
<div class="sea-cross-cell sea-pos-future">
<div class="sea-crucifix-cell sea-pos-loom">
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
<div class="sea-cross-cell sea-pos-root">
<div class="sea-crucifix-cell sea-pos-lay">
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
</div>

View File

@@ -63,6 +63,8 @@
border-color: rgba(var(--secUser), 1);
box-shadow: 0 0 2rem rgba(var(--secUser), 0.3);
}
.fan-card-corner { padding-top: 0.25rem; }
}
.fan-card-corner {
@@ -73,6 +75,7 @@
gap: 0.15rem;
line-height: 1;
color: rgba(var(--secUser), 0.75);
padding-left: 0.5rem; // outer-edge breathing room; --br rotation makes this right-side
&--tl { top: 0.4rem; left: 0.4rem; }
&--br { bottom: 0.4rem; right: 0.4rem; transform: rotate(180deg); }
@@ -82,7 +85,8 @@
font-weight: bold;
padding: 0.18rem 0;
}
i { font-size: 1.5rem; }
// Icon always at the outer card edge regardless of rank width
i { font-size: 1.5rem; align-self: flex-start; }
}
.fan-card-face {
@@ -778,8 +782,8 @@ html.sea-open .sea-modal-wrap {
display: grid;
grid-template-areas:
". crown . "
"past center future "
". root . ";
"leave core loom "
". lay . ";
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: auto auto auto;
gap: 0.5rem;
@@ -787,13 +791,12 @@ html.sea-open .sea-modal-wrap {
justify-items: center;
}
.sea-cross-cell { display: flex; align-items: center; justify-content: center; }
.sea-crucifix-cell { display: flex; align-items: center; justify-content: center; }
.sea-pos-crown { grid-area: crown; }
.sea-pos-past { grid-area: past; }
.sea-pos-center { grid-area: center; }
.sea-pos-future { grid-area: future; }
.sea-pos-root { grid-area: root; }
.sea-pos-crossing { grid-area: crossing; }
.sea-pos-leave { grid-area: leave; }
.sea-pos-core { grid-area: core; }
.sea-pos-loom { grid-area: loom; }
.sea-pos-lay { grid-area: lay; }
$sea-card-w: 4rem;
$sea-card-h: 6.5rem;
@@ -874,8 +877,8 @@ $sea-card-h: 6.5rem;
box-shadow: 0 0 0.5rem 0.25rem rgba(var(--ninUser), 0.35), 0 0 0.4rem rgba(0, 0, 0, 0.85);
}
// Cover + Cross — absolutely overlaid on the Sig card in .sea-pos-center
.sea-pos-center { position: relative; }
// Cover + Cross — absolutely overlaid on the Sig card in .sea-pos-core
.sea-pos-core { position: relative; }
.sea-pos-cover,
.sea-pos-cross {

View File

@@ -21,13 +21,13 @@ describe("SeaDeal", () => {
<!-- Cross grid (simplified) -->
<div class="sea-cross">
<div class="sea-cross-cell sea-pos-crown">
<div class="sea-crucifix-cell sea-pos-crown">
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
<div class="sea-cross-cell sea-pos-past">
<div class="sea-crucifix-cell sea-pos-leave">
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
<div class="sea-cross-cell sea-pos-center">
<div class="sea-crucifix-cell sea-pos-core">
<div class="sea-sig-card"></div>
<div class="sea-pos-cover">
<div class="sea-card-slot sea-card-slot--empty"></div>
@@ -36,10 +36,10 @@ describe("SeaDeal", () => {
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
</div>
<div class="sea-cross-cell sea-pos-future">
<div class="sea-crucifix-cell sea-pos-loom">
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
<div class="sea-cross-cell sea-pos-root">
<div class="sea-crucifix-cell sea-pos-lay">
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
</div>

View File

@@ -22,15 +22,15 @@
<div class="sea-cards-col">
<div class="sea-cross">
{# Crown — CC pos 3 / EV pos 5 #}
<div class="sea-cross-cell sea-pos-crown">
<div class="sea-crucifix-cell sea-pos-crown">
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
{# Beneath (past) — CC pos 4 / EV pos 3 #}
<div class="sea-cross-cell sea-pos-past">
<div class="sea-crucifix-cell sea-pos-leave">
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
{# Center — Significator (always placed) + Cover + Cross overlaid #}
<div class="sea-cross-cell sea-pos-center">
<div class="sea-crucifix-cell sea-pos-core">
<div class="sig-stage-card sea-sig-card" style="--sig-card-w: 4rem">
{% if my_tray_sig %}
<span class="fan-corner-rank">{{ my_tray_sig.corner_rank }}</span>
@@ -47,11 +47,11 @@
</div>
</div>
{# Before (future) — CC pos 5 / EV pos 6 #}
<div class="sea-cross-cell sea-pos-future">
<div class="sea-crucifix-cell sea-pos-loom">
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
{# Behind (root) — CC pos 6 / EV pos 4 #}
<div class="sea-cross-cell sea-pos-root">
<div class="sea-crucifix-cell sea-pos-lay">
<div class="sea-card-slot sea-card-slot--empty"></div>
</div>
</div>
@@ -189,8 +189,8 @@
const SEA_DECK_URL = overlay.dataset.seaDeckUrl;
const SPREAD_ORDER = {
'waite-smith': ['.sea-pos-cover', '.sea-pos-cross', '.sea-pos-crown', '.sea-pos-root', '.sea-pos-future', '.sea-pos-past'],
'escape-velocity': ['.sea-pos-cover', '.sea-pos-cross', '.sea-pos-root', '.sea-pos-past', '.sea-pos-crown', '.sea-pos-future'],
'waite-smith': ['.sea-pos-cover', '.sea-pos-cross', '.sea-pos-crown', '.sea-pos-lay', '.sea-pos-loom', '.sea-pos-leave'],
'escape-velocity': ['.sea-pos-cover', '.sea-pos-cross', '.sea-pos-lay', '.sea-pos-leave', '.sea-pos-crown', '.sea-pos-loom'],
};
let levityPile = [], gravityPile = [];