:root{--wine:#4b1018;--wine2:#721e2a;--gold:#c69a4b;--gold2:#e8c982;--cream:#fbf3e3;--ink:#3e2519;--muted:#6b5340;
--serif:'Cormorant Garamond',Georgia,serif;--script:'Great Vibes',cursive;--sans:Inter,Arial,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth;overflow-x:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--cream);color:var(--ink);font:16px/1.6 var(--sans);-webkit-font-smoothing:antialiased}
body.is-locked{overflow:hidden;height:100svh}
button,a{font:inherit}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.label{font:600 12.5px/1.6 var(--sans);letter-spacing:.14em;text-transform:uppercase;margin:0}

/* ---------- Music ---------- */
.music-toggle.hint{animation:mpulse 1.9s ease-out infinite}
@keyframes mpulse{0%{box-shadow:0 5px 20px #26080b40,0 0 0 0 #e8c982cc}70%{box-shadow:0 5px 20px #26080b40,0 0 0 16px #e8c98200}100%{box-shadow:0 5px 20px #26080b40,0 0 0 0 #e8c98200}}
.music-toggle{position:fixed;z-index:30;right:max(14px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));width:44px;height:44px;border-radius:50%;border:1px solid #d9bd7b;background:#4b1018ee;color:#f8e8bf;font-size:20px;cursor:pointer;box-shadow:0 5px 20px #26080b40;opacity:0;pointer-events:none;transition:opacity .6s}
body.opened .music-toggle{opacity:1;pointer-events:auto}

/* ---------- Page 1: Rajasthani palace gateway ---------- */
.intro{will-change:opacity;position:fixed;inset:0;z-index:50;display:grid;place-items:center;overflow:hidden;padding:96px 0 44px;
background:radial-gradient(ellipse at 50% 45%,#7a1f2b 0,#4b1018 55%,#26070c 100%)}
.intro:before{content:"";position:absolute;inset:0;opacity:.26;
background:repeating-linear-gradient(45deg,transparent 0 22px,#d9b469 22px 23px),repeating-linear-gradient(-45deg,transparent 0 22px,#d9b469 22px 23px)}
.intro:after{content:"";position:absolute;inset:0;opacity:.35;background:radial-gradient(circle,#e8c982 1.6px,transparent 2.2px) 11px 11px/22px 22px}
.toran{position:absolute;z-index:5;top:0;left:0;right:0;height:92px;pointer-events:none;transform:translateY(-100%);transform-origin:top;
background:linear-gradient(#b98a45,#b98a45) 0 10px/100% 2px no-repeat,
radial-gradient(circle at 50% 30px,#ff8a00 0 9px,#ffc400 10px 13px,transparent 14px) 0 0/34px 92px repeat-x,
radial-gradient(ellipse 6px 17px at 50% 58px,#2f7a3a 0 98%,transparent) 17px 0/34px 92px repeat-x,
radial-gradient(circle at 50% 80px,#e8c982 0 4px,transparent 5px) 0 0/68px 92px repeat-x}
.gate{will-change:transform;--w:min(76vw,420px);position:relative;z-index:2;width:var(--w);height:min(68svh,620px);transform-origin:50% 58%;opacity:0;transform:scale(.94)}
.dome{position:absolute;left:50%;top:-36px;width:76px;height:40px;transform:translateX(-50%);border-radius:50% 50% 0 0/100% 100% 0 0;background:linear-gradient(90deg,#9a6a2a,#f0d08c 45%,#9a6a2a)}
.dome:before{content:"";position:absolute;left:50%;top:-18px;width:2px;height:18px;background:#e8c982;transform:translateX(-50%)}
.dome:after{content:"";position:absolute;left:50%;top:-25px;width:9px;height:9px;border-radius:50%;background:#f0d08c;transform:translateX(-50%)}
.arch{position:absolute;inset:0;padding:16px;border-radius:999px 999px 0 0;background:linear-gradient(145deg,#f0d08c,#b98a45 50%,#e8c982);box-shadow:0 20px 60px #000a}
.arch:before{content:"";position:absolute;inset:-9px;border:2px dotted #e8c982aa;border-bottom:0;border-radius:999px 999px 0 0}
.arch-in{position:relative;width:100%;height:100%;overflow:hidden;border-radius:999px 999px 0 0;perspective:1300px;
background:url('../assets/royal-stage.jpg') center/cover}
.arch-in:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 62%,#fff2c0cc,#f6c86a55 55%,transparent 80%);opacity:0}
.door{position:absolute;top:0;bottom:0;width:50%;overflow:hidden;backface-visibility:hidden;will-change:transform;
background:linear-gradient(transparent 21%,#c79c52 21% 22.5%,transparent 22.5% 77.5%,#c79c52 77.5% 79%,transparent 79%),
radial-gradient(circle,#f0d08c 0 2px,#7a4a18 2.6px,transparent 3.6px) 0 0/26px 26px,
linear-gradient(90deg,#0d403f,#146560 50%,#0d403f)}
.door:before{content:"";position:absolute;inset:14px;border:2px solid #d9b469;box-shadow:inset 0 0 0 5px #0f4c4a,inset 0 0 0 6px #d9b46988}
.door:after{content:"";position:absolute;top:50%;width:120px;height:120px;margin-top:-60px;border-radius:50%;
background:radial-gradient(circle,#8a1f2b 0 18%,#f0d08c 19% 24%,#8a1f2b 25% 40%,#f0d08c 41% 45%,#146560 46% 70%,#f0d08c 71% 76%,transparent 77%)}
.door-left{left:0;transform-origin:left center}.door-left:before{border-top-left-radius:calc(var(--w)/2 - 30px)}.door-left:after{right:-60px}
.door-right{right:0;transform-origin:right center}.door-right:before{border-top-right-radius:calc(var(--w)/2 - 30px)}.door-right:after{left:-60px}
.intro-logo{position:absolute;z-index:3;left:50%;top:50%;box-sizing:border-box;width:clamp(108px,36%,136px);height:auto;aspect-ratio:1;object-fit:contain;padding:16px;transform:translate(-50%,-50%);pointer-events:none;border-radius:50%;background:radial-gradient(circle,#7a1f2b,#3b0c14);box-shadow:0 0 0 2px #d9b469,0 0 0 5px #3b0c14,0 0 0 6px #d9b46988,0 8px 22px #000a}
.intro.play .intro-logo{position:absolute;z-index:3;left:50%;top:50%;box-sizing:border-box;width:clamp(108px,36%,136px);height:auto;aspect-ratio:1;object-fit:contain;padding:16px;transform:translate(-50%,-50%);pointer-events:none;border-radius:50%;background:radial-gradient(circle,#7a1f2b,#3b0c14);box-shadow:0 0 0 2px #d9b469,0 0 0 5px #3b0c14,0 0 0 6px #d9b46988,0 8px 22px #000a}
@keyframes logo-out{to{opacity:0;transform:translate(-50%,-50%) scale(.85)}}
.band{position:absolute;z-index:3;left:0;right:0;bottom:0;height:30px;border-top:2px solid #d9b469;background:linear-gradient(135deg,#d9b469 25%,transparent 25%) -15px 0/30px 30px,linear-gradient(225deg,#d9b469 25%,transparent 25%) -15px 0/30px 30px,#26070c}
/* timeline: 0s toran + gate appear, 1.2s doors open, 2.5s gateway eases forward, 3.1s dissolve into the invitation */
.intro.play{animation:intro-out 1.3s ease-in-out 3.1s forwards}
.intro.play .toran{animation:toran-in 1s ease-out .1s forwards,toran-sway 3.5s ease-in-out 1.1s infinite alternate}
.intro.play .gate{animation:gate-in 1s ease .2s forwards,gate-zoom 1.9s cubic-bezier(.45,0,.3,1) 2.5s forwards}
.intro.play .arch-in:before{animation:glow 2.2s ease 1.3s forwards}
.intro.play .door-left{animation:open-l 2.3s cubic-bezier(.6,0,.2,1) 1.2s forwards}
.intro.play .door-right{animation:open-r 2.3s cubic-bezier(.6,0,.2,1) 1.2s forwards}
@keyframes toran-in{to{transform:translateY(0)}}
@keyframes toran-sway{from{transform:translateY(0) skewX(-1.2deg)}to{transform:translateY(0) skewX(1.2deg)}}
@keyframes gate-in{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
@keyframes gate-zoom{from{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(1.9)}}
@keyframes glow{to{opacity:1}}
@keyframes open-l{to{transform:rotateY(100deg)}}
@keyframes open-r{to{transform:rotateY(-100deg)}}
@keyframes intro-out{to{opacity:0}}

/* ---------- Page 2: reveal ---------- */
.hero-copy>*{opacity:0;transform:translateY(16px)}
body.opening .hero-copy>*{animation:rise .9s cubic-bezier(.2,.7,.2,1) forwards}
body.opening .hero-copy>:nth-child(1){animation-delay:.1s}body.opening .hero-copy>:nth-child(2){animation-delay:.25s}
body.opening .hero-copy>:nth-child(3){animation-delay:.4s}body.opening .hero-copy>:nth-child(4){animation-delay:.55s}
body.opening .hero-copy>:nth-child(5){animation-delay:.7s}body.opening .hero-copy>:nth-child(6){animation-delay:.85s}body.opening .hero-copy>:nth-child(7){animation-delay:1s}
@keyframes rise{to{opacity:1;transform:none}}

/* ---------- Dashboard ---------- */
.hero{min-height:760px;height:100vh;height:100svh;max-height:1000px;display:grid;place-items:center;text-align:center;color:#4b1a1a;
background:linear-gradient(#2b090b22,#2b090b44),url('../assets/royal-stage.jpg') center/cover no-repeat}
.hero-copy{max-width:640px;padding:70px 24px 40px}
.sanskrit{font-family:'Noto Serif Devanagari',serif;color:#7a3a1e;line-height:2;font-size:18px;margin:0 0 14px}
.ganesha{display:block;height:clamp(66px,19vw,96px);width:auto;margin:0 auto 10px;filter:drop-shadow(0 1px 1px #50200a73)}
.hero-line{font:600 clamp(9.5px,3.1vw,15px)/1.8 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:#5e3a22;margin:0}
.hero-sub{font:italic 600 26px/1.2 var(--serif);color:#6b4a2a;margin:22px 0 0}
.hero-line:not(.scroll-cue):not(.hero-date){white-space:nowrap}
.couple-names{font:400 clamp(58px,9vw,100px)/1 var(--script);color:#6b1c25;margin:10px 0 20px;text-shadow:0 2px 0 #f8e6c1}
.couple-names span{display:block}
.couple-names em{font:italic 600 34px/1.4 var(--serif);display:block;color:#98692a}
.scroll-cue{display:inline-flex;flex-direction:column;align-items:center;gap:6px;margin-top:44px;text-decoration:none}
.scroll-cue span{font-size:22px;animation:bob 1.6s infinite}
@keyframes bob{50%{transform:translateY(6px)}}

.section{padding:96px 22px}
.section-heading{text-align:center;max-width:680px;margin:0 auto 44px}
.ornament{display:block;color:#a97c3c;font-size:24px;margin-bottom:14px}
.section-heading .label,.venue-panel .label{color:#7d5a2c}
.section-heading h2,.countdown-inner h2,.venue-panel h2{font:600 clamp(40px,6vw,60px)/1.08 var(--serif);color:#57202a;margin:12px 0}
.lead{font:500 20px/1.55 var(--serif);color:var(--muted);margin:0}
.scratch-section{background:#f4e8d4;padding:84px 22px}
.scratch-card{position:relative;width:min(560px,94vw);margin:auto;padding:18px;background:#7b2029;box-shadow:0 15px 40px #52201930;border:5px double #d7b46c;outline:1px solid #9e713a;outline-offset:7px;overflow:hidden}
.scratch-reveal.venue-panel{position:relative;max-width:none;margin:0;outline:0;outline-offset:0;border:1px solid #c39b57;padding:44px 22px}
.scratch-reveal h2{text-wrap:balance}
#scratchCanvas{position:absolute;inset:18px;width:calc(100% - 36px);height:calc(100% - 36px);touch-action:none;cursor:crosshair;transition:opacity .7s ease}
#scratchCanvas.cleared{opacity:0;pointer-events:none}
.micro-note{text-align:center;color:var(--muted);font-size:14px;margin:26px 0 0}

.countdown-section{background:linear-gradient(135deg,#3b0c14,#6e1b27);color:#f8e9c8;padding:92px 20px;text-align:center}
.countdown-inner .label{font:italic 600 22px/1.4 var(--serif);letter-spacing:0;text-transform:none;color:#ead7b0}
.countdown-inner .ornament{color:#d2ad68}
.countdown-inner h2{color:#fff0d0}
.countdown{display:flex;justify-content:center;align-items:flex-start;gap:clamp(8px,3vw,28px);margin:40px auto 22px}
.countdown div{display:flex;flex-direction:column;align-items:center;min-width:64px}
.countdown strong{font:600 clamp(40px,8vw,68px)/1 var(--serif);color:#f4d58d;font-variant-numeric:tabular-nums}
.countdown span{font:500 12.5px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:#ead7b0;margin-top:8px}
.countdown>b{font:600 clamp(30px,6vw,48px)/1 var(--serif);color:#b98c4c}
.countdown-caption{font:italic 600 22px var(--serif);color:#ead7b0;margin:0}

.invitation-section{background:#efe0c7}
.invitation-paper{max-width:800px;margin:auto;background:#fff8e9;position:relative;padding:76px clamp(26px,8vw,90px);text-align:center;border:1px solid #d1ad70;box-shadow:0 15px 50px #6c3b2020;outline:1px solid #d4b67e;outline-offset:8px}
.paper-corner{position:absolute;color:#b58f50;font:42px var(--serif)}
.top-left{top:8px;left:15px}.top-right{top:8px;right:15px;transform:scaleX(-1)}.bottom-left{bottom:8px;left:15px;transform:scaleY(-1)}.bottom-right{bottom:8px;right:15px;transform:scale(-1)}
.invitation-paper .sanskrit{font-size:17px;margin:0}
.divider{display:flex;align-items:center;gap:15px;color:#a97c3c;margin:26px auto;max-width:250px}
.divider:before,.divider:after{content:"";height:1px;background:#d1b27c;flex:1}
.invite-intro,.family-line{font:italic 500 21px/1.65 var(--serif);color:#6b5238;max-width:560px;margin:0 auto}
.invitation-paper h2{font:400 clamp(50px,9vw,62px)/1.15 var(--script);color:#74222b;margin:14px 0 4px}
.family-line{max-width:460px;text-wrap:balance}
.ampersand{font:italic 600 32px var(--serif);color:#98692a;margin:12px}

.events-section{background:#fbf3e3;padding-bottom:64px;margin-bottom:0}
.venue-section{padding:96px 20px;background:linear-gradient(#390c14d9,#390c14e8),url('../assets/royal-stage.jpg') center 65%/cover}
.venue-panel{max-width:720px;margin:auto;text-align:center;padding:60px 25px;background:#fff7e8f2;border:1px solid #d6b77d;outline:1px solid #d6b77d;outline-offset:7px}
.venue-panel h3{font:600 38px/1.2 var(--serif);color:#6a2029;margin:26px 0 4px}
.venue-panel>p:not(.label){font:500 20px var(--serif);color:var(--muted);margin:0}
.gold-button{display:inline-block;border:1px solid #d8b46e;color:#fff1ce;background:linear-gradient(135deg,#8d5425,#b98a45);padding:14px 28px;text-decoration:none;font:600 13px var(--sans);letter-spacing:.12em;text-transform:uppercase;box-shadow:0 5px 18px #25070b55;transition:transform .25s,filter .25s}
.gold-button:hover{transform:translateY(-3px);filter:brightness(1.1)}
.map-link{margin-top:24px}
.footer{background:#310a10;color:#ecdab4;text-align:center;padding:64px 22px 48px}
.footer-logo{display:block;width:clamp(150px,44vw,200px);height:auto;margin:0 auto}
.footer-quote{font:italic 500 24px/1.5 var(--serif);margin:26px auto 0;max-width:560px}
.footer-regards{font:italic 500 22px/1.5 var(--serif);color:#d8c6a6;margin:34px 0 4px}
.footer-family{font:italic 600 28px/1.35 var(--serif);color:#e2bf76;margin:0 0 28px}
.footer-flourish{display:block;color:#c39a56;font-size:22px}

/* ---------- Event pages ---------- */
.event-page{position:relative;overflow:hidden;min-height:92svh;display:grid;place-items:center;padding:110px 20px 90px;background:var(--bg);color:var(--ink);isolation:isolate}
.event-page:before,.event-page:after{content:"";position:absolute;left:0;right:0;pointer-events:none;z-index:-1}
.ev-deco{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.p{position:absolute;display:block;left:var(--x);top:-8%;width:var(--s);height:var(--s);opacity:0;animation:fall var(--d) linear var(--w) infinite}
.rise .p{top:auto;bottom:-8%;animation-name:rise-up}
.event-page:not(.live) .p,.event-page:not(.live):before,.event-page:not(.live):after{animation-play-state:paused}
@keyframes fall{0%{transform:translate(0,0) rotate(0);opacity:0}10%{opacity:.9}90%{opacity:.9}100%{transform:translate(40px,115svh) rotate(540deg);opacity:0}}
@keyframes rise-up{0%{transform:translate(0,0);opacity:0}15%{opacity:.85}85%{opacity:.85}100%{transform:translate(-30px,-110svh);opacity:0}}
@keyframes twinkle{0%,100%{opacity:.15;transform:scale(.6)}50%{opacity:1;transform:scale(1)}}
.ev-card{position:relative;width:min(560px,100%);text-align:center;padding:48px clamp(22px,6vw,52px) 44px;background:var(--card);border:1px solid var(--line);box-shadow:0 20px 60px var(--shadow);backdrop-filter:blur(6px);outline:1px solid var(--line);outline-offset:7px}
.ev-medal{width:84px;height:84px;margin:-90px auto 20px;border-radius:50%;display:grid;place-items:center;font-size:40px;background:var(--bg);border:1px solid var(--accent);box-shadow:0 0 0 6px var(--card),0 0 0 7px var(--accent)}
.ev-side{font:600 12.5px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0 0 8px}
.ev-card h3{font:600 clamp(40px,8vw,54px)/1.08 var(--serif);color:var(--head);margin:0 0 8px}
.ev-tag{font:italic 600 22px/1.4 var(--serif);color:var(--accent);margin:0 0 26px}
.ev-info{margin:0 0 30px;padding-top:26px;border-top:1px solid var(--line);display:grid;gap:18px}
.ev-info dt{font:600 12px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:3px}
.ev-info dd{margin:0;font:500 20px/1.45 var(--serif);color:var(--ink)}
.ev-map{display:inline-block;padding:13px 28px;border:1px solid var(--accent);color:var(--btn-ink);background:var(--btn);text-decoration:none;font:600 13px var(--sans);letter-spacing:.12em;text-transform:uppercase;transition:transform .25s,filter .25s}
.ev-map:hover{transform:translateY(-3px);filter:brightness(1.08)}

/* Mangalkrutya: saffron, mandala, mango-leaf toran, diya sparks */
.t-mangal{--bg:linear-gradient(165deg,#fff3d6,#f9d79b 55%,#f0b45f);--ink:#4a1b10;--head:#7a2410;--accent:#b8420f;--card:#fff8e8d9;--line:#d49a45;--shadow:#8a3b1033;--btn:#b8420f;--btn-ink:#fff4de}
.t-mangal:before{top:0;height:60px;background:radial-gradient(ellipse 11px 24px at 50% 0,#2f7a3a 0 98%,transparent) 0 0/34px 60px repeat-x,radial-gradient(circle at 50% 10px,#f08a12 0 6px,transparent 7px) 17px 0/34px 60px repeat-x}
.t-mangal:after{inset:auto;left:50%;top:50%;width:min(920px,170vw);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;opacity:.22;background:repeating-conic-gradient(from 0deg,#c4511f 0 4deg,transparent 4deg 15deg);-webkit-mask:radial-gradient(circle,transparent 18%,#000 19% 22%,transparent 23% 38%,#000 39% 41%,transparent 42% 60%,#000 61% 62%,transparent 63%);mask:radial-gradient(circle,transparent 18%,#000 19% 22%,transparent 23% 38%,#000 39% 41%,transparent 42% 60%,#000 61% 62%,transparent 63%);animation:spin 120s linear infinite}
@keyframes spin{to{transform:translate(-50%,-50%) rotate(360deg)}}
.t-mangal .p{border-radius:50%;background:radial-gradient(#ffe9a8,#ff9d1e 60%,transparent);box-shadow:0 0 10px #ff9d1e}

/* Haldi: turmeric yellow, marigold garland, falling petals */
.t-haldi{--bg:radial-gradient(circle at 20% 15%,#fff9c4,transparent 45%),radial-gradient(circle at 85% 80%,#ffbf2f88,transparent 50%),linear-gradient(170deg,#ffec7a,#ffd22e 50%,#f5a416);--ink:#4f3300;--head:#7b4400;--accent:#a85d00;--card:#fffbe0dd;--line:#e1a21f;--shadow:#a8650033;--btn:#e08a00;--btn-ink:#fff;}
.t-haldi:before{top:0;height:84px;background:radial-gradient(circle at 50% 22px,#ff8a00 0 11px,#ffb300 12px 15px,transparent 16px) 0 0/36px 84px repeat-x,radial-gradient(circle at 50% 56px,#ffc400 0 11px,#ff9800 12px 15px,transparent 16px) 18px 0/36px 84px repeat-x}
.t-haldi:after{inset:auto 0 0 0;height:38%;background:radial-gradient(ellipse at 30% 100%,#ff990066,transparent 60%),radial-gradient(ellipse at 75% 100%,#ffe14d99,transparent 55%)}
.t-haldi .p{border-radius:60% 0 60% 0;background:linear-gradient(135deg,#ff9800,#ffc83d)}

/* Mehendi & Sangeet: henna green, gold jali, stage lights, notes */
.t-sangeet{--bg:radial-gradient(circle at 15% 20%,#8a2a7a66,transparent 45%),radial-gradient(circle at 85% 75%,#c9a2ff44,transparent 45%),linear-gradient(165deg,#0e3a29,#1d5738 45%,#40195a);--ink:#fdf0cf;--head:#f4d98f;--accent:#e8c46a;--card:#0b2a1ecc;--line:#cfa84f99;--shadow:#00000066;--btn:#e8c46a;--btn-ink:#1b2d1e}
.t-sangeet:before,.t-mehendi:before{inset:0;opacity:.14;background:repeating-linear-gradient(45deg,#e8c46a 0 1px,transparent 1px 26px),repeating-linear-gradient(-45deg,#e8c46a 0 1px,transparent 1px 26px)}
.t-sangeet:after{top:0;height:100%;opacity:.5;background:conic-gradient(from 200deg at 20% -5%,transparent 0 10%,#ff4fd855 14%,transparent 18%) ,conic-gradient(from 150deg at 80% -5%,transparent 0 10%,#ffd95a55 14%,transparent 18%);animation:sweep 6s ease-in-out infinite alternate}
@keyframes sweep{to{opacity:.2;transform:scaleX(1.12)}}
.t-sangeet .p{width:auto;height:auto;font:600 var(--s)/1 var(--serif);color:#f4d98f;text-shadow:0 0 12px #ff7ae0}

/* Mehendi: henna green, gold lattice, falling leaves */
.t-mehendi{--bg:radial-gradient(circle at 80% 12%,#7fcf8f33,transparent 50%),linear-gradient(170deg,#1b5a36,#2f7a47 50%,#14442b);--ink:#f6f0d2;--head:#f1dc98;--accent:#e3c66c;--card:#0d3320cc;--line:#cfa84f99;--shadow:#0008;--btn:#e3c66c;--btn-ink:#14331f}
.t-mehendi:after{bottom:0;height:120px;background:radial-gradient(ellipse 14px 30px at 50% 100%,#e3c66c33 0 98%,transparent) 0 0/28px 120px repeat-x}
.t-mehendi .p{border-radius:0 80% 0 80%;background:linear-gradient(135deg,#4fae6a,#1c5a38)}

/* Wedding: crimson & gold mandap arch, jasmine strands, rose petals */
.t-wedding{--bg:radial-gradient(ellipse at 50% 0,#a8283c55,transparent 60%),linear-gradient(180deg,#5a0f1c,#7f1727 55%,#4b0c18);--ink:#fff0d2;--head:#f3d792;--accent:#f0cf86;--card:#3b0a14cc;--line:#e1b96a;--shadow:#0009;--btn:linear-gradient(135deg,#d8ae5c,#b98a45);--btn-ink:#3b0a14}
.t-wedding .ev-card{border-radius:240px 240px 6px 6px;padding-top:92px}
.t-wedding .ev-medal{margin-top:-140px}
.t-wedding:before{top:0;bottom:0;opacity:.85;background:linear-gradient(#fff 0 0) 3% 0/2px 38% no-repeat,linear-gradient(#fff 0 0) 97% 0/2px 46% no-repeat,radial-gradient(circle at 50% 50%,#fff8e6 0 3.5px,transparent 4.5px) 3% 0/12px 14px repeat-y,radial-gradient(circle at 50% 50%,#fff8e6 0 3.5px,transparent 4.5px) 97% 0/12px 14px repeat-y;-webkit-mask:linear-gradient(90deg,#000 0 12%,transparent 12% 88%,#000 88%);mask:linear-gradient(90deg,#000 0 12%,transparent 12% 88%,#000 88%);transform-origin:top;animation:sway 6s ease-in-out infinite alternate;background-blend-mode:normal}
@keyframes sway{to{transform:skewX(2deg)}}
.t-wedding:after{bottom:0;height:90px;background:repeating-linear-gradient(90deg,#d8ae5c 0 2px,transparent 2px 24px),linear-gradient(transparent,#2b060d)}
.t-wedding .p{border-radius:70% 0 70% 0;background:linear-gradient(135deg,#d93a52,#8f1327)}

/* Reception: midnight, champagne gold, light beams, sparkles, bubbles */
.t-reception{--bg:#000;--ink:#f6ead0;--head:#f0dba6;--accent:#e9cf93;--card:#ffffff0f;--line:#e9cf9388;--shadow:#000a;--btn:transparent;--btn-ink:#f0dba6}
.t-reception:before{top:0;height:100%;opacity:.5;background:conic-gradient(from 160deg at 50% -5%,transparent 0 6%,#e9cf9333 10%,transparent 14%,#e9cf9322 20%,transparent 24%,#e9cf9333 32%,transparent 36%)}
.t-reception:after{top:0;height:70px;background:linear-gradient(#e9cf93,#e9cf93) 50% 0/1px 48px no-repeat,radial-gradient(circle at 50% 54px,#f6e3ae 0 5px,#e9cf93 6px 7px,transparent 8px),radial-gradient(circle at 38% 52px,#e9cf93 0 3px,transparent 4px),radial-gradient(circle at 62% 52px,#e9cf93 0 3px,transparent 4px)}
.t-reception .p{border-radius:50%;border:1px solid #f0dba6aa;background:#f0dba622}
.t-reception .tw{border:0;border-radius:0;background:none;color:#f6e3ae;font-size:var(--s);width:auto;height:auto;line-height:1;top:var(--y);bottom:auto;animation:twinkle var(--d) ease-in-out var(--w) infinite}


/* ===== Scenic themes built from the reference artwork: Sangeet (blush stage), Haldi & Mehendi (floral canopy) =====
   Each page background = top slice + stretchable middle band + bottom slice, so the artwork keeps its proportions at any height. */
.t-sangeet:before,.t-sangeet:after,.t-haldi:before,.t-haldi:after,.t-mehendi:before,.t-mehendi:after,.t-wedding:before,.t-wedding:after,.t-reception:before,.t-reception:after{content:none;animation:none}
.event-page.t-sangeet,.event-page.t-haldi,.event-page.t-mehendi,.event-page.t-wedding,.event-page.t-reception{--bw:min(100vw,560px);padding:calc(var(--bw)*var(--tr) + 22px) 20px calc(var(--bw)*var(--br) + 18px);min-height:calc(var(--bw)*1.5)}
.event-page.t-sangeet{--tr:.452;--br:.215;--th:.4517;--bh:.9102;--bg:#fcf5ee;--ink:#5a3b3a;--head:#7b3a47;--accent:#a8782f;--line:#d8b88a;--btn:#b0803c;--btn-ink:#fff8ea}
.event-page.t-haldi{--tr:.476;--br:.235;--th:.4755;--bh:.8288;--bg:#f3eae1;--ink:#4e3622;--head:#8a5200;--accent:#a8680a;--line:#e0b86a;--btn:#c98a14;--btn-ink:#fff}
.event-page.t-mehendi{--tr:.476;--br:.235;--th:.4755;--bh:.8288;--bg:#f3eae1;--ink:#33422a;--head:#3f6b3f;--accent:#8f6a24;--line:#c9b06a;--btn:#4f7d45;--btn-ink:#fff}
.t-sangeet .ev-card,.t-haldi .ev-card,.t-mehendi .ev-card,.t-wedding .ev-card,.t-reception .ev-card{width:min(440px,80%);border-radius:0;text-shadow:0 0 5px var(--halo,var(--bg)),0 0 10px var(--halo,var(--bg)),0 0 14px var(--halo,var(--bg));background:none;border:0;outline:0;box-shadow:none;backdrop-filter:none;padding-top:0}
.t-sangeet .ev-medal,.t-haldi .ev-medal,.t-mehendi .ev-medal,.t-wedding .ev-medal,.t-reception .ev-medal{display:none}
.ev-photo i{position:absolute;left:50%;width:var(--bw);transform:translateX(-50%);background-size:100% 100%;background-repeat:no-repeat}
.ev-photo .bg-top{top:0;height:calc(var(--bw)*var(--th))}
.ev-photo .bg-mid{top:calc(var(--bw)*var(--th) - 1px);bottom:calc(var(--bw)*var(--bh) - 1px)}
.ev-photo .bg-bot{bottom:0;height:calc(var(--bw)*var(--bh))}
.event-page.t-wedding{--tr:.7175;--br:.82;--th:.6875;--bh:.8125;--bg:#fdfbfa;--ink:#4a2c32;--head:#8c1d3d;--accent:#a8782f;--line:#d8b88a;--btn:#b0803c;--btn-ink:#fff8ea}
.event-page.t-reception{--tr:.634;--br:.414;--th:.6141;--bh:1.1087;--bg:#efe6cf;--halo:#0c1535;--ink:#f6ead0;--head:#f0dba6;--accent:#e9cf93;--line:#e9cf9388;--btn:transparent;--btn-ink:#f0dba6}
.t-reception .ev-card{width:min(440px,76%)}
.t-sangeet .bg-top{background-image:url('../assets/themes/sangeet-top.jpg')}.t-sangeet .bg-mid{background-image:url('../assets/themes/sangeet-mid.jpg')}.t-sangeet .bg-bot{background-image:url('../assets/themes/sangeet-bot.jpg')}
.t-haldi .bg-top,.t-mehendi .bg-top{background-image:url('../assets/themes/floral-top.jpg')}.t-haldi .bg-mid,.t-mehendi .bg-mid{background-image:url('../assets/themes/floral-mid.jpg')}.t-haldi .bg-bot,.t-mehendi .bg-bot{background-image:url('../assets/themes/floral-bot.jpg')}
@media(min-width:561px){.ev-photo i{-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}}

.t-wedding .bg-top{background-image:url('../assets/themes/wedding-top.jpg')}.t-wedding .bg-mid{background-image:url('../assets/themes/wedding-mid.jpg')}.t-wedding .bg-bot{background-image:url('../assets/themes/wedding-bot.jpg')}
.t-reception .bg-top{background-image:url('../assets/themes/reception-top.jpg')}.t-reception .bg-mid{background-image:url('../assets/themes/reception-mid.jpg')}.t-reception .bg-bot{background-image:url('../assets/themes/reception-bot.jpg')}
.t-sangeet .ev-map,.t-haldi .ev-map,.t-mehendi .ev-map,.t-wedding .ev-map,.t-reception .ev-map{text-shadow:none}
/* ---------- Gallery: Royal coverflow of Rajasthani arch frames ---------- */
.gallery-section{content-visibility:auto;contain-intrinsic-size:auto 900px;position:relative;overflow:hidden;padding:128px 0 84px;isolation:isolate;text-align:center;--w:clamp(190px,60vw,300px);
background:radial-gradient(ellipse at 50% 30%,#fdf6e8,#f6e8cf 75%)}
.gal-toran{position:absolute;top:0;left:0;right:0;height:92px;transform-origin:top;animation:toran-sway 3.5s ease-in-out infinite alternate;
background:linear-gradient(#b98a45,#b98a45) 0 10px/100% 2px no-repeat,radial-gradient(circle at 50% 30px,#ff8a00 0 9px,#ffc400 10px 13px,transparent 14px) 0 0/34px 92px repeat-x,radial-gradient(ellipse 6px 17px at 50% 58px,#2f7a3a 0 98%,transparent) 17px 0/34px 92px repeat-x,radial-gradient(circle at 50% 80px,#e8c982 0 4px,transparent 5px) 0 0/68px 92px repeat-x}
.gal-petals{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.gal-petals i{position:absolute;top:-6%;left:var(--x);width:var(--s);height:calc(var(--s)*1.5);border-radius:60% 0 60% 0;background:linear-gradient(135deg,#f0829f,#e85c86);opacity:0;animation:fall var(--d) linear var(--wt) infinite}
.gallery-section:not(.live) .gal-petals i,.gallery-section:not(.live) .gal-toran{animation-play-state:paused}
.gal-heading{padding:0 18px;margin-bottom:34px}
.gal-script{font:400 clamp(30px,7vw,38px)/1.2 var(--script);color:#7b2230;margin:0 0 6px}
.gal-heading h2{font:700 clamp(22px,6.2vw,38px)/1.2 var(--serif);letter-spacing:.06em;text-transform:uppercase;color:#7b1020;margin:0}
.gal-stage{position:relative;height:calc(var(--w)*1.25 + 44px);perspective:1100px;touch-action:pan-y;user-select:none;outline-offset:-4px}
.gal-slide{position:absolute;left:50%;top:14px;width:var(--w);margin:0 0 0 calc(var(--w)/-2);cursor:pointer;transition:transform .8s cubic-bezier(.22,.7,.2,1),opacity .6s ease,filter .6s ease;will-change:transform}
.gal-slide[data-pos="0"]{transform:none;z-index:5;cursor:default}
.gal-slide[data-pos="1"]{transform:translateX(64%) translateZ(-130px) rotateY(-30deg) scale(.84);z-index:4;filter:brightness(.8) saturate(.9)}
.gal-slide[data-pos="-1"]{transform:translateX(-64%) translateZ(-130px) rotateY(30deg) scale(.84);z-index:4;filter:brightness(.8) saturate(.9)}
.gal-slide[data-pos="2"]{transform:translateX(108%) translateZ(-250px) rotateY(-36deg) scale(.68);z-index:3;opacity:.7;filter:brightness(.7) saturate(.85)}
.gal-slide[data-pos="-2"]{transform:translateX(-108%) translateZ(-250px) rotateY(36deg) scale(.68);z-index:3;opacity:.7;filter:brightness(.7) saturate(.85)}
.gframe{position:relative;padding:10px;border-radius:999px 999px 12px 12px;background:linear-gradient(145deg,#f0d08c,#c9953f 50%,#e8c982);box-shadow:0 18px 38px #5a2a1a55}
.gframe img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;border-radius:999px 999px 4px 4px;box-shadow:0 0 0 3px #7b1020,0 0 0 4px #e0b865;background:#4b1018;pointer-events:none}
.gal-ribbon{margin:26px auto 0;display:table}
.gal-ribbon span{display:block;padding:9px 40px;background:#7b1020;color:#f4d98f;font:italic 600 clamp(19px,5vw,23px)/1.3 var(--serif);clip-path:polygon(0 0,100% 0,calc(100% - 15px) 50%,100% 100%,0 100%,15px 50%);transition:opacity .35s ease}
.gal-ribbon span.fade{opacity:0}
.gal-nav{display:flex;justify-content:center;gap:12px;margin-top:22px}
.gal-nav button{width:60px;height:46px;border:0;border-radius:23px;background:linear-gradient(135deg,#d9a53f,#b98225);color:#4b1018;font:700 30px/1 var(--serif);cursor:pointer;box-shadow:0 6px 16px #7b4a1244;transition:transform .2s,filter .2s;padding:0 0 4px}
.gal-nav button:hover{transform:translateY(-2px);filter:brightness(1.08)}
.gal-band{position:absolute;left:0;right:0;bottom:0;height:30px;border-top:2px solid #d9b469;background:linear-gradient(135deg,#d9b469 25%,transparent 25%) -15px 0/30px 30px,linear-gradient(225deg,#d9b469 25%,transparent 25%) -15px 0/30px 30px,#26070c}
@media(min-width:700px){.gallery-section{--w:300px}}

/* ---------- Responsive ---------- */
@media(max-width:850px){.section{padding:80px 18px}.hero{min-height:700px}}
@media(max-width:560px){
.scratch-reveal.venue-panel{padding:38px 10px}
.ev-card{backdrop-filter:none}.t-sangeet:after{animation:none}.t-wedding:before{animation:none}
.hero{height:95vh;height:95svh}.hero-copy{padding-top:60px}.couple-names{font-size:62px}
.section{padding:70px 17px}
.countdown div{min-width:54px}.countdown span{font-size:11px;letter-spacing:.08em}
.invitation-paper{padding:56px 22px}.venue-panel{padding:46px 18px}.venue-panel h3{font-size:32px}
.t-wedding:before{opacity:.6}}
/* Event pages on phones: medal sits inside the card, evenly spaced rows, balanced text */
@media(max-width:560px){
.event-page{min-height:0;padding:100px 26px 68px}
.ev-card{padding:34px 20px 32px;outline-offset:6px}
.ev-medal{margin:0 auto 14px;width:72px;height:72px;font-size:34px}
.ev-card h3{font-size:40px;text-wrap:balance}
.ev-tag{font-size:20px;margin-bottom:20px;text-wrap:balance}
.ev-info{gap:0;padding-top:0;margin-bottom:26px}
.ev-info>div{padding:14px 0}
.ev-info>div+div{border-top:1px solid var(--line)}
.ev-info dd{font-size:19px;text-wrap:balance}
.ev-map{display:block;width:100%;max-width:280px;margin:0 auto;padding:14px 10px}
.t-wedding .ev-card{border-radius:170px 170px 6px 6px;padding-top:44px}
.t-wedding .ev-medal{margin-top:0}
}
@media(max-width:360px){.scratch-reveal .gold-button{padding:14px 16px;letter-spacing:.07em;font-size:12px}.couple-names{font-size:54px}.countdown{gap:5px}.countdown div{min-width:46px}.countdown strong{font-size:34px}.countdown>b{font-size:24px}.countdown span{font-size:10.5px;letter-spacing:.04em}.invitation-paper{padding:50px 16px}.ev-card{padding:32px 14px 30px}.event-page{padding-left:22px;padding-right:22px}.ev-info dd{font-size:18px}}
@media(max-height:480px) and (orientation:landscape){.intro{padding:70px 0 40px}.gate{--w:calc((100svh - 140px)*.62);height:calc(100svh - 140px)}.hero{height:auto;min-height:100svh;padding:30px 0}.hero-copy{padding-top:30px}.couple-names{font-size:56px}.event-page{min-height:0;padding:130px 20px 70px}}
@media(prefers-reduced-motion:reduce){.gal-row{overflow-x:auto}.gal-track{transform:none!important}*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}.hero-copy>*{opacity:1;transform:none}.p{display:none}}
.t-sangeet .ev-map,.t-haldi .ev-map,.t-mehendi .ev-map{text-shadow:none}
