/* Animaciones generales */
.fade-slide-up {
    animation: fadeSlideUp 0.5s ease-out;
}

.fade-slide-down {
    animation: fadeSlideDown 0.5s ease-out;
}

.fade-slide-out {
    animation: fadeSlideOut 0.5s ease-out;
}

.fade-in {
    opacity: 0;
    animation: fadeIn 0.3s ease-out forwards;
}

.fade-out {
    opacity: 0;
    transition: opacity 0.3s ease-out;
}

/* Animación para activar/mover hábitos */
.habit-move {
    animation: moveHabit 0.6s ease-out;
}

/* Animación para completar hábitos */
.habit-complete {
    animation: completeHabit 0.8s ease-out;
}

/* Animación mejorada para recompensas */
.reward-popup {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(0.7);
    background: rgba(0, 0, 0, 0.95);
    color: white;
    padding: 25px 40px;
    border-radius: 15px;
    text-align: center;
    z-index: 1060;
    animation: rewardPopup 2.5s ease-in-out;
    box-shadow: 0 0 30px rgba(255, 215, 0, 0.3);
}

.reward-popup h4 {
    color: #ffd700;
    margin-bottom: 15px;
}

.reward-icon {
    animation: bounceIn 0.5s ease-out 0.2s both;
    display: inline-block;
}

/* Animación de subida de nivel */
.level-up-animation {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.8);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1070;
    animation: fadeIn 0.5s ease-out;
}

.level-up-content {
    text-align: center;
    color: white;
    animation: scaleIn 0.5s ease-out;
}

/* Animación para cambios de estadísticas */
.stat-change {
    animation: statChange 1s ease-out;
}

/* Keyframes para las animaciones */
@keyframes fadeSlideUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeSlideDown {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeSlideOut {
    to {
        opacity: 0;
        transform: translateY(20px);
    }
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes moveHabit {
    0% {
        opacity: 1;
        transform: scale(1);
    }
    20% {
        opacity: 0.8;
        transform: scale(1.05);
    }
    100% {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes completeHabit {
    0% { transform: scale(1); }
    10% { transform: scale(1.1); }
    20% { transform: scale(1); }
    100% { transform: scale(1); }
}

@keyframes rewardPopup {
    0% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(0.5);
    }
    15% {
        opacity: 1;
        transform: translate(-50%, -50%) scale(1.1);
    }
    20% {
        transform: translate(-50%, -50%) scale(1);
    }
    80% {
        opacity: 1;
        transform: translate(-50%, -50%) scale(1);
    }
    100% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(0.7);
    }
}

@keyframes bounceIn {
    0% {
        opacity: 0;
        transform: scale(0.3);
    }
    50% {
        opacity: 0.9;
        transform: scale(1.1);
    }
    80% {
        opacity: 1;
        transform: scale(0.89);
    }
    100% {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes statChange {
    0% { transform: scale(1); }
    50% { transform: scale(1.2); }
    100% { transform: scale(1); }
}

@keyframes scaleIn {
    from { transform: scale(0.5); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

/* Efectos de hover */
.list-group-item {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.list-group-item:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}

.btn {
    transition: all 0.2s ease;
}

.btn:active {
    transform: scale(0.95);
}
.streak-info {
    transition: all 0.3s ease;
}

.streak-info .badge {
    transition: transform 0.3s ease;
}

.streak-info .badge:hover {
    transform: scale(1.1);
}

.streak-bonus {
    animation: fadeInUp 0.5s ease-out;
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}