/* glossary-animations.css — Estilos de las 25 animaciones de Sprint 2B */
/* Extraído del prototipo monolítico, limpieza correcta de selectores demo */

:root{
  --primary:#6ECFF0; --accent:#1481C0; --deep:#002E67;
  --primary-rgb:110,207,240; --accent-rgb:20,129,192;
  --bg:#121212; --bg-2:#0d0d0d;
  --text:#e0f7fa; --text-soft:#b3c5cc; --muted:#9fb3bc;
  --line:rgba(var(--primary-rgb),.12);
  --shadow-1:0 8px 28px rgba(0,0,0,.45);
  --t:.22s ease;
  --font-display:'Bebas Neue',sans-serif;
  --font-body:'Montserrat',system-ui,-apple-system,sans-serif;
  --font-card:'Inter',system-ui,-apple-system,sans-serif;
  --felt-1:#0c5034; --felt-2:#062418;
  --felt-rim:rgba(var(--primary-rgb),.22);
  --suit-s:#1a1a1a; --suit-h:#d32f2f; --suit-d:#1565c0; --suit-c:#2e7d32;
  --card-face:#ffffff;
  --card-back-1:#1481C0; --card-back-2:#002E67;
}

*{box-sizing:border-box}
html{height:100%;margin:0}

/* ============================================================
   STAGE — base
   ============================================================ */
.ga-stage{
  position:relative;
  width:100%;
  aspect-ratio: 1.9 / 1;
  min-height:340px;
  border-radius:18px;
  overflow:hidden;
  background:
    radial-gradient(ellipse 60% 80% at 30% 18%, rgba(var(--primary-rgb),.14), transparent 50%),
    radial-gradient(ellipse 50% 60% at 78% 82%, rgba(var(--accent-rgb),.10), transparent 50%),
    linear-gradient(180deg,#0c1320 0%,#070b14 100%);
  border:1px solid rgba(var(--primary-rgb),.10);
  cursor:pointer;
  user-select:none;
  -webkit-user-select:none;
  -webkit-touch-callout:none;
}

.ga-felt{
  position:absolute;
  inset:8% 6%;
  border-radius:50%;
  background:radial-gradient(ellipse at center, var(--felt-1) 0%, var(--felt-2) 78%);
  border:8px solid #18120b;
  box-shadow:
    inset 0 0 35px rgba(0,0,0,.6),
    inset 0 0 0 2px var(--felt-rim),
    0 8px 22px rgba(0,0,0,.55);
}
.ga-felt::after{
  content:""; position:absolute; inset:18px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.05);
  pointer-events:none;
}

.ga-logo{
  position:absolute;
  left:50%; top:50%;
  transform:translate(-50%,-50%);
  font-family:var(--font-display);
  font-size:clamp(3.6rem, 8vw, 5.5rem);
  letter-spacing:.32em;
  text-indent:.32em;
  line-height:.9;
  color:rgba(var(--primary-rgb),.22);
  pointer-events:none;
  text-align:center;
  user-select:none;
  z-index:1;
  width:100%;
}
.ga-logo small{
  display:block;
  font-family:var(--font-body);
  font-size:.78rem;
  font-weight:800;
  letter-spacing:.55em;
  text-indent:.55em;
  color:rgba(var(--primary-rgb),.28);
  margin-top:.55rem;
}

.ga-pot{
  position:absolute;
  left:50%; top:28%;
  transform:translate(-50%,-50%);
  padding:.32rem .85rem;
  border-radius:6px;
  background:linear-gradient(180deg, rgba(0,46,103,.85) 0%, rgba(7,11,20,.92) 100%);
  border:1px solid rgba(var(--primary-rgb),.45);
  box-shadow:
    0 4px 10px rgba(0,0,0,.55),
    inset 0 1px 0 rgba(var(--primary-rgb),.18),
    0 0 18px rgba(var(--primary-rgb),.12);
  font-family:var(--font-body);
  font-size:.62rem;
  font-weight:800;
  color:var(--primary);
  letter-spacing:.06em;
  white-space:nowrap;
  text-shadow:0 0 8px rgba(var(--primary-rgb),.4);
  z-index:3;
}
/* Cuando hay múltiples pots (sistema dinámico): escondidos por default, animados via data-step */
.ga-pot[data-step]{
  opacity:0;
}

/* ============================================================
   POT-CHIPS — stack visual del pot acumulado
   Multicolor, máximo 5 chips, posición unificada en preflop y postflop (top:65%)
   ============================================================ */
.ga-pot-chips{
  position:absolute;
  left:50%;
  top:65%;
  transform:translate(-50%,-50%);
  width:30px;
  height:30px;
  pointer-events:none;
  z-index:2;
  opacity:0;
}

/* Label numérico del pot consolidado (a la derecha del stack) */
.ga-pot-chips-label{
  position:absolute;
  left:24px;
  top:50%;
  transform:translateY(-50%);
  font-family:var(--font-body);
  font-size:.62rem;
  font-weight:800;
  color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.95), 0 0 4px rgba(0,0,0,.7);
  white-space:nowrap;
  letter-spacing:.02em;
  pointer-events:none;
}
.ga-pot-chips-label[data-step]{
  opacity:0;
  position:absolute;
  left:24px;
  top:50%;
  transform:translateY(-50%);
}

/* Cbet: label cambia de "1 BB" a "6.5 BB" al cerrar preflop (50% del loop) */
.ga-stage[data-animation="cbet"] .ga-pot-chips-label[data-step="0"]{
  animation:ga-pot-chips-label-cbet-s0 7s ease infinite;
}
.ga-stage[data-animation="cbet"] .ga-pot-chips-label[data-step="1"]{
  animation:ga-pot-chips-label-cbet-s1 7s ease infinite;
}
@keyframes ga-pot-chips-label-cbet-s0{
  0%, 48%   { opacity:1; }
  52%, 100% { opacity:0; }
}
@keyframes ga-pot-chips-label-cbet-s1{
  0%, 48%   { opacity:0; }
  54%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}

/* Delayed cbet: label cambia al flop (45-52%) */
.ga-stage[data-animation="delayed-cbet"] .ga-pot-chips-label[data-step="0"]{
  animation:ga-pot-chips-label-dcbet-s0 8s ease infinite;
}
.ga-stage[data-animation="delayed-cbet"] .ga-pot-chips-label[data-step="1"]{
  animation:ga-pot-chips-label-dcbet-s1 8s ease infinite;
}
@keyframes ga-pot-chips-label-dcbet-s0{
  0%, 45%   { opacity:1; }
  50%, 100% { opacity:0; }
}
@keyframes ga-pot-chips-label-dcbet-s1{
  0%, 45%   { opacity:0; }
  52%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}

.ga-pot-chips .ga-chip{
  position:absolute;
  left:0;
  width:18px;
  height:18px;
  border-radius:50%;
  background:
    conic-gradient(
      from 0deg,
      var(--chip-edge) 0deg 22.5deg, #fff 22.5deg 45deg,
      var(--chip-edge) 45deg 67.5deg, #fff 67.5deg 90deg,
      var(--chip-edge) 90deg 112.5deg, #fff 112.5deg 135deg,
      var(--chip-edge) 135deg 157.5deg, #fff 157.5deg 180deg,
      var(--chip-edge) 180deg 202.5deg, #fff 202.5deg 225deg,
      var(--chip-edge) 225deg 247.5deg, #fff 247.5deg 270deg,
      var(--chip-edge) 270deg 292.5deg, #fff 292.5deg 315deg,
      var(--chip-edge) 315deg 337.5deg, #fff 337.5deg 360deg
    );
  box-shadow:
    0 2px 3px rgba(0,0,0,.55),
    inset 0 -1px 2px rgba(0,0,0,.3),
    inset 0 1px 1px rgba(255,255,255,.25);
}
.ga-pot-chips .ga-chip::before{
  content:""; position:absolute; inset:3px; border-radius:50%;
  background:var(--chip-ring);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.3);
}
.ga-pot-chips .ga-chip::after{
  content:""; position:absolute; inset:5.5px; border-radius:50%;
  background:radial-gradient(circle at 35% 30%, var(--chip-core-light), var(--chip-core) 70%);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.3), inset 0 -1px 1px rgba(0,0,0,.4);
}
/* Multicolor: 5 colores distintos */
.ga-pot-chips .ga-chip:nth-child(1){
  --chip-edge:#c9a75a; --chip-ring:#fff; --chip-core:#9c7d34; --chip-core-light:#e6c97a;
  top:0;
}
.ga-pot-chips .ga-chip:nth-child(2){
  --chip-edge:#1481c0; --chip-ring:#fff; --chip-core:#0d5589; --chip-core-light:#42a5f5;
  top:-2px;
}
.ga-pot-chips .ga-chip:nth-child(3){
  --chip-edge:#c41e3a; --chip-ring:#f0e9d4; --chip-core:#9a1730; --chip-core-light:#e54860;
  top:-4px;
}
.ga-pot-chips .ga-chip:nth-child(4){
  --chip-edge:#2e7d32; --chip-ring:#fff; --chip-core:#1b5e20; --chip-core-light:#66bb6a;
  top:-6px;
}
.ga-pot-chips .ga-chip:nth-child(5){
  --chip-edge:#212121; --chip-ring:#f7d046; --chip-core:#0a0a0a; --chip-core-light:#3a3a3a;
  top:-8px;
}

/* Cada chip data-show-from aparece en su step */
.ga-pot-chips .ga-chip[data-show-from]{ opacity:0; }
/* ============================================================
   POT-CHIPS — visibilidad progresiva
   Los chips aparecen acumulándose. Cada chip data-show-from="N" aparece en el step N.
   Para mantener consistencia con los pots textuales, el container .ga-pot-chips se hace visible
   en step 0 (loop completo), y cada chip individual se hace visible cuando llega su step.
   ============================================================ */

/* Container visible durante todo el loop (excepto pequeño fade al final) */
.ga-stage[data-animation="open"] .ga-pot-chips, .ga-stage[data-animation="limp"] .ga-pot-chips, .ga-stage[data-animation="limp-raise"] .ga-pot-chips, .ga-stage[data-animation="cold-call"] .ga-pot-chips, .ga-stage[data-animation="cbet"] .ga-pot-chips, .ga-stage[data-animation="delayed-cbet"] .ga-pot-chips, .ga-stage[data-animation="squeeze"] .ga-pot-chips, .ga-stage[data-animation="fold"] .ga-pot-chips, .ga-stage[data-animation="double-barrel"] .ga-pot-chips, .ga-stage[data-animation="donk-bet"] .ga-pot-chips, .ga-stage[data-animation="bluff-value"] .ga-pot-chips, .ga-stage[data-animation="slowplay"] .ga-pot-chips{
  opacity:1;
}

/* === Keyframes de chips individuales por step (aparece y se queda) === */
/* Loop 5s */
@keyframes ga-pot-chip-5s-step1{
  0%, 18%   { opacity:0; }
  22%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}
/* Loop 6s */
@keyframes ga-pot-chip-6s-step1{
  0%, 32%   { opacity:0; }
  38%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}
@keyframes ga-pot-chip-6s-step2{
  0%, 42%   { opacity:0; }
  48%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}
@keyframes ga-pot-chip-6s-step3{
  0%, 65%   { opacity:0; }
  72%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}
/* Loop 7s */
@keyframes ga-pot-chip-7s-step1{
  0%, 17%   { opacity:0; }
  22%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}
@keyframes ga-pot-chip-7s-step2{
  0%, 36%   { opacity:0; }
  42%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}
@keyframes ga-pot-chip-7s-step3{
  0%, 65%   { opacity:0; }
  72%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}
/* Loop 8s */
@keyframes ga-pot-chip-8s-step1{
  0%, 16%   { opacity:0; }
  22%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}
@keyframes ga-pot-chip-8s-step2{
  0%, 34%   { opacity:0; }
  40%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}
@keyframes ga-pot-chip-8s-step3{
  0%, 75%   { opacity:0; }
  80%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}

