/* ----------------- HOME HERO (autonome) ----------------- */
.home-hero {
  position: relative;
  overflow: hidden;
  font-family: "Plus Jakarta Sans", "Firs", sans-serif;
  color: #fff;
  padding-top: 36px;
  padding-bottom: 36px;
}

/* Background controlled: dominant blue with subtle orange overlay */
.home-hero__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  /* base gradient bleu/violet */
  background: linear-gradient(135deg, rgba(45,19,190,1) 0%, rgba(138,37,210,0.95) 60%);
}

/* subtle animated orange overlay (keeps orange from taking over) */
.home-hero__bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(120deg, rgba(250,111,30,0.08) 0%, rgba(250,111,30,0.12) 25%, rgba(250,111,30,0.06) 45%, transparent 70%);
  mix-blend-mode: screen;
  animation: home-hero--overlay 18s ease-in-out infinite;
  pointer-events: none;
  z-index: 1;
}
@keyframes home-hero--overlay {
  0% { transform: translateX(-10%); opacity: 0.9; }
  50% { transform: translateX(10%); opacity: 0.5; }
  100% { transform: translateX(-10%); opacity: 0.9; }
}

/* container content sits above bg */
.home-hero__wrap { position: relative; z-index: 2; padding: 36px 0; }

/* Kicker */
.home-hero__kicker {
  font-weight: 800;
  font-size: 0.95rem;
  color: rgba(255,255,255,0.92);
  letter-spacing: 1.2px;
  margin-bottom: 6px;
  text-transform: uppercase;
}

/* Main title */
.home-hero__title {
  margin: 0 0 12px 0;
  font-weight: 900;
  font-size: clamp(1.6rem, 4.6vw, 2.6rem);
  line-height: 1.02;
  color: #fff;
  text-shadow: 0 10px 30px rgba(8,6,30,0.28);
}

/* emphasized word */
.home-hero__title-strong {
  font-family: "FirsBold", "Firs", sans-serif;
  color: var(--blue);
  background: linear-gradient(90deg, rgba(255,255,255,0.06), rgba(255,255,255,0.02));
  padding: 6px 10px;
  border-radius: 8px;
  box-shadow: 0 8px 20px rgba(45,19,190,0.08);
}

/* typed text area (accepts contentType: 'html') */
.home-hero__typed {
  display: inline-block;
  color: var(--orange);
  font-weight: 800;
  margin-left: 6px;
}

/* lead paragraph */
.home-hero__lead {
  margin: 14px 0 18px 0;
  color: rgba(255,255,255,0.9);
  font-size: 1.02rem;
  max-width: 56ch;
  backdrop-filter: blur(2px);
}

/* CTA group */
.home-hero__controls { margin-bottom: 6px; }

/* CTA buttons */
.home-hero__cta {
  border-radius: 999px;
  padding: 10px 18px;
  font-weight: 800;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
}

/* outline style */
.home-hero__cta--outline {
  border: 2px solid rgba(var(--orange-r,250,111,30),1);
  color: var(--orange);
  background: transparent;
  transition: all .22s ease;
}
.home-hero__cta--outline:hover {
  background: linear-gradient(90deg, rgba(250,111,30,1), rgba(255,176,107,1));
  color: #fff;
  transform: translateY(-3px);
  box-shadow: 0 12px 36px rgba(250,111,30,0.14);
}

