/* ============================================================
   DAL'ALU — Slider homepage
   ============================================================ */

/* ── Wrapper : 10 % de marge de chaque côté du viewport ── */
.dal-slider {
  position: relative;
  width: 80vw;
  margin-left: auto;
  margin-right: auto;
  margin-top: 32px;
  margin-bottom: 32px;
}

.dal-slider__track {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 7;
  max-height: 600px;
  min-height: 450px;
}

.dal-slider__slide {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: start;
  opacity: 0;
  transition: opacity 0.6s ease;
  pointer-events: none;
}

.dal-slider__img {
  position: absolute;
  inset: 0;
  margin-left: 50px;
  width: calc(100% - 50px);
  height: 100%;
  object-fit: cover;
  object-position: center right;
  display: block;
  border-radius: 20px;
}

.dal-slider__slide.is-active {
  opacity: 1;
  pointer-events: auto;
}

/* ── Pastilles (logos) en bas à droite du slide ──
   Réglées par slide dans le BO : image + lien + affichage. Empilées dans
   l'ordre des emplacements. Le slide inactif est en pointer-events: none,
   les liens ne sont donc cliquables que sur le slide visible. */
.dal-slider__pastilles {
  position: absolute;
  right: 28px;
  bottom: 28px;
  z-index: 2;
  display: flex;
  flex-direction: column;
  /* Pastilles centrées les unes par rapport aux autres : une pastille plus
     étroite reste alignée sur l'axe de la plus large. */
  align-items: center;
  gap: 16px;
  /* Largeur commune à toutes les pastilles du slide */
  --dal-pastille-base: clamp(88px, 12.5vw, 165px);
}

.dal-slider__pastille {
  display: block;
  line-height: 0;
}

/* Toutes les pastilles à la même largeur, fluide : suit la taille du slide,
   bornée pour rester lisible. */
.dal-slider__pastille-img {
  display: block;
  width: var(--dal-pastille-base);
  height: auto;
}

/* Deuxième vignette ("Fabriqué en France") agrandie, à toutes les tailles :
   son visuel est un logo large et plat, il porte donc beaucoup moins à
   largeur égale que la pastille ronde qui le précède. Le facteur s'applique à
   la largeur commune, la vignette reste donc solidaire du clamp responsive.

   Ciblage positionnel : c'est le deuxième emplacement du back-office, quel
   que soit le logo qu'on y place. */
.dal-slider__pastille:nth-child(2) .dal-slider__pastille-img {
  width: calc(var(--dal-pastille-base) * 1.4);
}

/* ── Blob rouge ── */
.dal-slider__blob {
  position: relative;
  /* pas de z-index ici : évite le stacking context qui piège le mix-blend-mode */
  margin-top: 40px;
  color: #fff;
  padding: 36px 56px 36px 44px;
  /* Gauche : angles discrets — Droite : grand demi-ovale "blob" */
  border-radius: 75px 500px 500px 75px;
  width: 42%;
  max-height: calc(100% - 160px);
  display: flex;
  flex-direction: column;
  gap: 14px;
}




/* Fond rouge avec blend-mode — complètement séparé du texte.
   Part fermé (scaleX 0) par défaut : évite tout flash "ouvert" avant que
   l'animation ne s'applique. L'ouverture se fait via l'animation sur la
   slide active (voir plus bas) ; reset en prefers-reduced-motion. */
.dal-slider__blob-bg {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: #dc0d14;
  mix-blend-mode: hard-light;
  transform: scaleX(0);
  transform-origin: left center;
}

/* ── Dépliage de la languette (blob) à l'arrivée sur chaque slide ──
   Le fond se déplie depuis le bord gauche (scaleX), PUIS le contenu (titre…)
   apparaît. Piloté par .is-active, donc rejoué à chaque changement de slide.
   Le transform est sur le fond lui-même (déjà contexte via mix-blend-mode),
   pas sur .dal-slider__blob, pour ne pas piéger le blend. */
@keyframes dal-slider-deplie {
  from {
    transform: scaleX(0);
  }

  to {
    transform: scaleX(1);
  }
}

