/* Animations */

@keyframes pulse {
  0% { transform: scale(1); box-shadow: 0 0 15px rgba(0, 212, 255, 0.2); }
  50% { transform: scale(1.02); box-shadow: 0 0 25px rgba(0, 212, 255, 0.5); }
  100% { transform: scale(1); box-shadow: 0 0 15px rgba(0, 212, 255, 0.2); }
}

.animate-pulse {
  animation: pulse 2s infinite;
}

@keyframes glitch {
  0% {
    clip-path: inset(40% 0 61% 0);
    transform: translate(-2px, 2px);
  }
  20% {
    clip-path: inset(92% 0 1% 0);
    transform: translate(1px, -2px);
  }
  40% {
    clip-path: inset(43% 0 1% 0);
    transform: translate(-1px, 2px);
  }
  60% {
    clip-path: inset(25% 0 58% 0);
    transform: translate(2px, -1px);
  }
  80% {
    clip-path: inset(54% 0 7% 0);
    transform: translate(-2px, 2px);
  }
  100% {
    clip-path: inset(58% 0 43% 0);
    transform: translate(1px, -2px);
  }
}

.glitch-effect {
  position: relative;
}

.glitch-effect::before,
.glitch-effect::after {
  content: attr(data-text);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0.8;
}

.glitch-effect::before {
  left: 2px;
  text-shadow: -1px 0 red;
  animation: glitch 2s infinite linear alternate-reverse;
}

.glitch-effect::after {
  left: -2px;
  text-shadow: -1px 0 blue;
  animation: glitch 3s infinite linear alternate-reverse;
}

/* Typing Effect for Hero */
@keyframes typing {
  from { width: 0 }
  to { width: 100% }
}

@keyframes blink-caret {
  from, to { border-color: transparent }
  50% { border-color: var(--neon-blue); }
}

.typing-text {
  overflow: hidden;
  border-right: .15em solid var(--neon-blue);
  white-space: nowrap;
  margin: 0 auto;
  letter-spacing: .15em;
  animation: 
    typing 3.5s steps(40, end),
    blink-caret .75s step-end infinite;
}

/* Float animation for cards */
@keyframes float {
  0% { transform: translateY(0px); }
  50% { transform: translateY(-10px); }
  100% { transform: translateY(0px); }
}

.float-anim {
  animation: float 6s ease-in-out infinite;
}

/* Glowing text */
@keyframes glow {
  from {
    text-shadow: 0 0 5px #fff, 0 0 10px #fff, 0 0 15px var(--neon-blue), 0 0 20px var(--neon-blue);
  }
  to {
    text-shadow: 0 0 10px #fff, 0 0 20px #fff, 0 0 30px var(--neon-blue), 0 0 40px var(--neon-blue);
  }
}

.text-glow {
  animation: glow 1.5s ease-in-out infinite alternate;
}

/* Slot Machine Animation for Numbers */
@keyframes roll {
  0% { transform: translateY(100%); opacity: 0; }
  20% { transform: translateY(0); opacity: 1; }
  80% { transform: translateY(0); opacity: 1; }
  100% { transform: translateY(-100%); opacity: 0; }
}

.slot-number {
  display: inline-block;
  position: relative;
  overflow: hidden;
  vertical-align: top;
  height: 1.2em;
}

.slot-number span {
  display: block;
  animation: roll 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

/* ========================================================
   DARK HOLIDAY & CYBERPUNK ANIMATIONS (BTMOB EDITION)
   ======================================================== */

/* Glowing holiday lights line */
@keyframes holidayGlow {
  0% { box-shadow: 0 0 10px #ff1744, 0 0 20px rgba(255, 23, 68, 0.5); border-color: #ff1744; }
  33% { box-shadow: 0 0 12px #00e676, 0 0 22px rgba(0, 230, 118, 0.5); border-color: #00e676; }
  66% { box-shadow: 0 0 10px #00f0ff, 0 0 20px rgba(0, 240, 255, 0.5); border-color: #00f0ff; }
  100% { box-shadow: 0 0 10px #ff1744, 0 0 20px rgba(255, 23, 68, 0.5); border-color: #ff1744; }
}

.holiday-glow-border {
  animation: holidayGlow 6s infinite ease-in-out;
}

/* Radar Scan for Ghost NFC */
@keyframes radarSweep {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes nfcWave {
  0% { transform: scale(0.6); opacity: 0.9; }
  50% { opacity: 0.5; }
  100% { transform: scale(1.6); opacity: 0; }
}

.nfc-wave-1 {
  animation: nfcWave 2.4s cubic-bezier(0.2, 0.8, 0.2, 1) infinite;
}
.nfc-wave-2 {
  animation: nfcWave 2.4s cubic-bezier(0.2, 0.8, 0.2, 1) infinite 0.8s;
}
.nfc-wave-3 {
  animation: nfcWave 2.4s cubic-bezier(0.2, 0.8, 0.2, 1) infinite 1.6s;
}

/* Ticker marquee animation */
@keyframes ticker {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

.ticker-wrap {
  width: 100%;
  overflow: hidden;
  white-space: nowrap;
  box-sizing: border-box;
}

.ticker-move {
  display: inline-block;
  white-space: nowrap;
  padding-left: 100%;
  animation: ticker 35s linear infinite;
}

.ticker-move:hover {
  animation-play-state: paused;
}

/* Bat fluttering animation */
@keyframes batFlutter {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-6px) rotate(-4deg); }
  50% { transform: translateY(2px) rotate(3deg); }
  75% { transform: translateY(-4px) rotate(-2deg); }
  100% { transform: translateY(0) rotate(0deg); }
}

.bat-hover-anim {
  display: inline-block;
  animation: batFlutter 3s ease-in-out infinite;
}

/* Badge Neon Glow */
@keyframes badgeShine {
  0% { filter: drop-shadow(0 0 2px #00d4ff); }
  50% { filter: drop-shadow(0 0 10px #ff0077); }
  100% { filter: drop-shadow(0 0 2px #00d4ff); }
}

.badge-glow {
  animation: badgeShine 2.5s infinite;
}
