/* Emojis vivos — animaciones de reposo a 20 FPS y remates táctiles.
   Solo transform/opacity para que el navegador pueda acelerar por hardware. */

.emoji-vivo {
  display: inline-block;
  vertical-align: -0.08em;
  line-height: 1;
  cursor: pointer;
  user-select: none;
  -webkit-user-select: none;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  transform: translateZ(0);
  will-change: transform;
  transform-origin: 50% 80%;
}
.emoji-vivo:focus-visible { outline: 2px solid var(--azul-3, #2d9cdb); outline-offset: 3px; border-radius: 4px; }

/* 🍀 balanceo pendular */
.emoji-trebol { animation: emoji-swing 2.4s steps(20) infinite; transform-origin: 50% 90%; }
@keyframes emoji-swing {
  0%, 100% { transform: translateZ(0) rotate(-9deg); }
  25% { transform: translateZ(0) rotate(7deg); }
  50% { transform: translateZ(0) rotate(-6deg); }
  75% { transform: translateZ(0) rotate(4deg); }
}

/* 🎱 giro continuo */
.emoji-bola { animation: emoji-spin 3.2s steps(20) infinite; transform-origin: 50% 50%; }
@keyframes emoji-spin {
  from { transform: translateZ(0) rotate(0deg); }
  to { transform: translateZ(0) rotate(360deg); }
}

/* 🔥 llama viva */
.emoji-fuego { animation: emoji-flicker 1.15s steps(20) infinite alternate; transform-origin: 50% 90%; }
@keyframes emoji-flicker {
  0% { transform: translateZ(0) scale(1) rotate(-2deg); opacity: .94; }
  35% { transform: translateZ(0) scale(1.07, .96) rotate(2deg); opacity: 1; }
  70% { transform: translateZ(0) scale(.97, 1.06) rotate(-1deg); opacity: .96; }
  100% { transform: translateZ(0) scale(1.03, .98) rotate(2deg); opacity: 1; }
}

/* ❤️ latido doble */
.emoji-corazon { animation: emoji-heartbeat 1.9s steps(20) infinite; transform-origin: 50% 55%; }
@keyframes emoji-heartbeat {
  0%, 100% { transform: translateZ(0) scale(1); }
  12% { transform: translateZ(0) scale(1.18); }
  24% { transform: translateZ(0) scale(1); }
  36% { transform: translateZ(0) scale(1.13); }
  48% { transform: translateZ(0) scale(1); }
  60% { transform: translateZ(0) scale(1); }
}

/* 💰 / 💵 pulso con destello dorado */
.emoji-dinero, .emoji-billete { animation: emoji-gold 2.1s steps(20) infinite; transform-origin: 50% 60%; text-shadow: 0 0 4px rgba(255, 193, 7, .35); }
@keyframes emoji-gold {
  0%, 100% { transform: translateZ(0) scale(1); opacity: .96; }
  45% { transform: translateZ(0) scale(1.09); opacity: 1; }
  60% { transform: translateZ(0) scale(1.04); opacity: .98; }
}

/* 🏍️ / 🚗 vibración de aceleración */
.emoji-moto, .emoji-auto { animation: emoji-rev 1.05s steps(20) infinite; transform-origin: 50% 65%; }
@keyframes emoji-rev {
  0%, 100% { transform: translateZ(0) translate(0, 0) rotate(0deg); }
  20% { transform: translateZ(0) translate(-1px, 0) rotate(-1.5deg); }
  40% { transform: translateZ(0) translate(1px, 0) rotate(1.5deg); }
  60% { transform: translateZ(0) translate(-1px, 0) rotate(-1deg); }
  80% { transform: translateZ(0) translate(1px, 0) rotate(1deg); }
}

/* 🏆 flote sereno */
.emoji-trofeo { animation: emoji-float 3s steps(20) infinite; transform-origin: 50% 55%; }
@keyframes emoji-float {
  0%, 100% { transform: translateZ(0) translateY(0) rotate(-1deg); }
  50% { transform: translateZ(0) translateY(-5px) rotate(1deg); }
}

/* Salto elástico al toque simple */
.emoji-vivo.emoji-salto {
  animation: emoji-jump 560ms cubic-bezier(.2, 1.75, .4, 1);
}
@keyframes emoji-jump {
  0% { transform: translateZ(0) scale(1); }
  35% { transform: translateZ(0) translateY(-4px) scale(1.35); }
  68% { transform: translateZ(0) translateY(1px) scale(.94); }
  100% { transform: translateZ(0) translateY(0) scale(1); }
}

/* Comentarios o mensajes que solo tienen 1 a 3 emojis */
.texto-mega { line-height: 1.15; }
.texto-mega .emoji-vivo { font-size: 44px !important; vertical-align: middle; }

/* Capa de efectos especiales */
.emoji-vivos-capa {
  position: fixed;
  inset: 0;
  z-index: 99999;
  overflow: hidden;
  pointer-events: none;
  contain: strict;
}
.emoji-clon {
  position: fixed;
  display: inline-block;
  pointer-events: none;
  user-select: none;
  -webkit-user-select: none;
  will-change: transform, opacity;
  transform-origin: 50% 50%;
  filter: drop-shadow(0 4px 7px rgba(0, 0, 0, .18));
}
.emoji-teleport-eco { filter: drop-shadow(0 0 8px rgba(45, 156, 219, .55)); }

@media (prefers-reduced-motion: reduce) {
  .emoji-vivo { animation: none !important; }
  .emoji-vivo.emoji-salto { animation: emoji-jump 300ms ease-out !important; }
  .emoji-mate::after { animation: none !important; opacity: 0 !important; }
}

/* ============================================================
   CATÁLOGO AMPLIADO · micro-movimientos de reposo a 20 FPS
   ============================================================ */

/* Bingo y premios */
.emoji-tragamonedas {
  animation: emoji-slot 1.7s steps(20) infinite;
  transform-origin: 50% 82%;
  filter: drop-shadow(0 0 3px rgba(255, 193, 7, .45));
}
@keyframes emoji-slot {
  0%, 100% { transform: translateZ(0) translateY(0) scale(1); filter: drop-shadow(0 0 2px rgba(255, 193, 7, .2)); }
  25% { transform: translateZ(0) translateY(-3px) scale(1.03); filter: drop-shadow(0 0 7px rgba(255, 193, 7, .65)); }
  50% { transform: translateZ(0) translateY(0) scale(.99); filter: drop-shadow(0 0 3px rgba(255, 193, 7, .3)); }
  75% { transform: translateZ(0) translateY(-1.5px) scale(1.02); filter: drop-shadow(0 0 6px rgba(255, 193, 7, .5)); }
}

.emoji-corona {
  animation: emoji-crown 2.8s steps(20) infinite;
  transform-origin: 50% 88%;
  filter: drop-shadow(0 2px 4px rgba(255, 193, 7, .3));
}
@keyframes emoji-crown {
  0%, 100% { transform: translateZ(0) rotate(-5deg) translateY(0); }
  50% { transform: translateZ(0) rotate(5deg) translateY(-2px); }
}

.emoji-diamante {
  animation: emoji-diamond 2.2s steps(20) infinite;
  transform-origin: 50% 55%;
}
@keyframes emoji-diamond {
  0%, 100% { transform: translateZ(0) scale(1); filter: brightness(1) drop-shadow(0 0 0 rgba(125, 211, 252, 0)); }
  45% { transform: translateZ(0) scale(1.12); filter: brightness(1.22) drop-shadow(0 0 5px rgba(125, 211, 252, .55)); }
  70% { transform: translateZ(0) scale(1.04); filter: brightness(1.08); }
}

.emoji-ticket {
  animation: emoji-ticket-float 2.7s steps(20) infinite;
  transform-origin: 50% 80%;
}
@keyframes emoji-ticket-float {
  0%, 100% { transform: translateZ(0) translateY(0) rotate(-2deg); }
  50% { transform: translateZ(0) translateY(-3px) rotate(2deg); }
}

/* Celebración y energía */
.emoji-fiesta, .emoji-confeti {
  animation: emoji-pendulum 2.1s steps(20) infinite;
  transform-origin: 50% 18%;
}
@keyframes emoji-pendulum {
  0%, 100% { transform: translateZ(0) rotate(-12deg); }
  50% { transform: translateZ(0) rotate(12deg); }
}

.emoji-explosion {
  animation: emoji-blast 1.3s steps(20) infinite;
  transform-origin: 50% 50%;
}
@keyframes emoji-blast {
  0%, 100% { transform: translateZ(0) scale(1); }
  30% { transform: translateZ(0) scale(1.2); }
  52% { transform: translateZ(0) scale(.94); }
  72% { transform: translateZ(0) scale(1.06); }
}

.emoji-chispas, .emoji-rayo {
  animation: emoji-spark 1.4s steps(20) infinite;
  transform-origin: 50% 50%;
}
@keyframes emoji-spark {
  0%, 100% { transform: translateZ(0) translate(0, 0) scale(1); opacity: .9; }
  25% { transform: translateZ(0) translate(-1px, 1px) scale(1.08); opacity: 1; }
  50% { transform: translateZ(0) translate(1px, -1px) scale(.96); opacity: .75; }
  75% { transform: translateZ(0) translate(0, 1px) scale(1.04); opacity: 1; }
}

.emoji-cohete {
  animation: emoji-rocket 1.8s steps(20) infinite;
  transform-origin: 50% 85%;
}
@keyframes emoji-rocket {
  0%, 100% { transform: translateZ(0) translate(0, 0) rotate(-45deg); }
  25% { transform: translateZ(0) translate(-1px, -2px) rotate(-42deg); }
  50% { transform: translateZ(0) translate(1px, -4px) rotate(-46deg); }
  75% { transform: translateZ(0) translate(-1px, -2px) rotate(-43deg); }
}

.emoji-reloj {
  animation: emoji-hourglass 2.6s steps(20) infinite;
  transform-origin: 50% 50%;
}
@keyframes emoji-hourglass {
  0%, 100% { transform: translateZ(0) rotate(0deg); }
  35% { transform: translateZ(0) rotate(5deg); }
  70% { transform: translateZ(0) rotate(-5deg); }
}

.emoji-bomba {
  animation: emoji-fuse 1.2s steps(20) infinite;
  transform-origin: 50% 72%;
}
@keyframes emoji-fuse {
  0%, 100% { transform: translateZ(0) rotate(-2deg) scale(1); filter: brightness(1); }
  20% { transform: translateZ(0) rotate(2deg) scale(1.04); filter: brightness(1.18); }
  40% { transform: translateZ(0) rotate(-2deg) scale(1); filter: brightness(1); }
  60% { transform: translateZ(0) rotate(1deg) scale(1.02); filter: brightness(1.1); }
}

/* Reacciones y caras */
.emoji-risa, .emoji-carcajada {
  animation: emoji-laugh 1.7s steps(20) infinite;
  transform-origin: 50% 80%;
}
@keyframes emoji-laugh {
  0%, 100% { transform: translateZ(0) translateY(0) rotate(-2deg); }
  50% { transform: translateZ(0) translateY(-3px) rotate(2deg); }
}

.emoji-amor, .emoji-estrellas {
  animation: emoji-eye-pulse 1.9s steps(20) infinite;
  transform-origin: 50% 52%;
}
@keyframes emoji-eye-pulse {
  0%, 100% { transform: translateZ(0) scale(1); }
  40% { transform: translateZ(0) scale(1.12); }
  62% { transform: translateZ(0) scale(1.02); }
}

.emoji-cool {
  animation: emoji-cool-float 2.4s steps(20) infinite;
  transform-origin: 50% 75%;
}
@keyframes emoji-cool-float {
  0%, 100% { transform: translateZ(0) translateY(0) rotate(0deg); }
  50% { transform: translateZ(0) translateY(-2px) rotate(-3deg); }
}

.emoji-fiesta-cara {
  animation: emoji-party-bounce 1.5s steps(20) infinite;
  transform-origin: 50% 80%;
}
@keyframes emoji-party-bounce {
  0%, 100% { transform: translateZ(0) translateY(0) rotate(-3deg); }
  35% { transform: translateZ(0) translateY(-3px) rotate(4deg); }
  68% { transform: translateZ(0) translateY(0) rotate(-2deg); }
}

.emoji-grito {
  animation: emoji-shout 1.1s steps(20) infinite;
  transform-origin: 50% 60%;
}
@keyframes emoji-shout {
  0%, 100% { transform: translateZ(0) translateX(0) scale(1); }
  20% { transform: translateZ(0) translateX(-2px) scale(1.05); }
  40% { transform: translateZ(0) translateX(2px) scale(1); }
  60% { transform: translateZ(0) translateX(-1px) scale(1.03); }
  80% { transform: translateZ(0) translateX(1px) scale(1); }
}

.emoji-pensativo {
  animation: emoji-think 2.8s steps(20) infinite;
  transform-origin: 50% 85%;
}
@keyframes emoji-think {
  0%, 100% { transform: translateZ(0) rotate(-3deg); }
  50% { transform: translateZ(0) rotate(3deg) translateY(-1px); }
}

.emoji-shh {
  animation: emoji-shh 2.2s steps(20) infinite;
  transform-origin: 50% 75%;
}
@keyframes emoji-shh {
  0%, 100% { transform: translateZ(0) scale(1); opacity: .92; }
  50% { transform: translateZ(0) scale(1.04); opacity: 1; }
}

.emoji-dinero-cara {
  animation: emoji-money-face 1.6s steps(20) infinite;
  transform-origin: 50% 70%;
}
@keyframes emoji-money-face {
  0%, 100% { transform: translateZ(0) skewX(0deg) scale(1); filter: brightness(1); }
  30% { transform: translateZ(0) skewX(3deg) scale(1.06); filter: brightness(1.12); }
  55% { transform: translateZ(0) skewX(-2deg) scale(1); }
  78% { transform: translateZ(0) skewX(2deg) scale(1.03); }
}

/* Gestos y símbolos */
.emoji-aplauso {
  animation: emoji-clap 1.05s steps(20) infinite;
  transform-origin: 50% 65%;
}
@keyframes emoji-clap {
  0%, 100% { transform: translateZ(0) scaleX(1) scaleY(1); }
  35% { transform: translateZ(0) scaleX(.88) scaleY(1.05); }
  70% { transform: translateZ(0) scaleX(1.1) scaleY(.96); }
}

.emoji-manos-arriba {
  animation: emoji-hands 1.5s steps(20) infinite;
  transform-origin: 50% 90%;
}
@keyframes emoji-hands {
  0%, 100% { transform: translateZ(0) translateY(0) scale(1); }
  45% { transform: translateZ(0) translateY(-3px) scale(1.04); }
}

.emoji-pulgar, .emoji-victoria, .emoji-manos {
  animation: emoji-gesture 2.3s steps(20) infinite;
  transform-origin: 50% 85%;
}
@keyframes emoji-gesture {
  0%, 100% { transform: translateZ(0) translateY(0) rotate(-2deg); }
  50% { transform: translateZ(0) translateY(-2px) rotate(2deg); }
}

.emoji-ojos {
  animation: emoji-look 2.9s steps(20) infinite;
  transform-origin: 50% 50%;
}
@keyframes emoji-look {
  0%, 100% { transform: translateZ(0) translateX(0); }
  30% { transform: translateZ(0) translateX(-2px); }
  60% { transform: translateZ(0) translateX(2px); }
}

.emoji-corazon-brillo {
  animation: emoji-heart-glow 2s steps(20) infinite;
  transform-origin: 50% 55%;
}
@keyframes emoji-heart-glow {
  0%, 100% { transform: translateZ(0) scale(1); filter: drop-shadow(0 0 0 rgba(244, 114, 182, 0)); }
  45% { transform: translateZ(0) scale(1.12); filter: drop-shadow(0 0 5px rgba(244, 114, 182, .48)); }
}

.emoji-cien {
  animation: emoji-stamp 1.4s steps(20) infinite;
  transform-origin: 50% 50%;
}
@keyframes emoji-stamp {
  0%, 100% { transform: translateZ(0) scale(1) rotate(-2deg); }
  30% { transform: translateZ(0) scale(1.15) rotate(1deg); filter: drop-shadow(0 0 4px rgba(239, 68, 68, .35)); }
  55% { transform: translateZ(0) scale(.97) rotate(-1deg); }
}

/* Típicos y varios */
.emoji-mate {
  animation: emoji-mate-sway 2.7s steps(20) infinite;
  transform-origin: 50% 88%;
  position: relative;
}
.emoji-mate::after {
  content: "~";
  position: absolute;
  left: 58%;
  top: -.45em;
  font-size: .55em;
  line-height: 1;
  color: #fff;
  opacity: 0;
  pointer-events: none;
  will-change: transform, opacity;
  animation: emoji-vapor 2.8s steps(20) infinite;
}
@keyframes emoji-mate-sway {
  0%, 100% { transform: translateZ(0) rotate(-3deg); }
  50% { transform: translateZ(0) rotate(3deg) translateY(-1px); }
}
@keyframes emoji-vapor {
  0%, 30% { transform: translate3d(0, 3px, 0) scale(.8); opacity: 0; }
  55% { opacity: .55; }
  100% { transform: translate3d(-2px, -8px, 0) scale(1.15); opacity: 0; }
}

.emoji-sol {
  animation: emoji-sun 3s steps(20) infinite;
  transform-origin: 50% 50%;
}
@keyframes emoji-sun {
  0%, 100% { transform: translateZ(0) rotate(0deg) scale(1); }
  50% { transform: translateZ(0) rotate(8deg) scale(1.06); }
}

.emoji-musica {
  animation: emoji-music 2.1s steps(20) infinite;
  transform-origin: 50% 75%;
}
@keyframes emoji-music {
  0%, 100% { transform: translateZ(0) translateY(0) rotate(-4deg); }
  50% { transform: translateZ(0) translateY(-3px) rotate(4deg); }
}

.emoji-diana {
  animation: emoji-target 1.8s steps(20) infinite;
  transform-origin: 50% 50%;
}
@keyframes emoji-target {
  0%, 100% { transform: translateZ(0) scale(1); }
  50% { transform: translateZ(0) scale(1.08); }
}

.emoji-campana, .emoji-megafono {
  animation: emoji-ring 1.25s steps(20) infinite;
  transform-origin: 50% 12%;
}
@keyframes emoji-ring {
  0%, 100% { transform: translateZ(0) rotate(-12deg); }
  25% { transform: translateZ(0) rotate(10deg); }
  50% { transform: translateZ(0) rotate(-8deg); }
  75% { transform: translateZ(0) rotate(12deg); }
}

/* ============================================================
   TANDA 2 · afecto, gestos, expresiones y música
   ============================================================ */

/* 😘 Beso: guiño sutil y corazón que flota */
.emoji-beso {
  position: relative;
  animation: emoji-kiss 3s steps(20) infinite;
  transform-origin: 50% 58%;
}
.emoji-beso::after {
  content: "♥";
  position: absolute;
  left: 76%;
  top: -.15em;
  font-size: .42em;
  line-height: 1;
  color: #fb7185;
  opacity: 0;
  pointer-events: none;
  will-change: transform, opacity;
  animation: emoji-kiss-heart 3s steps(20) infinite;
}
@keyframes emoji-kiss {
  0%, 12%, 82%, 100% { transform: translateZ(0) rotate(0deg) scale(1); }
  22% { transform: translateZ(0) rotate(-4deg) scale(1.02); }
  42% { transform: translateZ(0) rotate(0deg) scale(1); }
  90% { transform: translateZ(0) scaleY(.9) scaleX(1.02); }
}
@keyframes emoji-kiss-heart {
  0%, 8% { transform: translate3d(0, 2px, 0) scale(.7); opacity: 0; }
  38% { opacity: .8; }
  100% { transform: translate3d(7px, -10px, 0) scale(1.2) rotate(8deg); opacity: 0; }
}

/* 💕 Dos corazones: órbita pendular */
.emoji-dos-corazones {
  animation: emoji-two-hearts 2.4s steps(20) infinite;
  transform-origin: 50% 60%;
}
@keyframes emoji-two-hearts {
  0%, 100% { transform: translateZ(0) rotate(-6deg) translateY(0); }
  50% { transform: translateZ(0) rotate(6deg) translateY(-2px); }
}

/* 🥰 Carita con corazones: destellos alrededor */
.emoji-carita-corazones {
  position: relative;
  animation: emoji-love-face 2.3s steps(20) infinite;
  transform-origin: 50% 55%;
}
.emoji-carita-corazones::before,
.emoji-carita-corazones::after {
  content: "♥";
  position: absolute;
  color: #fda4af;
  font-size: .35em;
  line-height: 1;
  opacity: 0;
  pointer-events: none;
  will-change: transform, opacity;
  animation: emoji-love-spark 2.3s steps(20) infinite;
}
.emoji-carita-corazones::before { left: 4%; top: 12%; animation-delay: .2s; }
.emoji-carita-corazones::after { right: 2%; top: 28%; animation-delay: 1.1s; }
@keyframes emoji-love-face {
  0%, 100% { transform: translateZ(0) scale(1); }
  50% { transform: translateZ(0) scale(1.05) rotate(-1deg); }
}
@keyframes emoji-love-spark {
  0%, 35% { transform: translate3d(0, 3px, 0) scale(.65) rotate(0deg); opacity: 0; }
  55% { opacity: .8; }
  100% { transform: translate3d(-2px, -7px, 0) scale(1) rotate(28deg); opacity: 0; }
}

/* 🫶 Manos formando corazón: latido suave */
.emoji-manos-corazon {
  animation: emoji-hands-heart 1.9s steps(20) infinite;
  transform-origin: 50% 62%;
}
@keyframes emoji-hands-heart {
  0%, 100% { transform: translateZ(0) scale(1); filter: drop-shadow(0 0 0 rgba(251, 113, 133, 0)); }
  35% { transform: translateZ(0) scale(1.13); filter: drop-shadow(0 0 5px rgba(251, 113, 133, .4)); }
  55% { transform: translateZ(0) scale(1.02); }
}

/* 👌 OK: balanceo elegante */
.emoji-ok {
  animation: emoji-ok 2.8s steps(20) infinite;
  transform-origin: 50% 80%;
}
@keyframes emoji-ok {
  0%, 100% { transform: translateZ(0) rotate(-10deg) translateX(0); }
  45% { transform: translateZ(0) rotate(10deg) translateX(1px); }
  70% { transform: translateZ(0) rotate(2deg) translateX(2px); }
}

/* 👍 Aprobación: rebote vertical */
.emoji-pulgar {
  animation: emoji-thumb 1.8s steps(20) infinite;
  transform-origin: 50% 88%;
}
@keyframes emoji-thumb {
  0%, 100% { transform: translateZ(0) translateY(0) rotate(-2deg); }
  30% { transform: translateZ(0) translateY(-4px) rotate(2deg); }
  52% { transform: translateZ(0) translateY(1px) rotate(-1deg); }
  72% { transform: translateZ(0) translateY(-1px); }
}

/* ✌️ Victoria: oscilación angular */
.emoji-victoria {
  animation: emoji-peace 1.9s steps(20) infinite;
  transform-origin: 50% 88%;
}
@keyframes emoji-peace {
  0%, 100% { transform: translateZ(0) rotate(-9deg); }
  50% { transform: translateZ(0) rotate(9deg); }
}

/* 🤞 Dedos cruzados: cábala nerviosa */
.emoji-dedos-cruzados {
  animation: emoji-crossed 1.1s steps(20) infinite;
  transform-origin: 50% 85%;
}
@keyframes emoji-crossed {
  0%, 100% { transform: translateZ(0) rotate(-1deg) translateX(0); }
  25% { transform: translateZ(0) rotate(1.5deg) translateX(-1px); }
  50% { transform: translateZ(0) rotate(-1deg) translateX(1px); }
  75% { transform: translateZ(0) rotate(1deg) translateX(0); }
}

/* 💪 Músculo: tensión y rebote */
.emoji-musculo {
  animation: emoji-muscle 1.6s steps(20) infinite;
  transform-origin: 50% 65%;
}
@keyframes emoji-muscle {
  0%, 100% { transform: translateZ(0) scale(1) rotate(0deg); }
  28% { transform: translateZ(0) scale(1.14) rotate(-3deg); }
  48% { transform: translateZ(0) scale(.98) rotate(2deg); }
  65% { transform: translateZ(0) scale(1.06) rotate(-1deg); }
}

/* 🤲 / 🙏 Gratitud: elevación y destello */
.emoji-manos-abiertas, .emoji-rezo {
  animation: emoji-gratitude 2.8s steps(20) infinite;
  transform-origin: 50% 85%;
}
@keyframes emoji-gratitude {
  0%, 100% { transform: translateZ(0) translateY(0) scale(1); filter: drop-shadow(0 0 0 rgba(255, 237, 179, 0)); }
  45% { transform: translateZ(0) translateY(-3px) scale(1.04); filter: drop-shadow(0 0 5px rgba(255, 237, 179, .45)); }
  68% { transform: translateZ(0) translateY(-1px) scale(1); }
}

/* 😉 Guiño recurrente */
.emoji-guino {
  animation: emoji-wink 3s steps(20) infinite;
  transform-origin: 50% 55%;
}
@keyframes emoji-wink {
  0%, 78%, 88%, 100% { transform: translateZ(0) scale(1, 1); }
  82% { transform: translateZ(0) scale(1.03, .82); }
  85% { transform: translateZ(0) scale(1.01, 1); }
}

/* 😎 Lentes: ajuste y destello */
.emoji-cool {
  position: relative;
  animation: emoji-lens 2.8s steps(20) infinite;
  transform-origin: 50% 52%;
}
.emoji-cool::after {
  content: "";
  position: absolute;
  left: 12%;
  top: 30%;
  width: 31%;
  height: 2px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .85);
  transform: rotate(-14deg) scaleX(0);
  opacity: 0;
  pointer-events: none;
  animation: emoji-lens-shine 2.8s steps(20) infinite;
}
@keyframes emoji-lens {
  0%, 100% { transform: translateZ(0) rotate(0deg) translateY(0); }
  35% { transform: translateZ(0) rotate(-2deg) translateY(-1px); }
  55% { transform: translateZ(0) rotate(1deg); }
}
@keyframes emoji-lens-shine {
  0%, 42%, 100% { transform: rotate(-14deg) scaleX(0); opacity: 0; }
  48% { transform: rotate(-14deg) scaleX(1); opacity: .85; }
  56% { transform: rotate(-14deg) translateX(8px) scaleX(.4); opacity: 0; }
}

/* 😁 Sonrisa radiante */
.emoji-sonrisa {
  animation: emoji-grin 2.5s steps(20) infinite;
  transform-origin: 50% 65%;
}
@keyframes emoji-grin {
  0%, 100% { transform: translateZ(0) scale(1); filter: drop-shadow(0 0 0 rgba(253, 224, 71, 0)); }
  45% { transform: translateZ(0) scale(1.04) scaleX(1.02); filter: drop-shadow(0 0 5px rgba(253, 224, 71, .3)); }
  65% { transform: translateZ(0) scale(1); }
}

/* 🤣 Risa rodando */
.emoji-carcajada {
  animation: emoji-roll 1.8s steps(20) infinite;
  transform-origin: 50% 85%;
}
@keyframes emoji-roll {
  0%, 100% { transform: translateZ(0) rotate(-30deg) translateX(-1px); }
  50% { transform: translateZ(0) rotate(30deg) translateX(1px); }
}

/* 😪 Sueño: burbuja que respira */
.emoji-sueno {
  position: relative;
  animation: emoji-sleep 3.2s steps(20) infinite;
  transform-origin: 50% 72%;
}
.emoji-sueno::after {
  content: "o";
  position: absolute;
  left: 64%;
  top: -0.1em;
  font-size: .42em;
  font-weight: 700;
  color: #bfdbfe;
  opacity: 0;
  pointer-events: none;
  will-change: transform, opacity;
  animation: emoji-sleep-bubble 3.2s steps(20) infinite;
}
@keyframes emoji-sleep {
  0%, 100% { transform: translateZ(0) translateY(0) rotate(0deg); }
  50% { transform: translateZ(0) translateY(-2px) rotate(-2deg); }
}
@keyframes emoji-sleep-bubble {
  0%, 18% { transform: translate3d(0, 2px, 0) scale(.55); opacity: 0; }
  42% { transform: translate3d(2px, 0, 0) scale(1.25); opacity: .75; }
  70% { transform: translate3d(4px, -4px, 0) scale(1.7); opacity: .15; }
  100% { transform: translate3d(5px, -8px, 0) scale(2); opacity: 0; }
}

/* 🤯 Cabeza explotando: pulso y chispas */
.emoji-cabeza-explota {
  position: relative;
  animation: emoji-head-blast 1.4s steps(20) infinite;
  transform-origin: 50% 55%;
}
.emoji-cabeza-explota::before,
.emoji-cabeza-explota::after {
  content: "✦";
  position: absolute;
  color: #fde68a;
  font-size: .34em;
  line-height: 1;
  opacity: 0;
  pointer-events: none;
  will-change: transform, opacity;
  animation: emoji-head-spark 1.4s steps(20) infinite;
}
.emoji-cabeza-explota::before { left: 45%; top: -8%; }
.emoji-cabeza-explota::after { left: 78%; top: 2%; animation-delay: .35s; }
@keyframes emoji-head-blast {
  0%, 100% { transform: translateZ(0) scale(1); filter: drop-shadow(0 0 0 rgba(253, 230, 138, 0)); }
  28% { transform: translateZ(0) scale(1.1); filter: drop-shadow(0 0 5px rgba(253, 230, 138, .5)); }
  48% { transform: translateZ(0) scale(.98); }
  62% { transform: translateZ(0) scale(1.04); }
}
@keyframes emoji-head-spark {
  0%, 35% { transform: translate3d(0, 3px, 0) scale(.5) rotate(0deg); opacity: 0; }
  55% { opacity: .9; }
  100% { transform: translate3d(-3px, -9px, 0) scale(1.2) rotate(45deg); opacity: 0; }
}

/* 🤬 Furia temblorosa */
.emoji-furia {
  animation: emoji-fury 1.15s steps(20) infinite;
  transform-origin: 50% 60%;
}
@keyframes emoji-fury {
  0%, 100% { transform: translateZ(0) translateX(0) rotate(0deg); }
  15% { transform: translateZ(0) translateX(-2px) rotate(-1.5deg); }
  30% { transform: translateZ(0) translateX(2px) rotate(1.5deg); }
  45% { transform: translateZ(0) translateX(-1.5px) rotate(-1deg); }
  60% { transform: translateZ(0) translateX(1.5px) rotate(1deg); }
  78% { transform: translateZ(0) translateX(-1px); }
}

/* 🤡 Payaso resorte */
.emoji-payaso {
  animation: emoji-clown 1.6s steps(20) infinite;
  transform-origin: 50% 80%;
}
@keyframes emoji-clown {
  0%, 100% { transform: translateZ(0) translateY(0) rotate(-2deg) scale(1); }
  30% { transform: translateZ(0) translateY(-5px) rotate(3deg) scale(1.04); }
  52% { transform: translateZ(0) translateY(1px) rotate(-1deg) scale(.98); }
  72% { transform: translateZ(0) translateY(-1px) scale(1.01); }
}

/* 💩 Popó: bamboleo gracioso */
.emoji-popo {
  animation: emoji-poop 2.3s steps(20) infinite;
  transform-origin: 50% 90%;
}
@keyframes emoji-poop {
  0%, 100% { transform: translateZ(0) rotate(-5deg) translateY(0); }
  50% { transform: translateZ(0) rotate(5deg) translateY(-2px); }
}

/* 🎶 Notas: ondulación vertical */
.emoji-musica {
  animation: emoji-notes 2.5s steps(20) infinite;
  transform-origin: 50% 80%;
}
@keyframes emoji-notes {
  0%, 100% { transform: translateZ(0) translateY(0) rotate(-4deg); }
  25% { transform: translateZ(0) translateY(-2px) rotate(0deg); }
  50% { transform: translateZ(0) translateY(-4px) rotate(4deg); }
  75% { transform: translateZ(0) translateY(-1px) rotate(0deg); }
}

/* Accesibilidad: detener también los pseudoelementos */
@media (prefers-reduced-motion: reduce) {
  .emoji-vivo,
  .emoji-vivo::before,
  .emoji-vivo::after { animation: none !important; }
  .emoji-beso::after,
  .emoji-carita-corazones::before,
  .emoji-carita-corazones::after,
  .emoji-sueno::after,
  .emoji-cabeza-explota::before,
  .emoji-cabeza-explota::after,
  .emoji-cool::after { opacity: 0 !important; }
  .emoji-vivo.emoji-salto { animation: emoji-jump 300ms ease-out !important; }
}
