/* ===================================
   ANIMATIONS
   Все анимации (@keyframes) приложения
   =================================== */

/* ===================================
   BASIC TRANSITIONS
   =================================== */

@keyframes slideDown {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes scaleIn {
    from { transform: scale(0.5); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

@keyframes income-pulse {
    0% {
        background: rgba(76, 175, 80, 0.2);
        transform: scale(1);
    }
    50% {
        background: rgba(76, 175, 80, 0.3);
        transform: scale(1.02);
    }
    100% {
        background: rgba(76, 175, 80, 0.2);
        transform: scale(1);
    }
}

@keyframes twinkle {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.7; }
}

@keyframes happyBounce {
    0%, 100% { transform: translate(-50%, -50%) scale(1); }
    25% { transform: translate(-50%, -50%) scale(1.1); }
    50% { transform: translate(-50%, -50%) scale(1.15); }
    75% { transform: translate(-50%, -50%) scale(1.1); }
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes celebrationAppear {
    from {
        opacity: 0;
        backdrop-filter: blur(0px);
    }
    to {
        opacity: 1;
        backdrop-filter: blur(5px);
    }
}

@keyframes celebrationBounce {
    0% {
        transform: scale(0.3) translateY(100px);
        opacity: 0;
    }
    50% {
        transform: scale(1.1) translateY(-10px);
    }
    100% {
        transform: scale(1) translateY(0);
        opacity: 1;
    }
}

@keyframes celebrationSpin {
    0%, 100% {
        transform: rotate(0deg) scale(1);
    }
    25% {
        transform: rotate(-10deg) scale(1.1);
    }
    75% {
        transform: rotate(10deg) scale(1.1);
    }
}

@keyframes cast {
    0% { transform: rotate(0deg); }
    50% { transform: rotate(-30deg); }
    100% { transform: rotate(-15deg); }
}

@keyframes bob {
    0%, 100% { transform: translateY(0px); }
    50% { transform: translateY(-5px); }
}

@keyframes catch {
    0% { transform: rotate(-15deg); }
    50% { transform: rotate(30deg) scale(1.1); }
    100% { transform: rotate(15deg); }
}

@keyframes bite-alert {
    0% { transform: scale(1) rotate(0deg); }
    25% { transform: scale(1.1) rotate(-2deg); }
    50% { transform: scale(1.2) rotate(2deg); }
    75% { transform: scale(1.1) rotate(-1deg); }
    100% { transform: scale(1) rotate(0deg); }
}

@keyframes fail-shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-5px); }
    75% { transform: translateX(5px); }
}

@keyframes pulse {
    0% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(255, 107, 53, 0.7);
    }
    50% {
        transform: scale(1.05);
        box-shadow: 0 0 0 10px rgba(255, 107, 53, 0.3);
    }
    100% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(255, 107, 53, 0);
    }
}

@keyframes waterWave {
    0%, 100% { transform: translateY(0) scaleY(1); }
    50% { transform: translateY(-5px) scaleY(0.95); }
}

@keyframes fishSwim {
    0%, 100% { transform: translateX(0) scaleX(1); }
    50% { transform: translateX(30px) scaleX(-1); }
}

@keyframes rippleExpand {
    0% {
        transform: translateX(-50%) scale(0.5);
        opacity: 0.8;
    }
    100% {
        transform: translateX(-50%) scale(2);
        opacity: 0;
    }
}

@keyframes rodIdle {
    0%, 100% { transform: rotate(-15deg) translate(2px, 3px); }
    50% { transform: rotate(-17deg) translate(2px, 3px); }
}

@keyframes rodCast {
    0% { transform: rotate(-15deg) translate(0px, 3px); }
    50% { transform: rotate(-5deg) translate(0px, 3px); }
    100% { transform: rotate(15deg) translate(-14px, 8px); }
}

@keyframes rodWaiting {
    0%, 100% { transform: rotate(15deg) translate(-14px, 8px); }
    50% { transform: rotate(12deg) translate(-14px, 8px); }
}

@keyframes rodBite {
    0%, 100% { transform: rotate(15deg) translate(-14px, 8px); }
    25% { transform: rotate(20deg) translate(-14px, 8px); }
    75% { transform: rotate(10deg) translate(-14px, 8px); }
}

@keyframes rodCatch {
    0% { transform: rotate(15deg) translate(-14px, 8px); }
    100% { transform: rotate(-25deg) translate(28px, -16px); }
}

@keyframes rodReturn {
    0% { transform: rotate(-25deg) translate(28px, -16px); }
    100% { transform: rotate(-15deg) translate(2px, 3px); }
}

@keyframes lineTension {
    0%, 100% { d: path("M300,300 Q450,750 1020,1100"); } /* ✅ ИСПРАВЛЕНО: 510 → 1020 */
    25% { d: path("M300,300 Q350,650 1020,1100"); }
    75% { d: path("M300,300 L1020,1100"); }
}

@keyframes floatBite {
    0%, 100% { transform: translateY(0) scale(1); }
    50% { transform: translateY(-5px) scale(1.1); }
}

@keyframes floatAsWeight {
    0%, 100% {
        transform: translateY(0px) translateX(0px);
    }
    25% {
        transform: translateY(2px) translateX(1px);
    }
    50% {
        transform: translateY(-1px) translateX(-1px);
    }
    75% {
        transform: translateY(1px) translateX(0px);
    }
}

@keyframes floatAsWeightIdle {
    0%, 100% {
        transform: translateY(0px);
    }
    50% {
        transform: translateY(1px);
    }
}

