/* Exterior champagne light: no overlay, inset edge, mask or image animation. */
:where(.story-img.wedding-cover:has(>img[src*="-photo."]),.story-cover:not(.graphic):has(>img),.portrait-frame>.portrait:has(>img),.wedding-photo-grid>figure>a:has(>img)){
 --photo-glow-duration:8s;--photo-glow-delay:0s;
}
:is(.story-img.wedding-cover:has(>img[src*="-photo."]),.story-cover:not(.graphic):has(>img),.portrait-frame>.portrait:has(>img),.wedding-photo-grid>figure>a:has(>img)){
 position:relative;outline:none;
 box-shadow:0 0 0 1px #c7a46b70,0 0 7px 1px #d4b27120,0 5px 18px #58442d09;
 animation:photo-frame-glow var(--photo-glow-duration) ease-in-out var(--photo-glow-delay) infinite;
}
/* Two half-ellipses meet smoothly at the apex. Keep archive/gallery rectangles. */
:not(.archive-grid)>.story-card .story-img.wedding-cover:has(>img[src*="-photo."]),
.story-cover:not(.graphic):has(>img),.portrait-frame>.portrait:has(>img){
 border-top-left-radius:50% 50%;border-top-right-radius:50% 50%;
}
.wedding-photo-grid>figure>a:has(>img){display:block;border-radius:2px}
.story-card:nth-child(5n+2) .wedding-cover{--photo-glow-duration:9s;--photo-glow-delay:-3s}
.story-card:nth-child(5n+3) .wedding-cover{--photo-glow-duration:7s;--photo-glow-delay:-5s}
.story-card:nth-child(5n+4) .wedding-cover{--photo-glow-duration:10s;--photo-glow-delay:-7s}
.story-card:nth-child(5n) .wedding-cover{--photo-glow-duration:8s;--photo-glow-delay:-6s}
.wedding-photo-grid>figure:nth-child(2n)>a:has(>img){--photo-glow-duration:9s;--photo-glow-delay:-4s}
.wedding-photo-grid>figure:nth-child(3n)>a:has(>img){--photo-glow-duration:7s;--photo-glow-delay:-6s}
@keyframes photo-frame-glow{
 0%,100%{box-shadow:0 0 0 1px #c7a46b70,0 0 7px 1px #d4b27120,0 5px 18px #58442d09}
 40%,55%{box-shadow:0 0 0 1.5px #bc9559c7,0 0 15px 2px #d8b56d66,0 5px 18px #58442d09}
}
/* Light stays outside the clipped frame; original CTA and review layers remain. */
@media(hover:hover){
 .story-card:hover .wedding-cover:has(>img[src*="-photo."]),.wedding-photo-grid>figure>a:has(>img):hover{
  animation:none;box-shadow:0 0 0 1.5px #bc9559c7,0 0 15px 2px #d8b56d66,0 5px 18px #58442d09;
 }
}
.story-card:focus-visible .wedding-cover:has(>img[src*="-photo."]){animation:none;box-shadow:0 0 0 2px #b48c4fcc,0 0 12px 2px #d8b56d66}
/* Preserve a distinct keyboard focus ring, never substitute a decorative glow. */
.wedding-photo-grid>figure>a:has(>img):focus-visible{outline:3px solid #547f82;outline-offset:4px}
:is(.motion-off,.wd-reduced,.wd-motion-off) :is(.story-img.wedding-cover:has(>img[src*="-photo."]),.story-cover:not(.graphic):has(>img),.portrait-frame>.portrait:has(>img),.wedding-photo-grid>figure>a:has(>img)){
 animation:none!important;box-shadow:0 0 0 1px #c7a46b88,0 0 6px #d4b27122;
}
@media(prefers-reduced-motion:reduce){
 :is(.story-img.wedding-cover:has(>img[src*="-photo."]),.story-cover:not(.graphic):has(>img),.portrait-frame>.portrait:has(>img),.wedding-photo-grid>figure>a:has(>img)){
  animation:none!important;box-shadow:0 0 0 1px #c7a46b88,0 0 6px #d4b27122;
 }
}
