217 lines
2.9 KiB
CSS
217 lines
2.9 KiB
CSS
|
|
/*
|
||
|
|
ANIMATION UTILS & KEYFRAMES
|
||
|
|
*/
|
||
|
|
.animate-fade-in {
|
||
|
|
animation: fadeIn 0.5s var(--ease-out);
|
||
|
|
}
|
||
|
|
|
||
|
|
.animate-slide-up {
|
||
|
|
animation: slideUp 0.5s var(--ease-out);
|
||
|
|
}
|
||
|
|
|
||
|
|
.animate-pulse {
|
||
|
|
animation: pulse 2s infinite;
|
||
|
|
}
|
||
|
|
|
||
|
|
.animate-spin-slow {
|
||
|
|
animation: spin 10s linear infinite;
|
||
|
|
}
|
||
|
|
|
||
|
|
.animate-float {
|
||
|
|
animation: float 6s ease-in-out infinite;
|
||
|
|
}
|
||
|
|
|
||
|
|
.hover-lift {
|
||
|
|
transition: transform 0.2s var(--ease-out);
|
||
|
|
}
|
||
|
|
|
||
|
|
.hover-lift:hover {
|
||
|
|
transform: translateY(-2px);
|
||
|
|
}
|
||
|
|
|
||
|
|
@keyframes fadeIn {
|
||
|
|
from {
|
||
|
|
opacity: 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
to {
|
||
|
|
opacity: 1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@keyframes spin {
|
||
|
|
from {
|
||
|
|
transform: rotate(0deg);
|
||
|
|
}
|
||
|
|
|
||
|
|
to {
|
||
|
|
transform: rotate(360deg);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@keyframes float {
|
||
|
|
|
||
|
|
0%,
|
||
|
|
100% {
|
||
|
|
transform: translateY(0);
|
||
|
|
}
|
||
|
|
|
||
|
|
50% {
|
||
|
|
transform: translateY(-10px);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@keyframes slideUp {
|
||
|
|
from {
|
||
|
|
opacity: 0;
|
||
|
|
transform: translateY(20px);
|
||
|
|
}
|
||
|
|
|
||
|
|
to {
|
||
|
|
opacity: 1;
|
||
|
|
transform: translateY(0);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@keyframes pulse {
|
||
|
|
0% {
|
||
|
|
opacity: 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
50% {
|
||
|
|
opacity: 0.5;
|
||
|
|
}
|
||
|
|
|
||
|
|
100% {
|
||
|
|
opacity: 1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@keyframes graffiti-shake {
|
||
|
|
|
||
|
|
0%,
|
||
|
|
100% {
|
||
|
|
transform: rotate(-2deg);
|
||
|
|
}
|
||
|
|
|
||
|
|
25% {
|
||
|
|
transform: rotate(2deg);
|
||
|
|
}
|
||
|
|
|
||
|
|
50% {
|
||
|
|
transform: rotate(-2deg);
|
||
|
|
}
|
||
|
|
|
||
|
|
75% {
|
||
|
|
transform: rotate(2deg);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Glitch Animations */
|
||
|
|
@keyframes glitch-anim-1 {
|
||
|
|
0% {
|
||
|
|
clip: rect(20px, 9999px, 15px, 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
20% {
|
||
|
|
clip: rect(60px, 9999px, 80px, 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
40% {
|
||
|
|
clip: rect(10px, 9999px, 55px, 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
60% {
|
||
|
|
clip: rect(90px, 9999px, 10px, 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
80% {
|
||
|
|
clip: rect(30px, 9999px, 70px, 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
100% {
|
||
|
|
clip: rect(50px, 9999px, 40px, 0);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@keyframes glitch-anim-2 {
|
||
|
|
0% {
|
||
|
|
clip: rect(60px, 9999px, 10px, 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
20% {
|
||
|
|
clip: rect(10px, 9999px, 50px, 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
40% {
|
||
|
|
clip: rect(90px, 9999px, 30px, 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
60% {
|
||
|
|
clip: rect(20px, 9999px, 70px, 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
80% {
|
||
|
|
clip: rect(40px, 9999px, 90px, 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
100% {
|
||
|
|
clip: rect(15px, 9999px, 60px, 0);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Boot Screen Animations */
|
||
|
|
@keyframes bootLoad {
|
||
|
|
0% {
|
||
|
|
width: 0%;
|
||
|
|
opacity: 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
30% {
|
||
|
|
width: 45%;
|
||
|
|
}
|
||
|
|
|
||
|
|
60% {
|
||
|
|
width: 60%;
|
||
|
|
}
|
||
|
|
|
||
|
|
80% {
|
||
|
|
width: 85%;
|
||
|
|
}
|
||
|
|
|
||
|
|
100% {
|
||
|
|
width: 100%;
|
||
|
|
opacity: 1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@keyframes bootFadeOut {
|
||
|
|
to {
|
||
|
|
opacity: 0;
|
||
|
|
pointer-events: none;
|
||
|
|
visibility: hidden;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
.boot-progress {
|
||
|
|
animation: bootLoad 2.5s cubic-bezier(0.22, 1, 0.36, 1) forwards;
|
||
|
|
}
|
||
|
|
|
||
|
|
.fade-out-screen {
|
||
|
|
animation: bootFadeOut 0.5s ease-out forwards;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Waveform Animation */
|
||
|
|
@keyframes wave {
|
||
|
|
|
||
|
|
0%,
|
||
|
|
100% {
|
||
|
|
transform: scaleY(0.5);
|
||
|
|
opacity: 0.5;
|
||
|
|
}
|
||
|
|
|
||
|
|
50% {
|
||
|
|
transform: scaleY(1.2);
|
||
|
|
opacity: 1;
|
||
|
|
}
|
||
|
|
}
|