diff --git a/src/templates/apps/gameboard/my_sea_visit.html b/src/templates/apps/gameboard/my_sea_visit.html index ded7aac..52ca954 100644 --- a/src/templates/apps/gameboard/my_sea_visit.html +++ b/src/templates/apps/gameboard/my_sea_visit.html @@ -158,6 +158,15 @@ for (var k in card) { if (Object.prototype.hasOwnProperty.call(card, k)) c[k] = card[k]; } c.reversed = !!e.reversed; window.SeaDeal.register(c, '.sea-pos-' + e.position, e.polarity === 'levity'); + // register's _fillSlot sets --filled (opacity:0) but not + // --visible (the owner adds that on stage-dismiss; the + // spectator has no modal). Add it here in the SAME tick so the + // card lands at its final opacity — matching the refreshed + // state — instead of racing the empty→filled opacity transition + // (the long-standing my_sea ease-in/ease-out glitch). + var cell = cross.querySelector('.sea-pos-' + e.position); + var filled = cell && cell.querySelector('.sea-card-slot--filled'); + if (filled) filled.classList.add('sea-card-slot--visible'); }); // Re-empty any slot the owner cleared (DEL → empty-hand broadcast). cross.querySelectorAll('.sea-card-slot.sea-card-slot--filled').forEach(function (slot) {