@keyframes el-wiggle {
  0%, 100% { transform: rotate(-3deg); }
  50% { transform: rotate(3deg); }
}
@keyframes el-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.1); }
}
@keyframes el-zoom {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.2); }
}
@keyframes el-fade {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.6; }
}
@keyframes el-slide {
  0%, 100% { transform: translateX(0); }
  50% { transform: translateX(5px); }
}
@keyframes el-bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}

/* Animao padro (loop) */
.el-effect-loop {
  animation-iteration-count: infinite;
  animation-duration: 1.2s;
  animation-timing-function: ease-in-out;
}

/* Efeitos ativados em loop */
.el-effect-wiggle.el-effect-loop {
  animation-name: el-wiggle;
}
.el-effect-pulse.el-effect-loop {
  animation-name: el-pulse;
}
.el-effect-zoom.el-effect-loop {
  animation-name: el-zoom;
}
.el-effect-fade.el-effect-loop {
  animation-name: el-fade;
}
.el-effect-slide.el-effect-loop {
  animation-name: el-slide;
}
.el-effect-bounce.el-effect-loop {
  animation-name: el-bounce;
}

/* Efeitos no hover (se no estiver em loop) */
.el-effect-wiggle:not(.el-effect-loop):hover {
  animation: el-wiggle 1.2s infinite ease-in-out;
}
.el-effect-pulse:not(.el-effect-loop):hover {
  animation: el-pulse 1.2s infinite ease-in-out;
}
.el-effect-zoom:not(.el-effect-loop):hover {
  animation: el-zoom 1.2s infinite ease-in-out;
}
.el-effect-fade:not(.el-effect-loop):hover {
  animation: el-fade 1.2s infinite ease-in-out;
}
.el-effect-slide:not(.el-effect-loop):hover {
  animation: el-slide 1.2s infinite ease-in-out;
}
.el-effect-bounce:not(.el-effect-loop):hover {
  animation: el-bounce 1.2s infinite ease-in-out;
}

/* Deixa o texto dos botes em negrito */
.el-link-btn {
  font-weight: bold;
}
