@keyframes moveInLeft {
  from {
    transform: translate3d(-12px, 0, 0);
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes moveInRight {
  from {
    transform: translate3d(12px, 0, 0);
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeOutDown {
  from {
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
  to {
    transform: translate3d(0, 12px, 0);
    opacity: 0;
  }
}

@keyframes fadeOutUp {
  from {
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
  to {
    transform: translate3d(0, -12px, 0);
    opacity: 0;
  }
}

@keyframes fadeInUp {
  from {
    transform: translate3d(0, 12px, 0);
    opacity: 0;
  }
  to {
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

@keyframes fadeInDown {
  from {
    transform: translate3d(0, -12px, 0);
    opacity: 0;
  }
  to {
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

@keyframes fadeInLeft {
  from {
    transform: translate3d(-12px, 0, 0);
    opacity: 0;
  }
  to {
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

@keyframes fadeInRight {
  from {
    transform: translate3d(12px, 0, 0);
    opacity: 0;
  }
  to {
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

/* view transitions */
article {
  animation: fadeInUp;
  animation-duration: 400ms;
}

body {
  transition: all 200ms;
}

#toc {
  animation: fadeInRight 250ms;
}