@keyframes dal-slider-titre {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

.dal-slider__slide.is-active .dal-slider__blob-bg {
  transform-origin: left center;
  animation: dal-slider-deplie .6s cubic-bezier(.22, .61, .36, 1) both;
}

.dal-slider__slide.is-active .dal-slider__content {
  animation: dal-slider-titre .45s ease .5s both;
}

@media (prefers-reduced-motion: reduce) {
  .dal-slider__blob-bg {
    transform: none;
  }

  .dal-slider__slide.is-active .dal-slider__blob-bg,
  .dal-slider__slide.is-active .dal-slider__content {
    animation: none;
  }
}

/* Texte au-dessus du fond, hors du contexte de blend */
.dal-slider__content {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 25px 0px 25px 45px;
  width: calc(100% - 165px);

}

.dal-slider__title {
  color: #fff;
  font-size: clamp(26px, 3.5vw, 44px);
  font-style: normal;
  font-weight: 600;
  margin: 0;
}

.dal-slider__desc {
  color: #fff;
  font-size: clamp(1rem, 1.3vw, 16px);
  font-style: normal;
  font-weight: 400;
  line-height: normal;
  margin: 0;
  margin-top: 16px;
}

/* ── Contrôles dans le blob ── */
.dal-slider__controls {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  margin-top: 32px;
}

.dal-slider__btn {
  padding: 8px clamp(20px, 48px, 75px);
  font-size: clamp(18px, 1.4vw, 20px);
  font-weight: 800;
  white-space: nowrap;
}

/* Contexte clair : flèches blanches (géométrie dans global.css .dal-arrow) */
.dal-slider__arrows {
  display: flex;
  gap: 32px;
  --dal-arrow-color: #fff;
  --dal-arrow-hover-bg: rgba(255, 255, 255, .15);
}

/* ── Dots ──
   La barre de navigation porte le positionnement ; les dots ne sont plus
   qu'une rangée à l'intérieur, encadrée par les flèches sur mobile. */
.dal-slider__nav {
  position: absolute;
  bottom: 16px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 20px;
  z-index: 2;
}

.dal-slider__dots {
  display: flex;
  gap: 8px;
}

/* Sur desktop les flèches vivent dans la languette (.dal-slider__arrows) :
   celles de la barre du bas sont masquées.

   Sélecteur à deux classes, indispensable : ce fichier est chargé AVANT
   global.css, où .dal-arrow porte un display: flex de même spécificité. À une
   seule classe, c'est global.css qui gagne et les flèches réapparaissent en
   desktop. */
.dal-slider .dal-slider__nav-arrow {
  display: none;
  --dal-arrow-color: #fff;
}

.dal-slider__dot {
  width: 28px;
  height: 6px;
  border-radius: 3px;
  border: none;
  background: rgba(255, 255, 255, .4);
  cursor: pointer;
  padding: 0;
  transition: background .2s, width .2s;
}

.dal-slider__dot.is-active {
  background: #DC0D15;
  width: 42px;
}

@media (max-width: 1800px) {
  .dal-slider__blob {
    max-width: 60%;
    width: fit-content;
  }
}

@media (max-width: 1440px) {
  .dal-slider__blob {
    max-width: 60%;
    width: fit-content;
    padding: 36px 56px 44px 44px;
  }

  .dal-slider__content {
    padding: 0px 0px 0px 45px;
    justify-content: space-between;
  }

  .dal-slider__title {
    margin-top: 8px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    overflow: hidden;
  }

  .dal-slider__controls {
    margin-top: 12px;
  }

  .dal-slider__desc {
    margin-top: 8px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
  }
}

@media (max-width: 1150px) {

  .dal-slider__desc {
    margin-top: 8px;
    font-size: 12px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
  }

  .dal-slider__arrows {
    display: none;
  }

  .dal-slider__controls {
    margin-top: 0;
  }
}


/* ── Responsive ── */
@media (max-width: 900px) {
  .dal-slider {
    margin-top: 20px;
    margin-bottom: 20px;
    border-radius: 14px;
  }

  .dal-slider__img {
    margin-left: 0;
    width: 100%;
  }

  .dal-slider__track {
    aspect-ratio: 4 / 3;
    align-items: flex-end;
  }

  .dal-slider__content {
    padding-bottom: 0;
    gap: 36px;
    width: calc(100% - 65px);
  }

  .dal-slider__blob {
    max-width: 90%;
    width: 90%;
    /* Marge basse : c'est elle qui remonte la languette dans le slide,
       la languette étant collée en bas (align-items: flex-end sur la piste). */
    margin: auto auto 80px;
    margin-left: -40px;
    padding: 30px 32px;
  }

  .dal-slider__desc {
    margin-top: 8px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
  }

}

@media (max-width: 600px) {
  .dal-slider__desc {
    margin-top: 8px;
    font-size: 12px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
  }


  .dal-slider__track {
    aspect-ratio: 1/1;
    min-height: 450px;
  }

  .dal-slider {
    width: 100%;
    padding-left: 16px;
    padding-right: 16px;
    box-sizing: border-box;
  }

  .dal-slider__content {
    gap: 12px;
    padding-left: 20px;
  }

  .dal-slider__title {
    font-size: 22px;
    margin-top: 8px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 5;
    line-clamp: 5;
    overflow: hidden;
  }

  .dal-slider__btn {
    font-size: 14px;
  }

  /* Navigation mobile : une flèche de chaque côté des tirets de position.
     Deux classes ici aussi, pour rester au-dessus du display de .dal-arrow. */
  .dal-slider .dal-slider__nav-arrow {
    display: flex;
    width: 34px;
    height: 34px;
    flex: 0 0 auto;
  }

  /* Chevron : hauteur pilotée, largeur libre pour ne pas l'écraser */
  .dal-slider__nav-arrow svg {
    width: auto;
    height: 14px;
  }
}

/* Sous 900px la languette rouge occupe le bas du slide : les pastilles
   passent en haut à droite, sur la photo, pour ne pas la recouvrir. */
@media (max-width: 900px) {
  .dal-slider__pastilles {
    top: 18px;
    right: 18px;
    bottom: auto;
    gap: 12px;
    --dal-pastille-base: clamp(56px, 15vw, 96px);
  }
}

/* Sous 600px on inverse : languette en haut, pastilles en bas à droite.
   Les pastilles sont remontées au-dessus des dots (bottom: 16px, centrés). */
@media (max-width: 600px) {
  .dal-slider__blob {
    /* margin-bottom auto au lieu de margin-top : la languette remonte,
       le margin-top la décale ensuite vers le bas du haut de slide.
       Valeur réduite pour dégager le bas de la languette des vignettes,
       qui sont ancrées à 62px du bas. */
    margin-top: 32px;
    margin-bottom: auto;
  }

  /* Au-dessus de la barre de nav (bottom 16px + flèches de 34px), à droite.
     La barre de nav est centrée et plus basse : aucun recouvrement. */
  .dal-slider__pastilles {
    top: auto;
    bottom: 62px;
    left: auto;
    right: 18px;
    /* Vignettes en ligne, centrées verticalement les unes par rapport aux
       autres : une vignette moins haute reste sur l'axe médian des autres.

       row-reverse : l'ordre affiché est inversé par rapport aux emplacements
       du back-office, sans toucher au DOM. Les règles de largeur ciblent donc
       toujours la bonne image (nth-child suit l'ordre du document, pas
       l'ordre visuel). */
    flex-direction: row-reverse;
    align-items: center;
    /* Garde-fou si un slide cumule beaucoup de vignettes : le débordement se
       fait vers la gauche, l'ancrage à droite est donc conservé.

       flex-start et non flex-end : en row-reverse l'axe principal part de la
       droite, c'est donc flex-start qui plaque les vignettes contre le bord
       droit. */
    flex-wrap: wrap;
    justify-content: flex-start;
    max-width: calc(100% - 36px);
  }

}