.ihs {
  --ihs-height: 350px;
  --ihs-duration: 500ms;
  --ihs-ease: cubic-bezier(0.4, 0, 0.2, 1);
  --ihs-radius: 20px;
  position: relative;
  display: block;
  width: 100%;
  height: var(--ihs-height);
  overflow: hidden;
  border-radius: var(--ihs-radius);
  text-decoration: none;
  color: inherit;
}

.ihs-img {
  position: absolute;
  left: 0;
  width: 100%;
  overflow: hidden;
}

/* Keep image at full box size so hover only clips, never recrops/zooms */
.ihs-img img {
  position: absolute;
  left: 0;
  width: 100%;
  height: var(--ihs-height);
  object-fit: cover;
  object-position: center;
  max-width: none;
}

/* ── Shared hover targets (widget + EAEL wrapper parent) ── */
/* Wipe vertical (default / current) */
.ihs--wipe-vertical .ihs-img--default {
  top: 0;
  height: 100%;
  z-index: 1;
  transition: height var(--ihs-duration) var(--ihs-ease);
}

.ihs--wipe-vertical .ihs-img--default img {
  top: 0;
}

.ihs--wipe-vertical:hover .ihs-img--default,
.elementor-widget-image_hover_swap:hover .ihs--wipe-vertical .ihs-img--default,
.e-con:hover > .elementor-widget-image_hover_swap .ihs--wipe-vertical .ihs-img--default {
  height: 0;
}

.ihs--wipe-vertical .ihs-img--hover {
  bottom: 0;
  height: 0;
  z-index: 0;
  transition: height var(--ihs-duration) var(--ihs-ease);
}

.ihs--wipe-vertical .ihs-img--hover img {
  bottom: 0;
}

.ihs--wipe-vertical:hover .ihs-img--hover,
.elementor-widget-image_hover_swap:hover .ihs--wipe-vertical .ihs-img--hover,
.e-con:hover > .elementor-widget-image_hover_swap .ihs--wipe-vertical .ihs-img--hover {
  height: 100%;
}

/* ── Wipe horizontal ── */
.ihs--wipe-horizontal .ihs-img--default,
.ihs--wipe-horizontal .ihs-img--hover {
  top: 0;
  height: 100%;
}

.ihs--wipe-horizontal .ihs-img--default {
  left: 0;
  width: 100%;
  z-index: 1;
  transition: width var(--ihs-duration) var(--ihs-ease);
}

.ihs--wipe-horizontal .ihs-img--default img {
  top: 0;
  left: 0;
}

.ihs--wipe-horizontal:hover .ihs-img--default,
.elementor-widget-image_hover_swap:hover .ihs--wipe-horizontal .ihs-img--default,
.e-con:hover > .elementor-widget-image_hover_swap .ihs--wipe-horizontal .ihs-img--default {
  width: 0;
}

.ihs--wipe-horizontal .ihs-img--hover {
  right: 0;
  left: auto;
  width: 0;
  z-index: 0;
  transition: width var(--ihs-duration) var(--ihs-ease);
}

.ihs--wipe-horizontal .ihs-img--hover img {
  top: 0;
  right: 0;
  left: auto;
}

.ihs--wipe-horizontal:hover .ihs-img--hover,
.elementor-widget-image_hover_swap:hover .ihs--wipe-horizontal .ihs-img--hover,
.e-con:hover > .elementor-widget-image_hover_swap .ihs--wipe-horizontal .ihs-img--hover {
  width: 100%;
}

/* ── Soft reveal (clip-path — smoother than height wipe) ── */
.ihs--reveal .ihs-img--default,
.ihs--reveal .ihs-img--hover {
  top: 0;
  height: 100%;
}

.ihs--reveal .ihs-img--default {
  z-index: 1;
}

.ihs--reveal .ihs-img--default img,
.ihs--reveal .ihs-img--hover img {
  top: 0;
}

.ihs--reveal .ihs-img--hover {
  z-index: 2;
  clip-path: inset(100% 0 0 0);
  transition: clip-path var(--ihs-duration) var(--ihs-ease);
}

.ihs--reveal:hover .ihs-img--hover,
.elementor-widget-image_hover_swap:hover .ihs--reveal .ihs-img--hover,
.e-con:hover > .elementor-widget-image_hover_swap .ihs--reveal .ihs-img--hover {
  clip-path: inset(0 0 0 0);
}

