.gradient-text {
    background: linear-gradient(3deg, #0818AF 0.59%, #1330B7 13.93%, #306FCD 37.65%, #56C1EB 64.25%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.gradient-bg {
    background: linear-gradient(15deg, #0818AF 0.59%, #1330B7 13.93%, #306FCD 37.65%, #56C1EB 64.25%);
    transition: all 0.3s ease;
    position: relative;
    overflow: hidden;
}

.gradient-bg:hover {
    background: #0099d5;
}

.gradient-bg-vertical {
    background: linear-gradient(13deg, #0818AF 0.59%, #1330B7 13.93%, #306FCD 37.65%, #56C1EB 64.25%);
}

.shadow-card {
    box-shadow: 0px 40px 80px 0px rgba(0, 0, 0, 0.2);
}

.accordion-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease-out;
}

.accordion-content.open {
    max-height: 500px;
}

/* Styles personnalisés pour les accordéons FAQ DaisyUI */
.collapse-arrow > .collapse-title:after {
    color: #0818AF;
}

.collapse-title {
    min-height: auto;
    padding: 0.75rem 1rem;
    font-size: 14px;
}

@media (min-width: 768px) {
    .collapse-title {
        font-size: 18px;
        padding: 1rem;
    }
}

@media (min-width: 1024px) {
    .collapse-title {
        font-size: 22px;
    }
}

.collapse-content {
    padding-bottom: 1rem;
}

.collapse:focus-visible {
    outline: none;
}

.join-item:first-child {
    border-radius: 0;
}

.join-item:last-child {
    border-radius: 0;
}

/* Animations au scroll */
.animate-on-scroll {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

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

/* Variantes d'animation */
.animate-fade-up {
    opacity: 0;
    transform: translateY(60px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.animate-fade-up.animate-visible {
    opacity: 1;
    transform: translateY(0);
}

.animate-fade-left {
    opacity: 0;
    transform: translateX(-60px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.animate-fade-left.animate-visible {
    opacity: 1;
    transform: translateX(0);
}

.animate-fade-right {
    opacity: 0;
    transform: translateX(60px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.animate-fade-right.animate-visible {
    opacity: 1;
    transform: translateX(0);
}

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

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

.animate-fade {
    opacity: 0;
    transition: opacity 1s ease-out;
}

.animate-fade.animate-visible {
    opacity: 1;
}

/* Délais d'animation pour les éléments en séquence */
.delay-100 {
    transition-delay: 0.1s;
}

.delay-200 {
    transition-delay: 0.2s;
}

.delay-300 {
    transition-delay: 0.3s;
}

.delay-400 {
    transition-delay: 0.4s;
}

.delay-500 {
    transition-delay: 0.5s;
}

.delay-600 {
    transition-delay: 0.6s;
}

.delay-700 {
    transition-delay: 0.7s;
}

.delay-800 {
    transition-delay: 0.8s;
}

/* ========== ANIMATIONS AU SCROLL ========== */
/* État initial - éléments cachés */
.animate-on-scroll {
    opacity: 0;
    transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Fade In Up */
.fade-in-up {
    transform: translateY(60px);
}

.fade-in-up.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Fade In Down */
.fade-in-down {
    transform: translateY(-60px);
}

.fade-in-down.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Fade In Left */
.fade-in-left {
    transform: translateX(-80px);
}

.fade-in-left.is-visible {
    opacity: 1;
    transform: translateX(0);
}

/* Fade In Right */
.fade-in-right {
    transform: translateX(80px);
}

.fade-in-right.is-visible {
    opacity: 1;
    transform: translateX(0);
}

/* Scale In */
.scale-in {
    transform: scale(0.8);
}

.scale-in.is-visible {
    opacity: 1;
    transform: scale(1);
}

/* Fade In Simple */
.fade-in {
    opacity: 0;
}

.fade-in.is-visible {
    opacity: 1;
}

/* Délais pour les animations en cascade */
.delay-100 {
    transition-delay: 0.1s;
}

.delay-200 {
    transition-delay: 0.2s;
}

.delay-300 {
    transition-delay: 0.3s;
}

.delay-400 {
    transition-delay: 0.4s;
}

.delay-500 {
    transition-delay: 0.5s;
}

.delay-600 {
    transition-delay: 0.6s;
}

/* Durées personnalisées */
.duration-500 {
    transition-duration: 0.5s;
}

.duration-700 {
    transition-duration: 0.7s;
}

.duration-1000 {
    transition-duration: 1s;
}

.duration-1200 {
    transition-duration: 1.2s;
}

/* ========== ANIMATIONS AU SCROLL ========== */
/* États initiaux (avant animation) */
.animate-on-scroll {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.animate-fade-in {
    opacity: 0;
    transition: opacity 1s ease-out;
}

.animate-slide-left {
    opacity: 0;
    transform: translateX(-60px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.animate-slide-right {
    opacity: 0;
    transform: translateX(60px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

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

.animate-slide-up-delay-1 {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease-out 0.1s, transform 0.8s ease-out 0.1s;
}

.animate-slide-up-delay-2 {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease-out 0.2s, transform 0.8s ease-out 0.2s;
}

.animate-slide-up-delay-3 {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease-out 0.3s, transform 0.8s ease-out 0.3s;
}

.animate-slide-up-delay-4 {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease-out 0.4s, transform 0.8s ease-out 0.4s;
}

/* États actifs (après animation) */
.animate-on-scroll.is-visible,
.animate-fade-in.is-visible,
.animate-slide-left.is-visible,
.animate-slide-right.is-visible,
.animate-scale-in.is-visible,
.animate-slide-up-delay-1.is-visible,
.animate-slide-up-delay-2.is-visible,
.animate-slide-up-delay-3.is-visible,
.animate-slide-up-delay-4.is-visible {
    opacity: 1;
    transform: translateY(0) translateX(0) scale(1);
}

/* Animation spéciale pour les cartes info du hero */
.animate-card {
    opacity: 0;
    transform: translateY(30px) scale(0.95);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

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

/* Stagger pour les cartes */
.animate-card:nth-child(1) {
    transition-delay: 0.1s;
}

.animate-card:nth-child(2) {
    transition-delay: 0.2s;
}

.animate-card:nth-child(3) {
    transition-delay: 0.3s;
}

.animate-card:nth-child(4) {
    transition-delay: 0.4s;
}