Sea Select: drawn-slot reopen after refresh + FLIP polarity-tinted back — TDD

- fix: drawn spread slots silently no-op'd on click AFTER a refresh — SeaDeal's
  in-memory `_seaHand` is only populated by openStage/register during the live
  session, so a reload left it empty + the overlay click handler short-circuited
  (`if (!_seaHand[pos]) return`). `_sea_overlay.html` now re-seeds `_seaHand`
  from the server-rendered saved slots once the deck fetch resolves (cards
  looked up by `data-card-id`; reversed/polarity DOM-sourced) — the same fix
  my_sea already carries
- FLIP card-back: the sea stage now renders the deck back-img for ANY image-
  equipped deck w. a back image (dropped the `not is_polarized` gate — it
  omitted the back for the room's polarized Gravity/Levity draw, so FLIP
  no-op'd). The back-art is identical across polarities, so `_card-deck.scss`
  tints the FLIPped card by the drawn polarity: gravity --quiUser fill @ 0.3 +
  --quaUser border; levity --terUser fill @ 0.3 + --ninUser border (scoped to
  `.sea-stage--*`, so my_sign / applet stages are untouched)
- IT: an image-deck sea stage renders `.sig-stage-card-back-img`

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Disco DeDisco
2026-06-07 21:53:35 -04:00
parent c037e876e2
commit ab00774a49
4 changed files with 83 additions and 18 deletions

View File

@@ -2328,6 +2328,36 @@ $_sea-title-els: '.fan-card-name, .sig-qualifier-above, .sig-qualifier-below, .f
);
}
// ── FLIP-to-back polarity tint + border (user-spec 2026-06-07) ────────────────
// The card-back art is identical for both polarities, so the FLIP reveal would
// be ambiguous. Distinguish the two stacks: a 0.3-alpha fill OVERLAY (the same
// deck fill colors) + a polarity border on the flipped card.
// gravity → --quiUser tint / --quaUser border
// levity → --terUser tint / --ninUser border
// Scoped to `.is-flipped-to-back` on the sea stage only, so my_sign / applet
// stages are untouched. The `&.sig-stage-card--image` chain (0,4,0) out-cascades
// the image-mode `border:0` / transparent rules above so the border + tint show.
.sea-stage-card.is-flipped-to-back {
position: relative;
&::after {
content: '';
position: absolute;
inset: 0;
pointer-events: none;
border-radius: 0.4rem;
}
}
.sea-stage--gravity .sea-stage-card.is-flipped-to-back,
.sea-stage--gravity .sea-stage-card.sig-stage-card--image.is-flipped-to-back {
border: 0.18rem solid rgba(var(--quaUser), 1);
&::after { background: rgba(var(--quiUser), 0.3); }
}
.sea-stage--levity .sea-stage-card.is-flipped-to-back,
.sea-stage--levity .sea-stage-card.sig-stage-card--image.is-flipped-to-back {
border: 0.18rem solid rgba(var(--ninUser), 1);
&::after { background: rgba(var(--terUser), 0.3); }
}
// Sea stat block — reuses sig-select stat-block sizing, scoped to sea-stage.
// `background` left blank here; the `.sea-stage--gravity` / `.sea-stage--
// levity` parent rules below set the polarity-aware bg (sig convention,