/* Stack adapted from React Bits (David Haz, 2026).
   MIT + Commons Clause. See THIRD_PARTY_NOTICES.md. */
.photo-stack {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 0;
  perspective: 600px;
  overflow: visible;
  pointer-events: none;
  user-select: none;
  -webkit-user-select: none;
  touch-action: pan-y;
}
.photo-stack__stage {
  position: absolute;
  inset: 0;
  transform-style: preserve-3d;
  overflow: visible;
  pointer-events: none;
}
.photo-stack__card {
  position: absolute;
  left: 50%;
  top: 50%;
  transform-origin: 50% 50%;
  transform-style: preserve-3d;
  pointer-events: auto;
  cursor: pointer;
  touch-action: pan-y;
}
.photo-stack__card.is-top { cursor: grab; }
.photo-stack__card.is-dragging { cursor: grabbing; }
.photo-stack__photo {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: 8px;
  transform-origin: 90% 90%;
  background: #17191a;
  box-shadow: 0 12px 28px -10px rgba(0,0,0,.45), 0 0 0 1px rgba(255,255,255,.13);
}
.photo-stack__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  opacity: 0;
  pointer-events: none;
  -webkit-user-drag: none;
}
.photo-stack__card.is-loaded .photo-stack__image { opacity: 1; }
.photo-stack__status {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 20px;
  color: rgba(255,255,255,.65);
  font-size: 12px;
  text-align: center;
  pointer-events: none;
}
.photo-stack__card.is-loaded .photo-stack__status { display: none; }
.photo-stack[data-stack-animating="true"] .photo-stack__card,
.photo-stack[data-stack-animating="true"] .photo-stack__photo { will-change: transform; }
@media (prefers-reduced-motion: reduce) {
  .photo-stack[data-stack-animating="true"] .photo-stack__card,
  .photo-stack[data-stack-animating="true"] .photo-stack__photo { will-change: auto; }
}
