/* Good Earth Panorama Carousel — concave 3D project-image carousel. */

.ges-panorama-carousel,
.ges-panorama-carousel * {
  box-sizing: border-box;
}

.ges-panorama-carousel {
  --ges-green: #5ea260;
  --ges-black: #050505;
  --ges-white: #ffffff;
  position: relative;
  width: 100%;
  min-height: calc(var(--ges-panorama-height, 650px) + 58px);
  overflow: hidden;
  color: var(--ges-white);
  background: var(--ges-black);
  font-family: "Anek Latin", Manrope, Arial, sans-serif;
  perspective: 1900px;
  perspective-origin: 50% 46%;
}

.ges-panorama-carousel__scene {
  position: relative;
  width: 100%;
  height: var(--ges-panorama-height, 650px);
  outline: none;
  cursor: grab;
  touch-action: pan-y;
  user-select: none;
  transform: rotateX(1.2deg);
  transform-style: preserve-3d;
}

.ges-panorama-carousel__scene.is-dragging { cursor: grabbing; }

.ges-panorama-carousel__card {
  position: absolute;
  top: 50%;
  left: 50%;
  width: min(49vw, 900px);
  height: clamp(300px, var(--ges-panorama-height, 650px), 610px);
  margin: 0;
  overflow: hidden;
  border-radius: 2px;
  background: #1b1b1b;
  backface-visibility: hidden;
  box-shadow: 0 34px 78px rgba(0,0,0,.48);
  transform-origin: center center;
  transform-style: preserve-3d;
  will-change: transform, opacity, filter;
  transition: transform var(--ges-panorama-transition, 820ms) cubic-bezier(.18,.74,.22,1), opacity 620ms ease, filter 620ms ease;
}

.ges-panorama-carousel__card::after {
  position: absolute;
  inset: 0;
  content: "";
  pointer-events: none;
  background: linear-gradient(90deg, rgba(0,0,0,.16), transparent 38%, transparent 62%, rgba(0,0,0,.16));
  opacity: var(--ges-side-shade, 0);
  transition: opacity 620ms ease;
}

.ges-panorama-carousel__card img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ges-panorama-carousel__overlay-controls {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  z-index: 30;
  width: min(calc(100% - 2 * clamp(22px, 5vw, 130px)), 2200px);
  height: var(--ges-panorama-height, 650px);
  margin: 0 auto;
  pointer-events: none;
}

.ges-panorama-carousel__counter {
  position: absolute;
  bottom: -29px;
  left: 0;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: rgba(255,255,255,.62);
  font-size: 14px;
  font-style: normal;
}

.ges-panorama-carousel__counter b { color: var(--ges-white); font-weight: 600; }
.ges-panorama-carousel__counter i { width: 42px; height: 1px; background: rgba(255,255,255,.38); }
.ges-panorama-carousel__counter em { font-style: normal; }

.ges-panorama-carousel__navigation {
  position: absolute;
  top: 50%;
  right: 0;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  pointer-events: none;
  transform: translateY(-50%);
}

.ges-panorama-carousel__navigation button {
  display: inline-grid;
  width: clamp(43px, 3.25vw, 62px);
  height: clamp(43px, 3.25vw, 62px);
  padding: 0;
  border: 1px solid rgba(255,255,255,.68);
  border-radius: 50%;
  color: var(--ges-white);
  background: rgba(5,5,5,.36);
  cursor: pointer;
  pointer-events: auto;
  place-items: center;
  transition: color .22s ease, background-color .22s ease, border-color .22s ease, transform .22s ease;
}

.ges-panorama-carousel__navigation svg { width: 22px; height: 22px; }
.ges-panorama-carousel__navigation button:hover,
.ges-panorama-carousel__navigation button:focus-visible {
  border-color: var(--ges-white);
  color: var(--ges-black);
  background: var(--ges-white);
  outline: none;
  transform: translateY(-2px);
}

.ges-panorama-carousel__notice {
  padding: 24px;
  border: 1px solid #e3b9b9;
  color: #7c2323;
  background: #fff6f6;
}

@media (max-width: 880px) {
  .ges-panorama-carousel {
    --ges-panorama-height: 455px !important;
    min-height: 520px;
    perspective: 1450px;
  }

  .ges-panorama-carousel__card {
    width: min(64vw, 760px);
    height: min(var(--ges-panorama-height), 470px);
  }
}

@media (max-width: 620px) {
  .ges-panorama-carousel {
    --ges-panorama-height: 305px !important;
    min-height: 355px;
    perspective: 1000px;
  }

  .ges-panorama-carousel__scene { transform: none; }
  .ges-panorama-carousel__card { width: 82vw; height: 255px; }
  .ges-panorama-carousel__counter { bottom: -24px; }
  .ges-panorama-carousel__navigation { top: 48%; }
}

@media (prefers-reduced-motion: reduce) {
  .ges-panorama-carousel *,
  .ges-panorama-carousel *::before,
  .ges-panorama-carousel *::after {
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
}
