/*
  Shared utility animations
*/
@keyframes tremor {
  0% {
    transform: translateX(0);
  }
  10% {
    transform: translateX(4px);
  }
  20% {
    transform: translateX(-8px);
  }
  30% {
    transform: translateX(8px);
  }
  40% {
    transform: translateX(-6px);
  }
  50% {
    transform: translateX(6px);
  }
  60% {
    transform: translateX(-4px);
  }
  70% {
    transform: translateX(4px);
  }
  80% {
    transform: translateX(0);
  }
  90% {
    transform: translateX(2px);
  }
  100% {
    transform: translateX(0);
  }
}

@keyframes fade-in {
  0% {
    opacity: 0;
    visibility: hidden;
  }

  100% {
    opacity: 1;
    visibility: visible;
  }
}

@keyframes fade-out {
  0% {
    opacity: 1;
    visibility: visible;
  }

  100% {
    opacity: 0;
    visibility: hidden;
  }
}

@keyframes fade-out-hard {
  0% {
    opacity: 1;
    display: block;
  }
  99% {
    opacity: 0;
    display: block;
  }
  100% {
    opacity: 0;
    display: none;
  }
}

@keyframes show {
  0% {
    visibility: hidden;
  }
  100% {
    visibility: visible;
  }
}

/*
  Use with steps(n) to animate a spritesheet, where n is the number of frames, minus 1
*/
@keyframes spritesheet {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: 100% 0;
  }
}
