.rcgsm-hero-slider,
.rcgsm-hero-slider * {
  box-sizing: border-box;
}

.rcgsm-hero-slider {
  --rcgsm-hero-transition: 500ms;
  --rcgsm-hero-overlay: 0;
  position: relative;
  width: 100%;
  overflow: hidden;
  background: #111;
  isolation: isolate;
}

.rcgsm-hero-slider__viewport {
  position: relative;
  width: 100%;
  height: clamp(500px, 60vh, 720px);
  min-height: clamp(300px, 65vh, 500px);
  max-height: clamp(500px, 60vh, 720px);
  overflow: hidden;
  touch-action: pan-y;
}

.rcgsm-hero-slider__slide {
  position: absolute;
  inset: 0;
  display: block;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--rcgsm-hero-transition) ease;
}

.rcgsm-hero-slider__slide.is-active {
  opacity: 1;
  pointer-events: auto;
  z-index: 2;
}

.rcgsm-hero-slider__slide::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: rgba(0, 0, 0, var(--rcgsm-hero-overlay));
}

.rcgsm-hero-slider__picture,
.rcgsm-hero-slider__image {
  display: block;
  width: 100%;
  height: 100% !important;
}

.rcgsm-hero-slider__image {
  object-fit: cover;
  object-position: var(--rcgsm-hero-object-position, center center);
}

.rcgsm-hero-slider__content {
  position: absolute;
  z-index: 4;
  left: clamp(20px, 6vw, 80px);
  bottom: clamp(28px, 9vw, 96px);
  max-width: min(620px, 86vw);
  color: #fff;
  text-shadow: 0 2px 18px rgba(0,0,0,.35);
}

.rcgsm-hero-slider__content h2 {
  margin: 0 0 .2em;
  color: inherit;
  font-size: clamp(2.2rem, 6vw, 5rem);
  line-height: .95;
}

.rcgsm-hero-slider__content p {
  margin: 0 0 1.25rem;
  color: inherit;
  font-size: clamp(1rem, 2vw, 1.35rem);
  line-height: 1.45;
}

.rcgsm-hero-slider__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: .72rem 1.05rem;
  border: 1px solid rgba(255,255,255,.72);
  color: #fff;
  text-decoration: none;
  background: rgba(0,0,0,.28);
  backdrop-filter: blur(4px);
  transition: background .2s ease, color .2s ease;
}

.rcgsm-hero-slider__button:hover,
.rcgsm-hero-slider__button:focus {
  background: #fff;
  color: #111;
}

.rcgsm-hero-slider__nav {
  position: absolute;
  top: 50%;
  z-index: 8;
  transform: translateY(-50%);
  width: 44px;
  height: 44px;
  border: 1px solid rgba(255,255,255,.45);
  border-radius: 999px;
  color: #fff;
  background: rgba(0,0,0,.24);
  cursor: pointer;
  font-size: 32px;
  line-height: 1;
}

.rcgsm-hero-slider__nav--prev { left: 18px; }
.rcgsm-hero-slider__nav--next { right: 18px; }

.rcgsm-hero-slider__dots {
  position: absolute;
  z-index: 8;
  left: 50%;
  bottom: 18px;
  display: flex;
  gap: 8px;
  transform: translateX(-50%);
}

.rcgsm-hero-slider__dot {
  width: 9px;
  height: 9px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: rgba(255,255,255,.5);
  cursor: pointer;
}

.rcgsm-hero-slider__dot.is-active {
  background: #fff;
}

@media (max-width: 1024px) {
  .rcgsm-hero-slider__viewport {
    height: clamp(400px, 56vh, 580px);
    min-height: 400px;
    max-height: 620px;
  }
}

@media (max-width: 767px) {
  .rcgsm-hero-slider__viewport {
    /*
     * Keep the homepage artwork hero visible on phones. The previous 100svh rule
     * made the image consume almost the entire mobile viewport below the header.
     */
    aspect-ratio: 4 / 3;
    height: auto;
    min-height: clamp(280px, 62vw, 340px);
    max-height: 420px;
  }

  .rcgsm-hero-slider__image {
    object-position: var(--rcgsm-hero-mobile-object-position, var(--rcgsm-hero-object-position, center center));
  }

  .rcgsm-hero-slider__content {
    left: 20px;
    right: 20px;
    bottom: 34px;
    max-width: none;
  }

  .rcgsm-hero-slider__nav {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .rcgsm-hero-slider__slide {
    transition: none;
  }
}


/* v0.2.6: Hidden click/drag navigation. Keep the site's normal cursor. */
.rcgsm-hero-slider__viewport {
  user-select: none;
}

.rcgsm-hero-slider__image {
  -webkit-user-drag: none;
  user-select: none;
}

/* v0.2.15: keep the homepage hero slider in normal document flow on mobile.
   The homepage currently has Elementor wrapper containers also named .swiper-wrapper,
   plus broad inline .swiper-wrapper height rules. This reset scopes the fix to wrappers
   that actually contain the RCGSM hero so the artwork does not overlap the following
   section heading on phones. */
.rcgsm-hero-slider-host,
.elementor .swiper-wrapper:has(.rcgsm-hero-slider) {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
  align-items: stretch !important;
  transform: none !important;
}

.rcgsm-hero-slider-widget,
.rcgsm-hero-slider-host > .elementor-widget-html,
.elementor .swiper-wrapper:has(.rcgsm-hero-slider) > .elementor-widget-html {
  display: block !important;
  width: 100% !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-height: none !important;
}

.rcgsm-hero-slider-host .rcgsm-hero-slider,
.elementor .swiper-wrapper:has(.rcgsm-hero-slider) .rcgsm-hero-slider {
  display: block !important;
  margin: 0 !important;
}

@media (max-width: 767px) {
  .rcgsm-hero-slider__viewport {
    aspect-ratio: auto !important;
    height: clamp(220px, 58vw, 300px) !important;
    min-height: 0 !important;
    max-height: none !important;
  }

  .rcgsm-hero-slider__slide,
  .rcgsm-hero-slider__image {
    height: 100% !important;
  }

  .rcgsm-hero-slider-host,
  .elementor .swiper-wrapper:has(.rcgsm-hero-slider) {
    min-height: 0 !important;
    max-height: none !important;
  }
}
