/* ==========================================================
   CROWN OF INDIA — SPACES CAROUSEL v25
   Solo afecta a #crown-slider-clean. No toca el hero.
   ========================================================== */

#crown-slider-clean {
  position: relative;
  overflow: hidden;
  background: #352238;
}

#crown-slider-clean .carousel,
#crown-slider-clean .carousel-inner,
#crown-slider-clean .carousel-item,
#crown-slider-clean .crown-space-media {
  overflow: hidden;
}

#crown-slider-clean .carousel-item {
  position: relative;
}

#crown-slider-clean .crown-space-media {
  position: relative;
  width: 100%;
}

#crown-slider-clean .crown-space-media img {
  display: block;
  width: 100%;
  height: auto;
  transform: scale(1.055);
  transform-origin: 50% 50%;
  will-change: transform;
  backface-visibility: hidden;
}

/* Animación fotográfica: solo comienza cuando el carrusel entra en pantalla. */
#crown-slider-clean.crown-carousel-in-view
.crown-space-slide.crown-space-animate
.crown-space-media img {
  animation: crownSpaceImageReveal 9.5s cubic-bezier(.16,.75,.25,1) both;
}

@keyframes crownSpaceImageReveal {
  0% {
    transform: scale(1.055) translate3d(0,0,0);
  }
  100% {
    transform: scale(1.00) translate3d(0,0,0);
  }
}

/* Jaipur Room — gradiente muy localizado para no ensuciar la fotografía. */
#crown-slider-clean .crown-space-shade {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background:
    linear-gradient(
      90deg,
      rgba(22,12,22,.62) 0%,
      rgba(22,12,22,.32) 27%,
      rgba(22,12,22,.08) 48%,
      rgba(22,12,22,0) 68%
    );
}

/* Caption editorial */
#crown-slider-clean .crown-space-caption {
  position: absolute;
  z-index: 3;
  left: clamp(46px, 5.6vw, 92px);
  bottom: clamp(82px, 8.8vw, 126px);
  max-width: min(430px, 38vw);
  color: #fff;
  text-align: left;
  pointer-events: none;
}

#crown-slider-clean .crown-space-name,
#crown-slider-clean .crown-space-phrase {
  opacity: 0;
  transform: translate3d(0,18px,0);
}

#crown-slider-clean .crown-space-name {
  margin: 0 0 7px;
  color: #cfb79d;
  font-family: 'Inter Tight', Arial, sans-serif;
  font-size: clamp(14px, 1vw, 16px);
  font-weight: 500;
  line-height: 1.05;
  letter-spacing: .25em;
  text-transform: uppercase;
}

#crown-slider-clean .crown-space-phrase {
  margin: 0;
  max-width: 430px;
  color: rgba(255,255,255,.86);
  font-family: 'Rosario', serif;
  font-size: clamp(22px, 1.65vw, 26px);
  font-style: italic;
  font-weight: 300;
  line-height: 1.02;
  letter-spacing: .01em;
}

/* Entrada escalonada, limpia y sin blur para evitar vibración tipográfica. */
#crown-slider-clean.crown-carousel-in-view
.crown-space-slide.crown-space-animate
.crown-space-name {
  animation: crownSpaceTextReveal .78s .18s cubic-bezier(.22,1,.36,1) both;
}

#crown-slider-clean.crown-carousel-in-view
.crown-space-slide.crown-space-animate
.crown-space-phrase {
  animation: crownSpaceTextReveal .92s .34s cubic-bezier(.22,1,.36,1) both;
}

@keyframes crownSpaceTextReveal {
  from {
    opacity: 0;
    transform: translate3d(0,18px,0);
  }
  to {
    opacity: 1;
    transform: translate3d(0,0,0);
  }
}

/* Controles discretos por encima del texto. */
#crown-slider-clean .carousel-control-prev,
#crown-slider-clean .carousel-control-next {
  z-index: 5;
}

