@font-face { font-family: 'genshin'; src: url('../fonts/zh-cn.ttf') format('truetype'); } html, body { margin: 0; padding: 0; font-family: 'genshin'; color: #fff; text-shadow: 0 0 25px rgba(0, 0, 0, 1); overflow: hidden; } h1 { margin: 0; padding: 0; text-align: center; font-size: 4rem; position: relative; } .container { width: 100%; height: 100%; /* background: rgba(0, 0, 0, 0.7); */ position: absolute; overflow: hidden; } .container img#character { /* animation: wishAppear 5s steps(100, end) forwards; transform-origin: center; display: block; margin: 0 auto; height: 100%; max-width: 100%; */ } .container h1#name { animation: nameAppear 0.8s steps(100, end) forwards; animation-delay: 1s; animation-timing-function: ease; position: absolute; top: calc(50% - 250px); left: calc(50% - 200px); opacity: 0; z-index: 10; } .container h2#redeemer { animation: nameAppear 1.5s steps(100, end) forwards; animation-delay: 3.5s; animation-timing-function: ease; position: absolute; top: calc(50% - 185px); left: calc(50% - 200px); opacity: 0; z-index: 20; } .container h2#redeemer::before { content: 'redeemed by\A'; white-space: pre; } .container h2#redeemer span#actual_name { font-size: 2.5rem; } .container img#element { animation: nameAppear 0.6s steps(100, end) forwards; animation-delay: 1.2s; animation-timing-function: ease; width: 158px; height: 158px; position: absolute; top: calc(50% - 250px); left: calc(50% - 350px); opacity: 0; filter: drop-shadow(0px 0px 5px rgb(0 0 0 / 0.8)); } .container div#stars { z-index: 20; position: absolute; top: calc(50% - 190px); left: calc(50% - 200px); filter: drop-shadow(0px 0px 5px rgb(0 0 0 / 0.8)); } .container div#stars img { animation: starAppear 0.3s steps(100, end) forwards; animation-delay: 1s; width: 30px; height: 30px; display: inline-block; opacity: 0; transform: scale(10); } .container.exit { animation: genshinExit 0.3s steps(100, end) forwards; } @keyframes wishAppear { 0% { filter: brightness(0) blur(20px); transform: scale(10) translate(0, 0); } 10% { filter: brightness(0) blur(0); transform: scale(1) translate(0, 0); } 20% { filter: brightness(0) blur(0); transform: scale(1) translate(0, 0); } 28% { filter: brightness(0) blur(0); transform: scale(1) translate(50px, 0); } 30% { filter: brightness(0) blur(0); transform: scale(1) translate(50px, 0); } 40% { filter: brightness(1) blur(0); transform: scale(1) translate(50px, 0); } 100% { filter: brightness(1) blur(0); transform: scale(1) translate(50px, 0); } } @keyframes nameAppear { 0% { opacity: 0; transform: translate(50px, 0); } 100% { opacity: 1; transform: translate(0, 0); } } @keyframes starAppear { 0% { opacity: 0; transform: scale(10); } 100% { opacity: 1; transform: scale(1); } } @keyframes genshinExit { 0% { transform: scale(1); opacity: 1; } 100% { transform: scale(10); opacity: 0; } } #link_to_token { text-align: center; display: block; padding: 1em; background: #59f; color: #fff; text-decoration: none; width: 50%; text-shadow: 2px 2px 2px rgb(0 0 0 / 30%); min-width: 400px; margin: 2em auto; border-radius: 15px; } .card-stack { animation: fade-in-up 0.5s ease forwards; position: absolute; bottom: -128px; left: 50%; width: 256px; height: 384px; left: calc(50% - 128px); } .single-card { width: 256px; height: 384px; position: absolute; display: flex; justify-content: center; perspective: 900px; transition: all 0.2s cubic-bezier(0.7, -0.5, 0.3, 1.8); transform-style: preserve-3d; } @keyframes fade-in-up { 0% { opacity: 0; transform: translate(0, 256px); } 100% { opacity: 1; } } .front, .back { position: relative; width: 256px; height: 384px; top: 0; border-radius: 5px; -webkit-backface-visibility: hidden; backface-visibility: hidden; background-size: cover; background-position: center center; } .front { background-image: url(../img/characters/back.png); } .back { position: absolute; transform: rotateY(180deg); /* background-image: url(../img/characters/tmm.png); */ /* img/characters/imout.png */ } .single-card:nth-child(1) { animation: card1 0.5s forwards; } @keyframes card1 { 100% { transform: translate(200px, 100px) rotate(26deg); } } .single-card:nth-child(2) { animation: card2 0.5s forwards; } @keyframes card2 { 100% { transform: translate(100px, 25px) rotate(16deg); } } .single-card:nth-child(3) { animation: card3 0.5s forwards; } @keyframes card3 { 100% { transform: translate(0px, 0px) rotate(0deg); } } .single-card:nth-child(4) { animation: card4 0.5s forwards; } @keyframes card4 { 100% { transform: translate(-100px, 25px) rotate(-16deg); } } .single-card:nth-child(5) { animation: card5 0.5s forwards; } @keyframes card5 { 100% { transform: translate(-200px, 100px) rotate(-26deg); } } @keyframes rotateCard1 { 0% { transform: translateX(200px); } 100% { transform: translate(0px, -250px) rotateY(180deg) scale(1.5); } } @keyframes rotateCard2 { 0% { transform: translateX(100px); } 100% { transform: translate(0px, -250px) rotateY(180deg) scale(1.5); } } @keyframes rotateCard3 { 0% { transform: translateX(0px); } 100% { transform: translate(0px, -250px) rotateY(180deg) scale(1.5); } } @keyframes rotateCard4 { 0% { transform: translateX(-100px); } 100% { transform: translate(0px, -250px) rotateY(180deg) scale(1.5); } } @keyframes rotateCard5 { 0% { transform: translateX(-200px); } 100% { transform: translate(0px, -250px) rotateY(180deg) scale(1.5); } }