/* Progressive enhancement: cards are visible without the motion script. */
:root {
  --ef-motion-ease: cubic-bezier(0.16, 1, 0.3, 1);
  --ef-motion-reveal-duration: 700ms;
  --ef-motion-reveal-distance: 48px;
  --ef-motion-stagger: 100ms;
  --ef-motion-lift: -7px;
  --ef-motion-hover-duration: 400ms;
  --ef-motion-zoom-duration: 550ms;
  --ef-motion-image-scale: 1.05;
  --ef-motion-parallax-distance: 28px;
}

.ef-grid > .ef-card,
.ef-listing-grid > .ef-listing-card {
  transition: transform var(--ef-motion-hover-duration) var(--ef-motion-ease),
    box-shadow var(--ef-motion-hover-duration) var(--ef-motion-ease);
}

.ef-card-media,
.ef-listing-media {
  overflow: hidden;
}

.ef-card-media > img,
.ef-listing-media > img {
  transition: transform var(--ef-motion-zoom-duration) var(--ef-motion-ease);
}

/* Override the older, unconditional hover lift on touch screens. */
.ef-grid > .ef-card:hover,
.ef-grid > .ef-info-card:hover,
.ef-listing-grid > .ef-listing-card:hover {
  transform: none;
  box-shadow: none;
}

.ef-grid > .ef-card:focus-within,
.ef-listing-grid > .ef-listing-card:focus-within {
  box-shadow: var(--ef-shadow-soft);
  outline: 2px solid var(--ef-brand);
  outline-offset: 3px;
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .ef-grid > .ef-card:hover,
  .ef-grid > .ef-card:focus-within,
  .ef-listing-grid > .ef-listing-card:hover,
  .ef-listing-grid > .ef-listing-card:focus-within {
    transform: translateY(var(--ef-motion-lift));
    box-shadow: var(--ef-shadow-soft);
  }

  .ef-card:hover .ef-card-media > img,
  .ef-card:focus-within .ef-card-media > img,
  .ef-listing-card:hover .ef-listing-media > img,
  .ef-listing-card:focus-within .ef-listing-media > img {
    transform: scale(var(--ef-motion-image-scale));
  }
}

@media (min-width: 1101px) and (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  #deal .ef-deal-image.ef-parallax-active {
    overflow: hidden;
    border-radius: var(--ef-radius) 0 0 var(--ef-radius);
  }

  #deal .ef-parallax-active img {
    border-radius: 0;
    transform: translate3d(0, var(--ef-parallax-y, 0px), 0) scale(var(--ef-parallax-scale, 1));
  }
}

@media (prefers-reduced-motion: reduce) {
  .ef-grid > .ef-card,
  .ef-listing-grid > .ef-listing-card,
  .ef-card-media > img,
  .ef-listing-media > img {
    transition: none;
  }
}

@media print {
  .ef-grid > .ef-card,
  .ef-grid > .ef-info-card,
  .ef-listing-grid > .ef-listing-card {
    opacity: 1 !important;
    translate: none !important;
    transform: none !important;
  }

  #deal .ef-parallax-active img {
    transform: none;
  }
}
