:root{
  --page:#f3ede1;--paper:#fbf6ed;--paper2:#efe4d1;--ink:#4f3f37;--muted:#7c6f67;
  --teal:#356f73;--teal2:#21494d;--rose:#b96574;--gold:#c8a36b;--line:#d8c7b0;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--page);color:var(--ink);font-family:"Kalpurush",sans-serif;overflow-x:hidden}
body.locked{overflow:hidden}
button,input,textarea,select{font:inherit}
button,a{cursor:pointer}
a{color:inherit}
.en{font-family:"Cormorant Garamond","Kalpurush",serif}
.viewport-stage{min-height:100vh;padding:0 14px}
.invite-column{position:relative;width:min(100%,430px);margin:0 auto;background:var(--paper);box-shadow:0 0 38px #5d4f4030;overflow:hidden}
.section{position:relative;padding:70px 28px;overflow:hidden}
.section+.section{border-top:1px solid #ffffff}
.kicker{font:600 9px/1 Arial,sans-serif;letter-spacing:.22em;text-transform:uppercase;color:var(--rose);text-align:center}
h1,h2,h3,p{margin-top:0}
.section-title{font-size:34px;line-height:1.05;font-weight:500;text-align:center;margin:10px 0 14px}
.body-copy{font-size:14px;line-height:1.95;color:var(--muted);text-align:center;max-width:340px;margin:0 auto}
.ornament{width:66px;height:1px;background:var(--gold);margin:18px auto;position:relative}
.ornament:before,.ornament:after{content:"";position:absolute;top:-2px;width:5px;height:5px;border-radius:50%;background:var(--gold)}
.ornament:before{left:-2px}.ornament:after{right:-2px}

/* Opening cover */
.cover-screen{position:fixed;z-index:200;inset:0;background:var(--page);display:grid;place-items:center;transition:opacity .8s ease,visibility .8s ease}
.cover-screen.hide{opacity:0;visibility:hidden;pointer-events:none}
.cover-shell{position:relative;width:min(100vw,430px);height:100dvh;min-height:620px;background:#efe6d8;overflow:hidden;box-shadow:0 0 40px #4f44362f;perspective:1500px}
.cover-bg{position:absolute;inset:0;background-size:cover;background-position:center;filter:saturate(.88) brightness(.74);transform:scale(1.05);animation:coverDrift 10s ease-in-out infinite alternate}
.cover-tint{position:absolute;inset:0;background:linear-gradient(#fff7ea55,#21494d55 45%,#172d32b8)}
.cover-paper{position:absolute;inset:9% 8% 7%;background:linear-gradient(180deg,#fffaf2,#f0e2d2);border:1px solid #ffffffaa;border-radius:160px 160px 24px 24px;box-shadow:0 28px 70px #182d3290;overflow:hidden;transform-style:preserve-3d}
.cover-paper:before,.cover-paper:after{content:"";position:absolute;left:-8%;right:-8%;height:38%;background:
radial-gradient(circle at 15% 30%,#fff 0 2px,transparent 3px),
radial-gradient(circle at 70% 45%,#fff 0 2px,transparent 3px),
repeating-linear-gradient(135deg,#f8eee0 0 8px,#efe0cf 8px 16px);
opacity:.72;transition:transform 1.35s cubic-bezier(.2,.8,.2,1),opacity .9s ease}
.cover-paper:before{top:0;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top}
.cover-paper:after{bottom:0;clip-path:polygon(0 100%,100% 100%,50% 0);transform-origin:bottom}
.cover-center{position:absolute;z-index:6;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}
.cover-seal{width:130px;height:130px;border-radius:50%;padding:9px;background:linear-gradient(145deg,#e8c88d,#a97837);box-shadow:0 13px 35px #60471c66,0 0 0 7px #f4dfb7;transition:transform 1s ease,opacity .8s ease}
.cover-seal img{width:100%;height:100%;object-fit:cover;border-radius:50%;filter:saturate(.88) contrast(1.05)}
.cover-date{margin-top:26px;font:600 10px Arial;letter-spacing:.24em;color:#7c5e4d}
.cover-name{font:600 58px/.8 "Cormorant Garamond","Kalpurush";color:#5d4a40;margin:12px 0 4px}
.cover-title{font-size:16px;color:#805d5d;margin:0 0 20px}
.cover-open{display:flex;align-items:center;gap:9px;border:1px solid #9c7b633d;background:#fffaf4;color:#5c4940;border-radius:999px;padding:11px 18px;box-shadow:0 8px 22px #755d4730;transition:.25s}
.cover-open:hover{transform:translateY(-2px)}
.cover-hint{position:absolute;z-index:8;bottom:20px;left:0;right:0;text-align:center;font-size:11px;color:#725c50;animation:hintPulse 1.6s ease-in-out infinite}
.cover-screen.open .cover-paper:before{transform:rotateX(150deg) translateY(-30%);opacity:.12}
.cover-screen.open .cover-paper:after{transform:rotateX(-150deg) translateY(30%);opacity:.12}
.cover-screen.open .cover-seal{transform:scale(.55) rotate(18deg);opacity:0}
.cover-screen.open .cover-center{animation:coverCenterOut 1.2s .15s forwards}
.cover-screen.open .cover-bg{animation:coverBurst 1.65s ease forwards}
.cover-confetti{position:absolute;z-index:9;inset:0;pointer-events:none}
.cover-confetti i{position:absolute;top:-12%;width:8px;height:20px;border-radius:4px;background:#d99a62;opacity:0}
.cover-confetti i:nth-child(3n){background:#7bb8b7}.cover-confetti i:nth-child(3n+1){background:#c9758a}
.cover-confetti i:nth-child(1){left:8%}.cover-confetti i:nth-child(2){left:15%}.cover-confetti i:nth-child(3){left:22%}.cover-confetti i:nth-child(4){left:29%}.cover-confetti i:nth-child(5){left:36%}.cover-confetti i:nth-child(6){left:43%}.cover-confetti i:nth-child(7){left:50%}.cover-confetti i:nth-child(8){left:57%}.cover-confetti i:nth-child(9){left:64%}.cover-confetti i:nth-child(10){left:71%}.cover-confetti i:nth-child(11){left:78%}.cover-confetti i:nth-child(12){left:86%}
.cover-screen.open .cover-confetti i{animation:confettiFall 1.8s ease-out forwards}
.cover-screen.open .cover-confetti i:nth-child(2n){animation-delay:.12s}.cover-screen.open .cover-confetti i:nth-child(3n){animation-delay:.24s}

/* floating controls */
.music-fab,.scroll-fab{position:fixed;z-index:120;border:0;box-shadow:0 10px 26px #3e302733}
.music-fab{right:22px;bottom:20px;width:48px;height:48px;border-radius:50%;background:#403a38;color:#fff;font-size:18px}
.music-fab.on{background:var(--teal)}
.scroll-fab{left:50%;bottom:19px;transform:translateX(-50%);min-height:44px;border-radius:999px;background:#fffaf2e8;color:#5f5148;border:1px solid #d8c7b0;padding:0 15px;display:flex;align-items:center;gap:9px;backdrop-filter:blur(10px);font-size:11px}
.scroll-fab b{font-size:16px;animation:scrollBob 1.2s ease-in-out infinite}

/* hero */
.hero{min-height:760px;padding:0;background:#d8c5aa;color:#fff;display:flex;align-items:flex-end}
.hero-image{position:absolute;inset:0}
.hero-image img{width:100%;height:100%;object-fit:cover;filter:saturate(.78) brightness(.72)}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(180deg,#17343a1c 0,#17343a28 35%,#1c292ad9 100%)}
.hero-content{position:relative;z-index:3;width:100%;padding:75px 28px 58px;text-align:center}
.hero-content .kicker{color:#f5d9aa}
.hero-name{font:600 66px/.82 "Cormorant Garamond","Kalpurush";margin:10px 0 12px;color:#fff6e9}
.hero-sub{font-size:21px;margin-bottom:14px}
.hero-date{font:600 11px Arial;letter-spacing:.18em;color:#f6d8a6}
.hero-scroll{margin:24px auto 0;width:32px;height:52px;border:1px solid #ffffff73;border-radius:999px;display:grid;place-items:center}
.hero-scroll:after{content:"";width:4px;height:9px;border-radius:4px;background:#fff;animation:mouseDot 1.4s ease-in-out infinite}

/* countdown */
.countdown-section{background:
linear-gradient(#f0e5d5e8,#f0e5d5e8),
radial-gradient(circle at 20% 20%,#c5a77d55 0 2px,transparent 3px);
text-align:center}
.count-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:28px}
.count-box{padding:16px 4px;border-radius:12px;background:#ded0bc;color:#5a4a40;box-shadow:inset 0 0 0 1px #ffffff66}
.count-box strong{display:block;font:600 30px "Cormorant Garamond","Kalpurush";font-variant-numeric:tabular-nums}
.count-box span{font:600 8px Arial;letter-spacing:.14em;text-transform:uppercase}

/* venue */
.venue-section{background:#fffaf4;text-align:center}
.venue-photo{width:250px;height:300px;margin:24px auto 18px;border-radius:150px 150px 22px 22px;overflow:hidden;box-shadow:0 18px 45px #694f3324}
.venue-photo img{width:100%;height:100%;object-fit:cover}
.venue-name{font:600 30px/1 "Cormorant Garamond","Kalpurush";color:#6b5749;margin-bottom:8px}
.venue-address{font-size:12px;line-height:1.7;color:#7a6e67}
.map-btn{display:inline-flex;align-items:center;gap:8px;margin-top:16px;text-decoration:none;border:1px solid #d4bfa5;border-radius:999px;padding:11px 15px;background:#f5e8d9;font-size:11px;color:#6c5749}

/* special */
.special-section{background:repeating-linear-gradient(90deg,#b8d0b6 0 18px,#f7efe3 18px 36px);padding:70px 22px}
.special-card{background:#fff9ef;border:1px solid #c8b8a4;border-radius:120px 120px 18px 18px;padding:46px 28px 36px;text-align:center;box-shadow:0 16px 35px #6b5a4730}
.special-card h3{font:600 28px "Cormorant Garamond","Kalpurush";color:#8e5f60;margin-bottom:14px}

/* plan */
.plan-section{background:#fffaf5;text-align:center}
.plan-list{margin-top:28px;display:grid;gap:24px}
.plan-item{position:relative;padding:0 18px}
.plan-time{display:inline-block;border-radius:999px;background:#c8a36b;color:#fff;padding:4px 10px;font:600 9px Arial;letter-spacing:.08em}
.plan-item h3{font:600 26px "Cormorant Garamond","Kalpurush";margin:7px 0 4px;color:#5e5048}
.plan-item p{font-size:12px;color:#7a6c64;margin:0}

/* menu */
.menu-section{background:#f9f1e8;text-align:center}
.menu-board{margin-top:26px;padding:28px 18px 0;border-top:1px solid #cdbda8}
.menu-block{margin-bottom:25px}
.menu-block h3{font:600 27px "Cormorant Garamond","Kalpurush";margin:0 0 6px}
.menu-block p{font-size:11px;line-height:1.7;color:#766b65;margin:0}
.menu-art{height:120px;margin:20px -28px -70px;background:
linear-gradient(135deg,transparent 0 38%,#375e8755 39% 40%,transparent 41% 100%),
linear-gradient(45deg,transparent 0 50%,#375e8755 51% 52%,transparent 53% 100%);
opacity:.55}

/* gallery */
.gallery-section{background:#ecd8c5;text-align:center}
.gallery-stack{display:grid;gap:12px;margin-top:24px}
.gallery-card{position:relative;height:260px;border:0;padding:0;border-radius:20px;overflow:hidden;background:#ddd;box-shadow:0 14px 35px #6e514330}
.gallery-card img{width:100%;height:100%;object-fit:cover;transition:transform .8s ease}
.gallery-card:hover img{transform:scale(1.05)}
.gallery-card span{position:absolute;left:12px;bottom:12px;border-radius:999px;background:#fff7eddd;color:#5b4b42;padding:6px 10px;font-size:10px}

/* gifts faq rsvp */
.gifts-section{background:#fff9f2;text-align:center}
.gift-card{margin-top:20px;border:1px solid #e0cdb9;border-radius:16px;padding:24px;background:#fffdf9}
.gift-card strong{display:block;font:600 25px "Cormorant Garamond","Kalpurush";margin-bottom:8px}
.faq-section{background:#f8efe6}
.faq-list{display:grid;gap:9px;margin-top:24px}
.faq-item{border:1px solid #e0d2c2;border-radius:12px;background:#fffaf4;overflow:hidden}
.faq-q{width:100%;border:0;background:transparent;color:#54473f;text-align:left;padding:14px 15px;display:flex;justify-content:space-between;align-items:center;font-size:12px}
.faq-a{max-height:0;overflow:hidden;transition:max-height .35s ease,padding .35s ease;padding:0 15px;font-size:12px;line-height:1.7;color:#766961}
.faq-item.open .faq-a{max-height:120px;padding:0 15px 14px}
.rsvp-section{background:#fffaf5}
.rsvp-form{margin-top:24px;border:1px solid #e5d6c6;border-radius:16px;padding:18px;background:#fffdf9;box-shadow:0 16px 36px #725d4820}
.field{margin-bottom:14px}
.field label{display:block;font-size:10px;color:#7b6b61;margin-bottom:6px}
.field input,.field textarea,.field select{width:100%;border:1px solid #e3d6c7;border-radius:8px;background:#fff;padding:10px 11px;color:#4f443e;font-family:"Kalpurush",sans-serif}
.field textarea{min-height:80px;resize:vertical}
.radio-row{display:flex;gap:15px;font-size:11px}
.rsvp-submit{width:100%;border:0;border-radius:8px;background:#dff2a7;color:#51603a;padding:11px;font-weight:600}
.rsvp-result{min-height:22px;text-align:center;font-size:12px;color:#5d6d45;margin-top:10px}
.footer{padding:38px 25px 68px;text-align:center;background:#f7efe5;color:#8a7a70;font-size:10px}

/* reveal motion */
.reveal{opacity:0;transform:translateY(34px);transition:opacity .8s ease,transform .9s cubic-bezier(.2,.8,.2,1)}
.reveal.in{opacity:1;transform:none}
.reveal-left{opacity:0;transform:translateX(-35px);transition:.85s ease}
.reveal-left.in{opacity:1;transform:none}
.reveal-right{opacity:0;transform:translateX(35px);transition:.85s ease}
.reveal-right.in{opacity:1;transform:none}
.pop{opacity:0;transform:scale(.88);transition:.75s cubic-bezier(.2,.8,.2,1)}
.pop.in{opacity:1;transform:none}

@keyframes coverDrift{to{transform:scale(1.12) translateY(-1.5%)}}
@keyframes coverCenterOut{to{opacity:0;transform:translateY(-28px) scale(.96)}}
@keyframes coverBurst{to{transform:scale(1.2);filter:saturate(1.15) brightness(.9)}}
@keyframes confettiFall{0%{opacity:0;transform:translateY(-10vh) rotate(0)}15%{opacity:1}100%{opacity:0;transform:translateY(112vh) rotate(720deg)}}
@keyframes hintPulse{50%{opacity:.45;transform:translateY(3px)}}
@keyframes scrollBob{50%{transform:translateY(4px)}}
@keyframes mouseDot{0%{transform:translateY(-8px);opacity:0}35%{opacity:1}100%{transform:translateY(8px);opacity:0}}

@media(max-width:520px){
  .viewport-stage{padding:0}.invite-column{width:100%;box-shadow:none}
  .music-fab{right:14px;bottom:14px}.scroll-fab{bottom:14px}
  .cover-shell{width:100vw}.section{padding-left:22px;padding-right:22px}
  .hero{min-height:100dvh}
}
@media(min-width:521px){
  .music-fab{right:max(22px,calc((100vw - 430px)/2 + 18px))}
}
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* v4 luxury envelope opening */
.cover-screen{background:#f4eee3}
.luxury-stage{position:relative;width:min(100vw,430px);height:100dvh;min-height:680px;margin:auto;overflow:hidden;background:
radial-gradient(circle at 50% 28%,#fffaf2 0 18%,#eee2d2 54%,#ddd0bd 100%);box-shadow:0 0 50px #6e5a4333}
.ambient-light{position:absolute;border-radius:50%;filter:blur(34px);opacity:.55;animation:ambientFloat 5s ease-in-out infinite alternate}
.ambient-light.a1{width:180px;height:180px;left:-50px;top:12%;background:#ffe0a8}.ambient-light.a2{width:210px;height:210px;right:-80px;bottom:13%;background:#fff7de;animation-delay:-2s}
.gold-dust{position:absolute;inset:0;pointer-events:none}
.gold-dust i{position:absolute;width:4px;height:4px;border-radius:50%;background:#f1c777;box-shadow:0 0 10px #f1c777;opacity:.22;animation:dustRise 7s linear infinite}
.gold-dust i:nth-child(1){left:8%;top:82%;animation-delay:-1s}.gold-dust i:nth-child(2){left:15%;top:65%;animation-delay:-4s}.gold-dust i:nth-child(3){left:22%;top:91%;animation-delay:-2s}.gold-dust i:nth-child(4){left:28%;top:72%;animation-delay:-5s}.gold-dust i:nth-child(5){left:34%;top:88%;animation-delay:-3s}.gold-dust i:nth-child(6){left:40%;top:76%;animation-delay:-6s}.gold-dust i:nth-child(7){left:47%;top:94%;animation-delay:-1.5s}.gold-dust i:nth-child(8){left:54%;top:70%;animation-delay:-4.5s}.gold-dust i:nth-child(9){left:60%;top:86%;animation-delay:-2.5s}.gold-dust i:nth-child(10){left:66%;top:74%;animation-delay:-5.5s}.gold-dust i:nth-child(11){left:72%;top:92%;animation-delay:-3.5s}.gold-dust i:nth-child(12){left:78%;top:68%;animation-delay:-6.5s}.gold-dust i:nth-child(13){left:84%;top:84%;animation-delay:-2s}.gold-dust i:nth-child(14){left:90%;top:73%;animation-delay:-5s}.gold-dust i:nth-child(15){left:18%;top:53%;animation-delay:-6s}.gold-dust i:nth-child(16){left:38%;top:58%;animation-delay:-3s}.gold-dust i:nth-child(17){left:63%;top:55%;animation-delay:-4s}.gold-dust i:nth-child(18){left:82%;top:60%;animation-delay:-1s}
.envelope-object{position:absolute;left:50%;top:46%;width:86%;height:69%;transform:translate(-50%,-50%);perspective:1600px;filter:drop-shadow(0 28px 30px #7e694c33);animation:envelopeFloat 4s ease-in-out infinite}
.env-shadow{position:absolute;left:12%;right:12%;bottom:-5%;height:7%;background:#6e5e4830;filter:blur(18px);border-radius:50%}
.embossed{position:absolute;inset:0;background:
linear-gradient(145deg,#fffaf1,#eadfce);
background-image:url('/assets/art/birthday-envelope-ornament.svg'),linear-gradient(145deg,#fffaf1,#eadfce);
background-size:100% 100%,100% 100%;background-repeat:no-repeat}
.env-back{z-index:1;border-radius:24px;box-shadow:inset 0 0 0 1px #fff9ef,inset 0 0 34px #cdbb9d66}
.invitation-card{position:absolute;z-index:2;left:8%;right:8%;top:10%;height:72%;background:#fffaf2;border-radius:18px;overflow:hidden;box-shadow:0 18px 50px #604f3a42;transform:translateY(17%);transition:transform 1.35s cubic-bezier(.18,.82,.2,1),box-shadow 1s ease}
.invitation-card img{width:100%;height:62%;object-fit:cover;filter:saturate(.9) contrast(1.03)}
.inside-card-copy{height:38%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:#fffaf2}
.inside-card-copy span{font:600 8px Arial;letter-spacing:.24em;color:#b18550}
.inside-card-copy strong{font:600 40px/.9 "Cormorant Garamond","Kalpurush";color:#5a4639;margin:7px 0}
.inside-card-copy small{font:600 9px Arial;letter-spacing:.16em;color:#816d5e}
.env-left,.env-right,.env-bottom,.env-top{z-index:4;backface-visibility:hidden;transform-style:preserve-3d}
.env-left{clip-path:polygon(0 0,54% 50%,0 100%);transform-origin:left center;transition:transform 1.1s .72s ease,opacity 1s .72s}
.env-right{clip-path:polygon(100% 0,46% 50%,100% 100%);transform-origin:right center;transition:transform 1.1s .72s ease,opacity 1s .72s}
.env-bottom{clip-path:polygon(0 100%,100% 100%,50% 43%);transform-origin:bottom center;transition:transform 1.1s .82s ease,opacity 1s .82s}
.env-top{z-index:6;clip-path:polygon(0 0,100% 0,50% 58%);transform-origin:top center;transition:transform 1.25s .48s cubic-bezier(.2,.75,.2,1)}
.gold-vein{position:absolute;left:50%;top:7%;width:3px;height:46%;transform:translateX(-50%);background:linear-gradient(180deg,transparent,#dfb363,#f9e3ab,#c58d38,transparent);filter:drop-shadow(0 0 7px #f6d386);opacity:.48;animation:veinGlow 2.2s ease-in-out infinite}
.ornament-glow{position:absolute;z-index:5;inset:3%;background:url('/assets/art/birthday-envelope-ornament.svg') center/100% 100% no-repeat;filter:drop-shadow(0 0 6px #e7bb67);opacity:.18;animation:ornamentGlow 2.4s ease-in-out infinite;pointer-events:none}
.wax-seal{position:absolute;z-index:9;left:50%;top:50%;width:104px;height:104px;border:0;border-radius:50%;transform:translate(-50%,-50%);background:
radial-gradient(circle at 34% 28%,#ffe5a9 0 5%,transparent 6%),
radial-gradient(circle,#e9bd65 0 48%,#b87b2c 52% 66%,#7b4f17 70% 100%);
box-shadow:0 12px 28px #68400f66,0 0 0 7px #eed39d,0 0 34px #f1c66a88;color:#694015;animation:sealPulse 1.8s ease-in-out infinite}
.wax-seal:after{content:"";position:absolute;inset:-12px;border:1px solid #e5b85b99;border-radius:50%;animation:sealRing 1.8s ease-out infinite}
.seal-ring{position:absolute;inset:15px;border:2px solid #8d5b1b;border-radius:50%;box-shadow:inset 0 0 0 3px #f0cd83}
.seal-monogram{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);font:600 46px/.8 "Cormorant Garamond","Kalpurush";text-shadow:0 1px #ffe9bd}
.seal-star{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);font-size:14px}
.seal-burst{position:absolute;z-index:8;inset:0;pointer-events:none}
.seal-burst i{position:absolute;left:50%;top:50%;width:6px;height:26px;border-radius:4px;background:#f3ca73;opacity:0;transform-origin:center 95px}
.seal-burst i:nth-child(2){transform:rotate(30deg)}.seal-burst i:nth-child(3){transform:rotate(60deg)}.seal-burst i:nth-child(4){transform:rotate(90deg)}.seal-burst i:nth-child(5){transform:rotate(120deg)}.seal-burst i:nth-child(6){transform:rotate(150deg)}.seal-burst i:nth-child(7){transform:rotate(180deg)}.seal-burst i:nth-child(8){transform:rotate(210deg)}.seal-burst i:nth-child(9){transform:rotate(240deg)}.seal-burst i:nth-child(10){transform:rotate(270deg)}.seal-burst i:nth-child(11){transform:rotate(300deg)}.seal-burst i:nth-child(12){transform:rotate(330deg)}
.luxury-copy{position:absolute;z-index:12;left:0;right:0;bottom:2.6%;text-align:center;padding:0 20px;transition:opacity .7s ease,transform .7s ease}
.lux-kicker{font:600 8px Arial;letter-spacing:.25em;color:#9a7645}
.luxury-copy h1{font:600 34px/.9 "Cormorant Garamond","Kalpurush";color:#604a3c;margin:6px 0}
.luxury-copy p{font-size:12px;color:#806e60;margin:0 0 8px}
.tap-open{border:0;background:transparent;color:#7b5d39;font-size:11px;padding:7px 12px}
.tap-open b{display:inline-block;animation:sealTwinkle 1.5s ease-in-out infinite}
.cover-screen.opening .wax-seal{animation:sealPop .7s cubic-bezier(.2,.9,.2,1) forwards}
.cover-screen.opening .seal-burst i{animation:sealSpark .9s ease-out forwards}
.cover-screen.opening .env-top{transform:rotateX(176deg) translateY(-2%)}
.cover-screen.opening .env-left{transform:rotateY(-86deg) translateX(-12%);opacity:.22}
.cover-screen.opening .env-right{transform:rotateY(86deg) translateX(12%);opacity:.22}
.cover-screen.opening .env-bottom{transform:rotateX(-66deg) translateY(18%);opacity:.18}
.cover-screen.opening .invitation-card{transform:translateY(-20%) scale(1.03);box-shadow:0 28px 70px #4d39247a;transition-delay:1.02s}
.cover-screen.opening .ornament-glow{opacity:.7;animation:ornamentFlash 1s ease-out forwards}
.cover-screen.opening .luxury-copy{opacity:0;transform:translateY(18px)}
.cover-screen.reveal-card .invitation-card{transform:translateY(-30%) scale(1.06)}
.cover-screen.reveal-card .gold-dust i{animation-duration:2.6s}
.cover-screen.hide{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .75s ease,visibility .75s ease}

/* visible motion through the invitation */
.hero-image img{animation:heroKenBurns 12s ease-in-out infinite alternate}
.countdown-section .in .count-box{animation:countGlow 2.8s ease-in-out infinite}
.countdown-section .in .count-box:nth-child(2){animation-delay:.2s}.countdown-section .in .count-box:nth-child(3){animation-delay:.4s}.countdown-section .in .count-box:nth-child(4){animation-delay:.6s}
.venue-section .venue-photo.in img{animation:photoFloat 5s ease-in-out infinite}
.special-section .special-card.in{animation:specialBreathe 4.5s ease-in-out infinite}
.plan-item.in .plan-time{animation:timePulse 2.4s ease-in-out infinite}
.menu-section .reveal.in .menu-art{animation:menuDrift 5s ease-in-out infinite alternate}
.gallery-card.in img{animation:galleryKen 8s ease-in-out infinite alternate}
.gift-card.in{animation:giftGlow 4s ease-in-out infinite}
.rsvp-section .reveal.in .rsvp-form{animation:formRise .9s cubic-bezier(.2,.8,.2,1) both}

@keyframes ambientFloat{to{transform:translate(18px,-14px) scale(1.08)}}
@keyframes dustRise{0%{transform:translateY(0) scale(.8);opacity:0}15%{opacity:.5}100%{transform:translateY(-78vh) scale(1.2);opacity:0}}
@keyframes envelopeFloat{50%{transform:translate(-50%,-51.2%)}}
@keyframes veinGlow{50%{opacity:1;filter:drop-shadow(0 0 12px #ffd989)}}
@keyframes ornamentGlow{50%{opacity:.38;filter:drop-shadow(0 0 12px #e6b65d)}}
@keyframes sealPulse{50%{transform:translate(-50%,-50%) scale(1.055);box-shadow:0 12px 28px #68400f66,0 0 0 8px #eed39d,0 0 48px #f1c66aaa}}
@keyframes sealRing{from{opacity:.75;transform:scale(.8)}to{opacity:0;transform:scale(1.35)}}
@keyframes sealTwinkle{50%{transform:rotate(90deg) scale(1.25)}}
@keyframes sealPop{0%{transform:translate(-50%,-50%) scale(1)}45%{transform:translate(-50%,-50%) scale(1.28) rotate(8deg)}100%{transform:translate(-50%,-50%) scale(.1) rotate(28deg);opacity:0}}
@keyframes sealSpark{0%{opacity:0;translate:0 0}15%{opacity:1}100%{opacity:0;translate:0 -110px}}
@keyframes ornamentFlash{0%{opacity:.2}40%{opacity:1;filter:drop-shadow(0 0 22px #ffd983)}100%{opacity:.1}}
@keyframes heroKenBurns{to{transform:scale(1.08) translateY(-1.5%)}}
@keyframes countGlow{50%{box-shadow:0 0 0 1px #fff7e7,0 0 18px #d4b47855;transform:translateY(-3px)}}
@keyframes photoFloat{50%{transform:scale(1.035) translateY(-5px)}}
@keyframes specialBreathe{50%{transform:translateY(-4px);box-shadow:0 22px 45px #6b5a4742}}
@keyframes timePulse{50%{transform:scale(1.08);box-shadow:0 0 16px #c8a36b66}}
@keyframes menuDrift{to{transform:translateX(10px) translateY(-4px)}}
@keyframes galleryKen{to{transform:scale(1.07)}}
@keyframes giftGlow{50%{box-shadow:0 20px 42px #d9bb8e38}}
@keyframes formRise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

@media(max-width:520px){
  .envelope-object{width:88%;height:68%;top:45%}
  .wax-seal{width:96px;height:96px}
  .luxury-copy{bottom:2%}
}

/* visual QA refinements after rendered screenshot */
.luxury-stage{min-height:100dvh}
.env-top{background-image:url('/assets/art/birthday-envelope-ornament.svg'),linear-gradient(155deg,#fffaf3 0%,#e9dcc7 100%);filter:drop-shadow(0 10px 8px #8d745238)}
.env-left{background-image:url('/assets/art/birthday-envelope-ornament.svg'),linear-gradient(105deg,#f8efe1 0%,#e5d6c0 100%);filter:drop-shadow(7px 0 7px #8d74522b)}
.env-right{background-image:url('/assets/art/birthday-envelope-ornament.svg'),linear-gradient(255deg,#f8efe1 0%,#e5d6c0 100%);filter:drop-shadow(-7px 0 7px #8d74522b)}
.env-bottom{background-image:url('/assets/art/birthday-envelope-ornament.svg'),linear-gradient(20deg,#efe2cf,#fff8ee);filter:drop-shadow(0 -7px 7px #8d745228)}
.env-top:before,.env-top:after{content:"";position:absolute;top:0;width:66%;height:2px;background:linear-gradient(90deg,transparent,#c9b18d99,#fff9ebaa);transform-origin:top center}
.env-top:before{left:0;transform:rotate(31deg) translate(8%,88px)}.env-top:after{right:0;transform:rotate(-31deg) translate(-8%,88px)}
@media(max-height:650px){.envelope-object{height:72%;top:43%}.luxury-copy p{display:none}.luxury-copy{bottom:1%}.wax-seal{width:84px;height:84px}.seal-monogram{font-size:39px}.seal-star{bottom:13px}}

/* responsive refinement: narrow mobile invitation, wider desktop story */
.scroll-fab{
  width:46px;height:46px;min-height:46px;padding:0;border-radius:50%;
  left:auto;right:22px;bottom:76px;transform:none;justify-content:center;
}
.scroll-fab span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.scroll-fab b{font-size:18px;line-height:1}
@media(max-width:520px){
  .scroll-fab{left:14px;right:auto;bottom:14px}
}
@media(min-width:900px){
  .viewport-stage{padding:0 42px}
  .invite-column{width:min(calc(100vw - 190px),780px);max-width:780px}
  .section{padding:92px 72px}
  .hero{min-height:820px}
  .hero-content{padding:100px 70px 74px}
  .hero-name{font-size:82px}
  .hero-sub{font-size:25px}
  .body-copy{max-width:560px;font-size:15px}
  .section-title{font-size:42px}
  .count-grid{max-width:560px;margin:32px auto 0}
  .venue-photo{width:330px;height:390px}
  .special-card{max-width:620px;margin:0 auto;padding:58px 54px 46px}
  .plan-list{grid-template-columns:1fr 1fr;gap:30px 42px;max-width:620px;margin:34px auto 0}
  .plan-item{padding:0 12px}
  .menu-board{max-width:560px;margin:30px auto 0}
  .gallery-stack{grid-template-columns:repeat(3,1fr);gap:14px}
  .gallery-card{height:300px}
  .gift-card,.faq-list,.rsvp-form{max-width:600px;margin-left:auto;margin-right:auto}
  .music-fab{right:max(24px,calc((100vw - 780px)/2 + 24px))}
  .scroll-fab{right:max(24px,calc((100vw - 780px)/2 + 24px));bottom:78px}
}

/* v7 restored premium navigation controls */
.floating-dock{
  position:fixed;z-index:125;
  right:18px;top:50%;transform:translateY(-50%);
  display:flex;flex-direction:column;align-items:center;gap:7px;
  padding:9px 7px;border:1px solid #ffffff45;border-radius:24px;
  background:#223d3fda;box-shadow:0 14px 34px #2e251d38;
  backdrop-filter:blur(14px);
}
.floating-dock button{
  width:40px;height:40px;border:0;border-radius:50%;
  background:#fffaf2;color:#594c43;font-size:17px;
  display:grid;place-items:center;transition:.2s ease;
}
.floating-dock button:hover:not(:disabled){transform:translateY(-2px);background:#f2dfc5}
.floating-dock button:disabled{opacity:.3;cursor:default}
.floating-dock button.on{background:var(--teal);color:#fff}
.dock-count{min-width:40px;text-align:center;color:#fff;font:600 9px Arial;letter-spacing:.04em;padding:2px 0}
.dock-divider{width:28px;height:1px;background:#ffffff42;margin:2px 0}
@media(min-width:900px){
  .floating-dock{right:max(24px,calc((100vw - 780px)/2 - 58px))}
}
@media(max-width:899px){
  .floating-dock{
    left:10px;right:10px;top:auto;bottom:10px;transform:none;
    height:58px;flex-direction:row;justify-content:center;
    gap:6px;padding:7px 9px;border-radius:22px;
  }
  .floating-dock button{width:40px;height:40px;flex:0 0 40px}
  .dock-count{min-width:42px}
  .dock-divider{width:1px;height:28px;margin:0 2px}
  .footer{padding-bottom:92px}
}

.floating-dock .dock-link{width:40px;height:40px;border-radius:50%;background:#fffaf2;color:#594c43;display:grid;place-items:center;text-decoration:none;font:600 14px Arial;transition:.2s ease}.floating-dock .dock-link:hover{transform:translateY(-2px);background:#f2dfc5}

/* v8 per-section mouse scroll cues */
.section{padding-bottom:112px}
.section-mouse-next{
  position:absolute;z-index:12;left:50%;bottom:24px;transform:translateX(-50%);
  width:74px;min-height:78px;border:0;background:transparent;color:#6f5f54;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  opacity:.92;transition:transform .2s ease,opacity .2s ease;
}
.section-mouse-next:hover{transform:translateX(-50%) translateY(-3px);opacity:1}
.mouse-shell{
  width:34px;height:52px;border:2px solid currentColor;border-radius:18px;
  display:block;position:relative;background:#fffaf2cc;
  box-shadow:0 6px 18px #5d49382c, inset 0 0 0 2px #ffffffa8;
}
.mouse-shell:before{
  content:"";position:absolute;left:50%;top:8px;transform:translateX(-50%);
  width:3px;height:11px;border-radius:3px;background:currentColor;opacity:.35;
}
.mouse-shell i{
  position:absolute;left:50%;top:10px;transform:translateX(-50%);
  width:5px;height:10px;border-radius:4px;background:currentColor;
  animation:mouseWheelClear 1.35s ease-in-out infinite;
}
.section-mouse-next small{
  font:700 8px/1 Arial,sans-serif;letter-spacing:.18em;color:currentColor;
  margin-top:2px;
}
.section-mouse-next b{
  font:600 14px/1 Arial,sans-serif;color:currentColor;
  animation:mouseArrowClear 1.35s ease-in-out infinite;
}
.hero .section-mouse-next{color:#fff;filter:drop-shadow(0 2px 4px #0008)}
.hero .mouse-shell{background:#17383a77;border-color:#fff;box-shadow:0 7px 22px #001b22aa,inset 0 0 0 2px #ffffff30}
.countdown-section .section-mouse-next,.special-section .section-mouse-next,.menu-section .section-mouse-next,.gallery-section .section-mouse-next{color:#6d5b4d}
.timeline-section .section-mouse-next{color:#fff}
@keyframes mouseWheelClear{0%{opacity:0;transform:translate(-50%,-1px)}30%{opacity:1}100%{opacity:0;transform:translate(-50%,13px)}}
@keyframes mouseArrowClear{50%{transform:translateY(4px)}}
@media(max-width:899px){
  .section{padding-bottom:128px}
  .section-mouse-next{bottom:70px}
}
@media(max-width:520px){
  .section-mouse-next{bottom:72px}
  .mouse-shell{width:32px;height:48px}
}

/* v9: one wheel = one complete invitation page */
html,body{height:100%;overflow:hidden}
.viewport-stage{height:100dvh;overflow:hidden}
.invite-column{
  height:100dvh;
  overflow-y:auto;
  overflow-x:hidden;
  scroll-snap-type:y mandatory;
  scroll-behavior:smooth;
  overscroll-behavior-y:contain;
  scrollbar-width:none;
}
.invite-column::-webkit-scrollbar{display:none}
.section{
  width:100%;
  height:100dvh;
  min-height:100dvh;
  max-height:100dvh;
  scroll-snap-align:start;
  scroll-snap-stop:always;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  padding-top:clamp(52px,7vh,86px);
  padding-bottom:clamp(92px,12vh,122px);
}
.section>div:not(.hero-image):not(.hero-overlay){
  width:100%;
  max-height:calc(100dvh - 150px);
}
.hero{height:100dvh;min-height:100dvh;max-height:100dvh}
.hero-content{padding-top:clamp(68px,10vh,108px);padding-bottom:clamp(100px,14vh,132px)}
.gallery-stack{grid-template-columns:repeat(3,1fr);gap:10px}
.gallery-card{height:clamp(150px,29dvh,280px)}
.rsvp-form{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:9px 12px;
  margin-top:18px;
}
.rsvp-form .field{margin:0}
.rsvp-form .field label{margin-bottom:4px}
.rsvp-form .field input,.rsvp-form .field select,.rsvp-form .field textarea{min-height:38px;padding:8px 10px}
.rsvp-form .field textarea{min-height:48px;height:48px}
.rsvp-submit,.rsvp-result{grid-column:1/-1}
.rsvp-submit{min-height:40px}
.faq-list{gap:7px;margin-top:18px}
.faq-q{padding:11px 13px}
.plan-list{margin-top:20px;gap:18px}
.menu-board{margin-top:18px}
.menu-block{margin-bottom:16px}
.venue-photo{height:clamp(220px,38dvh,360px)}
.special-card{padding-top:clamp(34px,6vh,50px);padding-bottom:clamp(28px,5vh,42px)}
.section-mouse-next{bottom:clamp(18px,3vh,30px)}
@media(max-width:899px){
  .section{padding-left:20px;padding-right:20px;padding-bottom:104px}
  .section-mouse-next{bottom:68px}
  .gallery-card{height:clamp(120px,19dvh,175px)}
  .gallery-stack{grid-template-columns:repeat(3,1fr);gap:7px}
  .gallery-card span{font-size:8px;padding:5px 7px}
  .rsvp-form{grid-template-columns:1fr 1fr;gap:7px 8px}
  .rsvp-form .field input,.rsvp-form .field select,.rsvp-form .field textarea{font-size:12px}
  .rsvp-form .field label{font-size:9px}
}
@media(max-width:520px){
  .section{padding-top:48px;padding-left:18px;padding-right:18px;padding-bottom:112px}
  .section-title{font-size:clamp(29px,8vw,36px)}
  .body-copy{font-size:12.5px;line-height:1.72}
  .count-grid{gap:5px;margin-top:20px}
  .count-box{padding:12px 2px}
  .count-box strong{font-size:26px}
  .venue-photo{width:min(66vw,260px);height:clamp(210px,35dvh,300px)}
  .plan-list{gap:14px}
  .menu-block h3{font-size:24px}
  .gift-card{padding:18px}
}
@media(max-height:760px){
  .section{padding-top:42px;padding-bottom:90px}
  .section-title{font-size:30px;margin-bottom:9px}
  .body-copy{font-size:12px;line-height:1.65}
  .count-grid{margin-top:16px}
  .venue-photo{height:34dvh}
  .plan-list{gap:11px;margin-top:15px}
  .plan-item h3{font-size:22px}
  .menu-block{margin-bottom:12px}
  .gallery-card{height:22dvh}
  .section-mouse-next{bottom:14px}
}

/* v10 subtle occasion-related ambient animation on every page */
.section:not(.hero)::before,
.section:not(.hero)::after{
  content:"";
  position:absolute;
  z-index:0;
  pointer-events:none;
  opacity:.12;
}
.section:not(.hero)>div{position:relative;z-index:2}

/* hero: soft moving party light/confetti */
.hero::before{
  content:"";
  position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.20;
  background:
    radial-gradient(circle at 12% 18%,#ffe1a9 0 3px,transparent 4px),
    radial-gradient(circle at 27% 36%,#c9eff0 0 2px,transparent 3px),
    radial-gradient(circle at 63% 16%,#f4aac2 0 3px,transparent 4px),
    radial-gradient(circle at 82% 32%,#ffe1a9 0 2px,transparent 3px),
    radial-gradient(circle at 44% 55%,#c9eff0 0 2px,transparent 3px);
  animation:partySparkleDrift 7s ease-in-out infinite alternate;
}

/* countdown: drifting birthday sparkles */
.countdown-section::before{
  width:240px;height:240px;left:-70px;top:12%;
  background:
    radial-gradient(circle at 25% 20%,#caa46d 0 5px,transparent 6px),
    radial-gradient(circle at 70% 30%,#bb7084 0 4px,transparent 5px),
    radial-gradient(circle at 45% 68%,#6c9a9c 0 4px,transparent 5px),
    radial-gradient(circle at 82% 78%,#caa46d 0 3px,transparent 4px);
  animation:sparkleOrbit 8s ease-in-out infinite alternate;
}
.countdown-section::after{
  width:150px;height:150px;right:-25px;bottom:14%;
  border:1px solid #b9946444;border-radius:50%;
  box-shadow:0 0 0 18px #b9946408,0 0 0 34px #b9946405;
  animation:ringBreathe 5s ease-in-out infinite;
}

/* venue: balloon cluster gently sways */
.venue-section::before{
  width:180px;height:260px;left:-28px;bottom:8%;
  background:
    radial-gradient(ellipse at 26% 24%,#d2788d 0 20px,transparent 21px),
    radial-gradient(ellipse at 61% 18%,#5e9297 0 23px,transparent 24px),
    radial-gradient(ellipse at 44% 44%,#d9a35f 0 21px,transparent 22px),
    linear-gradient(77deg,transparent 0 34%,#8a735d55 35% 36%,transparent 37%),
    linear-gradient(103deg,transparent 0 56%,#8a735d55 57% 58%,transparent 59%);
  transform-origin:50% 100%;
  animation:balloonSway 5.5s ease-in-out infinite;
}

/* special note: soft botanical branch */
.special-section::before{
  width:210px;height:360px;right:-35px;bottom:-30px;
  border-left:2px solid #8ca08455;
  background:
    radial-gradient(ellipse at 25% 18%,#8ca084 0 12px,transparent 13px),
    radial-gradient(ellipse at 65% 31%,#8ca084 0 14px,transparent 15px),
    radial-gradient(ellipse at 22% 48%,#8ca084 0 13px,transparent 14px),
    radial-gradient(ellipse at 66% 64%,#8ca084 0 12px,transparent 13px),
    radial-gradient(ellipse at 28% 82%,#8ca084 0 14px,transparent 15px);
  transform:rotate(-18deg);transform-origin:50% 100%;
  animation:branchSway 6s ease-in-out infinite;
}

/* plan: quiet clock motif */
.plan-section::before{
  width:190px;height:190px;left:-55px;top:13%;
  border:2px solid #b28b5f;border-radius:50%;
  box-shadow:inset 0 0 0 14px #b28b5f0d;
  animation:clockFloat 7s ease-in-out infinite;
}
.plan-section::after{
  width:2px;height:72px;left:39px;top:19%;
  background:#b28b5f;transform-origin:50% 100%;
  animation:clockHand 9s linear infinite;
}

/* menu: plate + steam */
.menu-section::before{
  width:170px;height:170px;right:-45px;bottom:9%;
  border:2px solid #9f826755;border-radius:50%;
  box-shadow:inset 0 0 0 12px #9f82670b;
  animation:plateFloat 6s ease-in-out infinite;
}
.menu-section::after{
  content:"≈";
  right:42px;bottom:28%;
  font:500 86px/1 Georgia,serif;color:#9f8267;
  transform:rotate(90deg);
  animation:steamRise 4.8s ease-in-out infinite;
}

/* gallery: floating photo-frame outline */
.gallery-section::before{
  width:210px;height:260px;left:-70px;top:12%;
  border:2px solid #8d675b;border-radius:10px;
  transform:rotate(-8deg);
  box-shadow:18px 18px 0 -12px #8d675b33;
  animation:frameFloat 6.5s ease-in-out infinite;
}

/* gifts: subtle ribbon box */
.gifts-section::before{
  width:170px;height:130px;right:-45px;bottom:13%;
  border:2px solid #b18c62;border-radius:8px;
  background:
    linear-gradient(90deg,transparent 45%,#b18c6255 46% 54%,transparent 55%),
    linear-gradient(0deg,transparent 45%,#b18c6238 46% 54%,transparent 55%);
  animation:giftFloat 5.6s ease-in-out infinite;
}

/* FAQ: floating question mark */
.faq-section::before{
  content:"?";
  left:-8px;bottom:8%;
  font:600 190px/1 "Cormorant Garamond","Kalpurush",serif;
  color:#9c7965;
  animation:questionFloat 6.2s ease-in-out infinite;
}

/* attendance: envelope / reply motif */
.rsvp-section::before{
  content:"✉";
  right:-20px;top:12%;
  font:400 150px/1 Georgia,serif;
  color:#a77568;
  transform:rotate(8deg);
  animation:envelopeFloatSoft 5.8s ease-in-out infinite;
}
.rsvp-section::after{
  width:90px;height:90px;left:5%;bottom:10%;
  background:
    radial-gradient(circle at 30% 30%,#b4697844 0 8px,transparent 9px),
    radial-gradient(circle at 70% 35%,#c9a56b44 0 6px,transparent 7px),
    radial-gradient(circle at 50% 72%,#6f999b44 0 7px,transparent 8px);
  animation:sparkleOrbit 7s ease-in-out infinite alternate-reverse;
}

@keyframes partySparkleDrift{to{transform:translate3d(10px,-12px,0) scale(1.04);opacity:.34}}
@keyframes sparkleOrbit{to{transform:translate(18px,-14px) rotate(8deg);opacity:.20}}
@keyframes ringBreathe{50%{transform:scale(1.08);opacity:.20}}
@keyframes balloonSway{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(4deg) translateY(-8px)}}
@keyframes branchSway{0%,100%{transform:rotate(-18deg)}50%{transform:rotate(-12deg) translateY(-5px)}}
@keyframes clockFloat{50%{transform:translate(8px,-7px) scale(1.03)}}
@keyframes clockHand{to{transform:rotate(360deg)}}
@keyframes plateFloat{50%{transform:translateY(-8px) rotate(3deg)}}
@keyframes steamRise{0%,100%{transform:translateY(8px) rotate(90deg);opacity:.06}50%{transform:translateY(-10px) rotate(90deg);opacity:.16}}
@keyframes frameFloat{50%{transform:rotate(-4deg) translate(7px,-8px)}}
@keyframes giftFloat{50%{transform:translateY(-10px) rotate(2deg)}}
@keyframes questionFloat{50%{transform:translateY(-10px) rotate(-4deg);opacity:.17}}
@keyframes envelopeFloatSoft{50%{transform:translate(-6px,-8px) rotate(4deg);opacity:.16}}

@media(max-width:520px){
  .countdown-section::before,.countdown-section::after,.plan-section::before,.plan-section::after{transform:scale(.78)}
  .venue-section::before{left:-70px;opacity:.09}
  .special-section::before{right:-90px;opacity:.08}
  .menu-section::before{right:-90px}
  .gallery-section::before{left:-110px}
  .gifts-section::before{right:-95px}
  .faq-section::before{left:-42px;font-size:150px}
  .rsvp-section::before{right:-58px;font-size:120px}
}

/* v11 hybrid attendance / RSVP interaction */
.attendance-wrap{display:flex;flex-direction:column;align-items:center}
.attendance-copy{max-width:640px}
.attendance-form{width:min(100%,720px);margin:18px auto 0;display:flex;flex-direction:column;align-items:center;gap:12px}
.attendance-choices{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.attendance-choice{
  min-height:78px;border:1px solid #dcc7a7;border-radius:18px;
  background:#fffaf1;color:#584a41;padding:11px 12px;
  display:grid;grid-template-columns:30px 1fr;gap:8px;align-items:center;
  text-align:left;font-size:11.5px;line-height:1.55;
  box-shadow:0 8px 22px #7d67491a;transition:.22s ease;
}
.attendance-choice:hover{transform:translateY(-2px);box-shadow:0 12px 26px #7d674925}
.attendance-choice.active{border-color:#5f7659;background:#f5f6ee;box-shadow:0 0 0 2px #5f76591d,0 12px 28px #5b6a4c20}
.choice-icon{
  width:28px;height:28px;border:1px solid #d7bb87;border-radius:50%;
  display:grid;place-items:center;color:#a5733d;background:#fff;
  font-size:13px;font-weight:600;
}
.attendance-choice.active .choice-icon{background:#5f7659;border-color:#5f7659;color:#fff}
.attendance-fields{width:100%;display:grid;grid-template-columns:1.25fr .72fr .72fr 1.45fr;gap:9px}
.attendance-fields .field{margin:0}
.attendance-fields label{display:block;font-size:9.5px;color:#746459;margin:0 0 5px}
.attendance-fields label small{font-size:8px;color:#a18e80}
.attendance-fields input,.attendance-fields select{
  width:100%;height:42px;border:1px solid #e1ceb4;border-radius:12px;background:#fffdf9;color:#4e423b;padding:0 11px;
}
.attendance-form.not-coming .attendance-fields .field:nth-child(2),
.attendance-form.not-coming .attendance-fields .field:nth-child(3){opacity:.42}
.attendance-summary{
  min-height:30px;padding:7px 14px;border-radius:999px;background:#f5efe4;color:#6b5a4d;
  font-size:10.5px;text-align:center
}
.attendance-summary strong{font-weight:600;color:#4f5f42}
.attendance-submit{
  min-width:190px;min-height:48px;border:0;border-radius:999px;background:#53664d;color:#fff;
  padding:0 22px;font-size:13px;box-shadow:0 14px 30px #53664d30;transition:.22s ease;
}
.attendance-submit:hover{transform:translateY(-2px);box-shadow:0 17px 34px #53664d3c}
.attendance-submit span{margin-left:4px}
.attendance-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.attendance-actions button{
  min-height:39px;border:1px solid #dec7a6;border-radius:999px;background:#fffaf1;color:#725a46;
  padding:0 14px;font-size:10.5px;
}
.attendance-demo-note{font-size:8.5px;color:#a28e7c;text-align:center}
.rsvp-result{min-height:18px;margin:0;font-size:10.5px;text-align:center;color:#53664d}
.rsvp-section::before{opacity:.08}
.rsvp-section::after{opacity:.12}
@media(max-width:899px){
  .attendance-form{gap:9px;margin-top:12px}
  .attendance-choice{min-height:70px;padding:8px;font-size:10px;grid-template-columns:24px 1fr}
  .choice-icon{width:24px;height:24px}
  .attendance-fields{grid-template-columns:1.25fr .7fr .7fr 1.35fr;gap:6px}
  .attendance-fields input,.attendance-fields select{height:38px;font-size:11px}
  .attendance-submit{min-height:42px}
}
@media(max-width:620px){
  .attendance-choices{grid-template-columns:1fr 1fr 1fr;gap:5px}
  .attendance-choice{display:flex;flex-direction:column;justify-content:center;text-align:center;gap:4px;font-size:8.8px;line-height:1.35;padding:7px 5px}
  .attendance-fields{grid-template-columns:1fr 1fr}
  .attendance-fields .field:nth-child(4){grid-column:1/-1}
  .attendance-summary{font-size:9.5px;padding:6px 10px}
  .attendance-actions button{font-size:9.5px;padding:0 11px}
}
@media(max-height:760px){
  .attendance-form{gap:7px;margin-top:10px}
  .attendance-choice{min-height:62px;padding:7px 8px;line-height:1.35}
  .attendance-fields input,.attendance-fields select{height:35px}
  .attendance-submit{min-height:39px}
  .attendance-actions button{min-height:34px}
  .attendance-demo-note{display:none}
}

.rsvp-section .reveal.in .attendance-form{animation:formRise .8s cubic-bezier(.2,.8,.2,1) both}

/* v12 typography pairing + visible per-page ambient elements */
html[lang="bn"] body,
html[lang="bn"] .section-title,
html[lang="bn"] .body-copy,
html[lang="bn"] .special-card h3,
html[lang="bn"] .faq-q,
html[lang="bn"] .faq-a,
html[lang="bn"] .attendance-form,
html[lang="bn"] .attendance-choice,
html[lang="bn"] .attendance-fields,
html[lang="bn"] .attendance-summary,
html[lang="bn"] .attendance-submit,
html[lang="bn"] .attendance-actions,
html[lang="bn"] .map-btn,
html[lang="bn"] .gift-card p{
  font-family:"Kalpurush",sans-serif;
}

/* English typography varies by context, while staying cohesive */
.cover-name,.luxury-copy h1{font-family:"Great Vibes","Kalpurush",cursive;font-weight:400}
.inside-card-copy strong{font-family:"Playfair Display","Kalpurush",serif;font-weight:600}
.hero-name{font-family:"Playfair Display","Kalpurush",serif;font-weight:600}
.hero-sub{font-family:"Libre Baskerville","Kalpurush",serif;font-style:italic}
.hero-date,.lux-kicker,.cover-date,
.hero .kicker,.countdown-section .kicker,.venue-section .kicker,
.special-section .kicker,.plan-section .kicker,.menu-section .kicker,
.gallery-section .kicker,.gifts-section .kicker,.faq-section .kicker,
.count-box span,.plan-time{font-family:"Cinzel","Kalpurush",serif;font-weight:600}
.venue-name{font-family:"Cormorant Garamond","Kalpurush",serif;font-weight:600}
.plan-item h3{font-family:"Playfair Display","Kalpurush",serif;font-weight:600}
.menu-section .section-title,.menu-block h3,.menu-block p{font-family:"Libre Baskerville","Kalpurush",serif}
.gallery-card span{font-family:"Cinzel","Kalpurush",serif;font-weight:500}
.gift-card strong{font-family:"Playfair Display","Kalpurush",serif;font-style:italic;font-weight:500}
.footer{font-family:"Libre Baskerville","Kalpurush",serif}

.section{isolation:isolate}
.page-ambient{
  position:absolute!important;inset:0;z-index:1!important;pointer-events:none;
  overflow:hidden;opacity:1!important;transform:none!important;
}
.section:not(.hero)>:not(.page-ambient){position:relative;z-index:2}

/* hero confetti ribbons */
.ambient-party i{
  position:absolute;top:-12%;width:8px;height:24px;border-radius:4px;
  background:#f1c56e;opacity:.48;animation:ambientConfetti 6.5s linear infinite;
}
.ambient-party i:nth-child(2n){background:#73c4c7}
.ambient-party i:nth-child(3n){background:#df8299}
.ambient-party i:nth-child(1){left:8%;animation-delay:-1s}.ambient-party i:nth-child(2){left:18%;animation-delay:-4s}
.ambient-party i:nth-child(3){left:30%;animation-delay:-2s}.ambient-party i:nth-child(4){left:43%;animation-delay:-5s}
.ambient-party i:nth-child(5){left:56%;animation-delay:-3s}.ambient-party i:nth-child(6){left:68%;animation-delay:-6s}
.ambient-party i:nth-child(7){left:79%;animation-delay:-2.5s}.ambient-party i:nth-child(8){left:89%;animation-delay:-4.8s}

/* countdown sparkles */
.ambient-sparkles i{
  position:absolute;width:12px;height:12px;opacity:.34;
  background:linear-gradient(45deg,transparent 42%,#b88754 43% 57%,transparent 58%),
             linear-gradient(-45deg,transparent 42%,#b88754 43% 57%,transparent 58%);
  animation:ambientTwinkle 3.2s ease-in-out infinite;
}
.ambient-sparkles i:nth-child(1){left:8%;top:18%}.ambient-sparkles i:nth-child(2){left:18%;top:72%;animation-delay:-1.1s}
.ambient-sparkles i:nth-child(3){right:9%;top:22%;animation-delay:-2.1s}.ambient-sparkles i:nth-child(4){right:16%;bottom:16%;animation-delay:-.6s}
.ambient-sparkles i:nth-child(5){left:48%;top:8%;animation-delay:-1.7s}.ambient-sparkles i:nth-child(6){left:57%;bottom:10%;animation-delay:-2.6s}

/* venue balloons */
.ambient-balloons .balloon{
  position:absolute;width:58px;height:72px;border-radius:52% 48% 48% 52%;
  bottom:7%;opacity:.24;transform-origin:50% 110%;animation:ambientBalloon 5s ease-in-out infinite;
  box-shadow:inset -8px -10px 18px #0000000d;
}
.ambient-balloons .balloon:after{
  content:"";position:absolute;left:50%;top:70px;width:1px;height:115px;background:#8d765e66;
}
.ambient-balloons .b1{left:4%;background:#c66e82;animation-delay:-1s}
.ambient-balloons .b2{left:11%;bottom:3%;background:#6b9b9e;animation-delay:-2.4s}
.ambient-balloons .b3{right:4%;background:#d5a15e;animation-delay:-3.1s}

/* botanical branch */
.ambient-branch{transform-origin:right bottom!important;animation:ambientBranch 5.8s ease-in-out infinite}
.ambient-branch .stem{
  position:absolute;right:7%;bottom:-2%;width:2px;height:52%;background:#7f927b55;transform:rotate(-17deg);transform-origin:bottom
}
.ambient-branch i{
  position:absolute;width:34px;height:16px;border-radius:100% 0 100% 0;background:#81947d55;
}
.ambient-branch .l1{right:12%;bottom:16%;transform:rotate(-24deg)}.ambient-branch .l2{right:4%;bottom:24%;transform:rotate(44deg)}
.ambient-branch .l3{right:15%;bottom:33%;transform:rotate(-34deg)}.ambient-branch .l4{right:5%;bottom:42%;transform:rotate(38deg)}
.ambient-branch .l5{right:11%;bottom:51%;transform:rotate(-20deg)}

/* plan clock */
.ambient-clock .clock-face{
  position:absolute;left:4%;top:14%;width:150px;height:150px;border:2px solid #a8845e4d;border-radius:50%;
  box-shadow:inset 0 0 0 12px #a8845e0b;opacity:.72;animation:ambientClockFloat 5.5s ease-in-out infinite
}
.ambient-clock .clock-face:after{content:"";position:absolute;left:50%;top:50%;width:8px;height:8px;border-radius:50%;background:#a8845e}
.ambient-clock .hour,.ambient-clock .minute{
  position:absolute;left:50%;top:50%;transform-origin:0 50%;height:2px;background:#a8845e;border-radius:2px
}
.ambient-clock .hour{width:38px;animation:ambientHand 18s linear infinite}.ambient-clock .minute{width:56px;animation:ambientHand 7s linear infinite}

/* menu plate + visible steam */
.ambient-menu .plate{
  position:absolute;right:3%;bottom:5%;width:150px;height:150px;border:2px solid #987b6455;border-radius:50%;
  box-shadow:inset 0 0 0 13px #987b640d;opacity:.7;animation:ambientPlate 5s ease-in-out infinite
}
.ambient-menu i{position:absolute;right:62px;bottom:22%;width:18px;height:72px;border-left:3px solid #987b6448;border-radius:50%;animation:ambientSteam 3.4s ease-in-out infinite}
.ambient-menu .s2{right:84px;height:58px;animation-delay:-1.1s}.ambient-menu .s3{right:42px;height:52px;animation-delay:-2s}

/* gallery floating frames */
.ambient-frames i{
  position:absolute;width:110px;height:145px;border:3px solid #8d675b55;border-radius:8px;opacity:.48;
  box-shadow:0 10px 24px #65483918;animation:ambientFrame 5.8s ease-in-out infinite
}
.ambient-frames .f1{left:-30px;top:13%;transform:rotate(-9deg)}
.ambient-frames .f2{right:-35px;bottom:12%;transform:rotate(8deg);animation-delay:-2.5s}

/* gift box */
.ambient-gift .gift-box{
  position:absolute;right:4%;bottom:8%;width:135px;height:105px;border:2px solid #a9845d66;border-radius:8px;
  opacity:.6;animation:ambientGift 5s ease-in-out infinite
}
.ambient-gift .gift-box:before{content:"";position:absolute;left:45%;top:0;width:12%;height:100%;background:#a9845d33}
.ambient-gift .gift-box:after{content:"";position:absolute;left:0;top:42%;width:100%;height:12%;background:#a9845d2a}
.ambient-gift .gift-box i:before,.ambient-gift .gift-box i:after{
  content:"";position:absolute;top:-32px;width:58px;height:38px;border:2px solid #a9845d66;border-radius:50% 50% 10px 50%
}
.ambient-gift .gift-box i:before{left:15px;transform:rotate(22deg)}.ambient-gift .gift-box i:after{right:15px;transform:scaleX(-1) rotate(22deg)}

/* FAQ floating question marks */
.ambient-questions b{
  position:absolute;font:500 86px/1 "Playfair Display","Kalpurush",serif;color:#9c7965;opacity:.13;
  animation:ambientQuestion 5.5s ease-in-out infinite
}
.ambient-questions b:first-child{left:4%;bottom:8%;transform:rotate(-8deg)}
.ambient-questions b:last-child{right:5%;top:12%;font-size:62px;animation-delay:-2.4s}

/* attendance envelope */
.ambient-mail .mail{
  position:absolute;right:4%;top:12%;width:132px;height:88px;border:2px solid #a675685c;border-radius:8px;
  opacity:.45;animation:ambientMail 5.4s ease-in-out infinite
}
.ambient-mail .mail:before,.ambient-mail .mail:after{content:"";position:absolute;top:0;width:72%;height:2px;background:#a675685c;transform-origin:top}
.ambient-mail .mail:before{left:0;transform:rotate(34deg)}.ambient-mail .mail:after{right:0;transform:rotate(-34deg)}
.ambient-mail .heart{position:absolute;right:8%;top:21%;font:400 48px/1 "Great Vibes","Kalpurush",cursive;color:#b36f7e;opacity:.34;animation:ambientHeart 3.5s ease-in-out infinite}

@keyframes ambientConfetti{0%{transform:translateY(-12vh) rotate(0);opacity:0}12%{opacity:.52}100%{transform:translateY(116vh) rotate(620deg);opacity:0}}
@keyframes ambientTwinkle{0%,100%{transform:scale(.6) rotate(0);opacity:.12}50%{transform:scale(1.35) rotate(90deg);opacity:.48}}
@keyframes ambientBalloon{0%,100%{transform:rotate(-3deg) translateY(0)}50%{transform:rotate(5deg) translateY(-14px)}}
@keyframes ambientBranch{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(3deg) translateX(-4px)}}
@keyframes ambientClockFloat{50%{transform:translate(8px,-7px) scale(1.03)}}
@keyframes ambientHand{to{transform:rotate(360deg)}}
@keyframes ambientPlate{50%{transform:translateY(-8px) rotate(3deg)}}
@keyframes ambientSteam{0%,100%{transform:translateY(12px) scaleX(.8);opacity:.12}50%{transform:translateY(-14px) scaleX(1.15);opacity:.48}}
@keyframes ambientFrame{0%,100%{translate:0 0}50%{translate:8px -10px;rotate:3deg}}
@keyframes ambientGift{50%{transform:translateY(-11px) rotate(2deg)}}
@keyframes ambientQuestion{50%{transform:translateY(-12px) rotate(4deg);opacity:.22}}
@keyframes ambientMail{50%{transform:translate(-7px,-9px) rotate(3deg);opacity:.62}}
@keyframes ambientHeart{50%{transform:scale(1.18) rotate(4deg);opacity:.55}}

@media(max-width:620px){
  .page-ambient{opacity:.78!important}
  .ambient-clock .clock-face{left:-42px;width:120px;height:120px}
  .ambient-menu .plate{right:-55px;width:120px;height:120px}
  .ambient-branch .stem{right:2%}
  .ambient-frames .f1{left:-70px}.ambient-frames .f2{right:-72px}
  .ambient-gift .gift-box{right:-55px;transform:scale(.82)}
  .ambient-mail .mail{right:-45px;transform:scale(.8)}
}

.rsvp-section .kicker{
  font-family:"Kalpurush",sans-serif;
  font-size:11px;line-height:1.2;letter-spacing:.10em;text-transform:none;
}
.section-mouse-next small{font-family:"Cinzel","Kalpurush",serif;font-weight:600}

/* v13: keep per-page scroll cue above every ambient/content layer */
.section > .section-mouse-next{
  position:absolute!important;
  z-index:30!important;
  left:50%!important;
  transform:translateX(-50%);
  pointer-events:auto!important;
  display:flex!important;
  visibility:visible!important;
  opacity:.96!important;
}
.section > .section-mouse-next:hover{transform:translateX(-50%) translateY(-3px)}

/* v14 language-safe typography: Bengali always Kalpurush */
html[lang="bn"] :lang(bn){
  font-family:"Kalpurush",sans-serif!important;
}
