/* Photo slider (homepage + bungalows). Slide/wave sizes are in em against a
   1vw font-size. Set --slider-bg on .jhotel-slider to the page background so
   the curved waves blend in. */
.jhotel-slider {
  --slider-bg: #FBF3DE;
  --slider-gold: #D4AF37;
  --slider-gold-deep: #84642A;
  position: relative;
  z-index: 2;
  font-size: 1vw;
  margin-top: 3rem;
  margin-bottom: 5em;
  padding: 0;
  background: var(--slider-bg);
}
.jhotel-slider .splide {
  margin: 0;
}
.jhotel-slider__wave {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  z-index: 2;
  margin-top: -0.6vw;
  color: var(--slider-bg);
  pointer-events: none;
}
.jhotel-slider__wave svg {
  display: block;
  width: 100%;
  height: auto;
}
.jhotel-slider__wave-mob {
  display: none;
}
.jhotel-slider__wave--bottom {
  top: auto;
  bottom: 0;
  margin-top: 0;
  margin-bottom: -0.6vw;
  transform: rotate(-180deg);
  /* The shadow on this arc is an SVG inner-shadow filter (#jh-arc-inner,
     defined in the arc's own <svg> in index.html), so it darkens the arc
     itself along its curved edge — the shadow "hovers" the arc rather than
     the photos. A CSS drop-shadow can't do this: it paints behind the
     arc's opaque fill, and the arc is a sibling of .splide so nothing
     inside the carousel can out-stack it. */
}
.jhotel-slider .splide__list {
  display: flex;
  align-items: stretch;
  margin: 0;
  padding: 0;
}
.jhotel-slider .splide__slide {
  display: block;
  position: relative;
  width: 33.333%;
  height: 40vw;
  min-height: 41.88em;
  padding-left: 0.52em;
  padding-right: 0.52em;
  flex: 0 0 auto;
  box-sizing: border-box;
}
.jhotel-slider .splide__img {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
}

/* Caption label on each slide, per request — left-aligned, vertically
   centered over the photo, with a text-shadow so it stays readable over
   any image. */
.jhotel-slider .splide__caption {
  position: absolute;
  left: 0.52em;
  right: 0.52em;
  top: 84%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  justify-content: flex-start;
  text-align: left;
  padding: 0.75rem 1.5rem;
  color: #fff;
  font-family: var(--font2);
  font-weight: var(--font2-weight, 400);
  /* Bigger again, per request (was 2.1rem), with a gold underline. */
  font-size: calc(2.8rem * var(--font2-size-ratio, 1) * var(--mobile-scale, 1));
  text-decoration: underline;
  text-decoration-color: var(--col1, #D4AF37);
  text-decoration-thickness: 2px;
  text-underline-offset: 0.2em;
  letter-spacing: 0.03em;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.55), 0 0 2px rgba(0, 0, 0, 0.4);
  pointer-events: none;
}
.jhotel-slider .splide *:focus {
  outline: none;
}

/* Arrow buttons */
.jhotel-slider__controls {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 4;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 14px;
}
.jhotel-slider__control {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  width: 52px;
  height: 52px;
  padding: 0;
  border: 1px solid var(--slider-gold);
  border-radius: 50%;
  background: #fff;
  color: var(--slider-gold-deep);
  box-shadow: 0 8px 22px -12px rgba(0, 0, 0, 0.35);
  cursor: pointer;
  transition: transform 300ms ease, box-shadow 300ms ease, color 300ms ease;
}
.jhotel-slider__control::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: var(--slider-gold);
  transform: scale(0);
  transition: transform 350ms cubic-bezier(0.22, 0.61, 0.36, 1);
}
.jhotel-slider__control svg {
  position: relative;
  width: 22px;
  height: 22px;
  transition: transform 300ms ease;
}
.jhotel-slider__control:hover,
.jhotel-slider__control:focus-visible {
  color: #fff;
  transform: translateY(-2px);
  box-shadow: 0 14px 28px -12px rgba(132, 100, 42, 0.55);
}
.jhotel-slider__control:hover::before,
.jhotel-slider__control:focus-visible::before {
  transform: scale(1);
}
.jhotel-slider__control[data-dir="<"]:hover svg {
  transform: translateX(-3px);
}
.jhotel-slider__control[data-dir=">"]:hover svg {
  transform: translateX(3px);
}
.jhotel-slider__control:active {
  transform: scale(0.94);
}
.jhotel-slider__control:focus-visible {
  outline: 2px solid var(--slider-gold-deep);
  outline-offset: 3px;
}

@media screen and (max-width: 767px) {
  .jhotel-slider {
    margin-bottom: 90px;
  }
  .jhotel-slider__wave svg {
    height: 10.08vw;
  }
  .jhotel-slider__wave-desk {
    display: none;
  }
  .jhotel-slider__wave-mob {
    display: inline;
  }
  .jhotel-slider__controls {
    top: 100%;
    bottom: auto;
    margin-top: 14px;
  }
  .jhotel-slider .splide__slide {
    width: 100%;
    min-height: 89em;
    padding-left: 0.92em;
    padding-right: 0.92em;
  }
}
