:root{
  --ink:#12040a; --maroon:#3b0a16; --deep:#1a0509; --wine:#5a1220; --rose:#b23a48;
  --gold:#c9a24b; --gold2:#e8c76a; --lightgold:#f4e3a1; --cream:#fbf3e4; --muted:#d9c6b0;
  --script:'Great Vibes',cursive; --serif:'Cormorant Garamond',Georgia,serif; --caps:'Cinzel',serif; --sans:'Outfit',system-ui,sans-serif;
  --hi:'Tiro Devanagari Hindi',serif;
  --ease:cubic-bezier(.16,1,.3,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{background:var(--deep);-webkit-text-size-adjust:100%}
body{background:radial-gradient(120% 80% at 50% 0%,#4a0f1d 0%,var(--deep) 55%,#0c0206 100%) fixed;color:var(--cream);font-family:var(--serif);font-size:18px;line-height:1.6;overflow-x:hidden}
body.is-locked{overflow:hidden;height:100vh}
img{display:block;max-width:100%}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.hi{font-family:var(--hi)}
.script{font-family:var(--script);font-weight:400;line-height:1.1}
.eyebrow{font-family:var(--caps);letter-spacing:.32em;text-transform:uppercase;font-size:.72rem;color:var(--gold2)}
.title{font-family:var(--serif);font-weight:500;font-size:clamp(2.2rem,6vw,3.6rem);line-height:1.1;margin:.4rem 0 1rem;color:var(--cream)}
.lead{max-width:34rem;margin:0 auto 2rem;color:var(--muted);font-size:1.12rem}
.sub{font-style:italic;color:var(--muted);font-size:1.2rem}
.section{position:relative;padding:clamp(5rem,12vw,9rem) 16px;text-align:center}
.gold-rule{width:8rem;height:1px;margin:1.4rem auto;background:linear-gradient(90deg,transparent,var(--gold) 15%,var(--lightgold) 50%,var(--gold) 85%,transparent);transform-origin:center}
.btn-gold{display:inline-block;font-family:var(--caps);font-size:.8rem;letter-spacing:.22em;text-transform:uppercase;text-decoration:none;color:#2a0a10;padding:1rem 1.8rem;border-radius:999px;background:linear-gradient(110deg,#b8892f 0%,#f4e3a1 30%,#c9a24b 55%,#f7e7b0 75%,#b8892f 100%);background-size:220% 100%;box-shadow:0 10px 30px -10px rgba(201,162,75,.7),inset 0 1px 0 rgba(255,255,255,.5);transition:background-position .9s var(--ease),transform .4s var(--ease)}
.btn-gold:hover{background-position:100% 0;transform:translateY(-2px)}
.btn-gold.sm{padding:.55rem 1.1rem;font-size:.65rem}
.btn-gold.wide{width:100%}
.glass{background:linear-gradient(160deg,rgba(255,240,220,.07),rgba(255,240,220,.02));border:1px solid rgba(201,162,75,.25);backdrop-filter:blur(10px)}

/* ================= INTRO ================= */
#intro{position:fixed;inset:0;z-index:100;overflow:hidden;background:#07020a;touch-action:none;--lit:.3}
.intro-photo{position:absolute;inset:0;background:url(/images/cutout.jpg) center top/cover no-repeat;
  filter:brightness(calc(.25 + var(--lit)*.75)) saturate(calc(.4 + var(--lit)*.7));transform:scale(calc(1.08 - var(--lit)*.08))}
.intro-bloom{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(255,206,120,.5),rgba(201,162,75,.15) 40%,transparent 70%);mix-blend-mode:screen;opacity:calc(var(--lit) - .3)}
#cover{position:absolute;inset:0;width:100%;height:100%}
.cover-art{position:absolute;inset:0;pointer-events:none}
.mandala{position:absolute;left:50%;top:50%;width:min(92vw,620px);height:min(92vw,620px);transform:translate(-50%,-50%);overflow:visible}
.mandala path,.mandala circle{fill:none;stroke:#c9a24b;stroke-width:.45;opacity:.55}
.fuse{position:absolute;left:0;top:0;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:#fff6d0;box-shadow:0 0 12px 5px #ffcf6a,0 0 40px 14px rgba(255,140,40,.6);opacity:0;z-index:6}
#morph{position:fixed;inset:0;width:100%;height:100%;z-index:101;pointer-events:none}
#rope{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:5}
#tassel{cursor:grab;filter:drop-shadow(0 6px 10px rgba(0,0,0,.6))}
#tassel:active{cursor:grabbing}
.intro-copy{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);z-index:4;text-align:center;pointer-events:none;padding:0 16px}
.intro-names{font-size:clamp(3rem,10vw,5.6rem);color:var(--lightgold);text-shadow:0 4px 30px rgba(0,0,0,.7),0 0 40px rgba(232,199,106,calc(var(--lit)*.5))}
.amp{color:var(--gold2);font-size:.8em}
.hint{font-family:var(--caps);letter-spacing:.28em;text-transform:uppercase;font-size:.66rem;color:var(--muted);margin-top:1rem}
.hint-arrow{display:inline-block;animation:nudge 1.6s var(--ease) infinite}
@keyframes nudge{0%,100%{transform:translateY(-2px)}50%{transform:translateY(5px)}}
.skip{position:absolute;bottom:calc(22px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:6;font-family:var(--caps);font-size:.62rem;letter-spacing:.28em;text-transform:uppercase;color:rgba(244,227,161,.55);padding:.6rem 1rem;border-bottom:1px solid rgba(244,227,161,.25)}
.skip:hover{color:var(--lightgold)}

/* ================= CANVASES / MUSIC ================= */
#petals,#burst{position:fixed;inset:0;width:100%;height:100%;pointer-events:none}
#petals{z-index:40}
#burst{z-index:105}
.music{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:70;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;color:var(--lightgold);background:rgba(40,8,16,.6);border:1px solid rgba(201,162,75,.4);backdrop-filter:blur(8px);transition:transform .4s var(--ease),background .4s}
.music:hover{transform:scale(1.08);background:rgba(201,162,75,.18)}
.music .bars{display:none}
.music[aria-pressed="true"] .ic-mute{display:none}
.music[aria-pressed="true"] svg{display:none}
.music[aria-pressed="true"] .bars{display:flex;gap:3px;align-items:flex-end;height:16px}
.bars i{width:3px;background:var(--lightgold);border-radius:2px;animation:eq 1s ease-in-out infinite}
.bars i:nth-child(2){animation-delay:-.35s}.bars i:nth-child(3){animation-delay:-.7s}
@keyframes eq{0%,100%{height:4px}50%{height:16px}}

/* ================= HERO ================= */
.hero{position:relative;height:100svh;min-height:560px;display:grid;place-items:center;overflow:hidden;text-align:center}
.hero-bg{position:absolute;inset:-8% 0;will-change:transform;--mx:50%;--my:42%}
.hero-bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 30%}
.hero-bg .base{filter:grayscale(.75) sepia(.3) brightness(.38) contrast(1.1)}
.hero-bg .lit{filter:saturate(1.15) brightness(1.08);
  -webkit-mask-image:radial-gradient(circle 34vmax at var(--mx) var(--my),#000 0%,rgba(0,0,0,.85) 35%,transparent 100%);
  mask-image:radial-gradient(circle 34vmax at var(--mx) var(--my),#000 0%,rgba(0,0,0,.85) 35%,transparent 100%)}
.lanterns{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.lantern{position:absolute;bottom:-14%;width:var(--w);height:calc(var(--w)*1.32);border-radius:42% 42% 28% 28%/48% 48% 30% 30%;
  background:radial-gradient(ellipse at 50% 72%,#fff6d6 0%,#ffc062 26%,#e8702a 62%,#9a3412 100%);
  box-shadow:0 0 calc(var(--w)*.8) calc(var(--w)*.25) rgba(255,160,60,.45),0 0 calc(var(--w)*2.4) calc(var(--w)*.6) rgba(255,110,30,.16);filter:blur(var(--b));opacity:var(--o)}
.lantern::before{content:"";position:absolute;left:18%;right:18%;top:8%;height:1px;background:rgba(120,40,10,.5);box-shadow:0 calc(var(--w)*.3) 0 rgba(120,40,10,.35),0 calc(var(--w)*.6) 0 rgba(120,40,10,.3)}
.lantern::after{content:"";position:absolute;left:30%;right:30%;bottom:-5%;height:12%;border-radius:0 0 40% 40%;background:#5a1d08}
.hero-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(26,5,9,.2) 0%,rgba(26,5,9,0) 35%,rgba(26,5,9,.7) 72%,var(--deep) 100%)}
.frame{position:absolute;inset:14px;width:calc(100% - 28px);height:calc(100% - 28px);pointer-events:none}
.frame-line{fill:none;stroke:var(--gold);stroke-width:1.2;opacity:.7}
.frame-line.thin{stroke-width:.6;opacity:.4}
.flourish{display:block;width:min(70vw,320px);margin:.4rem auto 1rem;overflow:visible}
.flourish path{fill:none;stroke:var(--gold2);stroke-width:1.3;stroke-linecap:round}
.flourish circle{fill:var(--gold2)}
.torch-hint{position:absolute;top:calc(28px + env(safe-area-inset-top));left:0;right:0;text-align:center;font-family:var(--caps);font-size:.58rem;letter-spacing:.3em;text-transform:uppercase;color:rgba(244,227,161,.6);z-index:2;opacity:0}
.od{display:inline-block;height:1.25em;line-height:1.25em;overflow:hidden;vertical-align:bottom}
.od .strip{display:block}
.od .strip b{display:block;font-weight:500}
.od-sep{display:inline-block;color:var(--gold);margin:0 .45em}
.hero-copy{position:relative;z-index:2;align-self:end;padding:0 16px 14vh}
.hero-copy .eyebrow{display:block;margin-bottom:.8rem}
.hero-names{font-size:clamp(3.6rem,13vw,8rem);color:var(--lightgold);text-shadow:0 6px 40px rgba(0,0,0,.6)}
.hero-names .nm{display:inline-block}
.hero-meta{font-family:var(--caps);letter-spacing:.4em;font-size:.72rem;color:var(--muted)}
.hero-date{margin-top:.8rem;font-family:var(--caps);font-size:clamp(1.3rem,4vw,1.7rem);letter-spacing:.2em;color:var(--lightgold)}
.scroll-cue{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;font-family:var(--caps);font-size:.58rem;letter-spacing:.3em;color:var(--muted);z-index:2}
.scroll-cue i{width:1px;height:38px;background:linear-gradient(var(--gold2),transparent);animation:cue 2s var(--ease) infinite;transform-origin:top}
@keyframes cue{0%{transform:scaleY(0)}50%{transform:scaleY(1)}100%{transform:scaleY(1);opacity:0}}
.split-chars .ch{display:inline-block;white-space:pre}

/* ================= GANESHA ================= */
.arch{position:relative;width:min(78vw,340px);aspect-ratio:3/4;margin:0 auto 2.6rem;border-radius:999px 999px 18px 18px;overflow:hidden;border:2px solid var(--gold);box-shadow:0 0 0 6px rgba(201,162,75,.12),0 30px 80px -20px rgba(0,0,0,.8),0 0 60px rgba(232,199,106,.15)}
.arch video{width:100%;height:100%;object-fit:cover}
.arch-glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 30%,rgba(255,220,150,.25),transparent 60%);mix-blend-mode:screen;pointer-events:none}
.mantra .words{font-size:clamp(1.1rem,3.6vw,1.5rem);color:var(--lightgold);line-height:1.9}
.mantra .w{display:inline-block;margin:0 .18em}
.mantra-sub{margin-top:.8rem;color:var(--gold2);font-size:1rem}
.diyas{display:flex;justify-content:center;gap:2.4rem;margin-top:2.4rem}
.diya{position:relative;width:46px;height:18px;border-radius:0 0 30px 30px;background:linear-gradient(180deg,#c76b2a,#7a3410)}
.diya::before{content:"";position:absolute;left:50%;top:-4px;width:40px;height:8px;margin-left:-20px;border-radius:50%;background:#5a2408}
.flame{position:absolute;left:50%;bottom:14px;width:12px;height:24px;margin-left:-6px;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:radial-gradient(ellipse at 50% 80%,#fff 0%,#ffe08a 30%,#ff9a2a 65%,rgba(255,80,0,0) 100%);transform-origin:50% 100%;animation:flicker 2.3s infinite;filter:blur(.3px);box-shadow:0 0 30px 10px rgba(255,170,60,.35)}
.diya:nth-child(2) .flame{animation-duration:1.9s;animation-delay:-.6s}
.diya:nth-child(3) .flame{animation-duration:2.6s;animation-delay:-1.1s}
@keyframes flicker{0%{transform:scale(1,1) rotate(-1deg)}12%{transform:scale(.94,1.08) rotate(2deg)}25%{transform:scale(1.04,.94) rotate(-2deg)}38%{transform:scale(.97,1.1) rotate(1deg)}55%{transform:scale(1.03,.96) rotate(-1deg)}70%{transform:scale(.95,1.05) rotate(2deg)}85%{transform:scale(1.02,.98) rotate(-1deg)}100%{transform:scale(1,1) rotate(-1deg)}}

/* ================= FAMILIES ================= */
.fam-row{display:flex;align-items:center;justify-content:center;gap:clamp(1rem,4vw,3rem);margin:2rem auto;max-width:900px}
.fam-card{flex:1;padding:1.6rem 1rem;border-radius:20px;background:linear-gradient(160deg,rgba(255,240,220,.06),rgba(255,240,220,.015));border:1px solid rgba(201,162,75,.22)}
.fam-tag{font-family:var(--caps);font-size:.66rem;letter-spacing:.2em;color:var(--gold2);text-transform:uppercase;margin-bottom:.6rem}
.fam-tag .hi{letter-spacing:0;font-size:.9rem;text-transform:none}
.fam-names{font-size:1.15rem}
.fam-amp{position:relative;width:76px;height:76px;flex:none;display:grid;place-items:center}
.fam-amp svg{position:absolute;inset:0}
.fam-amp .ring{fill:none;stroke:var(--gold);stroke-width:1.5}
.fam-amp .script{font-size:2.6rem;color:var(--lightgold)}
.honour{font-style:italic;font-size:clamp(1.25rem,3.5vw,1.7rem);color:var(--cream)}
.honour span{display:block;overflow:hidden}
@media (max-width:640px){.fam-row{flex-direction:column}.fam-card{width:100%}}

/* ================= JOURNEY ================= */
.journey{position:relative;height:100svh;overflow:hidden;display:flex;flex-direction:column;justify-content:center}
.journey-head{text-align:center;padding:0 16px;margin-bottom:2vh}
.big{font-size:clamp(4rem,14vw,8rem);color:var(--lightgold)}
.together span{display:inline-block}
.journey-track{display:flex;gap:clamp(2rem,6vw,5rem);padding:0 10vw;width:max-content;will-change:transform;perspective:1200px}
.chapter{width:auto;flex:none;display:flex;flex-direction:column;align-items:center;text-align:center}
.ch-photo{height:min(46svh,72vw*1.25,470px);width:auto;aspect-ratio:4/5;overflow:hidden;border-radius:14px;border:1px solid rgba(201,162,75,.4);box-shadow:0 30px 60px -20px rgba(0,0,0,.85);transform-style:preserve-3d;background:#2a0b12;padding:10px}
.ch-photo img{width:100%;height:100%;object-fit:cover;border-radius:8px;transform:scale(1.15)}
.ch-text{margin-top:1.2rem;max-width:min(72vw,22rem)}
.ch-no{font-family:var(--caps);color:var(--gold);font-size:.8rem;letter-spacing:.3em}
.ch-text h3{font-family:var(--serif);font-weight:500;font-size:1.6rem;color:var(--lightgold)}
.ch-text p{color:var(--muted);font-size:1rem}
.thread{position:absolute;left:0;right:0;bottom:5vh;width:100%;height:40px}
.thread path{fill:none;stroke:var(--gold);stroke-width:1.5;opacity:.7}

/* ================= COUPLE ================= */
.couple-row{display:flex;justify-content:center;align-items:center;gap:clamp(1rem,4vw,3rem);margin-top:2.5rem;perspective:1200px}
.person{width:min(88vw,340px);padding:14px 14px 1.8rem;border-radius:22px;background:linear-gradient(170deg,rgba(255,240,220,.08),rgba(255,240,220,.02));border:1px solid rgba(201,162,75,.3);box-shadow:0 30px 70px -30px rgba(0,0,0,.9);transform-style:preserve-3d;transition:transform .5s var(--ease)}
.person-photo{aspect-ratio:4/5;overflow:hidden;border-radius:14px;margin-bottom:1.2rem}
.person-photo img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.person:hover .person-photo img{transform:scale(1.06)}
.person h3{font-size:2.6rem;color:var(--lightgold);margin:.2rem 0}
.person .city{font-family:var(--caps);letter-spacing:.3em;font-size:.7rem;color:var(--gold2)}
.person .parents{color:var(--muted);font-size:1rem;margin:.6rem 0}
.ig{font-family:var(--sans);font-size:.82rem;color:var(--gold2);text-decoration:none;border-bottom:1px solid rgba(232,199,106,.35)}
.couple-amp{font-size:4rem;color:var(--gold2)}
@media (max-width:760px){.couple-row{flex-direction:column}}

/* ================= SAVE THE DATE ================= */
.gift{position:relative;width:min(86vw,360px);aspect-ratio:4/5;margin:1rem auto 0;perspective:1400px}
.gift-base{position:absolute;inset:0;border-radius:18px;background:linear-gradient(160deg,#fff8ea,#f1dfbf);box-shadow:0 40px 80px -30px rgba(0,0,0,.9),inset 0 0 0 10px #fbf1dc,inset 0 0 0 11px rgba(201,162,75,.6);overflow:hidden}
.scratch-wrap{position:absolute;inset:22px;border-radius:12px;overflow:hidden}
.date-under{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--maroon);padding:1rem}
.date-under .eyebrow{color:var(--rose);font-size:.6rem}
.du-day{font-family:var(--script);font-size:2.4rem;color:var(--wine);margin-top:.4rem}
.du-date{display:flex;flex-direction:column;align-items:center;line-height:1}
.du-date .d{font-family:var(--caps);font-size:5.4rem;font-weight:600;color:var(--maroon);display:inline-block}
.du-date .m{font-family:var(--caps);letter-spacing:.35em;font-size:1rem;margin-top:.3rem}
.du-date .y{font-family:var(--caps);letter-spacing:.5em;font-size:.9rem;color:var(--rose);margin-top:.3rem}
.du-time{font-style:italic;margin-top:1rem;font-size:1rem;color:#6a3a2a}
#scratch{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;border-radius:12px}
.gift-lid{position:absolute;inset:0;transform-origin:50% 0%;transform-style:preserve-3d;z-index:3}
.lid-face,.lid-back{position:absolute;inset:0;border-radius:18px;backface-visibility:hidden;overflow:hidden}
.lid-face img{width:100%;height:100%;object-fit:cover}
.lid-face::after{content:"";position:absolute;inset:0;background:linear-gradient(130deg,rgba(255,255,255,.18),transparent 40%,rgba(0,0,0,.2));border-radius:18px}
.lid-back{transform:rotateX(180deg);background:linear-gradient(160deg,#f1dfbf,#e2c895)}
.ribbon{position:absolute;z-index:4;pointer-events:none;
  background:linear-gradient(90deg,#6a0d1d 0%,#b3213b 18%,#e24a62 38%,#c22b45 55%,#8e1428 80%,#6a0d1d 100%)}
.rib-v{left:50%;top:-2%;bottom:-2%;width:34px;margin-left:-17px;box-shadow:0 0 12px rgba(0,0,0,.45)}
.rib-h{top:50%;height:34px;margin-top:-17px;background:linear-gradient(180deg,#6a0d1d 0%,#b3213b 18%,#e24a62 38%,#c22b45 55%,#8e1428 80%,#6a0d1d 100%);box-shadow:0 0 12px rgba(0,0,0,.45)}
.rib-hl{left:-2%;right:50%}
.rib-hr{left:50%;right:-2%}
.ribbon::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.35) 45%,transparent 60%);background-size:300% 100%;animation:sheen 4s linear infinite}
@keyframes sheen{from{background-position:150% 0}to{background-position:-150% 0}}
.bow{position:absolute;left:50%;top:50%;width:150px;margin:-62px 0 0 -75px;z-index:6;touch-action:none;filter:drop-shadow(0 10px 14px rgba(0,0,0,.5))}
.bow svg{width:100%;overflow:visible}
.bow-hint{position:absolute;left:50%;top:-30px;transform:translateX(-50%);white-space:nowrap;font-family:var(--caps);font-size:.62rem;letter-spacing:.25em;text-transform:uppercase;color:var(--lightgold);background:rgba(40,8,16,.75);padding:.35rem .7rem;border-radius:99px;animation:bob 1.8s var(--ease) infinite}
@keyframes bob{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,-6px)}}
.countdown{margin-top:3.4rem;opacity:.25;filter:blur(2px);transition:opacity 1s,filter 1s}
.countdown.on{opacity:1;filter:none}
.clock{display:flex;justify-content:center;gap:clamp(.6rem,3vw,1.4rem);margin:1rem 0}
.unit small{display:block;margin-top:.6rem;font-family:var(--caps);font-size:.6rem;letter-spacing:.3em;color:var(--gold2);text-transform:uppercase}
.flip{position:relative;width:clamp(62px,17vw,92px);height:clamp(74px,20vw,108px);perspective:420px;font-family:var(--caps);font-size:clamp(2rem,7vw,3.2rem);color:var(--lightgold);font-variant-numeric:tabular-nums}
.half{position:absolute;left:0;right:0;height:50%;overflow:hidden;background:linear-gradient(180deg,#3d0e1a,#2a0810);border:1px solid rgba(201,162,75,.22);backface-visibility:hidden;-webkit-backface-visibility:hidden}
.half.up{top:0;border-radius:10px 10px 0 0;border-bottom-color:rgba(0,0,0,.6)}
.half.down{bottom:0;border-radius:0 0 10px 10px;background:linear-gradient(180deg,#2a0810,#1f050c)}
.half .digit{position:absolute;left:0;right:0;height:200%;display:flex;align-items:center;justify-content:center}
.half.up .digit{top:0}
.half.down .digit{bottom:0}
.leaf{position:absolute;left:0;right:0;top:0;height:50%;transform-origin:50% 100%;transform-style:preserve-3d;z-index:2}
.leaf .half{height:100%}
.leaf .half.down{top:0;bottom:auto;transform:rotateX(180deg)}
.leaf .half.down .digit{top:-100%;bottom:auto}
.leaf .shade{position:absolute;inset:0;background:rgba(0,0,0,.0);border-radius:10px 10px 0 0;pointer-events:none}

/* ================= EVENTS ================= */
.timeline{position:relative;max-width:1000px;margin:3rem auto 0}
.tl-line{position:absolute;left:50%;top:0;bottom:0;width:2px;margin-left:-1px;background:rgba(201,162,75,.15)}
.tl-fill{position:absolute;inset:0;background:linear-gradient(var(--lightgold),var(--gold));transform-origin:top;transform:scaleY(0)}
.tl-dot{position:absolute;left:50%;top:0;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:var(--lightgold);box-shadow:0 0 0 5px rgba(232,199,106,.2),0 0 24px 6px rgba(232,199,106,.6)}
.event{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:3.5rem;align-items:center;margin-bottom:6rem}
.event:nth-child(even) .ev-media{order:2}
.ev-media{position:relative;aspect-ratio:4/5;border-radius:999px 999px 16px 16px;overflow:hidden;border:1px solid rgba(201,162,75,.45);box-shadow:0 30px 70px -30px rgba(0,0,0,.9);clip-path:inset(100% 0 0 0 round 999px 999px 16px 16px)}
.ev-media img{width:100%;height:100%;object-fit:cover;transform:scale(1.35)}
.ev-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(26,5,9,.7))}
.ev-body{text-align:left}
.event:nth-child(even) .ev-body{text-align:right}
.event:nth-child(even) .ev-body .cal{margin-left:auto}
.ev-no{font-family:var(--caps);font-size:.75rem;letter-spacing:.3em;color:var(--gold)}
.ev-body h3{font-family:var(--serif);font-weight:500;font-size:clamp(2rem,5vw,2.8rem);color:var(--lightgold);line-height:1.1;margin:.2rem 0 .8rem}
.ev-body p{color:var(--muted)}
.main-tag{display:inline-block;font-family:var(--caps);font-size:.58rem;letter-spacing:.25em;padding:.3rem .7rem;border-radius:99px;background:var(--gold);color:var(--deep);vertical-align:middle;margin-left:.5rem}
.cal{width:118px;margin:0 0 1.2rem;perspective:600px}
.cal-page{position:relative;border-radius:10px;overflow:hidden;background:#fbf3e4;color:var(--maroon);box-shadow:0 14px 30px -10px rgba(0,0,0,.7);transform-origin:50% 0%;transform-style:preserve-3d;text-align:center}
.cal-head{background:var(--ev, var(--rose));color:#fff;font-family:var(--caps);font-size:.68rem;letter-spacing:.2em;padding:.35rem 0}
.cal-day{font-family:var(--caps);font-size:3rem;font-weight:600;line-height:1.1;padding-top:.2rem}
.cal-wk{font-size:.8rem;font-style:italic;padding-bottom:.5rem;color:#7a4a3a}
.cal-rings{position:absolute;top:-4px;left:0;right:0;display:flex;justify-content:space-around;padding:0 22px}
.cal-rings i{width:6px;height:12px;border-radius:3px;background:#c9a24b;box-shadow:inset 0 -2px 2px rgba(0,0,0,.3)}
.cal-tear{position:absolute;inset:0;background:#fbf3e4;transform-origin:50% 0%;backface-visibility:hidden;display:grid;place-items:center;font-family:var(--caps);font-size:.6rem;letter-spacing:.2em;color:var(--rose);border-radius:10px}
@media (max-width:760px){
  .tl-line{left:18px}
  .event{grid-template-columns:1fr;gap:1.4rem;padding-left:44px}
  .event:nth-child(even) .ev-media{order:0}
  .event:nth-child(even) .ev-body{text-align:left}
  .event:nth-child(even) .ev-body .cal{margin-left:0}
}

/* ================= VENUE ================= */
.venue-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem;max-width:960px;margin:2.4rem auto 0;align-items:stretch}
.venue-card{padding:2.4rem 1.6rem;border-radius:24px;background:linear-gradient(160deg,rgba(255,240,220,.07),rgba(255,240,220,.02));border:1px solid rgba(201,162,75,.25);display:flex;flex-direction:column;align-items:center;justify-content:center}
.venue-card h3{font-family:var(--serif);font-weight:500;font-size:2rem;color:var(--lightgold);margin-top:.6rem}
.venue-card p{color:var(--muted);margin-bottom:1.6rem}
.map{position:relative;display:block;height:380px;border-radius:24px;overflow:hidden;border:1px solid rgba(201,162,75,.25);text-decoration:none}
.map svg{width:100%;height:100%}
.map-label{position:absolute;left:16px;right:16px;bottom:16px;display:flex;align-items:center;gap:.8rem;padding:.8rem 1rem;border-radius:16px;background:rgba(26,5,9,.75);backdrop-filter:blur(6px);text-align:left}
.map-label b{display:block;font-weight:500;color:var(--lightgold)}
.map-label small{display:block;font-family:var(--caps);font-size:.6rem;letter-spacing:.2em;color:var(--muted);flex:1}
.map-label em{margin-left:auto;font-style:normal}
@media (max-width:760px){.venue-grid{grid-template-columns:1fr}}

/* ================= BLESSINGS ================= */
.bless-form{max-width:520px;margin:0 auto;padding:2rem 1.4rem;border-radius:24px;background:linear-gradient(160deg,rgba(255,240,220,.07),rgba(255,240,220,.02));border:1px solid rgba(201,162,75,.25);text-align:left}
.field{position:relative;display:block;margin-bottom:1.4rem}
.field input,.field textarea{width:100%;font:inherit;font-size:1.1rem;color:var(--cream);background:transparent;border:0;border-bottom:1px solid rgba(201,162,75,.4);padding:1.4rem 0 .5rem;outline:none;resize:vertical;transition:border-color .4s}
.field input:focus,.field textarea:focus{border-color:var(--lightgold)}
.field span{position:absolute;left:0;top:1.3rem;font-family:var(--caps);font-size:.7rem;letter-spacing:.25em;text-transform:uppercase;color:var(--muted);transition:transform .4s var(--ease),color .4s;transform-origin:left;pointer-events:none}
.field input:focus+span,.field input:not(:placeholder-shown)+span,.field textarea:focus+span,.field textarea:not(:placeholder-shown)+span{transform:translateY(-1.3rem) scale(.85);color:var(--gold2)}
.note{margin-top:.8rem;text-align:center;font-size:.9rem;color:var(--muted);font-style:italic}

/* ================= FINALE ================= */
.finale{position:relative;min-height:90svh;display:grid;place-items:center;text-align:center;overflow:hidden;padding:6rem 16px}
.finale-bg{position:absolute;inset:-10% 0}
.finale-bg img{width:100%;height:100%;object-fit:cover;opacity:.35}
.finale::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,var(--deep) 0%,rgba(26,5,9,.4) 40%,rgba(26,5,9,.85) 100%)}
.finale-copy{position:relative;z-index:2}
.finale h2{font-size:clamp(3.6rem,12vw,7rem);margin:.6rem 0}
.shimmer{background:linear-gradient(100deg,#b8892f 0%,#f4e3a1 25%,#c9a24b 45%,#fff3c4 55%,#c9a24b 70%,#b8892f 100%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shim 6s linear infinite}
@keyframes shim{from{background-position:150% 0}to{background-position:-100% 0}}
.small{font-size:1rem;color:var(--gold2);margin-top:1rem}
.igs{margin-top:1.4rem;font-family:var(--sans);font-size:.85rem;color:var(--muted)}
.igs a{text-decoration:none;color:var(--gold2)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important}
}