@media (max-width: 767px) {
  #crown-slider-clean .crown-space-shade {
    background:
      linear-gradient(
        0deg,
        rgba(22,12,22,.68) 0%,
        rgba(22,12,22,.30) 42%,
        rgba(22,12,22,0) 72%
      );
  }

  #crown-slider-clean .crown-space-caption {
    left: 24px;
    right: 24px;
    bottom: 64px;
    max-width: none;
    text-align: left;
  }

  #crown-slider-clean .crown-space-name {
    margin-bottom: 6px;
    font-size: 12px;
    letter-spacing: .23em;
  }

  #crown-slider-clean .crown-space-phrase {
    max-width: 78vw;
    font-size: clamp(21px, 6.1vw, 28px);
    line-height: 1.03;
  }

  #crown-slider-clean .crown-space-media img {
    transform: scale(1.04);
  }

  #crown-slider-clean.crown-carousel-in-view
  .crown-space-slide.crown-space-animate
  .crown-space-media img {
    animation-duration: 8s;
  }
}

@media (prefers-reduced-motion: reduce) {
  #crown-slider-clean .crown-space-media img,
  #crown-slider-clean .crown-space-name,
  #crown-slider-clean .crown-space-phrase {
    animation: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
}


/* ==========================================================
   TRANSICIÓN ENTRE FOTOS — v23
   Crossfade editorial + desplazamiento mínimo.
   Sustituye el slide lateral de Bootstrap SOLO en este carrusel.
   ========================================================== */

#crown-slider-clean #crownCarousel .carousel-inner {
  position: relative;
  overflow: hidden;
}

/* Durante el cambio, las dos diapositivas se superponen para poder fundirse. */
#crown-slider-clean #crownCarousel .carousel-item {
  transition:
    opacity 1.15s cubic-bezier(.22,.61,.36,1),
    transform 1.25s cubic-bezier(.22,.61,.36,1) !important;
  transform: translate3d(0,0,0) !important;
  opacity: 0;
  backface-visibility: hidden;
  will-change: opacity, transform;
}

#crown-slider-clean #crownCarousel .carousel-item.active {
  opacity: 1;
}

/* Bootstrap mantiene visible la diapositiva que sale durante la transición. */
#crown-slider-clean #crownCarousel .carousel-item-next,
#crown-slider-clean #crownCarousel .carousel-item-prev,
#crown-slider-clean #crownCarousel .carousel-item.active.carousel-item-start,
#crown-slider-clean #crownCarousel .carousel-item.active.carousel-item-end {
  display: block;
  position: absolute;
  inset: 0;
  width: 100%;
}

/* La siguiente entra apenas desplazada: movimiento casi imperceptible. */
#crown-slider-clean #crownCarousel .carousel-item-next,
#crown-slider-clean #crownCarousel .carousel-item-prev {
  opacity: 0;
}

#crown-slider-clean #crownCarousel .carousel-item-next {
  transform: translate3d(1.15%,0,0) !important;
}

#crown-slider-clean #crownCarousel .carousel-item-prev {
  transform: translate3d(-1.15%,0,0) !important;
}

/* Al activarse llega a su posición mientras aparece. */
#crown-slider-clean #crownCarousel .carousel-item-next.carousel-item-start,
#crown-slider-clean #crownCarousel .carousel-item-prev.carousel-item-end {
  opacity: 1;
  transform: translate3d(0,0,0) !important;
}

/* La anterior desaparece con un drift aún menor en sentido contrario. */
#crown-slider-clean #crownCarousel .carousel-item.active.carousel-item-start {
  opacity: 0;
  transform: translate3d(-.65%,0,0) !important;
}

#crown-slider-clean #crownCarousel .carousel-item.active.carousel-item-end {
  opacity: 0;
  transform: translate3d(.65%,0,0) !important;
}

/* La imagen acompaña el fundido sin golpes de escala. */
#crown-slider-clean #crownCarousel .carousel-item-next .crown-space-media img,
#crown-slider-clean #crownCarousel .carousel-item-prev .crown-space-media img {
  transition: transform 1.35s cubic-bezier(.16,1,.3,1);
}

@media (prefers-reduced-motion: reduce) {
  #crown-slider-clean #crownCarousel .carousel-item {
    transition: none !important;
    transform: none !important;
  }
}
