/* Live3C — animations.css */
@keyframes sfill{to{width:100%;}}
@keyframes loadbar{to{width:100%;}}
@keyframes blink{0%,100%{box-shadow:0 0 0 0 rgba(34,197,94,.4);}50%{box-shadow:0 0 0 4px rgba(34,197,94,0);}}
@keyframes pulse-dot{
  0%,100%{box-shadow:0 0 0 0 rgba(34,197,94,0.4);}
  50%{box-shadow:0 0 0 4px rgba(34,197,94,0);}
}
@keyframes fadeUp{0%,100%{opacity:.2;transform:translateX(-50%) translateY(0);}50%{opacity:.5;transform:translateX(-50%) translateY(6px);}}
@keyframes tIn{from{opacity:0;transform:translateX(30px);}to{opacity:1;transform:none;}}
@keyframes tOut{to{opacity:0;transform:translateX(30px);}}
@keyframes toastIn{from{opacity:0;transform:translateX(40px) scale(0.9);}to{opacity:1;transform:none;}}
@keyframes toastOut{to{opacity:0;transform:translateX(40px);}}
@keyframes popupIn{from{opacity:0;transform:scale(0.9) translateY(-8px);}to{opacity:1;transform:none;}}
@keyframes mIn{from{opacity:0;transform:scale(.92) translateY(10px);}to{opacity:1;transform:none;}}
@keyframes modalIn{
  from{opacity:0;transform:scale(0.9) translateY(10px);}
  to{opacity:1;transform:none;}
}
@keyframes shimmer{to{background-position:-200% 0;}}
@keyframes brandPulse{
  0%,100%{filter:drop-shadow(0 0 6px rgba(240,165,0,0.2));}
  50%{filter:drop-shadow(0 0 14px rgba(240,165,0,0.5));}
}
@keyframes fadeScaleIn{
  from{opacity:0;transform:scale(0.85);}
  to{opacity:1;transform:scale(1);}
}
@keyframes matchEnter{
  from{opacity:0;transform:scale(0.8) translateY(-10px);}
  to{opacity:1;transform:none;}
}
@keyframes flowl{to{stroke-dashoffset:-12;}}
@keyframes spinPopupIn{
  from{opacity:0;transform:scale(0.72) translateY(12px);}
  to{opacity:1;transform:scale(1) translateY(0);}
}
@keyframes confettiBounce{from{transform:scale(1) rotate(-6deg);}to{transform:scale(1.18) rotate(6deg);}}
@keyframes nameGlow{
  0%,100%{text-shadow:0 0 12px rgba(240,165,0,0.4);}
  50%{text-shadow:0 0 28px rgba(240,165,0,0.8),0 0 60px rgba(240,165,0,0.2);}
}
@keyframes wpIn{
  from{opacity:0;transform:scale(0.82) translateY(28px);}
  to{opacity:1;transform:scale(1) translateY(0);}
}
@keyframes barShift{to{background-position:-200% 0;}}
@keyframes wpImgFloat{
  0%,100%{transform:translateY(0) scale(1);}
  50%{transform:translateY(-6px) scale(1.04);}
}
@keyframes ringPulse{
  0%,100%{transform:scale(0.9);opacity:0.6;}
  50%{transform:scale(1.1);opacity:1;}
}
@keyframes nameReveal{
  from{opacity:0;transform:translateY(10px) scale(0.92);}
  to{opacity:1;transform:none;}
}
@keyframes slotWin{
  0%{box-shadow:0 0 0 0 rgba(240,165,0,0);background:rgba(240,165,0,0.08);}
  30%{box-shadow:0 0 0 6px rgba(240,165,0,0.35);background:rgba(240,165,0,0.18);}
  100%{box-shadow:0 0 0 0 rgba(240,165,0,0);background:rgba(240,165,0,0.08);}
}
@keyframes slotLose{
  from{opacity:1;}
  to{opacity:0.35;filter:grayscale(60%);}
}
@keyframes champIn{
  from{opacity:0;transform:scale(0.7);}
  to{opacity:1;transform:scale(1);}
}
@keyframes schedMatchIn{
  from{opacity:0;transform:translateY(10px) scale(0.96);}
  to{opacity:1;transform:none;}
}
@keyframes ballSpin{
  0%{filter:drop-shadow(0 2px 6px rgba(240,165,0,0.4));}
  50%{filter:drop-shadow(0 2px 12px rgba(224,90,43,0.6));}
  100%{filter:drop-shadow(0 2px 6px rgba(240,165,0,0.4));}
}

.fade-up{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease;}
.fade-up.in{opacity:1;transform:none;}
