🌟 🎉 Major Update:
This commit is contained in:
@ -1,100 +1,27 @@
|
||||
/**
|
||||
* MYP Platform - Optimierungs-Animationen
|
||||
* Belohnende und motivierende Animationen für Auto-Optimierung
|
||||
* MYP Platform - Optimierte einfache Animationen
|
||||
* Reduzierte, performante Animationen für bessere User Experience
|
||||
*/
|
||||
|
||||
/* ===== MODAL FADE-IN ANIMATION ===== */
|
||||
/* ===== EINFACHE FADE-IN ANIMATION ===== */
|
||||
@keyframes fade-in {
|
||||
from {
|
||||
opacity: 0;
|
||||
backdrop-filter: blur(0px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
backdrop-filter: blur(8px);
|
||||
}
|
||||
}
|
||||
|
||||
.animate-fade-in {
|
||||
animation: fade-in 0.3s ease-out;
|
||||
animation: fade-in 0.2s ease-out;
|
||||
}
|
||||
|
||||
/* ===== BOUNCE-IN ANIMATION ===== */
|
||||
@keyframes bounce-in {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: scale(0.3) translateY(-50px);
|
||||
}
|
||||
50% {
|
||||
opacity: 1;
|
||||
transform: scale(1.05) translateY(0);
|
||||
}
|
||||
70% {
|
||||
transform: scale(0.95);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
.animate-bounce-in {
|
||||
animation: bounce-in 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275);
|
||||
}
|
||||
|
||||
/* ===== PULSE-SCALE ANIMATION ===== */
|
||||
@keyframes pulse-scale {
|
||||
0%, 100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
50% {
|
||||
transform: scale(1.1);
|
||||
}
|
||||
}
|
||||
|
||||
.animate-pulse-scale {
|
||||
animation: pulse-scale 3s infinite ease-in-out;
|
||||
}
|
||||
|
||||
/* ===== FLOATING ANIMATIONS ===== */
|
||||
@keyframes float {
|
||||
0%, 100% {
|
||||
transform: translateY(0px) rotate(0deg);
|
||||
}
|
||||
33% {
|
||||
transform: translateY(-15px) rotate(5deg);
|
||||
}
|
||||
66% {
|
||||
transform: translateY(-5px) rotate(-3deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes float-delay {
|
||||
0%, 100% {
|
||||
transform: translateY(0px) rotate(0deg);
|
||||
}
|
||||
33% {
|
||||
transform: translateY(-10px) rotate(-5deg);
|
||||
}
|
||||
66% {
|
||||
transform: translateY(-8px) rotate(3deg);
|
||||
}
|
||||
}
|
||||
|
||||
.animate-float {
|
||||
animation: float 4s infinite ease-in-out;
|
||||
}
|
||||
|
||||
.animate-float-delay {
|
||||
animation: float-delay 4s infinite ease-in-out;
|
||||
animation-delay: 1.5s;
|
||||
}
|
||||
|
||||
/* ===== SLIDE-UP ANIMATIONS ===== */
|
||||
/* ===== EINFACHE SLIDE-UP ANIMATION ===== */
|
||||
@keyframes slide-up {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(30px);
|
||||
transform: translateY(15px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
@ -103,239 +30,105 @@
|
||||
}
|
||||
|
||||
.animate-slide-up {
|
||||
animation: slide-up 0.6s ease-out;
|
||||
animation: slide-up 0.3s ease-out;
|
||||
}
|
||||
|
||||
.animate-slide-up-delay {
|
||||
animation: slide-up 0.6s ease-out;
|
||||
animation-delay: 0.2s;
|
||||
animation: slide-up 0.3s ease-out;
|
||||
animation-delay: 0.1s;
|
||||
animation-fill-mode: both;
|
||||
}
|
||||
|
||||
.animate-slide-up-delay-2 {
|
||||
animation: slide-up 0.6s ease-out;
|
||||
animation-delay: 0.4s;
|
||||
animation: slide-up 0.3s ease-out;
|
||||
animation-delay: 0.2s;
|
||||
animation-fill-mode: both;
|
||||
}
|
||||
|
||||
.animate-slide-up-delay-3 {
|
||||
animation: slide-up 0.6s ease-out;
|
||||
animation-delay: 0.6s;
|
||||
animation-fill-mode: both;
|
||||
/* ===== EINFACHER HOVER-EFFEKT ===== */
|
||||
.animate-hover-lift {
|
||||
transition: transform 0.2s ease;
|
||||
}
|
||||
|
||||
/* ===== COUNT-UP ANIMATION ===== */
|
||||
@keyframes count-up {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: scale(0.5) rotate(-10deg);
|
||||
}
|
||||
50% {
|
||||
opacity: 1;
|
||||
transform: scale(1.2) rotate(5deg);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: scale(1) rotate(0deg);
|
||||
}
|
||||
.animate-hover-lift:hover {
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.animate-count-up {
|
||||
animation: count-up 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
|
||||
animation-delay: 0.3s;
|
||||
animation-fill-mode: both;
|
||||
}
|
||||
|
||||
/* ===== GLOW ANIMATION ===== */
|
||||
@keyframes glow {
|
||||
0%, 100% {
|
||||
box-shadow: 0 0 5px rgba(59, 130, 246, 0.5),
|
||||
0 0 10px rgba(59, 130, 246, 0.3),
|
||||
0 0 15px rgba(59, 130, 246, 0.1);
|
||||
}
|
||||
50% {
|
||||
box-shadow: 0 0 20px rgba(59, 130, 246, 0.8),
|
||||
0 0 30px rgba(59, 130, 246, 0.6),
|
||||
0 0 40px rgba(59, 130, 246, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
.animate-glow {
|
||||
animation: glow 3s infinite ease-in-out;
|
||||
}
|
||||
|
||||
/* ===== KONFETTI ANIMATION ===== */
|
||||
.confetti-container {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.confetti-piece {
|
||||
position: absolute;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
top: -10px;
|
||||
border-radius: 2px;
|
||||
animation: confetti-fall linear infinite;
|
||||
}
|
||||
|
||||
@keyframes confetti-fall {
|
||||
/* ===== EINFACHE SUCCESS ANIMATION ===== */
|
||||
@keyframes simple-success {
|
||||
0% {
|
||||
transform: translateY(-100vh) rotate(0deg);
|
||||
opacity: 1;
|
||||
opacity: 0;
|
||||
transform: scale(0.9);
|
||||
}
|
||||
100% {
|
||||
transform: translateY(120vh) rotate(720deg);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* ===== ERFOLGS-BADGE SPEZIAL-ANIMATIONEN ===== */
|
||||
@keyframes star-twinkle {
|
||||
0%, 100% {
|
||||
opacity: 0.6;
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
}
|
||||
50% {
|
||||
}
|
||||
|
||||
.animate-success {
|
||||
animation: simple-success 0.3s ease-out;
|
||||
}
|
||||
|
||||
/* ===== EINFACHER PULSE FÜR LOADING ===== */
|
||||
@keyframes simple-pulse {
|
||||
0%, 100% {
|
||||
opacity: 1;
|
||||
transform: scale(1.2);
|
||||
}
|
||||
}
|
||||
|
||||
.badge-star {
|
||||
animation: star-twinkle 1.5s infinite ease-in-out;
|
||||
}
|
||||
|
||||
/* ===== LOADING SPINNER IMPROVEMENTS ===== */
|
||||
@keyframes spinner-glow {
|
||||
0% {
|
||||
filter: drop-shadow(0 0 5px rgba(59, 130, 246, 0.5));
|
||||
}
|
||||
50% {
|
||||
filter: drop-shadow(0 0 15px rgba(59, 130, 246, 0.8));
|
||||
}
|
||||
100% {
|
||||
filter: drop-shadow(0 0 5px rgba(59, 130, 246, 0.5));
|
||||
opacity: 0.6;
|
||||
}
|
||||
}
|
||||
|
||||
#optimization-loader .animate-spin {
|
||||
animation: spin 1s linear infinite, spinner-glow 2s ease-in-out infinite;
|
||||
.animate-pulse-simple {
|
||||
animation: simple-pulse 2s infinite ease-in-out;
|
||||
}
|
||||
|
||||
/* ===== DARK MODE OPTIMIERUNGEN ===== */
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.animate-glow {
|
||||
animation: glow-dark 2s infinite ease-in-out;
|
||||
}
|
||||
|
||||
@keyframes glow-dark {
|
||||
0%, 100% {
|
||||
box-shadow: 0 0 5px rgba(96, 165, 250, 0.5),
|
||||
0 0 10px rgba(96, 165, 250, 0.3),
|
||||
0 0 15px rgba(96, 165, 250, 0.1);
|
||||
}
|
||||
50% {
|
||||
box-shadow: 0 0 20px rgba(96, 165, 250, 0.8),
|
||||
0 0 30px rgba(96, 165, 250, 0.6),
|
||||
0 0 40px rgba(96, 165, 250, 0.4);
|
||||
}
|
||||
}
|
||||
/* ===== EINFACHER PROGRESS BAR ===== */
|
||||
.progress-fill {
|
||||
transition: width 1s ease-out;
|
||||
}
|
||||
|
||||
/* ===== PERFORMANCE OPTIMIERUNGEN ===== */
|
||||
.animate-bounce-in,
|
||||
.animate-fade-in,
|
||||
.animate-slide-up,
|
||||
.animate-slide-up-delay,
|
||||
.animate-slide-up-delay-2,
|
||||
.animate-slide-up-delay-3 {
|
||||
.animate-slide-up-delay-2 {
|
||||
will-change: transform, opacity;
|
||||
}
|
||||
|
||||
.animate-pulse-scale,
|
||||
.animate-float,
|
||||
.animate-float-delay {
|
||||
.animate-hover-lift {
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
.animate-glow {
|
||||
will-change: box-shadow;
|
||||
/* ===== UTILITY CLASSES ===== */
|
||||
.animate-smooth {
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.animate-smooth-fast {
|
||||
transition: all 0.1s ease;
|
||||
}
|
||||
|
||||
/* ===== RESPONSIVE ANPASSUNGEN ===== */
|
||||
@media (max-width: 768px) {
|
||||
.confetti-piece {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
.animate-fade-in,
|
||||
.animate-slide-up,
|
||||
.animate-slide-up-delay,
|
||||
.animate-slide-up-delay-2 {
|
||||
animation-duration: 0.2s;
|
||||
}
|
||||
}
|
||||
|
||||
/* ===== REDUZIERTE BEWEGUNG UNTERSTÜTZUNG ===== */
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
* {
|
||||
animation-duration: 0.01ms !important;
|
||||
animation-iteration-count: 1 !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
|
||||
#optimization-reward-modal .text-8xl {
|
||||
font-size: 4rem;
|
||||
}
|
||||
|
||||
#optimization-reward-modal .max-w-md {
|
||||
max-width: 90vw;
|
||||
}
|
||||
}
|
||||
|
||||
/* ===== BUTTON HOVER VERBESSERUNGEN ===== */
|
||||
button:hover .badge-star {
|
||||
animation-duration: 0.8s;
|
||||
}
|
||||
|
||||
/* ===== ZUSÄTZLICHE UTILITY CLASSES ===== */
|
||||
.animate-shake {
|
||||
animation: shake 0.5s ease-in-out;
|
||||
}
|
||||
|
||||
@keyframes shake {
|
||||
0%, 100% { transform: translateX(0); }
|
||||
10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
|
||||
20%, 40%, 60%, 80% { transform: translateX(5px); }
|
||||
}
|
||||
|
||||
.animate-heartbeat {
|
||||
animation: heartbeat 1.5s infinite;
|
||||
}
|
||||
|
||||
@keyframes heartbeat {
|
||||
0%, 100% { transform: scale(1); }
|
||||
14% { transform: scale(1.1); }
|
||||
28% { transform: scale(1); }
|
||||
42% { transform: scale(1.1); }
|
||||
70% { transform: scale(1); }
|
||||
}
|
||||
|
||||
/* ===== PROGRESS BAR ANIMATION ===== */
|
||||
.progress-fill {
|
||||
animation: progress-grow 2s ease-out;
|
||||
}
|
||||
|
||||
@keyframes progress-grow {
|
||||
from {
|
||||
width: 0%;
|
||||
}
|
||||
to {
|
||||
width: var(--progress-width, 100%);
|
||||
}
|
||||
}
|
||||
|
||||
/* ===== SUCCESS CHECKMARK ANIMATION ===== */
|
||||
.success-checkmark {
|
||||
animation: checkmark-draw 0.8s ease-out;
|
||||
}
|
||||
|
||||
@keyframes checkmark-draw {
|
||||
0% {
|
||||
stroke-dasharray: 0 100;
|
||||
}
|
||||
100% {
|
||||
stroke-dasharray: 100 0;
|
||||
.animate-hover-lift:hover {
|
||||
transform: none;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user