@-webkit-keyframes square-spin {
  25% {
    -webkit-transform : perspective(100px) rotateX(180deg) rotateY(0);
            transform : perspective(100px) rotateX(180deg) rotateY(0);
  }
  50% {
    -webkit-transform : perspective(100px) rotateX(180deg) rotateY(180deg);
            transform : perspective(100px) rotateX(180deg) rotateY(180deg);
  }
  75% {
    -webkit-transform : perspective(100px) rotateX(0) rotateY(180deg);
            transform : perspective(100px) rotateX(0) rotateY(180deg);
  }
  100% {
    -webkit-transform : perspective(100px) rotateX(0) rotateY(0);
            transform : perspective(100px) rotateX(0) rotateY(0);
  }
}

@-moz-keyframes square-spin {
  25% {
    -moz-transform : perspective(100px) rotateX(180deg) rotateY(0);
         transform : perspective(100px) rotateX(180deg) rotateY(0);
  }
  50% {
    -moz-transform : perspective(100px) rotateX(180deg) rotateY(180deg);
         transform : perspective(100px) rotateX(180deg) rotateY(180deg);
  }
  75% {
    -moz-transform : perspective(100px) rotateX(0) rotateY(180deg);
         transform : perspective(100px) rotateX(0) rotateY(180deg);
  }
  100% {
    -moz-transform : perspective(100px) rotateX(0) rotateY(0);
         transform : perspective(100px) rotateX(0) rotateY(0);
  }
}

@-o-keyframes square-spin {
  25% {
    transform : perspective(100px) rotateX(180deg) rotateY(0);
  }
  50% {
    transform : perspective(100px) rotateX(180deg) rotateY(180deg);
  }
  75% {
    transform : perspective(100px) rotateX(0) rotateY(180deg);
  }
  100% {
    transform : perspective(100px) rotateX(0) rotateY(0);
  }
}

@keyframes square-spin {
  25% {
    -webkit-transform : perspective(100px) rotateX(180deg) rotateY(0);
       -moz-transform : perspective(100px) rotateX(180deg) rotateY(0);
            transform : perspective(100px) rotateX(180deg) rotateY(0);
  }
  50% {
    -webkit-transform : perspective(100px) rotateX(180deg) rotateY(180deg);
       -moz-transform : perspective(100px) rotateX(180deg) rotateY(180deg);
            transform : perspective(100px) rotateX(180deg) rotateY(180deg);
  }
  75% {
    -webkit-transform : perspective(100px) rotateX(0) rotateY(180deg);
       -moz-transform : perspective(100px) rotateX(0) rotateY(180deg);
            transform : perspective(100px) rotateX(0) rotateY(180deg);
  }
  100% {
    -webkit-transform : perspective(100px) rotateX(0) rotateY(0);
       -moz-transform : perspective(100px) rotateX(0) rotateY(0);
            transform : perspective(100px) rotateX(0) rotateY(0);
  }
}

.square-spin > div {
  -webkit-animation-fill-mode : both;
     -moz-animation-fill-mode : both;
       -o-animation-fill-mode : both;
          animation-fill-mode : both;
  width : 50px;
  height : 50px;
  background : #55595C;
  -webkit-animation : square-spin 3s 0s cubic-bezier(0.09, 0.57, 0.49, 0.9) infinite;
     -moz-animation : square-spin 3s 0s cubic-bezier(0.09, 0.57, 0.49, 0.9) infinite;
       -o-animation : square-spin 3s 0s cubic-bezier(0.09, 0.57, 0.49, 0.9) infinite;
          animation : square-spin 3s 0s cubic-bezier(0.09, 0.57, 0.49, 0.9) infinite;
}