/* Both games: short, state-bound motion with readable cards and free controls. */
.live-screen { position:relative; }
.game-feel-layer { position:absolute; inset:0; pointer-events:none; z-index:35; overflow:hidden; contain:layout paint; }
.game-feel-layer>span { position:absolute; pointer-events:none; }
.game-flying-chip { width:17px; height:17px; margin:-8px; border:3px dashed #f9e7a7; border-radius:50%; background:#b75046; box-shadow:0 2px 0 #542d29,0 4px 8px #0006; animation:game-chip-flight .65s cubic-bezier(.2,.7,.25,1) both; }
.game-flying-chip:nth-child(3n) { background:#30807a; }.game-flying-chip.is-award { background:#d6a84d; }
.game-action-burst,.game-street-burst,.game-award-burst { transform:translate(-50%,-50%); padding:6px 13px; border-radius:6px; background:linear-gradient(130deg,#132e2eeF,#071b21ed); border:1px solid #d9c491a0; box-shadow:0 5px 15px #00191466; color:#f8e8b9; font:700 13px/1.25 system-ui; white-space:nowrap; animation:game-label 1.2s ease both; }
.game-action-burst.is-all-in { color:#fff2cd; background:linear-gradient(110deg,#a44635,#55302a); border-color:#ffd889; font-size:16px; box-shadow:0 0 18px #d4873a88; }
.game-street-burst { letter-spacing:5px; padding:6px 20px; animation-duration:1s; }
.game-award-burst { display:grid; gap:3px; justify-items:center; font-size:10px; animation-duration:1.6s; }
.game-award-burst b { font-size:20px; color:#f8d878; }
.game-check-ripple { width:27px; height:27px; border:3px double #f6df9c; border-radius:50%; margin:-14px; animation:game-check .65s ease-out both; }
.game-fold-card,.game-dealing-card { width:23px; height:32px; margin:-16px -12px; border:2px solid #d5c98b; border-radius:3px; color:#d4c894; background:repeating-linear-gradient(45deg,#244c48 0 2px,#163b3b 2px 4px); display:grid;place-items:center;box-shadow:0 2px 4px #0005; animation:game-fold .55s ease-in both; }
.game-dealing-card { animation:game-deal .55s cubic-bezier(.17,.78,.26,1) both; }
@keyframes game-chip-flight {
  0%{opacity:0;transform:translate(0,0) scale(.8);}
  12%{opacity:1;}
  45%{opacity:1;transform:translate(calc(var(--dx)*.58),calc(var(--dy)*.58 - 25px)) scale(1.06) rotate(110deg);}
  82%{opacity:1;transform:translate(var(--dx),calc(var(--dy) - 3px)) scale(.85) rotate(215deg);}
  100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.6) rotate(230deg);}
}
@keyframes game-label { 0%{opacity:0;transform:translate(-50%,-25%) scale(.84);} 15%,75%{opacity:1;transform:translate(-50%,-50%) scale(1);} 100%{opacity:0;transform:translate(-50%,-80%) scale(.98);} }
@keyframes game-check {0%{opacity:0;transform:scale(.5);}20%{opacity:1;}100%{opacity:0;transform:scale(2.4);}}
@keyframes game-fold {0%{opacity:1;transform:translate(0,0) rotate(var(--tilt));}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(55deg) scale(.35);}}
@keyframes game-deal {0%{opacity:0;transform:translate(0,0) rotate(-15deg) scale(.6);}10%{opacity:1;}90%{opacity:1;}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(0deg) scale(.8);}}

/* A visible pistol aims at each actual losing seat, recoils, then leaves an impact. */
.tw-scene .tw-shot-gun { position:absolute;width:78px;height:46px;margin:-14px 0 0 -12px;transform-origin:12px 14px;transform:rotate(var(--angle));filter:drop-shadow(0 4px 4px #0009);opacity:0;animation:tw-gun-aim 1.5s var(--shot-delay) both; }
.tw-shot-gun svg {display:block;width:100%;height:100%;overflow:visible;}
.tw-gun-body {transform-origin:100px 20px;animation:tw-gun-kick .42s calc(var(--shot-delay) + 180ms) both;}
.tw-gun-slide {animation:tw-slide-kick .25s calc(var(--shot-delay) + 180ms) both;}
.tw-scene .tw-shot-muzzle::before,.tw-scene .tw-shot-muzzle::after,.tw-scene .tw-shot-muzzle i,.tw-scene .tw-shot-muzzle b {animation-delay:var(--shot-delay,180ms);}
.tw-scene .tw-shot-hole {animation-delay:var(--hit-delay,390ms);animation-duration:.65s;}
.tw-scene .tw-shot-crack {animation-delay:calc(var(--hit-delay,390ms) + 60ms);}
.tw-scene .tw-shot-dust {animation-delay:var(--hit-delay,390ms);}
.tw-shot-casing {position:absolute;width:8px;height:3px;background:linear-gradient(#ffeca9,#b68224);border-radius:2px;opacity:0;animation:tw-eject .65s ease-out both;}
@keyframes tw-gun-aim {0%{opacity:0;transform:rotate(calc(var(--angle) - 18deg)) scale(.6);}12%,78%{opacity:1;transform:rotate(var(--angle)) scale(1);}100%{opacity:0;transform:rotate(calc(var(--angle) + 12deg)) scale(.8);}}
@keyframes tw-gun-kick {0%,100%{transform:translateX(0) rotate(0);}18%{transform:translateX(-12px) rotate(-9deg);}50%{transform:translateX(-4px) rotate(-2deg);}}
@keyframes tw-slide-kick {0%,100%{transform:translateX(0);}30%{transform:translateX(-9px);}}
@keyframes tw-eject {0%{opacity:0;transform:translate(0,0) rotate(0);}15%{opacity:1;}65%{opacity:1;transform:translate(-22px,-35px) rotate(220deg);}100%{opacity:0;transform:translate(-37px,15px) rotate(430deg);}}
.tw-scene .tw-shot-caption {animation-duration:1.5s;}
.tw-scene .tw-paused *,.tw-scene .tw-paused *::before,.tw-scene .tw-paused *::after {animation-play-state:paused!important;}

/* Specials remain face-down throughout ordinary comparisons, then reveal together. */
.tw-special-seal {display:none;}
.tw-showdown .special-sealed .tw-special-seal {display:block;position:absolute;left:50%;top:54%;transform:translate(-50%,-50%);border:1px solid #d8bd77;border-radius:4px;padding:4px 7px;white-space:nowrap;background:#1b372fea;color:#eedda7;font-size:10px;z-index:6;}
.tw-showdown .special-sealed .tw-row-label,.tw-showdown .special-sealed .tw-row-outcome {visibility:hidden;}
.tw-showdown .special-opening .tw-reveal-cards .playing-card {animation:tw-special-card .5s calc(var(--fan-order)*35ms) both;}
.tw-special-showcase {position:absolute;z-index:4;left:50%;top:44%;transform:translate(-50%,-50%);min-width:170px;max-width:88%;padding:16px 25px;text-align:center;border:1px solid #e7cb8f;border-radius:12px;background:radial-gradient(ellipse,#364b31f5,#071f22f5);box-shadow:0 0 0 5px #d9bb6840,0 0 55px #e4bf6950;animation:tw-special-title 1.9s cubic-bezier(.2,.75,.3,1) both;}
.tw-special-showcase small {display:block;color:#d9ca9b;font-size:11px;letter-spacing:4px;}
.tw-special-showcase strong {display:block;padding:9px 0;font:bold clamp(22px,6vw,38px)/1.15 system-ui;color:#fff0be;text-shadow:0 2px #8c5928,0 0 15px #fbd97677;white-space:nowrap;}
.tw-special-showcase span {display:block;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:#d3dbc6;}
.tw-special-ray {position:absolute;left:50%;top:44%;width:100px;height:2px;background:linear-gradient(90deg,transparent,#ffedbb,transparent);transform-origin:left center;animation:tw-special-ray 1.7s ease-out both;transform:rotate(var(--ray));}
@keyframes tw-special-title {0%{opacity:0;transform:translate(-50%,-50%) scale(.6) rotate(-3deg);}18%,82%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0);}100%{opacity:0;transform:translate(-50%,-60%) scale(1.04);}}
@keyframes tw-special-ray {0%{opacity:0;transform:rotate(var(--ray)) scaleX(.2);}30%{opacity:.8;transform:rotate(var(--ray)) scaleX(1.4);}100%{opacity:0;transform:rotate(var(--ray)) scaleX(2);}}
@keyframes tw-special-card {0%{transform:rotateY(90deg) scale(.8);filter:brightness(1.5);}70%{transform:rotateY(0) scale(1.07);}100%{transform:rotateY(0) scale(1);filter:brightness(1);}}
.tw-scene .tw-reveal-row.is-active:not(.is-hidden) .playing-card {animation:none;}
.tw-scene .tw-showdown[data-effect="row"] .tw-reveal-row.is-active .playing-card {animation:tw-flip .3s calc(var(--fan-order)*30ms) both;}
.tw-scene .tw-showdown[data-effect="announce"] .tw-reveal-row.is-speaking .tw-row-name {color:#ffe2a0;text-shadow:0 0 8px #dabc6466;}
@media (max-width:359px){.tw-scene .tw-shot-gun{width:64px;height:38px;}.tw-special-showcase{min-width:150px;padding:12px 20px;}}
@media (prefers-reduced-motion:reduce){.game-feel-layer{display:none!important;}.tw-special-showcase,.tw-special-ray,.tw-shot-gun,.tw-shot-casing{animation:none!important;}.tw-special-showcase{opacity:1;}.tw-shot-gun{opacity:1;}}
.reduce-motion .game-feel-layer {display:none!important;}.reduce-motion .tw-special-showcase,.reduce-motion .tw-shot-gun {opacity:1;}

.tw-scene .tw-shot-tracer { animation-duration:.19s; }
.reduce-motion .tw-shot-hole { opacity:1; transform:scale(1); }
@media (prefers-reduced-motion:reduce){.tw-shot-hole{opacity:1;transform:scale(1);}}

.game-deck-back {width:25px;height:34px;margin:-17px -12px;display:grid;place-items:center;border:2px solid #ddc990;border-radius:3px;background:repeating-linear-gradient(45deg,#284f49 0 2px,#193e3a 2px 4px);color:#dace9d;box-shadow:2px 2px 0 #c4bea0,4px 4px 0 #173d35;animation:game-deck 1.6s both;}
.game-all-in-ring {width:72px;height:72px;margin:-36px;border:2px solid #f6cd77;border-radius:50%;box-shadow:0 0 15px #dd6f3655,inset 0 0 15px #dd6f3622;animation:game-all-in-ring 1s ease-out both;}
@keyframes game-deck {0%{opacity:0;transform:scale(.8);}10%,75%{opacity:1;transform:scale(1);}100%{opacity:0;transform:scale(.85);}}
@keyframes game-all-in-ring {0%{opacity:0;transform:scale(.65);}18%{opacity:1;transform:scale(1);}65%{opacity:.7;transform:scale(1.25);}100%{opacity:0;transform:scale(1.55);}}

.winner-coins-layer { position:fixed;inset:0;z-index:85;overflow:hidden;pointer-events:none;contain:layout paint; }
.winner-flying-coin { position:absolute;width:22px;height:22px;margin:-11px;border:2px solid #ffe8a4;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 32% 26%,#fff0ac,#eeb646 48%,#a86612);color:#906011;font:700 12px/1 system-ui;box-shadow:inset 0 0 0 2px #f2c467,0 3px 8px #0007;animation:winner-coin-flight 950ms cubic-bezier(.2,.65,.3,1) var(--coin-delay) both; }
@keyframes winner-coin-flight { 0%{opacity:0;transform:translate(0,0) scale(.6);}12%{opacity:1;}45%{opacity:1;transform:translate(calc(var(--dx)*.45),calc(var(--dy)*.45 - var(--arc))) scale(1.1) rotate(150deg);}87%{opacity:1;transform:translate(var(--dx),var(--dy)) scale(.75) rotate(320deg);}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.4) rotate(360deg);} }
.reduce-motion .winner-coins-layer{display:none;}
@media (prefers-reduced-motion:reduce){.winner-coins-layer{display:none;}}
