/* InviteFlow — shared invitation layout. Designs override the CSS variables and add their own flourishes. */
*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:#111}body.noscroll{overflow:hidden}
.dg{--bg:#fff;--bg2:#f6f2ea;--ink:#2a2a2a;--mut:#77706a;--ac:#b08d3c;--card:#fff;--line:rgba(0,0,0,.12);--hero-ink:#fff;--on-ac:#fff;
 --fd:'Great Vibes','Yatra One',cursive;--fh:'Cormorant Garamond','Mukta',serif;--fb:'Inter','Mukta',system-ui,sans-serif;
 position:relative;min-height:100vh;background:var(--bg);color:var(--ink);font-family:var(--fb);line-height:1.65;overflow-x:hidden;font-size:16px}
.dg a{color:inherit}.dg img{max-width:100%}
.dg.l-hi,.dg.l-both{--fb:'Mukta','Inter',system-ui,sans-serif}
.fx{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}.pg{position:relative;z-index:1}
.orn svg{display:block;margin:0 auto;max-width:100%;height:auto}
.rv{opacity:0;transform:translateY(26px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.7,.2,1)}.rv.in{opacity:1;transform:none}
.sec{padding:76px 22px;max-width:1000px;margin:0 auto;text-align:center}
.sh{margin-bottom:34px}.sh h2{font-family:var(--fh);font-weight:600;font-size:clamp(28px,5.4vw,42px);margin:0 0 10px;letter-spacing:.02em;line-height:1.15}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 28px;border-radius:999px;border:1px solid var(--ac);background:var(--ac);color:var(--on-ac);font:600 14px/1 var(--fb);letter-spacing:.06em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:transform .2s,filter .2s}
.btn:hover{filter:brightness(1.08);transform:translateY(-1px)}.btn:disabled{opacity:.6;cursor:default}
.btn.sm{padding:10px 18px;font-size:12px}.btn.ghost{background:transparent;color:var(--ac)}
/* hero */
.hero{position:relative;min-height:100vh;min-height:100svh;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--hero-ink);overflow:hidden}
.hero-bg{position:absolute;inset:0;background:var(--hero-bg,linear-gradient(160deg,#3a1220,#12060b));background-size:cover;background-position:center}
.hero-sh{position:absolute;inset:0;background:var(--hero-sh,linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,.55)))}
.hero-txt{position:relative;z-index:2;padding:90px 24px 100px;max-width:900px;width:100%}
.hero .orn-frame{position:absolute;inset:18px;pointer-events:none;z-index:1}.hero .orn-frame svg{width:100%;height:100%}
.bless{font-family:var(--fh);font-size:clamp(15px,3.6vw,20px);letter-spacing:.08em;opacity:.9;margin-bottom:18px}
.greet{font-family:var(--fh);font-style:italic;font-size:clamp(18px,4vw,24px);margin-bottom:10px;opacity:.95}
.kick{font-size:12px;letter-spacing:.34em;text-transform:uppercase;opacity:.85;margin-bottom:16px}
.names{font-family:var(--fd);font-weight:400;margin:6px 0 20px;line-height:1.02;font-size:clamp(58px,15vw,132px);display:flex;flex-direction:column;align-items:center}
.names .amp{font-size:.5em;opacity:.85;line-height:1}
.when{font-family:var(--fh);font-size:clamp(18px,4.2vw,26px);letter-spacing:.05em;display:flex;flex-wrap:wrap;gap:10px 14px;justify-content:center}.when b{color:var(--ac)}
.time{margin-top:6px;opacity:.85;letter-spacing:.2em;font-size:13px;text-transform:uppercase}
.scrollcue{position:absolute;left:50%;bottom:-62px;width:22px;height:36px;margin-left:-11px;border:1.5px solid currentColor;border-radius:14px;opacity:.55}.scrollcue i{position:absolute;left:50%;top:7px;width:3px;height:7px;margin-left:-1.5px;background:currentColor;border-radius:2px;animation:cue 1.8s infinite}
@keyframes cue{0%{transform:translateY(0);opacity:1}100%{transform:translateY(12px);opacity:0}}
.hero-txt>*{opacity:0;transform:translateY(18px)}.is-open .hero-txt>*{animation:rise 1s cubic-bezier(.2,.7,.2,1) forwards}
.is-open .hero-txt>*:nth-child(2){animation-delay:.12s}.is-open .hero-txt>*:nth-child(3){animation-delay:.24s}.is-open .hero-txt>*:nth-child(4){animation-delay:.36s}.is-open .hero-txt>*:nth-child(5){animation-delay:.5s}.is-open .hero-txt>*:nth-child(6){animation-delay:.65s}.is-open .hero-txt>*:nth-child(7){animation-delay:.8s}.is-open .hero-txt>*:nth-child(8){animation-delay:.95s}
@keyframes rise{to{opacity:1;transform:none}}
.hero-split{display:grid;grid-template-columns:1.05fr .95fr;align-items:center;text-align:left;gap:0;color:var(--ink);background:var(--bg)}
.hero-split .hero-txt{padding:90px 5vw;max-width:none}.hero-split .names,.hero-split .when{align-items:flex-start;justify-content:flex-start}
.hero-fr{position:relative;align-self:stretch;min-height:520px;background:var(--bg2)}.hero-fr img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero-empty{position:absolute;inset:0;background:linear-gradient(160deg,var(--bg2),var(--line))}
.hero-split .scrollcue{display:none}
/* intro + families */
.sec-fam{padding-top:56px}.intro{font-family:var(--fh);font-size:clamp(19px,3.6vw,26px);line-height:1.6;max-width:680px;margin:0 auto 38px;font-style:italic}
.fam-h{font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--mut);margin-bottom:18px}.fam-row{display:flex;flex-wrap:wrap;gap:26px 60px;justify-content:center}
.fam small{display:block;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--ac);margin-bottom:4px}.fam b{font-family:var(--fh);font-size:clamp(19px,3.4vw,24px);font-weight:600}
/* events */
.evs{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:22px;text-align:center}
.ev{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:30px 22px;position:relative;display:flex;flex-direction:column;align-items:center;gap:14px}
.ev-d{display:flex;flex-direction:column;align-items:center;line-height:1}.ev-d b{font-family:var(--fh);font-size:54px;font-weight:600;color:var(--ac)}.ev-d span{font-size:13px;letter-spacing:.24em;text-transform:uppercase;margin-top:4px}.ev-d small{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mut);margin-top:3px}
.ev-b{display:flex;flex-direction:column;align-items:center;gap:6px}.ev h3{font-family:var(--fh);font-size:30px;font-weight:600;margin:0;line-height:1.1}
.ev-t{font-weight:600;letter-spacing:.12em;color:var(--ac);font-size:14px}.ev-w{display:flex;flex-direction:column;font-size:15px}.ev-w b{font-weight:600}.ev-w span,.ev-x,.ev-n{color:var(--mut);font-size:14px}.ev-n{margin:4px 0 0;max-width:30ch}
.ev-a{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:10px}
.evs-rows{display:block}.evs-rows .ev{flex-direction:row;align-items:flex-start;text-align:left;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;padding:28px 0;gap:30px}.evs-rows .ev:last-child{border-bottom:1px solid var(--line)}.evs-rows .ev-b{align-items:flex-start;flex:1}.evs-rows .ev-d{min-width:86px}.evs-rows .ev-a{justify-content:flex-start}.evs-rows .ev-w{align-items:flex-start}
/* countdown */
.cd{display:flex;justify-content:center;gap:clamp(8px,2.4vw,22px);flex-wrap:wrap}.cd-c{min-width:74px;padding:18px 8px 14px;border:1px solid var(--line);border-radius:16px;background:var(--card);display:flex;flex-direction:column;align-items:center}
.cd-c b{font-family:var(--fh);font-size:clamp(34px,8vw,52px);font-weight:600;line-height:1;color:var(--ac);font-variant-numeric:tabular-nums}.cd-c span{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mut);margin-top:8px}
.cd-done{font-family:var(--fh);font-size:30px;color:var(--ac)}.cd-date{margin-top:24px;font-family:var(--fh);font-size:20px;letter-spacing:.04em}
/* story */
.st-in{display:grid;gap:34px;align-items:center;max-width:860px;margin:0 auto}.has-ph .st-in{grid-template-columns:.8fr 1.2fr;text-align:left}
.st-ph{position:relative}.st-ph img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:200px 200px 16px 16px;display:block}
.st-tx p{font-family:var(--fh);font-size:clamp(19px,3.4vw,23px);line-height:1.75;margin:0 0 16px}
/* gallery */
.gal{column-count:2;column-gap:12px}.gi{display:block;width:100%;padding:0;border:0;background:var(--bg2);margin:0 0 12px;break-inside:avoid;cursor:zoom-in;border-radius:10px;overflow:hidden}.gi img{display:block;width:100%;height:auto;transition:transform .6s}.gi:hover img{transform:scale(1.04)}
.lb{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.94);display:flex;align-items:center;justify-content:center}.lb img{max-width:94vw;max-height:88vh;object-fit:contain;border-radius:6px}
.lb button{position:absolute;background:rgba(255,255,255,.12);color:#fff;border:0;width:46px;height:46px;border-radius:50%;font-size:28px;line-height:1;cursor:pointer}.lb-x{top:16px;right:16px}.lb-p{left:12px;top:50%;margin-top:-23px}.lb-n{right:12px;top:50%;margin-top:-23px}
/* video */
.vid{position:relative;max-width:820px;margin:0 auto;aspect-ratio:16/9;border-radius:16px;overflow:hidden;background:#000;cursor:pointer}.vid img,.vid iframe{position:absolute;inset:0;width:100%;height:100%;border:0;object-fit:cover}
.vid-p{position:absolute;left:50%;top:50%;width:76px;height:76px;margin:-38px 0 0 -38px;border-radius:50%;border:0;background:var(--ac);cursor:pointer;box-shadow:0 8px 30px rgba(0,0,0,.4)}.vid-p i{position:absolute;left:30px;top:24px;border-left:22px solid var(--on-ac);border-top:14px solid transparent;border-bottom:14px solid transparent}
/* rsvp */
.rs-note{color:var(--mut);margin:-10px auto 22px;max-width:520px}.rs-box{max-width:520px;margin:0 auto;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:26px 22px;text-align:left}
.rs-f{display:flex;flex-direction:column;gap:12px}.rs-f input[type=text],.rs-f input[type=tel],.rs-f textarea{width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:12px;background:transparent;color:inherit;font:inherit;font-size:16px;outline:0}
.rs-f input:focus,.rs-f textarea:focus{border-color:var(--ac)}.rs-f .bad{border-color:#d33}.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}
.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{flex:1 1 auto;padding:11px 12px;border-radius:999px;border:1px solid var(--line);background:transparent;color:inherit;font:600 13px var(--fb);cursor:pointer}.chip.on{background:var(--ac);border-color:var(--ac);color:var(--on-ac)}
.gs{display:flex;align-items:center;gap:14px;font-size:14px}.gs span{flex:1;color:var(--mut)}.gs button{width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:transparent;color:inherit;font-size:20px;cursor:pointer}.gs b{min-width:22px;text-align:center;font-size:18px}
.rs-err{color:#d33;font-size:14px;min-height:0}.rs-ok{text-align:center;padding:12px 0}.rs-tick{width:56px;height:56px;margin:0 auto 12px;border-radius:50%;background:var(--ac);color:var(--on-ac);font-size:30px;display:flex;align-items:center;justify-content:center}.rs-wa{margin-top:18px}
/* closing + footer */
.sec-end{padding-bottom:56px}.end-t{font-family:var(--fh);font-size:clamp(20px,3.6vw,26px);font-style:italic;max-width:560px;margin:18px auto}.end-n{font-family:var(--fd);font-size:clamp(32px,7vw,48px);color:var(--ac);line-height:1.2}.tag{margin-top:10px;letter-spacing:.14em;color:var(--mut);font-size:14px}
.share{margin-top:32px}.share small{display:block;font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--mut);margin-bottom:12px}.share-b{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.foot{position:relative;z-index:1;padding:46px 22px 40px;text-align:center;background:var(--foot-bg,rgba(0,0,0,.05));border-top:1px solid var(--line)}.foot small{font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--mut)}
.foot-logo{display:block;max-height:64px;max-width:200px;margin:14px auto 0;object-fit:contain}.foot-b{font-family:var(--fh);font-size:28px;font-weight:600;margin-top:8px;line-height:1.2}.foot-t{color:var(--mut);font-size:14px;margin-top:2px}
.foot-a{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:18px}.chipl{padding:9px 18px;border-radius:999px;border:1px solid var(--line);text-decoration:none;font-size:13px;font-weight:600;letter-spacing:.04em}.chipl:hover{border-color:var(--ac);color:var(--ac)}
.pw{margin-top:28px;font-size:11px;color:var(--mut);opacity:.75;letter-spacing:.06em}
/* cover, ribbon, music */
.cover{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;text-align:center;background:var(--cover-bg,var(--bg));color:var(--cover-ink,var(--ink));transition:opacity 1s ease,transform 1.1s cubic-bezier(.7,0,.2,1);overflow:hidden}
.cover.go{opacity:0;transform:scale(1.08);pointer-events:none}.cover>.orn{position:absolute;inset:0;pointer-events:none}.cover>.orn svg{width:100%;height:100%}
.cv-in{position:relative;z-index:2;padding:30px;max-width:620px}.cv-bl{font-family:var(--fh);font-size:clamp(15px,3.6vw,19px);letter-spacing:.08em;opacity:.9;margin-bottom:18px}.cv-kick{font-size:12px;letter-spacing:.34em;text-transform:uppercase;opacity:.85}.cv-g{font-family:var(--fh);font-style:italic;font-size:22px;margin-top:12px}
.cv-names{font-family:var(--fd);font-size:clamp(50px,13vw,92px);line-height:1.04;margin:14px 0 8px;display:flex;flex-direction:column;align-items:center}.cv-names i{font-style:normal;font-size:.5em;opacity:.85}
.cv-date{font-family:var(--fh);font-size:clamp(17px,3.8vw,22px);letter-spacing:.06em;margin-bottom:26px}.cv-btn{padding:15px 36px;border-radius:999px;border:1px solid var(--ac);background:transparent;color:var(--cover-ink,var(--ink));font:600 13px var(--fb);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;animation:pulse 2.4s infinite}
.cv-btn:hover{background:var(--ac);color:var(--on-ac)}@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--ac) 50%,transparent)}70%,100%{box-shadow:0 0 0 18px transparent}}
.ribbon{position:fixed;z-index:70;left:50%;bottom:14px;transform:translateX(-50%);padding:8px 18px;border-radius:999px;background:rgba(15,15,20,.88);color:#fff;font:600 12px var(--fb);letter-spacing:.06em;backdrop-filter:blur(6px);pointer-events:none;white-space:nowrap}
.mbtn{position:fixed;z-index:60;right:16px;bottom:16px;width:48px;height:48px;border-radius:50%;border:1px solid var(--line,rgba(255,255,255,.3));background:rgba(20,20,26,.78);backdrop-filter:blur(8px);display:flex;align-items:flex-end;justify-content:center;gap:3px;padding:15px 0;cursor:pointer;box-shadow:0 6px 20px rgba(0,0,0,.35)}
.mbtn i{width:3px;height:6px;background:#fff;border-radius:2px}.mbtn.on i{animation:eq 1s ease-in-out infinite}.mbtn.on i:nth-child(2){animation-delay:.25s}.mbtn.on i:nth-child(3){animation-delay:.5s}@keyframes eq{0%,100%{height:5px}50%{height:18px}}
@media(max-width:760px){.hero-split{grid-template-columns:1fr}.hero-split .hero-fr{order:-1;min-height:62vh}.hero-split .hero-txt{text-align:center;padding:44px 24px 70px}.hero-split .names,.hero-split .when{align-items:center;justify-content:center}
 .has-ph .st-in{grid-template-columns:1fr;text-align:center}.st-ph{max-width:280px;margin:0 auto}.sec{padding:60px 18px}.gal{column-count:2}.evs-rows .ev{flex-direction:column;align-items:center;text-align:center;gap:14px}.evs-rows .ev-b,.evs-rows .ev-w{align-items:center}.evs-rows .ev-a{justify-content:center}}
@media(min-width:900px){.gal{column-count:3}}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}.hero-txt>*{opacity:1;transform:none;animation:none!important}.cv-btn{animation:none}}

/* mobile-first touch comfort */
@media(max-width:760px){.btn{min-height:46px}.btn.sm{min-height:44px;padding:11px 18px}.chip{min-height:46px}.gs button{width:44px;height:44px}.chipl{min-height:44px;display:inline-flex;align-items:center}.cv-btn{min-height:50px}.sec{padding:56px 18px}.sh{margin-bottom:26px}}
@supports(padding:max(0px)){.foot{padding-bottom:max(40px,env(safe-area-inset-bottom))}.mbtn{bottom:max(16px,env(safe-area-inset-bottom))}}

/* smooth scrolling: freeze ambient animation while the finger is moving; drop expensive effects on phones */
.dg.is-scrolling *,.dg.is-scrolling *::before,.dg.is-scrolling *::after{animation-play-state:paused!important}
.fx{will-change:transform;contain:layout paint}
@media(max-width:760px){.dg *,.dg *::before,.dg *::after{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}.dg .hero-bg{background-attachment:scroll!important}}
@media(prefers-reduced-motion:reduce){.dg *,.dg *::before,.dg *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
