html, body { height: 100%; } body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } /* FX */ .fx-resize { width: 480px !important; height: 320px !important; } .fx-spin { animation: spin 6400ms ease-in-out infinite; } .fx-shadow { position: relative; overflow: visible !important; } .fx-shadow::before { content: ""; position: absolute; display: block; width: 100%; top: calc(100% - 1px); left: 0; height: 1px; background-color: black; border-radius: 50%; z-index: -1; transform: rotateX(80deg); box-shadow: 0px 0px 60px 38px rgb(0 0 0 / 25%); } .fx-mirror { -webkit-box-reflect: below 0px linear-gradient(to bottom, rgba(0,0,0,0.0), rgba(0,0,0,0.4)); } @keyframes spin { 0% { transform: perspective(1000px) rotateY(0deg); animation-timing-function: ease-in-out; } 10% { transform: perspective(1000px) rotateY(0deg); animation-timing-function: ease-in-out; } 40% { transform: perspective(1000px) rotateY(180deg); animation-timing-function: ease-in-out; } 60% { transform: perspective(1000px) rotateY(180deg); animation-timing-function: ease-in-out; } 90% { transform: perspective(1000px) rotateY(359deg); animation-timing-function: ease-in-out; } 100% { transform: perspective(1000px) rotateY(360deg); animation-timing-function: ease-in-out; } }