:root{--rose:#a66e60;--ink:#865e51;--muted:#a38576;--paper:#fff7f0;--line:#dbb1a0;--script:'Great Vibes',cursive;--serif:'Cormorant Garamond',Georgia,serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:65px}body{margin:0;background:#d4bc9f;color:var(--ink);font:19px/1.6 var(--serif);-webkit-font-smoothing:antialiased}body:not(.opened){overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:2px solid #704b3d;outline-offset:7px}button{color:inherit}h1,h2,h3,p{margin:0}button{border:0}a{text-underline-offset:5px}.skip{position:fixed;z-index:50;top:10px;left:10px;padding:8px 15px;background:var(--paper);transform:translateY(-150%)}.skip:focus{transform:translateY(0)}.ambient{position:fixed;inset:-30px;z-index:-1;background:linear-gradient(#60482f5c,#6e503b66),url('assets/garden.webp') center/cover;filter:blur(15px);transform:scale(1.07)}.welcome{position:fixed;inset:0;z-index:20;max-width:620px;margin:auto;background:#e7cbb0;overflow:hidden;box-shadow:0 0 100px #392a2940;transition:opacity 1s,visibility 1s}.envelope-art{position:absolute;inset:0}.envelope-art img{width:100%;height:100%;object-fit:cover;object-position:center;position:absolute;inset:0;transition:opacity 1.3s,transform 2.2s cubic-bezier(.3,0,.2,1)}.envelope-art .unsealed{opacity:0}.welcome-heading{position:absolute;top:max(7%,30px);left:15px;right:15px;text-align:center;color:#694c3e;text-shadow:0 1px 12px #f3d6b7}.eyebrow{font-family:Arial,sans-serif;font-size:9px;font-weight:400;line-height:1.6;letter-spacing:2.5px}.welcome h1{font:clamp(34px,6vw,48px)/1.6 var(--script);margin:12px 0 4px}.welcome h1 span{font-size:30px;margin:0 5px}.welcome-date{font-family:Arial,sans-serif;letter-spacing:2px;font-size:8px}.welcome-date i{margin:0 7px;font-style:normal}.open-invitation{position:absolute;bottom:14%;left:50%;transform:translateX(-50%);min-width:240px;padding:15px 24px;border:1px solid #fff6;border-radius:50px;box-shadow:0 5px 35px #7b4b3329;background:#fff8eccf;backdrop-filter:blur(12px);color:#775140;display:flex;align-items:center;justify-content:center;gap:20px;font-size:19px;transition:background .2s,opacity .4s}.open-invitation:hover{background:#fff8f1}.open-arrow{font:18px Arial,sans-serif;animation:beckon 2s ease-in-out infinite}.welcome-note{position:absolute;bottom:8%;left:0;right:0;text-align:center;font-style:italic;font-size:16px;color:#795b48;text-shadow:0 1px 10px #ffe8c9}.welcome.opening .unsealed{opacity:1}.welcome.opening .sealed{opacity:0}.welcome.opening .envelope-art img{transform:scale(1.09)}.welcome.opening .open-invitation,.welcome.opening .welcome-note,.welcome.opening .welcome-heading{opacity:0;transition:opacity .5s}.welcome.dismissed{opacity:0;visibility:hidden;pointer-events:none}.experience{width:100%;max-width:620px;margin:0 auto;background:#f5e7d9;box-shadow:0 0 100px #392a2950;overflow:clip}.topbar{position:fixed;top:0;left:50%;transform:translateX(-50%);width:min(100%,620px);height:64px;padding:0 27px;display:flex;align-items:center;justify-content:space-between;z-index:10;background:linear-gradient(#fff8edee,#fff8edb8);backdrop-filter:blur(12px);border-bottom:1px solid #d9b9a754}.monogram{text-decoration:none;font:29px var(--script)}.monogram span{font-size:20px}.top-date{font:9px Arial,sans-serif;letter-spacing:3px}.topbar button{width:35px;height:35px;border:1px solid #d2b1a5;border-radius:50%;background:transparent;font:14px Arial,sans-serif}.garden-section{position:relative;background:url('assets/garden.webp') center/cover;display:flex;flex-direction:column;align-items:center;padding:110px 38px 90px}.invitation-section{min-height:100svh;justify-content:center;padding-top:112px;padding-bottom:75px}.section-shade{position:absolute;inset:0;background:linear-gradient(#d9bf8e1a,#f3d8b900)}.paper{position:relative;width:100%;text-align:center;background:linear-gradient(125deg,#fff9f1f7,#fff3edf7);border:1px solid #f7e4d4;border-radius:23px;padding:40px 28px;box-shadow:0 10px 35px #513a2438,inset 0 0 0 5px #fff7ef,inset 0 0 0 7px #e5bdad,inset 0 0 0 10px #fff5ed,inset 0 0 0 11px #e5bdad8a}.paper:after{content:'';position:absolute;inset:15px;border:1px solid #e6c2b134;border-radius:13px;pointer-events:none}.script{font-family:var(--script);font-weight:400;line-height:1.3}.bow{font-size:42px;color:#d8ad99;line-height:1;margin:-18px 0 10px}.bismillah{font-size:14px;line-height:1.5;color:var(--muted);font-style:italic}.dear{font-size:42px;margin:19px 0 8px}.intro{font-size:18px;line-height:1.55}.with-love{font-size:15px;margin-top:21px;font-style:italic}.names{font-size:59px;margin:9px 0 14px;line-height:1.13}.names span{display:block;font:italic 27px var(--serif);margin:6px 0}.divider{display:flex;align-items:center;justify-content:center;gap:8px;color:#ce9888;margin:20px auto}.divider:before,.divider:after{content:'';height:1px;width:42px;background:#d6a28e}.divider span{font-size:15px;line-height:1}.event-date{font-size:28px;line-height:1.4;margin-top:5px}.event-time{font-size:21px}.event-time span{display:block;font:8px Arial,sans-serif;letter-spacing:1.3px;margin-top:5px;color:#9a7c70}.closing-line{font-style:italic;font-size:15px;margin-top:20px}.scroll-cue{position:absolute;bottom:17px;text-decoration:none;text-align:center;font:8px Arial,sans-serif;letter-spacing:2px;color:#fffaea;text-shadow:0 1px 7px #4b422a}.scroll-cue span{display:block;font-size:19px;margin-top:10px}.countdown-section{position:relative;text-align:center;padding:58px 28px 52px;background:#fbf0e6}.countdown-section h2{font-size:42px;margin:14px 0 28px}.countdown{display:flex;align-items:flex-start;justify-content:center;gap:17px}.countdown div{width:68px}.countdown strong{display:block;font-size:45px;line-height:1;font-weight:400;font-variant-numeric:tabular-nums}.countdown span{display:block;font:8px Arial,sans-serif;letter-spacing:1.7px;margin-top:12px}.countdown i{font-size:25px;font-style:normal;line-height:1.4;color:#c6a08e}.text-link{display:inline-block;font-size:16px;margin-top:30px;text-decoration:none;border-bottom:1px solid #c99b86;padding-bottom:4px}.text-link span{font-size:16px;margin-right:5px}.venue-section{min-height:820px;justify-content:center;background-position:center bottom;padding-top:100px;padding-bottom:220px}.venue-paper{padding:43px 25px}.paper h2:not(.names):not(.dear){font-size:43px}.restaurant{font-size:41px}.hall{font-size:18px;margin:5px 0 17px}address{font-style:normal;font-size:19px;line-height:1.45}.venue-date{font-size:17px;line-height:1.6;margin:25px 0}.pill{display:inline-flex;align-items:center;gap:24px;justify-content:center;background:#b6816e;color:#fffaf4;text-decoration:none;border:1px solid #ae7565;border-radius:30px;padding:11px 26px;font-size:17px;box-shadow:0 5px 16px #8d534025;transition:background .2s,transform .2s}.pill:hover{background:#9c6d5a;transform:translateY(-2px)}.programme-section{position:relative;padding:75px 38px;background:linear-gradient(#c6a98740,#c7aa8b40),url('assets/envelope-sealed.webp') center/cover}.programme-paper{padding:40px 32px 34px}.programme-paper .eyebrow{margin-bottom:17px}.subtitle{font-size:17px;margin-top:7px}.timeline{list-style:none;padding:0;margin:31px 0 6px;text-align:left}.timeline li{display:grid;grid-template-columns:85px 1fr;align-items:center;min-height:70px;font-size:18px}.timeline time{font-size:16px;font-variant-numeric:tabular-nums;color:#a17c6a}.timeline li>span{position:relative;border-left:1px solid #dfbbaa;padding:19px 0 19px 26px}.timeline li>span:before{content:'';position:absolute;left:-3px;top:calc(50% - 3px);width:5px;height:5px;border-radius:50%;background:#b58a75;box-shadow:0 0 0 4px #fcf3ec}.blessings-section{padding:95px 38px 100px}.blessings-paper{padding:43px 25px}.blessings-paper .eyebrow{margin-bottom:20px}blockquote{margin:30px 0;font-size:20px;line-height:1.7}cite{display:block;font-style:normal;font-size:15px;margin-top:24px}.blessings-paper>p:not(.eyebrow):not(.signature){font-size:17px}.gratitude{margin-top:25px}.signature{font-size:35px;margin-top:6px}.finale{height:960px;max-height:115svh;min-height:720px;background:url('assets/fountain.webp') center/cover;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:80px 35px 32px}.finale:before{content:'';position:absolute;inset:0;background:linear-gradient(#3e4c2e35,transparent 48%,#3c3e2b10)}.finale-text{text-align:center;color:#fff8da;position:relative;text-shadow:0 3px 15px #4a4a2399}.final-monogram{font-size:100px;line-height:1.1}.finale h2{font-size:68px}.finale-text>p:last-child{font-size:17px;margin-top:10px}.final-card{position:relative;background:#fff4e9eb;border:1px solid #e4be9e;box-shadow:0 5px 30px #3c432b40;padding:20px 25px;text-align:center;border-radius:3px;width:100%}.final-card>.script{font-size:34px}.final-card>p:nth-child(2){font-size:15px;margin-top:5px}.final-card p span{margin:0 9px}.final-card button{margin-top:18px;padding:7px 0;background:none;border-top:1px solid #d7b8a580;font-size:13px}.final-card button span{margin-left:10px}footer{padding:23px 25px;background:#f7eadd;display:flex;justify-content:space-between;align-items:center;font:7px Arial,sans-serif;letter-spacing:1.7px}.footer-flower{font-size:15px;color:#b98d74}.reveal{opacity:0;transform:translateY(25px);transition:opacity 1.1s ease,transform 1.1s ease}.reveal.visible{opacity:1;transform:translateY(0)}#nature{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:12;max-width:700px;margin:auto}.petal{position:absolute;top:-10%;left:var(--left);width:10px;height:16px;background:linear-gradient(140deg,#f8e4d4,#d89e8b);border-radius:70% 20% 70% 30%;opacity:0;animation:petal-fall var(--duration) linear infinite;animation-delay:var(--delay)}.butterfly{position:absolute;left:var(--left);top:var(--top);width:26px;height:23px;filter:drop-shadow(0 2px 2px #7d695630);animation:float-butterfly var(--duration) ease-in-out infinite alternate;animation-delay:var(--delay)}.butterfly:before,.butterfly:after{content:'';position:absolute;top:0;width:14px;height:20px;background:linear-gradient(135deg,#fffae8 25%,#dab5a0);border:1px solid #fff0d0;border-radius:75% 45% 70% 35%;transform-origin:right center;animation:flap .3s ease-in-out infinite alternate}.butterfly:before{left:0}.butterfly:after{left:14px;transform-origin:left center;border-radius:45% 75% 35% 70%;animation-name:flap-right}.paused #nature *,.paused #nature *:before,.paused #nature *:after{animation-play-state:paused!important}.paused .reveal{transition:none}.opening~#nature{opacity:0}@keyframes beckon{50%{transform:translateY(4px)}}@keyframes petal-fall{0%{transform:translate3d(0,-30px,0) rotate(0);opacity:0}10%{opacity:.65}90%{opacity:.65}100%{transform:translate3d(90px,110vh,0) rotate(420deg);opacity:0}}@keyframes float-butterfly{0%{transform:translate3d(0,0,0) rotate(-20deg)}35%{transform:translate3d(55px,-100px,0) rotate(15deg)}70%{transform:translate3d(-30px,-180px,0) rotate(-12deg)}100%{transform:translate3d(65px,-280px,0) rotate(20deg)}}@keyframes flap{to{transform:rotateY(70deg)}}@keyframes flap-right{to{transform:rotateY(-70deg)}}@media(min-width:900px){.welcome{border-left:1px solid #ecd6b960;border-right:1px solid #ecd6b960}.invitation-section{padding-top:110px}.welcome-heading{top:6%}}@media(max-width:480px){body{font-size:17px}.garden-section{padding-left:23px;padding-right:23px}.invitation-section{padding-top:91px;padding-bottom:65px}.paper{padding-left:21px;padding-right:21px}.invitation-paper{padding-top:35px;padding-bottom:30px}.bismillah{font-size:12px}.dear{font-size:36px;margin-top:16px}.intro{font-size:16px}.names{font-size:51px}.with-love{margin-top:15px}.divider{margin:17px auto}.closing-line{font-size:13px}.event-date{font-size:25px}.eyebrow{font-size:8px;letter-spacing:2px}.countdown-section{padding:45px 18px}.countdown{gap:7px}.countdown strong{font-size:39px}.countdown div{width:61px}.venue-section{min-height:760px;padding-bottom:190px}.paper h2:not(.names):not(.dear){font-size:38px}.restaurant{font-size:36px}.programme-section{padding:65px 23px}.programme-paper{padding-left:24px;padding-right:24px}.timeline li{font-size:17px;grid-template-columns:75px 1fr}.timeline time{font-size:15px}.timeline li>span{padding-left:20px}blockquote{font-size:17px}.blessings-paper>p:not(.eyebrow):not(.signature){font-size:15px}.signature{font-size:31px}.finale{min-height:700px;padding-left:23px;padding-right:23px}.welcome h1{font-size:37px}.welcome-date{font-size:7px;letter-spacing:1.3px}.welcome-heading{top:7%}.welcome-note{font-size:14px}.open-invitation{font-size:17px;min-width:225px}.topbar{padding:0 22px}}@media(max-height:700px){.welcome-heading{top:4%}.welcome h1{font-size:33px;margin:6px 0}.welcome-note{bottom:5%}.open-invitation{bottom:11%}.envelope-art img{object-fit:contain;background:#e6c8a8}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}#nature{display:none}}

.bird{position:absolute;left:-50px;width:30px;height:15px;opacity:0;animation:bird-flight var(--duration) linear infinite;animation-delay:var(--delay);filter:drop-shadow(0 2px 2px #514b3933)}.bird:before,.bird:after{content:'';position:absolute;width:16px;height:8px;border-top:3px solid #fff9e9;border-radius:65% 65% 0 0;animation:bird-wing 1.1s ease-in-out infinite alternate;transform-origin:right bottom}.bird:after{left:15px;transform-origin:left bottom;animation-direction:alternate-reverse}@keyframes bird-flight{0%{transform:translate(0,25px);opacity:0}10%,80%{opacity:.8}100%{transform:translate(750px,-55px);opacity:0}}@keyframes bird-wing{to{transform:rotate(25deg) scaleY(.4)}}
/* Continuous, articulated envelope opening: seal → hinged flap → rising letter → camera move. */
.cinema-backdrop{position:absolute;inset:-25px;background:linear-gradient(#dfc6a483,#f3ddbd99),url('assets/garden.webp') center/cover;filter:blur(5px);transform:scale(1.06)}
.envelope-stage{position:absolute;left:8%;right:8%;top:36%;height:35%;perspective:1200px;isolation:isolate}
.envelope-object{position:absolute;inset:0;transform-style:preserve-3d;will-change:transform}
.envelope-shadow{position:absolute;left:8%;right:8%;top:80%;height:20%;border-radius:50%;background:#76503b60;filter:blur(23px);transform:translateY(22px)}
.envelope-back,.envelope-pocket{position:absolute;inset:0;border:1px solid #c5a085;background:linear-gradient(135deg,#eed6bd,#c8a889);box-shadow:0 12px 35px #63452d40}
.envelope-back{border-radius:3px;background:linear-gradient(170deg,#ae8a6a,#e2c5a7 55%,#e8d0b8)}
.envelope-pocket{transform:translateZ(5px);clip-path:polygon(0 0,50% 53%,100% 0,100% 100%,0 100%);background:url('assets/envelope-sealed.webp') center 49%/125% 270%;box-shadow:inset 0 0 30px #b58c6c40}
.envelope-pocket:after{content:'';position:absolute;inset:0;background:linear-gradient(35deg,transparent 49.7%,#bd977955 50%,transparent 50.5%),linear-gradient(-35deg,transparent 49.7%,#bd977955 50%,transparent 50.5%)}
.envelope-flap{position:absolute;inset:0 0 43%;transform-origin:50% 0;transform:translateZ(8px);transform-style:preserve-3d;z-index:4;will-change:transform}
.flap-face{position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 100%);backface-visibility:hidden}
.flap-front{background:linear-gradient(160deg,#fae9d4,#ddbea2);filter:drop-shadow(0 3px 3px #8f6e48)}
.flap-front:before{content:'❧';position:absolute;top:-4px;left:12%;font:58px Georgia;color:#ae906276;transform:rotate(-30deg)}
.flap-front:after{content:'❧';position:absolute;top:-4px;right:12%;font:58px Georgia;color:#ae906276;transform:rotate(30deg) scaleX(-1)}
.flap-back{transform:rotateX(180deg);background:linear-gradient(#ead4b9,#f5e8d3);box-shadow:inset 0 0 30px #be987f44}
.wax-seal{position:absolute;left:calc(50% - 38px);top:calc(50% - 30px);width:76px;height:76px;border-radius:49% 52% 46% 53%;background:radial-gradient(circle at 35% 25%,#e9b59e,#c58b76 72%);border:3px solid #e6b9a3;box-shadow:0 5px 8px #64432f60,inset 0 0 0 4px #b57d6480,inset 2px 3px 5px #f6cbb5;z-index:5;transform:translateZ(14px);display:flex;flex-direction:column;justify-content:center;align-items:center;color:#9e6852;text-shadow:0 1px 1px #f6d3bd}
.wax-seal span{font:27px var(--script);line-height:1.1}.wax-seal small{font-size:18px;line-height:1}
.envelope-letter{position:absolute;inset:4% 7% 3%;background:linear-gradient(120deg,#fffaf0,#faeadd);box-shadow:inset 0 0 0 6px #fff8ee,inset 0 0 0 7px #dbbca5,0 4px 18px #765b3338;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:translateZ(2px);z-index:1;padding:15px;border-radius:4px}
.letter-bow{font-size:19px;color:#c19b81}.letter-greeting{font:italic 15px var(--serif)}.letter-names{font:clamp(28px,5vw,43px)/.95 var(--script);margin:10px 0}.letter-names i{font:italic 17px var(--serif);line-height:1}.letter-date{font:7px Arial;letter-spacing:2px;margin-top:7px}
.welcome.opening .wax-seal{animation:seal-lift 1.3s cubic-bezier(.4,0,.25,1) both}
.welcome.opening .envelope-flap{animation:flap-open 2s .55s cubic-bezier(.45,0,.2,1) both}
.welcome.opening .envelope-letter{animation:letter-rise 3s 1.55s cubic-bezier(.35,0,.15,1) both}
.welcome.opening .envelope-stage{animation:envelope-camera 4.7s cubic-bezier(.35,0,.2,1) both}
.welcome.opening .cinema-backdrop{animation:garden-camera 4.7s ease-in-out both}
.welcome.opening .envelope-shadow{animation:shadow-soften 4s ease both}
@keyframes seal-lift{0%{transform:translateZ(14px)}35%{transform:translate3d(0,-7px,55px) rotate(-8deg)}100%{transform:translate3d(35px,160px,100px) rotate(35deg);opacity:0}}
@keyframes flap-open{0%{transform:translateZ(8px) rotateX(0deg)}100%{transform:translateZ(8px) rotateX(178deg)}}
@keyframes letter-rise{0%{transform:translate3d(0,0,2px)}48%{transform:translate3d(0,-83%,2px)}68%{transform:translate3d(0,-88%,60px) rotateX(0deg);opacity:1}100%{transform:translate3d(0,-65%,300px) scale(1.65);opacity:0}}
@keyframes envelope-camera{0%,35%{transform:translateY(0) scale(1)}65%{transform:translateY(9%) scale(1.03)}100%{transform:translateY(42%) scale(1.2);opacity:0}}
@keyframes garden-camera{0%{transform:scale(1.06);filter:blur(5px)}100%{transform:scale(1.23);filter:blur(0)}}
@keyframes shadow-soften{to{opacity:0;transform:translateY(65px) scale(1.2)}}
/* Blend the countdown's surface into both garden sections instead of a rectangular cut. */
.countdown-section{z-index:2;background:#fbf0e6;padding-top:46px;padding-bottom:46px}
.countdown-section:before,.countdown-section:after{content:'';position:absolute;left:0;right:0;height:100px;pointer-events:none}
.countdown-section:before{bottom:100%;background:linear-gradient(transparent,#fbf0e6)}
.countdown-section:after{top:100%;background:linear-gradient(#fbf0e6,transparent)}
.countdown-content{position:relative;z-index:1}
.invitation-section{padding-bottom:130px}.scroll-cue{bottom:58px;z-index:3;color:#82634d;text-shadow:0 1px 8px #fff4df}
.reveal{transition:opacity 1.5s cubic-bezier(.2,.65,.25,1),transform 1.5s cubic-bezier(.2,.65,.25,1);transform:translateY(18px)}
.reveal.visible{transform:translateY(0)}
.dove-overlay{position:absolute;width:clamp(135px,38%,205px);height:auto;right:-35px;top:-54px;z-index:4;pointer-events:none;filter:drop-shadow(0 5px 4px #6a503222)}
@media(max-width:480px){.envelope-stage{left:7%;right:7%;top:38%;height:29%}.wax-seal{width:64px;height:64px;left:calc(50% - 32px);top:calc(50% - 26px)}.wax-seal span{font-size:24px}.letter-names{font-size:30px}.dove-overlay{right:-20px;top:-43px;width:145px}.countdown-section:before,.countdown-section:after{height:75px}}
@media(prefers-reduced-motion:reduce){.welcome.opening .envelope-stage{opacity:0}.reveal{transform:none}.dove-overlay{filter:none}}
.envelope-pocket{background-image:url('assets/envelope-open.webp');background-size:106% 227%;background-position:center 51%}
.envelope-pocket{background-position:center 47%}
/* Refined opening: a proportionate envelope, gentle seal release and one continuous reveal. */
.envelope-stage{width:min(84%,58svh);left:50%;right:auto;top:31%;height:auto;aspect-ratio:1.4;transform:translateX(-50%)}
.envelope-flap{inset:0 0 44%}
.flap-front{background:linear-gradient(150deg,#f5e5d1,#e4cbb3);box-shadow:inset 0 2px 1px #fff7e8}
.flap-front:before,.flap-front:after{content:'';width:35%;height:1px;top:24%;background:#b1946d55;left:7%;transform:rotate(31deg)}
.flap-front:after{left:auto;right:7%;transform:rotate(-31deg)}
.envelope-letter{inset:5% 8%;padding:20px 12px}
.welcome.opening .wax-seal{animation:seal-release 800ms cubic-bezier(.22,.61,.36,1) both}
.welcome.opening .envelope-flap{animation:flap-unfold 1500ms 350ms cubic-bezier(.4,0,.2,1) both}
.welcome.opening .envelope-letter{animation:letter-unveil 1800ms 1200ms cubic-bezier(.22,.61,.36,1) both}
.welcome.opening .envelope-stage{animation:envelope-settle 3200ms cubic-bezier(.22,.61,.36,1) both}
.welcome.opening .cinema-backdrop{animation:garden-approach 4000ms ease both}
.welcome{transition:opacity 900ms ease,visibility 900ms}
@keyframes seal-release{0%{transform:translateZ(14px);opacity:1}50%{transform:translate3d(0,4px,35px) rotate(-5deg);opacity:1}100%{transform:translate3d(0,32px,50px) rotate(-12deg);opacity:0}}
@keyframes flap-unfold{0%{transform:translateZ(8px) rotateX(0)}100%{transform:translateZ(8px) rotateX(168deg)}}
@keyframes letter-unveil{0%{transform:translate3d(0,0,2px)}70%{transform:translate3d(0,-51%,2px)}100%{transform:translate3d(0,-56%,30px)}}
@keyframes envelope-settle{0%,30%{transform:translateX(-50%)}100%{transform:translate(-50%,13%) scale(1.04)}}
@keyframes garden-approach{from{transform:scale(1.06);filter:blur(5px)}to{transform:scale(1.1);filter:blur(3px)}}
@media(max-width:480px){.envelope-stage{left:50%;right:auto;top:35%;width:min(86%,58svh);height:auto}.letter-names{font-size:32px}.letter-date{font-size:6px;letter-spacing:1.4px}}
@media(prefers-reduced-motion:reduce){.welcome{transition:none}.welcome.opening .envelope-stage{opacity:0}}
/* Dove delivery timeline is controlled by Motion, with a shared 3D garden underneath. */
#garden-3d{position:fixed;inset:0;z-index:-1;pointer-events:none;background:#e7e9de}
#garden-3d canvas{display:block;width:100%;height:100%}
.garden-ready .ambient{opacity:0}
.garden-ready .welcome{background:linear-gradient(#fff5e67a,transparent 40%,#f8e6ce66);box-shadow:none}
.garden-ready .cinema-backdrop{display:none}
.garden-ready .experience{background:transparent}
.garden-ready .garden-section{background:none}
.garden-ready .programme-section{background:#e9d6bf66}
.garden-ready .countdown-section{background:#fbf0e6e8;backdrop-filter:blur(8px)}
.garden-ready .countdown-section:before{background:linear-gradient(transparent,#fbf0e6e8)}
.garden-ready .countdown-section:after{background:linear-gradient(#fbf0e6e8,transparent)}
.welcome .envelope-stage{left:0;right:0;margin:auto;top:44%;width:min(70%,46svh);transform:none;opacity:0;isolation:auto}
.welcome.opening .envelope-stage,.welcome.opening .envelope-flap,.welcome.opening .envelope-letter,.welcome.opening .wax-seal,.welcome.opening .envelope-shadow,.welcome.opening .cinema-backdrop{animation:none}
.delivery-bird{position:absolute;left:calc(50% - 160px);top:-152px;width:280px;height:158px;z-index:8;transform-origin:55% 45%;pointer-events:none}
.delivery-bird canvas{width:100%;height:100%;position:relative;z-index:2;filter:drop-shadow(0 5px 4px #503b2422)}
.delivery-ribbon{position:absolute;left:57%;top:45%;height:87px;width:1px;background:#a28157;transform-origin:top;box-shadow:1px 0 #fff3d0;z-index:1}
.envelope-shadow{opacity:0;top:100%;background:#594b3b55}
.welcome-heading{top:12%;color:#694c3e;text-shadow:0 2px 20px #fff9e8}
.welcome-heading .eyebrow{letter-spacing:3px}
.open-invitation{bottom:21%;background:#fff8eee8}
.welcome-note{bottom:15%}
#nature .butterfly{display:none}
@media(max-width:480px){.welcome-heading{top:14%}.welcome .envelope-stage{top:45%;width:min(74%,46svh)}.delivery-bird{width:250px;height:141px;left:calc(50% - 142px);top:-136px}.delivery-ribbon{height:79px}.open-invitation{bottom:21%}.welcome-note{bottom:15%}}
@media(prefers-reduced-motion:reduce){.welcome .envelope-stage{opacity:1}.delivery-bird{display:none}}
/* Natural garden treatment: original floral detail, shallow perspective and soft daylight. */
#garden-3d{max-width:620px;margin:auto;background:transparent}
.garden-ready .ambient{opacity:1;filter:blur(18px);background-image:linear-gradient(#60482f30,#6e503b30),url('assets/garden.webp')}
.garden-ready .welcome{background:linear-gradient(#fff7eac7 0%,#fff7ea55 26%,transparent 50%,#fff6e566 100%)}
.welcome-heading{color:#795342;text-shadow:0 1px 12px #fff7e8}
.envelope-back{background:linear-gradient(165deg,#c5a889,#ecdbc5 65%,#ead6bf);box-shadow:0 14px 30px #4f3c292e;border-color:#ccb095}
.envelope-pocket{background-image:linear-gradient(32deg,#e2cbb4 0%,#f6e7d5 49.6%,#d6b99c 50%,#eedcc6 50.6%,#f4e4cf 100%);background-size:100% 100%;border-color:#d3bba1}
.flap-front{background:linear-gradient(155deg,#fff2df,#e7d1b8);box-shadow:inset 0 1px #fffaf0}
.envelope-letter{background:linear-gradient(110deg,#fffaf1,#f7eddf);border:1px solid #dfcbb5;box-shadow:inset 0 0 0 6px #fff8ef,inset 0 0 0 7px #dcc4ac,0 3px 9px #614a3220}
.wax-seal{background:radial-gradient(ellipse at 30% 28%,#e5b6a3,#bd8874 78%);border-color:#d6a591;box-shadow:0 3px 5px #60432d3d,inset 0 0 0 3px #b9816c80,inset 1px 2px 3px #f5d2bc}
#nature .petal:nth-child(n+6){display:none}
#nature .petal{width:6px;height:10px;filter:blur(.3px)}

.experience{opacity:0;transition:opacity 1s ease}
.opened .experience{opacity:1}
@media(prefers-reduced-motion:reduce){.experience{transition:none}}
/* Keep the sharp garden above the blurred desktop surround. */
.ambient{z-index:-2}
#garden-3d{z-index:-1;background:url('assets/garden.webp') center/cover}
#butterflies-3d{position:fixed;inset:0;max-width:620px;margin:auto;z-index:11;pointer-events:none;overflow:hidden;mask-image:linear-gradient(transparent 65px,#000 115px,#000 94%,transparent)}
#butterflies-3d canvas{display:block;width:100%;height:100%}
/* Short, consistent floral breathing room between the invitation cards. */
.venue-section,.garden-ready .venue-section{min-height:0;padding-top:62px;padding-bottom:38px}
.programme-section,.garden-ready .programme-section{padding-top:38px;padding-bottom:38px;background:transparent}
.blessings-section{padding-top:38px;padding-bottom:54px}
.invitation-section{padding-bottom:88px}
.scroll-cue{bottom:25px}
.countdown-section:before,.countdown-section:after{height:40px}
.garden-ready .countdown-section{backdrop-filter:none;background:#fbf0e6f5}
.garden-ready .countdown-section:before{background:linear-gradient(transparent,#fbf0e6f5)}
.garden-ready .countdown-section:after{background:linear-gradient(#fbf0e6f5,transparent)}
.finale:after{content:'';position:absolute;top:0;left:0;right:0;height:40px;background:linear-gradient(#d4bc9f55,transparent);pointer-events:none}
/* One clean folded flap with a visible reverse, held in front of the letter. */
.envelope-flap{inset:0 0 auto;height:55%;z-index:4;transform:translateZ(8px);transform-origin:50% 0;transform-style:preserve-3d}
.flap-face{clip-path:polygon(0 0,100% 0,100% 2%,52% 98%,50% 100%,48% 98%,0 2%);-webkit-backface-visibility:hidden;backface-visibility:hidden}
.flap-front{background:linear-gradient(175deg,#f9eddb 0%,#eddbc4 85%,#d4b798 100%);filter:none}
.flap-front:before,.flap-front:after{display:none}
.flap-back{background:linear-gradient(0deg,#f5e7d3,#dec6aa);box-shadow:none;transform:rotateY(180deg)}
@media(max-width:480px){.venue-section,.garden-ready .venue-section{padding-top:48px;padding-bottom:28px}.programme-section,.garden-ready .programme-section,.blessings-section{padding-top:28px;padding-bottom:28px}.invitation-section{padding-bottom:80px}}
@media(prefers-reduced-motion:reduce){#butterflies-3d{display:none}}

.bismillah[lang="ar"]{font-family:"Geeza Pro","Noto Naskh Arabic","Traditional Arabic",serif;font-style:normal;font-size:24px;line-height:1.8;letter-spacing:0}
@media(max-width:480px){.bismillah[lang="ar"]{font-size:22px}}

/* Gold calligraphy from the supplied reference. */
.bismillah-calligraphy{display:block;width:min(100%,360px);height:auto;margin:0 auto}

/* Real hummingbird footage, chroma keyed to preserve natural wing movement. */
.delivery-hummingbird{display:block;width:100%;height:100%;position:relative;z-index:2;filter:drop-shadow(0 2px 2px #30433520)}
.delivery-bird .delivery-ribbon{left:78.2%;top:46%;height:87px;transform:rotate(17deg)}
.bird-credit{display:block;text-align:center;font:10px/1.5 sans-serif;color:#80665a;padding:12px;opacity:.65}
body:not(.opened) .bird-credit{display:none}
@media(max-width:480px){.delivery-bird .delivery-ribbon{height:79px}}

/* Explicit paper layers prevent the card from cutting through the envelope. */
.envelope-object{transform-style:flat}
.envelope-back{z-index:0}
.envelope-letter{z-index:1;transform:none;will-change:transform;backface-visibility:hidden}
.envelope-pocket{z-index:3;transform:none}
.envelope-flap{z-index:4}
body.invitation-revealing .experience{opacity:1}
body.invitation-revealing .welcome{opacity:0;pointer-events:none;transition:opacity 1.2s ease}
.music-toggle{position:fixed;bottom:18px;right:max(18px,calc((100vw - 620px)/2 + 18px));z-index:40;border:1px solid #d2b1a5;border-radius:24px;background:#fff8edf0;padding:9px 14px;color:#865e51;font:12px Arial,sans-serif;box-shadow:0 3px 16px #513a2415}

/* The opaque front pocket masks the entire card while it is inside.
   Only the portion lifted above the top edge becomes visible. */
.envelope-pocket{clip-path:none;border-radius:3px;background:linear-gradient(32deg,#e2cbb4 0%,#f6e7d5 49.6%,#d6b99c 50%,#eedcc6 50.6%,#f4e4cf 100%)}
.envelope-object{isolation:isolate}

/* A fixed aperture only reveals paper above the envelope mouth. */
.envelope-card-slot{position:absolute;inset:0;z-index:2;clip-path:polygon(-100% -300%,200% -300%,200% 0%,-100% 0%);pointer-events:none}
.envelope-card-slot.card-extracted{clip-path:none;z-index:6}
.envelope-card-slot .envelope-letter{z-index:1}

/* Ivory stationery: separate side folds, a bottom pocket and a curved flap tip. */
.envelope-back{border-radius:5px;background:linear-gradient(180deg,#bda78d,#e9d9c4 16%,#f2e7d7);border:1px solid #d6c5ae;box-shadow:0 18px 35px #44331f25,0 2px 5px #44331f20}
.envelope-pocket{overflow:hidden;border-radius:4px;border:1px solid #d9c9b4;background:linear-gradient(100deg,#e9dcc9,#faf3e7 48%,#e5d6bf);box-shadow:inset 0 1px 1px #fffaf3}
.envelope-pocket:before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#f8efe0,#e8d8c1);clip-path:polygon(0 0,51% 52%,0 100%,100% 100%,49% 52%,100% 0,100% 100%,0 100%)}
.envelope-pocket:after{content:'';position:absolute;inset:0;clip-path:polygon(0 100%,0 98%,48% 46%,50% 45%,52% 46%,100% 98%,100% 100%);background:linear-gradient(180deg,#d8c5aa 44%,#fff7ea 46%,#f6ecdd 58%,#ecddc7);box-shadow:none}
.envelope-flap{height:56%;filter:drop-shadow(0 2px 1px #75604435);transform:rotateX(0deg)}
.flap-face{clip-path:polygon(0 0,100% 0,100% 1%,54% 94%,52% 97%,50% 98%,48% 97%,46% 94%,0 1%)}
.flap-front{background:linear-gradient(170deg,#fff8ed,#f2e5d1 78%,#dfcaad);box-shadow:inset 0 1px #fffdf6}
.flap-back{transform:rotateX(180deg);background:linear-gradient(180deg,#e5d3ba,#f4e9d7);box-shadow:inset 0 2px 3px #a78a6240}
.wax-seal{width:54px;height:54px;left:calc(50% - 27px);top:calc(54% - 27px);border-width:2px;transform:none;background:radial-gradient(ellipse at 33% 28%,#d9ab94,#b77e68 80%);box-shadow:0 3px 5px #62412d30,inset 0 0 0 3px #b27d6680,inset 1px 2px 3px #f2cbb6}
.wax-seal span{font-size:22px}.wax-seal small{font-size:12px}
/* Reference stationery: embossed botanicals, peach paper and a separate wax seal. */
.welcome .envelope-stage{aspect-ratio:1.2;width:min(70%,46svh)}
.envelope-back{background:linear-gradient(#aa79593d,#f1cfb940),url('assets/envelope-floral.jpg') 45% 25%/350% 350%;border:0;border-radius:2px;box-shadow:0 18px 34px #48351d30,0 2px 4px #3b2a1825}
.envelope-pocket{background:url('assets/envelope-floral.jpg') center/100% 100%;border:0;box-shadow:none;clip-path:polygon(0 0,50% 55%,100% 0,100% 100%,0 100%)}
.envelope-pocket:before,.envelope-pocket:after{display:none}
.envelope-flap{height:55%;filter:drop-shadow(0 2px 2px #7c503638)}
.flap-face{clip-path:polygon(0 0,100% 0,50% 100%);box-shadow:none}
.flap-front{background:url('assets/envelope-floral.jpg') center top/100% 181.818%}
.flap-back{background:linear-gradient(#bb8b6935,#ffe6cd22),url('assets/envelope-floral.jpg') 45% 20%/350% 350%;transform:rotateX(180deg)}
.envelope-card-slot{clip-path:polygon(-100% -300%,200% -300%,200% 0,100% 0,50% 55%,0 0,-100% 0)}
.envelope-card-slot.card-extracted{clip-path:none}
.wax-seal{top:35%;width:32%;height:auto;aspect-ratio:1;left:34%;border:0;border-radius:0;background:url('assets/envelope-wax.png') center/contain no-repeat;box-shadow:none;filter:drop-shadow(1px 4px 3px #69422f44)}
.wax-seal span,.wax-seal small{visibility:hidden}
.envelope-pocket{clip-path:polygon(0 0,3% 11%,50% 60%,97% 11%,100% 0,100% 100%,0 100%)}
.envelope-flap{height:60%}
.flap-face{clip-path:polygon(0 0,100% 0,97% 18.333%,50% 100%,3% 18.333%)}
.flap-front{background-size:100% 166.667%}
.envelope-card-slot{clip-path:polygon(-100% -300%,200% -300%,200% 0,100% 0,97% 11%,50% 60%,3% 11%,0 0,-100% 0)}
.envelope-card-slot.card-extracted{clip-path:none}
.wax-seal{top:39%}

/* The card is physically layered inside the envelope at every moment.
   The closed flap covers the mouth, and the pocket masks the lower paper. */
.envelope-card-slot{visibility:visible;opacity:1}
.envelope-card-slot .envelope-letter{inset:12% 8% 8%}
#rsvp{scroll-margin-top:85px}#rsvp .rsvp-paper{text-align:left}#rsvp h2,#rsvp .eyebrow{text-align:center}#rsvp label{display:block;margin:16px 0 6px}#rsvp input:not([type=radio]),#rsvp textarea{box-sizing:border-box;width:100%;font:inherit;padding:12px;color:inherit;background:#fffaf4;border:1px solid #dcc5b6;border-radius:6px}#rsvp fieldset{border:0;padding:0;margin:22px 0}#rsvp fieldset label{padding:10px;border:1px solid #dcc5b6;border-radius:6px}#rsvp input[type=radio]{accent-color:#a77665;margin-right:8px}#rsvp button{margin-top:20px;border:0;cursor:pointer}#rsvp .trap{position:absolute;left:-10000px}#rsvp-status{font-size:17px;line-height:1.6}

/* The mouth opens with the flap, revealing the already seated insert. */
.envelope-card-slot{clip-path:polygon(-100% -300%,200% -300%,200% 0%,100% 0%,97% 0%,50% 0%,3% 0%,0% 0%,-100% 0%)}
.envelope-card-slot.card-extracted{clip-path:none!important}
