/* ------------------------- Apparitions -------------------------- */
/* Highlight landing-page, Page offres site web (modules) --------------------*/

@keyframes fadeUp {
	from {
		opacity: 0;
		transform: translateY(18px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* ------------------------- Pulse -------------------------- */
/* Btn-footer - Bord carte centrale services.php-----------*/

@keyframes Pulse {
	0%, 100% {
		transform: scale(1);
		box-shadow: 0 10px 25px rgba(11, 110, 253, 0.25);
	}
	50% {
		transform: scale(1.03);
		box-shadow: 0 15px 40px rgba(11, 110, 253, 0.4);
	}
}

@keyframes borderPulse {
	0% {
		box-shadow: 0 0 0 rgba(11,110,253,0);
	}
	50% {
		box-shadow: 0 0 25px rgba(11,110,253,0.25);
	}
	100% {
		box-shadow: 0 0 0 rgba(11,110,253,0);
	}
}

/* ------------------------- Respiration -------------------------- */
/*Bulle titre page services.php-----*/


@keyframes bubbleBreath {
	0%, 100% {
		transform: scale(1);
		box-shadow: 0 10px 20px rgba(0,0,0,0.35),0 0 20px rgba(11, 110, 253, 0.15);
	}
	50% {
		transform: scale(1.015);
		box-shadow: 0 14px 30px rgba(0,0,0,0.4),0 0 35px rgba(11, 110, 253, 0.25);
	}
}

/* ------------------------- Brillance -------------------------- */
/*Bulle titre services.php - Carte offres-sites.php--------------------*/


@keyframes bubbleMove {
	0% {
		transform: translateX(-120%) rotate(25deg);
		opacity: 0.6;
	}
	20% {
		opacity: 0.82;
	}
	50% {
		transform: translateX(120%) rotate(25deg);
		opacity: 0.82;
	}
	100% {
		transform: translateX(120%) rotate(25deg);
		opacity: 0.6;
	}
}

@keyframes shineMove {
	0% {
		transform: translateX(-120%) rotate(25deg);
		opacity: 0;
	}
	20% {
		opacity: 0.4;
	}
	50% {
		transform: translateX(120%) rotate(25deg);
		opacity: 0.2;
	}
	100% {
		transform: translateX(120%) rotate(25deg);
		opacity: 0;
	}
}

/* ------------------------- Flotaison -------------------------- */
/* Sous-titre bulle page services.php -------*/

@keyframes floatSub {
	0%, 100% {
		transform: translateY(0);
	}
	50% {
		transform: translateY(-10px);
	}
}

/* ------------------------- gauchedroite-------------------------- */
/* Navigation dans offres -------*/

@keyframes arrowSlideleft {
	0% {
		transform: translateX(0);
	}
	50% {
		transform: translateX(6px);
	}
	100% {
		transform: translateX(0);
	}
}
@keyframes arrowSlideright {
	100% {
		transform: translateX(0);
	}
	50% {
		transform: translateX(6px);
	}
	0% {
		transform: translateX(0);
	}
}


@keyframes slideIn {
	from {
		transform: translateY(500px);
		opacity: 0;
	}
	to {
		transform: translateY(0);
		opacity: 1;
	}
}

/* ========================= lancement fusée ========================= */

@keyframes rocketLaunch {
    0% {
        transform: translateY(0) scale(1);
    }

    /* compression */
    10% {
        transform: translateY(0px) scale(0.95);
    }

    /* vibration moteur */
    15% { transform: translateX(-1px); }
    20% { transform: translateX(1px); }
    25% { transform: translateX(-1px); }

    /* décollage lent */
    35% {
        transform: translateY(-5px) scale(1.05);
    }

    /* accélération */
    55% {
        transform: translateY(-30px) scale(1.08);
    }

    75% {
        transform: translateY(-30px) scale(1.08);
    }

    /* sortie écran */
    100% {
        transform: translateY(-120vh) scale(0.9);
        opacity: 1;
    }
}

/* flamme */
@keyframes flame {
    0% {
        transform: translateX(-50%) scaleY(0.8);
    }
    100% {
        transform: translateX(-50%) scaleY(1.8);
		
    }
}

@keyframes smokeTrail {
    0% {
        height: 20px;
        opacity: 0.3;
    }
    100% {
        height: 70px;
        opacity: 0;
    }
}

/* vibration fusée */
@keyframes rocketShake {
    0% { transform: translateX(0); }
    25% { transform: translateX(-1px); }
    50% { transform: translateX(1px); }
    75% { transform: translateX(-1px); }
    100% { transform: translateX(0); }
}




@keyframes shakeSoft {
  0% { transform: translate(0, 0) rotate(0deg); }
  25% { transform: translate(1px, -1px) rotate(0.3deg); }
  50% { transform: translate(-1px, 1px) rotate(-0.3deg); }
  75% { transform: translate(1px, 1px) rotate(0.2deg); }
  100% { transform: translate(0, 0) rotate(0deg); }
}


@keyframes rocketLaunchDown {

    0% {
        transform: translateY(0) scale(1);
    }

    /* compression */
    10% {
        transform: translateY(0px) scale(0.95);
    }

    /* vibration moteur */
    15% { transform: translateX(-1px); }
    20% { transform: translateX(1px); }
    25% { transform: translateX(-1px); }

    /* petit décollage */
    35% {
        transform: translateY(5px) scale(1.05);
    }

    /* accélération vers le bas */
    55% {
        transform: translateY(30px) scale(1.08);
    }

    75% {
        transform: translateY(90px) scale(1.08);
    }

    95% {
        transform: translateY(150px) scale(1.08);
    }

    /* sortie écran BAS */
    99% {
        transform: translateY(100vh) scale(0.9);
        opacity: 1;
    }

    100% {
        transform: translateY(0) scale(1);
    }
}


@keyframes floatUpDown {
    0% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-4px);
    }
    100% {
        transform: translateY(0);
    }
}


@keyframes pulse {
	0% { transform: scale(1); opacity: 1; }
	50% { transform: scale(1.3); opacity: 0.6; }
	100% { transform: scale(1); opacity: 1; }
}


@keyframes ribbonPulse {
	0%, 100% {
		box-shadow: 0 0 12px rgba(59,130,246,0.35);
	}
	50% {
		box-shadow: 0 0 18px rgba(59,130,246,0.55);
	}
}


@keyframes fadeInIntro {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}