Core mechanic · blind-swap redesign
One swap per match: drop one of your three, then commit to one of the four undrawn cards — which sit face down. You pick a position, not a value; the card you drew is revealed to you alone, only after you commit. No preview, no take-back — it is a gamble. You still pay 2% of your bet, in one of two windows (calm before round one, urgent at 1-1), and using one window forfeits the other. Because the pool is hidden, the swap is no longer an information leak: the opponent learns only that a swap happened, and when.
The pre-game modal stays cool-neutral (Surface2 is already a blue-grey) with gold for action; the 1-1 modal shifts frame and glow to loss red. Temperature and intensity carry the two windows — no new hue enters the token set just for this screen.
Live: tap a card in your hand to drop, tap one of the four face-down slots to choose a position, then commit. The taken card flips up for you only, after the commit — there is no preview and no cancel. "Save for later" reserves the swap for the 1-1 window; "Decline" gives it up for the match.
Pre-game · before round 1
Drop a card and gamble on a face-down one, save the swap for a 1-1 decider, or keep your hand.
Pre-game · before round 1
Dropping the 2. Now pick a face-down slot — you won't see it until you commit.
Pre-game · committed
Only you can see this. The opponent knows a swap happened, nothing more.
Pre-game · committed
The gamble can miss. The fee is charged either way — that is the risk you took.
Only reachable at 1-1, before round 3, and only if the swap was not spent pre-game. One card left in hand, so there is nothing to choose about the drop — the modal opens straight at "pick a slot". No "save for later": this is the last window. The old copy, "Last chance to fix", implied you could see what you were fixing toward. You can't — so it now names the gamble.
1-1 · before the decider
Your last card decides it. Trade it for a face-down one — sight unseen — or play it.
1-1 · commit
Slot 1 chosen — still hidden. Commit and the decider is played with whatever you drew.
1-1 · no swap left
You used your swap before round 1. The decider is played as dealt.
The swapper gets a private reveal of the card they drew. The opponent gets a neutral event indicator: a swap happened, in this window — no cards, no fee, no direction. It is styled neutral, not gold, because there is nothing in it to act on. This is the whole point of the redesign: the swap stops being an information leak.
In the old design the opponent notification was gold and held on-screen for 2.5s, because it carried a real card the player had to memorise. That card is gone. The indicator now reports an event, so it drops to a neutral frame, a short hold, and no held-card animation. Gold is reserved for what the player can act on; a swap they can't see isn't that.
Full spec in design/motion.md §15 (commit → reveal) and §16 (opponent-side event). Summary below.
On commit, the dropped card leaves the hand toward the pool while the chosen face-down slot
lifts toward the hand — paths crossing, both still face down. The incoming card
lands in the hand and only then flips: a 400ms Y-axis flip with a slight overshoot
(tc-reveal-pop), revealing the value to the swapper alone. The fee pulses gold
once as it is charged. There is no confirm-after-reveal state to animate — the commit is the
point of no return, so the reveal has nothing to undo.
The opponent no longer sees a card cross the table. Their indicator simply slides down from the top edge, holds ~1.2s (down from 2.5s — there is nothing to memorise), and slides out. Reduced-motion: it fades in and out at final position. This also reclaims the timing-budget headroom the old 3.2s reveal was eating from the swap window.
Persistent, so a player always knows whether they still hold their swap. Unchanged by the blind redesign — the chip never named a card.
A card back is dimensionally identical to a face — same box, same radius — so the four-card
pool row is the same width it was: at --tc-card-w: 64px in the modal that is
4×64 + 3×8 = 280px, and on Card Selection at tc-card--sm (72px)
it is 4×72 + 3×8 = 312px, both inside a 390px screen less its 16px gutters
(358px usable). The ? glyph and slot index sit inside the card, adding
no width. So the pool row itself needs no reflow.
1 — The reveal card must fit vertically. The reveal panel adds a 72px×108px card plus two lines of copy where the old "take" grid used to be; at pre-game that is fine, but the mid-game urgent modal is the tallest variant, so the reveal there reuses the compact summary rather than a full card. 2 — The opponent indicator shrank (no minicards), so any header slot sized for the old two-card note now has slack — re-centre it rather than leaving a gap. 3 — Tap targets: a 64px back is a comfortable tap, but the 4 pool slots sit 8px apart; keep the 8px gap (not less) so a blind pick isn't a mis-tap on a card whose value you can't verify afterward.