/* carousel-fix : drives Elementor's image-carousel markup without Elementor's own JS.
   The static mirror never captured Elementor's dynamically-loaded webpack chunk that
   initialises Swiper (shared-frontend-handlers...bundle.min.js -> 404), so the widget's
   prev/next buttons and autoplay never worked. This stacks the existing .swiper-slide
   elements and cross-fades between them; carousel-fix.js drives the timing/clicks. */
.elementor-image-carousel-wrapper.swiper{ position:relative; }
.elementor-image-carousel-wrapper.swiper .elementor-image-carousel{
  position:relative; display:block !important; height:auto;
}
.elementor-image-carousel-wrapper.swiper .swiper-slide{
  position:absolute; inset:0; width:100% !important; flex:none !important;
  opacity:0; transition:opacity .5s ease; pointer-events:none;
}
.elementor-image-carousel-wrapper.swiper .swiper-slide.is-active{
  /* stays in normal flow (not absolute) so its own image height sizes the
     container - this alone prevents collapse, no separate spacer needed */
  position:relative; opacity:1; pointer-events:auto;
}
@media (prefers-reduced-motion:reduce){
  .elementor-image-carousel-wrapper.swiper .swiper-slide{ transition:none; }
}

/* pagination dots (Elementor ships an empty .swiper-pagination container) */
.elementor-image-carousel-wrapper.swiper .swiper-pagination{
  position:absolute; left:0; right:0; bottom:10px; z-index:2;
  display:flex; justify-content:center; gap:7px;
}
.cf-dot{
  width:8px; height:8px; border-radius:50%; border:none; padding:0;
  background:rgba(255,255,255,.55); cursor:pointer; transition:background .25s, transform .25s;
}
.cf-dot.is-active{ background:#fff; transform:scale(1.25); }
