/* Scan lights travel in side rails outside the QR image and its quiet zone. */
.qr-scan-window{display:none;position:absolute;inset:6px;z-index:7;overflow:hidden;pointer-events:none;border-radius:8px}
.qr-scan-enabled .qr-scan-window{display:block}
.qr-effect-scan::before{display:none!important}
.qr-scan-enabled .qr-scan-line{display:block;position:absolute;inset:0;width:100%;height:100%;border-radius:0;opacity:1;background:none;box-shadow:none;animation:wedding-qr-sweep 2.4s cubic-bezier(.45,0,.55,1) infinite alternate}
.qr-scan-line::before,.qr-scan-line::after{content:"";position:absolute;bottom:0;width:16px;height:64px;border-radius:3px;background:linear-gradient(0deg,var(--qr-red,#bc1c34) 0 5px,#f5c76c 5px 9px,rgba(188,28,52,.35) 10px,transparent);box-shadow:none}
.qr-scan-line::before{left:0;right:auto}
.qr-scan-line::after{right:0;left:auto}
/* Keep shimmer behind the opaque image, and pulse only the decorative frame. */
.clone-qr-visual.qr-effect-shimmer::after,.clone-qr-visual .qr-heart{z-index:2}
.clone-qr-visual.qr-effect-pulse{animation:none}
.qr-effect-pulse .clone-qr-card{animation:qr-card-pulse 2.35s ease-in-out infinite}
.clone-qr-visual .clone-gift-qr{border-radius:0!important;animation:none!important;transform:none!important;filter:none!important;opacity:1!important}
@keyframes wedding-qr-sweep{0%,5%{transform:translate3d(0,-98%,0);opacity:1}30%,70%{opacity:1}95%,100%{transform:translate3d(0,-2%,0);opacity:1}}
/* CSS-only decorations with a bounded particle count controlled by admin. */
.ambient-fireflies i{top:var(--y);width:5px;height:5px;background:#f6d483;border-radius:50%;box-shadow:0 0 8px 2px #e6b34f77;animation:wedding-firefly var(--speed) ease-in-out infinite alternate;animation-delay:var(--delay)}
@keyframes wedding-firefly{0%{transform:translate3d(0,12px,0);opacity:0}30%{opacity:.65}70%{opacity:.25}100%{transform:translate3d(var(--drift),-60px,0);opacity:.8}}
.ambient-bokeh i{top:var(--y);width:calc(var(--size)*3);height:calc(var(--size)*3);border:1px solid #e4c98f4d;background:radial-gradient(circle at 35% 30%,#fff4ce38,#e4b85f0d);border-radius:50%;animation:wedding-bokeh var(--speed) ease-in-out infinite alternate;animation-delay:var(--delay)}
@keyframes wedding-bokeh{0%{opacity:0;transform:translate3d(0,28px,0) scale(.65)}45%{opacity:.55}100%{opacity:.1;transform:translate3d(var(--drift),-100px,0) scale(1.25)}}
.ambient-gold-dust i{width:3px;height:3px;border-radius:50%;background:#e3be65;box-shadow:0 0 5px #e9c67d66;animation:wedding-dust var(--speed) linear infinite;animation-delay:var(--delay)}
@keyframes wedding-dust{0%{opacity:0;transform:translate3d(0,110vh,0)}25%,60%{opacity:.7}100%{opacity:0;transform:translate3d(var(--drift),-4vh,0)}}
.ambient-lanterns i{width:calc(var(--size)*1.1);height:calc(var(--size)*1.4);background:radial-gradient(ellipse at 50% 30%,#f3ce81,#bc35448c);border:1px solid #e5ba6166;border-radius:35%;box-shadow:0 0 8px #edab4c30;animation:wedding-lantern var(--speed) ease-in-out infinite;animation-delay:var(--delay)}
.ambient-lanterns i::before{content:"";position:absolute;top:-3px;left:22%;right:22%;height:3px;background:#d4b065;border-radius:2px}
.ambient-lanterns i::after{content:"";position:absolute;top:100%;left:50%;height:8px;border-left:1px solid #c39a53}
@keyframes wedding-lantern{0%{opacity:0;transform:translate3d(0,110vh,0) rotate(-10deg)}15%,75%{opacity:.6}50%{transform:translate3d(var(--drift),50vh,0) rotate(8deg)}100%{opacity:0;transform:translate3d(0,-5vh,0) rotate(-10deg)}}
html.wedding-tab-hidden .qr-scan-line,html.wedding-tab-hidden .qr-scan-line::before,html.wedding-tab-hidden #wedding-effects i{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){#wedding-effects{display:none!important}.qr-scan-enabled .qr-scan-window{display:none}.qr-scan-enabled .qr-scan-line{animation:none!important}.motdoi-opening-seal::after{animation:none!important}}

@media(prefers-reduced-motion:reduce){.qr-effect-pulse .clone-qr-card{animation:none!important}}

/* Visible perimeter motion; the entire 6 + 16px strip stays outside 24px QR padding. */
.qr-scan-enabled .clone-qr-card{border-color:rgba(188,28,52,.3);box-shadow:0 0 0 1px #e9c27d55}
.clone-gift-section .clone-gift-thanks,.clone-gift-dialog .clone-gift-thanks{font-family:'Be Vietnam Pro',Arial,sans-serif;font-size:17px!important;line-height:1.65;font-weight:500;font-style:italic;max-width:420px;margin:18px auto 24px;padding:0 8px;border:0;color:var(--site-primary,#7e1518);text-align:center}
