@keyframes tada {
  0% {
    transform: scale3d(1, 1, 1);
  }

  10%, 20% {
    transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
  }

  30%, 50%, 70%, 90% {
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  }

  40%, 60%, 80% {
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  }

  100% {
    transform: scale3d(1, 1, 1);
  }
}

.messages {
  color: $cyan;
  font-size: $medium-font-size;
  margin-bottom: gutter();
  padding: $base-spacing;
  text-align: center;

  &.-inline {
    color: inherit;
    text-align: inherit;
    padding: 0;
  }

  b, strong {
    font-weight: $weight-bold;
  }

  &.error {
    animation-name: tada;
    animation-fill-mode: both;
    animation-duration: 1.5s;
    color: $error-color;
  }
}

@keyframes tada {
  0% {
    transform: scale3d(1, 1, 1);
  }

  10%, 20% {
    transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
  }

  30%, 50%, 70%, 90% {
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  }

  40%, 60%, 80% {
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  }

  100% {
    transform: scale3d(1, 1, 1);
  }
}

@keyframes fadeInUp {
  0% {
    opacity: 0;
    transform: translateY(20px);
  }

  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.messages {
  color: $cyan;
  font-size: $medium-font-size;
  margin-bottom: gutter();
  padding: $base-spacing;
  text-align: center;
  animation-name: fadeInUp;
  animation-fill-mode: both;
  animation-duration: 0.5s;

  &.-inline {
    color: inherit;
    text-align: inherit;
    padding: 0;
    animation-name: none;
  }

  b, strong {
    font-weight: $weight-bold;
  }

  &.error {
    animation-name: tada;
    animation-duration: 1.5s;
    color: $error-color;
  }
}

Add a subtle animation to success messages.
Add a subtle animation to success messages.
