:root{--plum:#3b1a3f;--plum2:#5a2a5e;--gold:#d9b25f;--gold2:#f3dc9a;--jas:#fffaf0;--rose:#c8203a;--ink:#2a1230}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:Jost,system-ui,sans-serif;background:var(--plum);color:var(--jas);overflow-x:hidden;-webkit-font-smoothing:antialiased}
body.locked{overflow:hidden;height:100vh}
#petals{position:fixed;inset:0;pointer-events:none;z-index:50}
.tamil{font-family:'Noto Serif Tamil',serif;color:var(--gold2);letter-spacing:.04em}
/* intro doors */
#intro{position:fixed;inset:0;z-index:100;perspective:1600px}
.door{position:absolute;top:0;bottom:0;width:50%;background:radial-gradient(circle at 100% 50%,#6b3270,var(--plum) 70%);transition:transform 1.6s cubic-bezier(.7,0,.2,1);border:1px solid #d9b25f55;overflow:hidden}
.door.left{left:0;transform-origin:left;border-right:2px solid var(--gold)}
.door.right{right:0;transform-origin:right;border-left:2px solid var(--gold);background:radial-gradient(circle at 0 50%,#6b3270,var(--plum) 70%)}
.kolam{position:absolute;inset:18px;border:1px solid #d9b25f66;border-radius:200px 200px 8px 8px;background:repeating-radial-gradient(circle at 50% 30%,transparent 0 22px,#d9b25f14 22px 23px)}
#intro.open .left{transform:rotateY(-105deg)}#intro.open .right{transform:rotateY(105deg)}
#intro.gone{display:none}
.seal-wrap{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;transition:opacity .6s}
#intro.open .seal-wrap{opacity:0}
.small{font-size:1.15rem}
#seal{width:128px;height:128px;border-radius:50%;border:0;cursor:pointer;background:radial-gradient(circle at 35% 30%,#ffe98a,#e9b730 55%,#a87a12);box-shadow:0 0 0 6px #d9b25f44,0 0 50px #f3dc9a88,inset 0 -6px 14px #0004;animation:pulse 2.2s infinite}
#seal span{font-family:'Great Vibes',cursive;font-size:3.4rem;color:var(--ink)}
@keyframes pulse{50%{transform:scale(1.06);box-shadow:0 0 0 14px #d9b25f22,0 0 70px #f3dc9aaa,inset 0 -6px 14px #0004}}
.tap{font-size:.8rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold2);opacity:.85}
#music{position:fixed;right:16px;bottom:16px;z-index:60;width:46px;height:46px;border-radius:50%;border:1px solid var(--gold);background:#3b1a3fcc;color:var(--gold2);font-size:1.3rem;cursor:pointer;backdrop-filter:blur(6px)}
#music.on{animation:spin 4s linear infinite;background:var(--gold);color:var(--plum)}
@keyframes spin{to{transform:rotate(360deg)}}
section{padding:72px 22px;max-width:980px;margin:0 auto;text-align:center;position:relative}
/* hero */
#hero{min-height:100svh;padding-top:56px;background:radial-gradient(ellipse at top,#6b327088,transparent 60%)}
.toran{position:absolute;top:0;left:0;right:0;height:34px;background:radial-gradient(circle at 50% 0,var(--rose) 7px,transparent 8px) 0 0/34px 34px,radial-gradient(circle at 50% 0,#fff 11px,transparent 12px) 17px 0/34px 34px;opacity:.9}
.kicker{font-family:'Great Vibes',cursive;font-size:1.9rem;color:var(--gold2);margin:6px 0 18px}
.arch{width:min(78vw,340px);margin:0 auto;border-radius:200px 200px 18px 18px;overflow:hidden;border:3px solid var(--gold);box-shadow:0 0 0 8px #d9b25f22,0 30px 60px #0007}
.arch img{width:100%;height:auto;display:block;aspect-ratio:3/4;object-fit:cover}
h1{font-family:'Great Vibes',cursive;font-weight:400;font-size:clamp(2.6rem,11vw,4.4rem);line-height:1.05;margin:26px 0 8px;color:#fff;text-shadow:0 2px 20px #f3dc9a55}
h1 span{display:block}h1 em{display:block;font-family:'Cormorant Garamond',serif;font-size:1.1rem;letter-spacing:.4em;text-transform:uppercase;color:var(--gold);margin:4px 0}
.date{font-family:'Cormorant Garamond',serif;letter-spacing:.25em;text-transform:uppercase;color:var(--gold2);font-size:.95rem}
#countdown{display:flex;justify-content:center;gap:10px;margin:26px 0}
#countdown div{width:72px;padding:12px 0;border:1px solid #d9b25f88;border-radius:14px;background:#ffffff0d}
#countdown b{display:block;font-family:'Cormorant Garamond',serif;font-size:1.9rem;color:#fff}
#countdown i{font-style:normal;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold2)}
.scroll{color:var(--gold2);text-decoration:none;font-size:.75rem;letter-spacing:.3em;text-transform:uppercase;display:inline-block;animation:bob 2s infinite}
@keyframes bob{50%{transform:translateY(6px)}}
/* panels */
.panel{background:var(--jas);color:var(--ink);border-radius:28px;margin:20px 14px;max-width:900px;box-shadow:0 20px 60px #0005;border:1px solid var(--gold)}
@media(min-width:930px){.panel{margin:20px auto}}
.orn{color:var(--gold);font-size:2rem}
.lead{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.3rem;max-width:560px;margin:10px auto 30px;color:var(--plum2)}
.couple-names{display:grid;gap:14px;align-items:center}
@media(min-width:720px){.couple-names{grid-template-columns:1fr auto 1fr}}
.person h2{font-family:'Great Vibes',cursive;font-weight:400;font-size:2.6rem;color:var(--plum)}
.person p{font-size:.8rem;letter-spacing:.2em;text-transform:uppercase;color:#8a6a2a}
.person .fam{text-transform:none;letter-spacing:0;font-size:.95rem;color:#5b4560;margin-top:8px;line-height:1.5}
.amp{font-family:'Great Vibes',cursive;font-size:3rem;color:var(--rose)}
.title{font-family:'Great Vibes',cursive;font-weight:400;font-size:2.8rem;color:var(--gold2);margin-bottom:30px}
/* events */
.timeline{display:grid;gap:18px;text-align:left}
@media(min-width:900px){.timeline{grid-template-columns:repeat(3,1fr)}}
.ev{display:flex;gap:16px;padding:20px;border-radius:22px;background:linear-gradient(160deg,#ffffff14,#ffffff06);border:1px solid #d9b25f66}
.ev.main{background:linear-gradient(160deg,#d9b25f33,#c8203a22);border-color:var(--gold);box-shadow:0 0 40px #d9b25f33}
@media(min-width:900px){.ev{flex-direction:column}}
.when{min-width:66px;height:74px;border-radius:14px;background:var(--gold);color:var(--plum);display:flex;flex-direction:column;align-items:center;justify-content:center}
.when b{font-family:'Cormorant Garamond',serif;font-size:2rem;line-height:1}.when span{font-size:.62rem;letter-spacing:.12em;text-transform:uppercase}
.body{flex:1}.body h4{font-family:'Cormorant Garamond',serif;font-size:1.6rem;color:#fff}
.time{color:var(--gold2);font-weight:500;margin:2px 0 6px}.body p{line-height:1.5;font-size:.95rem;color:#f3e6f4}
.badge{display:inline-block;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;background:var(--rose);color:#fff;padding:3px 10px;border-radius:99px}
.btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.btns.center{justify-content:center;margin:24px 0}
.btn{cursor:pointer;font:500 .85rem Jost,sans-serif;text-decoration:none;padding:10px 16px;border-radius:99px;background:var(--gold);color:var(--plum);border:1px solid var(--gold);transition:transform .2s}
.btn:hover{transform:translateY(-2px)}.btn.ghost{background:transparent;color:var(--gold2)}
.panel .btn.ghost{color:var(--plum);border-color:var(--plum2)}.btn.wa{background:#1f8f4e;border-color:#1f8f4e;color:#fff}
/* gallery */
.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid figure{border-radius:18px;overflow:hidden;border:2px solid #d9b25f88}
.grid img{width:100%;height:100%;object-fit:cover;display:block;aspect-ratio:3/4}
.grid .wide{grid-column:1/-1}.grid .wide img{aspect-ratio:auto}
.script{font-family:'Great Vibes',cursive;font-size:1.6rem;color:var(--plum2)}
.sign{font-family:'Great Vibes',cursive;font-weight:400;font-size:3rem;color:var(--plum)}
.foot{font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;color:#8a6a2a}
/* reveal */
.reveal{opacity:0;transform:translateY(30px);transition:opacity .9s ease,transform .9s ease}
.reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}*{animation:none!important}}

.beat{animation:beat 1.3s infinite!important}
@keyframes beat{0%,40%,100%{transform:scale(1)}15%{transform:scale(1.1)}30%{transform:scale(1.04)}}
#seal{position:relative}#seal:before,#seal:after{content:'';position:absolute;inset:-10px;border-radius:50%;border:2px solid #f3dc9a88;animation:ring 2.6s infinite}#seal:after{animation-delay:1.3s}
@keyframes ring{from{transform:scale(.9);opacity:1}to{transform:scale(1.6);opacity:0}}
h1 .hl{display:flex!important;align-items:center;justify-content:center;gap:10px;margin:10px 0!important}
.hl i{height:2px;width:0;background:linear-gradient(90deg,transparent,var(--gold),var(--rose));transition:width 1.6s ease .4s}.hl i:last-child{background:linear-gradient(90deg,var(--rose),var(--gold),transparent)}
h1.in .hl i{width:min(26vw,120px)}
.hb{width:30px;fill:var(--rose);filter:drop-shadow(0 0 8px #ff5a7a);animation:beat 1.3s infinite}
.weds{font-family:'Cormorant Garamond',serif;letter-spacing:.4em;text-transform:uppercase;color:var(--gold);font-size:.8rem;margin:-4px 0 10px}
.cdl{color:#ff9fb2;font-size:.8rem;letter-spacing:.25em;text-transform:uppercase;margin-top:6px}
#countdown div{position:relative}#countdown div:after{content:'♥';position:absolute;top:-8px;right:-4px;color:var(--rose);font-size:.8rem;animation:beat 1.3s infinite}
#love{max-width:none;padding:80px 22px;background:linear-gradient(160deg,#5a2a5e,#8c2a52 55%,#c8203a);overflow:hidden}
.bigheart{width:54px;fill:#ffd3dc;filter:drop-shadow(0 0 18px #ff7a95);animation:beat 1.3s infinite}
.note{font-family:'Great Vibes',cursive;font-size:clamp(2rem,8vw,3rem);line-height:1.2;color:#fff;margin:14px 0}
.sub{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.15rem;color:#ffe3ea;margin-bottom:30px}
.heartframe{width:min(80vw,340px);aspect-ratio:1;margin:0 auto;clip-path:path('M170 320C-80 160 30-40 170 70 310-40 420 160 170 320Z');background:var(--gold)}
@supports not (clip-path:path('M0 0')){.heartframe{border-radius:50%}}
.heartframe img{width:100%;height:100%;object-fit:cover;object-position:50% 40%;transform:scale(1.25);transition:transform 1.8s}
.heartframe.in img{transform:scale(1)}
@media(max-width:400px){.heartframe{width:300px;clip-path:path('M150 284C-70 142 26-36 150 62 274-36 370 142 150 284Z')}}
.fly{position:fixed;z-index:70;pointer-events:none;color:var(--rose);font-size:22px;animation:fly 1.4s ease-out forwards}
@keyframes fly{to{transform:translate(var(--x),var(--y)) scale(1.6);opacity:0}}

.grid{grid-template-columns:1fr}.grid figure{cursor:zoom-in;max-width:520px;margin:0 auto;width:100%}
.grid .wide{max-width:none}.grid .wide img{aspect-ratio:1600/1292;object-fit:contain;height:auto;background:#2a1230}
#lb{position:fixed;inset:0;z-index:200;background:#120612f2;overflow:auto;touch-action:pinch-zoom;display:flex;align-items:center;justify-content:center}
#lb[hidden]{display:none}#lb img{max-width:100%;max-height:100svh;object-fit:contain}
#lb button{position:fixed;top:12px;right:12px;width:44px;height:44px;border-radius:50%;border:1px solid var(--gold);background:#3b1a3fcc;color:#fff;font-size:1.2rem}

#moment{padding-top:30px}.photo{width:min(88vw,460px);margin:0 auto;border-radius:24px;overflow:hidden;border:3px solid var(--gold);box-shadow:0 0 0 8px #d9b25f22,0 0 60px #ff6f8e44,0 30px 60px #0007;cursor:zoom-in}
.photo img{width:100%;height:auto;display:block}
.grid img[src*="couple-real"]{aspect-ratio:1080/1350}