/* Aplicación: por animación, los chips data-show-from="N" reciben el keyframe correspondiente */
/* Open / Steal / Iso-raise (5s) */
.ga-stage[data-animation="open"] .ga-pot-chips .ga-chip[data-show-from="1"]{ animation:ga-pot-chip-5s-step1 5s ease infinite; }
/* Limp (5s) */
.ga-stage[data-animation="limp"] .ga-pot-chips .ga-chip[data-show-from="1"]{ animation:ga-pot-chip-5s-step1 5s ease infinite; }
/* Limp-raise (6s) */
.ga-stage[data-animation="limp-raise"] .ga-pot-chips .ga-chip[data-show-from="1"]{ animation:ga-pot-chip-6s-step1 6s ease infinite; }
.ga-stage[data-animation="limp-raise"] .ga-pot-chips .ga-chip[data-show-from="2"]{ animation:ga-pot-chip-6s-step2 6s ease infinite; }
.ga-stage[data-animation="limp-raise"] .ga-pot-chips .ga-chip[data-show-from="3"]{ animation:ga-pot-chip-6s-step3 6s ease infinite; }
/* Cold-call (5s default, 6s para BB defense) */
.ga-stage[data-animation="cold-call"]:not([data-hero="7"]) .ga-pot-chips .ga-chip[data-show-from="1"]{ animation:ga-pot-chip-5s-step1 5s ease infinite; }
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-pot-chips .ga-chip[data-show-from="1"]{ animation:ga-pot-chip-6s-step1 6s ease infinite; }
/* C-bet (7s) */
.ga-stage[data-animation="cbet"] .ga-pot-chips .ga-chip[data-show-from="1"]{ animation:ga-pot-chip-7s-step1 7s ease infinite; }
.ga-stage[data-animation="cbet"] .ga-pot-chips .ga-chip[data-show-from="2"]{ animation:ga-pot-chip-7s-step2 7s ease infinite; }
.ga-stage[data-animation="cbet"] .ga-pot-chips .ga-chip[data-show-from="3"]{ animation:ga-pot-chip-7s-step3 7s ease infinite; }
/* Delayed c-bet (8s) */
.ga-stage[data-animation="delayed-cbet"] .ga-pot-chips .ga-chip[data-show-from="1"]{ animation:ga-pot-chip-8s-step1 8s ease infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-pot-chips .ga-chip[data-show-from="2"]{ animation:ga-pot-chip-8s-step2 8s ease infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-pot-chips .ga-chip[data-show-from="3"]{ animation:ga-pot-chip-8s-step3 8s ease infinite; }
/* Squeeze (7s) */
.ga-stage[data-animation="squeeze"] .ga-pot-chips .ga-chip[data-show-from="1"]{ animation:ga-pot-chip-7s-step1 7s ease infinite; }
.ga-stage[data-animation="squeeze"] .ga-pot-chips .ga-chip[data-show-from="2"]{ animation:ga-pot-chip-7s-step2 7s ease infinite; }
.ga-stage[data-animation="squeeze"] .ga-pot-chips .ga-chip[data-show-from="3"]{ animation:ga-pot-chip-7s-step3 7s ease infinite; }

/* Tanda 3 — Double Barrel (8s) */
.ga-stage[data-animation="double-barrel"] .ga-pot-chips .ga-chip[data-show-from="1"]{ animation:ga-pot-chip-8s-step1 8s ease infinite; }
.ga-stage[data-animation="double-barrel"] .ga-pot-chips .ga-chip[data-show-from="2"]{ animation:ga-pot-chip-8s-step2 8s ease infinite; }
.ga-stage[data-animation="double-barrel"] .ga-pot-chips .ga-chip[data-show-from="3"]{ animation:ga-pot-chip-8s-step3 8s ease infinite; }

/* Tanda 3 — Donk Bet (7s) */
.ga-stage[data-animation="donk-bet"] .ga-pot-chips .ga-chip[data-show-from="1"]{ animation:ga-pot-chip-7s-step1 7s ease infinite; }
.ga-stage[data-animation="donk-bet"] .ga-pot-chips .ga-chip[data-show-from="2"]{ animation:ga-pot-chip-7s-step2 7s ease infinite; }
.ga-stage[data-animation="donk-bet"] .ga-pot-chips .ga-chip[data-show-from="3"]{ animation:ga-pot-chip-7s-step3 7s ease infinite; }

/* Tanda 3 — Bluff vs Value y Slowplay no tienen chips condicionados (todos siempre visibles) */

/* Pot-chips se reposiciona en preflop (sin board) para que no choque con la pot textual de arriba */
/* Default: top:55% en center está bien para la mayoría. Para preflop está OK porque pot textual está en 28%. */

/* ============================================================
   CARTAS
   ============================================================ */
.ga-card{
  width:32px; height:46px;
  border-radius:5px;
  background:var(--card-face);
  border:1px solid rgba(0,0,0,.18);
  box-shadow:
    0 2px 5px rgba(0,0,0,.45),
    inset 0 0 0 1px rgba(255,255,255,.7);
  position:relative;
  font-family:var(--font-card);
  font-weight:900;
  color:var(--suit-s);
  overflow:hidden;
}
.ga-card-suit{
  position:absolute;
  left:3px; top:2px;
  font-size:.55rem;
  line-height:1;
  font-weight:900;
}
.ga-card-rank{
  position:absolute;
  left:50%; top:52%;
  transform:translate(-50%,-50%);
  font-size:1.65rem;
  font-weight:900;
  letter-spacing:-.06em;
  line-height:1;
}
.ga-card[data-suit="s"]{ color:var(--suit-s); }
.ga-card[data-suit="h"]{ color:var(--suit-h); background:#fce4e4; }
.ga-card[data-suit="d"]{ color:var(--suit-d); background:#e8f0fa; }
.ga-card[data-suit="c"]{ color:var(--suit-c); background:#e8f5e9; }

.ga-card.is-back{
  background:
    repeating-linear-gradient(45deg,
      var(--card-back-1) 0 4px,
      var(--card-back-2) 4px 8px);
  border-color:rgba(var(--primary-rgb),.5);
  box-shadow:
    0 2px 5px rgba(0,0,0,.45),
    inset 0 0 0 2px rgba(255,255,255,.15),
    inset 0 0 8px rgba(0,0,0,.4);
}
.ga-card.is-back .ga-card-rank, .ga-card.is-back .ga-card-suit{ display:none; }
.ga-card.is-back::after{
  content:"";
  position:absolute;
  inset:4px;
  border-radius:3px;
  border:1px solid rgba(var(--primary-rgb),.6);
  background:radial-gradient(circle at center, rgba(var(--primary-rgb),.2), transparent 70%);
}

.ga-card.in-seat{
  width:23px; height:32px;
  border-radius:3px;
}
.ga-card.in-seat .ga-card-rank{ font-size:1.05rem; }
.ga-card.in-seat .ga-card-suit{ font-size:.42rem; left:2px; top:1px; }
.ga-card.in-seat.is-back::after{ inset:3px; }

/* ============================================================
   ASIENTOS
   ============================================================ */
.ga-seat{
  position:absolute;
  width:64px; height:64px;
  margin-left:-32px; margin-top:-32px;
  border-radius:50%;
  background:radial-gradient(circle at 30% 30%, #2a384f 0%, #0b1220 80%);
  border:2px solid rgba(var(--primary-rgb),.22);
  box-shadow:0 6px 14px rgba(0,0,0,.5), inset 0 -8px 14px rgba(0,0,0,.35);
  display:grid; place-items:center;
  font-family:var(--font-display);
  font-size:1rem;
  letter-spacing:.04em;
  color:var(--text);
  transition:width .35s ease, height .35s ease, margin .35s ease, opacity .4s ease, border-color .4s ease, box-shadow .4s ease;
  z-index:5;
}
.ga-seat[data-pos="1"]{ left:50%;    top:90%; }
.ga-seat[data-pos="2"]{ left:79.7%;  top:78.3%; }
.ga-seat[data-pos="3"]{ left:92%;    top:50%; }
.ga-seat[data-pos="4"]{ left:79.7%;  top:21.7%; }
.ga-seat[data-pos="5"]{ left:50%;    top:10%; }
.ga-seat[data-pos="6"]{ left:20.3%;  top:21.7%; }
.ga-seat[data-pos="7"]{ left:8%;     top:50%; }
.ga-seat[data-pos="8"]{ left:20.3%;  top:78.3%; }

/* Hero default = pos 1 (BTN) */
.ga-seat[data-pos="1"]{
  background:radial-gradient(circle at 30% 30%, #244162 0%, #0b1726 80%);
  border-color:rgba(var(--primary-rgb),.6);
  color:var(--primary);
  box-shadow:
    0 6px 14px rgba(0,0,0,.5),
    inset 0 -8px 14px rgba(0,0,0,.35),
    0 0 0 2px rgba(var(--primary-rgb),.18);
}
.ga-seat.is-folded{ opacity:.4; filter:saturate(.4); }

.ga-seat.has-cards{
  width:74px; height:74px;
  margin-left:-37px; margin-top:-37px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  padding:5px 4px 3px;
  gap:2px;
  background:radial-gradient(circle at 30% 30%, #244162 0%, #0b1726 80%);
  border-color:rgba(var(--primary-rgb),.6);
  box-shadow:
    0 6px 14px rgba(0,0,0,.5),
    inset 0 -8px 14px rgba(0,0,0,.35),
    0 0 0 2px rgba(var(--primary-rgb),.18);
}
.ga-seat.has-cards:not([data-pos="1"]){
  background:radial-gradient(circle at 30% 30%, #2a384f 0%, #0b1220 80%);
  border-color:rgba(var(--primary-rgb),.22);
  color:var(--text);
  box-shadow:0 6px 14px rgba(0,0,0,.5), inset 0 -8px 14px rgba(0,0,0,.35);
}

.ga-seat.has-cards.is-folded{
  width:64px; height:64px;
  margin-left:-32px; margin-top:-32px;
  padding:0;
  display:grid; place-items:center;
}
.ga-seat.has-cards.is-folded .ga-seat-cards{
  opacity:0;
  pointer-events:none;
  height:0;
  margin:0;
  overflow:hidden;
}
.ga-seat.has-cards.is-folded .ga-seat-label{ margin:0; }

.ga-seat-cards{
  display:flex;
  gap:2px;
  margin-top:1px;
  transition:opacity .3s ease, height .3s ease;
}
.ga-seat-cards .ga-card.in-seat:nth-child(1){ transform:rotate(-4deg); }
.ga-seat-cards .ga-card.in-seat:nth-child(2){ transform:rotate(4deg); margin-left:-2px; }
.ga-seat-label{
  font-family:var(--font-display);
  font-size:.95rem;
  letter-spacing:.05em;
  color:inherit;
  margin-top:auto;
  margin-bottom:1px;
}
.ga-seat[data-pos="1"].has-cards .ga-seat-label{ color:var(--primary); }

/* HERO en otra posición: trasladamos los estilos cyan a la posición que tenga data-hero */
.ga-stage[data-hero="2"] .ga-seat[data-pos="1"]{
  background:radial-gradient(circle at 30% 30%, #2a384f 0%, #0b1220 80%);
  border-color:rgba(var(--primary-rgb),.22);
  color:var(--text);
  box-shadow:0 6px 14px rgba(0,0,0,.5), inset 0 -8px 14px rgba(0,0,0,.35);
}
.ga-stage[data-hero="2"] .ga-seat[data-pos="2"]{
  background:radial-gradient(circle at 30% 30%, #244162 0%, #0b1726 80%);
  border-color:rgba(var(--primary-rgb),.6);
  color:var(--primary);
  box-shadow:
    0 6px 14px rgba(0,0,0,.5),
    inset 0 -8px 14px rgba(0,0,0,.35),
    0 0 0 2px rgba(var(--primary-rgb),.18);
}
.ga-stage[data-hero="2"] .ga-seat[data-pos="2"].has-cards .ga-seat-label{ color:var(--primary); }
.ga-stage[data-hero="2"] .ga-seat[data-pos="2"].has-cards{
  background:radial-gradient(circle at 30% 30%, #244162 0%, #0b1726 80%);
  border-color:rgba(var(--primary-rgb),.6);
  box-shadow:
    0 6px 14px rgba(0,0,0,.5),
    inset 0 -8px 14px rgba(0,0,0,.35),
    0 0 0 2px rgba(var(--primary-rgb),.18);
}
/* Hero=4 (MP) */
.ga-stage[data-hero="4"] .ga-seat[data-pos="1"]{
  background:radial-gradient(circle at 30% 30%, #2a384f 0%, #0b1220 80%);
  border-color:rgba(var(--primary-rgb),.22);
  color:var(--text);
  box-shadow:0 6px 14px rgba(0,0,0,.5), inset 0 -8px 14px rgba(0,0,0,.35);
}
.ga-stage[data-hero="4"] .ga-seat[data-pos="4"]{
  background:radial-gradient(circle at 30% 30%, #244162 0%, #0b1726 80%);
  border-color:rgba(var(--primary-rgb),.6);
  color:var(--primary);
  box-shadow:
    0 6px 14px rgba(0,0,0,.5),
    inset 0 -8px 14px rgba(0,0,0,.35),
    0 0 0 2px rgba(var(--primary-rgb),.18);
}
.ga-stage[data-hero="4"] .ga-seat[data-pos="4"].has-cards{
  background:radial-gradient(circle at 30% 30%, #244162 0%, #0b1726 80%);
  border-color:rgba(var(--primary-rgb),.6);
  box-shadow:
    0 6px 14px rgba(0,0,0,.5),
    inset 0 -8px 14px rgba(0,0,0,.35),
    0 0 0 2px rgba(var(--primary-rgb),.18);
}
.ga-stage[data-hero="4"] .ga-seat[data-pos="4"].has-cards .ga-seat-label{ color:var(--primary); }
/* Hero=7 (BB) */
.ga-stage[data-hero="7"] .ga-seat[data-pos="1"]{
  background:radial-gradient(circle at 30% 30%, #2a384f 0%, #0b1220 80%);
  border-color:rgba(var(--primary-rgb),.22);
  color:var(--text);
  box-shadow:0 6px 14px rgba(0,0,0,.5), inset 0 -8px 14px rgba(0,0,0,.35);
}
.ga-stage[data-hero="7"] .ga-seat[data-pos="7"]{
  background:radial-gradient(circle at 30% 30%, #244162 0%, #0b1726 80%);
  border-color:rgba(var(--primary-rgb),.6);
  color:var(--primary);
  box-shadow:
    0 6px 14px rgba(0,0,0,.5),
    inset 0 -8px 14px rgba(0,0,0,.35),
    0 0 0 2px rgba(var(--primary-rgb),.18);
}
.ga-stage[data-hero="7"] .ga-seat[data-pos="7"].has-cards{
  background:radial-gradient(circle at 30% 30%, #244162 0%, #0b1726 80%);
  border-color:rgba(var(--primary-rgb),.6);
  box-shadow:
    0 6px 14px rgba(0,0,0,.5),
    inset 0 -8px 14px rgba(0,0,0,.35),
    0 0 0 2px rgba(var(--primary-rgb),.18);
}
.ga-stage[data-hero="7"] .ga-seat[data-pos="7"].has-cards .ga-seat-label{ color:var(--primary); }

/* Dealer button */
.ga-button{
  position:absolute;
  left:38%; top:84%;
  width:24px; height:24px;
  margin-left:-12px; margin-top:-12px;
  border-radius:50%;
  background:
    conic-gradient(
      from 0deg,
      var(--primary) 0deg 22.5deg, #fff 22.5deg 45deg,
      var(--primary) 45deg 67.5deg, #fff 67.5deg 90deg,
      var(--primary) 90deg 112.5deg, #fff 112.5deg 135deg,
      var(--primary) 135deg 157.5deg, #fff 157.5deg 180deg,
      var(--primary) 180deg 202.5deg, #fff 202.5deg 225deg,
      var(--primary) 225deg 247.5deg, #fff 247.5deg 270deg,
      var(--primary) 270deg 292.5deg, #fff 292.5deg 315deg,
      var(--primary) 315deg 337.5deg, #fff 337.5deg 360deg
    );
  box-shadow:
    0 3px 6px rgba(0,0,0,.6),
    0 0 12px rgba(var(--primary-rgb),.4),
    inset 0 -1px 2px rgba(0,0,0,.3),
    inset 0 1px 1px rgba(255,255,255,.3);
  z-index:6;
}
.ga-button::before{
  content:"";
  position:absolute;
  inset:3px;
  border-radius:50%;
  background:var(--deep);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.5);
}
.ga-button::after{
  content:"D";
  position:absolute;
  inset:6px;
  border-radius:50%;
  background:radial-gradient(circle at 35% 30%, #1e3a5f, #0a1a2e);
  display:grid; place-items:center;
  font-family:var(--font-display);
  font-size:.7rem;
  font-weight:900;
  color:var(--primary);
  text-shadow:0 0 4px rgba(var(--primary-rgb),.6);
  letter-spacing:.02em;
}

/* ============================================================
   FICHAS
   ============================================================ */
.ga-stack{
  position:absolute;
  width:18px; height:18px;
  margin-left:-9px; margin-top:-9px;
  display:none;
  z-index:6;
}
.ga-stack[data-from="1"]{ left:50%;    top:73%; }
.ga-stack[data-from="2"]{ left:70.8%;  top:69.8%; }
.ga-stack[data-from="3"]{ left:79.4%;  top:50%; }
.ga-stack[data-from="4"]{ left:70.8%;  top:30.2%; }
.ga-stack[data-from="5"]{ left:50%;    top:22%; }
.ga-stack[data-from="6"]{ left:29.2%;  top:30.2%; }
.ga-stack[data-from="7"]{ left:20.6%;  top:50%; }
.ga-stack[data-from="8"]{ left:29.2%;  top:69.8%; }

.ga-chip{
  position:absolute;
  left:0; top:0;
  width:18px; height:18px;
  border-radius:50%;
  background:
    conic-gradient(
      from 0deg,
      var(--chip-edge) 0deg 22.5deg, #fff 22.5deg 45deg,
      var(--chip-edge) 45deg 67.5deg, #fff 67.5deg 90deg,
      var(--chip-edge) 90deg 112.5deg, #fff 112.5deg 135deg,
      var(--chip-edge) 135deg 157.5deg, #fff 157.5deg 180deg,
      var(--chip-edge) 180deg 202.5deg, #fff 202.5deg 225deg,
      var(--chip-edge) 225deg 247.5deg, #fff 247.5deg 270deg,
      var(--chip-edge) 270deg 292.5deg, #fff 292.5deg 315deg,
      var(--chip-edge) 315deg 337.5deg, #fff 337.5deg 360deg
    );
  box-shadow:
    0 2px 3px rgba(0,0,0,.55),
    inset 0 -1px 2px rgba(0,0,0,.3),
    inset 0 1px 1px rgba(255,255,255,.25);
}
.ga-chip::before{
  content:""; position:absolute; inset:3px; border-radius:50%;
  background:var(--chip-ring);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.3);
}
.ga-chip::after{
  content:""; position:absolute; inset:5.5px; border-radius:50%;
  background:radial-gradient(circle at 35% 30%, var(--chip-core-light), var(--chip-core) 70%);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.3), inset 0 -1px 1px rgba(0,0,0,.4);
}
.ga-chip:nth-child(1){ top:5px; }
.ga-chip:nth-child(2){ top:3px; }
.ga-chip:nth-child(3){ top:1px; }
.ga-chip:nth-child(4){ top:-1px; }
.ga-chip:nth-child(5){ top:-3px; }
.ga-chip:nth-child(6){ top:-5px; }
.ga-chip:nth-child(7){ top:-7px; }
.ga-chip:nth-child(8){ top:-9px; }
.ga-chip:nth-child(9){ top:-11px; }
.ga-chip:nth-child(10){ top:-13px; }

.ga-stack[data-from="1"] .ga-chip{ --chip-edge:#c41e3a; --chip-ring:#f7d046; --chip-core:#a01730; --chip-core-light:#e54860; }
.ga-stack[data-from="2"] .ga-chip{ --chip-edge:#1a1a1a; --chip-ring:#f7d046; --chip-core:#0a0a0a; --chip-core-light:#3a3a3a; }
.ga-stack[data-from="3"] .ga-chip{ --chip-edge:#2e7d32; --chip-ring:#f0e9d4; --chip-core:#1b5e20; --chip-core-light:#4caf50; }
.ga-stack[data-from="4"] .ga-chip{ --chip-edge:#6a1b9a; --chip-ring:#e0e0e0; --chip-core:#4a148c; --chip-core-light:#8e24aa; }
.ga-stack[data-from="5"] .ga-chip{ --chip-edge:#f9a825; --chip-ring:#1a1a1a; --chip-core:#d68910; --chip-core-light:#ffd54f; }
.ga-stack[data-from="6"] .ga-chip{ --chip-edge:#1976d2; --chip-ring:#f7d046; --chip-core:#0d47a1; --chip-core-light:#42a5f5; }
.ga-stack[data-from="7"] .ga-chip{ --chip-edge:#ef6c00; --chip-ring:#f0e9d4; --chip-core:#bf360c; --chip-core-light:#ff9800; }
.ga-stack[data-from="8"] .ga-chip{ --chip-edge:#d81b60; --chip-ring:#e0e0e0; --chip-core:#ad1457; --chip-core-light:#ec407a; }

/* data-match-color: cuando dos jugadores meten el mismo VALOR (call), los chips deben ser del mismo color */
.ga-stack[data-match-color="1"] .ga-chip{ --chip-edge:#c41e3a !important; --chip-ring:#f7d046 !important; --chip-core:#a01730 !important; --chip-core-light:#e54860 !important; }
.ga-stack[data-match-color="2"] .ga-chip{ --chip-edge:#1a1a1a !important; --chip-ring:#f7d046 !important; --chip-core:#0a0a0a !important; --chip-core-light:#3a3a3a !important; }
.ga-stack[data-match-color="3"] .ga-chip{ --chip-edge:#2e7d32 !important; --chip-ring:#f0e9d4 !important; --chip-core:#1b5e20 !important; --chip-core-light:#4caf50 !important; }
.ga-stack[data-match-color="4"] .ga-chip{ --chip-edge:#6a1b9a !important; --chip-ring:#e0e0e0 !important; --chip-core:#4a148c !important; --chip-core-light:#8e24aa !important; }
.ga-stack[data-match-color="5"] .ga-chip{ --chip-edge:#f9a825 !important; --chip-ring:#1a1a1a !important; --chip-core:#d68910 !important; --chip-core-light:#ffd54f !important; }
.ga-stack[data-match-color="6"] .ga-chip{ --chip-edge:#1976d2 !important; --chip-ring:#f7d046 !important; --chip-core:#0d47a1 !important; --chip-core-light:#42a5f5 !important; }
.ga-stack[data-match-color="7"] .ga-chip{ --chip-edge:#ef6c00 !important; --chip-ring:#f0e9d4 !important; --chip-core:#bf360c !important; --chip-core-light:#ff9800 !important; }
.ga-stack[data-match-color="8"] .ga-chip{ --chip-edge:#d81b60 !important; --chip-ring:#e0e0e0 !important; --chip-core:#ad1457 !important; --chip-core-light:#ec407a !important; }

.ga-stack-label{
  position:absolute;
  left:50%; bottom:-14px;
  transform:translateX(-50%);
  font-family:var(--font-body);
  font-size:.55rem;
  font-weight:800;
  color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.95), 0 0 4px rgba(0,0,0,.7);
  white-space:nowrap;
  pointer-events:none;
  letter-spacing:.02em;
}

/* ============================================================
   BADGES
   ============================================================ */

/* ============================================================
   ANIMACIÓN: FOLD (corregida con 7♣ 2♦)
   Estado:
   - UTG, UTG+1, MP, HJ, CO con cartas back, foldean en cascada al inicio (5-25%)
   - Hero en BTN con 7♣ 2♦, foldea después (32-78%)
   - SB y BB con cartas back (no actúan dentro del scope)
   ============================================================ */
.ga-stage[data-animation="fold"] .ga-stack[data-from="7"]{ display:block; }
.ga-stage[data-animation="fold"] .ga-stack[data-from="8"]{ display:block; }

/* Cascada PRE: UTG → UTG+1 → MP → HJ → CO foldean (5-25%) */
.ga-stage[data-animation="fold"] .ga-seat[data-pos="6"]{
  animation:ga-fold-pre-cascade 5s ease 0s infinite;
}
.ga-stage[data-animation="fold"] .ga-seat[data-pos="5"]{
  animation:ga-fold-pre-cascade 5s ease .08s infinite;
}
.ga-stage[data-animation="fold"] .ga-seat[data-pos="4"]{
  animation:ga-fold-pre-cascade 5s ease .16s infinite;
}
.ga-stage[data-animation="fold"] .ga-seat[data-pos="3"]{
  animation:ga-fold-pre-cascade 5s ease .24s infinite;
}
.ga-stage[data-animation="fold"] .ga-seat[data-pos="2"]{
  animation:ga-fold-pre-cascade 5s ease .32s infinite;
}
.ga-stage[data-animation="fold"] .ga-seat[data-pos="6"] .ga-seat-cards{
  animation:ga-fold-pre-cards-fade 5s ease 0s infinite;
}
.ga-stage[data-animation="fold"] .ga-seat[data-pos="5"] .ga-seat-cards{
  animation:ga-fold-pre-cards-fade 5s ease .08s infinite;
}
.ga-stage[data-animation="fold"] .ga-seat[data-pos="4"] .ga-seat-cards{
  animation:ga-fold-pre-cards-fade 5s ease .16s infinite;
}
.ga-stage[data-animation="fold"] .ga-seat[data-pos="3"] .ga-seat-cards{
  animation:ga-fold-pre-cards-fade 5s ease .24s infinite;
}
.ga-stage[data-animation="fold"] .ga-seat[data-pos="2"] .ga-seat-cards{
  animation:ga-fold-pre-cards-fade 5s ease .32s infinite;
}

.ga-stage[data-animation="fold"] .ga-seat[data-pos="1"] .ga-seat-cards .ga-card:nth-child(1){
  animation:ga-fold-card-1 5s ease infinite;
  transform-origin:center;
}
.ga-stage[data-animation="fold"] .ga-seat[data-pos="1"] .ga-seat-cards .ga-card:nth-child(2){
  animation:ga-fold-card-2 5s ease infinite;
  transform-origin:center;
}
.ga-stage[data-animation="fold"] .ga-seat[data-pos="1"]{
  animation:ga-seat-fold 5s ease infinite;
}

/* Cascada PRE: cada seat foldea en 5-18% del loop (con delays escalonados) */
@keyframes ga-fold-pre-cascade{
  0%, 5%    {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1;
    filter:saturate(1);
  }
  18%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0;
    opacity:.4;
    filter:saturate(.4);
  }
}
@keyframes ga-fold-pre-cards-fade{
  0%, 5%    { opacity:1; height:auto; }
  18%, 100% { opacity:0; height:0; }
}

@keyframes ga-fold-card-1{
  0%, 32%   { transform:rotate(-4deg) translate(0,0); opacity:1; }
  40%, 50%  { transform:rotate(-6deg) translate(-1px,-4px); opacity:1; }
  60%, 72%  { transform:rotate(-25deg) translate(-22px,-26px) scale(.85); opacity:.7; }
  80%       { transform:rotate(-30deg) translate(-28px,-36px) scale(.7); opacity:0; }
  90%, 100% { transform:rotate(-4deg) translate(0,0); opacity:1; }
}
@keyframes ga-fold-card-2{
  0%, 36%   { transform:rotate(4deg) translate(0,0); opacity:1; }
  44%, 54%  { transform:rotate(6deg) translate(1px,-4px); opacity:1; }
  64%, 76%  { transform:rotate(25deg) translate(24px,-26px) scale(.85); opacity:.7; }
  84%       { transform:rotate(30deg) translate(30px,-36px) scale(.7); opacity:0; }
  90%, 100% { transform:rotate(4deg) translate(0,0); opacity:1; }
}
@keyframes ga-seat-fold{
  0%, 80%   { opacity:1; }
  86%, 95%  { opacity:.45; }
  98%, 100% { opacity:1; }
}

/* ============================================================
   KEYFRAMES GENÉRICOS — cascadas de fold reusables
   Usados por Open, Limp y sus variantes (loop 5s)
   ============================================================ */
/* Pre fold cascade: foldea entre 5-18% (con stagger por animation-delay) */
@keyframes ga-pre-fold{
  0%, 5%    {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1;
    filter:saturate(1);
  }
  18%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0;
    opacity:.4;
    filter:saturate(.4);
  }
}
@keyframes ga-pre-fold-cards{
  0%, 5%    { opacity:1; height:auto; }
  18%, 100% { opacity:0; height:0; }
}
/* Post fold cascade: foldea entre 60-72% */
@keyframes ga-post-fold{
  0%, 60%   {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1;
    filter:saturate(1);
  }
  72%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0;
    opacity:.4;
    filter:saturate(.4);
  }
}
@keyframes ga-post-fold-cards{
  0%, 60%   { opacity:1; height:auto; }
  72%, 100% { opacity:0; height:0; }
}

/* ============================================================
   NUEVA: OPEN — apertura preflop (5s)
   3 escenarios:
   A. Open Raise (data-hero="2"): Hero en CO. Pre cascade UTG→HJ; post cascade BTN/SB/BB.
   B. Steal (sin data-hero, hero=BTN default): Pre cascade UTG→CO; post cascade SB/BB.
   C. Iso-raise (data-hero="2", data-variant="iso-raise"): UTG limpea; pre cascade UTG+1→HJ;
      post cascade UTG (limper foldea), BTN/SB/BB.
   ============================================================ */

/* === Stack de hero según escenario === */
/* A. Open Raise: hero=CO (pos 2) */
.ga-stage[data-animation="open"][data-hero="2"]:not([data-variant]) .ga-stack[data-from="2"]{
  display:block;
  animation:ga-open-hero-stack 5s ease infinite;
}
/* B. Steal: hero=BTN, stack en data-from="1" */
.ga-stage[data-animation="open"]:not([data-hero]) .ga-stack[data-from="1"]{
  display:block;
  animation:ga-open-hero-stack 5s ease infinite;
}
/* C. Iso-raise: hero=CO (pos 2) */
.ga-stage[data-animation="open"][data-hero="2"][data-variant="iso-raise"] .ga-stack[data-from="2"]{
  display:block;
  animation:ga-open-hero-stack 5s ease infinite;
}

.ga-stage[data-animation="open"] .ga-stack[data-from="7"]{ display:block; }
.ga-stage[data-animation="open"] .ga-stack[data-from="8"]{ display:block; }

/* Variante iso-raise: stack de UTG (limper) visible desde el inicio, fade al final */
.ga-stage[data-animation="open"][data-variant="iso-raise"] .ga-stack[data-from="6"]{
  display:block;
  animation:ga-stack-fade-post 5s ease infinite;
}

/* === A. Open Raise (hero=CO): cascadas === */
.ga-stage[data-animation="open"][data-hero="2"]:not([data-variant]) .ga-seat[data-pos="6"]{ animation:ga-pre-fold 5s ease 0s infinite; }
.ga-stage[data-animation="open"][data-hero="2"]:not([data-variant]) .ga-seat[data-pos="5"]{ animation:ga-pre-fold 5s ease .08s infinite; }
.ga-stage[data-animation="open"][data-hero="2"]:not([data-variant]) .ga-seat[data-pos="4"]{ animation:ga-pre-fold 5s ease .16s infinite; }
.ga-stage[data-animation="open"][data-hero="2"]:not([data-variant]) .ga-seat[data-pos="3"]{ animation:ga-pre-fold 5s ease .24s infinite; }
.ga-stage[data-animation="open"][data-hero="2"]:not([data-variant]) .ga-seat[data-pos="6"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease 0s infinite; }
.ga-stage[data-animation="open"][data-hero="2"]:not([data-variant]) .ga-seat[data-pos="5"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease .08s infinite; }
.ga-stage[data-animation="open"][data-hero="2"]:not([data-variant]) .ga-seat[data-pos="4"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease .16s infinite; }
.ga-stage[data-animation="open"][data-hero="2"]:not([data-variant]) .ga-seat[data-pos="3"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease .24s infinite; }

/* === B. Steal (hero=BTN): cascadas === */
.ga-stage[data-animation="open"]:not([data-hero]) .ga-seat[data-pos="6"]{ animation:ga-pre-fold 5s ease 0s infinite; }
.ga-stage[data-animation="open"]:not([data-hero]) .ga-seat[data-pos="5"]{ animation:ga-pre-fold 5s ease .08s infinite; }
.ga-stage[data-animation="open"]:not([data-hero]) .ga-seat[data-pos="4"]{ animation:ga-pre-fold 5s ease .16s infinite; }
.ga-stage[data-animation="open"]:not([data-hero]) .ga-seat[data-pos="3"]{ animation:ga-pre-fold 5s ease .24s infinite; }
.ga-stage[data-animation="open"]:not([data-hero]) .ga-seat[data-pos="2"]{ animation:ga-pre-fold 5s ease .32s infinite; }
.ga-stage[data-animation="open"]:not([data-hero]) .ga-seat[data-pos="6"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease 0s infinite; }
.ga-stage[data-animation="open"]:not([data-hero]) .ga-seat[data-pos="5"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease .08s infinite; }
.ga-stage[data-animation="open"]:not([data-hero]) .ga-seat[data-pos="4"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease .16s infinite; }
.ga-stage[data-animation="open"]:not([data-hero]) .ga-seat[data-pos="3"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease .24s infinite; }
.ga-stage[data-animation="open"]:not([data-hero]) .ga-seat[data-pos="2"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease .32s infinite; }

/* === C. Iso-raise (hero=CO, UTG limpea): cascadas === */
.ga-stage[data-animation="open"][data-hero="2"][data-variant="iso-raise"] .ga-seat[data-pos="5"]{ animation:ga-pre-fold 5s ease 0s infinite; }
.ga-stage[data-animation="open"][data-hero="2"][data-variant="iso-raise"] .ga-seat[data-pos="4"]{ animation:ga-pre-fold 5s ease .08s infinite; }
.ga-stage[data-animation="open"][data-hero="2"][data-variant="iso-raise"] .ga-seat[data-pos="3"]{ animation:ga-pre-fold 5s ease .16s infinite; }
.ga-stage[data-animation="open"][data-hero="2"][data-variant="iso-raise"] .ga-seat[data-pos="5"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease 0s infinite; }
.ga-stage[data-animation="open"][data-hero="2"][data-variant="iso-raise"] .ga-seat[data-pos="4"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease .08s infinite; }
.ga-stage[data-animation="open"][data-hero="2"][data-variant="iso-raise"] .ga-seat[data-pos="3"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease .16s infinite; }

@keyframes ga-open-hero-stack{
  0%, 25%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  35%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  42%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}

/* Stack genérico que se mantiene visible (ya no hay post cascade en simples) */
@keyframes ga-stack-fade-post{
  0%, 100% { opacity:1; }
}

/* ============================================================
   NUEVA: LIMP — entrar pagando solo BB (5s)
   2 escenarios:
   A. Limp (data-hero="4"): Hero en MP. Pre cascade UTG, UTG+1; post HJ, CO, BTN, SB.
   B. Over-limp (data-hero="4", data-variant="over-limp"): UTG limpea (chip visible);
      pre cascade UTG+1; post UTG (limper foldea), HJ, CO, BTN, SB.
   BB no foldea — checkea (no movimiento visible).
   ============================================================ */
.ga-stage[data-animation="limp"] .ga-stack[data-from="4"]{
  display:block;
  animation:ga-limp-hero 5s ease infinite;
}
.ga-stage[data-animation="limp"] .ga-stack[data-from="7"]{ display:block; }
.ga-stage[data-animation="limp"] .ga-stack[data-from="8"]{ display:block; }

/* Variante over-limp: limper previo en UTG, fade al final */
.ga-stage[data-animation="limp"][data-variant="over-limp"] .ga-stack[data-from="6"]{
  display:block;
  animation:ga-stack-fade-post 5s ease infinite;
}

/* === A. Limp base (hero=MP): cascadas === */
.ga-stage[data-animation="limp"][data-hero="4"]:not([data-variant]) .ga-seat[data-pos="6"]{ animation:ga-pre-fold 5s ease 0s infinite; }
.ga-stage[data-animation="limp"][data-hero="4"]:not([data-variant]) .ga-seat[data-pos="5"]{ animation:ga-pre-fold 5s ease .08s infinite; }
.ga-stage[data-animation="limp"][data-hero="4"]:not([data-variant]) .ga-seat[data-pos="6"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease 0s infinite; }
.ga-stage[data-animation="limp"][data-hero="4"]:not([data-variant]) .ga-seat[data-pos="5"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease .08s infinite; }

/* === B. Over-limp (UTG limpea, hero=MP): cascadas === */
.ga-stage[data-animation="limp"][data-variant="over-limp"] .ga-seat[data-pos="5"]{ animation:ga-pre-fold 5s ease 0s infinite; }
.ga-stage[data-animation="limp"][data-variant="over-limp"] .ga-seat[data-pos="5"] .ga-seat-cards{ animation:ga-pre-fold-cards 5s ease 0s infinite; }

@keyframes ga-limp-hero{
  0%, 25%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  35%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  42%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}

/* ============================================================
   NUEVA: LIMP-RAISE — limpear esperando subida para re-raisear (6s)
   Estado:
   - Hero en MP con A♠ A♣ (trampa clásica)
   - UTG, UTG+1 ya foldearon
   - HJ, CO, BTN, BB, SB con cartas back
   Secuencia (6s):
   1. (0-25%)  Hero limpea (chip 1BB aparece + badge "LIMP")
   2. (30-55%) CO sube (chip 3.5BB aparece delante de CO + badge "RAISE")
   3. (60-95%) Hero re-raisea grande (stack de 11BB reemplaza al de 1BB + badge "RE-RAISE")
   IMPORTANTE: Usamos 2 stacks separados para hero (data-from="4" y data-from="4-big")
   El "limp stack" de 1 chip se ve en fase 1, desaparece en fase 3.
   El "raise stack" de 5 chips solo se ve en fase 3.
   ============================================================ */

/* Stack chico de hero (limp): visible en fase 1, desaparece después */
.ga-stage[data-animation="limp-raise"] .ga-stack[data-from="4"][data-role="limp"]{
  display:block;
  animation:ga-lr-hero-limp-stack 6s ease infinite;
}
/* Stack grande de hero (re-raise): invisible al inicio, aparece en fase 3 */
.ga-stage[data-animation="limp-raise"] .ga-stack[data-from="4"][data-role="reraise"]{
  display:block;
  animation:ga-lr-hero-reraise-stack 6s ease infinite;
}
.ga-stage[data-animation="limp-raise"] .ga-stack[data-from="2"]{
  display:block;
  animation:ga-lr-co-stack 6s ease infinite;
}
.ga-stage[data-animation="limp-raise"] .ga-stack[data-from="7"]{
  display:block;
  animation:ga-lr-bb-fade 6s ease infinite;
}
.ga-stage[data-animation="limp-raise"] .ga-stack[data-from="8"]{
  display:block;
  animation:ga-lr-sb-fade 6s ease infinite;
}

/* Cascada pre: UTG, UTG+1 foldean al inicio (5-15% del loop de 6s) */
.ga-stage[data-animation="limp-raise"] .ga-seat[data-pos="6"]{
  animation:ga-lr-pre-fold 6s ease 0s infinite;
}
.ga-stage[data-animation="limp-raise"] .ga-seat[data-pos="5"]{
  animation:ga-lr-pre-fold 6s ease .08s infinite;
}
.ga-stage[data-animation="limp-raise"] .ga-seat[data-pos="6"] .ga-seat-cards{
  animation:ga-lr-pre-cards-fade 6s ease 0s infinite;
}
.ga-stage[data-animation="limp-raise"] .ga-seat[data-pos="5"] .ga-seat-cards{
  animation:ga-lr-pre-cards-fade 6s ease .08s infinite;
}

/* HJ foldea entre el limp y el raise de CO (fase 25-35%) */
.ga-stage[data-animation="limp-raise"] .ga-seat[data-pos="3"]{
  animation:ga-lr-hj-fold 6s ease infinite;
}
.ga-stage[data-animation="limp-raise"] .ga-seat[data-pos="3"] .ga-seat-cards{
  animation:ga-lr-hj-cards-fade 6s ease infinite;
}
/* BTN, SB, BB foldean después del re-raise (fase 78-90%) con stagger */
.ga-stage[data-animation="limp-raise"] .ga-seat[data-pos="1"]{
  animation:ga-lr-late-fold 6s ease 0s infinite;
}
.ga-stage[data-animation="limp-raise"] .ga-seat[data-pos="8"]{
  animation:ga-lr-late-fold 6s ease .08s infinite;
}
.ga-stage[data-animation="limp-raise"] .ga-seat[data-pos="7"]{
  animation:ga-lr-late-fold 6s ease .16s infinite;
}
.ga-stage[data-animation="limp-raise"] .ga-seat[data-pos="1"] .ga-seat-cards{
  animation:ga-lr-late-cards-fade 6s ease 0s infinite;
}
.ga-stage[data-animation="limp-raise"] .ga-seat[data-pos="8"] .ga-seat-cards{
  animation:ga-lr-late-cards-fade 6s ease .08s infinite;
}
.ga-stage[data-animation="limp-raise"] .ga-seat[data-pos="7"] .ga-seat-cards{
  animation:ga-lr-late-cards-fade 6s ease .16s infinite;
}

/* Stack limp (1 chip): visible en fase 1 (0-30%), invisible después */
@keyframes ga-lr-hero-limp-stack{
  0%, 4%    { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  12%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  20%, 50%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  /* Desaparece justo antes que aparezca el re-raise */
  58%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
/* Stack re-raise (5 chips): invisible 0-58%, aparece en fase 3 */
@keyframes ga-lr-hero-reraise-stack{
  0%, 58%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  68%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  75%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  100%      { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
/* CO stack: aparece en fase 2, queda chico cuando hero re-raisea */
@keyframes ga-lr-co-stack{
  0%, 38%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  45%       { opacity:1; transform:translate(-50%,-50%) scale(1.1); }
  52%, 60%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  70%, 92%  { opacity:.65; transform:translate(-50%,-50%) scale(.85); }
  100%      { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
/* BB y SB chips: se desvanecen después del re-raise */
@keyframes ga-lr-bb-fade{
  0%, 75%   { opacity:1; }
  85%, 100% { opacity:.3; }
}
@keyframes ga-lr-sb-fade{
  0%, 75%   { opacity:1; }
  85%, 100% { opacity:.3; }
}

/* HJ fold: 25-35% del loop */
@keyframes ga-lr-hj-fold{
  0%, 25%   {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1;
    filter:saturate(1);
  }
  35%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0;
    opacity:.4;
    filter:saturate(.4);
  }
}
@keyframes ga-lr-hj-cards-fade{
  0%, 25%   { opacity:1; height:auto; }
  35%, 100% { opacity:0; height:0; }
}
/* BTN/SB/BB foldean DESPUÉS del raise de CO, ANTES del re-raise (56-68%) */
@keyframes ga-lr-late-fold{
  0%, 56%   {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1;
    filter:saturate(1);
  }
  68%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0;
    opacity:.4;
    filter:saturate(.4);
  }
}
@keyframes ga-lr-late-cards-fade{
  0%, 56%   { opacity:1; height:auto; }
  68%, 100% { opacity:0; height:0; }
}
/* Pre fold para limp-raise (loop 6s): foldea en 5-15% */
@keyframes ga-lr-pre-fold{
  0%, 5%    {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1;
    filter:saturate(1);
  }
  15%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0;
    opacity:.4;
    filter:saturate(.4);
  }
}
@keyframes ga-lr-pre-cards-fade{
  0%, 5%    { opacity:1; height:auto; }
  15%, 100% { opacity:0; height:0; }
}

/* ============================================================
   NUEVA: COLD-CALL — pagar una subida sin haber puesto chips (5s)
   Estado:
   - UTG abrió: chip 2.2BB delante de UTG desde el inicio
   - UTG+1, MP, HJ, CO con cartas back, foldean en cascada al inicio
   - Hero en BTN (pos 1) con 7♣ 7♦ (cold call estándar)
   - BB, SB con cartas back, foldean al final
   - Pot 3.7BB
   Secuencia (5s):
   1. (0-25%)   UTG+1 → MP → HJ → CO foldean en cascada (stagger 80ms)
   2. (35-80%)  Hero (BTN) hace cold call (chip aparece + badge "CALL")
   3. (80-95%)  SB, BB foldean
   Variante bb-defense (data-hero="7"): hero está en BB. Misma cascada pre,
   pero después también foldea BTN, SB, y hero defiende con stack 1BB → 2.2BB.
   ============================================================ */

/* Default hero=BTN */
.ga-stage[data-animation="cold-call"]:not([data-hero="7"]) .ga-stack[data-from="1"]{
  display:block;
  animation:ga-cc-hero 5s ease infinite;
}
.ga-stage[data-animation="cold-call"] .ga-stack[data-from="6"]{ display:block; }
.ga-stage[data-animation="cold-call"]:not([data-hero="7"]) .ga-stack[data-from="7"]{
  display:block;
  animation:ga-cc-blind-fade 5s ease infinite;
}
.ga-stage[data-animation="cold-call"]:not([data-hero="7"]) .ga-stack[data-from="8"]{
  display:block;
  animation:ga-cc-blind-fade 5s ease infinite;
}

/* Cascada PRE: UTG+1 → MP → HJ → CO foldean al inicio (5-25%) */
.ga-stage[data-animation="cold-call"] .ga-seat[data-pos="5"]{
  animation:ga-cc-pre-fold 5s ease 0s infinite;
}
.ga-stage[data-animation="cold-call"] .ga-seat[data-pos="4"]{
  animation:ga-cc-pre-fold 5s ease .08s infinite;
}
.ga-stage[data-animation="cold-call"] .ga-seat[data-pos="3"]{
  animation:ga-cc-pre-fold 5s ease .16s infinite;
}
.ga-stage[data-animation="cold-call"] .ga-seat[data-pos="2"]{
  animation:ga-cc-pre-fold 5s ease .24s infinite;
}
.ga-stage[data-animation="cold-call"] .ga-seat[data-pos="5"] .ga-seat-cards{
  animation:ga-cc-pre-cards-fade 5s ease 0s infinite;
}
.ga-stage[data-animation="cold-call"] .ga-seat[data-pos="4"] .ga-seat-cards{
  animation:ga-cc-pre-cards-fade 5s ease .08s infinite;
}
.ga-stage[data-animation="cold-call"] .ga-seat[data-pos="3"] .ga-seat-cards{
  animation:ga-cc-pre-cards-fade 5s ease .16s infinite;
}
.ga-stage[data-animation="cold-call"] .ga-seat[data-pos="2"] .ga-seat-cards{
  animation:ga-cc-pre-cards-fade 5s ease .24s infinite;
}

/* Cold-call: la animación frena en el call de hero — sin post cascade */

/* BB DEFENSE: hero en BB. Duración 6s. Cascada pre incluye BTN y SB */
.ga-stage[data-animation="cold-call"][data-hero="7"]{
  /* override animation duration via inheritance del CSS abajo */
}
/* Reescribimos animaciones de bb-defense con duración 6s */
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-seat[data-pos="5"]{
  animation:ga-cc-pre-fold 6s ease 0s infinite;
}
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-seat[data-pos="4"]{
  animation:ga-cc-pre-fold 6s ease .08s infinite;
}
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-seat[data-pos="3"]{
  animation:ga-cc-pre-fold 6s ease .16s infinite;
}
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-seat[data-pos="2"]{
  animation:ga-cc-pre-fold 6s ease .24s infinite;
}
/* BTN también foldea en pre cascade en bb-defense */
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-seat[data-pos="1"]{
  animation:ga-cc-pre-fold 6s ease .32s infinite;
}
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-seat[data-pos="5"] .ga-seat-cards{
  animation:ga-cc-pre-cards-fade 6s ease 0s infinite;
}
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-seat[data-pos="4"] .ga-seat-cards{
  animation:ga-cc-pre-cards-fade 6s ease .08s infinite;
}
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-seat[data-pos="3"] .ga-seat-cards{
  animation:ga-cc-pre-cards-fade 6s ease .16s infinite;
}
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-seat[data-pos="2"] .ga-seat-cards{
  animation:ga-cc-pre-cards-fade 6s ease .24s infinite;
}
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-seat[data-pos="1"] .ga-seat-cards{
  animation:ga-cc-pre-cards-fade 6s ease .32s infinite;
}

/* SB foldea en fase intermedia (35-45%) */
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-seat[data-pos="8"]{
  animation:ga-bb-defense-sb-seat 6s ease infinite;
}
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-seat[data-pos="8"] .ga-seat-cards{
  animation:ga-bb-defense-sb-cards 6s ease infinite;
}
/* Hero (BB) tiene 2 stacks: 1 BB posteado siempre visible + stack 2.2 BB que aparece en fase 3 */
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-stack[data-from="7"][data-role="posted"]{
  display:block;
  animation:ga-bb-defense-posted 6s ease infinite;
}
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-stack[data-from="7"][data-role="defend"]{
  display:block;
  animation:ga-bb-defense-defend 6s ease infinite;
}
/* SB chip 0.5BB visible al inicio, fade out cuando SB foldea */
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-stack[data-from="8"]{
  display:block;
  animation:ga-bb-defense-sb-chip 6s ease infinite;
}

/* BB defense: dos badges */

/* Keyframes */
/* Pre cascade fold (5-25%) */
@keyframes ga-cc-pre-fold{
  0%, 5%    {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1;
    filter:saturate(1);
  }
  18%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0;
    opacity:.4;
    filter:saturate(.4);
  }
}
@keyframes ga-cc-pre-cards-fade{
  0%, 5%    { opacity:1; height:auto; }
  18%, 100% { opacity:0; height:0; }
}
/* Post cascade fold (80-90%) */
@keyframes ga-cc-post-fold{
  0%, 80%   {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1;
    filter:saturate(1);
  }
  90%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0;
    opacity:.4;
    filter:saturate(.4);
  }
}
@keyframes ga-cc-post-cards-fade{
  0%, 80%   { opacity:1; height:auto; }
  90%, 100% { opacity:0; height:0; }
}
/* Hero call BTN: aparece fase 2 (25-92%) */
@keyframes ga-cc-hero{
  0%, 25%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  35%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  42%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
/* Blinds: ya no fadean (no hay post cascade), quedan estables */
@keyframes ga-cc-blind-fade{
  0%, 100% { opacity:1; }
}

/* BB DEFENSE keyframes (6s) */
/* Hero stack 1 BB (BB posteada): visible siempre, hace transición en fase 3 */
@keyframes ga-bb-defense-posted{
  0%, 60%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  /* Desaparece cuando aparece el stack defend (más grande) */
  65%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
/* Hero stack 2.2 BB (call total): aparece en fase 3 */
@keyframes ga-bb-defense-defend{
  0%, 60%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  68%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  75%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  100%      { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
/* SB chip: visible 0-35%, fade out 40-50% */
@keyframes ga-bb-defense-sb-chip{
  0%, 35%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  50%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
/* SB seat: encoge en fase intermedia (35-45%) */
@keyframes ga-bb-defense-sb-seat{
  0%, 35%   {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1;
    filter:saturate(1);
  }
  45%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0;
    opacity:.4;
    filter:saturate(.4);
  }
}
/* SB cartas */
@keyframes ga-bb-defense-sb-cards{
  0%, 35%   { opacity:1; height:auto; }
  45%, 100% { opacity:0; height:0; }
}
/* Badge SB FOLD: aparece en fase intermedia (40-55%) */
/* Badge HERO DEFEND: aparece en fase 3 (65-90%) */

/* ============================================================
   TANDA 2 — Componente BOARD (cartas comunitarias en el centro)
   ============================================================ */
.ga-board{
  position:absolute;
  left:50%; top:42%;
  transform:translate(-50%,-50%);
  display:flex;
  gap:4px;
  z-index:2;
  pointer-events:none;
}
.ga-board-card{
  width:38px; height:52px;
  border-radius:5px;
  background:var(--card-face);
  border:1px solid rgba(0,0,0,.18);
  box-shadow:
    0 3px 6px rgba(0,0,0,.6),
    inset 0 0 0 1px rgba(255,255,255,.7);
  position:relative;
  font-family:var(--font-card);
  font-weight:900;
  color:var(--suit-s);
  overflow:hidden;
  opacity:0;
  transform:scale(.7);
}
.ga-board-card .ga-card-suit{
  position:absolute;
  left:4px; top:3px;
  font-size:.6rem;
  line-height:1;
  font-weight:900;
}
.ga-board-card .ga-card-rank{
  position:absolute;
  left:50%; top:52%;
  transform:translate(-50%,-50%);
  font-size:1.85rem;
  font-weight:900;
  letter-spacing:-.06em;
  line-height:1;
}
.ga-board-card[data-suit="s"]{ color:var(--suit-s); }
.ga-board-card[data-suit="h"]{ color:var(--suit-h); background:#fce4e4; }
.ga-board-card[data-suit="d"]{ color:var(--suit-d); background:#e8f0fa; }
.ga-board-card[data-suit="c"]{ color:var(--suit-c); background:#e8f5e9; }

/* Logo más atenuado cuando hay board (no compite visualmente) */
.ga-stage[data-animation="cbet"] .ga-logo, .ga-stage[data-animation="delayed-cbet"] .ga-logo{
  opacity:.4;
}

/* ============================================================
   NUEVA: C-BET — apuesta de continuación (7s)
   Estado:
   - Hero CO con A♣ K♣ (apertura estándar)
   - BB defiende preflop con cartas back
   - Flop A♥ 7♣ 2♦ (top pair top kicker, board seco)
   ============================================================ */
.ga-stage[data-animation="cbet"] .ga-stack[data-from="2"][data-role="open"]{
  display:block;
  animation:ga-cbet-hero-open 7s ease infinite;
}
.ga-stage[data-animation="cbet"] .ga-stack[data-from="7"][data-role="defend"]{
  display:block;
  animation:ga-cbet-bb-defend 7s ease infinite;
}
.ga-stage[data-animation="cbet"] .ga-stack[data-from="8"]{ display:block; }
.ga-stage[data-animation="cbet"] .ga-stack[data-from="2"][data-role="cbet"]{
  display:block;
  animation:ga-cbet-hero-cbet 7s ease infinite;
}

.ga-stage[data-animation="cbet"] .ga-seat[data-pos="6"]{ animation:ga-cbet-pre-fold 7s ease 0s infinite; }
.ga-stage[data-animation="cbet"] .ga-seat[data-pos="5"]{ animation:ga-cbet-pre-fold 7s ease .06s infinite; }
.ga-stage[data-animation="cbet"] .ga-seat[data-pos="4"]{ animation:ga-cbet-pre-fold 7s ease .12s infinite; }
.ga-stage[data-animation="cbet"] .ga-seat[data-pos="3"]{ animation:ga-cbet-pre-fold 7s ease .18s infinite; }
.ga-stage[data-animation="cbet"] .ga-seat[data-pos="6"] .ga-seat-cards{ animation:ga-cbet-pre-cards 7s ease 0s infinite; }
.ga-stage[data-animation="cbet"] .ga-seat[data-pos="5"] .ga-seat-cards{ animation:ga-cbet-pre-cards 7s ease .06s infinite; }
.ga-stage[data-animation="cbet"] .ga-seat[data-pos="4"] .ga-seat-cards{ animation:ga-cbet-pre-cards 7s ease .12s infinite; }
.ga-stage[data-animation="cbet"] .ga-seat[data-pos="3"] .ga-seat-cards{ animation:ga-cbet-pre-cards 7s ease .18s infinite; }

.ga-stage[data-animation="cbet"] .ga-seat[data-pos="1"]{ animation:ga-cbet-mid-fold 7s ease 0s infinite; }
.ga-stage[data-animation="cbet"] .ga-seat[data-pos="8"]{ animation:ga-cbet-mid-fold 7s ease .06s infinite; }
.ga-stage[data-animation="cbet"] .ga-seat[data-pos="1"] .ga-seat-cards{ animation:ga-cbet-mid-cards 7s ease 0s infinite; }
.ga-stage[data-animation="cbet"] .ga-seat[data-pos="8"] .ga-seat-cards{ animation:ga-cbet-mid-cards 7s ease .06s infinite; }

.ga-stage[data-animation="cbet"] .ga-board-card:nth-child(1){ animation:ga-flop-reveal 7s ease 0s infinite; }
.ga-stage[data-animation="cbet"] .ga-board-card:nth-child(2){ animation:ga-flop-reveal 7s ease .12s infinite; }
.ga-stage[data-animation="cbet"] .ga-board-card:nth-child(3){ animation:ga-flop-reveal 7s ease .24s infinite; }

@keyframes ga-cbet-pre-fold{
  0%, 3%   {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1; filter:saturate(1);
  }
  10%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0; opacity:.4; filter:saturate(.4);
  }
}
@keyframes ga-cbet-pre-cards{
  0%, 3%    { opacity:1; height:auto; }
  10%, 100% { opacity:0; height:0; }
}
@keyframes ga-cbet-mid-fold{
  0%, 25%   {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1; filter:saturate(1);
  }
  32%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0; opacity:.4; filter:saturate(.4);
  }
}
@keyframes ga-cbet-mid-cards{
  0%, 25%   { opacity:1; height:auto; }
  32%, 100% { opacity:0; height:0; }
}
@keyframes ga-cbet-hero-open{
  0%, 15%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  22%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  28%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
@keyframes ga-cbet-bb-defend{
  0%, 35%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  42%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  48%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
@keyframes ga-cbet-hero-cbet{
  0%, 60%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  68%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  72%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
@keyframes ga-flop-reveal{
  0%, 45%   { opacity:0; transform:scale(.7); }
  52%       { opacity:1; transform:scale(1.1); }
  56%, 92%  { opacity:1; transform:scale(1); }
  98%, 100% { opacity:0; transform:scale(.7); }
}

/* ============================================================
   NUEVA: DELAYED C-BET (8s)
   ============================================================ */
.ga-stage[data-animation="delayed-cbet"] .ga-stack[data-from="2"][data-role="open"]{
  display:block;
  animation:ga-dcbet-hero-open 8s ease infinite;
}
.ga-stage[data-animation="delayed-cbet"] .ga-stack[data-from="7"][data-role="defend"]{
  display:block;
  animation:ga-dcbet-bb-defend 8s ease infinite;
}
.ga-stage[data-animation="delayed-cbet"] .ga-stack[data-from="8"]{ display:block; }
.ga-stage[data-animation="delayed-cbet"] .ga-stack[data-from="2"][data-role="cbet"]{
  display:block;
  animation:ga-dcbet-hero-bet 8s ease infinite;
}

.ga-stage[data-animation="delayed-cbet"] .ga-seat[data-pos="6"]{ animation:ga-dcbet-pre-fold 8s ease 0s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-seat[data-pos="5"]{ animation:ga-dcbet-pre-fold 8s ease .06s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-seat[data-pos="4"]{ animation:ga-dcbet-pre-fold 8s ease .12s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-seat[data-pos="3"]{ animation:ga-dcbet-pre-fold 8s ease .18s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-seat[data-pos="6"] .ga-seat-cards{ animation:ga-dcbet-pre-cards 8s ease 0s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-seat[data-pos="5"] .ga-seat-cards{ animation:ga-dcbet-pre-cards 8s ease .06s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-seat[data-pos="4"] .ga-seat-cards{ animation:ga-dcbet-pre-cards 8s ease .12s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-seat[data-pos="3"] .ga-seat-cards{ animation:ga-dcbet-pre-cards 8s ease .18s infinite; }

.ga-stage[data-animation="delayed-cbet"] .ga-seat[data-pos="1"]{ animation:ga-dcbet-mid-fold 8s ease 0s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-seat[data-pos="8"]{ animation:ga-dcbet-mid-fold 8s ease .06s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-seat[data-pos="1"] .ga-seat-cards{ animation:ga-dcbet-mid-cards 8s ease 0s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-seat[data-pos="8"] .ga-seat-cards{ animation:ga-dcbet-mid-cards 8s ease .06s infinite; }

.ga-stage[data-animation="delayed-cbet"] .ga-board-card:nth-child(1){ animation:ga-dcbet-flop-reveal 8s ease 0s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-board-card:nth-child(2){ animation:ga-dcbet-flop-reveal 8s ease .08s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-board-card:nth-child(3){ animation:ga-dcbet-flop-reveal 8s ease .16s infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-board-card:nth-child(4){ animation:ga-dcbet-turn-reveal 8s ease 0s infinite; }

@keyframes ga-dcbet-pre-fold{
  0%, 3%   {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1; filter:saturate(1);
  }
  10%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0; opacity:.4; filter:saturate(.4);
  }
}
@keyframes ga-dcbet-pre-cards{
  0%, 3%    { opacity:1; height:auto; }
  10%, 100% { opacity:0; height:0; }
}
@keyframes ga-dcbet-mid-fold{
  0%, 22%   {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1; filter:saturate(1);
  }
  28%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0; opacity:.4; filter:saturate(.4);
  }
}
@keyframes ga-dcbet-mid-cards{
  0%, 22%   { opacity:1; height:auto; }
  28%, 100% { opacity:0; height:0; }
}
@keyframes ga-dcbet-hero-open{
  0%, 12%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  18%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  24%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
@keyframes ga-dcbet-bb-defend{
  0%, 32%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  38%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  44%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
@keyframes ga-dcbet-hero-bet{
  0%, 72%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  78%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  82%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
@keyframes ga-dcbet-flop-reveal{
  0%, 42%   { opacity:0; transform:scale(.7); }
  48%       { opacity:1; transform:scale(1.1); }
  52%, 92%  { opacity:1; transform:scale(1); }
  98%, 100% { opacity:0; transform:scale(.7); }
}
@keyframes ga-dcbet-turn-reveal{
  0%, 60%   { opacity:0; transform:scale(.7); }
  66%       { opacity:1; transform:scale(1.1); }
  70%, 92%  { opacity:1; transform:scale(1); }
  98%, 100% { opacity:0; transform:scale(.7); }
}

/* ============================================================
   NUEVA: SQUEEZE — 3-bet sobre open + caller (7s)
   Hero BTN con A♠ K♠. UTG abrió, MP cold-call, hero squeeze 9BB.
   ============================================================ */
.ga-stage[data-animation="squeeze"] .ga-stack[data-from="6"]{ display:block; }
.ga-stage[data-animation="squeeze"] .ga-stack[data-from="4"]{
  display:block;
  animation:ga-squeeze-mp-coldcall 7s ease infinite;
}
.ga-stage[data-animation="squeeze"] .ga-stack[data-from="1"]{
  display:block;
  animation:ga-squeeze-hero 7s ease infinite;
}
.ga-stage[data-animation="squeeze"] .ga-stack[data-from="7"]{ display:block; }
.ga-stage[data-animation="squeeze"] .ga-stack[data-from="8"]{ display:block; }

.ga-stage[data-animation="squeeze"] .ga-seat[data-pos="5"]{ animation:ga-squeeze-utg1-fold 7s ease infinite; }
.ga-stage[data-animation="squeeze"] .ga-seat[data-pos="5"] .ga-seat-cards{ animation:ga-squeeze-utg1-cards 7s ease infinite; }
.ga-stage[data-animation="squeeze"] .ga-seat[data-pos="3"]{ animation:ga-squeeze-mid-fold 7s ease 0s infinite; }
.ga-stage[data-animation="squeeze"] .ga-seat[data-pos="2"]{ animation:ga-squeeze-mid-fold 7s ease .06s infinite; }
.ga-stage[data-animation="squeeze"] .ga-seat[data-pos="3"] .ga-seat-cards{ animation:ga-squeeze-mid-cards 7s ease 0s infinite; }
.ga-stage[data-animation="squeeze"] .ga-seat[data-pos="2"] .ga-seat-cards{ animation:ga-squeeze-mid-cards 7s ease .06s infinite; }

@keyframes ga-squeeze-mp-coldcall{
  0%, 22%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  28%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  32%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
@keyframes ga-squeeze-hero{
  0%, 50%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  58%       { opacity:1; transform:translate(-50%,-50%) scale(1.2); }
  64%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.7); }
}
@keyframes ga-squeeze-utg1-fold{
  0%, 12%   {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1; filter:saturate(1);
  }
  18%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0; opacity:.4; filter:saturate(.4);
  }
}
@keyframes ga-squeeze-utg1-cards{
  0%, 12%   { opacity:1; height:auto; }
  18%, 100% { opacity:0; height:0; }
}
@keyframes ga-squeeze-mid-fold{
  0%, 32%   {
    width:74px; height:74px;
    margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px;
    opacity:1; filter:saturate(1);
  }
  42%, 100% {
    width:64px; height:64px;
    margin-left:-32px; margin-top:-32px;
    padding:0; opacity:.4; filter:saturate(.4);
  }
}
@keyframes ga-squeeze-mid-cards{
  0%, 32%   { opacity:1; height:auto; }
  42%, 100% { opacity:0; height:0; }
}

/* ============================================================
   POTS DINÁMICOS — keyframes genéricos
   Cada pot data-step="N" se hace visible en una ventana del loop.
   El "N" representa qué calle/momento, no el orden absoluto.
   Se usa como: animation:ga-pot-step-X 5s/7s/8s ease infinite
   ============================================================ */

/* Helpers visuales: pot aparece con scale 1.05 + glow, se mantiene en 1, desaparece. */

/* === Loops de 5s (Tanda 1: open, limp, cold-call, etc) === */
/* Pot inicial: visible 0-15%, desaparece cuando llega la primera apuesta */
@keyframes ga-pot-5s-init{
  0%, 15%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  20%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
/* Pot tras primera acción: aparece 22%, se mantiene */
@keyframes ga-pot-5s-step1{
  0%, 18%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  22%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  28%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* === Loops de 6s (BB defense, limp-raise) === */
@keyframes ga-pot-6s-init{
  0%, 28%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  35%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
/* Pot step 1: tras una primera acción intermedia */
@keyframes ga-pot-6s-step1{
  0%, 32%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  38%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  44%, 60%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  68%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
/* Pot step 2: para limp-raise específicamente — tras CO raise */
@keyframes ga-pot-6s-step2{
  0%, 42%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  48%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  54%, 60%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  68%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
/* Pot step 3 (final): tras hero re-raise en limp-raise */
@keyframes ga-pot-6s-step3{
  0%, 65%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  72%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  78%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* === Loops de 7s (cbet, squeeze) === */
@keyframes ga-pot-7s-init{
  0%, 13%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  18%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
/* Tras una primera acción */
@keyframes ga-pot-7s-step1{
  0%, 17%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  22%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  28%, 32%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  38%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
/* Tras segunda acción */
@keyframes ga-pot-7s-step2{
  0%, 36%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  42%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  48%, 60%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  68%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
/* Tras tercera acción (hero c-bet o squeeze) — frenazo final */
@keyframes ga-pot-7s-step3{
  0%, 65%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  72%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  78%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* === Loops de 8s (delayed-cbet) === */
@keyframes ga-pot-8s-init{
  0%, 12%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  18%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-8s-step1{
  0%, 16%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  22%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  28%, 30%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  36%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-8s-step2{
  0%, 34%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  40%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  46%, 70%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  78%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
/* Tras hero apuesta turn — frenazo final */
@keyframes ga-pot-8s-step3{
  0%, 75%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  80%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  85%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* ============================================================
   POT TEXTUAL — keyframes específicos por animación
   Cambia con CADA acción (no espera cierre de calle)
   ============================================================ */

/* Helper genérico de pot que aparece y se mantiene hasta que aparece el siguiente */
/* Usamos una convención: cada step es una ventana de visibilidad específica */

/* === FOLD (constante) === */
.ga-stage[data-animation="fold"] .ga-pot[data-step="0"]{ animation:none; opacity:1; }

/* === OPEN / STEAL (5s) — Hero acciona en 35-42% === */
.ga-stage[data-animation="open"] .ga-pot[data-step="0"]{ animation:ga-pot-open-s0 5s ease infinite; }
.ga-stage[data-animation="open"] .ga-pot[data-step="1"]{ animation:ga-pot-open-s1 5s ease infinite; }
@keyframes ga-pot-open-s0{
  0%, 32%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  38%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-open-s1{
  0%, 32%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  40%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  48%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* === ISO-RAISE (5s) — UTG limp ya visible al inicio (step 1), Hero acciona en 35-42% (step 2) === */
.ga-stage[data-animation="open"][data-variant="iso-raise"] .ga-pot[data-step="0"]{ animation:none; opacity:0; }
.ga-stage[data-animation="open"][data-variant="iso-raise"] .ga-pot[data-step="1"]{ animation:ga-pot-iso-s1 5s ease infinite; }
.ga-stage[data-animation="open"][data-variant="iso-raise"] .ga-pot[data-step="2"]{ animation:ga-pot-iso-s2 5s ease infinite; }
@keyframes ga-pot-iso-s1{
  0%, 32%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  38%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-iso-s2{
  0%, 32%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  40%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  48%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* === LIMP base (5s) — Hero limpea en 35-42% === */
.ga-stage[data-animation="limp"] .ga-pot[data-step="0"]{ animation:ga-pot-limp-s0 5s ease infinite; }
.ga-stage[data-animation="limp"] .ga-pot[data-step="1"]{ animation:ga-pot-limp-s1 5s ease infinite; }
@keyframes ga-pot-limp-s0{
  0%, 32%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  38%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-limp-s1{
  0%, 32%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  40%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  48%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* === OVER-LIMP (5s) — UTG limp visible (step 1), Hero limpea (step 2) === */
.ga-stage[data-animation="limp"][data-variant="over-limp"] .ga-pot[data-step="0"]{ animation:none; opacity:0; }
.ga-stage[data-animation="limp"][data-variant="over-limp"] .ga-pot[data-step="1"]{ animation:ga-pot-overlimp-s1 5s ease infinite; }
.ga-stage[data-animation="limp"][data-variant="over-limp"] .ga-pot[data-step="2"]{ animation:ga-pot-overlimp-s2 5s ease infinite; }
@keyframes ga-pot-overlimp-s1{
  0%, 32%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  38%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-overlimp-s2{
  0%, 32%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  40%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  48%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* === LIMP-RAISE (6s) — Hero limp 12%, CO raise 38%, Hero re-raise 68% === */
.ga-stage[data-animation="limp-raise"] .ga-pot[data-step="0"]{ animation:ga-pot-lr-s0 6s ease infinite; }
.ga-stage[data-animation="limp-raise"] .ga-pot[data-step="1"]{ animation:ga-pot-lr-s1 6s ease infinite; }
.ga-stage[data-animation="limp-raise"] .ga-pot[data-step="2"]{ animation:ga-pot-lr-s2 6s ease infinite; }
.ga-stage[data-animation="limp-raise"] .ga-pot[data-step="3"]{ animation:ga-pot-lr-s3 6s ease infinite; }
@keyframes ga-pot-lr-s0{
  0%, 10%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  16%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-lr-s1{
  0%, 10%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  18%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  24%, 36%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  42%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-lr-s2{
  0%, 36%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  44%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  50%, 64%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  70%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-lr-s3{
  0%, 64%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  72%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  78%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* === COLD-CALL base (5s) — UTG ya abrió desde el inicio (step 1), Hero call en 35-42% (step 2) === */
.ga-stage[data-animation="cold-call"]:not([data-hero="7"]) .ga-pot[data-step="0"]{ animation:none; opacity:0; }
.ga-stage[data-animation="cold-call"]:not([data-hero="7"]) .ga-pot[data-step="1"]{ animation:ga-pot-cc-s1 5s ease infinite; }
.ga-stage[data-animation="cold-call"]:not([data-hero="7"]) .ga-pot[data-step="2"]{ animation:ga-pot-cc-s2 5s ease infinite; }
@keyframes ga-pot-cc-s1{
  0%, 32%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  38%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-cc-s2{
  0%, 32%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  40%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  48%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* === BB DEFENSE (6s) — UTG abre 0% (siempre), SB foldea 35-45%, Hero defiende 65-75% === */
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-pot[data-step="0"]{ animation:none; opacity:0; }
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-pot[data-step="1"]{ animation:ga-pot-bbd-s1 6s ease infinite; }
.ga-stage[data-animation="cold-call"][data-hero="7"] .ga-pot[data-step="2"]{ animation:ga-pot-bbd-s2 6s ease infinite; }
@keyframes ga-pot-bbd-s1{
  0%, 60%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  68%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-bbd-s2{
  0%, 60%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  68%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  76%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* === SQUEEZE (7s) — UTG ya abrió desde el inicio (step 1), MP cold-call 22-32% (step 2), Hero squeeze 50-64% (step 3) === */
.ga-stage[data-animation="squeeze"] .ga-pot[data-step="0"]{ animation:none; opacity:0; }
.ga-stage[data-animation="squeeze"] .ga-pot[data-step="1"]{ animation:ga-pot-sq-s1 7s ease infinite; }
.ga-stage[data-animation="squeeze"] .ga-pot[data-step="2"]{ animation:ga-pot-sq-s2 7s ease infinite; }
.ga-stage[data-animation="squeeze"] .ga-pot[data-step="3"]{ animation:ga-pot-sq-s3 7s ease infinite; }
@keyframes ga-pot-sq-s1{
  0%, 22%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  28%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-sq-s2{
  0%, 22%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  30%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  36%, 50%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  56%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-sq-s3{
  0%, 50%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  60%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  66%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* === C-BET (7s) — Hero open 22%, BB defend 42%, Flop 50%, Hero c-bet 68% === */
.ga-stage[data-animation="cbet"] .ga-pot[data-step="0"]{ animation:ga-pot-cbet-s0 7s ease infinite; }
.ga-stage[data-animation="cbet"] .ga-pot[data-step="1"]{ animation:ga-pot-cbet-s1 7s ease infinite; }
.ga-stage[data-animation="cbet"] .ga-pot[data-step="2"]{ animation:ga-pot-cbet-s2 7s ease infinite; }
.ga-stage[data-animation="cbet"] .ga-pot[data-step="3"]{ animation:ga-pot-cbet-s3 7s ease infinite; }
@keyframes ga-pot-cbet-s0{
  0%, 18%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  24%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-cbet-s1{
  0%, 18%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  26%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  32%, 38%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  44%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-cbet-s2{
  0%, 38%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  46%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  52%, 64%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  70%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-cbet-s3{
  0%, 64%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  72%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  78%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* === DELAYED CBET (8s) — Hero open 18%, BB defend 38%, Flop 45%, Turn 65%, Hero turn-bet 78% === */
.ga-stage[data-animation="delayed-cbet"] .ga-pot[data-step="0"]{ animation:ga-pot-dcbet-s0 8s ease infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-pot[data-step="1"]{ animation:ga-pot-dcbet-s1 8s ease infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-pot[data-step="2"]{ animation:ga-pot-dcbet-s2 8s ease infinite; }
.ga-stage[data-animation="delayed-cbet"] .ga-pot[data-step="3"]{ animation:ga-pot-dcbet-s3 8s ease infinite; }
@keyframes ga-pot-dcbet-s0{
  0%, 14%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  20%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-dcbet-s1{
  0%, 14%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  22%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  28%, 34%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  40%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-dcbet-s2{
  0%, 34%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  42%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  48%, 74%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  80%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}
@keyframes ga-pot-dcbet-s3{
  0%, 74%   { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  82%       { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); }
  86%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); }
}

/* ============================================================
   FICHAS POSTFLOP — desaparecen entre calles
   En cbet y delayed-cbet, las chips de open/defend desaparecen al aparecer el flop.
   ============================================================ */
/* ============================================================
   FICHAS POSTFLOP — desaparecen entre calles
   En cbet y delayed-cbet, las chips de open/defend desaparecen al aparecer el flop.
   Las blinds posted (BB 1, SB 0.5) son visibles al inicio y desaparecen también.
   ============================================================ */
/* CBET: BB posted (1 BB) y SB posted (0.5 BB) visibles al inicio, fade en 42-48% (flop aparece 45-55%) */
.ga-stage[data-animation="cbet"] .ga-stack[data-from="7"][data-role="posted"]{
  display:block;
  animation:ga-cbet-blind-fade 7s ease infinite;
}
.ga-stage[data-animation="cbet"] .ga-stack[data-from="8"][data-role="posted"]{
  display:block;
  animation:ga-cbet-blind-fade 7s ease infinite;
}
/* Override del display:block default del data-from="8" */
.ga-stage[data-animation="cbet"] .ga-stack[data-from="8"]:not([data-role]){ display:none; }

/* DELAYED-CBET: igual pero loop 8s, flop en 42-50% */
.ga-stage[data-animation="delayed-cbet"] .ga-stack[data-from="7"][data-role="posted"]{
  display:block;
  animation:ga-dcbet-blind-fade 8s ease infinite;
}
.ga-stage[data-animation="delayed-cbet"] .ga-stack[data-from="8"][data-role="posted"]{
  display:block;
  animation:ga-dcbet-blind-fade 8s ease infinite;
}
.ga-stage[data-animation="delayed-cbet"] .ga-stack[data-from="8"]:not([data-role]){ display:none; }

@keyframes ga-cbet-blind-fade{
  0%, 42%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  48%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
@keyframes ga-dcbet-blind-fade{
  0%, 38%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  44%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}

/* En cbet (7s loop), open y defend chips fade en 42-48% (flop aparece 45-55%) */
.ga-stage[data-animation="cbet"] .ga-stack[data-from="2"][data-role="open"]{
  animation:ga-cbet-hero-open-fade 7s ease infinite;
}
.ga-stage[data-animation="cbet"] .ga-stack[data-from="7"][data-role="defend"]{
  animation:ga-cbet-bb-defend-fade 7s ease infinite;
}
@keyframes ga-cbet-hero-open-fade{
  0%, 15%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  22%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  28%, 42%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  /* Las chips desaparecen al llegar al flop */
  48%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
@keyframes ga-cbet-bb-defend-fade{
  0%, 35%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  42%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  /* solo visible un instante porque enseguida se va al pot */
  46%, 48%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  54%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}

/* En delayed-cbet (8s), open y defend desaparecen 38-44% (flop 42-50%) */
.ga-stage[data-animation="delayed-cbet"] .ga-stack[data-from="2"][data-role="open"]{
  animation:ga-dcbet-hero-open-fade 8s ease infinite;
}
.ga-stage[data-animation="delayed-cbet"] .ga-stack[data-from="7"][data-role="defend"]{
  animation:ga-dcbet-bb-defend-fade 8s ease infinite;
}
@keyframes ga-dcbet-hero-open-fade{
  0%, 12%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  18%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  24%, 38%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  44%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
@keyframes ga-dcbet-bb-defend-fade{
  0%, 32%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  38%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  42%, 44%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  50%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}

/* ============================================================
   TANDA 3 — DOUBLE BARREL (8s)
   Hero CO con A♣K♣, BB defiende, flop A♥7♣2♦, turn 5♠
   Secuencia (8s):
   3-10%   Pre cascade UTG→HJ
   12-18%  Hero open 2.5BB
   22-28%  BTN, SB foldean
   32-38%  BB defiende +1.5BB
   42-50%  Flop A♥7♣2♦ aparece, blinds y open/defend chips desaparecen
   54-60%  Hero c-bet flop 3BB
   62-68%  BB call flop 3BB
   72-80%  Turn 5♠ aparece, chips del flop desaparecen
   82-88%  Hero double barrel 6BB
   88-95%  Frenazo en double barrel
   Pot textual: 2.5→5→6.5→9.5→12.5→12.5→18.5
   Pot consolidado: 1→6.5 (flop)→12.5 (turn)
   ============================================================ */

.ga-stage[data-animation="double-barrel"] .ga-logo{ opacity:.4; }

/* Stacks de hero (CO) */
.ga-stage[data-animation="double-barrel"] .ga-stack[data-from="2"][data-role="open"]{
  display:block;
  animation:ga-db-hero-open 8s ease infinite;
}
.ga-stage[data-animation="double-barrel"] .ga-stack[data-from="2"][data-role="cbet"]{
  display:block;
  animation:ga-db-hero-cbet 8s ease infinite;
}
.ga-stage[data-animation="double-barrel"] .ga-stack[data-from="2"][data-role="barrel"]{
  display:block;
  animation:ga-db-hero-barrel 8s ease infinite;
}

/* Stacks de BB */
.ga-stage[data-animation="double-barrel"] .ga-stack[data-from="7"][data-role="posted"]{
  display:block;
  animation:ga-db-blind-fade 8s ease infinite;
}
.ga-stage[data-animation="double-barrel"] .ga-stack[data-from="7"][data-role="defend"]{
  display:block;
  animation:ga-db-bb-defend 8s ease infinite;
}
.ga-stage[data-animation="double-barrel"] .ga-stack[data-from="7"][data-role="callflop"]{
  display:block;
  animation:ga-db-bb-callflop 8s ease infinite;
}

/* SB blind */
.ga-stage[data-animation="double-barrel"] .ga-stack[data-from="8"][data-role="posted"]{
  display:block;
  animation:ga-db-blind-fade 8s ease infinite;
}
.ga-stage[data-animation="double-barrel"] .ga-stack[data-from="8"]:not([data-role]){ display:none; }

/* Pre cascade UTG→HJ (3-10%) */
.ga-stage[data-animation="double-barrel"] .ga-seat[data-pos="6"]{ animation:ga-db-pre-fold 8s ease 0s infinite; }
.ga-stage[data-animation="double-barrel"] .ga-seat[data-pos="5"]{ animation:ga-db-pre-fold 8s ease .06s infinite; }
.ga-stage[data-animation="double-barrel"] .ga-seat[data-pos="4"]{ animation:ga-db-pre-fold 8s ease .12s infinite; }
.ga-stage[data-animation="double-barrel"] .ga-seat[data-pos="3"]{ animation:ga-db-pre-fold 8s ease .18s infinite; }
.ga-stage[data-animation="double-barrel"] .ga-seat[data-pos="6"] .ga-seat-cards{ animation:ga-db-pre-cards 8s ease 0s infinite; }
.ga-stage[data-animation="double-barrel"] .ga-seat[data-pos="5"] .ga-seat-cards{ animation:ga-db-pre-cards 8s ease .06s infinite; }
.ga-stage[data-animation="double-barrel"] .ga-seat[data-pos="4"] .ga-seat-cards{ animation:ga-db-pre-cards 8s ease .12s infinite; }
.ga-stage[data-animation="double-barrel"] .ga-seat[data-pos="3"] .ga-seat-cards{ animation:ga-db-pre-cards 8s ease .18s infinite; }

/* Mid cascade BTN, SB foldean tras hero open (22-28%) */
.ga-stage[data-animation="double-barrel"] .ga-seat[data-pos="1"]{ animation:ga-db-mid-fold 8s ease 0s infinite; }
.ga-stage[data-animation="double-barrel"] .ga-seat[data-pos="8"]{ animation:ga-db-mid-fold 8s ease .06s infinite; }
.ga-stage[data-animation="double-barrel"] .ga-seat[data-pos="1"] .ga-seat-cards{ animation:ga-db-mid-cards 8s ease 0s infinite; }
.ga-stage[data-animation="double-barrel"] .ga-seat[data-pos="8"] .ga-seat-cards{ animation:ga-db-mid-cards 8s ease .06s infinite; }

/* Flop aparece 42-50% */
.ga-stage[data-animation="double-barrel"] .ga-board-card:nth-child(1){ animation:ga-db-flop-reveal 8s ease 0s infinite; }
.ga-stage[data-animation="double-barrel"] .ga-board-card:nth-child(2){ animation:ga-db-flop-reveal 8s ease .08s infinite; }
.ga-stage[data-animation="double-barrel"] .ga-board-card:nth-child(3){ animation:ga-db-flop-reveal 8s ease .16s infinite; }
/* Turn aparece 72-80% */
.ga-stage[data-animation="double-barrel"] .ga-board-card:nth-child(4){ animation:ga-db-turn-reveal 8s ease 0s infinite; }

@keyframes ga-db-pre-fold{
  0%, 3%   {
    width:74px; height:74px; margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px; opacity:1; filter:saturate(1);
  }
  10%, 100% {
    width:64px; height:64px; margin-left:-32px; margin-top:-32px;
    padding:0; opacity:.4; filter:saturate(.4);
  }
}
@keyframes ga-db-pre-cards{
  0%, 3%    { opacity:1; height:auto; }
  10%, 100% { opacity:0; height:0; }
}
@keyframes ga-db-mid-fold{
  0%, 22%   {
    width:74px; height:74px; margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px; opacity:1; filter:saturate(1);
  }
  28%, 100% {
    width:64px; height:64px; margin-left:-32px; margin-top:-32px;
    padding:0; opacity:.4; filter:saturate(.4);
  }
}
@keyframes ga-db-mid-cards{
  0%, 22%   { opacity:1; height:auto; }
  28%, 100% { opacity:0; height:0; }
}

/* Hero open: 12-38% (visible y luego fade al consolidarse en flop) */
@keyframes ga-db-hero-open{
  0%, 12%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  18%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  24%, 38%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  44%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
/* BB defend: 32-44% */
@keyframes ga-db-bb-defend{
  0%, 32%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  38%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  42%, 44%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  50%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
/* Hero c-bet: 54-66% (flop bet) */
@keyframes ga-db-hero-cbet{
  0%, 54%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  60%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  64%, 66%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  72%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
/* BB call flop: 62-68% */
@keyframes ga-db-bb-callflop{
  0%, 62%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  66%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  68%, 70%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  74%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
/* Hero barrel turn: 82-92% */
@keyframes ga-db-hero-barrel{
  0%, 82%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  88%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  92%       { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
/* Blinds (BB posted, SB posted): visible al inicio, fade al flop */
@keyframes ga-db-blind-fade{
  0%, 38%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  44%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
/* Flop reveal: 42-50% */
@keyframes ga-db-flop-reveal{
  0%, 42%   { opacity:0; transform:scale(.7); }
  48%       { opacity:1; transform:scale(1.1); }
  52%, 92%  { opacity:1; transform:scale(1); }
  98%, 100% { opacity:0; transform:scale(.7); }
}
/* Turn reveal: 72-80% */
@keyframes ga-db-turn-reveal{
  0%, 72%   { opacity:0; transform:scale(.7); }
  78%       { opacity:1; transform:scale(1.1); }
  82%, 92%  { opacity:1; transform:scale(1); }
  98%, 100% { opacity:0; transform:scale(.7); }
}

/* Pot textual double-barrel: 2.5→5(open 18%)→6.5(BBdef 38%)→9.5(cbet 60%)→12.5(BBcall 66%)→18.5(barrel 88%) */
.ga-stage[data-animation="double-barrel"] .ga-pot[data-step="0"]{ animation:ga-pot-db-s0 8s ease infinite; }
.ga-stage[data-animation="double-barrel"] .ga-pot[data-step="1"]{ animation:ga-pot-db-s1 8s ease infinite; }
.ga-stage[data-animation="double-barrel"] .ga-pot[data-step="2"]{ animation:ga-pot-db-s2 8s ease infinite; }
.ga-stage[data-animation="double-barrel"] .ga-pot[data-step="3"]{ animation:ga-pot-db-s3 8s ease infinite; }
.ga-stage[data-animation="double-barrel"] .ga-pot[data-step="4"]{ animation:ga-pot-db-s4 8s ease infinite; }
.ga-stage[data-animation="double-barrel"] .ga-pot[data-step="5"]{ animation:ga-pot-db-s5 8s ease infinite; }
@keyframes ga-pot-db-s0{ 0%, 14% { opacity:1; transform:translate(-50%,-50%) scale(1); } 20%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }
@keyframes ga-pot-db-s1{ 0%, 14% { opacity:0; transform:translate(-50%,-50%) scale(.92); } 22% { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); } 28%, 34% { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; } 40%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }
@keyframes ga-pot-db-s2{ 0%, 34% { opacity:0; transform:translate(-50%,-50%) scale(.92); } 42% { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); } 48%, 56% { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; } 62%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }
@keyframes ga-pot-db-s3{ 0%, 56% { opacity:0; transform:translate(-50%,-50%) scale(.92); } 62% { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); } 66%, 64% { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; } 70%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }
@keyframes ga-pot-db-s4{ 0%, 64% { opacity:0; transform:translate(-50%,-50%) scale(.92); } 70% { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); } 74%, 84% { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; } 90%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }
@keyframes ga-pot-db-s5{ 0%, 84% { opacity:0; transform:translate(-50%,-50%) scale(.92); } 90% { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); } 94%, 95% { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; } 98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }

/* Pot consolidado label double-barrel: 1→6.5 (al flop)→12.5 (al turn) */
.ga-stage[data-animation="double-barrel"] .ga-pot-chips-label[data-step="0"]{ animation:ga-pot-chips-db-s0 8s ease infinite; }
.ga-stage[data-animation="double-barrel"] .ga-pot-chips-label[data-step="1"]{ animation:ga-pot-chips-db-s1 8s ease infinite; }
.ga-stage[data-animation="double-barrel"] .ga-pot-chips-label[data-step="2"]{ animation:ga-pot-chips-db-s2 8s ease infinite; }
@keyframes ga-pot-chips-db-s0{
  0%, 45%   { opacity:1; }
  50%, 100% { opacity:0; }
}
@keyframes ga-pot-chips-db-s1{
  0%, 45%   { opacity:0; }
  52%, 75%  { opacity:1; }
  80%, 100% { opacity:0; }
}
@keyframes ga-pot-chips-db-s2{
  0%, 75%   { opacity:0; }
  82%, 92%  { opacity:1; }
  98%, 100% { opacity:0; }
}

/* ============================================================
   TANDA 3 — DONK BET (7s)
   Hero BB con K♣Q♣ defiende open de CO. Flop K♥8♦3♠ (TPGK).
   Hero (BB, OOP) apuesta antes que CO pueda c-betear.
   Cubre: donk-bet, lead, probe-bet, block-bet
   Secuencia (7s):
   3-10%   Pre cascade UTG→HJ
   12-18%  CO open 2.5BB (villain agresor preflop)
   22-28%  BTN, SB foldean
   32-38%  Hero (BB) defiende +1.5BB
   42-52%  Flop K♥8♦3♠ aparece, chips se consolidan
   58-66%  Hero (BB) DONK BET 4BB (apuesta antes que CO accione)
   66-95%  Frenazo en donk bet
   Pot textual: 2.5→5→6.5→6.5→10.5
   Pot consolidado: 1→6.5 (al flop)
   ============================================================ */

.ga-stage[data-animation="donk-bet"] .ga-logo{ opacity:.4; }

/* CO (pos 2) es el agresor preflop */
.ga-stage[data-animation="donk-bet"] .ga-stack[data-from="2"][data-role="open"]{
  display:block;
  animation:ga-donk-co-open 7s ease infinite;
}
/* Hero (BB, pos 7) */
.ga-stage[data-animation="donk-bet"] .ga-stack[data-from="7"][data-role="posted"]{
  display:block;
  animation:ga-donk-blind-fade 7s ease infinite;
}
.ga-stage[data-animation="donk-bet"] .ga-stack[data-from="7"][data-role="defend"]{
  display:block;
  animation:ga-donk-hero-defend 7s ease infinite;
}
.ga-stage[data-animation="donk-bet"] .ga-stack[data-from="7"][data-role="donk"]{
  display:block;
  animation:ga-donk-hero-donk 7s ease infinite;
}
/* SB posted */
.ga-stage[data-animation="donk-bet"] .ga-stack[data-from="8"][data-role="posted"]{
  display:block;
  animation:ga-donk-blind-fade 7s ease infinite;
}
.ga-stage[data-animation="donk-bet"] .ga-stack[data-from="8"]:not([data-role]){ display:none; }

/* Pre cascade UTG→HJ (3-10%) */
.ga-stage[data-animation="donk-bet"] .ga-seat[data-pos="6"]{ animation:ga-donk-pre-fold 7s ease 0s infinite; }
.ga-stage[data-animation="donk-bet"] .ga-seat[data-pos="5"]{ animation:ga-donk-pre-fold 7s ease .06s infinite; }
.ga-stage[data-animation="donk-bet"] .ga-seat[data-pos="4"]{ animation:ga-donk-pre-fold 7s ease .12s infinite; }
.ga-stage[data-animation="donk-bet"] .ga-seat[data-pos="3"]{ animation:ga-donk-pre-fold 7s ease .18s infinite; }
.ga-stage[data-animation="donk-bet"] .ga-seat[data-pos="6"] .ga-seat-cards{ animation:ga-donk-pre-cards 7s ease 0s infinite; }
.ga-stage[data-animation="donk-bet"] .ga-seat[data-pos="5"] .ga-seat-cards{ animation:ga-donk-pre-cards 7s ease .06s infinite; }
.ga-stage[data-animation="donk-bet"] .ga-seat[data-pos="4"] .ga-seat-cards{ animation:ga-donk-pre-cards 7s ease .12s infinite; }
.ga-stage[data-animation="donk-bet"] .ga-seat[data-pos="3"] .ga-seat-cards{ animation:ga-donk-pre-cards 7s ease .18s infinite; }

/* Mid cascade BTN, SB foldean tras CO open (22-28%) */
.ga-stage[data-animation="donk-bet"] .ga-seat[data-pos="1"]{ animation:ga-donk-mid-fold 7s ease 0s infinite; }
.ga-stage[data-animation="donk-bet"] .ga-seat[data-pos="8"]{ animation:ga-donk-mid-fold 7s ease .06s infinite; }
.ga-stage[data-animation="donk-bet"] .ga-seat[data-pos="1"] .ga-seat-cards{ animation:ga-donk-mid-cards 7s ease 0s infinite; }
.ga-stage[data-animation="donk-bet"] .ga-seat[data-pos="8"] .ga-seat-cards{ animation:ga-donk-mid-cards 7s ease .06s infinite; }

/* Flop reveal 42-52% */
.ga-stage[data-animation="donk-bet"] .ga-board-card:nth-child(1){ animation:ga-donk-flop-reveal 7s ease 0s infinite; }
.ga-stage[data-animation="donk-bet"] .ga-board-card:nth-child(2){ animation:ga-donk-flop-reveal 7s ease .08s infinite; }
.ga-stage[data-animation="donk-bet"] .ga-board-card:nth-child(3){ animation:ga-donk-flop-reveal 7s ease .16s infinite; }

@keyframes ga-donk-pre-fold{
  0%, 3%   {
    width:74px; height:74px; margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px; opacity:1; filter:saturate(1);
  }
  10%, 100% {
    width:64px; height:64px; margin-left:-32px; margin-top:-32px;
    padding:0; opacity:.4; filter:saturate(.4);
  }
}
@keyframes ga-donk-pre-cards{
  0%, 3%    { opacity:1; height:auto; }
  10%, 100% { opacity:0; height:0; }
}
@keyframes ga-donk-mid-fold{
  0%, 22%   {
    width:74px; height:74px; margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px; opacity:1; filter:saturate(1);
  }
  28%, 100% {
    width:64px; height:64px; margin-left:-32px; margin-top:-32px;
    padding:0; opacity:.4; filter:saturate(.4);
  }
}
@keyframes ga-donk-mid-cards{
  0%, 22%   { opacity:1; height:auto; }
  28%, 100% { opacity:0; height:0; }
}
@keyframes ga-donk-co-open{
  0%, 12%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  18%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  24%, 38%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  44%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
@keyframes ga-donk-hero-defend{
  0%, 32%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  38%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  42%, 44%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  50%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
@keyframes ga-donk-hero-donk{
  0%, 58%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  64%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  68%, 92%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
@keyframes ga-donk-blind-fade{
  0%, 38%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  44%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
@keyframes ga-donk-flop-reveal{
  0%, 42%   { opacity:0; transform:scale(.7); }
  48%       { opacity:1; transform:scale(1.1); }
  52%, 92%  { opacity:1; transform:scale(1); }
  98%, 100% { opacity:0; transform:scale(.7); }
}

/* Pot textual donk: 2.5→5(open)→6.5(defend)→6.5(flop)→10.5(donk) */
.ga-stage[data-animation="donk-bet"] .ga-pot[data-step="0"]{ animation:ga-pot-donk-s0 7s ease infinite; }
.ga-stage[data-animation="donk-bet"] .ga-pot[data-step="1"]{ animation:ga-pot-donk-s1 7s ease infinite; }
.ga-stage[data-animation="donk-bet"] .ga-pot[data-step="2"]{ animation:ga-pot-donk-s2 7s ease infinite; }
.ga-stage[data-animation="donk-bet"] .ga-pot[data-step="3"]{ animation:ga-pot-donk-s3 7s ease infinite; }
@keyframes ga-pot-donk-s0{ 0%, 14% { opacity:1; transform:translate(-50%,-50%) scale(1); } 20%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }
@keyframes ga-pot-donk-s1{ 0%, 14% { opacity:0; transform:translate(-50%,-50%) scale(.92); } 22% { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); } 28%, 36% { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; } 42%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }
@keyframes ga-pot-donk-s2{ 0%, 36% { opacity:0; transform:translate(-50%,-50%) scale(.92); } 42% { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); } 48%, 60% { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; } 66%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }
@keyframes ga-pot-donk-s3{ 0%, 60% { opacity:0; transform:translate(-50%,-50%) scale(.92); } 68% { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); } 74%, 92% { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; } 98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }

/* Pot consolidado donk: 1→6.5 al flop */
.ga-stage[data-animation="donk-bet"] .ga-pot-chips-label[data-step="0"]{ animation:ga-pot-chips-donk-s0 7s ease infinite; }
.ga-stage[data-animation="donk-bet"] .ga-pot-chips-label[data-step="1"]{ animation:ga-pot-chips-donk-s1 7s ease infinite; }
@keyframes ga-pot-chips-donk-s0{ 0%, 45% { opacity:1; } 50%, 100% { opacity:0; } }
@keyframes ga-pot-chips-donk-s1{ 0%, 45% { opacity:0; } 52%, 92% { opacity:1; } 98%, 100% { opacity:0; } }

/* ============================================================
   TANDA 3 — BLUFF VS VALUE (6s)
   Hero CO hace c-bet en flop A♥7♣2♦.
   Las cartas de hero ALTERNAN entre value (A♣K♣) y bluff (6♣5♣).
   Cubre: bluff, semi-bluff, fast-play, value-bet, stab
   Secuencia (6s):
   0-50%   Hero con A♣K♣ (VALUE), c-bet visible
   50%     Cartas hacen flip
   50-100% Hero con 6♣5♣ (BLUFF/SEMI-BLUFF), c-bet visible (mismo)
   ============================================================ */

.ga-stage[data-animation="bluff-value"] .ga-logo{ opacity:.4; }

/* Stack hero c-bet visible TODO el loop (la acción es la misma con value y bluff) */
.ga-stage[data-animation="bluff-value"] .ga-stack[data-from="2"][data-role="cbet"]{
  display:block;
  animation:ga-bv-cbet-stack 6s ease infinite;
}
/* BB en seat 7 visible con cartas back (defendió) */
/* Flop visible TODO el loop (ya está ahí) */
.ga-stage[data-animation="bluff-value"] .ga-board-card{
  animation:ga-bv-board 6s ease infinite;
}

/* Flip 3D de las cartas del hero a mitad de loop */
.ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="2"] .ga-seat-cards{
  perspective:600px;
}
.ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="2"] .ga-card-value{
  animation:ga-bv-card-flip-out 6s ease infinite;
  transform-style:preserve-3d;
  backface-visibility:hidden;
}
.ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="2"] .ga-card-bluff{
  animation:ga-bv-card-flip-in 6s ease infinite;
  transform-style:preserve-3d;
  backface-visibility:hidden;
  position:absolute;
  inset:0;
}
.ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="2"] .ga-seat-cards{
  position:relative;
}
.ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="2"] .ga-card-pair{
  position:relative;
  width:23px;
  height:32px;
  display:inline-block;
}
.ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="2"] .ga-card-pair:nth-child(1){ transform:rotate(-4deg); }
.ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="2"] .ga-card-pair:nth-child(2){ transform:rotate(4deg); margin-left:-2px; }

/* Cartas de bluff arrancan ocultas en bluff-value */
.ga-stage[data-animation="bluff-value"] .ga-card-bluff{ opacity:0; }

@keyframes ga-bv-card-flip-out{
  0%, 40%   { opacity:1; transform:rotateY(0deg); }
  50%       { opacity:1; transform:rotateY(90deg); }
  /* fade en flip */
  51%, 92%  { opacity:0; transform:rotateY(180deg); }
  98%, 100% { opacity:1; transform:rotateY(0deg); }
}
@keyframes ga-bv-card-flip-in{
  0%, 49%   { opacity:0; transform:rotateY(-180deg); }
  50%       { opacity:0; transform:rotateY(-90deg); }
  51%       { opacity:1; transform:rotateY(0deg); }
  60%, 92%  { opacity:1; transform:rotateY(0deg); }
  98%, 100% { opacity:0; transform:rotateY(-180deg); }
}

/* Pre cascade UTG → HJ + BB seat con cartas back, BTN/SB foldeados */
.ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="6"]{
  width:64px; height:64px; margin-left:-32px; margin-top:-32px;
  padding:0; opacity:.4; filter:saturate(.4);
}
.ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="5"], .ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="4"], .ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="3"], .ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="1"], .ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="8"]{
  width:64px; height:64px; margin-left:-32px; margin-top:-32px;
  padding:0; opacity:.4; filter:saturate(.4);
}
.ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="6"] .ga-seat-cards, .ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="5"] .ga-seat-cards, .ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="4"] .ga-seat-cards, .ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="3"] .ga-seat-cards, .ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="1"] .ga-seat-cards, .ga-stage[data-animation="bluff-value"] .ga-seat[data-pos="8"] .ga-seat-cards{
  display:none;
}

/* Stack cbet siempre visible */
@keyframes ga-bv-cbet-stack{
  0%, 100%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
}
@keyframes ga-bv-board{
  0%, 100% { opacity:1; transform:scale(1); }
}

/* Pot textual bluff-value: constante 9.5 (es post-flop con cbet) */
.ga-stage[data-animation="bluff-value"] .ga-pot[data-step="0"]{ animation:none; opacity:1; }
.ga-stage[data-animation="bluff-value"] .ga-pot-chips-label[data-step="0"]{ animation:none; opacity:1; }

/* ============================================================
   TANDA 3 — SLOWPLAY (7s)
   Hero CO con A♠A♣, mano completa hasta el check del flop.
   Secuencia (7s):
   3-10%   Pre cascade UTG→HJ
   12-18%  Hero CO open 2.5 BB
   22-28%  BTN, SB foldean
   32-38%  BB defiende +1.5 BB
   42-52%  Flop A♥7♣2♦ aparece, blinds y open/defend chips se consolidan
   58-65%  BB checkea (✓ aparece sobre BB)
   72-82%  Hero (CO) checkea también — slowplay (✓ aparece sobre hero)
   82-95%  Frenazo con ambos ✓ visibles
   Pot textual: 2.5 → 5 → 6.5 (constante el resto)
   Pot consolidado: 1 → 6.5 (al flop)
   ============================================================ */

.ga-stage[data-animation="slowplay"] .ga-logo{ opacity:.4; }

/* CO open 2.5 BB */
.ga-stage[data-animation="slowplay"] .ga-stack[data-from="2"][data-role="open"]{
  display:block;
  animation:ga-sp-hero-open 7s ease infinite;
}
/* BB posted, defend */
.ga-stage[data-animation="slowplay"] .ga-stack[data-from="7"][data-role="posted"]{
  display:block;
  animation:ga-sp-blind-fade 7s ease infinite;
}
.ga-stage[data-animation="slowplay"] .ga-stack[data-from="7"][data-role="defend"]{
  display:block;
  animation:ga-sp-bb-defend 7s ease infinite;
}
/* SB posted */
.ga-stage[data-animation="slowplay"] .ga-stack[data-from="8"][data-role="posted"]{
  display:block;
  animation:ga-sp-blind-fade 7s ease infinite;
}
.ga-stage[data-animation="slowplay"] .ga-stack[data-from="8"]:not([data-role]){ display:none; }

/* Pre cascade UTG → HJ (3-10%) */
.ga-stage[data-animation="slowplay"] .ga-seat[data-pos="6"]{ animation:ga-sp-pre-fold 7s ease 0s infinite; }
.ga-stage[data-animation="slowplay"] .ga-seat[data-pos="5"]{ animation:ga-sp-pre-fold 7s ease .06s infinite; }
.ga-stage[data-animation="slowplay"] .ga-seat[data-pos="4"]{ animation:ga-sp-pre-fold 7s ease .12s infinite; }
.ga-stage[data-animation="slowplay"] .ga-seat[data-pos="3"]{ animation:ga-sp-pre-fold 7s ease .18s infinite; }
.ga-stage[data-animation="slowplay"] .ga-seat[data-pos="6"] .ga-seat-cards{ animation:ga-sp-pre-cards 7s ease 0s infinite; }
.ga-stage[data-animation="slowplay"] .ga-seat[data-pos="5"] .ga-seat-cards{ animation:ga-sp-pre-cards 7s ease .06s infinite; }
.ga-stage[data-animation="slowplay"] .ga-seat[data-pos="4"] .ga-seat-cards{ animation:ga-sp-pre-cards 7s ease .12s infinite; }
.ga-stage[data-animation="slowplay"] .ga-seat[data-pos="3"] .ga-seat-cards{ animation:ga-sp-pre-cards 7s ease .18s infinite; }

/* Mid cascade BTN, SB foldean (22-28%) */
.ga-stage[data-animation="slowplay"] .ga-seat[data-pos="1"]{ animation:ga-sp-mid-fold 7s ease 0s infinite; }
.ga-stage[data-animation="slowplay"] .ga-seat[data-pos="8"]{ animation:ga-sp-mid-fold 7s ease .06s infinite; }
.ga-stage[data-animation="slowplay"] .ga-seat[data-pos="1"] .ga-seat-cards{ animation:ga-sp-mid-cards 7s ease 0s infinite; }
.ga-stage[data-animation="slowplay"] .ga-seat[data-pos="8"] .ga-seat-cards{ animation:ga-sp-mid-cards 7s ease .06s infinite; }

/* Flop reveal 42-52% */
.ga-stage[data-animation="slowplay"] .ga-board-card:nth-child(1){ animation:ga-sp-flop-reveal 7s ease 0s infinite; }
.ga-stage[data-animation="slowplay"] .ga-board-card:nth-child(2){ animation:ga-sp-flop-reveal 7s ease .08s infinite; }
.ga-stage[data-animation="slowplay"] .ga-board-card:nth-child(3){ animation:ga-sp-flop-reveal 7s ease .16s infinite; }

/* CHECK indicators */
.ga-stage[data-animation="slowplay"] .ga-check-indicator-bb{
  display:block;
  animation:ga-sp-check-bb 7s ease infinite;
}
.ga-stage[data-animation="slowplay"] .ga-check-indicator-hero{
  display:block;
  animation:ga-sp-check-hero 7s ease infinite;
}

@keyframes ga-sp-pre-fold{
  0%, 3%   {
    width:74px; height:74px; margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px; opacity:1; filter:saturate(1);
  }
  10%, 100% {
    width:64px; height:64px; margin-left:-32px; margin-top:-32px;
    padding:0; opacity:.4; filter:saturate(.4);
  }
}
@keyframes ga-sp-pre-cards{
  0%, 3%    { opacity:1; height:auto; }
  10%, 100% { opacity:0; height:0; }
}
@keyframes ga-sp-mid-fold{
  0%, 22%   {
    width:74px; height:74px; margin-left:-37px; margin-top:-37px;
    padding:5px 4px 3px; opacity:1; filter:saturate(1);
  }
  28%, 100% {
    width:64px; height:64px; margin-left:-32px; margin-top:-32px;
    padding:0; opacity:.4; filter:saturate(.4);
  }
}
@keyframes ga-sp-mid-cards{
  0%, 22%   { opacity:1; height:auto; }
  28%, 100% { opacity:0; height:0; }
}
@keyframes ga-sp-hero-open{
  0%, 12%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  18%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  24%, 38%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  44%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
@keyframes ga-sp-bb-defend{
  0%, 32%   { opacity:0; transform:translate(-50%,-50%) scale(.7); }
  38%       { opacity:1; transform:translate(-50%,-50%) scale(1.15); }
  42%, 44%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
  50%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
@keyframes ga-sp-blind-fade{
  0%, 38%   { opacity:1; transform:translate(-50%,-50%) scale(1); }
  44%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.85); }
}
@keyframes ga-sp-flop-reveal{
  0%, 42%   { opacity:0; transform:scale(.7); }
  48%       { opacity:1; transform:scale(1.1); }
  52%, 92%  { opacity:1; transform:scale(1); }
  98%, 100% { opacity:0; transform:scale(.7); }
}
/* BB check indicator: aparece 58-65% y queda visible hasta el final */
@keyframes ga-sp-check-bb{
  0%, 56%   { opacity:0; transform:scale(.7); }
  62%       { opacity:1; transform:scale(1.15); }
  68%, 92%  { opacity:1; transform:scale(1); }
  98%, 100% { opacity:0; transform:scale(.7); }
}
/* Hero check indicator: aparece 72-82% y queda con pulso */
@keyframes ga-sp-check-hero{
  0%, 70%   { opacity:0; transform:scale(.7); }
  78%       { opacity:1; transform:scale(1.2); box-shadow:0 0 20px rgba(var(--primary-rgb),.5); }
  84%, 88%  { opacity:1; transform:scale(1); }
  91%       { opacity:1; transform:scale(1.08); }
  94%       { opacity:1; transform:scale(1); }
  98%, 100% { opacity:0; transform:scale(.7); }
}

/* CHECK INDICATOR — base (compartido entre BB y Hero) */
.ga-check-indicator-bb, .ga-check-indicator-hero{
  position:absolute;
  width:42px; height:42px;
  border-radius:50%;
  border:2px solid rgba(var(--primary-rgb),.85);
  background:rgba(var(--primary-rgb),.18);
  display:none;
  z-index:7;
  pointer-events:none;
  box-shadow:0 0 12px rgba(var(--primary-rgb),.35);
}
.ga-check-indicator-bb::before, .ga-check-indicator-hero::before{
  content:"✓";
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  font-family:var(--font-display);
  font-size:1.4rem;
  font-weight:900;
  color:var(--primary);
  text-shadow:0 0 8px rgba(var(--primary-rgb),.6);
}
/* BB indicator: encima del seat 7 (left side, mid) */
.ga-check-indicator-bb{
  left:8%; top:50%;
  margin-left:36px; margin-top:-21px;
}
/* Hero indicator: encima del seat 2 (CO, bottom-right) */
.ga-check-indicator-hero{
  left:79.7%; top:78.3%;
  margin-left:-21px; margin-top:-65px;
}

/* Pot textual slowplay: 2.5 → 5 (open) → 6.5 (defend, constante el resto) */
.ga-stage[data-animation="slowplay"] .ga-pot[data-step="0"]{ animation:ga-pot-sp-s0 7s ease infinite; }
.ga-stage[data-animation="slowplay"] .ga-pot[data-step="1"]{ animation:ga-pot-sp-s1 7s ease infinite; }
.ga-stage[data-animation="slowplay"] .ga-pot[data-step="2"]{ animation:ga-pot-sp-s2 7s ease infinite; }
@keyframes ga-pot-sp-s0{ 0%, 14% { opacity:1; transform:translate(-50%,-50%) scale(1); } 20%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }
@keyframes ga-pot-sp-s1{ 0%, 14% { opacity:0; transform:translate(-50%,-50%) scale(.92); } 22% { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); } 28%, 36% { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; } 42%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }
@keyframes ga-pot-sp-s2{ 0%, 36% { opacity:0; transform:translate(-50%,-50%) scale(.92); } 42% { opacity:1; transform:translate(-50%,-50%) scale(1.05); filter:drop-shadow(0 0 8px rgba(var(--primary-rgb),.6)); } 48%, 92% { opacity:1; transform:translate(-50%,-50%) scale(1); filter:none; } 98%, 100% { opacity:0; transform:translate(-50%,-50%) scale(.92); } }

/* Pot consolidado slowplay: 1 → 6.5 al flop */
.ga-stage[data-animation="slowplay"] .ga-pot-chips-label[data-step="0"]{ animation:ga-pot-chips-sp-s0 7s ease infinite; }
.ga-stage[data-animation="slowplay"] .ga-pot-chips-label[data-step="1"]{ animation:ga-pot-chips-sp-s1 7s ease infinite; }
@keyframes ga-pot-chips-sp-s0{ 0%, 45% { opacity:1; } 50%, 100% { opacity:0; } }
@keyframes ga-pot-chips-sp-s1{ 0%, 45% { opacity:0; } 52%, 92% { opacity:1; } 98%, 100% { opacity:0; } }

/* ============================================================
   TANDA 4 — BOARD REVEAL + BOARD TEXTURE
   Stages simplificadas: solo board + tags. Sin seats, sin pot, sin stacks.
   ============================================================ */

/* En Tanda 4, ocultamos elementos que no aplican */
.ga-stage[data-animation^="board-"] .ga-seat, .ga-stage[data-animation^="board-"] .ga-pot, .ga-stage[data-animation^="board-"] .ga-pot-chips, .ga-stage[data-animation^="board-"] .ga-stack, .ga-stage[data-animation^="board-"] .ga-button{
  display:none;
}
.ga-stage[data-animation^="board-"] .ga-logo{
  opacity:.55;
}

/* En Tanda 4 el board se centra completo en la mesa */
.ga-stage[data-animation^="board-"] .ga-board{
  top:48%;
}

/* ============================================================
   BOARD TEXTURE — tags textuales
   Aparecen debajo del board mostrando las propiedades del flop.
   ============================================================ */
.ga-board-tags{
  position:absolute;
  left:50%;
  top:75%;
  transform:translate(-50%,-50%);
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  justify-content:center;
  max-width:85%;
  z-index:3;
  pointer-events:none;
}
.ga-board-tag{
  font-family:var(--font-body);
  font-size:.55rem;
  font-weight:800;
  letter-spacing:.12em;
  text-transform:uppercase;
  padding:.25rem .55rem;
  border-radius:3px;
  background:rgba(0,46,103,.85);
  border:1px solid rgba(var(--primary-rgb),.5);
  color:var(--primary);
  text-shadow:0 0 6px rgba(var(--primary-rgb),.4);
  box-shadow:
    0 2px 5px rgba(0,0,0,.45),
    inset 0 1px 0 rgba(var(--primary-rgb),.18);
  white-space:nowrap;
  opacity:0;
}

/* ============================================================
   A1 — FLOP REVEAL (4s loop)
   Vacío → 3 cartas aparecen una a una → flop completo → loop
   ============================================================ */
.ga-stage[data-animation="board-flop"] .ga-board-card:nth-child(1){
  animation:ga-bf-card1 4s ease infinite;
}
.ga-stage[data-animation="board-flop"] .ga-board-card:nth-child(2){
  animation:ga-bf-card2 4s ease infinite;
}
.ga-stage[data-animation="board-flop"] .ga-board-card:nth-child(3){
  animation:ga-bf-card3 4s ease infinite;
}
@keyframes ga-bf-card1{
  0%, 5%    { opacity:0; transform:scale(.5) rotateY(180deg); }
  18%       { opacity:1; transform:scale(1.15) rotateY(0deg); }
  25%, 88%  { opacity:1; transform:scale(1) rotateY(0deg); }
  96%, 100% { opacity:0; transform:scale(.7) rotateY(0deg); }
}
@keyframes ga-bf-card2{
  0%, 25%   { opacity:0; transform:scale(.5) rotateY(180deg); }
  38%       { opacity:1; transform:scale(1.15) rotateY(0deg); }
  45%, 88%  { opacity:1; transform:scale(1) rotateY(0deg); }
  96%, 100% { opacity:0; transform:scale(.7) rotateY(0deg); }
}
@keyframes ga-bf-card3{
  0%, 45%   { opacity:0; transform:scale(.5) rotateY(180deg); }
  58%       { opacity:1; transform:scale(1.15) rotateY(0deg); }
  65%, 88%  { opacity:1; transform:scale(1) rotateY(0deg); }
  96%, 100% { opacity:0; transform:scale(.7) rotateY(0deg); }
}

/* ============================================================
   A2 — TURN REVEAL (5s loop)
   Flop visible al inicio → 4ta carta aparece (turn) → loop
   ============================================================ */
.ga-stage[data-animation="board-turn"] .ga-board-card:nth-child(1), .ga-stage[data-animation="board-turn"] .ga-board-card:nth-child(2), .ga-stage[data-animation="board-turn"] .ga-board-card:nth-child(3){
  animation:ga-bt-flop 5s ease infinite;
}
.ga-stage[data-animation="board-turn"] .ga-board-card:nth-child(4){
  animation:ga-bt-turn 5s ease infinite;
}
@keyframes ga-bt-flop{
  0%, 5%    { opacity:0; transform:scale(.5); }
  15%       { opacity:1; transform:scale(1.15); }
  22%, 90%  { opacity:1; transform:scale(1); }
  96%, 100% { opacity:0; transform:scale(.7); }
}
@keyframes ga-bt-turn{
  0%, 40%   { opacity:0; transform:scale(.5) rotateY(180deg); }
  55%       { opacity:1; transform:scale(1.2) rotateY(0deg); filter:drop-shadow(0 0 12px rgba(var(--primary-rgb),.5)); }
  62%, 90%  { opacity:1; transform:scale(1) rotateY(0deg); filter:none; }
  96%, 100% { opacity:0; transform:scale(.7) rotateY(0deg); }
}

/* ============================================================
   A3 — RIVER REVEAL / RUNOUT (5s loop)
   Flop+turn visibles → 5ta carta aparece (river) → runout completo → loop
   ============================================================ */
.ga-stage[data-animation="board-river"] .ga-board-card:nth-child(1), .ga-stage[data-animation="board-river"] .ga-board-card:nth-child(2), .ga-stage[data-animation="board-river"] .ga-board-card:nth-child(3), .ga-stage[data-animation="board-river"] .ga-board-card:nth-child(4){
  animation:ga-br-existing 5s ease infinite;
}
.ga-stage[data-animation="board-river"] .ga-board-card:nth-child(5){
  animation:ga-br-river 5s ease infinite;
}
@keyframes ga-br-existing{
  0%, 5%    { opacity:0; transform:scale(.5); }
  15%       { opacity:1; transform:scale(1.1); }
  22%, 90%  { opacity:1; transform:scale(1); }
  96%, 100% { opacity:0; transform:scale(.7); }
}
@keyframes ga-br-river{
  0%, 45%   { opacity:0; transform:scale(.5) rotateY(180deg); }
  58%       { opacity:1; transform:scale(1.25) rotateY(0deg); filter:drop-shadow(0 0 14px rgba(var(--primary-rgb),.6)); }
  65%, 90%  { opacity:1; transform:scale(1) rotateY(0deg); filter:none; }
  96%, 100% { opacity:0; transform:scale(.7) rotateY(0deg); }
}

/* ============================================================
   A4 — RUN IT TWICE (6s loop)
   Split horizontal: 2 runouts paralelos con turn/river distintos
   ============================================================ */
.ga-board-twice{
  position:absolute;
  left:50%;
  top:48%;
  transform:translate(-50%,-50%);
  display:flex;
  flex-direction:column;
  gap:6px;
  z-index:2;
  pointer-events:none;
}
.ga-board-twice-row{
  display:flex;
  gap:3px;
  align-items:center;
}
.ga-board-twice-row::before{
  content:attr(data-label);
  font-family:var(--font-body);
  font-size:.5rem;
  font-weight:800;
  letter-spacing:.12em;
  color:var(--primary);
  margin-right:6px;
  white-space:nowrap;
  opacity:.7;
}
.ga-board-twice .ga-board-card{
  width:28px; height:38px;
}
.ga-board-twice .ga-board-card .ga-card-suit{
  font-size:.45rem;
}
.ga-board-twice .ga-board-card .ga-card-rank{
  font-size:1.35rem;
}

/* Flop común a ambos runouts: visible 5-25% y 30-95% */
.ga-stage[data-animation="board-rit"] .ga-board-twice-row .ga-board-card:nth-child(1), .ga-stage[data-animation="board-rit"] .ga-board-twice-row .ga-board-card:nth-child(2), .ga-stage[data-animation="board-rit"] .ga-board-twice-row .ga-board-card:nth-child(3){
  animation:ga-rit-flop 6s ease infinite;
}
/* Turn aparece 35-50% */
.ga-stage[data-animation="board-rit"] .ga-board-twice-row .ga-board-card:nth-child(4){
  animation:ga-rit-turn 6s ease infinite;
}
/* River aparece 55-70% */
.ga-stage[data-animation="board-rit"] .ga-board-twice-row .ga-board-card:nth-child(5){
  animation:ga-rit-river 6s ease infinite;
}
@keyframes ga-rit-flop{
  0%, 3%    { opacity:0; transform:scale(.5); }
  10%       { opacity:1; transform:scale(1.1); }
  16%, 92%  { opacity:1; transform:scale(1); }
  98%, 100% { opacity:0; transform:scale(.7); }
}
@keyframes ga-rit-turn{
  0%, 30%   { opacity:0; transform:scale(.5) rotateY(180deg); }
  42%       { opacity:1; transform:scale(1.2) rotateY(0deg); filter:drop-shadow(0 0 10px rgba(var(--primary-rgb),.5)); }
  48%, 92%  { opacity:1; transform:scale(1) rotateY(0deg); filter:none; }
  98%, 100% { opacity:0; transform:scale(.7); }
}
@keyframes ga-rit-river{
  0%, 50%   { opacity:0; transform:scale(.5) rotateY(180deg); }
  62%       { opacity:1; transform:scale(1.2) rotateY(0deg); filter:drop-shadow(0 0 10px rgba(var(--primary-rgb),.5)); }
  68%, 92%  { opacity:1; transform:scale(1) rotateY(0deg); filter:none; }
  98%, 100% { opacity:0; transform:scale(.7); }
}

/* ============================================================
   GRUPO B — BOARD TEXTURE (B1-B5)
   Loop 5s: flop fade-in al inicio, tags fade-in con stagger.
   ============================================================ */

/* Flop reveal compartido para texture animations (5s) */
.ga-stage[data-animation^="board-tex-"] .ga-board-card:nth-child(1){
  animation:ga-btex-card 5s ease 0s infinite;
}
.ga-stage[data-animation^="board-tex-"] .ga-board-card:nth-child(2){
  animation:ga-btex-card 5s ease .08s infinite;
}
.ga-stage[data-animation^="board-tex-"] .ga-board-card:nth-child(3){
  animation:ga-btex-card 5s ease .16s infinite;
}
@keyframes ga-btex-card{
  0%, 5%    { opacity:0; transform:scale(.5); }
  15%       { opacity:1; transform:scale(1.1); }
  22%, 92%  { opacity:1; transform:scale(1); }
  98%, 100% { opacity:0; transform:scale(.7); }
}

/* Tags fade-in con stagger después del flop */
.ga-stage[data-animation^="board-tex-"] .ga-board-tag:nth-child(1){
  animation:ga-btex-tag 5s ease 0s infinite;
}
.ga-stage[data-animation^="board-tex-"] .ga-board-tag:nth-child(2){
  animation:ga-btex-tag 5s ease .15s infinite;
}
.ga-stage[data-animation^="board-tex-"] .ga-board-tag:nth-child(3){
  animation:ga-btex-tag 5s ease .3s infinite;
}
.ga-stage[data-animation^="board-tex-"] .ga-board-tag:nth-child(4){
  animation:ga-btex-tag 5s ease .45s infinite;
}
.ga-stage[data-animation^="board-tex-"] .ga-board-tag:nth-child(5){
  animation:ga-btex-tag 5s ease .6s infinite;
}
@keyframes ga-btex-tag{
  0%, 28%   { opacity:0; transform:translateY(8px); }
  40%       { opacity:1; transform:translateY(-3px); }
  46%, 88%  { opacity:1; transform:translateY(0); }
  96%, 100% { opacity:0; transform:translateY(8px); }
}

.ga-stage.ga-paused, .ga-stage.ga-paused *{
  animation-play-state:paused !important;
}

/* ============================================================
   FALLBACK PARA prefers-reduced-motion
   ------------------------------------------------------------
   Cuando el sistema pide movimiento reducido, NO matamos la
   animación (eso dejaría la mesa vacía en frame 0). En su lugar
   la CONGELAMOS en un frame representativo usando animation-delay
   negativo + play-state paused. Así se ve la acción "ya hecha".

   El frame congelado se elige por familia de animación para que
   caiga en su momento más ilustrativo (acción completada, board
   revelado, pot final).

   Si el usuario hace click en "Ver en movimiento" (clase
   .ga-force-motion en el stage), se re-activa el movimiento real
   ignorando la preferencia (decisión consciente del usuario).
   ============================================================ */
@media (prefers-reduced-motion: reduce){

  /* Por defecto: congelar todas las animaciones en un frame avanzado.
     -85% del ciclo aproxima el momento donde la acción ya ocurrió
     en la mayoría de las animaciones (loops de 5-8s). */
  .ga-stage:not(.ga-force-motion) *{
    animation-play-state:paused !important;
    animation-delay:-6.5s !important;
  }

  /* Ajustes finos por familia para que el frame congelado sea
     el más representativo según la duración del loop. */

  /* Loops cortos (board reveal flop ~4s): congelar con flop revelado */
  .ga-stage[data-animation="board-flop"]:not(.ga-force-motion) *{
    animation-delay:-3.4s !important;
  }
  /* Board turn/river/texture (~5s): cartas reveladas */
  .ga-stage[data-animation="board-turn"]:not(.ga-force-motion) *,
  .ga-stage[data-animation="board-river"]:not(.ga-force-motion) *,
  .ga-stage[data-animation^="board-tex-"]:not(.ga-force-motion) *{
    animation-delay:-4.4s !important;
  }
  /* Run it twice (~6s): ambos runouts completos */
  .ga-stage[data-animation="board-rit"]:not(.ga-force-motion) *{
    animation-delay:-5.4s !important;
  }
  /* Loops de 5s (open, limp, cold-call simples): acción de hero hecha */
  .ga-stage[data-animation="open"]:not(.ga-force-motion) *,
  .ga-stage[data-animation="limp"]:not(.ga-force-motion) *,
  .ga-stage[data-animation="cold-call"]:not(.ga-force-motion) *{
    animation-delay:-4.5s !important;
  }
  /* Loops de 7s (cbet, squeeze): apuesta hecha, pot grande */
  .ga-stage[data-animation="cbet"]:not(.ga-force-motion) *,
  .ga-stage[data-animation="squeeze"]:not(.ga-force-motion) *,
  .ga-stage[data-animation="donk-bet"]:not(.ga-force-motion) *{
    animation-delay:-6.4s !important;
  }
  /* Loops de 8s (delayed-cbet, double-barrel, slowplay): secuencia final */
  .ga-stage[data-animation="delayed-cbet"]:not(.ga-force-motion) *,
  .ga-stage[data-animation="double-barrel"]:not(.ga-force-motion) *,
  .ga-stage[data-animation="slowplay"]:not(.ga-force-motion) *{
    animation-delay:-7.3s !important;
  }
  /* Bluff vs value (~6s): mostrar la mano de valor (primera mitad) */
  .ga-stage[data-animation="bluff-value"]:not(.ga-force-motion) *{
    animation-delay:-2.5s !important;
  }
  /* Fold (~5s): a mitad — algunos foldearon, se entiende el concepto */
  .ga-stage[data-animation="fold"]:not(.ga-force-motion) *{
    animation-delay:-2.6s !important;
  }

  /* Si el usuario forzó movimiento (.ga-force-motion): correr normal */
  .ga-stage.ga-force-motion *{
    animation-play-state:running !important;
    animation-delay:revert !important;
  }
}

/* Botón "Ver en movimiento" — solo se muestra cuando hace falta.
   Por defecto oculto; el JS lo muestra si detecta reduced-motion. */
.ga-motion-toggle{
  display:none;
  margin:.6rem auto 0;
  padding:.5rem 1.1rem;
  border-radius:6px;
  border:1px solid rgba(var(--primary-rgb),.45);
  background:linear-gradient(180deg, rgba(20,129,192,.35), rgba(13,85,137,.55));
  color:#fff;
  font-family:var(--font-body, 'Montserrat', sans-serif);
  font-size:.74rem;
  font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
  cursor:pointer;
  transition:all .15s;
}
.ga-motion-toggle:hover{
  border-color:var(--primary);
  background:linear-gradient(180deg, rgba(20,129,192,.5), rgba(13,85,137,.7));
}
body.lif-reduced-motion .ga-motion-toggle{
  display:block;
}