/* ── Fade (crossfade) ── */
.ihs--fade .ihs-img--default,
.ihs--fade .ihs-img--hover {
  top: 0;
  height: 100%;
  transition: opacity var(--ihs-duration) var(--ihs-ease);
}

.ihs--fade .ihs-img--default img,
.ihs--fade .ihs-img--hover img {
  top: 0;
}

.ihs--fade .ihs-img--default {
  z-index: 1;
  opacity: 1;
}

.ihs--fade .ihs-img--hover {
  z-index: 2;
  opacity: 0;
}

.ihs--fade:hover .ihs-img--hover,
.elementor-widget-image_hover_swap:hover .ihs--fade .ihs-img--hover,
.e-con:hover > .elementor-widget-image_hover_swap .ihs--fade .ihs-img--hover {
  opacity: 1;
}

/* ── Zoom fade (soft scale + fade) ── */
.ihs--zoom-fade .ihs-img--default,
.ihs--zoom-fade .ihs-img--hover {
  top: 0;
  height: 100%;
}

.ihs--zoom-fade .ihs-img--default {
  z-index: 1;
}

.ihs--zoom-fade .ihs-img--default img {
  top: 0;
  transition: transform var(--ihs-duration) var(--ihs-ease);
}

.ihs--zoom-fade .ihs-img--hover {
  z-index: 2;
  opacity: 0;
  transition: opacity var(--ihs-duration) var(--ihs-ease);
}

.ihs--zoom-fade .ihs-img--hover img {
  top: 0;
  transform: scale(1.08);
  transition: transform var(--ihs-duration) var(--ihs-ease);
}

.ihs--zoom-fade:hover .ihs-img--default img,
.elementor-widget-image_hover_swap:hover .ihs--zoom-fade .ihs-img--default img,
.e-con:hover > .elementor-widget-image_hover_swap .ihs--zoom-fade .ihs-img--default img {
  transform: scale(1.04);
}

.ihs--zoom-fade:hover .ihs-img--hover,
.elementor-widget-image_hover_swap:hover .ihs--zoom-fade .ihs-img--hover,
.e-con:hover > .elementor-widget-image_hover_swap .ihs--zoom-fade .ihs-img--hover {
  opacity: 1;
}

.ihs--zoom-fade:hover .ihs-img--hover img,
.elementor-widget-image_hover_swap:hover .ihs--zoom-fade .ihs-img--hover img,
.e-con:hover > .elementor-widget-image_hover_swap .ihs--zoom-fade .ihs-img--hover img {
  transform: scale(1);
}

/* ── Slide up ── */
.ihs--slide-up .ihs-img--default,
.ihs--slide-up .ihs-img--hover {
  top: 0;
  height: 100%;
}

.ihs--slide-up .ihs-img--default {
  z-index: 1;
  transition: transform var(--ihs-duration) var(--ihs-ease);
}

.ihs--slide-up .ihs-img--default img,
.ihs--slide-up .ihs-img--hover img {
  top: 0;
}

.ihs--slide-up .ihs-img--hover {
  z-index: 2;
  transform: translateY(100%);
  transition: transform var(--ihs-duration) var(--ihs-ease);
}

.ihs--slide-up:hover .ihs-img--default,
.elementor-widget-image_hover_swap:hover .ihs--slide-up .ihs-img--default,
.e-con:hover > .elementor-widget-image_hover_swap .ihs--slide-up .ihs-img--default {
  transform: translateY(-12%);
}

.ihs--slide-up:hover .ihs-img--hover,
.elementor-widget-image_hover_swap:hover .ihs--slide-up .ihs-img--hover,
.e-con:hover > .elementor-widget-image_hover_swap .ihs--slide-up .ihs-img--hover {
  transform: translateY(0);
}

@media (max-width: 1024px) {
  .ihs {
    --ihs-height: 250px;
  }
}

@media (max-width: 767px) {
  .ihs {
    --ihs-height: 200px;
    --ihs-radius: 10px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ihs-img--default,
  .ihs-img--hover,
  .ihs-img img {
    transition-duration: 0.01ms !important;
  }
}
