.envelope-button{width:min(440px,calc(100vw - 36px),calc((100svh - 185px) * .7483));aspect-ratio:1085/1450;height:auto;max-height:none;display:block;perspective:1300px;border-radius:0}.envelope-button .envelope-sizer{width:100%;height:auto;visibility:hidden;max-height:none}.envelope-flap{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform-style:preserve-3d;z-index:2;transition:none}.envelope-button .envelope-flap img{width:100%;height:auto;max-height:none}.flap-left{clip-path:polygon(0 0,50% 50%,0 100%);transform-origin:0 50%}.flap-right{clip-path:polygon(100% 0,50% 50%,100% 100%);transform-origin:100% 50%}.flap-top{clip-path:polygon(0 0,100% 0,50% 50%);transform-origin:50% 0}.flap-bottom{clip-path:polygon(0 100%,100% 100%,50% 50%);transform-origin:50% 100%}.envelope-seal{position:absolute;z-index:4;width:33%;top:51%;left:50%;transform:translate(-50%,-50%);filter:drop-shadow(0 3px 3px #552e263b);transition:none}.envelope-review .envelope-button .envelope-seal{width:clamp(105px,15.5dvh,176px)}.envelope-button .envelope-seal img{width:100%;height:auto;max-height:none}.envelope-seal:after,.envelope-seal:before{content:"";position:absolute;pointer-events:none;border-radius:50%}.envelope-seal:before{z-index:-1;inset:-34%;background:radial-gradient(ellipse closest-side at 50% 54%,#fff2b8cc 0,#ffce6866 45%,#eab24f33 65%,#eab24f0d 80%,#eab24f00 100%);opacity:.55;animation:envelope-gold-halo 8.4s ease-in-out infinite;animation-play-state:paused}.envelope-seal:after{z-index:-1;top:75%;left:-25%;right:-25%;height:65%;background:radial-gradient(ellipse closest-side,#ffe49b80,#f6bc4a40 45%,#f6bc4a00 100%);opacity:.4;animation:envelope-gold-light 8.4s ease-in-out infinite;animation-play-state:paused}.envelope[data-glow-running=true]:not(.is-opening) .envelope-seal:after,.envelope[data-glow-running=true]:not(.is-opening) .envelope-seal:before{animation-play-state:running}.is-opening .envelope-seal:after,.is-opening .envelope-seal:before{animation:none;opacity:0}@keyframes envelope-gold-halo{0%,to{opacity:.55;transform:scale(.97)}48%{opacity:.95;transform:scale(1.04)}}@keyframes envelope-gold-light{0%,to{opacity:.4}54%{opacity:.8}}.seal-stroke-glint{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen}.seal-stroke-glint path{stroke-linecap:round;stroke-linejoin:round}.seal-letter-aura{opacity:.06;animation:seal-letter-breathe 8.4s ease-in-out infinite;animation-play-state:paused}.seal-letter-aura path{stroke:#ffe798;stroke-width:6;filter:blur(5px)}.seal-edge-light{stroke:#fff9dc;stroke-width:10;filter:drop-shadow(0 0 7px #ffe2a699) drop-shadow(0 0 14px #ffc55766)}.seal-pen-traces path{stroke:white;stroke-width:110;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:18 118;stroke-dashoffset:18;opacity:0;animation:seal-pen-glint 8.4s linear infinite both;animation-play-state:paused}.seal-pen-traces path:nth-child(2){animation-delay:2.3s}.seal-pen-traces path:nth-child(3){animation-delay:4.6s}.envelope[data-glow-running=true]:not(.is-opening) .seal-letter-aura,.envelope[data-glow-running=true]:not(.is-opening) .seal-pen-traces path{animation-play-state:running}.is-opening .seal-stroke-glint{display:none}@keyframes seal-letter-breathe{0%,to{opacity:.06}48%{opacity:.1}}@keyframes seal-pen-glint{0%{stroke-dashoffset:18;opacity:0}4%{opacity:.95}28%{stroke-dashoffset:-100;opacity:.95}34%,to{stroke-dashoffset:-100;opacity:0}}.envelope-open-hint{position:absolute;z-index:3;top:66.5%;left:0;width:100%;padding:0 24px;color:#705633;opacity:1;font:italic 14px/1.6 var(--serif);letter-spacing:.045em;text-transform:none;transition:opacity .2s;animation:envelope-hint-breathe 4.8s ease-in-out infinite}@keyframes envelope-hint-breathe{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.envelope.is-opening{opacity:1;transform:none;transition:none}.is-opening .envelope-button{transform:none}.is-opening .envelope-seal{animation:envelope-seal-lift 1.2s cubic-bezier(.22,.61,.36,1) both,envelope-seal-fade .95s cubic-bezier(.4,0,.6,1) .16s both;will-change:transform,opacity}.is-opening .envelope-open-hint{animation:none;opacity:0;transform:none}.is-opening .envelope-flap{will-change:transform,opacity}.is-opening .flap-top{animation:envelope-flap-top 1.6s cubic-bezier(.32,.04,.2,1) .42s both}.is-opening .flap-left{animation:envelope-flap-left 1.7s cubic-bezier(.32,.04,.2,1) .94s both}.is-opening .flap-right{animation:envelope-flap-right 1.7s cubic-bezier(.32,.04,.2,1) 1.06s both}.is-opening .flap-bottom{animation:envelope-flap-bottom 1.7s cubic-bezier(.32,.04,.2,1) 1.3s both}.envelope-flap:after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,#fff9e8aa,transparent 38%,#70533366);opacity:0}.is-opening .envelope-flap:after{animation:envelope-paper-light 1.45s ease-in-out .75s both}.is-opening .flap-top:after{animation-delay:.42s}.is-opening .flap-right:after{animation-delay:1.06s}.is-opening .flap-bottom:after{animation-delay:1.3s}@keyframes envelope-seal-lift{0%{transform:translate(-50%,-50%) translateZ(0) rotate(0)}to{transform:translate(-50%,-50%) translate3d(0,-46px,100px) rotate(-8deg)}}@keyframes envelope-seal-fade{0%{opacity:1}to{opacity:0}}@keyframes envelope-paper-light{0%,to{opacity:0}48%{opacity:.65}}@keyframes envelope-flap-top{0%{transform:rotateX(0);opacity:1}82%{opacity:1}to{transform:rotateX(108deg);opacity:0}}@keyframes envelope-flap-left{0%{transform:rotateY(0);opacity:1}82%{opacity:1}to{transform:rotateY(-106deg);opacity:0}}@keyframes envelope-flap-right{0%{transform:rotateY(0);opacity:1}82%{opacity:1}to{transform:rotateY(106deg);opacity:0}}@keyframes envelope-flap-bottom{0%{transform:rotateX(0);opacity:1}82%{opacity:1}to{transform:rotateX(-102deg);opacity:0}}@media (prefers-reduced-motion:reduce){.envelope-flap,.envelope-flap:after,.envelope-open-hint,.envelope-seal{transition:none!important;animation:none!important;will-change:auto!important}.envelope-seal:after,.envelope-seal:before{animation:none!important;opacity:.16}.seal-stroke-glint{display:none}}.invitation-sound{position:fixed;z-index:30;right:max(8px,env(safe-area-inset-right,0px));top:calc(var(--invitation-control-height, 100svh) - 52px - env(safe-area-inset-bottom, 0px));width:44px;height:44px;padding:12px;border:0;border-radius:50%;color:white;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}.invitation-sound:before{content:"";position:absolute;inset:5px;border-radius:inherit;background:#25231e73;border:1px solid #ffffff36;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);z-index:-1}.invitation-sound svg{display:block;width:100%;height:100%}.invitation-sound:focus-visible{outline:2px solid #956923;outline-offset:2px}.invitation-sound:hover:before{background:#25231e99}.invitation-opening{position:relative;width:100%;min-height:100svh;min-height:100dvh;isolation:isolate;overflow:clip;background:#f6eedf}.invitation-opening-cover{position:relative;width:100%;z-index:3}.invitation-opening[data-phase=opening] .invitation-opening-cover{position:absolute;inset:0;pointer-events:none}.invitation-opening[data-phase=opening] .envelope{background:transparent}.invitation-opening[data-phase=cover] .invitation-opening-welcome{position:absolute;inset:0;visibility:hidden}.invitation-opening[data-phase=cover] .invitation-opening-welcome,.invitation-opening[data-phase=cover] .invitation-opening-welcome *{animation-play-state:paused!important}.invitation-opening-welcome{--scene-entry-offset:.82s;position:relative;width:100%;z-index:1;transform-origin:50% 58%;animation:invitation-garden-arrival 4.3s cubic-bezier(.2,.65,.25,1) both}.opening-atmosphere{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}.opening-light{position:absolute;inset:-15%;background:radial-gradient(ellipse at 50% 51%,#fffbe8 0,#fff2cfb3 22%,#f9ecd338 48%,transparent 70%);opacity:0;animation:invitation-light-bloom 3.5s ease-in-out .4s both}.opening-atmosphere i{position:absolute;left:50%;top:51%;width:3px;height:3px;border-radius:50%;background:#fff9d7;box-shadow:0 0 5px #c9a05c99;opacity:0;animation:invitation-gold-mote 2.3s cubic-bezier(.16,.5,.3,1) var(--mote-delay) both}.opening-atmosphere i:nth-child(3n){width:2px;height:5px}.invitation-opening-welcome .countdown-wrap,.invitation-opening-welcome .hero-hashtag,.invitation-opening-welcome .wedding-date,.invitation-opening-welcome .welcome-family-link,.invitation-opening-welcome .welcome-logo,.invitation-opening-welcome .welcome-name-and,.invitation-opening-welcome .welcome-name-line{animation:invitation-welcome-detail-in .85s cubic-bezier(.16,.72,.25,1) var(--welcome-detail-delay) both}.invitation-opening-welcome .welcome-logo{--welcome-detail-delay:1.95s}.invitation-opening-welcome .hero-hashtag{--welcome-detail-delay:2.1s}.invitation-opening-welcome .welcome-name-line:first-child{--welcome-detail-delay:2.2s}.invitation-opening-welcome .welcome-name-and{--welcome-detail-delay:2.38s}.invitation-opening-welcome .welcome-name-line:last-child{--welcome-detail-delay:2.54s}.invitation-opening-welcome .wedding-date{--welcome-detail-delay:2.8s}.invitation-opening-welcome .countdown-wrap{--welcome-detail-delay:2.98s}.invitation-opening-welcome .welcome-family-link{--welcome-detail-delay:3.2s}@keyframes invitation-garden-arrival{0%,12%{transform:scale(1.1) translate3d(0,8px,0);opacity:.35}52%{opacity:1}to{transform:none;opacity:1}}@keyframes invitation-light-bloom{0%{opacity:0;transform:scale(.3)}35%{opacity:.85}60%{opacity:.45}to{opacity:0;transform:scale(1.25)}}@keyframes invitation-gold-mote{0%{opacity:0;transform:translateZ(0) scale(.4)}22%{opacity:.8}to{opacity:0;transform:translate3d(var(--mote-x),var(--mote-y),0) scale(.5)}}@keyframes invitation-welcome-detail-in{0%{opacity:0;transform:translate3d(0,10px,0)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.opening-atmosphere{display:none}.invitation-opening-welcome,.invitation-opening-welcome .countdown-wrap,.invitation-opening-welcome .hero-hashtag,.invitation-opening-welcome .wedding-date,.invitation-opening-welcome .welcome-family-link,.invitation-opening-welcome .welcome-logo,.invitation-opening-welcome .welcome-name-and,.invitation-opening-welcome .welcome-name-line{animation:none;opacity:1;transform:none}}