/* v0.10.23 — tactical camera. The SHIP, table and opponents move together.
   The hand, buttons, speech bubbles and HUD stay in their exact hit boxes. */
.game-stage.ty23-jolt .table-center,
.game-stage.ty23-jolt .opponents,
.game-stage.ty23-jolt .combat-fx,
.game-stage.ty23-jolt .orbit-container,
.game-stage.ty23-jolt .planet-stations,
.game-stage.ty23-jolt #foxy-orbit-marker,
.game-stage.ty23-jolt #ship-spotlight,
.game-stage.ty23-rebound .table-center,
.game-stage.ty23-rebound .opponents,
.game-stage.ty23-rebound .combat-fx,
.game-stage.ty23-rebound .orbit-container,
.game-stage.ty23-rebound .planet-stations,
.game-stage.ty23-rebound #foxy-orbit-marker,
.game-stage.ty23-rebound #ship-spotlight,
.game-stage.ty23-shudder .table-center,
.game-stage.ty23-shudder .opponents,
.game-stage.ty23-shudder .combat-fx,
.game-stage.ty23-shudder .orbit-container,
.game-stage.ty23-shudder .planet-stations,
.game-stage.ty23-shudder #foxy-orbit-marker,
.game-stage.ty23-shudder #ship-spotlight {
 will-change:translate;
 animation-duration:320ms;
 animation-timing-function:cubic-bezier(.14,.78,.35,1);
 animation-fill-mode:both;
}
.game-stage.ty23-jolt .table-center,.game-stage.ty23-jolt .opponents,.game-stage.ty23-jolt .combat-fx,.game-stage.ty23-jolt .orbit-container,.game-stage.ty23-jolt .planet-stations,.game-stage.ty23-jolt #foxy-orbit-marker,.game-stage.ty23-jolt #ship-spotlight{animation-name:ty23-shake-hit}
.game-stage.ty23-rebound .table-center,.game-stage.ty23-rebound .opponents,.game-stage.ty23-rebound .combat-fx,.game-stage.ty23-rebound .orbit-container,.game-stage.ty23-rebound .planet-stations,.game-stage.ty23-rebound #foxy-orbit-marker,.game-stage.ty23-rebound #ship-spotlight{animation-name:ty23-shake-fox}
.game-stage.ty23-shudder .table-center,.game-stage.ty23-shudder .opponents,.game-stage.ty23-shudder .combat-fx,.game-stage.ty23-shudder .orbit-container,.game-stage.ty23-shudder .planet-stations,.game-stage.ty23-shudder #foxy-orbit-marker,.game-stage.ty23-shudder #ship-spotlight{animation-name:ty23-shake-quack;animation-duration:450ms}
@keyframes ty23-shake-hit{
 0%,100%{translate:0 0}12%{translate:calc(-5px * var(--ty23-shake-scale,1)) calc(2px * var(--ty23-shake-scale,1))}
 30%{translate:calc(4px * var(--ty23-shake-scale,1)) calc(-3px * var(--ty23-shake-scale,1))}
 51%{translate:calc(-3px * var(--ty23-shake-scale,1)) calc(1px * var(--ty23-shake-scale,1))}
 72%{translate:calc(2px * var(--ty23-shake-scale,1)) 0}}
@keyframes ty23-shake-fox{
 0%,100%{translate:0 0}16%{translate:calc(-4px * var(--ty23-shake-scale,1)) 0}
 42%{translate:calc(7px * var(--ty23-shake-scale,1)) calc(-2px * var(--ty23-shake-scale,1))}
 66%{translate:calc(-3px * var(--ty23-shake-scale,1)) 0}}
@keyframes ty23-shake-quack{
 0%,100%{translate:0 0}12%,38%,66%{translate:calc(-3px * var(--ty23-shake-scale,1)) calc(-2px * var(--ty23-shake-scale,1))}
 24%,52%,80%{translate:calc(4px * var(--ty23-shake-scale,1)) calc(1px * var(--ty23-shake-scale,1))}}
/* The dealing sequence only paints card BACKS. No secret hand is exposed. */
#ty23-deal-layer{position:absolute;inset:0;z-index:26;overflow:hidden;pointer-events:none;contain:paint}
#ty23-deal-layer .ty23-flying-card{position:absolute;left:var(--ty23-x);top:var(--ty23-y);display:block;
 width:34px;aspect-ratio:.685;border:1.5px solid #b0a7ff;border-radius:5px;
 background:#121943 url('/typhoon-cards/back.webp') center/cover no-repeat;
 box-shadow:0 0 10px #46d8e8a5,0 5px 13px #020416aa;opacity:0;
 will-change:transform,opacity;
 animation:ty23-deal-flight var(--ty23-flight-ms,395ms) cubic-bezier(.14,.72,.33,1) var(--ty23-delay-ms,0ms) both}
@keyframes ty23-deal-flight{
 0%{opacity:0;transform:translate3d(0,0,0) scale(.58) rotate(-16deg)}
 12%{opacity:1}55%{opacity:1}
 85%{opacity:1;transform:translate3d(calc(var(--ty23-dx) * .87),calc(var(--ty23-dy) * .87 - 10px),0) scale(.94) rotate(var(--ty23-rot,0deg))}
 100%{opacity:0;transform:translate3d(var(--ty23-dx),var(--ty23-dy),0) scale(.85) rotate(var(--ty23-rot,0deg))}}
.game-stage.ty23-dealing #hand{opacity:0;pointer-events:none}
.game-stage.ty23-deal-reveal #hand{animation:ty23-hand-finish .38s ease-out both}
@keyframes ty23-hand-finish{0%{opacity:.15;translate:0 9px;filter:brightness(1.8)}65%{opacity:1;translate:0 -2px}100%{opacity:1;translate:0 0;filter:none}}
@media(max-width:900px){#ty23-deal-layer .ty23-flying-card{width:24px;border-radius:4px}}
/* A match intro is never allowed to block the panel or controls. */
#ty23-deal-layer,.game-stage.ty23-dealing #hand{touch-action:auto}
@media(prefers-reduced-motion:reduce){
 #ty23-deal-layer{display:none!important}
 .game-stage.ty23-dealing #hand{opacity:1!important;pointer-events:auto!important}
 .game-stage.ty23-deal-reveal #hand{animation:none!important}
 .game-stage.ty23-jolt .table-center,.game-stage.ty23-jolt .opponents,.game-stage.ty23-jolt .combat-fx,
 .game-stage.ty23-jolt .orbit-container,.game-stage.ty23-jolt .planet-stations,.game-stage.ty23-jolt #foxy-orbit-marker,.game-stage.ty23-jolt #ship-spotlight,
 .game-stage.ty23-rebound .table-center,.game-stage.ty23-rebound .opponents,.game-stage.ty23-rebound .combat-fx,
 .game-stage.ty23-rebound .orbit-container,.game-stage.ty23-rebound .planet-stations,.game-stage.ty23-rebound #foxy-orbit-marker,.game-stage.ty23-rebound #ship-spotlight,
 .game-stage.ty23-shudder .table-center,.game-stage.ty23-shudder .opponents,.game-stage.ty23-shudder .combat-fx,
 .game-stage.ty23-shudder .orbit-container,.game-stage.ty23-shudder .planet-stations,.game-stage.ty23-shudder #foxy-orbit-marker,.game-stage.ty23-shudder #ship-spotlight{animation:none!important;translate:none!important}
}
