/* Easy Wedding (easywedding.in) — original design & code © 2026 Chandan Kumar Mahato. All rights reserved. Origin fingerprint: EW-ORIGIN-2026-369eafc22a98. Unauthorised copying is prohibited. */
/* A layered paper object: both sides remain visible throughout each fold. */
.opening{background:radial-gradient(ellipse at 45% 35%,#fffaf1,#e5d4bb 100%);perspective:1800px}.royal .opening{background:radial-gradient(ellipse at 45% 35%,#fbf0e9,#cfa4aa 100%)}.opening::before{content:'';position:absolute;inset:-12%;background:url('assets/garden.webp') center/cover;opacity:.09;filter:blur(15px);animation:ambient-breathe 13s ease-in-out infinite alternate}.royal .opening::before{background-image:url('assets/balcony.webp');opacity:.12}.envelope-scene{isolation:auto;perspective:1800px;box-shadow:0 3px 4px #45332718,0 18px 35px #4a2c342b,0 55px 80px #4a2c3422;transform:rotateX(3deg) rotateY(-3deg);transition:none;will-change:transform}.envelope-scene::before{content:'';position:absolute;inset:0;background:#ddc8ac;transform:translateZ(-3px);box-shadow:1px 2px 0 #ad9271,2px 3px 0 #d6c1a2;pointer-events:none}.paper-panel,.royal .paper-panel{background:none;clip-path:none;backface-visibility:visible;-webkit-backface-visibility:visible;filter:none;transition:transform 1.7s cubic-bezier(.3,.05,.2,1);transform:translateZ(1px)}.paper-panel::before,.paper-panel::after{content:'';position:absolute;inset:0;clip-path:var(--paper-cut);backface-visibility:hidden;-webkit-backface-visibility:hidden;pointer-events:none}.paper-panel::before{background:url('assets/envelope.webp') center/100% 100%;transform:translateZ(.7px)}.paper-panel::after{background:linear-gradient(125deg,#f9f0da,#d3bb97 52%,#eee0c5);transform:rotateY(180deg) translateZ(.7px);clip-path:var(--paper-back,var(--paper-cut));box-shadow:inset 0 0 2px #6e493c}.royal .paper-panel::before{background-image:url('assets/royal-envelope.webp')}.royal .paper-panel::after{background:linear-gradient(125deg,#f7e9e1,#d9b7b4 52%,#f1d6ce)}.panel-top,.royal .panel-top{--paper-cut:polygon(0 0,100% 0,50% 47.25%);transform:translateZ(3px);transition-delay:.55s}.panel-left,.royal .panel-left{--paper-cut:polygon(0 0,50.1% 47.25%,0 90.7%);--paper-back:polygon(100% 0,49.9% 47.25%,100% 90.7%);transition-delay:1.6s}.panel-right,.royal .panel-right{--paper-cut:polygon(100% 0,100% 90.7%,49.9% 47.25%);--paper-back:polygon(0 0,0 90.7%,50.1% 47.25%);transition-delay:1.75s}.panel-bottom,.royal .panel-bottom{--paper-cut:polygon(0 90.4%,50% 47.1%,100% 90.4%,100% 100%,0 100%);transition-delay:2.2s}.royal .panel-top{--paper-cut:polygon(0 0,100% 0,50% 40.4%)}.royal .panel-left{--paper-cut:polygon(0 0,50.1% 40.4%,0 74.5%);--paper-back:polygon(100% 0,49.9% 40.4%,100% 74.5%)}.royal .panel-right{--paper-cut:polygon(100% 0,100% 74.5%,49.9% 40.4%);--paper-back:polygon(0 0,0 74.5%,50.1% 40.4%)}.royal .panel-bottom{--paper-cut:polygon(0 74.2%,50% 40.2%,100% 74.2%,100% 100%,0 100%)}.envelope-inner{opacity:1;inset:2.5%;border:7px solid #fff8ed;box-shadow:0 3px 12px #371a2540;transform:translateZ(-2px) scale(.98);transition:transform 2.4s cubic-bezier(.2,.6,.2,1) 2.25s;overflow:hidden}.envelope-inner:after{content:'';position:absolute;inset:0;box-shadow:inset 0 0 80px #29141445;opacity:1;transition:opacity 2.7s .5s}.is-opening .envelope-inner:after{opacity:0}.is-opening .envelope-inner{transform:translateY(-3%) translateZ(40px) scale(1.025)}.is-opening .panel-top{transform:translateZ(3px) rotateX(152deg);filter:none}.is-opening .panel-left{transform:translateZ(1px) rotateY(-132deg);filter:none}.is-opening .panel-right{transform:translateZ(1px) rotateY(132deg);filter:none}.is-opening .panel-bottom{transform:translateZ(1px) rotateX(-128deg);filter:none}.is-opening .envelope-scene,.royal .is-opening .envelope-scene{animation:paper-camera 5.3s cubic-bezier(.25,.7,.2,1) both}.opening-seal{transform:translate(-50%,-50%) translateZ(8px) rotate(-7deg);transition:transform .85s cubic-bezier(.24,.1,.32,1),opacity .55s .15s;filter:drop-shadow(2px 7px 4px #3d192360)}.is-opening .opening-seal{transform:translate(-52%,-100%) translateZ(140px) rotateY(-32deg) rotateZ(13deg) scale(1.05);opacity:0}.opening-prompt small{font-size:11px;letter-spacing:.12em}.opening-eyebrow{font-size:11px}.opening-footer{font-size:10px}.royal .is-opening .opening-glow{animation:royal-glow 2.4s ease-in-out 3.6s both;opacity:.35}.opening-glow{pointer-events:none}.hero-art{will-change:transform}.arrived:not(.royal) .hero-art{animation:garden-camera 18s ease-in-out infinite alternate}.hero-light{display:block;position:absolute;inset:-20%;background:radial-gradient(ellipse at 20% 30%,#fff3d350,transparent 45%);animation:ambient-breathe 8s ease-in-out infinite alternate;pointer-events:none}.royal.arrived .hero-art{animation:royal-living-camera 20s ease-in-out infinite alternate}.royal .curtain-left{animation:curtain-drape 8s ease-in-out infinite alternate}.royal .curtain-right{animation:curtain-drape 9s ease-in-out -3s infinite alternate-reverse}.royal .hero-sparkles{background-size:83px 139px,119px 173px;animation:royal-twinkle 3.5s ease-in-out infinite alternate}.ambient-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:41;pointer-events:none;opacity:.75}.arrived .ambient-canvas{z-index:8;opacity:.65}.royal .hero-copy{z-index:4}.opening.done{transition:opacity 1.2s ease,visibility 1.2s}.envelope-address{font-size:13px}.opening-prompt{transform:translateZ(5px)}.envelope-address{transform:translateZ(5px)}
@keyframes paper-camera{0%{transform:rotateX(3deg) rotateY(-3deg) scale(1)}24%{transform:rotateX(7deg) rotateY(2deg) scale(.93)}63%{transform:rotateX(-2deg) rotateY(-1deg) scale(.98)}100%{transform:rotateX(0deg) rotateY(0deg) scale(1.2)}}
@keyframes ambient-breathe{from{transform:scale(1) translate(-1%,0);opacity:.12}to{transform:scale(1.08) translate(1%,1%);opacity:.25}}
@keyframes garden-camera{from{transform:scale(1.015) translateY(0)}to{transform:scale(1.07) translateY(-.7%)}}
@keyframes royal-living-camera{0%{transform:scale(1.08) translateY(1%)}100%{transform:scale(1.025) translateY(-.4%)}}
@keyframes curtain-drape{from{transform:skewX(-.25deg) scaleX(1)}to{transform:skewX(.8deg) scaleX(1.04)}}
@media(prefers-reduced-motion:reduce){.opening::before,.envelope-scene,.hero-art,.curtain-layer,.hero-light,.hero-sparkles{animation:none!important}.paper-panel,.opening-seal,.envelope-inner,.opening.done{transition:none!important}.ambient-canvas{display:none}.opening-glow{display:none!important}}

.royal .is-opening .panel-left{transition-delay:1.6s}.royal .is-opening .panel-right{transition-delay:1.75s}.royal .is-opening .panel-bottom{transition-delay:2.2s}
