:root{--ink:#180d1d;--ink-2:#211126;--ink-3:#2a1830;--gold:#d8b768;--gold-light:#f4dfaa;--cream:#f5eee2;--muted:#b9aeb8;--line:rgba(226,194,123,.25);--serif:'Cormorant Garamond',Georgia,serif;--script:'Great Vibes',cursive;--sans:'DM Sans',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:20px}body{margin:0;background:var(--ink);color:var(--cream);font-family:var(--sans);font-weight:300;line-height:1.65}button,a{font:inherit}a{color:inherit;text-decoration:none}button{color:inherit}.skip-link{position:fixed;z-index:30;top:-50px;left:12px;background:var(--gold);color:var(--ink);padding:8px 14px}.skip-link:focus{top:12px}.cover{position:fixed;inset:0;z-index:20;display:grid;place-items:center;overflow:hidden;background:radial-gradient(ellipse at 50% 45%,#332437 0,#1c1021 48%,#120a16 100%);transition:opacity 1s ease,visibility 1s ease}.cover.is-open{opacity:0;visibility:hidden;pointer-events:none}.cover-lines{position:absolute;inset:-20%;opacity:.3;background:repeating-conic-gradient(from 7deg at 50% 45%,transparent 0deg 17deg,rgba(212,187,127,.08) 17.2deg 17.6deg,transparent 17.8deg 35deg);mask-image:radial-gradient(ellipse,#000 0%,transparent 75%)}.cover-inner{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;padding:30px 20px 50px}.cover-kicker,.eyebrow{font-size:.66rem;letter-spacing:.22em;color:var(--gold);font-weight:500}.cover-kicker{margin:0 0 27px}.mandala{color:var(--gold)}.mandala svg{display:block;width:clamp(170px,24vw,240px);height:auto;filter:drop-shadow(0 0 12px rgba(220,181,98,.17))}.cover-names{display:flex;flex-direction:column;align-items:center;margin:16px 0 14px;color:var(--gold-light);font:clamp(3.8rem,10vw,6.3rem)/.73 var(--script);font-weight:400}.cover-names i{font:italic 1.8rem var(--serif);margin:13px 0 7px}.cover-rule{width:280px;color:var(--gold);display:flex;align-items:center;gap:18px;margin:3px 0 18px}.cover-rule:before,.cover-rule:after{content:"";height:1px;flex:1;background:var(--line)}.cover-rule span{font-size:18px}.open-button,.button-gold{border:1px solid rgba(255,235,185,.45);border-radius:50px;background:linear-gradient(120deg,#763f56,#ae7848);color:#fff7e5;padding:13px 27px;font-size:.67rem;letter-spacing:.16em;transition:transform .2s,filter .2s}.open-button:hover,.button-gold:hover{transform:translateY(-2px);filter:brightness(1.12)}.open-button span{padding-left:8px}.sound-toggle{position:fixed;z-index:21;bottom:25px;right:26px;border:1px solid var(--line);border-radius:24px;padding:9px 15px;background:rgba(20,10,24,.58);font-size:.62rem;letter-spacing:.14em}.sound-toggle span{color:var(--gold);font-size:1rem;padding-right:6px}.section{position:relative;padding:100px 24px}.hero{min-height:100svh;display:flex;align-items:center;justify-content:center;text-align:center;overflow:hidden;background:radial-gradient(ellipse at 50% 52%,#3a2a37 0,#1b0f20 50%,#140b18 85%)}.hero:before,.hero:after{content:"";position:absolute;width:min(80vw,800px);aspect-ratio:1;border:1px solid rgba(221,190,120,.07);border-radius:50%;box-shadow:0 0 0 45px rgba(221,190,120,.025),0 0 0 90px rgba(221,190,120,.02)}.hero:after{width:min(60vw,600px);transform:rotate(45deg);border-radius:8%;box-shadow:0 0 0 60px rgba(221,190,120,.02)}.hero-glow{position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 10%,rgba(14,7,18,.28) 90%)}.hero-copy{position:relative;z-index:1}.ganesha{margin-bottom:15px;filter:drop-shadow(0 0 15px #c39a4a50)}.hero .eyebrow{margin:0 0 17px}.hero h2{display:flex;flex-direction:column;align-items:center;margin:0;color:var(--gold-light);font:clamp(4.8rem,10vw,7rem)/.84 var(--script);font-weight:400}.hero h2 em{font:italic clamp(1.3rem,3vw,2rem) var(--serif);padding:14px 0}.hero-date{margin:27px 0 10px;color:var(--gold);font-size:.68rem;letter-spacing:.16em}.hero-intro,.section-heading>p:not(.eyebrow){color:var(--muted);font-size:.9rem}.scroll-cue{display:inline-flex;flex-direction:column;gap:8px;align-items:center;margin-top:37px;color:var(--gold);font-size:.61rem;letter-spacing:.2em}.scroll-cue span{font-size:1.1rem;animation:bob 1.7s infinite}@keyframes bob{50%{transform:translateY(5px)}}.hero-bottom-mark{position:absolute;bottom:25px;display:flex;gap:25px;align-items:center;color:var(--gold);font-size:1.5rem}.hero-bottom-mark:before,.hero-bottom-mark:after{content:"";width:min(25vw,200px);height:1px;background:var(--line)}.section-heading{text-align:center;max-width:700px;margin:0 auto 45px}.section-heading .eyebrow{margin:0 0 7px}.section-heading h2,.countdown-section h2,.story-section h2,.live-section h2,.share-section h2{margin:0;color:var(--gold-light);font:500 clamp(2.8rem,6vw,4.5rem)/1.05 var(--serif)}.section-heading>p:not(.eyebrow){margin:10px 0 0}.couple-section{background:linear-gradient(180deg,#1a0e1e,#211327)}.couple-grid{display:grid;grid-template-columns:minmax(220px,340px) 70px minmax(220px,340px);gap:30px;justify-content:center;align-items:center}.person-card{text-align:center}.portrait{position:relative;display:grid;place-items:center;aspect-ratio:4/4.6;max-width:330px;margin:0 auto 24px;overflow:hidden;border:1px solid rgba(216,183,104,.35);background:radial-gradient(ellipse at 50% 35%,#725060,#332035 60%,#1b1120)}.portrait:before,.portrait:after{content:"";position:absolute;width:70%;aspect-ratio:1;border:1px solid rgba(237,208,148,.25);transform:rotate(45deg)}.portrait:after{width:55%;transform:rotate(0);border-radius:50%}.portrait-two{background:radial-gradient(ellipse at 50% 35%,#766045,#3e2b30 60%,#1b1120)}.portrait-art{position:relative;z-index:1;color:rgba(255,235,195,.7);font:clamp(7rem,14vw,10rem) var(--script)}.photo-hint{position:absolute;bottom:13px;z-index:2;font-size:.55rem;letter-spacing:.2em;color:#e3c98e}.person-card .eyebrow{margin:0}.person-card h3{margin:0 0 10px;color:var(--gold-light);font:500 2.7rem var(--serif)}.family-label{color:var(--gold);font-size:.56rem;letter-spacing:.2em;margin:12px 0 2px}.family-name{color:var(--muted);font-size:.84rem;margin:0}.couple-heart{align-self:center;color:var(--gold);font:italic 2.2rem var(--serif)}.couple-blessing{text-align:center;color:var(--gold-light);font:italic 1.2rem var(--serif);margin:40px 0 0}.events-section{background:#170d1b}.event-grid{max-width:1120px;margin:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.event-card{background:linear-gradient(150deg,#28192d,#201326);border:1px solid var(--line)}.event-art{height:170px;display:grid;place-items:center;position:relative;overflow:hidden;color:rgba(240,211,153,.76);font:5rem var(--serif)}.event-art:before,.event-art:after{content:"";position:absolute;width:190px;height:190px;border:1px solid rgba(238,206,143,.18);border-radius:50%}.event-art:after{width:120px;height:120px;box-shadow:0 0 0 20px rgba(238,206,143,.035)}.event-art span{position:relative;z-index:1}.art-haldi{background:radial-gradient(circle at 50%,#785434,#382431 68%)}.art-sangeet{background:radial-gradient(circle at 50%,#68465b,#281b31 68%)}.art-wedding{background:radial-gradient(circle at 50%,#6d5841,#2a1b2a 68%)}.event-content{padding:24px}.event-content .eyebrow{margin:0 0 4px;font-size:.58rem}.event-content h3{margin:0;color:var(--gold-light);font:500 2rem var(--serif)}.event-description{min-height:60px;color:var(--muted);font-size:.8rem;line-height:1.6}.event-time,.event-venue{font-size:.66rem;letter-spacing:.08em;color:var(--gold-light);margin:15px 0 0}.event-venue{margin-top:4px;color:var(--muted)}.text-link{display:inline-block;margin-top:20px;color:var(--gold);font-size:.59rem;letter-spacing:.14em}.text-link span{font-size:.85rem;margin-left:5px}.countdown-section{text-align:center;background:radial-gradient(ellipse at center,#302036,#180d1d 70%);border-block:1px solid var(--line)}.countdown-section .eyebrow,.story-section .eyebrow,.live-section .eyebrow,.share-section .eyebrow{margin:0 0 6px}.section-subtitle{color:var(--muted);font-size:.85rem}.countdown{display:flex;justify-content:center;align-items:center;gap:clamp(10px,4vw,38px);margin:34px auto 14px}.countdown div{display:grid;min-width:70px}.countdown strong{color:var(--gold-light);font:500 clamp(2.5rem,6vw,4rem) var(--serif);line-height:1}.countdown span{margin-top:6px;color:var(--gold);font-size:.56rem;letter-spacing:.18em}.countdown>i{color:var(--gold);font:1.5rem var(--serif);font-style:normal;align-self:flex-start}.placeholder-note{color:#9f919c;font-size:.67rem;letter-spacing:.03em}.gallery-section{background:#211327}.gallery-grid{max-width:1000px;margin:auto;display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:170px;gap:12px}.gallery-tile{display:grid;place-items:center;position:relative;overflow:hidden;border:1px solid rgba(216,183,104,.3);background:radial-gradient(ellipse at 50% 40%,#684b5b,#35263b 65%,#25182b);color:rgba(244,223,170,.67);font-size:.58rem;letter-spacing:.2em}.gallery-tile:nth-child(3n){background:radial-gradient(ellipse at 50% 40%,#746146,#392b37 65%,#25182b)}.gallery-tile:before,.gallery-tile:after{content:"";position:absolute;width:100px;height:100px;border:1px solid rgba(244,223,170,.2);border-radius:50%}.gallery-tile:after{width:60px;height:60px;transform:rotate(45deg);border-radius:0}.gallery-tile span{z-index:1}.gallery-large{grid-row:span 2}.gallery-wide{grid-column:span 2}.gallery-section>.placeholder-note{text-align:center;margin-top:18px}.story-section{text-align:center;overflow:hidden;background:linear-gradient(120deg,#1c1120,#342138,#1c1120)}.story-ornament,.footer-flower{color:var(--gold);font:3rem var(--serif)}.story-section h2{margin-bottom:15px}.story-copy{max-width:570px;margin:0 auto;color:var(--muted);font:italic 1.2rem/1.8 var(--serif)}.story-rule{display:block;width:75px;height:1px;background:var(--gold);margin:28px auto 0}.venue-section{background:#180e1d}.venue-layout{display:grid;grid-template-columns:1.2fr .8fr;max-width:960px;margin:auto;min-height:320px;border:1px solid var(--line)}.venue-map{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:50px;background:radial-gradient(ellipse at 75% 20%,rgba(204,169,105,.15),transparent 50%),linear-gradient(135deg,#2b1c30,#1d1322)}.map-pattern{position:absolute;inset:0;z-index:-1;opacity:.23;background:linear-gradient(35deg,transparent 49%,#a78b59 49.2%,transparent 49.6%),linear-gradient(130deg,transparent 49%,#a78b59 49.2%,transparent 49.6%),repeating-linear-gradient(0deg,transparent 0 47px,#bda36f18 48px 49px)}.map-pattern span{position:absolute;top:45%;left:54%;font-size:2rem;color:var(--gold)}.map-pattern i{position:absolute;top:50%;left:55%;color:var(--gold);font-style:normal}.venue-map .eyebrow{margin:0}.venue-map h3{margin:6px 0;color:var(--gold-light);font:500 2.4rem var(--serif)}.venue-map>p:not(.eyebrow){color:var(--muted);font-size:.85rem}.button-outline{margin-top:14px;padding:10px 15px;border:1px solid var(--line);color:var(--gold);font-size:.6rem;letter-spacing:.12em}.travel-card{padding:42px;background:#231629}.travel-card .eyebrow{margin:0}.travel-card h3{margin:5px 0 18px;color:var(--gold-light);font:500 2rem var(--serif)}.travel-card ul{list-style:none;padding:0;margin:0}.travel-card li{position:relative;padding:11px 0 11px 23px;border-bottom:1px solid rgba(255,255,255,.07);color:var(--muted);font-size:.78rem}.travel-card li:before{content:"✧";position:absolute;left:0;color:var(--gold)}.travel-divider{height:1px;background:var(--line);margin:22px 0}.live-section{text-align:center;background:#26172d}.live-section>p:not(.eyebrow){max-width:560px;margin:14px auto 24px;color:var(--muted);font-size:.87rem}.live-section .button-gold{display:inline-block}.live-caption{display:block;color:#9f919c;font-size:.65rem;margin-top:13px}.rsvp-section{background:#1b1020}.rsvp-card{max-width:580px;margin:auto;padding:34px;background:#25172b;border:1px solid var(--line)}.rsvp-choice{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:28px}.choice-button{padding:12px;border:1px solid var(--line);background:transparent;color:var(--muted);font-size:.73rem}.choice-button.selected{color:var(--gold-light);border-color:var(--gold);background:rgba(216,183,104,.09)}.rsvp-card form{display:grid;gap:9px}.rsvp-card label{margin-top:9px;color:var(--gold);font-size:.57rem;letter-spacing:.17em}.rsvp-card label span{color:#998d99}.rsvp-card input,.rsvp-card textarea{width:100%;border:1px solid rgba(216,183,104,.22);border-radius:0;background:#1a111f;color:var(--cream);padding:12px 14px;font:300 .82rem var(--sans);outline:none}.rsvp-card input:focus,.rsvp-card textarea:focus{border-color:var(--gold)}.rsvp-card input::placeholder,.rsvp-card textarea::placeholder{color:#776a78}.submit-button{margin-top:12px;cursor:pointer}.form-feedback{min-height:18px;color:#a69aa7;font-size:.68rem}.whatsapp-button{display:block;text-align:center;margin-top:10px;color:var(--gold);font-size:.61rem;letter-spacing:.14em}.share-section{text-align:center;background:#211327}.share-section h2{font-size:clamp(2.5rem,5vw,3.8rem)}.share-section>p:not(.eyebrow){color:var(--muted);font-size:.85rem}.share-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin-top:25px}.share-button{border:1px solid var(--line);background:transparent;color:var(--gold-light);padding:11px 17px;font-size:.68rem;cursor:pointer}.share-button:hover{border-color:var(--gold);background:rgba(216,183,104,.07)}.footer{text-align:center;padding-top:75px;padding-bottom:45px;background:radial-gradient(ellipse at 50% 0,#332139,#160c19 67%)}.footer-flower{margin-bottom:13px}.footer .eyebrow{margin:0}.footer h2{margin:7px 0;color:var(--gold-light);font:400 clamp(3.5rem,8vw,5.6rem)/1 var(--script)}.footer h2 span{font:italic 1.5rem var(--serif);padding:0 8px}.footer-date,.hashtag{color:var(--gold);font-size:.61rem;letter-spacing:.19em}.hashtag{margin-top:0}.footer-line{height:1px;width:80px;background:var(--line);margin:28px auto}.footer-credit{color:#847886;font-size:.52rem;letter-spacing:.18em;margin:0}
@media(max-width:760px){.section{padding:75px 19px}.cover-kicker{font-size:.58rem}.mandala svg{width:178px}.cover-names{font-size:4.8rem}.event-grid{grid-template-columns:1fr;max-width:440px}.event-art{height:145px}.event-description{min-height:0}.couple-grid{grid-template-columns:minmax(130px,250px) 30px minmax(130px,250px);gap:10px}.portrait{aspect-ratio:3/4}.person-card h3{font-size:2.3rem}.couple-heart{font-size:1.5rem}.venue-layout{grid-template-columns:1fr}.venue-map{min-height:290px;padding:32px}.travel-card{padding:32px}.gallery-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:145px}.gallery-large{grid-row:span 2}.gallery-wide{grid-column:span 2}.rsvp-card{padding:24px 18px}.share-actions{gap:8px}.share-button{padding:10px 12px}.hero h2{font-size:6rem}}
@media(max-width:420px){.cover-inner{padding-bottom:30px}.mandala svg{width:150px}.cover-names{font-size:4.2rem}.cover-kicker{margin-bottom:20px}.hero h2{font-size:5rem}.couple-grid{grid-template-columns:1fr 22px 1fr;gap:6px}.person-card h3{font-size:2rem}.family-name{font-size:.7rem}.family-label{font-size:.5rem}.countdown{gap:8px}.countdown div{min-width:53px}.countdown strong{font-size:2.5rem}.countdown span{font-size:.48rem}.countdown>i{font-size:1rem}.desktop-only{display:none}.share-actions{max-width:300px;margin-inline:auto}.share-button{flex:1 1 42%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* Opened invitation hero follows the supplied layout reference. */
.hero{min-height:100svh;padding:5.5vh 24px;background-image:url("assets/hero-pattern.svg"),radial-gradient(ellipse at 50% 36%,#382431 0,#241622 52%,#130b17 100%);background-repeat:no-repeat;background-position:center;background-size:min(78vw,900px),cover}
.hero-glow{background:radial-gradient(ellipse at 50% 42%,rgba(71,43,53,.08),rgba(14,7,18,.34) 82%)}
.hero-copy{position:relative;z-index:1;width:min(94vw,1240px);min-height:92svh;margin:0 auto;display:flex;flex-direction:column;align-items:center;text-align:center}
.ganesha{display:block;width:clamp(88px,11vw,144px);height:auto;margin:0;filter:drop-shadow(0 0 12px rgba(216,183,104,.15))}
.hero-top-rule{display:block;width:min(34vw,590px);height:1px;margin:44px auto 26px;background:linear-gradient(90deg,transparent,rgba(216,183,104,.62) 12%,rgba(216,183,104,.62) 88%,transparent)}
.hero .eyebrow{margin:0 0 14px;color:#f0d797;font-size:clamp(.72rem,1.25vw,.95rem);letter-spacing:.2em}
.hero h2{display:flex;flex-direction:row;align-items:baseline;justify-content:center;gap:.1em;width:100%;margin:0;color:#ffe5a8;font:400 clamp(5rem,11vw,11rem)/.95 var(--script);white-space:nowrap}
.hero h2 em{padding:0;margin:0 .04em;font:italic clamp(1.9rem,4.4vw,4.5rem)/1 var(--serif);color:#f0d797}
.hero-date{display:inline-flex;align-items:center;justify-content:center;min-height:54px;margin:85px 0 0;padding:9px 27px;border:1px solid rgba(216,183,104,.52);border-radius:999px;background:rgba(20,12,22,.38);box-shadow:inset 0 0 0 1px rgba(244,223,170,.06);color:#f1dca8;font-size:clamp(.72rem,1.12vw,.95rem);letter-spacing:.16em}
.hero-intro{max-width:710px;margin:45px auto 0;color:#e4d6c7;font:italic clamp(1.2rem,2vw,1.75rem)/1.58 var(--serif);text-wrap:balance}
.hero-bottom-mark{position:absolute;z-index:1;left:0;right:0;bottom:22.5%;width:min(56vw,960px);height:48px;margin-inline:auto;display:grid;place-items:center;color:var(--gold)}
.hero-bottom-mark:before,.hero-bottom-mark:after{content:"";position:absolute;top:50%;width:calc(50% - 52px);height:1px;background:linear-gradient(90deg,transparent,rgba(216,183,104,.92))}
.hero-bottom-mark:before{left:0}
.hero-bottom-mark:after{right:0;transform:scaleX(-1)}
.hero-bottom-mark img{position:relative;z-index:1;display:block;width:72px;height:48px;object-fit:contain}
.scroll-cue{position:absolute;z-index:1;left:0;right:0;bottom:3.8%;width:max-content;margin-inline:auto;display:flex;flex-direction:column;align-items:center;gap:13px;color:#e6c879;font-size:clamp(.72rem,1.3vw,.95rem);font-weight:500;letter-spacing:.17em;white-space:nowrap}
.scroll-cue span{font-size:2rem;line-height:1;animation:bob 1.7s infinite}
.hero.is-revealing .ganesha,.hero.is-revealing .hero-top-rule,.hero.is-revealing>.hero-copy>.eyebrow,.hero.is-revealing .hero-date,.hero.is-revealing .hero-intro,.hero.is-revealing .scroll-cue,.hero.is-revealing .hero-bottom-mark{opacity:0;animation:hero-soft-reveal .95s ease-out var(--reveal-delay,0s) forwards}
.hero.is-waiting .scroll-cue{visibility:hidden;opacity:0}
.hero.is-revealing .ganesha{--reveal-delay:0s}
.hero.is-revealing .hero-top-rule{--reveal-delay:.12s}
.hero.is-revealing>.hero-copy>.eyebrow{--reveal-delay:.22s}
.hero.is-revealing .hero-date{--reveal-delay:.58s}
.hero.is-revealing .hero-intro{--reveal-delay:.72s}
.hero.is-revealing .hero-bottom-mark{--reveal-delay:.9s}
.hero.is-revealing .scroll-cue{--reveal-delay:1s}
.hero.is-revealing h2 em{animation-delay:.22s}
@media(max-width:760px){.hero{padding:3vh 16px}.hero-copy{width:100%;min-height:94svh}.ganesha{width:clamp(82px,22vw,112px)}.hero-top-rule{width:min(64vw,420px);margin:28px auto 22px}.hero .eyebrow{margin-bottom:7px}.hero h2{font-size:clamp(3.25rem,12vw,5.5rem);gap:.035em}.hero h2 em{font-size:clamp(1.35rem,5vw,2.3rem)}.hero-date{min-height:46px;margin-top:36px;padding:8px 17px;font-size:clamp(.62rem,2.6vw,.78rem);letter-spacing:.1em}.hero-intro{max-width:35ch;margin-top:28px;font-size:clamp(1.08rem,4.4vw,1.35rem);line-height:1.5}.hero-bottom-mark{bottom:20%;width:78vw}.hero-bottom-mark:before,.hero-bottom-mark:after{width:calc(50% - 37px)}.hero-bottom-mark img{width:54px;height:38px}.scroll-cue{bottom:3.5%;font-size:.68rem;gap:10px}}
@media(max-width:380px){.hero h2{font-size:clamp(2.8rem,11.5vw,3.25rem)}.hero-date{letter-spacing:.07em;padding-inline:12px}.hero-bottom-mark{bottom:18%}}
@media(prefers-reduced-motion:reduce){.hero.is-revealing .ganesha,.hero.is-revealing .hero-top-rule,.hero.is-revealing>.hero-copy>.eyebrow,.hero.is-revealing .hero-date,.hero.is-revealing .hero-intro,.hero.is-revealing .scroll-cue,.hero.is-revealing .hero-bottom-mark,.hero.is-revealing h2 em,.hero.is-revealing .name-character{animation:none;opacity:1;transform:none;filter:none}}

/* Keep the original hero scale and rhythm; apply the reference order and ornament only. */
.hero{min-height:100svh;padding:100px 24px;display:flex;align-items:center;justify-content:center;text-align:center;overflow:hidden;background-image:url("assets/hero-pattern.svg"),radial-gradient(ellipse at 50% 52%,#3a2a37 0,#1b0f20 50%,#140b18 85%);background-repeat:no-repeat;background-position:center;background-size:min(94vw,900px),cover}
.hero-copy{position:relative;z-index:1;width:auto;min-height:0;margin:0;display:block;text-align:center}
.ganesha{display:inline-block;width:58px;height:58px;margin:0 0 7px;filter:drop-shadow(0 0 15px #c39a4a50)}
.hero-top-rule{display:block;width:min(34vw,590px);height:1px;margin:0 auto 7px;background:linear-gradient(90deg,transparent,rgba(216,183,104,.62) 12%,rgba(216,183,104,.62) 88%,transparent)}
.hero .eyebrow{margin:0 0 17px;color:var(--gold);font-size:.66rem;letter-spacing:.22em}
.hero h2{display:flex;flex-direction:row;align-items:baseline;justify-content:center;gap:.12em;width:auto;margin:0;color:var(--gold-light);font:400 clamp(4.8rem,10vw,7rem)/1 var(--script);white-space:nowrap}
.hero h2 em{margin:0 .08em;padding:0;font:italic clamp(1.3rem,3vw,2rem)/1 var(--serif);color:var(--gold)}
.hero-date{margin:27px auto 0;padding:10px 26px;border:1px solid rgba(216,183,104,.52);border-radius:999px;background:rgba(20,12,22,.24);color:var(--gold);font-size:calc(.816rem + 2.4pt);line-height:1.2;letter-spacing:.16em}
.hero-intro{max-width:none;margin:14px auto 1em;color:var(--muted);font:italic calc(.9rem + 2pt)/1.65 var(--serif)}
@media(max-width:420px){.hero-date{font-size:min(calc(.816rem + 2.4pt),4.25vw);letter-spacing:.08em;padding-inline:20px}}
.hero-bottom-mark{position:relative;left:auto;right:auto;bottom:auto;width:auto;height:auto;margin:18px 0 0;display:flex;gap:25px;align-items:center;justify-content:center;color:var(--gold);font-size:1.5rem}
.hero-bottom-mark:before,.hero-bottom-mark:after{content:"";position:static;width:min(25vw,200px);height:1px;background:var(--line)}
.hero-bottom-mark img{position:relative;z-index:1;display:block;width:28px;height:22px;object-fit:contain}
.scroll-cue{position:static;left:auto;right:auto;bottom:auto;width:auto;margin:37px 0 0;transform:none;display:inline-flex;flex-direction:column;gap:8px;align-items:center;color:var(--gold);font-size:.61rem;font-weight:400;letter-spacing:.2em;white-space:normal}
.scroll-cue span{font-size:1.1rem;line-height:inherit}
.hero.is-revealing .hero-top-rule{opacity:0;animation:hero-soft-reveal .95s ease-out .12s forwards}
@media(max-width:760px){.hero{padding:75px 19px}.hero-top-rule{width:min(64vw,420px)}.hero h2{font-size:6rem}}
@media(max-width:420px){.hero h2{font-size:5rem}}
@media(prefers-reduced-motion:reduce){.hero.is-revealing .hero-top-rule{animation:none;opacity:1}}

/* Decorative art lives in assets/ so the SVG/image files can be swapped without editing markup. */
.cover-lines{background:url("assets/cover-pattern.svg") center/cover no-repeat;mask-image:radial-gradient(ellipse,#000 0%,transparent 75%)}
.mandala{position:relative;isolation:isolate;display:grid;place-items:center;width:clamp(170px,24vw,240px);aspect-ratio:1;color:var(--gold)}
.mandala-art{position:relative;z-index:1;display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 12px rgba(220,181,98,.17));animation:mandala-turn 48s linear infinite;transform-origin:center}
.mandala-glow{position:absolute;z-index:0;inset:8%;border-radius:50%;background:radial-gradient(circle,rgba(238,197,103,.32) 0%,rgba(216,167,78,.16) 32%,rgba(216,167,78,.04) 61%,transparent 74%);filter:blur(11px);animation:mandala-glow-breathe 7.2s ease-in-out infinite}
@keyframes mandala-turn{to{transform:rotate(360deg)}}
@keyframes mandala-glow-breathe{0%,100%{opacity:.56;transform:scale(.9)}50%{opacity:1;transform:scale(1.12)}}
.hero{background-image:url("assets/hero-pattern.svg"),radial-gradient(ellipse at 50% 52%,#3a2a37 0,#1b0f20 50%,#140b18 85%);background-repeat:no-repeat;background-position:center;background-size:min(94vw,900px),cover}
.hero:before,.hero:after{display:none}
.portrait{background:#24182b url("assets/portrait-placeholder.svg") center/cover no-repeat}
.portrait-two{background:#24182b url("assets/portrait-placeholder.svg") center/cover no-repeat}
.portrait:before,.portrait:after{display:none}
.event-art{background-position:center;background-size:cover;background-repeat:no-repeat}
.event-art:before,.event-art:after,.event-art span{display:none}
.art-haldi{background-image:url("assets/event-haldi.svg")}
.art-sangeet{background-image:url("assets/event-sangeet.svg")}
.art-wedding{background-image:url("assets/event-wedding.svg")}
.map-pattern{background:url("assets/venue-map.svg") center/cover no-repeat;opacity:.46}
.map-pattern span,.map-pattern i{display:none}
@media(prefers-reduced-motion:reduce){.mandala-art,.mandala-glow{animation:none}}

/* Invitation opening sequence */
.cover.is-opening{pointer-events:none}
.cover.is-opening .cover-kicker,.cover.is-opening .cover-names,.cover.is-opening .cover-rule,.cover.is-opening .open-button{animation:cover-type-dismiss .62s cubic-bezier(.55,0,.8,.25) both}
.cover.is-opening .cover-kicker{animation-delay:0s}
.cover.is-opening .cover-names{animation-delay:.04s}
.cover.is-opening .cover-rule{animation-delay:.08s}
.cover.is-opening .open-button{animation-delay:.1s}
.cover.is-opening .cover-lines{animation:cover-art-dim .9s ease-out both}
.cover.is-opening .mandala-art{animation:mandala-dissolve 1.68s cubic-bezier(.3,.04,.54,1) both}
.cover.is-opening .mandala-glow{animation:glow-release 1.55s ease-in both}
.cover.is-opening.is-open{opacity:0;visibility:hidden;transition:opacity .72s ease,visibility 0s linear .72s}
@keyframes cover-type-dismiss{to{opacity:0;transform:translateY(12px) scale(.58);filter:blur(5px)}}
@keyframes cover-art-dim{to{opacity:0;transform:scale(1.25)}}
@keyframes mandala-dissolve{0%{opacity:1;transform:scale(1) rotate(0)}75%{opacity:.8}100%{opacity:0;transform:scale(10) rotate(780deg);filter:blur(7px)}}
@keyframes glow-release{0%{opacity:.8;transform:scale(1)}45%{opacity:1;transform:scale(1.5)}100%{opacity:0;transform:scale(9);filter:blur(35px)}}
.confetti-layer{position:fixed;inset:0;z-index:22;overflow:hidden;pointer-events:none}
.confetti-piece{position:absolute;top:39vh;left:50vw;width:var(--piece-width);height:var(--piece-height);background:var(--piece-color);opacity:0;box-shadow:0 0 9px #f4dfaa28;animation:confetti-fall var(--duration) cubic-bezier(.18,.62,.3,1) var(--delay) both}
.confetti-piece:nth-child(3n){border-radius:50% 0 50% 0}
.confetti-piece:nth-child(4n){width:calc(var(--piece-width) * .65);height:calc(var(--piece-height) * 1.35)}
@keyframes confetti-fall{0%{opacity:0;transform:translate(-50%,-50%) rotate(0)}9%{opacity:.95}100%{opacity:0;transform:translate(var(--drift),var(--fall)) rotate(var(--spin))}}
.hero.is-revealing .ganesha,.hero.is-revealing>.hero-copy>.eyebrow,.hero.is-revealing .hero-date,.hero.is-revealing .hero-intro,.hero.is-revealing .scroll-cue,.hero.is-revealing .hero-bottom-mark{opacity:0;animation:hero-soft-reveal .95s ease-out var(--reveal-delay,0s) forwards}
.hero.is-revealing .ganesha{--reveal-delay:.35s}
.hero.is-revealing>.hero-copy>.eyebrow{--reveal-delay:.48s}
.hero.is-revealing .hero-date{--reveal-delay:1.02s}
.hero.is-revealing .hero-intro{--reveal-delay:1.16s}
.hero.is-revealing .scroll-cue{--reveal-delay:1.34s}
.hero.is-revealing .hero-bottom-mark{--reveal-delay:1.4s}
.hero.is-revealing h2 em{opacity:0;animation:hero-soft-reveal .7s ease-out .68s forwards}
.hero.is-revealing .name-character{display:inline;opacity:0;animation:name-from-baseline .48s ease-out var(--character-delay) forwards}
@keyframes hero-soft-reveal{from{opacity:0;transform:translateY(10px);filter:blur(2px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
@keyframes name-from-baseline{to{opacity:1;transform:translateY(0);filter:blur(0)}}
@media(prefers-reduced-motion:reduce){.cover.is-opening.is-open{transition:none}.cover.is-opening .cover-kicker,.cover.is-opening .cover-names,.cover.is-opening .cover-rule,.cover.is-opening .open-button,.cover.is-opening .cover-lines,.cover.is-opening .mandala-art,.cover.is-opening .mandala-glow,.hero.is-revealing .ganesha,.hero.is-revealing>.hero-copy>.eyebrow,.hero.is-revealing .hero-date,.hero.is-revealing .hero-intro,.hero.is-revealing .scroll-cue,.hero.is-revealing .hero-bottom-mark,.hero.is-revealing h2 em,.hero.is-revealing .name-character{animation:none;opacity:1;transform:none;filter:none}.confetti-layer{display:none}}

/* Keep both cover and hero names on one fitted line. */
.cover-names{flex-direction:row;align-items:baseline;justify-content:center;gap:.12em;white-space:nowrap;line-height:1;margin:16px 0 14px}
.cover-names i{font-size:clamp(1rem,2vw,1.8rem);margin:0 .12em;line-height:1}
.hero h2{flex-direction:row;align-items:baseline;justify-content:center;gap:.12em;white-space:nowrap;line-height:1}
.hero h2 em{padding:0;margin:0 .08em;line-height:1}
/* Start the hero reveal only after the cover is gone and the confetti has fallen. */
.cover.is-opening .cover-kicker,.cover.is-opening .cover-names,.cover.is-opening .cover-rule,.cover.is-opening .open-button{animation-duration:.42s}
.cover.is-opening .cover-lines{animation-duration:.72s}
.cover.is-opening .mandala-art{animation:mandala-dissolve 1.28s linear both}
.cover.is-opening .mandala-glow{animation:glow-release 1.25s ease-in both}
.cover.is-opening.is-open{transition:opacity .54s ease,visibility 0s linear .54s}
@keyframes cover-type-dismiss{to{opacity:0;transform:translateY(8px) scale(.72)}}
@keyframes mandala-dissolve{0%{opacity:1;transform:scale(1) rotate(0)}100%{opacity:0;transform:scale(8) rotate(540deg)}}
@keyframes glow-release{0%{opacity:.75;transform:scale(1)}48%{opacity:1;transform:scale(1.35)}100%{opacity:0;transform:scale(5)}}
.confetti-piece{box-shadow:none}
.hero.is-revealing .ganesha,.hero.is-revealing>.hero-copy>.eyebrow,.hero.is-revealing .hero-date,.hero.is-revealing .hero-intro,.hero.is-revealing .scroll-cue,.hero.is-revealing .hero-bottom-mark{animation-delay:var(--reveal-delay,0s)}
.hero.is-revealing .ganesha{--reveal-delay:.08s}
.hero.is-revealing>.hero-copy>.eyebrow{--reveal-delay:.2s}
.hero.is-revealing .hero-date{--reveal-delay:.62s}
.hero.is-revealing .hero-intro{--reveal-delay:.78s}
.hero.is-revealing .scroll-cue{--reveal-delay:.94s}
.hero.is-revealing .hero-bottom-mark{--reveal-delay:1.02s}
.hero.is-revealing h2 em{animation-delay:.22s}
.hero.is-revealing .name-character{animation-delay:var(--character-delay)}

.cover.is-opening .mandala-art,.cover.is-opening .mandala-glow{filter:none}
.hero.is-revealing .name-character{filter:none}
@keyframes hero-soft-reveal{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes name-from-baseline{from{opacity:0}to{opacity:1}}
.hero.is-waiting .hero-copy>*,.hero.is-waiting .hero-bottom-mark{visibility:hidden;opacity:0}

/* Let the mandala accelerate as it expands; begin confetti at the fade-out handoff. */
.cover.is-opening .cover-kicker,.cover.is-opening .cover-names,.cover.is-opening .cover-rule,.cover.is-opening .open-button{animation-duration:.78s;animation-timing-function:cubic-bezier(.22,.61,.36,1)}
.cover.is-opening .cover-lines{animation-duration:1.55s;animation-timing-function:ease-out}
.cover.is-opening .mandala-art{animation:mandala-dissolve 1.1s cubic-bezier(.35,.05,.75,.55) both}
.cover.is-opening .mandala-glow{animation:glow-release 1.1s ease-in-out both}
.cover.is-opening.is-open{transition:opacity .6s ease,visibility 0s linear .6s}
@keyframes cover-type-dismiss{to{opacity:0;transform:translateY(8px) scale(.86)}}
@keyframes mandala-dissolve{from{opacity:1;transform:scale(1) rotate(0)}to{opacity:0;transform:scale(10) rotate(900deg)}}
@keyframes glow-release{0%{opacity:.42;transform:scale(.82)}35%{opacity:.68;transform:scale(1.18)}62%{opacity:.9;transform:scale(1.75)}80%{opacity:1;transform:scale(3.2)}100%{opacity:0;transform:scale(5.5)}}
.confetti-piece{top:var(--start-y);left:var(--start-x);animation-timing-function:cubic-bezier(.25,.46,.45,.94)}
@keyframes confetti-fall{0%{opacity:0;transform:translate(0,0) rotate(0)}12%{opacity:.92}72%{opacity:.9}100%{opacity:0;transform:translate(var(--drift),var(--fall)) rotate(var(--spin))}}

/* Celebration schedule: centered introduction, lotus rule, and four matching event panels. */
.events-section{min-height:100svh;padding:58px clamp(24px,4vw,80px) 108px;background-image:url("assets/cover-pattern.svg"),radial-gradient(ellipse at 20% 10%,rgba(93,57,72,.3),transparent 40%),linear-gradient(125deg,#201322,#160d1b 70%);background-repeat:no-repeat;background-position:center,center,center;background-size:min(125vw,2000px) auto,cover,cover}
.events-section .section-heading{max-width:760px;margin:0 auto;text-align:center}
.events-section .section-heading .eyebrow{margin:0 0 18px;color:#ead18d;font-size:.72rem;letter-spacing:.19em}
.events-section .section-heading h2{color:#f1e5cb;font-size:clamp(2.8rem,3.6vw,4rem);font-variant:small-caps;letter-spacing:.035em;line-height:1.05}
.events-section .section-heading>p:not(.eyebrow){max-width:460px;margin:22px auto 0;color:#b9aab7;font:1.05rem/1.55 var(--serif)}
.schedule-divider{position:relative;display:flex;align-items:center;justify-content:center;width:min(52vw,960px);height:76px;margin:46px auto 48px}
.schedule-divider:before,.schedule-divider:after{content:"";position:absolute;top:50%;width:calc(50% - 78px);height:1px;background:linear-gradient(90deg,transparent,rgba(216,183,104,.85))}
.schedule-divider:before{left:0}
.schedule-divider:after{right:0;transform:scaleX(-1)}
.schedule-divider img{position:relative;z-index:1;display:block;width:120px;height:76px;object-fit:contain}
.event-grid{width:100%;max-width:1544px;margin:0 auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:20px}
.event-card{min-width:0;min-height:442px;display:flex;flex-direction:column;padding:22px;border:1px solid rgba(177,132,157,.58);border-radius:24px;overflow:hidden;background:linear-gradient(90deg,#30172f 0 55%,#48283f 55% 100%);box-shadow:inset 0 1px rgba(255,235,217,.035)}
.event-card-heading{display:flex;align-items:center;gap:13px;min-height:66px;margin:0 0 17px}
.event-icon{display:block;flex:0 0 64px;width:64px;height:64px;padding:11px;border:1px solid rgba(216,183,104,.65);border-radius:50%;object-fit:contain}
.event-card-heading .eyebrow{margin:0;color:#e6cc83;font-size:.72rem;letter-spacing:.14em;line-height:1.35}
.event-content{flex:1;display:flex;flex-direction:column;padding:0}
.event-content h3{margin:0 0 12px;color:#f1e5d2;font:500 1.75rem/1.28 var(--serif);font-variant:small-caps}
.event-description{min-height:0;margin:0 0 13px;color:#bcaab7;font:italic 1rem/1.65 var(--serif)}
.event-time,.event-venue{margin:0;color:#d4c6c8;font-size:.9rem;line-height:1.55;letter-spacing:0}
.event-venue{margin-top:4px;color:#b7a6b4}
.event-content .text-link{align-self:flex-start;margin-top:19px;color:#e5c76e;font-size:.69rem;font-weight:600;letter-spacing:.15em;text-decoration:underline;text-decoration-color:rgba(229,199,110,.55);text-underline-offset:6px}
.event-content .text-link span{margin-left:7px;font-size:1rem}
@media(max-width:1100px){.event-grid{max-width:800px;grid-template-columns:repeat(2,minmax(0,1fr))}.event-card{min-height:380px}.schedule-divider{width:min(72vw,760px)}}
@media(max-width:640px){.events-section{min-height:0;padding:72px 19px 78px}.events-section .section-heading h2{font-size:clamp(2.4rem,9vw,3.4rem)}.events-section .section-heading>p:not(.eyebrow){font-size:1rem}.schedule-divider{width:88vw;height:62px;margin:34px auto 34px}.schedule-divider img{width:94px;height:62px}.schedule-divider:before,.schedule-divider:after{width:calc(50% - 62px)}.event-grid{max-width:440px;grid-template-columns:1fr;gap:16px}.event-card{min-height:0;padding:21px}.event-card-heading{margin-bottom:14px}.event-description{font-size:1rem}.event-content .text-link{margin-top:16px}}

/* Soft, ordered entrance for the cover and each section as it enters view. */
.cover-entering .cover-inner>*{opacity:0;animation:cover-soft-enter .9s cubic-bezier(.2,.7,.25,1) var(--cover-delay,0ms) forwards}
.cover-entering .cover-kicker{--cover-delay:0ms}
.cover-entering .mandala-cover{--cover-delay:140ms}
.cover-entering .cover-names{--cover-delay:280ms}
.cover-entering .cover-rule{--cover-delay:420ms}
.cover-entering .open-button{--cover-delay:560ms}
@keyframes cover-soft-enter{from{opacity:0;transform:translateY(13px);filter:blur(2px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
.scroll-reveal{opacity:0;transform:translateY(16px);transition:opacity .8s ease var(--scroll-delay,0ms),transform .8s cubic-bezier(.2,.7,.25,1) var(--scroll-delay,0ms);will-change:opacity,transform}
.scroll-reveal.is-visible{opacity:1;transform:translateY(0);will-change:auto}
@media(prefers-reduced-motion:reduce){.cover-entering .cover-inner>*,.scroll-reveal{opacity:1;transform:none;filter:none;animation:none;transition:none;will-change:auto}}
.couple-heart{justify-self:center;align-self:center;text-align:center;font-size:clamp(2.8rem,5vw,4rem);line-height:1}
.footer{padding-bottom:76px}
.footer-credit{color:#b9aeb8;font-size:.62rem}
.event-card{background:linear-gradient(135deg,#352336 0%,#2f1e31 52%,#291b30 100%);box-shadow:inset 0 1px rgba(255,235,217,.045)}
.event-card:nth-child(4n+2){background:linear-gradient(135deg,#332238 0%,#2c1d32 52%,#281a2d 100%)}
.event-card:nth-child(4n+3){background:linear-gradient(135deg,#352638 0%,#302034 52%,#291b30 100%)}
.event-card:nth-child(4n){background:linear-gradient(135deg,#342237 0%,#2e1d32 52%,#281a2e 100%)}
.event-card-heading{justify-content:flex-start}
.event-card-heading .event-icon{margin:0}
html.cover-scroll-locked,html.cover-scroll-locked body{height:100%;overflow:hidden;overscroll-behavior:none}
.venue-map .map-pattern{opacity:1}
.venue-map .button-outline{font-weight:600}
.hero h2{max-width:100%;padding:.16em .1em .28em;overflow:visible}
.cover-names,.hero h2{align-items:center;gap:.02em;line-height:1.3;padding:.3em .18em .12em;overflow:visible}
.cover-names i,.hero h2 em{color:var(--gold);margin-inline:-.18em}
.cover-names>[data-cover-name],.hero h2>[data-name]{padding-inline:.22em;overflow:visible}
.hero-date{margin-top:12px;margin-bottom:22px}
.footer h2 .footer-name{font:inherit;padding:0}
.footer h2 .footer-connector{font:italic 1.8rem var(--serif);color:var(--gold);padding:0 15px;vertical-align:middle}
.cover-names i,.hero h2 em{font-size:clamp(1.8rem,3vw,2rem);color:var(--gold)}
.cover-inner{padding-top:24px;padding-bottom:32px}
.cover-kicker{margin-bottom:14px}
.cover-names{margin:0 0 8px;padding-top:.12em;padding-bottom:.08em}
.cover-rule{margin:0 0 12px}
@media(max-width:640px){.cover-names i,.hero h2 em{font-size:clamp(1.8rem,8vw,2.6rem)}}
@media(max-width:640px){.hero{min-height:100vh;min-height:100svh;overflow:visible;padding-block:clamp(48px,8svh,84px)}.hero-copy{width:100%;min-height:0}.hero h2{width:100%;max-width:100%;line-height:1.35;padding:.42em .25em .5em;overflow:visible}}
@media(max-width:640px){.cover-names,.hero h2{flex-direction:column;align-items:center;justify-content:center;gap:.1em;white-space:normal;line-height:1.15}.cover-names{margin:12px 0;padding:.45em 0 .4em;overflow:visible;color:var(--gold-light)}.cover-names>[data-cover-name],.hero h2>[data-name]{display:inline-block;width:max-content;max-width:none;white-space:nowrap;overflow:visible;padding-inline:.22em}.cover-names i{margin:0;padding:0 .1em;font-size:clamp(2rem,9vw,3rem);line-height:1;color:var(--gold)}.hero h2{padding:.46em 0 .18em}.hero h2 em{margin:0;padding:0 .1em;font-size:clamp(2rem,9vw,3.1rem);line-height:1;color:var(--gold)}.hero-date{margin-top:20px}}
.open-button span[data-copy]{padding-left:0}
.sound-toggle .sound-label{color:inherit;font-size:inherit;padding-right:0}
.couple-section{background:linear-gradient(180deg,#1a0e1e 0%,#211528 100%)}
.countdown-section{background:radial-gradient(ellipse at 50% 0,rgba(99,66,83,.2),transparent 56%),linear-gradient(180deg,#211528 0%,#1c1222 100%);border-color:rgba(226,194,123,.18)}
.venue-section{background:linear-gradient(180deg,#21162a 0%,#1b1120 100%)}
.footer{background:radial-gradient(ellipse at 50% 0,rgba(84,57,75,.34),transparent 58%),linear-gradient(180deg,#1b1120 0%,#160c19 100%)}
.hero.is-revealing h2 [data-name]{opacity:0;animation:hero-name-reveal .72s ease-out var(--word-delay,0s) forwards}
.hero h2 [data-name="bride"]{--word-delay:.2s}
.hero h2 [data-name="groom"]{--word-delay:.44s}
@keyframes hero-name-reveal{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.hero.is-revealing h2 [data-name]{animation:none;opacity:1}}
@media(max-width:640px){.hero h2>[data-name]{display:block;width:max-content;max-width:100%;overflow:visible}}