/* solid style */
.home-hero__cta--solid {
  background: linear-gradient(90deg, var(--orange), #ffb06b);
  color: #fff;
  border: none;
  box-shadow: 0 10px 30px rgba(250,111,30,0.12);
}
.home-hero__cta--solid:hover { transform: translateY(-3px); }

/* social block */
.home-hero__social {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 18px;
}
.home-hero__social-list {
  display:flex;
  gap: 8px;
  list-style: none;
  padding: 0;
  margin: 0;
}
.home-hero__social-list li {
  width: 42px;
  height: 42px;
  display: inline-grid;
  place-items: center;
  border-radius: 8px;
  background: rgba(255,255,255,0.06);
  color: #fff;
  transition: transform .18s;
}
.home-hero__social-list li:hover { transform: translateY(-4px); background: rgba(255,255,255,0.14); color: var(--blue); }
.home-hero__brand {
  margin-left: 8px;
  color: rgba(255,255,255,0.9);
  font-weight: 700;
}

/* right media block */
.home-hero__media { position: relative; display: flex; justify-content: center; align-items: center; }
.home-hero__image { width: 100%; max-width: 440px; transform: rotate(-6deg); transition: transform .6s cubic-bezier(.2,.9,.2,1); display:block; }

/* floating movement */
@keyframes home-hero--float {
  0% { transform: translateY(0) rotate(-6deg); }
  50% { transform: translateY(-18px) rotate(-5deg); }
  100% { transform: translateY(0) rotate(-6deg); }
}
.home-hero__image { animation: home-hero--float 5.6s ease-in-out infinite; }

/* decorative small card in front of image */
.home-hero__card {
  position: absolute;
  right: -8%;
  bottom: 6%;
  width: 220px;
  background: linear-gradient(180deg, rgba(255,255,255,0.98), rgba(250,250,255,0.98));
  color: var(--black);
  border-radius: 14px;
  padding: 12px;
  box-shadow: 0 18px 46px rgba(11,8,40,0.12);
  transform: translateY(6px) rotate(-3deg);
  z-index: 3;
}
.home-hero__card-title { font-weight: 800; font-size: 0.95rem; margin-bottom:6px; }
.home-hero__card-sub { font-size: 0.82rem; color: rgba(0,0,0,0.6); margin-bottom:8px; }
.home-hero__card-btn {
  display:inline-block;
  font-weight:700;
  padding:6px 10px;
  border-radius:8px;
  background: linear-gradient(90deg, var(--orange), #ffb06b);
  color:#fff;
  text-decoration:none;
  font-size:0.82rem;
}

/* responsive adjustments */
@media (max-width: 991.98px) {
  .home-hero__card { right: 4%; bottom: 8%; width: 200px; transform: rotate(-2deg); }
  .home-hero__image { max-width: 360px; }
}
/* @media (max-width: 620.98px) {
  .home-hero__wrap { padding: 18px 0; }
  .home-hero__title { font-size: 1.35rem; }
  .home-hero__title-strong { display:inline-block; padding: 4px 8px; font-size: 1rem; }
  .home-hero__lead { max-width: 100%; font-size: 0.95rem; }
  .home-hero__card { position: static; transform: none; margin-top: 12px; width: 100%; }
  .home-hero__image { max-width: 320px; transform: none; animation: none; }
  .home-hero__social { margin-top: 10px; }
} */

/* ----------------- Ajustements Mobile pour home-hero ----------------- */
/* Coller après tes autres règles .home-hero */

/* 1) Force le texte "typed" à s'afficher proprement sur petits écrans
   - display:block pour forcer un retour à la ligne si nécessaire
   - augmenter padding-top pour éviter que le texte soit coupé */
@media (max-width: 620.98px) {
  .home-hero {
    /* rendre visible ce qui était éventuellement masqué par overflow */
    overflow: visible;
    padding-top: 48px;    /* plus d'espace en haut pour le titre + typed */
    padding-bottom: 10px;
    
  }

  .home-hero__wrap {
    padding-top: 18px;
  }

  .home-hero__title {
    /* un peu plus d'espace vertical et taille réduite pour tenir sur l'écran */
    font-size: 1.5rem; /* réduit, mais lisible */
    line-height: 1.08;
  }

  /* IMPORTANT: typed devient un bloc pour ne plus être "collé" en haut */
  .home-hero__typed {
    display: block;      /* force le saut de ligne si texte long */
    margin-top: 6px;
    font-size: 1rem;
    line-height: 1.12;
    word-break: break-word;
    white-space: normal;
    /* s'assurer que le typed reste au-dessus du background */
    position: relative;
    z-index: 3;
  }

  .home-hero__lead {
    margin-top: 10px;
    font-size: 0.95rem;
    max-width: 100%;
  }
}

/* 2) Repositionner la carte décorative pour mobile
   - centrer la carte, la rapprocher de l'image et la superposer légèrement */
@media (max-width: 620.98px) {
  .home-hero__media {
    position: relative;      /* base de référence pour la carte */
    padding-bottom: 8px;     /* petite marge pour laisser respirer */
    display: flex;
    justify-content: center;
    align-items: flex-start;
  }

  /* image restreinte et centrée */
  .home-hero__image {
    max-width: 320px;
    width: 92%;
    margin: 0 auto;
    transform: none;         /* enlever la rotation si besoin (plus stable sur mobile) */
    animation: none;  
           /* désactiver l'animation pour moins de mouvement */
  }

  /* La carte : on la centre sous l'image, on la superpose avec marge négative */
  .home-hero__card {
    position: relative;            /* devient un bloc centré, et non plus offscreen */
    right: auto;
    bottom: auto;
    transform: none;
    margin: -64px auto 12px;       /* négatif pour la superposer sur le bas de l'image */
    width: calc(100% - 32px);      /* prend la largeur disponible */
    max-width: 420px;
    z-index: 5;                    /* au-dessus de l'image pour rester visible */
    box-shadow: 0 20px 48px rgba(11,8,40,0.12);
    transform: rotate(-4deg) translateX(-6px);
  }

  /* Ajustements internes pour lisibilité */
  .home-hero__card-title { font-size: 0.95rem; }
  .home-hero__card-sub { font-size: 0.82rem; }
  .home-hero__card-location { font-size: 0.9rem; display:flex; gap:8px; align-items:center; }
  .home-hero__card-eta { font-size: 0.82rem; color: rgba(0,0,0,0.56); }

  /* Si la carte contient une miniature, on la réduit pour mobile */
  .home-hero__card-thumb { width: 100%; height: 120px; object-fit: cover; border-radius: 8px; margin-bottom:8px; }
}

/* Optionnel : variante si tu préfères que la carte soit STRICTEMENT sous l'image (pas superposée)
   - Remplace margin: -64px ... par margin: 12px auto 12px; ci-dessus */




@media (max-width: 450.98px) {
  .home-hero__media {
    position: relative;      /* base de référence pour la carte */
    padding-bottom: 8px;     /* petite marge pour laisser respirer */
    display: flex;
    justify-content: center;
    align-items: flex-start;
  }

  /* image restreinte et centrée */
  .home-hero__image {
    max-width: 320px;
    width: 92%;
    margin: 0 auto;
    transform: none;         /* enlever la rotation si besoin (plus stable sur mobile) */
    animation: none;  
           /* désactiver l'animation pour moins de mouvement */
  }

  /* La carte : on la centre sous l'image, on la superpose avec marge négative */
  .home-hero__card {
    position: relative;            /* devient un bloc centré, et non plus offscreen */
    right: auto;
    bottom: auto;
    transform: none;
    /* réduire la superposition et éviter qu'elle ne touche les bords */
    margin: -18px auto 12px;       /* rapprocher davantage (moins de superposition) */
    width: calc(100% - 40px);      /* laisser 20px de padding à gauche/droite */
    max-width: 340px;              /* limiter la largeur pour petits écrans */
    padding: 10px 12px;            /* réduire padding interne si besoin */
    z-index: 5;                    /* au-dessus de l'image pour rester visible */
    box-shadow: 0 20px 48px rgba(11,8,40,0.12);
    /* incliner légèrement vers la droite et rapprocher horizontalement */
    transform: rotate(-4deg) translateX(-6px);
  }

  /* Ajustements internes pour lisibilité */
  .home-hero__card-title { font-size: 0.95rem; }
  .home-hero__card-sub { font-size: 0.82rem; }
  .home-hero__card-location { font-size: 0.9rem; display:flex; gap:8px; align-items:center; }
  .home-hero__card-eta { font-size: 0.82rem; color: rgba(0,0,0,0.56); }

  /* Si la carte contient une miniature, on la réduit pour mobile */
  .home-hero__card-thumb { width: 100%; height: 120px; object-fit: cover; border-radius: 8px; margin-bottom:8px; }
}

/* ensure the hero doesn't hide overflowing positioned children on very small screens */
@media (max-width: 450.98px) {
  .home-hero {
    overflow: visible; /* allow the card to be visible when it overflows the hero */
    padding-left: 12px; /* small safe area to avoid card touching the viewport */
    padding-right: 12px;
  }

  /* ensure the column wrapper has horizontal padding to prevent card from sticking to edges */
  .home-hero__right {
    padding-left: 8px;
    padding-right: 8px;
  }
}

/* --- Responsive --- */
 @media (max-width: 768px) {
  .category-card .caterory-card-title {
    display: none !important;
  }
}






/* Categories */

.category-icon {
      width: 50px;
      height: 50px;
      margin-bottom: 10px;
      fill: none;
      stroke: #FA6F1E;
      stroke-width: 1.5;
      transition: transform 0.3s, stroke 0.3s;
    }
    
    .category-item:hover .category-icon {
      transform: scale(1.2);
      stroke: #2D13BE;
    }
    

    .category-container {
      display: flex;
      justify-content: center;
      flex-wrap: wrap;
      gap: 20px;
      margin-top: 20px;
    }
    
    .category-item {
      display: flex;
      flex-direction: column;
      align-items: center;
      background-color: #f9f9f9;
      border-radius: 10px;
      padding: 15px;
      cursor: pointer;
      transition: transform 0.3s ease, box-shadow 0.3s ease;
      width: 150px;
      box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    }
    
    .category-item:hover {
      transform: scale(1.1);
      box-shadow: 0 8px 12px rgba(0, 0, 0, 0.2);
    }
    
    .category-image {
      width: 100px;
      height: 100px;
      object-fit: cover;
      margin-bottom: 10px;
      border-radius: 50%;
    }
    
    .category-text {
      font-size: 16px;
      color: #333;
      font-weight: bold;
      text-align: center;
    }
    /* End categories */


.pub-section  {
  width: 100%;
  border-radius: 18px;
}    

    /* PUB */
.pub-section img {
  width: 100%;
  border-radius: 18px;
}


/* How it works section */
.how-it-works-section {
            padding: 100px 0;
            background: #fafafa;
            position: relative;
        }
        
        .how-it-works-title {
            font-family: "FirsBold", sans-serif;
            font-size: 2.8rem;
            font-weight: 700;
            margin-bottom: 1.5rem;
            color: var(--blue);
            position: relative;
            display: inline-block;
        }
        
        .how-it-works-title::after {
            content: "";
            position: absolute;
            bottom: -10px;
            left: 50%;
            transform: translateX(-50%);
            width: 80px;
            height: 4px;
            background: linear-gradient(to right, var(--red), #8a25d2);
            border-radius: 2px;
        }
        
        .how-it-works-subtitle {
            font-size: 1.2rem;
            color: #666;
            max-width: 600px;
            margin: 0 auto 4rem;
        }
        
        .process-step-card {
            background: white;
            border-radius: 16px;
            padding: 2.5rem 2rem;
            box-shadow: 0 5px 20px rgba(0, 0, 0, 0.06);
            transition: all 0.3s ease;
            height: 100%;
            position: relative;
            overflow: hidden;
            border: none;
            border-left: 4px solid var(--blue);
        }
        
        .process-step-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
            border-left: 6px solid var(--orange);
        }
        
        .step-number {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 60px;
            height: 60px;
            border-radius: 50%;
            background: linear-gradient(to bottom right, var(--red) 0%, #8a25d2 100%);
            color: white;
            font-family: "FirsBold", sans-serif;
            font-size: 1.5rem;
            font-weight: 700;
            margin-bottom: 1.5rem;
            box-shadow: 0 5px 15px rgba(231, 84, 84, 0.3);
            position: relative;
            z-index: 1;
        }
        
        .step-icon {
            font-size: 2.2rem;
            margin-bottom: 1.5rem;
            background: linear-gradient(to bottom right, var(--red) 0%, #8a25d2 100%);
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
        }
        
        .step-title {
            font-family: "FirsBold", sans-serif;
            font-size: 1.3rem;
            font-weight: 600;
            margin-bottom: 1rem;
            color: var(--blue);
        }
        
        .step-description {
            color: #555;
            margin-bottom: 0;
            line-height: 1.7;
        }
        
        .step-connector {
            position: absolute;
            top: 30px;
            right: -15px;
            width: 30px;
            height: 2px;
            background: #dee2e6;
            z-index: 0;
        }
        
        .step-connector::after {
            content: "";
            position: absolute;
            top: -4px;
            right: -5px;
            width: 10px;
            height: 10px;
            border-radius: 50%;
            background: #dee2e6;
        }
        
        @media (max-width: 991.98px) {
            .step-connector {
                display: none;
            }
        }
        
        .how-it-works-cta {
            background: linear-gradient(to bottom right, var(--red) 0%, #8a25d2 100%);
            color: white;
            padding: 3rem 2rem;
            border-radius: 16px;
            margin-top: 4rem;
            text-align: center;
            box-shadow: 0 10px 30px rgba(231, 84, 84, 0.3);
        }
        
        .how-it-works-cta-title {
            font-family: "FirsBold", sans-serif;
            font-size: 1.8rem;
            margin-bottom: 1rem;
        }
        
        .btn-how-it-works {
            background: white;
            color: var(--blue);
            padding: 0.8rem 2.5rem;
            border-radius: 50px;
            font-weight: 600;
            border: none;
            transition: all 0.3s ease;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
            font-family: "FirsBold", sans-serif;
        }
        
        .btn-how-it-works:hover {
            transform: translateY(-3px);
            box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
            background: var(--orange-light);
            color: var(--orange);
        }
        
        @media (max-width: 768px) {
            .how-it-works-title {
                font-size: 2.2rem;
            }
            
            .process-step-card {
                padding: 2rem 1.5rem;
            }
            
            .step-number {
                width: 50px;
                height: 50px;
                font-size: 1.3rem;
            }
            
            .step-icon {
                font-size: 1.8rem;
            }
        }
        /* End how works */

/* Swepper */

.events-slider {
        padding: 20px 0;
        overflow: hidden;
        position: relative; /* Essential for button positioning */
    }
    .swiper-container {
        padding: 10px;
    }
    .swiper-slide {
        height: auto;
        display: flex;
        justify-content: center;
    }
    .swiper-slide .col-12 {
        width: 100%;
        padding: 0 15px;
    }
    .swiper-button-next, 
    .swiper-button-prev {
        color: #000;
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        z-index: 10;
        width: 40px;
        height: 40px;
        background: rgba(255,255,255,0.8);
        border-radius: 50%;
    }
    .swiper-button-next {
      right: 10px;
  }
  .swiper-button-prev {
      left: 10px;
  }
  .swiper-button-next:after, 
  .swiper-button-prev:after {
      font-size: 20px;
  }
    .swiper-pagination {
        position: relative;
        margin-top: 20px;
    }
   /* End Sweeper */