.welcome { .svg-wrapper { position: absolute; left: 0; right: 0; margin: 0 auto; .shape { fill: transparent; stroke-dasharray: 475; stroke-dashoffset: -474; stroke-width: 3px; stroke: #19f6e8; } &:hover .shape { animation: 6s drawing linear forwards; } } .btn-welcome { position: relative; z-index: 2; } } @include keyframes (drawing) { 0% { stroke-dasharray: 475; stroke-dashoffset: -474; stroke-width: 3px; } 20% { stroke-dasharray: 152; stroke-dashoffset: -92.8; stroke-width: 6px; } 40% { stroke-dasharray: 152*2; stroke-dashoffset: -92.8*2; stroke-width: 4px; } 60% { stroke-dasharray: 152*3; stroke-dashoffset: -92.8*3; stroke-width: 4px; } 80% { stroke-dasharray: 152*4; stroke-dashoffset: -92.8*4; stroke-width: 4px; } 100% { stroke-dasharray: 475; stroke-dashoffset: -474; stroke-width: 3px; } } @keyframes rotate { 0%, 10% { transform: rotateX(70deg) rotateZ(45deg); } 25%, 35% { transform: rotateX(70deg) rotateZ(135deg); } 50%, 65% { transform: rotateX(70deg) rotateZ(225deg); } 75%, 85% { transform: rotateX(70deg) rotateZ(315deg); } 100% { transform: rotateX(70deg) rotateZ(405deg); } } @keyframes scale { 0%, 10%, 70%, 100% { transform: scaleY(.3) scaleX(.3); } } .scale { animation: scale 1s cubic-bezier(0.785, 0.135, 0.150, 0.860) infinite; transform-style: preserve-3d; transform-origin: 100% 100% 0; } .cube { animation: rotate 4s .5s cubic-bezier(0.645, 0.045, 0.355, 1.000) infinite reverse; transform-style: preserve-3d; margin-bottom: -2.5rem; margin-left: 34rem; &:after, &:before { content: ""; will-change: transform; display: block; width: 4em; height: 4em; background: rgb(87, 62, 138); position: absolute; } &:before { transform: translateZ(4em); } } .face { position: absolute; width: 4em; height: 4em; background: rgba($black-base, .4); transform-style: preserve-3d; background: $dark-purple; border: 2px solid $black-base; &:nth-child(1) { transform: rotateX(90deg); transform-origin: 50% 0; background: rgb(80, 230, 255); } &:nth-child(2) { transform: rotateX(90deg) translateZ(-4em); transform-origin: 50% 0; background: rgb(80, 230, 255); } &:nth-child(3) { transform: rotateX(90deg) rotateY(-90deg); transform-origin: 100% 0; background: rgb(69, 144, 221); } &:nth-child(4) { transform: rotateX(90deg) rotateY(-90deg) translateZ(4em); transform-origin: 100% 0; background: rgb(69, 144, 221); } }