@mixin timing-function {
  animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
}

@keyframes vz-toast-bounce-in-right {
  from, 60%, 75%, 90%, to {
    @include timing-function;
  }
  from {
    opacity: 0;
    transform: translate3d(3000px, 0, 0);
  }
  60% {
    opacity: 1;
    transform: translate3d(-25px, 0, 0);
  }
  75% {
    transform: translate3d(10px, 0, 0);
  }
  90% {
    transform: translate3d(-5px, 0, 0);
  }
  to {
    transform: none;
  }
}

@keyframes vz-toast-bounce-out-right {
  20% {
    opacity: 1;
    transform: translate3d(-20px, 0, 0);
  }
  to {
    opacity: 0;
    transform: translate3d(2000px, 0, 0);
  }
}

@keyframes vz-toast-bounce-in-left {
  from, 60%, 75%, 90%, to {
    @include timing-function;
  }
  0% {
    opacity: 0;
    transform: translate3d(-3000px, 0, 0);
  }
  60% {
    opacity: 1;
    transform: translate3d(25px, 0, 0);
  }
  75% {
    transform: translate3d(-10px, 0, 0);
  }
  90% {
    transform: translate3d(5px, 0, 0);
  }
  to {
    transform: none;
  }
}

@keyframes vz-toast-bounce-out-left {
  20% {
    opacity: 1;
    transform: translate3d(20px, 0, 0);
  }
  to {
    opacity: 0;
    transform: translate3d(-2000px, 0, 0);
  }
}

@keyframes vz-toast-bounce-in-up {
  from, 60%, 75%, 90%, to {
    @include timing-function;
  }
  from {
    opacity: 0;
    transform: translate3d(0, 3000px, 0);
  }
  60% {
    opacity: 1;
    transform: translate3d(0, -20px, 0);
  }
  75% {
    transform: translate3d(0, 10px, 0);
  }
  90% {
    transform: translate3d(0, -5px, 0);
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes vz-toast-bounce-out-up {
  20% {
    transform: translate3d(0, -10px, 0);
  }
  40%, 45% {
    opacity: 1;
    transform: translate3d(0, 20px, 0);
  }
  to {
    opacity: 0;
    transform: translate3d(0, -2000px, 0);
  }
}

@keyframes vz-toast-bounce-in-down {
  from, 60%, 75%, 90%, to {
    @include timing-function;
  }
  0% {
    opacity: 0;
    transform: translate3d(0, -3000px, 0);
  }
  60% {
    opacity: 1;
    transform: translate3d(0, 25px, 0);
  }
  75% {
    transform: translate3d(0, -10px, 0);
  }
  90% {
    transform: translate3d(0, 5px, 0);
  }
  to {
    transform: none;
  }
}

@keyframes vz-toast-bounce-out-down {
  20% {
    transform: translate3d(0, 10px, 0);
  }
  40%, 45% {
    opacity: 1;
    transform: translate3d(0, -20px, 0);
  }
  to {
    opacity: 0;
    transform: translate3d(0, 2000px, 0);
  }
}

.Toastify__bounce-enter {
  &--top-left,
  &--bottom-left {
    animation-name: vz-toast-bounce-in-left;
  }
  &--top-right,
  &--bottom-right {
    animation-name: vz-toast-bounce-in-right;
  }
  &--top-center {
    animation-name: vz-toast-bounce-in-down;
  }
  &--bottom-center {
    animation-name: vz-toast-bounce-in-up;
  }
}

.Toastify__bounce-exit {
  &--top-left,
  &--bottom-left {
    animation-name: vz-toast-bounce-out-left;
  }
  &--top-right,
  &--bottom-right {
    animation-name: vz-toast-bounce-out-right;
  }
  &--top-center {
    animation-name: vz-toast-bounce-out-up;
  }
  &--bottom-center {
    animation-name: vz-toast-bounce-out-down;
  }
}
