/* Photos move inside a stable frame; text, controls and captions never scale. */
.photo-frame {
  display: block;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  min-width: 0;
}
.photo-image { transform-origin: center; }
.page-card > .photo-frame { margin-bottom: 22px; }
.page-card > .photo-frame > .photo-image { margin-bottom: 0; }

/* Preserve the original editorial grid after framing its photographs. */
.floor-section > .photo-frame { min-height: 680px; align-self: stretch; }
.split-feature > .photo-frame { min-height: 720px; padding: 0; align-self: stretch; }
.floor-section > .photo-frame > .photo-image,
.split-feature > .photo-frame > .photo-image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  min-height: 0;
  object-fit: cover;
}

@media (max-width: 900px) {
  .floor-section > .photo-frame,
  .split-feature > .photo-frame {
    min-height: 0;
    max-height: 620px;
    aspect-ratio: 4 / 3;
    padding: 0;
  }
}

/* No hover-dependent interaction on touch; no zoom with reduced motion. */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .photo-image { transition: transform 700ms cubic-bezier(.2, .65, .3, 1); }
  .photo-frame:hover > .photo-image,
  .page-card:hover .photo-image,
  .page-card:focus-visible .photo-image,
  .experience-card:hover .photo-image,
  .experience-card:focus-within .photo-image { transform: scale(1.045); }
  .hero:hover > .photo-image,
  .hero:focus-within > .photo-image,
  .page-hero:hover > .photo-image,
  .page-hero:focus-within > .photo-image { transform: scale(1.025); }
}
@media (prefers-reduced-motion: reduce) {
  .photo-image { transform: none !important; transition: none !important; }
}
