.v5-envelope{position:absolute;left:5%;top:12%;width:90%;height:74%;filter:drop-shadow(0 19px 18px #77614b30);transform-style:preserve-3d}
.v5-paper-back{position:absolute;inset:0;background:linear-gradient(135deg,#fffdf7,#e9dfd1);border:1px solid #e4d7c8;box-shadow:inset 0 0 30px #8d73500c}
.v5-paper-back:before{content:"";position:absolute;inset:0;background:linear-gradient(145deg,transparent 49.7%,#e5dacb 50%,transparent 50.4%),linear-gradient(215deg,transparent 49.7%,#e4d8c9 50%,transparent 50.4%);opacity:.55}
.v5-letter{position:absolute;left:11%;width:78%;height:91%;bottom:3%;z-index:2;background:linear-gradient(130deg,#fffdf8,#f7efe3);border:1px solid #e5d4be;box-shadow:0 2px 10px #71593a2b;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;transform:translateY(0);}
.v5-letter:before,.v5-letter:after{content:"❦";position:absolute;color:#b5a68c;font-size:35px;opacity:.4}
.v5-letter:before{top:15px;left:24px}
.v5-letter:after{bottom:15px;right:24px;transform:rotate(180deg)}
.v5-letter strong{font-size:clamp(1.6rem,4vw,3rem);font-weight:normal;font-style:italic;color:#96724f;line-height:1.15}
.v5-letter small{letter-spacing:.28em;font-size:clamp(.5rem,1.4vw,.9rem)}
.v5-front{position:absolute;inset:0;z-index:4;background:linear-gradient(155deg,#f6eee3,#e8ddce);clip-path:polygon(0 0,50% 62%,100% 0,100% 100%,0 100%);filter:drop-shadow(0 -1px 2px #6d5b4533)}
.v5-front:before{content:"";position:absolute;inset:0;background:linear-gradient(32deg,#d9c9b5 0,transparent 34%),linear-gradient(-32deg,#d9c9b5 0,transparent 34%);opacity:.34}
.v5-flap{position:absolute;inset:0;z-index:6;transform-origin:50% 0;transform-style:preserve-3d;backface-visibility:visible;background:linear-gradient(160deg,#fffdf8,#e9dfd3);clip-path:polygon(0 0,100% 0,50% 63%);filter:drop-shadow(0 2px 2px #89785e36)}
.v5-ribbon{position:absolute;z-index:9;filter:drop-shadow(0 3px 3px #76523c48)}
.v5-ribbon.v5-h-top,.v5-ribbon.v5-h-bottom{left:47%;width:6%;height:50%;background:linear-gradient(90deg,#b68164,#f7dbc0 23%,#e5b997 52%,#b87f5e 90%,#f2cfad);}
.v5-ribbon.v5-h-top{top:0;transform-origin:bottom}
.v5-ribbon.v5-h-bottom{bottom:0;transform-origin:top}
.v5-ribbon.v5-v-left,.v5-ribbon.v5-v-right{top:44%;height:12%;width:50%;background:linear-gradient(0deg,#b78265,#f9dcc0 22%,#e8b999 55%,#bc8768 92%)}
.v5-ribbon.v5-v-left{left:0;transform-origin:right}
.v5-ribbon.v5-v-right{right:0;transform-origin:left}
.v5-bow{position:absolute;left:50%;top:50%;width:56%;height:65%;z-index:12;transform:translate(-50%,-50%);overflow:visible;filter:drop-shadow(0 10px 6px #79533e50)}
.v5-bow-piece{transform-box:fill-box;transform-origin:center;}
.v5-bow .v5-loop-edge{stroke:#b47d5e;stroke-width:1.5}
.v5-knot{filter:drop-shadow(0 3px 3px #76523d70)}
.is-opening .v5-loop-left{animation:loopCollapseLeft 1.7s .18s cubic-bezier(.42,0,.65,1) forwards}
.is-opening .v5-loop-right{animation:loopCollapseRight 1.7s .18s cubic-bezier(.42,0,.65,1) forwards}
.is-opening .v5-tail-left{animation:tailUnravelLeft 2.65s .12s cubic-bezier(.3,.1,.3,1) forwards}
.is-opening .v5-tail-right{animation:tailUnravelRight 2.65s .12s cubic-bezier(.3,.1,.3,1) forwards}
.is-opening .v5-knot{animation:knotShrink .8s 1.22s ease-in forwards}
.is-opening .v5-h-top{animation:rUp 1.2s 2.45s ease-in-out forwards}
.is-opening .v5-h-bottom{animation:rDown 1.2s 2.45s ease-in-out forwards}
.is-opening .v5-v-left{animation:rLeft 1.15s 2.48s ease-in-out forwards}
.is-opening .v5-v-right{animation:rRight 1.15s 2.48s ease-in-out forwards}
.is-opening .v5-flap{animation:flapOpen 1.15s 3.7s ease-in-out forwards}
.is-opening .v5-letter{animation:cardRise 1.65s 4.65s cubic-bezier(.2,.7,.25,1) forwards}
.v5-loop-left{transform-origin:195px 105px;transform-box:view-box}
.v5-loop-right{transform-origin:205px 105px;transform-box:view-box}
.v5-tail-left{transform-origin:192px 107px;transform-box:view-box}
.v5-tail-right{transform-origin:208px 107px;transform-box:view-box}
.v5-knot{transform-origin:200px 105px;transform-box:view-box}
@keyframes loopCollapseLeft{0%{transform:scale(1);opacity:1}55%{transform:scale(.57,.67);opacity:1}95%{transform:scale(.06,.12);opacity:.8}100%{transform:scale(0);opacity:0}}
@keyframes loopCollapseRight{0%{transform:scale(1);opacity:1}55%{transform:scale(.57,.67);opacity:1}95%{transform:scale(.06,.12);opacity:.8}100%{transform:scale(0);opacity:0}}
@keyframes tailUnravelLeft{0%{transform:rotate(0) scale(1,1);opacity:1}44%{transform:rotate(-11deg) scale(1.42,1.42);opacity:1}68%{transform:rotate(-39deg) scale(1.78,1.05);opacity:1}80%{transform:rotate(-63deg) scale(2.05,.85);opacity:1}96%{transform:rotate(-63deg) scale(2.1,.85);opacity:.25}100%{transform:rotate(-63deg) scale(2.1,.85);opacity:0}}
@keyframes tailUnravelRight{0%{transform:rotate(0) scale(1,1);opacity:1}44%{transform:rotate(11deg) scale(1.42,1.42);opacity:1}68%{transform:rotate(39deg) scale(1.78,1.05);opacity:1}80%{transform:rotate(63deg) scale(2.05,.85);opacity:1}96%{transform:rotate(63deg) scale(2.1,.85);opacity:.25}100%{transform:rotate(63deg) scale(2.1,.85);opacity:0}}
@keyframes knotShrink{0%{transform:scale(1);opacity:1}100%{transform:scale(0);opacity:0}}
@keyframes rUp{to{transform:translateY(-110%);opacity:0}}
@keyframes rDown{to{transform:translateY(110%);opacity:0}}
@keyframes rLeft{to{transform:translateX(-110%);opacity:0}}
@keyframes rRight{to{transform:translateX(110%);opacity:0}}
@keyframes flapOpen{0%{transform:rotateX(0);z-index:6}65%{z-index:6}100%{transform:rotateX(180deg);z-index:1}}
@keyframes cardRise{0%{transform:translateY(0)}100%{transform:translateY(-46%);z-index:7}}
@media (prefers-reduced-motion:reduce){.is-opening .v5-envelope,.is-opening .v5-envelope *{animation-duration:.01ms!important;animation-delay:.01ms!important}}
.v5-envelope{filter:drop-shadow(0 24px 20px #69503b3b) drop-shadow(0 3px 3px #59442b20)}
.v5-paper-back{background:linear-gradient(135deg,#fffcf5 0%,#f6eee3 40%,#e4d5c2 100%);box-shadow:inset 0 1px 2px #fff, inset 0 -10px 24px #7a5c3921, 0 1px 1px #fff9;border:1px solid #e5d8c8}
.v5-paper-back:after,.v5-front:after,.v5-flap:after,.v5-letter:after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.25;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.83' numOctaves='3' stitchTiles='stitch' seed='4'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.19'/%3E%3C/svg%3E");mix-blend-mode:multiply}
.v5-front{background:linear-gradient(162deg,#fffaf1 3%,#f4e8d9 48%,#e0cfb9 100%);box-shadow:inset 0 -12px 20px #9d80601b}
.v5-front:before{background:linear-gradient(35deg,#cbb69b 0%,transparent 34%),linear-gradient(-35deg,#cbb69b 0%,transparent 34%);opacity:.32}
.v5-flap{background:linear-gradient(175deg,#fffdf8 0%,#f7efe4 48%,#ddcbb7 100%);filter:drop-shadow(0 4px 3px #65503b38)}
.v5-letter{background:linear-gradient(115deg,#fffefb,#fbf5e9 65%,#f1e5d2);box-shadow:0 2px 14px #71593a33,inset 0 0 0 7px #fffaf666;border:1px solid #e0cbb3}
.v5-letter strong{text-shadow:0 1px 0 #fff5e8}
.v5-ribbon.v5-h-top,.v5-ribbon.v5-h-bottom{background:linear-gradient(90deg,#a86d50 0%,#d4a17f 8%,#ffe4c6 21%,#eec4a4 34%,#b98264 48%,#f9d6b7 63%,#c18a69 82%,#a66d52 100%);box-shadow:inset 2px 0 2px #fff7,inset -2px 0 3px #6f3d2d44,3px 0 4px #5b3c2929}
.v5-ribbon.v5-v-left,.v5-ribbon.v5-v-right{background:linear-gradient(0deg,#a97054 0%,#d7a282 11%,#ffe5c8 25%,#e8b795 39%,#b87b5b 55%,#f7d6b7 70%,#bc8567 89%,#a36d50 100%);box-shadow:0 4px 5px #593b2d38,inset 0 2px 2px #fff8,inset 0 -2px 3px #6339234a}
.v5-bow{filter:drop-shadow(0 10px 6px #60402f5c) drop-shadow(0 2px 1px #fff8)}
.v5-bow .v5-loop-edge{stroke:#b57c5a;stroke-width:1.25}
.v5-bow .v5-bow-piece{filter:drop-shadow(0 2px 2px #66402d4a)}
.v5-bow .v5-knot{filter:drop-shadow(0 4px 4px #54352388)}

/* Wedding homepage v5: dedicated classes, no changes to RSVP or admin */
.invitation-home .envelope-trigger{display:block;position:relative;width:min(780px,98%);height:auto;aspect-ratio:850/430;padding:0;margin:12px auto 0;border:0;background:none;border-radius:0;perspective:none;overflow:visible;opacity:1;}
.invitation-home .envelope-trigger:disabled{opacity:1;}
.invitation-home .v5-scene{display:block;position:relative;width:100%;height:100%;perspective:1200px;overflow:visible;}
.invitation-home .v5-envelope{position:absolute;left:5%;top:9%;width:90%;height:79%;filter:drop-shadow(0 24px 20px #69503b3b) drop-shadow(0 3px 3px #59442b20);transform-style:preserve-3d;}
.invitation-home .v5-letter strong{font-size:clamp(1.5rem,4vw,3rem);font-weight:normal;font-style:italic;color:#96724f;line-height:1.15;}
.invitation-home .v5-letter small{letter-spacing:.28em;font-size:clamp(.5rem,1.4vw,.9rem);}
.invitation-home .v5-bow{position:absolute;left:50%;top:50%;width:56%;height:65%;z-index:12;transform:translate(-50%,-50%);overflow:visible;}
.invitation-home .v5-envelope .v5-letter{left:11%;right:auto;width:78%;bottom:3%;height:91%;gap:12px;}
.invitation-home .v5-envelope .v5-front,.invitation-home .v5-envelope .v5-flap,.invitation-home .v5-envelope .v5-paper-back{inset:0;}
.invitation-home .v5-envelope .v5-ribbon{z-index:9;}
.invitation-home .v5-envelope .v5-bow{z-index:12;}
.invitation-home .open-hint{margin:0 auto 16px;}
.invitation-home .welcome{padding-bottom:2rem;}
@media(max-width:580px){.invitation-home .envelope-trigger{width:100%;height:auto;min-height:0;aspect-ratio:850/510;padding:0;margin:0 auto;}.invitation-home .v5-envelope{top:17%;height:67%;}.invitation-home .v5-bow{width:65%;height:85%;}.invitation-home .v5-letter{gap:3px!important;}}
