/* Light follows the paper folds; the wax catches a soft champagne highlight. */
.invitation-cover,.invitation-art{--edge-light:#fff2cf;--edge-halo:#e9bc75;--unseal-light-time:2s}
.cover-style-moon,.cover-style-sea{--edge-light:#e9fbff;--edge-halo:#99dbe3}
.cover-style-wisteria{--edge-light:#f9eaff;--edge-halo:#d7a6df}
.cover-style-emerald{--edge-light:#fff1bb;--edge-halo:#e3bc65}
.cover-style-rose{--edge-light:#fff2dc;--edge-halo:#edb58d;--unseal-light-time:3.5s}
.envelope-edge-light{position:absolute;inset:0;width:100%;height:100%;z-index:2;overflow:visible;pointer-events:none;fill:none;stroke:var(--edge-light);stroke-width:1.6;filter:none;opacity:.42}
.envelope-edge-light :is(path,ellipse){vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}
.edge-panel-line,.edge-petal-line{display:none}
.opening-bloom .edge-fold-line{display:none}.opening-bloom .edge-petal-line{display:block}
:is(.opening-gate,.opening-curtain,.opening-scroll) .edge-fold-line{display:none}
:is(.opening-gate,.opening-curtain,.opening-scroll) .edge-panel-line{display:block}
.experience-open .envelope-edge-light,.invitation-art.is-open .envelope-edge-light{animation:envelope-edge-awaken var(--unseal-light-time) ease-out both}
.envelope-opening-aura{position:absolute;inset:0;z-index:6;pointer-events:none;opacity:0;background:radial-gradient(ellipse at 50% 54%,#fff9e4a6 0%,#ffe5b54d 12%,transparent 48%);mix-blend-mode:screen;transform:scale(.65)}
.experience-open .envelope-opening-aura,.invitation-art.is-open .envelope-opening-aura{animation:envelope-light-release var(--unseal-light-time) ease-out both}
.seal-light{position:absolute;inset:-8px;border-radius:inherit;pointer-events:none;z-index:0!important}
.seal-light:before{content:'';position:absolute;inset:0;border:1px solid var(--edge-light);border-radius:inherit;box-shadow:0 0 12px var(--edge-halo),0 0 28px #edbd724d,inset 0 0 9px var(--edge-halo);opacity:.38;animation:seal-halo-breathe 4.8s ease-in-out infinite}
.seal-light:after{content:'';position:absolute;inset:9px;border-radius:inherit;background:linear-gradient(115deg,transparent 20%,#fff8df1a 36%,#fff9e3a3 48%,#fff2cf33 55%,transparent 69%);background-size:280% 100%;background-position:110% 0;mix-blend-mode:screen;opacity:0;animation:seal-satin-glint 6.5s ease-in-out infinite}
:is(.cover-seal,.wax-seal):hover .seal-light:before,:is(.cover-seal,.wax-seal):focus-visible .seal-light:before{opacity:.75;animation-play-state:paused}
.experience-open .seal-light:before,.is-open .seal-light:before{animation:seal-opening-halo 1.2s ease-out both}
.experience-open .seal-light:after,.is-open .seal-light:after{animation:seal-opening-glint .9s ease-out both}
@keyframes envelope-edge-awaken{0%{opacity:.45}20%,42%{opacity:1}76%{opacity:.65}100%{opacity:0}}
@keyframes envelope-light-release{0%{opacity:0;transform:scale(.65)}24%{opacity:.65}55%{opacity:.35}100%{opacity:0;transform:scale(1.4)}}
@keyframes seal-halo-breathe{0%,100%{opacity:.32;transform:scale(1)}50%{opacity:.58;transform:scale(1.035)}}
@keyframes seal-satin-glint{0%,22%{background-position:110% 0;opacity:0}32%{opacity:.7}54%{background-position:-15% 0;opacity:0}100%{background-position:-15% 0;opacity:0}}
@keyframes seal-opening-halo{0%{opacity:.55;transform:scale(1)}28%{opacity:.9}100%{opacity:0;transform:scale(1.6)}}
@keyframes seal-opening-glint{0%{opacity:.2;background-position:110% 0}35%{opacity:.9}100%{opacity:0;background-position:-15% 0}}
@media(prefers-reduced-motion:reduce){.envelope-edge-light,.envelope-opening-aura,.seal-light:before,.seal-light:after{animation:none!important}.seal-light:before{opacity:.35}.seal-light:after{opacity:.18;background-position:45% 0}.experience-open .envelope-edge-light,.experience-open .seal-light,.is-open .envelope-edge-light,.is-open .seal-light{opacity:0}}

/* Reference sequence: warm wax rim, light from inside the folds, then a slow reveal. */
/* Keep the opening on the compositor; pause scenery until the paper has cleared. */
.invitation-site:is(.is-opening,:not(.experience-open)) :is(.rose-motion-world,.living-scene,.scene-particles){visibility:hidden}
.invitation-site:is(.is-opening,:not(.experience-open)) :is(.rose-motion-world,.living-scene,.scene-particles) *{animation-play-state:paused!important}
.invitation-site.is-opening .hero-scene{animation-play-state:paused!important;transition:none;transform:none;translate:none}
.invitation-site.is-opening .cover-leaf{will-change:transform,opacity;filter:none}
.invitation-site.is-opening .cover-leaf:after{animation:none!important}
.invitation-site.is-opening .envelope-inner-light{will-change:opacity}
.invitation-site.is-opening .invitation-cover{will-change:opacity}
.invitation-site:not(.experience-open) .cover-leaf:after{animation:none!important}
@keyframes rose-name-arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.envelope-inner-light{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;fill:none;opacity:0;overflow:visible}
.envelope-inner-light>svg{display:block;width:100%;height:100%;overflow:visible}
.envelope-inner-light path{stroke-linecap:round;stroke-dasharray:none;stroke-dashoffset:0}
.inner-light-spill{stroke:#e7a25c;stroke-width:22;opacity:.3}
.inner-light-core{stroke:#ffdcaa;stroke-width:3}
.opening-effect-envelope .invitation-cover,.invitation-art[data-envelope]{--edge-light:#ffe5b4;--edge-halo:#eaa052;--reference-opening:2.8s}
.opening-effect-envelope .invitation-cover{transition:none}
.opening-effect-envelope .cover-leaf{transition:none;transform-origin:center;backface-visibility:visible}
.opening-effect-envelope .cover-leaf:before{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 50% 54%,#4c241a66 0%,#7e452529 16%,transparent 39%);mix-blend-mode:multiply;opacity:0}
.opening-effect-envelope.experience-open .cover-leaf:before{animation:reference-fold-depth 3.8s ease-in-out both}
.opening-effect-envelope .cover-top{transform-origin:50% 0}
.opening-effect-envelope .cover-bottom{transform-origin:50% 100%}
.opening-effect-envelope .cover-left{transform-origin:0 50%}
.opening-effect-envelope .cover-right{transform-origin:100% 50%}
.opening-effect-envelope .envelope-edge-light,.invitation-art[data-envelope] .envelope-edge-light{opacity:.08;stroke-width:2;filter:drop-shadow(0 0 3px #ffdba4) drop-shadow(0 0 8px #e7a258) drop-shadow(0 0 15px #c77b3866)}
.opening-effect-envelope .seal-light,.invitation-art[data-envelope] .seal-light{inset:-1px}
.opening-effect-envelope .seal-light:before,.invitation-art[data-envelope] .seal-light:before{inset:-1px;border:2px solid #ffe5b9;box-shadow:0 0 5px #fff3d7,0 0 12px #f9bf77,0 0 24px #d6884999,inset 0 0 5px #ffda9f;animation:none;opacity:.08}
.opening-effect-envelope .seal-light:after,.invitation-art[data-envelope] .seal-light:after{animation:none;opacity:0}
.opening-effect-envelope :is(.envelope-opening-aura,.unsealing-glow,.opening-light-rays),.invitation-art[data-envelope] .envelope-opening-aura{display:none}
.opening-effect-envelope.experience-open .invitation-cover{transition:visibility 0s 2.8s;animation:reference-cover-reveal var(--reference-opening) linear both}
.opening-effect-envelope.experience-open .cover-top{animation:reference-paper-top var(--reference-opening) cubic-bezier(.3,0,.25,1) both}
.opening-effect-envelope.experience-open .cover-bottom{animation:reference-paper-bottom var(--reference-opening) cubic-bezier(.3,0,.25,1) both}
.opening-effect-envelope.experience-open .cover-left{animation:reference-paper-left var(--reference-opening) cubic-bezier(.3,0,.25,1) both}
.opening-effect-envelope.experience-open .cover-right{animation:reference-paper-right var(--reference-opening) cubic-bezier(.3,0,.25,1) both}
.opening-effect-envelope.experience-open .cover-seal{transition:none;animation:reference-wax-lift var(--reference-opening) ease-in-out both}
.opening-effect-envelope.experience-open .seal-light:before,.invitation-art.is-open .seal-light:before{animation:reference-wax-ignite 3s ease-in-out both}
.opening-effect-envelope.experience-open .seal-light:after,.invitation-art.is-open .seal-light:after{animation:seal-opening-glint 1.4s .25s ease-out both}
.opening-effect-envelope.experience-open .envelope-edge-light,.invitation-art.is-open .envelope-edge-light{animation:reference-edge-warmth 3s .55s ease-in-out both}
.opening-effect-envelope.experience-open .envelope-inner-light,.invitation-art.is-open .envelope-inner-light{animation:reference-inner-light 3.5s .3s ease-out both}
.opening-effect-envelope.experience-open .envelope-inner-light path,.invitation-art.is-open .envelope-inner-light path{animation:none}
.opening-effect-envelope .cinematic-names{transition:opacity 1.1s 2.55s,transform 1.5s 2.35s}
.opening-effect-envelope.experience-open .cover-seams{transition:opacity .8s .5s}
.opening-effect-envelope.experience-open .cover-instruction{transition:opacity .35s}

.invitation-art[data-envelope] .invitation-letter{transition-delay:2.3s}
.invitation-art.is-open .wax-seal{transition:none;animation:reference-wax-lift var(--reference-opening) ease-in-out both}
.invitation-art.is-open .envelope-flap{transition:none;animation:reference-paper-top var(--reference-opening) ease-in-out both}
.invitation-art.is-open .fold-left{transition:none;animation:reference-paper-left var(--reference-opening) ease-in-out both}
.invitation-art.is-open .fold-right{transition:none;animation:reference-paper-right var(--reference-opening) ease-in-out both}
.invitation-art.is-open .fold-bottom{transition:none;animation:reference-paper-bottom var(--reference-opening) ease-in-out both}
.invitation-art.is-open .invitation-letter{animation:reference-letter-arrive var(--reference-opening) ease-in-out both}

@keyframes reference-wax-ignite{0%{opacity:.08}20%{opacity:.85}42%,62%{opacity:1}85%{opacity:.6}100%{opacity:.15}}
@keyframes reference-edge-warmth{0%{opacity:.08}35%,65%{opacity:1}100%{opacity:0}}
@keyframes reference-inner-light{0%{opacity:0}25%{opacity:.8}65%{opacity:1}100%{opacity:0}}
@keyframes reference-light-travel{0%{stroke-dashoffset:1}100%{stroke-dashoffset:0}}
@keyframes reference-cover-reveal{0%,66%{opacity:1}100%{opacity:0}}
@keyframes reference-wax-lift{0%,22%{opacity:1;transform:translate(-50%,-50%) rotate(-6deg) scale(1)}55%{opacity:1;transform:translate(-50%,calc(-50% - 8px)) rotate(-3deg) scale(1.04)}72%{opacity:1;transform:translate(-50%,calc(-50% - 22px)) rotate(0deg) scale(1.06)}100%{opacity:0;transform:translate(-50%,calc(-50% - 65px)) rotate(3deg) scale(1.1)}}
@keyframes reference-paper-top{0%,20%{transform:none;opacity:1}55%,68%{transform:translate3d(0,-10px,0);opacity:1}100%{transform:translate3d(0,-12%,0);opacity:0}}
@keyframes reference-paper-bottom{0%,24%{transform:none;opacity:1}55%,68%{transform:translate3d(0,10px,0);opacity:1}100%{transform:translate3d(0,12%,0);opacity:0}}
@keyframes reference-paper-left{0%,26%{transform:none;opacity:1}55%,68%{transform:translate3d(-8px,0,0);opacity:1}100%{transform:translate3d(-12%,0,0);opacity:0}}
@keyframes reference-paper-right{0%,26%{transform:none;opacity:1}55%,68%{transform:translate3d(8px,0,0);opacity:1}100%{transform:translate3d(12%,0,0);opacity:0}}
@keyframes reference-fold-depth{0%,15%{opacity:0}45%,72%{opacity:1}100%{opacity:0}}
@keyframes reference-letter-arrive{0%,60%{transform:none;z-index:2}61%{z-index:8}100%{transform:translateY(-42px);z-index:8}}
@media(prefers-reduced-motion:reduce){
 .opening-effect-envelope .invitation-cover,.opening-effect-envelope .cover-leaf,.opening-effect-envelope .cover-seal,.opening-effect-envelope .cinematic-names,.invitation-art[data-envelope] .invitation-letter{transition:none!important}
 .opening-effect-envelope.experience-open :is(.invitation-cover,.cover-leaf,.cover-seal),.invitation-art.is-open :is(.envelope-fold,.envelope-flap,.wax-seal,.invitation-letter),.envelope-inner-light,.envelope-inner-light path{animation:none!important}
 .opening-effect-envelope.experience-open .invitation-cover{visibility:hidden;opacity:0}
 .invitation-art.is-open .envelope-fold,.invitation-art.is-open .envelope-flap,.invitation-art.is-open .wax-seal{opacity:0}
 .envelope-inner-light{display:none}
 .opening-effect-envelope .cover-leaf:before{animation:none!important}
}
