🌟 🎉 Major Update:

This commit is contained in:
2025-06-01 23:41:02 +02:00
parent 62efe03887
commit 4042f07c00
228 changed files with 8598 additions and 1893 deletions

View File

@ -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;
}
}