.card-animation-layer {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 20;
    overflow: visible;
}

.card-animation-ghost {
    position: absolute;
    pointer-events: none;
    transform: translate3d(0, 0, 0);
    backface-visibility: hidden;
}

/* Applied to source cards in the south hand the moment their ghost
   flight starts, so the real card is hidden while the ghost flies to
   the table. Blazor's re-render replaces the card tree and strips the
   class automatically; no JS cleanup is required. */
.card.card-flying-away {
    transition: opacity 220ms ease;
    opacity: 0;
    pointer-events: none;
}

