A.7.5-polish stat-block polarity bg unification — gravity flipped to --priUser across sig + sea + fan stages (match My Sign applet's no-flip convention). User-reported 2026-05-25 PM after the A.7.5 land (a9ad422): "the --priUser and --secUser polarity seems to be reversed everywhere but the My Sign applet". DOM inspection confirmed: applet stat-block under gravity = rgb(50, 30, 95) (--priUser); main .sig-stat-block under gravity = rgba(162, 170, 173, 0.75) (--secUser). Applet keeps --priUser bg under BOTH polarities (no gravity override on bg; only label/keyword colors flipped). Main page + sea_stage + fan_stage were doing the opposite-polarity flip per the [[feedback-card-polarity-convention]] lock, which the user is now revising — stat-block should match applet pattern (always --priUser bg, regardless of polarity).

**Change**: collapse the three stat-block gravity-polarity overrides:
- `.tarot-fan-wrap[data-polarity="gravity"] .fan-stage-block` — bg `--secUser → --priUser`; combined w. the existing levity rule into a single comma-list selector (`[data-polarity="gravity"], [data-polarity="levity"]`) since both branches now produce identical colors. Inner overrides (label/chip/keywords) collapsed to the levity values.
- `.sig-stat-block` under `.my-sign-page[data-polarity="gravity"]` (+ `.sig-overlay[data-polarity="gravity"]`) — explicit `background: rgba(var(--secUser), 0.75)` removed; falls through to the default `.sig-stage .sig-stat-block { background: rgba(var(--priUser), 0.5); }` upstream. Label + chip gravity-specific overrides (--quiUser label, --priUser chip — tuned for the now-removed --secUser bg) deleted; the shared --secUser-label / --secUser-chip defaults (tuned for --priUser bg) cover both polarities.
- `.sea-stage--gravity .sea-stat-block` — bg `--secUser → --priUser`; combined w. levity via comma-list selector. Inner overrides collapsed.

Net effect across the 3 surfaces: stat-block bg is now `rgba(var(--priUser), N)` (alpha varies per surface: 0.5 sig, 0.85 sea, 1.0 fan) regardless of polarity — matching the applet's universal --priUser pattern. Card polarity rules untouched: text-mode card bg still flips per the original convention (gravity card --priUser, levity card --secUser). Card + stat-block under gravity NOW share the same polarity bg (was opposite per [[feedback-card-polarity-convention]]); for image-mode cards this is invisible (transparent card bg); for text-mode cards (Earthman + RWS today) the same-polarity bgs read as a coordinated dark pair under gravity rather than the prior dark/light contrast — accepted as the intentional new convention per user spec.

**Convention update**: [[feedback-card-polarity-convention]] needs revision — the "card + stat block carry OPPOSITE-polarity bgs" rule held for sig/sea/fan but never for the applet, and the user is now extending the applet's exception universally. Memory update deferred to a follow-up; commit body documents the new direction so future-me has the rationale.

Tests: 1314/1314 IT+UT total green (no test surface — SCSS-only change; ITs use lxml HTML parsing + don't observe computed styles). Visual verify 2026-05-25 PM: my_sign main page stat-block under gravity now `rgba(50, 30, 95, 0.5)` (--priUser w. page-bg bleed) matching the applet's `rgb(50, 30, 95)` (--priUser at full alpha). No FT runs per [[feedback-ft-run-discipline]] — visual-only change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Disco DeDisco
2026-05-25 14:44:07 -04:00
parent a9ad422b35
commit 2ec23ea2c0

View File

@@ -353,35 +353,26 @@
// shared `.tarot-fan-wrap` ancestor by `game-kit.js:_populateStage` and
// `_flipActive` so the stat block can pick up the opposite-polarity bg
// without JS having to touch the stat block directly.
.tarot-fan-wrap[data-polarity="gravity"] .fan-stage-block {
background: rgba(var(--secUser), 1);
border-color: rgba(var(--priUser), 0.15);
color: rgba(var(--priUser), 1);
.stat-face-label { color: rgba(var(--quiUser), 1); }
// Sprint A.7.5 — chip uses --secUser by default; under gravity the
// stat-block bg IS --secUser, so the chip would be invisible. Flip
// to --priUser to stay on the opposite-polarity side per the
// [[feedback-card-polarity-convention]].
.stat-face-chip { color: rgba(var(--priUser), 1); }
.stat-keywords li {
color: rgba(var(--priUser), 1);
border-bottom-color: rgba(var(--priUser), 0.18);
}
}
// Sprint A.7.5 user-spec 2026-05-25 PM — gravity polarity stat-block bg
// flipped from --secUser to --priUser to match the applet's pattern (which
// keeps the stat-block bg as --priUser under both polarities). User
// observation: "polarity seems to be reversed everywhere but the My Sign
// applet". Card + stat-block now share the SAME polarity bg (--priUser
// under gravity) — explicit revision of the prior opposite-polarity rule.
// Inner color overrides (label/chip/keywords) collapse to match the levity
// branch since both now sit on --priUser bg.
.tarot-fan-wrap[data-polarity="gravity"] .fan-stage-block,
.tarot-fan-wrap[data-polarity="levity"] .fan-stage-block {
background: rgba(var(--priUser), 1);
border-color: rgba(var(--terUser), 0.15);
color: rgba(var(--secUser), 1);
// Sprint A.7.5 — label drops to --secUser to match the new applet
// convention. Was --terUser; --secUser still has comfortable contrast
// against the --priUser bg + lets the title (--quaUser/--terUser per
// arcana) stay the focal text.
.stat-face-label { color: rgba(var(--secUser), 1); }
.stat-keywords li {
color: rgba(var(--quiUser), 1);
border-bottom-color: rgba(var(--terUser), 0.18);
}
}
// Levity rule above (combined w. gravity since both now use --priUser bg).
.fan-card {
position: absolute;
@@ -1254,11 +1245,14 @@ html:has(.sig-backdrop) {
}
.sig-overlay[data-polarity="gravity"],
.my-sign-page[data-polarity="gravity"] {
// Stat block: invert priUser/secUser so gravity gets the same stark contrast as leavened cards
// Sprint A.7.5 user-spec 2026-05-25 PM — stat-block bg under gravity
// collapses to the default --priUser (was --secUser w. inverted
// priUser/secUser), matching the My Sign applet's universal --priUser
// stat-block. Label/chip/keyword overrides below collapse too — the
// default rules (tuned for --priUser bg) cover both polarities now.
.sig-stat-block {
background: rgba(var(--secUser), 0.75);
color: rgba(var(--priUser), 1);
border-color: rgba(var(--priUser), 0.15);
// bg falls through to the default `rgba(var(--priUser), 0.5)` set
// at `.sig-stage .sig-stat-block` above; no per-polarity override.
}
// Caution tooltip: --tooltip-bg is black so priUser text (dark) would be invisible —
// override to secUser (light) so body text reads against the dark backdrop.
@@ -1271,13 +1265,9 @@ html:has(.sig-backdrop) {
.sig-stage-card .fan-card-reversal-qualifier,
.sig-stage-card .sig-qualifier-above,
.sig-stage-card .sig-qualifier-below { color: rgba(var(--terUser), 1); }
// Stat-face label: gravity stat-block bg is --secUser (opposite of gravity card's
// --priUser bg), so the label takes the levity-card text color (--quiUser) to
// stay legible against the lighter stat-block.
.sig-stat-block .stat-face-label { color: rgba(var(--quiUser), 1); }
// Sprint A.7.5 — chip flips to --priUser under gravity (default --secUser
// would be invisible on the --secUser stat-block bg).
.sig-stat-block .stat-face-chip { color: rgba(var(--priUser), 1); }
// Sprint A.7.5 — label + chip overrides under gravity dropped; the
// shared --secUser default (tuned for --priUser bg) applies in both
// polarities now that gravity stat-block bg = --priUser.
// Upright + reversal title glow — gravity
.sig-stage-card .fan-card-name,
.sig-stage-card .sig-qualifier-above,
@@ -2145,28 +2135,21 @@ $_sea-title-els: '.fan-card-name, .sig-qualifier-above, .sig-qualifier-below, .f
// unchanged — `.is-reversed` still just toggles which face renders;
// it does NOT shift the bg (orientation is preview-only, polarity is
// the persisted axis that paints the surfaces).
.sea-stage--gravity .sea-stat-block {
background: rgba(var(--secUser), 0.85);
border-color: rgba(var(--priUser), 0.15);
.stat-face-label { color: rgba(var(--quiUser), 1); }
// Sprint A.7.5 — chip flips to --priUser under gravity (bg is --secUser).
.stat-face-chip { color: rgba(var(--priUser), 1); }
.stat-keywords li {
color: rgba(var(--priUser), 1);
border-bottom-color: rgba(var(--priUser), 0.18);
}
}
// Sprint A.7.5 user-spec 2026-05-25 PM — gravity stat-block bg flipped to
// match the My Sign applet (always --priUser regardless of polarity). Both
// gravity + levity collapse to the same colors since both sit on --priUser
// bg now; the original opposite-polarity inversion is dropped.
.sea-stage--gravity .sea-stat-block,
.sea-stage--levity .sea-stat-block {
background: rgba(var(--priUser), 0.85);
border-color: rgba(var(--terUser), 0.15);
// Sprint A.7.5 — label flipped to --secUser (was --terUser) to match
// the new applet convention. --secUser still contrasts well w. --priUser bg.
.stat-face-label { color: rgba(var(--secUser), 1); }
.stat-keywords li {
color: rgba(var(--quiUser), 1);
border-bottom-color: rgba(var(--terUser), 0.18);
}
}
// Levity rule above (combined w. gravity since both now use --priUser bg).
@media (orientation: landscape) {
html.sea-open body .container .navbar,