#photos .photo{perspective:1000px;overflow:visible;touch-action:pan-y;cursor:grab}
#photos .photo-image,.viewer-image{transform:perspective(1100px) rotateX(var(--gallery-x,0deg)) rotateY(var(--gallery-y,0deg));transition:transform .18s ease,box-shadow .18s ease;box-shadow:8px 12px 25px #0005;backface-visibility:hidden}
#photos .photo.is-grabbing,.viewer-image.is-grabbing{cursor:grabbing}
.is-grabbing .photo-image,.viewer-image.is-grabbing{transition:none;box-shadow:12px 20px 35px #0008}
.viewer-image{cursor:grab;touch-action:pan-y;outline-offset:8px}
.gallery-turn-hint{color:var(--gold,#c7a579);font-size:12px;letter-spacing:.08em;text-align:center;margin:14px 0}
.gallery-turn-reset{display:block;margin:10px auto;padding:8px 18px;border:1px solid #c7a579;background:transparent;color:#c7a579;cursor:pointer}
@media(prefers-reduced-motion:reduce){#photos .photo-image,.viewer-image{transition:none}}
#photos .photo-image,.viewer-image{transition:none}
.gallery-detail-stage{overflow:hidden;touch-action:none;cursor:grab;outline-offset:4px}
.gallery-detail-stage.is-grabbing{cursor:grabbing}
.gallery-detail-stage .viewer-image{touch-action:none;will-change:transform;transform-origin:center}
.gallery-detail-stage img{pointer-events:none}
.gallery-zoom-controls{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0}
.gallery-zoom-controls button{min-width:44px;min-height:44px;border:1px solid #c7a579;background:#222624;color:#f3f2ed;padding:8px 15px}
.gallery-zoom-controls output{min-width:50px;color:#c7a579}
