/* Smooth reveal animation */
.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 800ms ease, transform 800ms ease;
  will-change: opacity, transform;
}

.reveal-right {
  transform: translateX(18px);
}

.reveal.is-visible {
  opacity: 1;
  transform: translate(0, 0);
}

/* Elegant image frame */
.frame {
    position: relative;
    overflow: hidden;
}

/* subtle border + glow */
.frame::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 18px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  pointer-events: none;
}

/* slow zoom on hover */
.frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;

  /* helps with transform scaling quality */
  image-rendering: auto;
  backface-visibility: hidden;
  transform-origin: center;

  transition: transform 900ms ease;
}

.frame:hover img {
  transform: scale(1.08);
}
