/* Animations de base */
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

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

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

/* Effets de survol */
.hover-grow {
    transition: transform 0.3s ease;
}

.hover-grow:hover {
    transform: scale(1.05);
}

.hover-shadow {
    transition: box-shadow 0.3s ease;
}

.hover-shadow:hover {
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
}

.hover-lift {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.hover-lift:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 30px rgba(0, 0, 0, 0.15);
}

/* Animations au chargement */
.fade-in-on-load {
    animation: fadeIn 1s ease-out forwards;
    opacity: 0; /* Assure qu'il est invisible avant l'animation */
}

.slide-in-up-on-load {
    animation: slideInUp 1s ease-out forwards;
    opacity: 0;
}

/* Animations de défilement (scroll animations) */
/* Ces classes seront ajoutées/retirées par JavaScript */
.animate-on-scroll {
    opacity: 0;
    transform: translateY(50px);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

.animate-on-scroll.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.animate-scale-on-scroll {
    opacity: 0;
    transform: scale(0.9);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

.animate-scale-on-scroll.is-visible {
    opacity: 1;
    transform: scale(1);
}

/* Effet Parallax (pour les sections avec image de fond) */
.parallax-bg {
    background-attachment: fixed;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
}

/* Keyframes pour les effets de texte */
@keyframes typing {
    from { width: 0 }
    to { width: 100% }
}

@keyframes blink-caret {
    from, to { border-color: transparent }
    50% { border-color: var(--primary-color); }
}

.typewriter h1 {
    overflow: hidden; /* Cache le texte avant l'animation */
    border-right: .15em solid var(--primary-color); /* Le curseur */
    white-space: nowrap; /* Empêche le texte de passer à la ligne */
    margin: 0 auto; /* Centre le texte */
    letter-spacing: .15em; /* Espace entre les lettres */
    animation:
        typing 3.5s steps(40, end),
        blink-caret .75s step-end infinite;
}

/* Effets de chargement */
.spinner {
    border: 4px solid rgba(0, 0, 0, 0.1);
    border-left-color: var(--primary-color);
    border-radius: 50%;
    width: 40px;
    height: 40px;
    animation: spin 1s linear infinite;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

/* Effets de transition pour le mode sombre */
body {
    transition: background-color 0.5s ease, color 0.5s ease;
}

body.dark-mode .btn-secondary {
    background-color: var(--secondary-color);
    color: var(--text-color); /* Utilise la couleur de texte du mode sombre */
}

body.dark-mode .btn-secondary:hover {
    background-color: var(--primary-color);
    color: var(--light-text-color);
}