/* ==========================================================================
   Adarsh weds Apeksha · wedding invitation
   ========================================================================== */

@font-face{font-family:"Cormorant";src:url(../fonts/cormorant-latin-500-italic.woff2) format("woff2");font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:"Cormorant";src:url(../fonts/cormorant-latin-600-italic.woff2) format("woff2");font-weight:600;font-style:italic;font-display:swap}
@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-500-normal.woff2) format("woff2");font-weight:500;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:"Cinzel";src:url(../fonts/cinzel-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-500-normal.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-400-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-500-italic.woff2) format("woff2");font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-600-italic.woff2) format("woff2");font-weight:600;font-style:italic;font-display:swap}
@font-face{font-family:"Playfair Display";src:url(../fonts/playfair-display-latin-600-italic.woff2) format("woff2");font-weight:600;font-style:italic;font-display:swap}
@font-face{font-family:"Libre Baskerville";src:url(../fonts/libre-baskerville-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Amita";src:url(../fonts/amita-deva.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Tiro Devanagari Hindi";src:url(../fonts/tiro-deva.woff2) format("woff2");font-weight:400;font-display:swap}

:root{
  --ivory:#FBF4E6; --ivory-2:#F5EAD4; --paper:#FFFBF3;
  --ink:#3B2215; --ink-2:#664530; --muted:#8C6B4B;
  --maroon:#6E1426; --maroon-2:#4C0B19; --maroon-3:#2A0610;
  --gold:#B8862F; --gold-2:#D9B45A; --gold-3:#F3DE9B; --gold-ink:#94661A;
  --rose:#A9345A; --saffron:#D96F0E; --emerald:#0E5A49; --indigo:#26305F; --red:#9C1C2C;
  --script:"Cormorant","Cormorant Garamond",Georgia,serif;
  --caps:"Cinzel","Cormorant Garamond",serif;
  --serif:"Cormorant Garamond",Georgia,serif;
  --deva:"Tiro Devanagari Hindi","Amita",serif;
  --foil:linear-gradient(100deg,#7C5313 0%,#C99A3E 16%,#F6E4A6 30%,#D3A649 44%,#A27424 56%,#EFD48A 70%,#B58630 84%,#7C5313 100%);
  --ease:cubic-bezier(.22,.8,.24,1);
  --pad:clamp(84px,13vh,150px);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;background:#12060a}
body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--serif);font-variant-numeric:lining-nums;font-size:clamp(18px,1.05vw + 13px,21px);line-height:1.6;font-weight:500;
  text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.is-locked{overflow:hidden;height:100svh}
img,svg{max-width:100%}
a{color:inherit}
p{margin:0 0 .8em}
h1,h2,h3{margin:0;font-weight:400}
button{font:inherit;color:inherit}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.defs{position:absolute;width:0;height:0;overflow:hidden}
::selection{background:#E8C98E;color:#3B2215}

.amp{font-family:var(--script);font-style:italic}
.foil{background:var(--foil);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:foil 9s linear infinite}
@keyframes foil{to{background-position:-250% 0}}

/* ==========================================================================
   GATE (photoreal render, composited in layers)
   ========================================================================== */
.gate-scene{position:fixed;inset:0;z-index:50;overflow:hidden;background:#05060f;
  background:linear-gradient(180deg,#03040c 0%,#070a1c 38%,#0c0d1d 56%,#140b0c 70%,#0b0606 100%);--ppm:80}
.gate-scene.is-gone{display:none}
.sky{position:absolute;inset:0;width:100%;height:100%;display:block}
.g3{position:absolute;left:0;top:0;width:1280px;height:816px;transform-origin:0 0;will-change:transform;opacity:0;transition:opacity 1.1s ease}
.g3.ready{opacity:1}
.g3.edge-fade{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%)}
.g3-cam{position:absolute;inset:0;transform-origin:50% 57%;will-change:transform}
.gl{position:absolute;display:block;margin:0;padding:0;border:0}
img.gl,.g-door img,.g-key img,.g-lock img{user-select:none;-webkit-user-drag:none;pointer-events:none}
.g-under{z-index:1}
.g-inner{z-index:1;pointer-events:none;opacity:0;mix-blend-mode:screen;
  background:radial-gradient(42% 46% at 50% 56%,rgba(255,206,140,.7),rgba(255,170,90,.3) 45%,rgba(255,140,60,0) 75%)}
.g-doors{z-index:2;perspective:calc(var(--persp) * 1px);perspective-origin:50% var(--hz)}
.g-door{position:absolute;transform-style:preserve-3d;will-change:transform}
.g-door img{position:absolute;inset:0;width:100%;height:100%;display:block;backface-visibility:hidden}
.g-edge{position:absolute;width:calc(var(--ppm) * var(--dd) * 1px);
  background:linear-gradient(90deg,#1c0307,#4a0b16 30%,#6a1422 52%,#3a0711 80%,#150205);box-shadow:inset 0 0 0 1px rgba(200,150,70,.25)}
.g-door.l .g-edge{transform-origin:0 50%;transform:rotateY(90deg)}
.g-door.r .g-edge{transform-origin:100% 50%;transform:translateX(-100%) rotateY(-90deg)}
.g-dim{position:absolute;inset:0;opacity:0;pointer-events:none;background:linear-gradient(90deg,rgba(8,2,3,.55),rgba(8,2,3,.9))}
.g-door.r .g-dim{background:linear-gradient(270deg,rgba(8,2,3,.55),rgba(8,2,3,.9))}
.g-over{z-index:3}
.g-over-open{z-index:4;opacity:0;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 12%,#000 88%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 12%,#000 88%,transparent 100%)}
.g-glints{z-index:5;pointer-events:none;mix-blend-mode:screen}
.g-shine{z-index:6;pointer-events:none;opacity:0;mix-blend-mode:screen;transform:scale(1.25);
  background:radial-gradient(50% 50% at 50% 60%,rgba(255,214,150,.6),rgba(255,180,100,.24) 40%,rgba(255,150,70,0) 72%)}
.g-keyglow{z-index:6;pointer-events:none;border-radius:50%;
  background:radial-gradient(closest-side,rgba(255,232,170,.78),rgba(255,196,105,.34) 40%,rgba(255,160,80,.1) 70%,rgba(255,160,80,0));animation:kglow 2.6s ease-in-out infinite}
@keyframes kglow{50%{opacity:.55;transform:scale(.86)}}
.g-keyring{z-index:6;pointer-events:none;border-radius:50%;border:2px solid rgba(255,226,160,.75);box-shadow:0 0 12px rgba(255,200,110,.6),inset 0 0 10px rgba(255,200,110,.4);
  opacity:0;animation:kring 2.8s cubic-bezier(.2,.6,.3,1) infinite}
.g-keyring.r2{animation-delay:1.4s}
@keyframes kring{0%{opacity:0;transform:scale(.55)}15%{opacity:.9}100%{opacity:0;transform:scale(2.1)}}
.g-key{z-index:7}
.g-keyscale{position:absolute;inset:0;transform:scale(1.36);filter:drop-shadow(0 0 calc(var(--ppm) * .05px) rgba(255,200,110,.55))}
.g-keybob{position:absolute;inset:0;animation:kswing 3.8s ease-in-out infinite}
@keyframes kswing{0%,100%{transform:rotate(-4.5deg)}50%{transform:rotate(4.5deg)}}
.g-keymove{position:absolute;inset:0;will-change:transform}
.g-key img{position:absolute;inset:0;width:100%;height:100%;opacity:0}
.g-key img.on{opacity:1}
.g-lock{z-index:8;transform-origin:50% 20%;filter:drop-shadow(0 calc(var(--ppm) * .035px) calc(var(--ppm) * .03px) rgba(20,4,4,.65))}
.g-lock img{position:absolute;inset:0;width:100%;height:100%}
.g-lock .o{opacity:0}
.g-doorhit{z-index:9;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.g-tap{z-index:10;background:none;cursor:pointer;border-radius:30%;-webkit-tap-highlight-color:transparent}
.g-tap:focus-visible{outline:2px dashed #FFE3A0;outline-offset:3px}
.gate-scene.is-opening .g-keyglow,.gate-scene.is-opening .g-keyring{animation:none;opacity:0;transition:opacity .5s}
.gate-shade{position:absolute;inset:0;pointer-events:none;z-index:2;
  background:radial-gradient(130% 95% at 50% 52%,rgba(0,0,0,0) 55%,rgba(3,2,6,.55) 100%),
    linear-gradient(180deg,rgba(3,4,12,.7) 0%,rgba(3,4,12,0) 22%,rgba(3,4,12,0) 84%,rgba(6,3,4,.55) 100%)}
.gate-top{position:absolute;left:0;right:0;top:0;z-index:3;text-align:center;color:#F3DE9B;
  padding:calc(env(safe-area-inset-top) + clamp(14px,2.6vh,30px)) 14px 0;pointer-events:none;
  text-shadow:0 2px 16px rgba(2,2,8,.95),0 0 32px rgba(2,2,8,.75)}
.gate-top .invocation{font-family:"Amita",var(--deva);font-size:clamp(14px,2vh,19px);color:#F0C97A;margin:0 0 4px;letter-spacing:.02em}
.gate-top .greet{font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(15px,2vh,20px);color:#EBD3A6;margin:0;line-height:1.3}
.gate-top .greet b{display:block;font-family:var(--caps);font-style:normal;font-weight:500;letter-spacing:.12em;font-size:.86em;color:#FCEBC2;margin-bottom:3px}
.gate-names{font-family:var(--script);font-style:italic;font-weight:600;font-size:min(5.4vh,9.6vw,56px);white-space:nowrap;line-height:1.1;margin:4px 0 0;padding:0 .2em .1em;letter-spacing:.005em}
.gate-names .amp{font-size:.92em;padding:0 .06em}
.gate-scene.is-doors .gate-top{opacity:0;transition:opacity 1.2s ease}
@media (orientation:landscape) and (max-height:560px){
  .gate-top{top:50%;right:auto;left:0;width:27vw;transform:translateY(-50%);text-align:center;padding:0 0 0 calc(env(safe-area-inset-left) + 10px)}
  .gate-names{white-space:normal;font-size:min(11vh,5.4vw)}
  .gate-shade{background:linear-gradient(90deg,rgba(3,3,8,.9) 0%,rgba(3,3,8,.72) 22%,rgba(3,3,8,0) 34%,rgba(3,3,8,0) 70%,rgba(3,3,8,.45) 100%)}
}
.hero:focus{outline:none}

/* idle life on the gate */
.ladi{animation:sway 4.6s ease-in-out infinite alternate}
@keyframes sway{from{transform:rotate(-1.6deg)}to{transform:rotate(1.6deg)}}
.bell{animation:bell 3.2s ease-in-out infinite alternate}
@keyframes bell{from{transform:rotate(-5deg)}to{transform:rotate(5deg)}}
.gate-scene.is-opening .bell{animation:bellring 1.6s cubic-bezier(.3,.6,.4,1) 1}
@keyframes bellring{0%{transform:rotate(0)}15%{transform:rotate(-24deg)}35%{transform:rotate(18deg)}55%{transform:rotate(-11deg)}75%{transform:rotate(6deg)}100%{transform:rotate(0)}}
.flame{transform-box:fill-box;transform-origin:50% 100%;animation:flick .19s steps(2) infinite alternate}
.diya.d1 .flame{animation-duration:.23s}.diya.d2 .flame{animation-duration:.17s}.diya.d3 .flame{animation-duration:.21s}
@keyframes flick{from{transform:scale(1,1) skewX(0)}to{transform:scale(.92,1.08) skewX(-3deg)}}
.diya-glow{transform-box:fill-box;transform-origin:center;animation:glow 2.2s ease-in-out infinite alternate}
@keyframes glow{to{opacity:.7;transform:scale(.92)}}
.crest-halo{transform-box:fill-box;transform-origin:center;animation:glow 3s ease-in-out infinite alternate}
.key-bob{animation:bob 3.2s ease-in-out infinite}
.key-turn{transform-origin:500px 1240px}
.lock-all{transform-origin:500px 860px}
.shackle{transform-origin:500px 900px}
.ring{transform-box:fill-box;transform-origin:50% 23%}
@keyframes bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-9px) rotate(1.4deg)}}
.key-glow{transform-box:fill-box;transform-origin:center;animation:keyglow 2.4s ease-in-out infinite}
@keyframes keyglow{50%{opacity:.55;transform:scale(.86)}}
.key-ripple{transform-box:fill-box;transform-origin:center;animation:ripple 2.4s ease-out infinite;opacity:0}
@keyframes ripple{0%{opacity:.9;transform:scale(.6)}100%{opacity:0;transform:scale(2.2)}}
.spark{animation:spark 2.2s ease-in-out infinite;opacity:0}
@keyframes spark{0%,100%{opacity:0;transform:scale(.3) rotate(0)}50%{opacity:1;transform:scale(1) rotate(45deg)}}
.gate-scene.is-opening .key-ripple,.gate-scene.is-opening .sparks{display:none}

.flash{position:absolute;inset:0;z-index:20;pointer-events:none;opacity:0;
  background:radial-gradient(circle at 50% 55%,#fffdf6 0%,#fff3d6 40%,#f7d79a 100%)}
.veil{position:fixed;inset:0;z-index:49;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 50%,#fffdf6 0%,#fff1d2 55%,#f5d798 100%)}

/* ==========================================================================
   FX canvas (petals, sparkles)
   ========================================================================== */
.fx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:60}

/* ==========================================================================
   SITE
   ========================================================================== */
.site{position:relative;background:var(--ivory)}
.paper{position:relative;isolation:isolate}
.paper::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.55;background-image:var(--noise);mix-blend-mode:multiply}
.section{position:relative;padding:var(--pad) clamp(20px,5vw,64px)}
.wrap{max-width:1120px;margin:0 auto;position:relative}
.label{font-family:var(--caps);font-weight:500;font-size:clamp(11px,.4vw + 9px,13px);letter-spacing:.34em;text-transform:uppercase;color:var(--gold-ink);margin:0 0 .4em;text-align:center}
.title{font-family:var(--script);font-style:italic;font-weight:600;font-size:clamp(40px,4.4vw + 16px,76px);line-height:1.08;letter-spacing:-.005em;color:var(--maroon);text-align:center;margin:0 0 .12em;padding:0 .3em .1em}
.lede{max-width:40em;margin:0 auto;text-align:center;color:var(--ink-2)}
.divider{display:block;width:min(360px,80%);height:auto;margin:14px auto 22px;color:var(--gold)}

/* reveal */
[data-reveal]{opacity:0;transform:translateY(26px);filter:blur(4px);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease),filter 1.1s var(--ease);transition-delay:var(--d,0s)}
[data-reveal].in{opacity:1;transform:none;filter:none}
.draw .ln{stroke-dasharray:1;stroke-dashoffset:1}
.in .draw .ln,.draw.in .ln{animation:draw 2.4s cubic-bezier(.6,.1,.2,1) forwards;animation-delay:var(--d,0s)}
@keyframes draw{to{stroke-dashoffset:0}}
.ink{display:inline-block;clip-path:inset(-20% 100% -30% -6%);transition:clip-path 1.8s cubic-bezier(.65,.05,.25,1);transition-delay:var(--d,0s)}
.in .ink,.ink.in{clip-path:inset(-20% -6% -30% -6%)}

/* ---------- top bar & dock ---------- */
.topbar{position:fixed;top:0;left:0;right:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:calc(env(safe-area-inset-top) + 10px) clamp(16px,4vw,40px) 10px;background:rgba(251,244,230,.82);
  backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);border-bottom:1px solid rgba(184,134,47,.25);
  transform:translateY(-110%);transition:transform .6s var(--ease)}
.topbar.show{transform:none}
.brand{display:flex;align-items:center;text-decoration:none;line-height:1}
.brand img{display:block;height:38px;width:auto}
.brand .amp{font-size:.92em}
.nav{display:flex;gap:clamp(14px,2vw,30px)}
.nav a{font-family:var(--caps);font-size:12px;letter-spacing:.22em;text-transform:uppercase;text-decoration:none;color:var(--ink-2);position:relative;padding:4px 0}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:var(--gold);transform:scaleX(0);transition:transform .4s var(--ease)}
.nav a:hover::after,.nav a.active::after{transform:scaleX(1)}
.dock{display:none}
@media (max-width:760px){
  .nav{display:none}
  .dock{display:flex;position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 12px);z-index:40;transform:translate(-50%,160%);
    gap:2px;padding:6px;border-radius:999px;background:rgba(42,6,16,.88);border:1px solid rgba(243,222,155,.35);
    backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 10px 30px rgba(40,6,14,.35);transition:transform .6s var(--ease)}
  .dock.show{transform:translate(-50%,0)}
  .dock a{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:64px;padding:7px 8px 5px;border-radius:999px;text-decoration:none;
    color:#EAD3A2;font-family:var(--caps);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase}
  .dock a svg{width:22px;height:22px;color:#F3DE9B}
  .dock a.active{background:rgba(243,222,155,.14);color:#fff}
}

/* ---------- hero ---------- */
.hero{min-height:100svh;display:grid;place-items:center;text-align:center;overflow:hidden;
  padding:max(calc(13.95vw + 22px),128px) 20px clamp(80px,11vh,120px);
  background:radial-gradient(90% 60% at 50% 45%,#FFFBF2 0%,#FBF1DD 55%,#F2E1C0 100%)}
.hero .garland{position:absolute;left:0;right:0;top:0;pointer-events:none;z-index:2}
.garland-svg{width:100%;height:auto;display:block}
.garland-svg.m{display:none}
@media (max-width:700px){.garland-svg.d{display:none}.garland-svg.m{display:block}}
@keyframes spin{to{transform:rotate(360deg)}}
.hero-inner{position:relative;z-index:3;max-width:900px}
.ganesha{width:clamp(60px,9vh,86px);height:auto;color:var(--gold);display:block;margin:0 auto 6px;filter:drop-shadow(0 2px 6px rgba(184,134,47,.25))}
.ganesha path{stroke-width:1.9}
.hero .invocation{font-family:"Amita",var(--deva);color:var(--maroon);font-size:clamp(18px,1vw + 14px,24px);margin:0 0 .6em}
.couple-logo{display:block;width:clamp(128px,16.5vh,196px);height:auto;flex:none;filter:drop-shadow(0 8px 12px rgba(110,20,38,.12))}
.crest{display:flex;align-items:center;justify-content:center;gap:clamp(12px,3.2vw,52px);margin:.1em auto .55em}
.kolam{width:clamp(58px,7vw,112px);height:auto;flex:none;color:#CF9D5C;opacity:.88;overflow:visible}
.kolam .kdots{opacity:0;transition:opacity 1.4s ease .5s}
.kolam.in .kdots{opacity:1}
.kolam .ln{animation-duration:2.8s!important}
.kicker{font-family:"Playfair Display",var(--serif);font-style:italic;font-weight:600;color:var(--maroon);font-size:clamp(26px,1.4vw + 20px,40px);line-height:1.25;margin:0 0 .15em}
.hero-names{font-family:var(--script);font-style:italic;font-weight:600;line-height:.98;margin:.06em 0 .12em;display:flex;flex-direction:column;align-items:center}
.hero-names .nm{font-size:clamp(66px,5vw + 40px,120px);padding:0 .16em .08em;line-height:1;letter-spacing:-.008em}
.hero-names .weds{font-size:clamp(28px,1.6vw + 20px,44px);font-weight:500;color:var(--maroon);margin:-.08em 0 0;line-height:1}
.hero-date{font-family:var(--caps);font-weight:600;letter-spacing:.18em;text-transform:uppercase;font-size:clamp(13px,.5vw + 11px,17px);color:var(--ink);margin:.7em 0 .15em}
.hero-place{font-style:italic;color:var(--ink-2);font-size:clamp(18px,.6vw + 15px,22px);margin:0}
.hero-also{font-family:var(--caps);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin:.9em 0 0}
.countdown{display:flex;justify-content:center;gap:clamp(8px,2vw,18px);margin:26px auto 6px}
.cd{width:clamp(66px,8vw,92px);padding:12px 0 9px;border:1px solid rgba(184,134,47,.55);border-radius:4px;position:relative;background:rgba(255,251,243,.6);
  box-shadow:inset 0 0 0 4px rgba(255,251,243,.9),inset 0 0 0 5px rgba(184,134,47,.28)}
.cd b{display:block;font-family:"Libre Baskerville",serif;font-weight:700;font-size:clamp(24px,1.6vw + 16px,36px);line-height:1.1;color:var(--maroon);font-variant-numeric:tabular-nums}
.cd span{font-family:var(--caps);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-ink)}
.cd b.tick{animation:tick .6s var(--ease)}
@keyframes tick{0%{transform:translateY(-6px);opacity:.2}100%{transform:none;opacity:1}}
@media (max-width:420px){.cd{width:21vw}.cd span{font-size:8.5px;letter-spacing:.12em}}
.countdown-note{font-style:italic;color:var(--muted);font-size:.9em;margin:2px 0 0}
.hashtag{font-family:var(--serif);font-style:italic;font-weight:600;font-size:clamp(20px,.8vw + 16px,26px);color:var(--gold-ink);margin:16px 0 0;letter-spacing:.02em}
.btn{display:inline-flex;align-items:center;gap:10px;margin-top:24px;padding:13px 26px 12px;border-radius:999px;text-decoration:none;cursor:pointer;
  font-family:var(--caps);font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:#FFF7E6;border:0;
  background:linear-gradient(135deg,#7A1628,#4C0B19);box-shadow:0 10px 26px -10px rgba(76,11,25,.7),inset 0 0 0 1px rgba(243,222,155,.4);
  transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.btn svg{width:18px;height:18px;flex:none}
.btn:hover{transform:translateY(-2px);box-shadow:0 16px 30px -12px rgba(76,11,25,.8),inset 0 0 0 1px rgba(243,222,155,.6)}
.btn.ghost{background:transparent;color:var(--maroon);box-shadow:inset 0 0 0 1px rgba(110,20,38,.45)}
.scroll-cue{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);width:24px;height:38px;border:1.5px solid rgba(110,20,38,.45);border-radius:14px;z-index:3}
.scroll-cue::after{content:"";position:absolute;left:50%;top:7px;width:3px;height:7px;margin-left:-1.5px;border-radius:2px;background:var(--maroon);animation:cue 1.8s ease-in-out infinite}
@keyframes cue{0%{opacity:0;transform:translateY(0)}30%{opacity:1}100%{opacity:0;transform:translateY(12px)}}
.hero .diya-ico{position:absolute;bottom:clamp(18px,4vh,40px);width:64px;height:56px;z-index:2}
.hero .diya-ico.l{left:clamp(14px,6vw,90px)}.hero .diya-ico.r{right:clamp(14px,6vw,90px)}

/* hero entrance (after gate) */
.hero [data-hero]{opacity:0;transform:translateY(18px);transition:opacity 1.2s var(--ease),transform 1.2s var(--ease);transition-delay:var(--d,0s)}
.site.awake .hero [data-hero]{opacity:1;transform:none}
.site.awake .hero .ink{clip-path:inset(-20% -6% -30% -6%)}

/* ---------- invitation (maroon velvet) ---------- */
.invite{background:radial-gradient(80% 70% at 50% 40%,#7E1A2D 0%,#5A0E1E 45%,#33060F 100%);color:#F6E7C8;overflow:hidden}
.invite::after{content:"";position:absolute;inset:0;background-image:var(--damask);background-size:180px;opacity:.07;pointer-events:none}
.invite .side-mandala{position:absolute;top:50%;width:min(90vw,760px);aspect-ratio:1;color:rgba(243,222,155,.1);pointer-events:none}
.invite .side-mandala.l{left:0;transform:translate(-58%,-50%)}.invite .side-mandala.r{right:0;transform:translate(58%,-50%)}
.invite .side-mandala svg{width:100%;height:100%;animation:spin 200s linear infinite}
.invite .side-mandala.r svg{animation-direction:reverse}
.card{position:relative;z-index:2;max-width:760px;margin:0 auto;text-align:center;padding:clamp(48px,7vw,80px) clamp(22px,6vw,74px);
  background:linear-gradient(180deg,rgba(255,248,232,.06),rgba(255,248,232,.02));
  border:1px solid rgba(243,222,155,.45);box-shadow:inset 0 0 0 7px rgba(60,6,18,.0),inset 0 0 0 8px rgba(243,222,155,.25),0 30px 80px -30px rgba(0,0,0,.6)}
.card .corner{position:absolute;width:clamp(64px,9vw,104px);height:auto;color:#E5C677}
.card .corner.tl{left:10px;top:10px}.card .corner.tr{right:10px;top:10px;transform:scaleX(-1)}
.card .corner.bl{left:10px;bottom:10px;transform:scaleY(-1)}.card .corner.br{right:10px;bottom:10px;transform:scale(-1,-1)}
.shloka{font-family:var(--deva);color:#F0C97A;font-size:clamp(15px,.5vw + 13px,18px);line-height:1.75;margin:0 0 1.1em}
.shloka .head{font-family:"Amita",var(--deva);font-size:1.32em;display:block;margin-bottom:.35em;color:#F6D98F}
.grace{font-style:italic;color:#EAD3A6;font-size:1.05em;margin-bottom:1.3em}
.person h3{font-family:var(--caps);font-weight:600;font-size:clamp(28px,1.6vw + 20px,42px);letter-spacing:.06em;line-height:1.15}
.weds-script{font-family:var(--script);font-style:italic;font-weight:500;font-size:clamp(30px,1.4vw + 24px,44px);color:#F3DE9B;line-height:1;margin:.25em 0 .2em}
.invite-line{font-style:italic;font-size:1.12em;color:#F6E7C8;max-width:24em;margin:1.4em auto 0}
.card .divider{color:#E5C677;margin:28px auto 18px}
.invite .light-dust{position:absolute;inset:0;pointer-events:none;z-index:1}

/* ---------- story ---------- */
.story{background:linear-gradient(180deg,#FBF4E6,#F6EAD3)}
.chapters{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,3vw,40px);margin-top:46px;position:relative}
.chapters::before{content:"";position:absolute;left:12%;right:12%;top:62px;height:1px;background:linear-gradient(90deg,transparent,var(--gold) 15%,var(--gold) 85%,transparent);opacity:.6}
.chapter{text-align:center;position:relative}
.chapter .medal{width:124px;height:124px;margin:0 auto 18px;border-radius:50%;display:grid;place-items:center;position:relative;
  background:radial-gradient(circle at 35% 30%,#FFFBF2,#F3E2BF);box-shadow:0 0 0 1px rgba(184,134,47,.5),0 0 0 7px var(--ivory),0 0 0 8px rgba(184,134,47,.35),0 18px 30px -18px rgba(110,20,38,.5)}
.chapter .medal svg{width:64px;height:64px;color:var(--maroon)}
.chapter .when{font-family:var(--caps);font-weight:600;font-size:12px;letter-spacing:.26em;color:var(--gold-ink);text-transform:uppercase;margin:0 0 .3em}
.chapter h3{font-family:var(--script);font-style:italic;font-weight:600;font-size:clamp(30px,1vw + 24px,40px);color:var(--maroon);line-height:1.05;margin:0 0 .2em}
.chapter p{color:var(--ink-2);max-width:20em;margin:0 auto}
.shayari{max-width:640px;margin:clamp(50px,8vw,80px) auto 0;text-align:center;padding:34px 26px 30px;position:relative;
  border-top:1px solid rgba(184,134,47,.45);border-bottom:1px solid rgba(184,134,47,.45)}
.shayari::before{content:"";position:absolute;left:50%;top:-6px;width:11px;height:11px;transform:translateX(-50%) rotate(45deg);background:var(--gold)}
.shayari p{font-style:italic;font-size:clamp(20px,.8vw + 16px,25px);line-height:1.55;color:var(--maroon);margin:0}
.shayari .by{font-family:var(--caps);font-style:normal;font-size:11px;letter-spacing:.3em;color:var(--gold-ink);margin-top:16px;text-transform:uppercase}

/* ---------- celebrations ---------- */
.events{background:linear-gradient(180deg,#F6EAD3 0%,#FBF4E6 18%,#FBF4E6 82%,#F4E6CC 100%);overflow:hidden}
.events .bg-mandala{position:absolute;width:820px;aspect-ratio:1;color:rgba(184,134,47,.08);pointer-events:none}
.events .bg-mandala.a{left:-420px;top:8%}.events .bg-mandala.b{right:-420px;top:52%}
.events .bg-mandala svg{width:100%;height:100%;animation:spin 220s linear infinite}
.day{margin-top:clamp(56px,9vw,96px);position:relative}
.day-head{display:flex;align-items:center;justify-content:center;gap:clamp(12px,2.4vw,26px);color:var(--gold-ink)}
.day-head .side{font-family:var(--serif);font-style:italic;font-weight:700;font-size:clamp(15px,.5vw + 13px,19px);padding:7px 0;min-width:7.6em;
  border-top:1.5px solid var(--gold);border-bottom:1.5px solid var(--gold);text-align:center}
.day-head .num{font-family:"Libre Baskerville",serif;font-weight:700;font-size:clamp(64px,5vw + 40px,104px);line-height:1;color:#A15F09;
  background:var(--foil);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:foil 9s linear infinite}
.day-venue{text-align:center;margin:12px 0 0;display:flex;justify-content:center;align-items:center;gap:8px;color:var(--maroon);font-family:var(--caps);font-size:12.5px;letter-spacing:.24em;text-transform:uppercase}
.day-venue svg{width:18px;height:18px}
.timeline{list-style:none;margin:34px auto 0;padding:0;max-width:980px;position:relative;display:grid;gap:clamp(24px,4vw,44px)}
.timeline::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;margin-left:-1px;background:linear-gradient(transparent,rgba(184,134,47,.28) 8%,rgba(184,134,47,.28) 92%,transparent)}
.timeline::after{content:"";position:absolute;left:50%;top:0;width:2px;margin-left:-1px;height:var(--p,0%);background:linear-gradient(#E5C677,#B8862F);
  box-shadow:0 0 10px rgba(229,198,119,.8);transition:height .2s linear}
.event{position:relative;width:calc(50% - 46px)}
.event:nth-child(odd){justify-self:start}
.event:nth-child(even){justify-self:end}
.event .node{position:absolute;top:34px;width:34px;height:34px;border-radius:50%;background:var(--ivory);
  box-shadow:0 0 0 1px rgba(184,134,47,.6),0 0 0 5px var(--ivory),0 0 0 6px rgba(184,134,47,.3);display:grid;place-items:center}
.event:nth-child(odd) .node{right:-63px}.event:nth-child(even) .node{left:-63px}
.event .node i{width:10px;height:10px;border-radius:50%;background:var(--gold);transition:all .6s var(--ease)}
.event.in .node i{background:radial-gradient(circle,#FFF3C4,#F7A93B 60%,#D96F0E);box-shadow:0 0 14px 4px rgba(247,169,59,.7)}
.ecard{position:relative;background:var(--paper);border-radius:6px;overflow:hidden;
  box-shadow:0 1px 0 rgba(255,255,255,.8) inset,0 0 0 1px rgba(184,134,47,.35),0 26px 50px -30px rgba(76,11,25,.45);
  transition:transform .6s var(--ease),box-shadow .6s var(--ease);transform-style:preserve-3d}
.ecard:hover{transform:translateY(-4px);box-shadow:0 0 0 1px rgba(184,134,47,.55),0 34px 60px -30px rgba(76,11,25,.55)}
.ecard-top{position:relative;padding:22px 24px 18px;color:#FFF7E6;background:var(--accent);
  background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 100%,#000 0%),color-mix(in srgb,var(--accent) 62%,#1a0508));overflow:hidden}
.ecard-top::before{content:"";position:absolute;inset:0;background-image:var(--damask);background-size:120px;opacity:.12}
.ecard-top::after{content:"";position:absolute;left:0;right:0;bottom:0;height:10px;
  background:radial-gradient(circle at 8px -2px,transparent 7px,var(--paper) 7.5px) repeat-x;background-size:16px 10px}
.ecard-top .ico{position:absolute;right:16px;top:14px;width:clamp(44px,8vw,64px);height:clamp(44px,8vw,64px);color:rgba(255,240,205,.92)}
.ecard-top .etime,.ecard-top .etag{padding-right:clamp(52px,9vw,72px)}
.ecard-top .ico svg{width:100%;height:100%}
.etime{font-family:"Libre Baskerville",serif;font-weight:700;font-size:clamp(26px,1vw + 20px,34px);line-height:1.05;position:relative;margin:0}
.etime small{font-family:var(--caps);font-weight:600;font-size:.42em;letter-spacing:.2em;margin-left:.3em}
.etag{position:relative;font-family:var(--caps);font-size:11px;letter-spacing:.26em;text-transform:uppercase;opacity:.9;margin:4px 0 0}
.ecard-body{padding:20px 24px 22px}
.ecard h3{font-family:var(--script);font-style:italic;font-weight:600;font-size:clamp(31px,.9vw + 25px,41px);color:var(--maroon);line-height:1.06;margin:0 0 .05em}
.ehi{font-family:var(--deva);color:var(--gold-ink);font-size:16px;margin:.35em 0 .55em}
.edesc{color:var(--ink-2);margin:0 0 .9em}
.subs{list-style:none;padding:0;margin:0 0 1em;display:grid;gap:8px}
.subs li{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:12px;padding:8px 12px;border-radius:6px;background:rgba(38,48,95,.06);border:1px solid rgba(38,48,95,.12)}
.subs li svg{width:34px;height:34px;color:var(--indigo)}
.subs b{font-family:var(--caps);font-weight:600;font-size:14px;letter-spacing:.06em;color:var(--ink)}
.subs span{font-family:"Libre Baskerville",serif;font-weight:700;font-size:14px;color:var(--indigo);white-space:nowrap}
.dress{border-top:1px dashed rgba(184,134,47,.5);padding-top:14px;margin-top:6px}
.dress .dl{display:flex;align-items:center;gap:8px;font-family:var(--caps);font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--gold-ink);margin:0 0 6px}
.dress .dl svg{width:20px;height:20px}
.dress p{margin:0 0 4px;color:var(--ink)}
.dress dl{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;margin:6px 0 0}
.dress dt{font-family:var(--caps);font-size:11.5px;letter-spacing:.14em;color:var(--maroon);padding-top:4px}
.dress dd{margin:0;color:var(--ink-2)}
.eactions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.chip{display:inline-flex;align-items:center;gap:7px;padding:8px 13px 7px;border-radius:999px;text-decoration:none;cursor:pointer;background:transparent;
  font-family:var(--caps);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--maroon);
  border:1px solid rgba(110,20,38,.3);transition:background .3s,color .3s,border-color .3s}
.chip:hover{background:var(--maroon);color:#FFF7E6;border-color:var(--maroon)}
.chip svg{width:15px;height:15px}
.dress-note{text-align:center;font-style:italic;color:var(--ink-2);margin:clamp(46px,7vw,70px) auto 0;max-width:30em}
.dress-note b{font-style:normal;font-family:var(--caps);font-weight:600;letter-spacing:.12em;color:var(--maroon);font-size:.82em;display:block;margin-bottom:4px}
.saveall{text-align:center;margin-top:20px}
@media (max-width:820px){
  .timeline::before,.timeline::after{left:20px}
  .event{width:auto;margin-left:52px}
  .event:nth-child(odd),.event:nth-child(even){justify-self:stretch}
  .event:nth-child(odd) .node,.event:nth-child(even) .node{left:-49px;right:auto}
  .chapters{grid-template-columns:1fr;gap:48px}
  .chapters::before{display:none}
}

/* ---------- venues ---------- */
.venues{background:radial-gradient(120% 80% at 50% 0%,#2C0A15 0%,#1B0610 55%,#12040B 100%);color:#F6E7C8;overflow:hidden}
.venues .label{color:#E5C677}.venues .title{color:#F3DE9B}.venues .lede{color:#E2CDA4}
.vgrid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,3vw,34px);margin-top:46px}
.vcard{position:relative;border-radius:8px;overflow:hidden;background:linear-gradient(160deg,rgba(255,240,205,.08),rgba(255,240,205,.02));
  border:1px solid rgba(243,222,155,.28);padding:0 0 26px;box-shadow:0 30px 60px -40px rgba(0,0,0,.8)}
.vart{height:190px;position:relative;overflow:hidden;background:radial-gradient(90% 120% at 50% 100%,rgba(255,180,90,.35),rgba(255,140,60,0) 60%),linear-gradient(#1E0711,#3A0D1C)}
.vart svg{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:min(520px,120%);height:auto;color:#E5C677}
.vart .city{position:absolute;left:22px;top:18px;font-family:var(--caps);font-size:12px;letter-spacing:.32em;text-transform:uppercase;color:#F3DE9B}
.vart .dates{position:absolute;right:22px;top:16px;font-family:"Libre Baskerville",serif;font-weight:700;font-size:15px;color:#F3DE9B}
.vbody{padding:22px 26px 0}
.vbody h3{font-family:var(--script);font-style:italic;font-weight:600;font-size:clamp(30px,.9vw + 24px,40px);line-height:1.08;color:#F3DE9B;margin:0 0 .1em}
.vbody .addr{color:#E2CDA4;margin:0 0 14px}
.vbody .ev{list-style:none;padding:0;margin:0 0 16px;display:grid;gap:4px}
.vbody .ev li{display:flex;gap:10px;color:#F6E7C8}
.vbody .ev li::before{content:"";flex:none;width:6px;height:6px;margin-top:.65em;transform:rotate(45deg);background:#E5C677}
.travel{display:grid;gap:8px;margin:0 0 20px;padding:14px 16px;border-radius:6px;background:rgba(255,240,205,.05);border:1px solid rgba(243,222,155,.14)}
.travel div{display:flex;gap:10px;align-items:center;color:#E2CDA4;font-size:.95em}
.travel svg{width:22px;height:22px;flex:none;color:#E5C677}
.venues .btn{margin-top:0;background:linear-gradient(135deg,#E9CD86,#B8862F);color:#2A0610;box-shadow:0 10px 26px -12px rgba(229,198,119,.7)}
.venues .note{text-align:center;color:#CDB58C;font-style:italic;margin:36px auto 0;max-width:34em}
@media (max-width:820px){.vgrid{grid-template-columns:1fr}}

/* ---------- blessings ---------- */
.blessings{background:linear-gradient(180deg,#FBF4E6,#F5E8CF)}
.bless-wrap{max-width:720px;margin:40px auto 0;position:relative}
.bless{position:relative;background:var(--paper);border-radius:8px;padding:clamp(26px,5vw,44px);
  box-shadow:0 0 0 1px rgba(184,134,47,.35),0 30px 60px -36px rgba(76,11,25,.45)}
.bless .row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{position:relative;margin-bottom:16px}
.field label{display:block;font-family:var(--caps);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-ink);margin-bottom:6px}
.field input,.field textarea,.field select{width:100%;font:inherit;font-size:18px;color:var(--ink);background:#FFFDF8;border:1px solid rgba(184,134,47,.4);border-radius:4px;
  padding:12px 14px;transition:border-color .3s,box-shadow .3s;-webkit-appearance:none;appearance:none}
.field textarea{min-height:140px;resize:vertical;line-height:1.5}
.field select{padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2394661A' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;background-size:18px}
.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--maroon);box-shadow:0 0 0 3px rgba(110,20,38,.12)}
.bless .btn{margin-top:4px}
.form-msg{margin:14px 0 0;font-style:italic;color:var(--maroon);min-height:1.2em}
.hp{position:absolute;left:-9999px}
.thanks{display:none;text-align:center;padding:30px 10px}
.thanks svg{width:90px;height:90px;color:var(--gold);margin:0 auto 10px;display:block}
.thanks h3{font-family:var(--script);font-style:italic;font-weight:600;font-size:44px;color:var(--maroon);line-height:1}
.bless.done form{display:none}.bless.done .thanks{display:block;animation:pop .9s var(--ease)}
@keyframes pop{from{opacity:0;transform:scale(.96)}}
@media (max-width:600px){.bless .row{grid-template-columns:1fr;gap:0}}

/* ---------- finale ---------- */
.finale{min-height:100svh;display:grid;place-items:center;text-align:center;color:#F6E7C8;overflow:hidden;
  background:radial-gradient(100% 70% at 50% 100%,#5A1A12 0%,#2A0912 40%,#0E040A 100%)}
.finale canvas{position:absolute;inset:0;width:100%;height:100%}
.finale .inner{position:relative;z-index:2;max-width:760px}
.finale .label{color:#E5C677}
.finale .with-love{font-style:italic;font-size:clamp(20px,.8vw + 16px,26px);color:#EAD3A6;margin:0 0 .2em}
.finale .names{font-family:var(--script);font-style:italic;font-weight:600;font-size:clamp(52px,5.4vw + 24px,102px);line-height:1.06;padding:0 .16em .1em}
.finale .names .amp{font-size:.9em}
.finale .hashtag{color:#F3DE9B}
.share{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:26px}
.finale .btn{background:linear-gradient(135deg,#E9CD86,#B8862F);color:#2A0610;margin-top:0}
.finale .btn.ghost{background:transparent;color:#F3DE9B;box-shadow:inset 0 0 0 1px rgba(243,222,155,.5)}
.footer{background:#0E040A;color:#9C876A;text-align:center;padding:26px 20px calc(env(safe-area-inset-bottom) + 90px);font-size:15px}
.footer p{margin:0}
.footer .amp{color:#E5C677}
@media (min-width:761px){.footer{padding-bottom:28px}}

/* toast */
.toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 90px);transform:translate(-50%,20px);opacity:0;z-index:70;pointer-events:none;
  background:#2A0610;color:#F6E7C8;padding:10px 18px;border-radius:999px;font-family:var(--caps);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  border:1px solid rgba(243,222,155,.4);transition:all .5s var(--ease)}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* calendar popover */
.cal-wrap{position:relative;display:inline-flex}
.cal-menu{position:absolute;left:0;bottom:calc(100% + 8px);min-width:210px;background:#FFFDF8;border-radius:8px;padding:6px;z-index:5;
  box-shadow:0 0 0 1px rgba(184,134,47,.4),0 20px 40px -18px rgba(76,11,25,.5);display:none}
.cal-wrap.open .cal-menu{display:block;animation:pop .35s var(--ease)}
.cal-menu a{display:block;padding:9px 12px;border-radius:5px;text-decoration:none;font-size:16px;color:var(--ink)}
.cal-menu a:hover{background:rgba(184,134,47,.12)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important;transition-duration:.001s!important}
  [data-reveal]{opacity:1;transform:none;filter:none}
  .draw .ln{stroke-dashoffset:0;animation:none!important}
  .kolam .kdots{opacity:1;transition:none}
  .ink{clip-path:none}
}

/* ==========================================================================
   Rendered props (garlands, diyas, event still-lifes)
   ========================================================================== */
.garland-img{width:100%;height:auto;display:block}
.garland-img.m{display:none}
@media (max-width:700px){.garland-img.d{display:none}.garland-img.m{display:block}}
.hero .garland{filter:drop-shadow(0 12px 10px rgba(110,50,10,.16))}
.diya-real{position:absolute;bottom:clamp(14px,3.6vh,36px);width:clamp(74px,9vw,104px);z-index:2;pointer-events:none}
.diya-real.l{left:clamp(8px,5vw,90px)}
.diya-real.r{right:clamp(8px,5vw,90px)}
.diya-real.r img{transform:scaleX(-1)}
.diya-real img{width:100%;height:auto;display:block;filter:drop-shadow(0 8px 6px rgba(70,25,5,.22))}
.diya-real i{position:absolute;left:var(--fx,72%);top:var(--fy,28%);width:120%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,196,110,.5),rgba(255,170,80,.18) 40%,rgba(255,150,60,0));animation:dflick 1.9s ease-in-out infinite alternate}
.diya-real.r i{left:calc(100% - var(--fx,72%))}
@keyframes dflick{0%{opacity:.75;transform:translate(-50%,-50%) scale(.94)}35%{opacity:1}60%{opacity:.82;transform:translate(-50%,-52%) scale(1.04)}100%{opacity:.95;transform:translate(-50%,-50%) scale(.98)}}
.ecard-top:has(.obj){min-height:clamp(104px,15vw,124px)}
.ecard-top .obj{position:absolute;right:clamp(6px,1.4vw,16px);top:50%;transform:translateY(-54%);max-height:calc(100% - 22px);max-width:clamp(104px,15vw,132px);
  width:auto;height:auto;object-fit:contain;filter:drop-shadow(0 10px 9px rgba(15,3,6,.4));z-index:2;pointer-events:none}
.ecard-top:has(.obj) .etime,.ecard-top:has(.obj) .etag{padding-right:clamp(108px,16vw,140px)}
.subs li .subobj{width:40px;height:40px;object-fit:contain;filter:drop-shadow(0 3px 3px rgba(20,10,30,.22))}

/* the couple's logo: Ganesha moves into the invitation card, the monogram crowns the hero, a seal closes the page */
.card-ganesha{display:flex;justify-content:center;margin:0 0 4px}
.card-ganesha .ganesha{width:clamp(48px,7vw,62px);color:#E5C677;margin:0;filter:drop-shadow(0 2px 8px rgba(0,0,0,.25))}
.finale .seal{width:clamp(150px,20vw,190px);aspect-ratio:1;margin:0 auto 22px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 50% 40%,#FFFBF2 0%,#F8EEDB 62%,#EFDDBB 100%);
  box-shadow:0 0 0 2px rgba(229,198,119,.75),0 0 0 8px rgba(229,198,119,.12),0 0 0 9px rgba(229,198,119,.35),0 24px 50px -16px rgba(0,0,0,.7)}
.finale .seal img{width:76%;height:auto;display:block;margin-top:4%}
@media (min-width:1300px){
  .hero{padding-top:calc(11.6vw + 24px)}
}
@media (max-width:700px){
  .hero{padding-top:max(calc(39vw + 12px),164px)}
}
@media (max-width:500px){
  .countdown{margin:16px auto 4px}
  .hashtag{margin-top:10px}
  .hero .btn{margin-top:14px}
  .hero-date{margin-top:.5em}
}
