@import url(http://fonts.googleapis.com/css?family=Alegreya+Sans:300,400,500,700,800,900);
html, body {
  height: 100%;
}

body {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  background: -webkit-radial-gradient(#444444, #000000);
  background: radial-gradient(#444444, #000000);
  background-size: 200% 200%;
  background-position: center bottom;
  -webkit-transition: background-position 5s;
  transition: background-position 5s;
}
body:hover {
  background-position: center center;
}

h1 {
  font: 900 20vmin/12vmin Alegreya Sans, sans-serif;
  padding: 10px;
  -webkit-transform: perspective(400px) rotateX(0);
          transform: perspective(400px) rotateX(0);
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  -webkit-transition: -webkit-transform 5s;
  transition: -webkit-transform 5s;
  transition: transform 5s;
  transition: transform 5s, -webkit-transform 5s;
}
body:hover h1 {
  -webkit-transform: perspective(400px) rotateX(90deg);
          transform: perspective(400px) rotateX(90deg);
}

span {
  display: inline-block;
  position: relative;
}
span:before, span:after {
  display: block;
  content: attr(data-letter);
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  -webkit-transform-origin: center bottom;
          transform-origin: center bottom;
}
span:before {
  position: absolute;
  z-index: 0;
  -webkit-transform: scaleY(1);
          transform: scaleY(1);
  -webkit-transition: -webkit-transform 5s;
  transition: -webkit-transform 5s;
  transition: transform 5s;
  transition: transform 5s, -webkit-transform 5s;
  text-shadow: 0 0 10px rgba(0, 0, 0, 0.8);
}
body:hover span:before {
  -webkit-transform: scaleY(10);
          transform: scaleY(10);
}
span:after {
  position: relative;
  z-index: 100;
  -webkit-transform: rotateX(-90deg) translateZ(0);
          transform: rotateX(-90deg) translateZ(0);
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  color: dodgerblue;
}
