/* ===== Fonts (self-hosted) ===== */
@font-face{font-family:"Cinzel";src:url(fonts/cinzel-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Cinzel";src:url(fonts/cinzel-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Cormorant";src:url(fonts/cormorant-garamond-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Cormorant";src:url(fonts/cormorant-garamond-latin-500-normal.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Cormorant";src:url(fonts/cormorant-garamond-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Cormorant";src:url(fonts/cormorant-garamond-latin-400-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Great Vibes";src:url(fonts/great-vibes-latin-400-normal.woff2) format("woff2");font-display:swap}
@font-face{font-family:"Tiro Devanagari Hindi";src:url(fonts/tiro-devanagari-hindi-devanagari-400-normal.woff2) format("woff2");font-display:swap}
@font-face{font-family:"Noto Serif Gujarati";src:url(fonts/noto-serif-gujarati-gujarati-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Noto Serif Devanagari";src:url(fonts/noto-serif-devanagari-devanagari-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Noto Serif Devanagari";src:url(fonts/noto-serif-devanagari-devanagari-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}

:root{
  --maroon:#6b1326; --maroon-d:#3d0814; --night:#1a0409; --wine:#4a0c1b;
  --ivory:#fbf6ec; --ivory-2:#f4ead6; --cream:#efe2c6;
  --gold:#c9a24a; --gold-l:#e9cf8f; --gold-d:#8c6a22;
  --rose:#c47b84; --sage:#7f9a82; --ink:#3a2418; --ink-soft:#6e5544;
  --serif:"Cormorant","Noto Serif Devanagari",Georgia,"Times New Roman",serif;
  --caps:"Cinzel","Noto Serif Devanagari","Cormorant",Georgia,serif;
  --script:"Great Vibes","Tiro Devanagari Hindi",cursive;
  --deva:"Noto Serif Devanagari",serif;
  --guj:"Noto Serif Gujarati",serif;
  --radius:18px;
  --ease:cubic-bezier(.2,.7,.2,1);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--serif);font-size:19px;line-height:1.55;color:var(--ink);background:var(--ivory);overflow-x:hidden;-webkit-font-smoothing:antialiased}
body.is-loading{overflow:hidden}
img{max-width:100%;height:auto;display:block}
[hidden]{display:none!important}
a{color:inherit}
button{font:inherit}
p{margin:0 0 .4em}
.script{font-family:var(--script);font-weight:400}
.cinzel{font-family:var(--caps)}
.deva{font-family:var(--deva)}
.eyebrow{font-family:var(--caps);letter-spacing:.22em;font-size:.72rem;text-transform:uppercase;color:var(--gold-d);margin-bottom:.8em}
.title{font-family:var(--caps);font-weight:400;font-size:clamp(1.6rem,6vw,2.6rem);letter-spacing:.06em;margin:.1em 0 .3em;color:var(--maroon);line-height:1.2}
.sub{color:var(--ink-soft);font-style:italic;max-width:34ch;margin:0 auto 1.2em}
.hashtag{font-style:italic;letter-spacing:.04em;color:var(--gold-l)}

/* ===== Buttons ===== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55em;padding:.85em 1.6em;border-radius:999px;border:1px solid var(--gold);background:linear-gradient(180deg,#d8b45f,#b58b36);color:#2a0b10;font-family:var(--caps);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:transform .25s var(--ease),box-shadow .25s var(--ease);box-shadow:0 6px 20px -8px rgba(140,106,34,.7)}
.btn svg{width:1.15em;height:1.15em;flex:none}
.btn:hover{transform:translateY(-2px);box-shadow:0 10px 26px -8px rgba(140,106,34,.8)}
.btn:focus-visible{outline:2px solid var(--gold-l);outline-offset:3px}
.btn--ghost{background:transparent;color:var(--maroon);box-shadow:none}
.btn--sm{padding:.65em 1.2em;font-size:.68rem}
.btn--wa{background:linear-gradient(180deg,#2fbf62,#1e9c4c);border-color:#1e9c4c;color:#fff;box-shadow:0 8px 22px -10px rgba(30,156,76,.8)}
.btn--block{width:100%}
.btn--glow{position:relative;overflow:hidden}
.btn--glow::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);transform:translateX(-120%);animation:sheen 3.6s 2.2s infinite}
@keyframes sheen{0%{transform:translateX(-120%)}35%,100%{transform:translateX(120%)}}

/* ===== Loader ===== */
.loader{position:fixed;inset:0;z-index:100;display:grid;place-content:center;justify-items:center;gap:18px;background:radial-gradient(ellipse at 50% 45%,#3d0a17,#12030a 70%);transition:opacity .9s var(--ease),visibility .9s}
.loader__diya{width:110px;height:110px;filter:drop-shadow(0 0 30px rgba(255,190,90,.45))}
.loader__diya svg{width:100%;height:100%}
.loader .diya-flame,.loader .diya-glow{transform-origin:60px 58px;animation:light 1.1s var(--ease) both,flicker 1.6s 1.1s ease-in-out infinite}
.loader__names{font-family:var(--script);font-size:2.6rem;color:var(--gold-l);opacity:0;animation:fadeUp 1s .7s var(--ease) forwards}
.loader__names span{font-size:.8em;color:var(--gold)}
body:not(.is-loading) .loader{opacity:0;visibility:hidden}
@keyframes light{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

.diya-svg .diya-flame{transform-origin:60px 58px;animation:flicker 1.6s ease-in-out infinite}
.diya-svg .diya-glow{transform-origin:60px 48px;animation:glow 2.4s ease-in-out infinite}
@keyframes flicker{0%,100%{transform:scale(1,1) rotate(0)}25%{transform:scale(.96,1.05) rotate(-2deg)}50%{transform:scale(1.03,.97) rotate(1.5deg)}75%{transform:scale(.98,1.04) rotate(-1deg)}}
@keyframes glow{0%,100%{opacity:.32;transform:scale(1)}50%{opacity:.5;transform:scale(1.08)}}

/* ===== HERO ===== */
.hero{position:relative;min-height:100svh;display:grid;place-items:center;padding:56px 22px 110px;overflow:hidden;color:var(--ivory);isolation:isolate;text-align:center}
.hero__bg{position:absolute;inset:0;z-index:-2;transition:opacity 1s}
.fx{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.hero__inner{position:relative;max-width:640px;width:100%}
.hero__inner > *{opacity:0;animation:fadeUp 1s var(--ease) forwards}
.hero__inner > *:nth-child(1){animation-delay:.15s}.hero__inner > *:nth-child(2){animation-delay:.3s}.hero__inner > *:nth-child(3){animation-delay:.45s}.hero__inner > *:nth-child(4){animation-delay:.6s}.hero__inner > *:nth-child(5){animation-delay:.75s}.hero__inner > *:nth-child(6){animation-delay:.9s}.hero__inner > *:nth-child(7){animation-delay:1.05s}.hero__inner > *:nth-child(8){animation-delay:1.2s}.hero__inner > *:nth-child(9){animation-delay:1.35s}
body.is-loading .hero__inner > *{animation-play-state:paused}
.hero__scroll{position:absolute;bottom:72px;left:50%;width:26px;height:42px;margin-left:-13px;border:1.5px solid currentColor;border-radius:14px;opacity:.55}
.hero__scroll span{position:absolute;left:50%;top:8px;width:3px;height:8px;margin-left:-1.5px;border-radius:2px;background:currentColor;animation:scrollDot 1.8s infinite}
@keyframes scrollDot{0%{opacity:0;transform:translateY(0)}30%{opacity:1}100%{opacity:0;transform:translateY(14px)}}

.h-eyebrow{font-family:var(--caps);font-size:.72rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-l);opacity:.9}
.h-dear{font-style:italic;font-size:1.15rem;color:var(--gold-l);margin-top:.2em}
.h-title{font-family:var(--script);font-weight:400;font-size:clamp(3.4rem,15vw,6.4rem);line-height:1;margin:.12em 0 .18em;color:#fff3d6;text-shadow:0 0 28px rgba(255,196,96,.45),0 2px 0 rgba(0,0,0,.2)}
.hero[data-phase="diwali"] .h-title{font-size:clamp(2.9rem,13.2vw,6.4rem);margin-top:0}
.h-title.guj{font-family:var(--guj);font-weight:600;font-size:clamp(2.8rem,13vw,5.4rem);letter-spacing:.02em;line-height:1.25}
.h-sub{font-family:var(--caps);letter-spacing:.18em;font-size:clamp(.85rem,3.6vw,1.05rem);text-transform:uppercase;color:var(--gold-l);margin-bottom:.8em}
.h-msg{font-size:clamp(1.08rem,4.4vw,1.32rem);font-style:italic;max-width:30ch;margin:0 auto 1.2em;color:#f6e8cc;line-height:1.5}
.h-names{font-family:var(--caps);font-size:clamp(1.05rem,4.6vw,1.45rem);letter-spacing:.32em;margin:.6em 0 .1em;color:#fff}
.h-names .heart{color:#e0566c;letter-spacing:0;margin:0 .35em;display:inline-block;animation:beat 1.6s ease-in-out infinite}
@keyframes beat{0%,100%{transform:scale(1)}15%{transform:scale(1.18)}30%{transform:scale(1)}45%{transform:scale(1.12)}}
.h-tag{font-style:italic;color:var(--gold-l);margin-bottom:1.3em}
.h-chip{display:inline-flex;align-items:center;gap:.5em;font-family:var(--caps);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;border:1px solid rgba(233,207,143,.5);border-radius:999px;padding:.55em 1.1em;margin:0 auto 1.4em;color:var(--gold-l);background:rgba(0,0,0,.18);backdrop-filter:blur(4px)}
.h-chip b{color:#fff;font-weight:600}
.h-cta{margin-top:.4em}

/* Diya stage (Diwali) */
.stage{position:relative;width:min(280px,66vw);aspect-ratio:1;margin:0 auto -6px}
.stage__mandala{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;animation:spin 80s linear infinite;filter:drop-shadow(0 0 18px rgba(255,190,90,.3))}
.stage__rangoli{position:absolute;inset:14%;animation:spin 60s linear infinite reverse;opacity:.55}
.stage__diya{position:absolute;left:50%;top:50%;width:42%;transform:translate(-50%,-56%);cursor:pointer;background:none;border:0;padding:0;filter:drop-shadow(0 0 22px rgba(255,180,70,.55));-webkit-tap-highlight-color:transparent}
.stage__diya svg{width:100%;height:auto;aspect-ratio:1}
.stage__hint{position:absolute;left:0;right:0;bottom:23%;font-size:.6rem;letter-spacing:.12em;font-family:var(--caps);color:var(--gold-l);opacity:.75;text-transform:uppercase;animation:pulse 2.4s infinite}
.stage.lit .stage__hint{opacity:0;transition:opacity .4s;animation:none}
@keyframes pulse{50%{opacity:.35}}
@keyframes spin{to{transform:rotate(360deg)}}
.diya-row{display:flex;justify-content:center;gap:clamp(10px,4vw,26px);margin:1.1em 0 .4em}
.diya-row svg{width:clamp(34px,9vw,48px);height:auto;aspect-ratio:1;filter:drop-shadow(0 0 12px rgba(255,180,70,.5))}
.diya-row svg:nth-child(2) .diya-flame{animation-delay:-.4s}.diya-row svg:nth-child(3) .diya-flame{animation-delay:-.9s}.diya-row svg:nth-child(4) .diya-flame{animation-delay:-1.3s}.diya-row svg:nth-child(5) .diya-flame{animation-delay:-.2s}

/* Phase backgrounds */
.hero[data-phase="diwali"] .hero__bg{background:
  radial-gradient(ellipse 70% 45% at 50% 38%,rgba(255,170,70,.20),transparent 70%),
  radial-gradient(ellipse at 50% 120%,#5a1020 0%,transparent 60%),
  linear-gradient(180deg,#0b0613 0%,#1c0712 45%,#3a0a18 100%)}
.hero[data-phase="newyear"] .hero__bg{background:
  radial-gradient(ellipse 60% 40% at 50% 42%,rgba(255,200,110,.22),transparent 70%),
  linear-gradient(180deg,#3b0716 0%,#5d1022 55%,#2a0610 100%)}
.hero[data-phase="newyear"] .hero__bg::after{content:"";position:absolute;inset:0;opacity:.09;background:url(img/mandala.webp) center 46%/min(560px,120vw) no-repeat}
.hero[data-phase="countdown"],.hero[data-phase="celebration"],.hero[data-phase="married"]{color:var(--ink)}
.hero[data-phase="countdown"] .hero__bg,.hero[data-phase="celebration"] .hero__bg,.hero[data-phase="married"] .hero__bg{background:
  linear-gradient(180deg,rgba(251,246,236,.97) 0%,rgba(251,246,236,.9) 52%,rgba(251,246,236,.35) 80%,rgba(251,246,236,.65) 100%),
  url(img/garden.webp) center bottom/cover no-repeat,#f6ecd9}
.hero[data-phase="countdown"] .h-eyebrow,.hero[data-phase="celebration"] .h-eyebrow,.hero[data-phase="married"] .h-eyebrow{color:var(--gold-d)}
.hero[data-phase="countdown"] .h-title,.hero[data-phase="celebration"] .h-title,.hero[data-phase="married"] .h-title{color:var(--maroon);text-shadow:none;font-size:clamp(2.8rem,12vw,5rem)}
.hero[data-phase="countdown"] .h-names,.hero[data-phase="celebration"] .h-names,.hero[data-phase="married"] .h-names{color:var(--maroon)}
.hero[data-phase="countdown"] .h-tag,.hero[data-phase="celebration"] .h-tag,.hero[data-phase="married"] .h-tag,.hero[data-phase="countdown"] .h-dear,.hero[data-phase="celebration"] .h-dear,.hero[data-phase="married"] .h-dear{color:var(--gold-d)}
.hero[data-phase="countdown"] .h-msg,.hero[data-phase="celebration"] .h-msg,.hero[data-phase="married"] .h-msg{color:var(--ink-soft)}
.hero[data-phase="countdown"] .hero__scroll,.hero[data-phase="celebration"] .hero__scroll,.hero[data-phase="married"] .hero__scroll{color:var(--maroon)}
.h-mono{width:min(210px,52vw);margin:0 auto -.2em;filter:drop-shadow(0 8px 18px rgba(140,106,34,.18))}

/* Countdown */
.cd{display:flex;justify-content:center;gap:clamp(6px,2.4vw,16px);margin:.4em 0 1.4em}
.cd__cell{min-width:clamp(64px,19vw,104px);padding:.7em .3em .55em;border-radius:14px;background:linear-gradient(180deg,#fffaf0,#f3e5c6);border:1px solid rgba(201,162,74,.6);box-shadow:0 10px 26px -14px rgba(107,19,38,.45),inset 0 0 0 4px rgba(255,255,255,.55)}
.cd__num{display:block;font-family:var(--caps);font-size:clamp(1.7rem,8vw,2.9rem);line-height:1;color:var(--maroon);font-variant-numeric:tabular-nums}
.cd__lbl{display:block;font-family:var(--caps);font-size:.58rem;letter-spacing:.2em;color:var(--gold-d);margin-top:.5em}
.cd__sep{align-self:center;font-family:var(--caps);font-size:1.6rem;color:var(--gold);margin-top:-.5em}
@media (max-width:420px){.cd__sep{display:none}}
.cd__target{font-size:.95rem;color:var(--ink-soft);margin:-.6em 0 1.4em;font-style:italic}

.now-panel{max-width:420px;margin:0 auto 1.3em;padding:1em 1.2em;border-radius:16px;background:rgba(255,255,255,.7);border:1px solid rgba(201,162,74,.55);backdrop-filter:blur(6px);box-shadow:0 12px 30px -18px rgba(107,19,38,.4)}
.now-panel .lbl{font-family:var(--caps);letter-spacing:.2em;font-size:.62rem;color:var(--gold-d);text-transform:uppercase}
.now-panel .np-ev{font-family:var(--caps);font-size:1.15rem;color:var(--maroon);margin:.2em 0}
.now-panel .meta{font-size:.98rem;color:var(--ink-soft)}

/* Lanterns + toran (new year) */
.hero__lanterns,.toran{display:none}
.hero[data-phase="newyear"] .hero__lanterns,.hero[data-phase="newyear"] .toran{display:block}
.lantern{position:absolute;top:0;width:clamp(36px,9vw,58px);height:auto;aspect-ratio:60/140;transform-origin:50% 0;animation:swing 4.5s ease-in-out infinite;filter:drop-shadow(0 0 14px rgba(255,200,110,.45))}
.lantern .lantern-light{animation:glow 2.6s ease-in-out infinite}
.l1{left:6%;height:auto;animation-delay:-1s;top:-10px}.l2{left:20%;top:-34px;animation-delay:-2.2s;transform:scale(.8)}
.l3{right:20%;top:-30px;animation-delay:-.4s}.l4{right:6%;top:-6px;animation-delay:-3s}
@media (max-width:600px){.l2,.l3{display:none}}
@keyframes swing{0%,100%{rotate:-4deg}50%{rotate:4deg}}
.toran{position:absolute;top:0;left:0;right:0;height:28px;background:
  radial-gradient(circle at 12px 10px,#f2a21a 7px,#d97a07 8px,transparent 9px) 0 0/24px 22px repeat-x,
  radial-gradient(circle at 12px 4px,#2f6b3a 5px,transparent 6px) 12px 16px/48px 20px repeat-x;opacity:.92}

/* ===== NAV ===== */
.nav{position:fixed;z-index:40;left:50%;bottom:max(14px,env(safe-area-inset-bottom));transform:translate(-50%,140%);display:flex;gap:2px;padding:6px;border-radius:999px;background:rgba(42,6,16,.88);backdrop-filter:blur(10px);border:1px solid rgba(201,162,74,.45);box-shadow:0 14px 30px -12px rgba(0,0,0,.5);transition:transform .5s var(--ease)}
.nav.show{transform:translate(-50%,0)}
.nav a{font-family:var(--caps);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;text-decoration:none;color:var(--gold-l);padding:.75em .9em;border-radius:999px;white-space:nowrap}
.nav a.active{background:rgba(201,162,74,.18);color:#fff}
.nav .nav__cta{background:linear-gradient(180deg,#d8b45f,#b58b36);color:#2a0b10}
@media (max-width:380px){.nav a{padding:.75em .62em;letter-spacing:.06em}}

/* ===== Sections ===== */
.sec{padding:clamp(64px,12vw,120px) 20px;text-align:center;position:relative}
.sec__head{max-width:640px;margin:0 auto clamp(28px,6vw,48px)}
.reveal{opacity:0;transform:translateY(26px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* Invitation */
.invite{background:
  radial-gradient(ellipse at 50% 0%,rgba(201,162,74,.14),transparent 60%),
  var(--ivory)}
.invite::before{content:"";position:absolute;inset:0;opacity:.5;background-image:radial-gradient(rgba(201,162,74,.22) 1px,transparent 1.4px);background-size:22px 22px;mask-image:linear-gradient(transparent,#000 20%,#000 80%,transparent);pointer-events:none}
.arch{position:relative;max-width:600px;margin:0 auto;padding:clamp(40px,9vw,64px) clamp(20px,6vw,56px) clamp(40px,8vw,56px);background:linear-gradient(180deg,#fffdf8,#fbf3e2);border-radius:300px 300px 22px 22px;border:1px solid rgba(201,162,74,.7);box-shadow:0 30px 60px -36px rgba(107,19,38,.45),inset 0 0 0 8px #fffdf8,inset 0 0 0 9px rgba(201,162,74,.5)}
.invite__mono{width:min(190px,48vw);margin:-4px auto 6px}
.shloka-title{color:var(--maroon);font-weight:600;font-size:1.05rem;margin-bottom:.35em}
.shloka{color:var(--maroon);font-size:.92rem;line-height:1.7;opacity:.9}
.flourish{height:18px;margin:1.1em auto;width:min(240px,70%);background:
  linear-gradient(90deg,transparent,var(--gold) 30%,var(--gold) 70%,transparent) center/100% 1px no-repeat;position:relative}
.flourish::after{content:"";position:absolute;left:50%;top:50%;width:10px;height:10px;transform:translate(-50%,-50%) rotate(45deg);border:1px solid var(--gold);background:var(--ivory)}
.dear{font-style:italic;font-size:1.2rem;color:var(--gold-d);margin-bottom:.4em}
.invite__lead{font-size:1.12rem;color:var(--ink-soft)}
.invite__lead strong{color:var(--maroon);font-weight:600}
.couple-name{font-size:clamp(3.6rem,15vw,5.2rem);line-height:1.05;margin:.25em 0 .1em;color:var(--maroon)}
.lineage{font-family:var(--caps);font-size:clamp(.6rem,2.5vw,.74rem);letter-spacing:.08em;line-height:1.9;color:var(--ink-soft)}
.with{font-family:var(--script);font-size:1.9rem;color:var(--gold-d);margin:.3em 0 -.3em}
.invite__dates{font-family:var(--caps);letter-spacing:.14em;font-size:.82rem;color:var(--maroon)}
.invite__dates span{font-size:1.25em}

/* Events */
.events{background:linear-gradient(180deg,var(--ivory) 0%,var(--ivory-2) 100%)}
.day{max-width:1080px;margin:0 auto 46px}
.day__label{display:flex;align-items:center;gap:14px;justify-content:center;font-family:var(--caps);letter-spacing:.22em;font-size:.78rem;color:var(--maroon);margin-bottom:22px;text-transform:uppercase}
.day__label::before,.day__label::after{content:"";height:1px;flex:1;max-width:120px;background:linear-gradient(90deg,transparent,var(--gold))}
.day__label::after{transform:scaleX(-1)}
.ev-grid{display:grid;gap:22px;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr))}
.ev{--acc:var(--maroon);--tint:#fff8ec;position:relative;text-align:left;border-radius:var(--radius);overflow:hidden;background:var(--tint);border:1px solid rgba(201,162,74,.55);box-shadow:0 24px 50px -32px rgba(60,10,20,.55);display:flex;flex-direction:column}
.ev__art{position:relative;aspect-ratio:16/10;overflow:hidden;background:#eee}
.ev__art img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.ev:hover .ev__art img{transform:scale(1.04)}
.ev__art::after{content:"";position:absolute;inset:auto 0 0;height:45%;background:linear-gradient(transparent,var(--tint))}
.ev__icon{position:absolute;z-index:2;top:14px;left:14px;width:50px;height:50px;border-radius:50%;display:grid;place-items:center;background:rgba(255,253,246,.92);color:var(--acc);border:1px solid rgba(201,162,74,.8);box-shadow:0 6px 14px -6px rgba(0,0,0,.35)}
.ev__icon svg{width:30px;height:30px}
.ev__status{position:absolute;z-index:2;top:16px;right:14px;font-family:var(--caps);font-size:.58rem;letter-spacing:.16em;text-transform:uppercase;padding:.5em .9em;border-radius:999px;background:var(--acc);color:#fff}
.ev__body{padding:4px 22px 22px;display:flex;flex-direction:column;flex:1}
.ev__name{font-family:var(--caps);font-weight:400;font-size:1.45rem;letter-spacing:.04em;color:var(--acc);margin:0;line-height:1.2}
.ev__alt{font-family:var(--deva);color:var(--acc);font-size:1.05rem;opacity:.85}
.ev__note{font-style:italic;color:var(--ink-soft);font-size:1rem;margin:.1em 0 0}
.ev__date{display:flex;align-items:center;gap:12px;margin:14px 0 10px}
.ev__day{font-family:var(--caps);font-size:2.4rem;line-height:1;color:var(--acc)}
.ev__dmeta{font-family:var(--caps);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;line-height:1.6;color:var(--ink-soft);border-left:1px solid rgba(201,162,74,.7);padding-left:12px}
.ev__dmeta b{color:var(--ink);font-weight:600}
.ev__rows{list-style:none;margin:0 0 16px;padding:0;font-size:1.02rem;display:grid;gap:8px}
.ev__rows li{display:grid;grid-template-columns:22px 1fr;gap:8px;align-items:start}
.ev__rows svg{width:18px;height:18px;margin-top:4px;color:var(--gold-d)}
.ev__rows small{display:block;font-family:var(--caps);font-size:.58rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-d)}
.ev__actions{margin-top:auto;display:flex;gap:8px;flex-wrap:wrap}
.ev__actions .btn{flex:1 1 auto;padding:.75em 1em;font-size:.64rem}
.ev--mayra{--acc:#b0153f;--tint:#fffaf0}
.ev--sangeet{--acc:#d9c2ff;--tint:#1d0b2e;color:#efe6ff;border-color:rgba(190,160,255,.45)}
.ev--sangeet .ev__dmeta,.ev--sangeet .ev__note{color:#cbb9ea}.ev--sangeet .ev__dmeta b{color:#fff}
.ev--sangeet .ev__rows svg,.ev--sangeet .ev__rows small{color:#cdb3ff}
.ev--sangeet .ev__icon{background:rgba(40,16,64,.9);color:#e7d7ff}
.ev--sangeet .btn--ghost{color:#efe6ff;border-color:rgba(205,179,255,.6)}
.ev--sangeet .ev__status{color:#1d0b2e}
.ev--rang{--acc:#c48a10;--tint:#fffbea}
.ev--baarat{--acc:#a0161f;--tint:#fff6ee}
.ev--phere{--acc:#8a1020;--tint:#fff4ea}
.ev--phere .ev__art img{object-position:50% 40%}
.ev--baarat .ev__art img{object-position:72% 30%}
.ev.is-past{opacity:.72}

.upnext{max-width:560px;margin:-12px auto 34px;padding:14px 18px;border-radius:14px;background:var(--maroon);color:var(--ivory);display:flex;gap:14px;align-items:center;text-align:left;box-shadow:0 14px 30px -16px rgba(107,19,38,.7)}
.upnext .dot{width:10px;height:10px;border-radius:50%;background:#7dff9b;box-shadow:0 0 0 0 rgba(125,255,155,.7);animation:ping 1.8s infinite;flex:none}
@keyframes ping{70%{box-shadow:0 0 0 10px rgba(125,255,155,0)}100%{box-shadow:0 0 0 0 rgba(125,255,155,0)}}
.upnext small{display:block;font-family:var(--caps);font-size:.6rem;letter-spacing:.2em;color:var(--gold-l)}

/* Venues */
.venues{background:var(--ivory-2)}
.venue-grid{max-width:1080px;margin:0 auto;display:grid;gap:22px;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr))}
.venue{border-radius:var(--radius);overflow:hidden;background:#fffdf8;border:1px solid rgba(201,162,74,.55);box-shadow:0 24px 50px -32px rgba(60,10,20,.45);text-align:left;display:flex;flex-direction:column}
.venue__map{aspect-ratio:16/10;background:linear-gradient(135deg,#efe3c8,#e5d3ad);position:relative}
.venue__map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:sepia(.18) saturate(.9)}
.venue__map{overflow:hidden;background:
  radial-gradient(circle at 50% 46%,rgba(255,255,255,.75) 0 60px,transparent 140px),
  repeating-linear-gradient(28deg,transparent 0 38px,rgba(201,162,74,.28) 38px 41px,transparent 41px 90px),
  repeating-linear-gradient(-62deg,transparent 0 54px,rgba(255,255,255,.85) 54px 62px,transparent 62px 120px),
  repeating-linear-gradient(118deg,transparent 0 70px,rgba(127,154,130,.22) 70px 92px,transparent 92px 160px),
  linear-gradient(135deg,#f1e6cd,#e7d6b2)}
.venue__map .map-ph{position:absolute;inset:0;z-index:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-decoration:none;color:var(--maroon)}
.map-ph__pin{width:52px;height:52px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);display:grid;place-items:center;background:linear-gradient(180deg,#8a1a30,#5a0f1e);box-shadow:0 10px 18px -8px rgba(90,15,30,.7);animation:pinDrop 2.4s ease-in-out infinite}
.map-ph__pin svg{width:22px;height:22px;color:#f6dc9a;transform:rotate(45deg)}
@keyframes pinDrop{0%,100%{translate:0 0}50%{translate:0 -6px}}
.map-ph__name{margin-top:12px;font-family:var(--caps);font-size:1rem;letter-spacing:.08em;background:rgba(255,253,246,.92);padding:.25em .8em;border-radius:8px;border:1px solid rgba(201,162,74,.6)}
.map-ph__cta{font-family:var(--caps);font-size:.58rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-d);background:rgba(255,253,246,.85);padding:.3em .7em;border-radius:6px}
.venue__map iframe{z-index:1}
.venue__body{padding:20px 22px 24px;display:flex;flex-direction:column;flex:1}
.venue h3{font-family:var(--caps);font-weight:400;font-size:1.4rem;color:var(--maroon);margin:0 0 .3em;letter-spacing:.04em}
.venue__addr{color:var(--ink-soft)}
.venue__halls{font-size:1rem;margin:.6em 0 1.2em;line-height:1.8}
.venue__halls span{font-family:var(--caps);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:#fff;background:var(--gold-d);padding:.3em .7em;border-radius:6px;margin-right:6px}
.venue .btn{margin-top:auto;align-self:flex-start}

/* Family */
.family{background:linear-gradient(180deg,#eef2ea 0%,#e4ebe1 100%)}
.family::before{content:"";position:absolute;inset:0;opacity:.35;background:repeating-linear-gradient(45deg,transparent 0 18px,rgba(127,154,130,.18) 18px 19px),repeating-linear-gradient(-45deg,transparent 0 18px,rgba(127,154,130,.18) 18px 19px);pointer-events:none}
.family__card{position:relative;max-width:820px;margin:0 auto;padding:clamp(36px,7vw,60px) clamp(20px,5vw,48px);background:#fbfaf3;border-radius:240px 240px 20px 20px;border:1px solid rgba(201,162,74,.65);box-shadow:inset 0 0 0 8px #fbfaf3,inset 0 0 0 9px rgba(127,154,130,.6),0 30px 60px -38px rgba(30,50,30,.55)}
.tilde{font-family:var(--serif);font-size:1.15rem;color:var(--ink-soft);letter-spacing:.06em;margin:0 0 .35em}
.family__name{font-size:clamp(3rem,12vw,4.4rem);color:var(--maroon);margin:0 0 .4em;line-height:1.1}
.family__grid{display:grid;gap:28px 40px;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));color:var(--maroon)}
.family__grid p{font-weight:500;line-height:1.5}
.family .place{color:var(--ink-soft);font-weight:400;font-size:.95rem}
.family .special{font-family:var(--caps);letter-spacing:.06em;font-size:1.1rem}

/* RSVP */
.rsvp{background:radial-gradient(ellipse at 50% 0%,#5d1022,#2a0610 70%);color:var(--ivory)}
.rsvp .title{color:#fff3d6}.rsvp .eyebrow{color:var(--gold-l)}.rsvp .sub{color:#e8d4b6}
.rsvp__form{max-width:520px;margin:0 auto 34px;padding:26px clamp(18px,5vw,30px);border-radius:var(--radius);background:rgba(255,248,232,.06);border:1px solid rgba(201,162,74,.45);text-align:left;display:grid;gap:16px;backdrop-filter:blur(4px)}
.field{display:grid;gap:6px}
.field span{font-family:var(--caps);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-l)}
.field input,.field select,.field textarea{width:100%;font:inherit;font-size:1.05rem;color:#fff8ea;background:rgba(0,0,0,.25);border:1px solid rgba(201,162,74,.45);border-radius:12px;padding:.7em .9em;outline:none;-webkit-appearance:none;appearance:none}
.field select{background-image:linear-gradient(45deg,transparent 50%,var(--gold-l) 50%),linear-gradient(135deg,var(--gold-l) 50%,transparent 50%);background-position:calc(100% - 18px) 55%,calc(100% - 13px) 55%;background-size:5px 5px;background-repeat:no-repeat}
.field select option{color:#222}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--gold-l);box-shadow:0 0 0 3px rgba(201,162,74,.25)}
.field input::placeholder,.field textarea::placeholder{color:rgba(255,240,215,.4)}
.field input.err{border-color:#ff8a8a}
.field-row{display:grid;grid-template-columns:1fr 1.3fr;gap:12px}
.choice{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.choice label{position:relative;cursor:pointer}
.choice input{position:absolute;opacity:0}
.choice span{display:block;text-align:center;padding:.8em .5em;border-radius:12px;border:1px solid rgba(201,162,74,.45);font-size:1.02rem;line-height:1.25;transition:.25s}
.choice input:checked+span{background:linear-gradient(180deg,#d8b45f,#b58b36);color:#2a0b10;border-color:var(--gold-l);font-weight:600}
.choice input:focus-visible+span{outline:2px solid var(--gold-l);outline-offset:2px}
.contacts{list-style:none;margin:0 auto;padding:0;max-width:760px;display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.contact{display:flex;align-items:center;gap:10px;padding:10px 10px 10px 18px;border-radius:14px;border:1px solid rgba(201,162,74,.35);background:rgba(255,248,232,.05);text-align:left}
.contact__who{flex:1;min-width:0}
.contact__who b{display:block;font-weight:600;font-size:1.06rem;color:#fff3d6}
.contact__who span{font-family:var(--caps);font-size:.72rem;letter-spacing:.1em;color:var(--gold-l)}
.icon-btn{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(201,162,74,.55);color:var(--gold-l);text-decoration:none;transition:.25s;flex:none}
.icon-btn svg{width:19px;height:19px}
.icon-btn.wa{color:#5be38a;border-color:rgba(91,227,138,.5)}
.icon-btn:hover{background:rgba(255,255,255,.08);transform:translateY(-1px)}

/* Cards gallery */
.cards{background:var(--ivory);padding-bottom:clamp(54px,10vw,90px)}
.cards__rail{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 20px 18px;margin:0 -20px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
@media (min-width:900px){.cards__rail{justify-content:center;flex-wrap:wrap;overflow:visible}}
.cards__rail button{flex:none;width:clamp(128px,34vw,150px);aspect-ratio:9/16;border-radius:12px;overflow:hidden;border:1px solid rgba(201,162,74,.6);padding:0;cursor:zoom-in;scroll-snap-align:center;background:#eee;box-shadow:0 14px 26px -18px rgba(60,10,20,.6);transition:transform .3s var(--ease)}
.cards__rail button:hover{transform:translateY(-4px)}
.cards__rail img{width:100%;height:100%;object-fit:cover}
.cards__actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:14px}
.lightbox{position:fixed;inset:0;z-index:90;background:rgba(14,3,7,.94);display:grid;place-items:center;padding:20px}
.lightbox[hidden]{display:none}
.lightbox img{max-height:92svh;max-width:100%;width:auto;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.lightbox__close{position:absolute;top:12px;right:14px;width:46px;height:46px;font-size:2rem;line-height:1;color:#fff;background:rgba(255,255,255,.08);border:0;border-radius:50%;cursor:pointer;z-index:2}
.lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;font-size:2rem;color:#fff;background:rgba(255,255,255,.1);border:0;border-radius:50%;cursor:pointer;z-index:2}
.lightbox__nav.prev{left:10px}.lightbox__nav.next{right:10px}

/* Closing */
.closing{position:relative;overflow:hidden;padding:clamp(80px,16vw,140px) 22px clamp(90px,16vw,140px);text-align:center;color:var(--ivory);background:radial-gradient(ellipse at 50% 40%,#5d1022 0%,#2a0610 60%,#14030a 100%);isolation:isolate}
.closing__inner{position:relative;max-width:620px;margin:0 auto}
.closing__mandala{position:absolute;left:50%;top:50%;width:min(520px,120vw);transform:translate(-50%,-50%);opacity:.14;z-index:-1;animation:spin 120s linear infinite}
.closing__quote{font-size:clamp(1.4rem,5.6vw,2rem);font-style:italic;line-height:1.45;color:#f6e8cc;margin-bottom:1em}
.closing__names{font-size:clamp(1.6rem,7vw,2.6rem);letter-spacing:.2em;margin:.2em 0 .1em;background:linear-gradient(100deg,#b58b36 0%,#f6dc9a 25%,#fff6dc 40%,#c9a24a 60%,#f6dc9a 80%,#b58b36 100%);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 6s linear infinite}
@keyframes shimmer{to{background-position:-200% center}}
.closing__sign{margin-top:1.6em;font-style:italic;color:#e8d4b6}
.closing__sign .script{display:block;font-style:normal;font-size:2.6rem;color:var(--gold-l);line-height:1.2}
.foot{background:#14030a;color:rgba(233,207,143,.6);text-align:center;padding:22px 20px calc(96px + env(safe-area-inset-bottom));font-family:var(--caps);font-size:.62rem;letter-spacing:.16em}

/* Dev simulator */
.dev{position:fixed;z-index:95;top:10px;left:10px;right:10px;max-width:560px;margin:0 auto;display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px 10px;border-radius:12px;background:rgba(0,0,0,.82);color:#fff;font:12px/1.3 system-ui,sans-serif}
.dev button{font:12px system-ui;padding:6px 8px;border-radius:8px;border:1px solid #666;background:#222;color:#fff;cursor:pointer}
.dev button.on{background:#c9a24a;color:#000}
.dev b{margin-right:4px}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none}
}
.hero[data-phase="diwali"] .hero__scroll{display:none}

/* =====================================================================
   PALACE DOORS — opening experience
   ===================================================================== */
.doors{position:fixed;inset:0;z-index:100;perspective:1600px;overflow:hidden;background:#14030a;cursor:pointer}
.doors::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:6px;margin-left:-3px;background:linear-gradient(180deg,transparent,rgba(255,214,140,.0),transparent);z-index:3;transition:width 1.4s var(--ease),margin 1.4s var(--ease),background 1.4s}
.door{position:absolute;top:0;bottom:0;width:50%;z-index:2;display:flex;flex-direction:column;gap:3.2vh;padding:9vh 7% 6vh;
  background:
    radial-gradient(circle at 50% 50%,rgba(233,207,143,.55) 0 1.2px,transparent 1.8px) 0 0/22px 22px,
    linear-gradient(90deg,rgba(0,0,0,.35),transparent 18%,transparent 82%,rgba(0,0,0,.35)),
    repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0 3px,transparent 3px 9px),
    linear-gradient(180deg,#5c1022,#3a0814 60%,#2a0610);
  box-shadow:inset 0 0 0 6px #2a0610,inset 0 0 0 8px #b58b36,inset 0 0 0 14px #3a0814,inset 0 0 0 15px rgba(201,162,74,.6);
  transition:transform 1.7s cubic-bezier(.65,.02,.25,1),filter 1.7s;backface-visibility:hidden}
.door--l{left:0;transform-origin:left center}
.door--r{right:0;transform-origin:right center}
.door__panel{flex:1;border:1.5px solid rgba(201,162,74,.75);border-radius:6px;background:
  radial-gradient(ellipse at 50% 50%,rgba(201,162,74,.16),transparent 70%),
  linear-gradient(180deg,rgba(0,0,0,.18),rgba(0,0,0,.05));
  box-shadow:inset 0 0 0 5px rgba(42,6,16,.6),inset 0 0 0 6px rgba(201,162,74,.35);position:relative}
.door__panel--arch{flex:1.5;border-radius:999px 999px 6px 6px}
.door__panel::after{content:"";position:absolute;left:50%;top:50%;width:46%;aspect-ratio:1;transform:translate(-50%,-50%) rotate(45deg);border:1px solid rgba(201,162,74,.55);box-shadow:inset 0 0 0 6px rgba(42,6,16,.4),inset 0 0 0 7px rgba(201,162,74,.3)}
.door__ring{position:absolute;top:60%;width:34px;height:34px;border-radius:50%;border:3px solid #c9a24a;box-shadow:0 0 0 2px #5c1022,0 4px 8px rgba(0,0,0,.5)}
.door--l .door__ring{right:16px}.door--r .door__ring{left:16px}
.doors__frame{position:absolute;inset:0;z-index:3;pointer-events:none;border:10px solid #1a0409;box-shadow:inset 0 0 0 2px #c9a24a;border-radius:0}
.doors__seal{position:absolute;z-index:4;left:50%;top:44%;width:min(190px,48vw);aspect-ratio:1;transform:translate(-50%,-50%);border:0;padding:0;background:radial-gradient(circle,#6b1326 0 52%,transparent 53%);border-radius:50%;cursor:pointer;transition:transform .7s var(--ease),opacity .6s;filter:drop-shadow(0 10px 24px rgba(0,0,0,.6))}
.doors__seal img{position:absolute;inset:0;width:100%;height:100%;animation:spin 40s linear infinite}
.doors__mp{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:.08em;font-family:var(--caps);font-size:clamp(1.6rem,7vw,2.2rem);color:#f6dc9a;letter-spacing:.06em;text-shadow:0 0 18px rgba(255,200,100,.5)}
.doors__mp i{font-family:var(--script);font-style:normal;font-size:.9em;margin:0 .05em;color:#e9cf8f}
.doors__text{position:absolute;z-index:4;left:0;right:0;bottom:9vh;text-align:center;transition:opacity .5s}
.doors__dear{font-style:italic;font-size:1.25rem;color:#f6e8cc;margin:0 0 .4em;text-shadow:0 2px 10px rgba(0,0,0,.7)}
.doors__hint{display:inline-block;font-family:var(--caps);font-size:.7rem;letter-spacing:.3em;text-transform:uppercase;color:#2a0b10;background:linear-gradient(180deg,#e6c47a,#b58b36);padding:.75em 1.6em;border-radius:999px;animation:pulse 2.2s infinite;box-shadow:0 8px 20px -8px rgba(0,0,0,.7)}
.doors.opening{background:transparent;cursor:default}
.doors.opening::before{width:100%;margin-left:-50%;background:radial-gradient(ellipse at 50% 50%,rgba(255,226,160,.55),rgba(255,190,90,0) 60%)}
.doors.opening .door--l{transform:rotateY(-108deg);filter:brightness(.7)}
.doors.opening .door--r{transform:rotateY(108deg);filter:brightness(.7)}
.doors.opening .doors__seal{transform:translate(-50%,-50%) scale(1.5);opacity:0}
.doors.opening .doors__text,.doors.opening .doors__frame{opacity:0;transition:opacity .4s}
.doors.gone{display:none}
body.doors-skip .doors{transition:opacity .5s;opacity:0;pointer-events:none}

/* =====================================================================
   MARIGOLD GARLANDS + BELLS
   ===================================================================== */
.garlands{position:absolute;left:0;right:0;top:0;height:0;z-index:2;pointer-events:none}
.strand{position:absolute;top:0;width:18px;transform-origin:50% 0;animation:sway 5s ease-in-out infinite}
.strand__beads{display:block;width:18px;background:
  radial-gradient(circle at 50% 8px,#ffb21e 0 6px,#e07b06 6.6px 8.2px,transparent 8.8px) 0 0/18px 32px repeat-y,
  radial-gradient(circle at 50% 8px,#ffd94a 0 6px,#e7a800 6.6px 8.2px,transparent 8.8px) 0 16px/18px 32px repeat-y;
  filter:drop-shadow(0 3px 3px rgba(80,30,0,.25))}
.strand::before{content:"";position:absolute;left:50%;top:-6px;width:1px;height:8px;background:#7a5a1a}
.strand__end{display:block;width:16px;height:16px;margin:-2px auto 0;border-radius:50%;background:radial-gradient(circle at 40% 35%,#ff6b7a,#b0153f 70%)}
.strand svg{display:block;width:22px;height:29px;margin:-2px auto 0;margin-left:-2px;transform-origin:50% 0;animation:sway 2.6s ease-in-out infinite;filter:drop-shadow(0 3px 4px rgba(0,0,0,.25))}
.strand .leaf{position:absolute;left:-7px;top:-2px;width:32px;height:14px;background:
  radial-gradient(ellipse at 25% 50%,#3f7a3a 0 6px,transparent 7px),radial-gradient(ellipse at 75% 50%,#2f6b34 0 6px,transparent 7px)}
@keyframes sway{0%,100%{rotate:-2.4deg}50%{rotate:2.4deg}}
.closing .strand__beads{filter:drop-shadow(0 3px 4px rgba(0,0,0,.5))}

/* =====================================================================
   EVENT JOURNEY — golden thread timeline
   ===================================================================== */
.tl{position:relative;max-width:1080px;margin:0 auto;padding-left:46px}
.tl__track{position:absolute;left:20px;top:0;bottom:0;width:2px;background:linear-gradient(180deg,transparent,rgba(201,162,74,.35) 3%,rgba(201,162,74,.35) 97%,transparent)}
.tl__fill{position:absolute;left:0;top:0;width:100%;height:0;background:linear-gradient(180deg,#f6dc9a,#c9a24a 60%,#e9b04a);box-shadow:0 0 10px rgba(233,176,74,.9),0 0 22px rgba(233,176,74,.45);border-radius:2px}
.tl__fill::after{content:"";position:absolute;left:50%;bottom:-7px;width:14px;height:14px;margin-left:-7px;border-radius:50%;background:radial-gradient(circle,#fffbe6 0 25%,#ffd56a 45%,rgba(255,180,70,0) 72%);box-shadow:0 0 18px 6px rgba(255,200,100,.65)}
.tl__day{position:relative;text-align:left;margin:6px 0 22px}
.tl__day span{display:inline-block;font-family:var(--caps);letter-spacing:.18em;font-size:.66rem;text-transform:uppercase;color:#fff8ea;background:var(--maroon);padding:.7em 1.2em;border-radius:999px;box-shadow:0 8px 18px -10px rgba(107,19,38,.9)}
.tl__day::before{content:"";position:absolute;left:-31px;top:50%;width:12px;height:12px;margin-top:-6px;transform:rotate(45deg);background:var(--gold);box-shadow:0 0 0 4px var(--ivory-2)}
.tl__item{position:relative;margin:0 0 30px}
.tl__dot{position:absolute;left:-46px;top:20px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#fffdf6;border:1.5px solid rgba(201,162,74,.6);color:var(--gold-d);z-index:2;transition:background .6s,color .6s,box-shadow .6s,transform .6s var(--ease)}
.tl__dot svg{width:24px;height:24px}
.tl__dot.lit{background:linear-gradient(180deg,#e6c47a,#b58b36);color:#3a0814;box-shadow:0 0 0 5px rgba(233,207,143,.35),0 0 22px rgba(233,176,74,.8);transform:scale(1.06)}
.tl__time{position:absolute;left:-46px;top:66px;width:42px;text-align:center;font-family:var(--caps);font-size:.52rem;letter-spacing:.06em;line-height:1.3;color:var(--gold-d);background:var(--ivory-2);padding:2px 0;border-radius:6px}
.tl .ev{max-width:none}
.tl .ev__icon{display:none}
@media (min-width:900px){
  .tl{padding-left:0}
  .tl__track{left:50%;margin-left:-1px}
  .tl__day{text-align:center}
  .tl__day::before{display:none}
  .tl__item{width:calc(50% - 56px)}
  .tl__item.l{margin-right:auto}
  .tl__item.r{margin-left:auto}
  .tl__item.l .tl__dot{left:auto;right:-77px}
  .tl__item.r .tl__dot{left:-77px}
  .tl__item .tl__time{width:80px;top:68px;font-size:.6rem;padding:3px 0}
  .tl__item.l .tl__time{left:auto;right:-96px}
  .tl__item.r .tl__time{left:-96px}
  .tl__item + .tl__item{margin-top:-70px}
}
.tl__item.reveal{transform:translateY(40px) scale(.98)}
.tl__item.reveal.in{transform:none}

/* petal shower canvas */
.petal-shower{position:fixed;inset:0;width:100%;height:100%;z-index:85;pointer-events:none}
@media (max-width:899px){.closing{padding-top:150px}}

/* =====================================================================
   LANGUAGE SWITCH
   ===================================================================== */
.lang{position:fixed;z-index:120;top:max(12px,env(safe-area-inset-top));right:12px;display:flex;padding:4px;border-radius:999px;background:rgba(26,4,9,.72);border:1px solid rgba(201,162,74,.55);backdrop-filter:blur(8px);box-shadow:0 8px 20px -10px rgba(0,0,0,.6)}
.lang button{min-width:44px;height:34px;border:0;border-radius:999px;background:transparent;color:var(--gold-l);font-family:var(--caps);font-size:.72rem;letter-spacing:.08em;cursor:pointer;transition:background .3s,color .3s}
.lang button[lang="hi"]{font-family:"Noto Serif Devanagari",serif;font-size:.9rem;letter-spacing:0}
.lang button[aria-pressed="true"]{background:linear-gradient(180deg,#e6c47a,#b58b36);color:#2a0b10}

/* Hindi typography */
html[lang="hi"] body{line-height:1.7}
html[lang="hi"] .eyebrow,html[lang="hi"] .h-eyebrow,html[lang="hi"] .h-sub,html[lang="hi"] .nav a,html[lang="hi"] .btn,html[lang="hi"] .day__label,html[lang="hi"] .tl__day span,html[lang="hi"] .ev__dmeta,html[lang="hi"] .ev__rows small,html[lang="hi"] .field span,html[lang="hi"] .cd__lbl,html[lang="hi"] .h-chip,html[lang="hi"] .venue__halls span,html[lang="hi"] .map-ph__cta,html[lang="hi"] .doors__hint,html[lang="hi"] .ev__status,html[lang="hi"] .upnext small,html[lang="hi"] .now-panel .lbl,html[lang="hi"] .foot,html[lang="hi"] .scratch__label,html[lang="hi"] .tl__time{letter-spacing:.01em;text-transform:none}
html[lang="hi"] .btn{font-size:.9rem;padding-top:.7em;padding-bottom:.7em}
html[lang="hi"] .nav a{font-size:.8rem;padding:.6em .8em}
html[lang="hi"] .eyebrow,html[lang="hi"] .h-eyebrow{font-size:.88rem}
html[lang="hi"] .h-title:not(.guj){font-family:"Tiro Devanagari Hindi",serif;font-size:clamp(2.5rem,11vw,4.6rem);line-height:1.25;margin:.15em 0 .3em}
html[lang="hi"] .hero[data-phase="countdown"] .h-title,html[lang="hi"] .hero[data-phase="celebration"] .h-title,html[lang="hi"] .hero[data-phase="married"] .h-title{font-size:clamp(2.1rem,9vw,3.6rem)}
html[lang="hi"] .h-names{letter-spacing:.12em;font-family:"Tiro Devanagari Hindi",serif;font-size:clamp(1.3rem,5.4vw,1.7rem)}
html[lang="hi"] .h-msg,html[lang="hi"] .sub,html[lang="hi"] .closing__quote{font-style:normal}
html[lang="hi"] .h-msg{font-size:clamp(1rem,4.2vw,1.2rem)}
html[lang="hi"] .couple-name,html[lang="hi"] .family__name,html[lang="hi"] .closing__sign .script{font-family:"Tiro Devanagari Hindi",serif;font-size:clamp(2.8rem,12vw,4rem);line-height:1.3}
html[lang="hi"] .closing__sign .script{font-size:2.2rem}
html[lang="hi"] .with{font-family:"Tiro Devanagari Hindi",serif;font-size:1.5rem;margin:.4em 0 0}
html[lang="hi"] .lineage{font-family:"Noto Serif Devanagari",serif;font-size:clamp(.78rem,3.2vw,.92rem);letter-spacing:0;line-height:1.8}
html[lang="hi"] .title{font-family:"Tiro Devanagari Hindi",serif;letter-spacing:.01em;font-size:clamp(1.8rem,7vw,2.8rem)}
html[lang="hi"] .ev__name,html[lang="hi"] .venue h3{font-family:"Tiro Devanagari Hindi",serif;letter-spacing:0;font-size:1.6rem}
html[lang="hi"] .closing__names{font-family:"Tiro Devanagari Hindi",serif;letter-spacing:.04em}
html[lang="hi"] .family .special{font-family:"Noto Serif Devanagari",serif;letter-spacing:0}
html[lang="hi"] .tilde{font-family:"Noto Serif Devanagari",serif}
html[lang="hi"] .ev__day{font-family:var(--caps)}
html[lang="hi"] .doors__dear{font-style:normal}

/* =====================================================================
   SCRATCH CARD
   ===================================================================== */
.scratch{margin:1.4em auto 0;max-width:340px}
.scratch__label{font-family:var(--caps);font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-d);margin-bottom:.7em;transition:opacity .5s}
.scratch__box{position:relative;border-radius:14px;padding:18px 14px;border:1px dashed rgba(201,162,74,.8);background:#fffaf0}
.scratch__box .invite__dates{margin:0;font-size:1rem;line-height:1.7}
.scratch__box .invite__dates span{font-size:1.6em;color:var(--maroon)}
.scratch__canvas{position:absolute;inset:0;width:100%;height:100%;border-radius:14px;cursor:grab;touch-action:none;transition:opacity .9s var(--ease)}
.scratch.revealed .scratch__canvas{opacity:0;pointer-events:none}
.scratch.revealed .scratch__label{opacity:0;height:0;margin:0}
.scratch.revealed .scratch__box{border-style:solid;animation:glowIn 1.6s var(--ease)}
.scratch.instant .scratch__canvas{display:none}
.scratch.instant .scratch__box{animation:none}
@keyframes glowIn{0%{box-shadow:0 0 0 0 rgba(233,176,74,.0)}40%{box-shadow:0 0 0 8px rgba(233,176,74,.35),0 0 40px rgba(233,176,74,.6)}100%{box-shadow:0 0 0 0 rgba(233,176,74,0)}}

/* =====================================================================
   LIGHT THE DIYAS (Diwali)
   ===================================================================== */
.diya-game{margin-top:1.2em}
.diya-row{margin:0 0 .3em}
.diya-btn{background:none;border:0;padding:4px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .3s var(--ease)}
.diya-btn:active{transform:scale(.92)}
.diya-btn svg{width:clamp(40px,11vw,56px);height:auto;aspect-ratio:1;filter:drop-shadow(0 0 0 rgba(0,0,0,0));transition:filter .6s}
.diya-btn .diya-flame,.diya-btn .diya-glow{opacity:0;transform:scale(.2);transform-origin:60px 58px;transition:opacity .5s,transform .6s var(--ease)}
.diya-btn.lit svg{filter:drop-shadow(0 0 14px rgba(255,180,70,.75))}
.diya-btn.lit .diya-flame{opacity:1;transform:scale(1);animation:flicker 1.6s .6s ease-in-out infinite}
.diya-btn.lit .diya-glow{opacity:.4;transform:scale(1);animation:glow 2.4s .6s ease-in-out infinite}
.diya-btn:not(.lit) svg{animation:nudge 2.4s ease-in-out infinite}
.diya-btn:nth-child(2) svg{animation-delay:.2s}.diya-btn:nth-child(3) svg{animation-delay:.4s}.diya-btn:nth-child(4) svg{animation-delay:.6s}.diya-btn:nth-child(5) svg{animation-delay:.8s}
@keyframes nudge{0%,80%,100%{transform:translateY(0)}88%{transform:translateY(-4px)}}
.diya-game__hint{font-family:var(--caps);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-l);opacity:.8}
.diya-game__hint.done{font-family:var(--serif);font-style:italic;text-transform:none;letter-spacing:0;font-size:1.1rem;color:#fff3d6;opacity:1}
.stage__diya .diya-flame{transform-origin:60px 58px;animation:flicker 1.6s ease-in-out infinite}
.stage__diya .diya-glow{transform-origin:60px 48px;animation:glow 2.4s ease-in-out infinite}

/* =====================================================================
   PHOTO FRAME
   ===================================================================== */
.frame{background:linear-gradient(180deg,var(--ivory-2),var(--ivory))}
.frame__stage{max-width:380px;margin:0 auto 20px;border-radius:16px;overflow:hidden;box-shadow:0 30px 60px -30px rgba(60,10,20,.6)}
.frame__stage canvas{display:block;width:100%;height:auto}
.frame__actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.frame__actions .btn[disabled]{opacity:.45;pointer-events:none}
.frame__actions label.btn{cursor:pointer}

/* file picker: the real input covers the button so every in-app browser opens it */
.file-btn{position:relative;overflow:hidden}
.file-btn input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:100px}
.frame__msg{max-width:380px;margin:-6px auto 14px;font-size:.98rem;color:var(--maroon);font-style:italic}
/* compact language button once the guest scrolls past the opening screen */
.lang{transition:transform .4s var(--ease),opacity .4s}
.lang.mini{padding:3px}
.lang.mini button[aria-pressed="true"]{display:none}
.lang.mini button{min-width:40px;height:40px;background:linear-gradient(180deg,#e6c47a,#b58b36);color:#2a0b10}
.frame__stage img{display:block;width:100%;height:auto;-webkit-touch-callout:default;user-select:auto}

/* =====================================================================
   DECORATIVE POLISH
   ===================================================================== */
.divider{display:block;width:min(240px,70%);height:40px;margin:0 auto 6px;opacity:.9}
.rsvp .divider path,.rsvp .divider circle{filter:drop-shadow(0 0 6px rgba(233,207,143,.5))}
.ornate{position:relative}
.ornate .corner{position:absolute;width:56px;height:56px;pointer-events:none;opacity:.9}
.ornate .c1{top:10px;left:10px}.ornate .c2{top:10px;right:10px;transform:scaleX(-1)}
.ornate .c3{bottom:10px;left:10px;transform:scaleY(-1)}.ornate .c4{bottom:10px;right:10px;transform:scale(-1)}
.family__card.ornate .c1,.family__card.ornate .c2{top:auto;bottom:90px;opacity:0}
/* shimmering section titles */
.title{background:linear-gradient(100deg,var(--maroon) 0%,var(--maroon) 40%,#b8485f 50%,var(--maroon) 60%,var(--maroon) 100%);background-size:250% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 7s linear infinite}
.rsvp .title{background-image:linear-gradient(100deg,#fff3d6 0%,#fff3d6 40%,#c9a24a 50%,#fff3d6 60%,#fff3d6 100%)}
/* card tilt (desktop hover) */
@media (hover:hover) and (min-width:900px){
  .ev,.venue{transition:transform .5s var(--ease),box-shadow .5s var(--ease);transform-style:preserve-3d}
  .ev:hover,.venue:hover{box-shadow:0 34px 60px -30px rgba(60,10,20,.7)}
}
/* sparkle trail */
.sparkle{position:fixed;inset:0;width:100%;height:100%;z-index:84;pointer-events:none}
/* hero parallax layers */
.h-mono,.stage{will-change:transform}
/* glowing gold border on the diwali/newyear hero */
.hero[data-phase="diwali"]::after,.hero[data-phase="newyear"]::after{content:"";position:absolute;inset:14px;border:1px solid rgba(233,207,143,.35);border-radius:22px;pointer-events:none;box-shadow:inset 0 0 40px rgba(255,190,90,.08)}
/* bell tap affordance */
.strand svg{pointer-events:auto;cursor:pointer}
.strand svg.ring{animation:ring .9s ease-in-out}
@keyframes ring{0%,100%{rotate:0}15%{rotate:14deg}35%{rotate:-12deg}55%{rotate:8deg}75%{rotate:-5deg}}
body.lb-open .lang,body.lb-open .nav{opacity:0;pointer-events:none}
