@keyframes shake { 0% { transform: rotate(0deg); } 5% { transform: rotate(-8deg); } 10% { transform: rotate(8deg); } 15% { transform: rotate(-6deg); } 20% { transform: rotate(6deg); } 25% { transform: rotate(0deg); } 100% { transform: rotate(0deg); } } @keyframes heartbeat { 0% { transform: scale(1); } 12.5% { transform: scale(1.18) rotate(-3deg); } 20% { transform: scale(0.94); } 27.5% { transform: scale(1.12) rotate(3deg); } 35% { transform: scale(0.98); } 43% { transform: scale(1); } 100% { transform: scale(1); } } @keyframes forgekit-version-boost { 0% { transform: scale(1) rotate(0deg); box-shadow: 0 0 0px rgba(0, 255, 180, 0); } 20% { transform: scale(1.25) rotate(-8deg); box-shadow: 0 0 12px rgba(0, 255, 180, 0.6); } 40% { transform: scale(1.15) rotate(8deg); box-shadow: 0 0 18px rgba(0, 255, 180, 0.8); } 60% { transform: scale(1.22) rotate(-4deg); box-shadow: 0 0 10px rgba(0, 255, 180, 0.5); } 80% { transform: scale(1.05) rotate(2deg); box-shadow: 0 0 6px rgba(0, 255, 180, 0.3); } 100% { transform: scale(1) rotate(0deg); box-shadow: 0 0 0px rgba(0, 255, 180, 0); } } @keyframes glossy-sweep { 0% { transform: translateX(-100%) translateY(-100%); } 100% { transform: translateX(100%) translateY(100%); } } @keyframes polling_blink { 0% { opacity: .33; } 50% { opacity: 1; } 100% { opacity: .33; } } .glossy-light { position: relative; overflow: hidden; } .glossy-light::after { content: ""; position: absolute; top: -100%; left: -100%; width: 200%; height: 200%; background: linear-gradient(120deg, rgba(255, 255, 255, 0) 40%, rgba(255, 255, 255, 0.55) 50%, rgba(255, 255, 255, 0) 60%); transform: translateX(-100%) translateY(-100%); animation: glossy-sweep 1.2s ease-out; } @keyframes bounce { 0% { transform: translateY(0%); opacity: 0.25; } 50% { transform: translateY(-100%); opacity: 1; } 100% { transform: translateY(0%); opacity: 0.25; } } @keyframes blink { 0% { transform: scale(1); opacity: 0.5; } 50% { transform: scale(1); opacity: 1; } 100% { transform: scale(1); opacity: 0.5; } }