﻿@font-face{font-family:"DM Serif Display";src:url("../assets/fonts/DMSerifDisplay-Regular.ttf") format("truetype");font-display:swap;font-style:normal;font-weight:400}
@font-face{font-family:"Mukta Vaani";src:url("../assets/fonts/MuktaVaani-Regular.ttf") format("truetype");font-display:swap;font-style:normal;font-weight:400}
@font-face{font-family:"Mukta Vaani";src:url("../assets/fonts/MuktaVaani-SemiBold.ttf") format("truetype");font-display:swap;font-style:normal;font-weight:600}
@font-face{font-family:"Noto Serif Gujarati";src:url("../assets/fonts/NotoSerifGujarati-Variable.ttf") format("truetype");font-display:swap;font-style:normal;font-weight:100 900}

:root{
  --ivory:#f7eedb;--parchment:#e8d6b5;--gold:#b88a3b;--gold-light:#d7b76f;
  --maroon:#681f2b;--rose:#b96870;--green:#75866b;--ink:#33241f;--muted:#6e5a4f;
  --paper:#fff9ea;--shadow:0 22px 55px rgba(67,37,24,.16);--max:1120px;
  --display:"DM Serif Display",Georgia,serif;--body:"Mukta Vaani","Nirmala UI",sans-serif;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--ivory)}
body{margin:0;color:var(--ink);background:var(--ivory);font-family:var(--body);font-size:18px;line-height:1.6;overflow-x:hidden}
body.intro-active{overflow:hidden}
button,input,textarea{font:inherit}
button,a{-webkit-tap-highlight-color:transparent}
button{color:inherit}
a{color:inherit}
img,svg{display:block;max-width:100%}
h1,h2,h3,p{margin-top:0}
h1,h2,h3{font-family:var(--display);font-weight:400;line-height:1.08}
h2{font-size:clamp(2.35rem,7vw,4.9rem);letter-spacing:-.025em;margin-bottom:1.1rem}
h3{font-size:clamp(1.65rem,4vw,2.35rem);margin-bottom:.65rem}
p{margin-bottom:1rem}
address{font-style:normal}
.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}
.skip-link{position:fixed;top:.5rem;left:.5rem;z-index:3000;padding:.65rem 1rem;background:var(--paper);color:var(--maroon);transform:translateY(-160%);transition:transform .2s}
.skip-link:focus{transform:translateY(0)}
:focus-visible{outline:3px solid #2563eb;outline-offset:4px}

/* Opening experience */
.intro{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;overflow:hidden;min-height:100dvh;background:radial-gradient(circle at 50% 25%,#fff7df 0,#ead6ad 70%,#d1b783 100%);transition:opacity .7s ease,visibility .7s ease}
.intro.intro-hidden{opacity:0;visibility:hidden;pointer-events:none}
.intro-sky{position:absolute;inset:0;background-image:radial-gradient(circle at 20% 10%,rgba(255,255,255,.75),rgba(255,255,255,0) 22%),radial-gradient(circle at 84% 20%,rgba(104,31,43,.08),rgba(104,31,43,0) 28%);pointer-events:none}
.intro-sky:after{content:"";position:absolute;inset:0;opacity:.2;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90' viewBox='0 0 90 90'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.68' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E")}
.intro-skip{position:absolute;right:max(1rem,env(safe-area-inset-right));top:max(1rem,env(safe-area-inset-top));z-index:20}
.button-quiet,.text-button{border:0;background:transparent;color:var(--maroon);text-decoration:underline;text-underline-offset:4px;cursor:pointer;padding:.5rem}
.intro .button-quiet{padding:.45rem .75rem;background:rgba(255,249,234,.92);border:1px solid rgba(104,31,43,.25);box-shadow:0 3px 12px rgba(50,25,16,.12);text-decoration:none}
.jharokha{position:relative;width:min(92vw,470px);height:min(92dvh,780px);min-height:580px;filter:drop-shadow(0 24px 34px rgba(72,37,18,.28));animation:intro-settle 1.2s cubic-bezier(.2,.75,.2,1) both}
.jharokha-crown{position:absolute;z-index:8;top:0;left:3%;right:3%;height:14%;background:var(--maroon);border:4px solid var(--gold);border-bottom-width:7px;border-radius:50% 50% 7% 7%/22% 22% 7% 7%;overflow:hidden}
.jharokha-crown:before,.jharokha-crown:after{content:"";position:absolute;inset:10% 3%;border-top:2px dashed rgba(255,238,190,.7);border-bottom:2px dashed rgba(255,238,190,.7);border-radius:50%}
.jharokha-crown span{position:absolute;bottom:-2px;width:20%;height:40%;background:var(--rose);border:2px solid var(--gold);border-radius:50% 50% 0 0}
.jharokha-crown span:nth-child(1){left:0}.jharokha-crown span:nth-child(2){left:20%}.jharokha-crown span:nth-child(3){left:40%}.jharokha-crown span:nth-child(4){left:60%}.jharokha-crown span:nth-child(5){left:80%}
.toran{position:absolute;z-index:12;top:10.5%;left:8%;right:8%;display:flex;justify-content:space-around;transform-origin:top center;animation:toran-sway 4s ease-in-out infinite}
.toran i{display:block;width:19px;height:42px;background:var(--green);border:2px solid #526348;border-radius:70% 0 70% 0;transform:rotate(-18deg);filter:drop-shadow(0 2px 2px rgba(0,0,0,.18))}
.toran i:nth-child(even){transform:rotate(18deg);background:#879775}
.bell{position:absolute;z-index:13;top:13%;width:3px;height:12%;background:var(--gold);transform-origin:top center;animation:bell-swing 3.6s ease-in-out infinite}
.bell-left{left:14%}.bell-right{right:14%;animation-delay:-1.7s}
.bell span{position:absolute;bottom:-7px;left:-10px;width:23px;height:17px;background:var(--gold);border-radius:50% 50% 35% 35%;box-shadow:inset 0 -4px 0 #8d6022}
.bell span:after{content:"";position:absolute;bottom:-5px;left:9px;width:6px;height:6px;border-radius:50%;background:#85561f}
.door-frame{position:absolute;top:10%;bottom:5%;left:4%;right:4%;overflow:hidden;border:8px solid var(--gold);border-radius:47% 47% 4% 4%/18% 18% 3% 3%;background:var(--paper);box-shadow:inset 0 0 0 4px #7b4d1f,inset 0 0 0 10px #d6b36c}
.door-frame:before{content:"";position:absolute;inset:16px;z-index:6;border:2px solid rgba(104,31,43,.45);border-radius:45% 45% 2% 2%/17% 17% 2% 2%;pointer-events:none}
.door{position:absolute;z-index:5;top:0;bottom:0;width:50.2%;background:linear-gradient(90deg,#8a5a21,#c49549 45%,#9f6b29);border:2px solid #714417;transition:transform 1.65s cubic-bezier(.72,0,.18,1);backface-visibility:hidden}
.door-left{left:0;transform-origin:left center}.door-right{right:0;transform-origin:right center;background:linear-gradient(90deg,#9f6b29,#c49549 55%,#82531d)}
.intro-open .door-left{transform:perspective(900px) rotateY(-102deg)}
.intro-open .door-right{transform:perspective(900px) rotateY(102deg)}
.door:before{content:"";position:absolute;inset:7% 8%;border:3px double #e0bc6e;border-radius:45% 45% 5% 5%/20% 20% 5% 5%;background-image:radial-gradient(circle at 50% 18%,rgba(104,31,43,.23) 0 3px,transparent 4px),radial-gradient(circle at 50% 50%,rgba(104,31,43,.2) 0 4px,transparent 5px);background-size:32px 32px}
.door-carving{position:absolute;inset:20% 19%;border:2px solid #6f461c;border-radius:50%;display:grid;place-items:center}
.door-carving:before,.door-carving:after{content:"";position:absolute;width:75%;height:75%;border:2px solid rgba(104,31,43,.55);transform:rotate(45deg);border-radius:42% 8%}
.door-carving:after{transform:rotate(-45deg)}
.door-carving span{width:24px;height:24px;border:5px double var(--maroon);border-radius:50%}
.monogram-seal{position:absolute;z-index:10;left:50%;top:47%;transform:translate(-50%,-50%);width:118px;height:118px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#7c2634,#571620 70%);border:8px double var(--gold-light);box-shadow:0 7px 20px rgba(53,22,15,.4);transition:opacity .4s,transform .55s}
.monogram-seal:before{content:"";position:absolute;inset:-13px;border:2px dashed rgba(247,238,219,.55);border-radius:50%}
.monogram-seal span{max-width:88px;text-align:center;font-family:var(--display);font-size:1.75rem;line-height:1;color:#f8e7b5}
.intro-open .monogram-seal{opacity:0;transform:translate(-50%,-50%) scale(.65);pointer-events:none}
.open-invitation{position:absolute;z-index:11;left:50%;bottom:5.5%;transform:translateX(-50%);width:min(78%,330px);padding:.82rem 1.15rem .65rem;border:2px solid var(--gold-light);outline:3px solid var(--maroon);outline-offset:3px;background:var(--maroon);color:#fff5d8;box-shadow:0 10px 24px rgba(62,20,25,.35);cursor:pointer;transition:opacity .35s,transform .35s,background .2s}
.open-invitation:hover{background:#7b2936}.open-invitation span{display:block;font-family:var(--display);font-size:1.55rem}.open-invitation small{display:block;font-size:.75rem;letter-spacing:.05em;opacity:.82}
.intro-open .open-invitation{opacity:0;transform:translateX(-50%) translateY(18px);pointer-events:none}
.intro-reveal{position:absolute;inset:0;padding:20% 8% 3%;display:flex;flex-direction:column;align-items:center;justify-content:space-between;text-align:center;background:linear-gradient(180deg,#fff9e9 0,#f4e3be 65%,#d8c393 100%)}
.intro-reveal:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 8px 8px,rgba(104,31,43,.11) 1px,transparent 1.5px);background-size:23px 23px;opacity:.55}
.intro-reveal-copy,.intro-couple{position:relative;z-index:1;opacity:0;transform:translateY(18px)}
.intro-open .intro-reveal-copy{animation:reveal-copy 1s .95s cubic-bezier(.2,.75,.2,1) forwards}
.intro-open .intro-couple{animation:reveal-couple 1.1s 1.15s cubic-bezier(.12,.78,.18,1) forwards}
.intro-reveal h1{display:flex;flex-wrap:wrap;justify-content:center;gap:.12em .35em;margin:0;color:var(--maroon);font-size:clamp(1.8rem,8vw,3rem)}
.intro-reveal h1 b{font-weight:400;color:var(--gold)}
.intro-reveal .eyeline{margin:0 0 .3rem;text-transform:uppercase;letter-spacing:.18em;font-size:.72rem;color:var(--green)}
.intro-event-title{font-family:var(--display);font-size:1.05rem;color:var(--ink)}
.intro-couple{width:min(84%,330px);height:64%;display:grid;place-items:end center}
.intro-couple svg,.intro-couple img{max-height:100%;width:auto}
.couple-portrait-frame{margin:0;overflow:hidden}
.couple-portrait-frame img{height:100%;width:100%;object-fit:contain;object-position:center bottom;filter:saturate(.92) contrast(1.02)}
.diya{position:absolute;z-index:20;bottom:2%;width:64px;height:25px;border-radius:50% 50% 38% 38%;background:#9a5d20;border:3px solid var(--gold);box-shadow:0 5px 10px rgba(55,25,12,.25)}
.diya-left{left:8%}.diya-right{right:8%}
.diya:before{content:"";position:absolute;left:50%;bottom:14px;width:18px;height:30px;transform:translateX(-50%);border-radius:50% 50% 46% 46%;background:radial-gradient(circle at 50% 68%,#fff5a8 0 16%,#ffb12b 20% 48%,#d94c1f 52% 68%,transparent 72%);filter:drop-shadow(0 0 8px rgba(255,171,35,.75));animation:flame 1.8s ease-in-out infinite}
.petal-field{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.falling-petal{position:absolute;top:-30px;width:10px;height:16px;border-radius:80% 0 80% 0;background:var(--rose);opacity:.66;animation:petal-fall var(--duration,8s) linear var(--delay,0s) infinite}

/* Global page structure */
.section{position:relative;width:100%;padding:clamp(5.5rem,10vw,9rem) max(1.35rem,calc((100vw - var(--max))/2));isolation:isolate}
.section-heading{max-width:720px;margin:0 auto 3.1rem;text-align:center}
.section-kicker{margin:0 0 .65rem;color:var(--maroon);font-size:.78rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase}
.section-heading>p:last-child{max-width:600px;margin-left:auto;margin-right:auto;color:var(--muted)}
.reveal-on-scroll{opacity:0;transform:translateY(28px);transition:opacity .85s ease,transform .95s cubic-bezier(.2,.7,.2,1)}
.reveal-on-scroll.revealed{opacity:1;transform:none}
.paper-grain{position:absolute;inset:0;z-index:-1;opacity:.17;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='110' height='110'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23f)' opacity='.18'/%3E%3C/svg%3E")}
.ornament-divider{display:flex;align-items:center;justify-content:center;gap:.55rem;width:min(100%,280px);margin:1.8rem auto;color:var(--gold)}
.ornament-divider span{height:1px;flex:1;background:var(--gold)}
.ornament-divider i{width:18px;height:18px;border:2px solid var(--gold);transform:rotate(45deg);position:relative}
.ornament-divider i:after{content:"";position:absolute;inset:4px;background:var(--maroon);border-radius:50%}
.button-primary,.button-secondary{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:.72rem 1.35rem;border:2px solid var(--maroon);text-decoration:none;cursor:pointer;transition:transform .2s,box-shadow .2s,background .2s;color:var(--paper);background:var(--maroon);font-weight:600;letter-spacing:.02em}
.button-primary:hover,.button-primary:focus-visible{transform:translateY(-2px);box-shadow:0 9px 18px rgba(104,31,43,.22)}
.button-secondary{background:transparent;color:var(--maroon)}
.button-secondary:hover{background:rgba(104,31,43,.07)}

/* Welcome */
.hero-section{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:var(--ivory);overflow:hidden}
.hero-section:before,.hero-section:after{content:"";position:absolute;width:280px;height:280px;border:1px solid rgba(184,138,59,.35);border-radius:50%;background:repeating-radial-gradient(circle,transparent 0 16px,rgba(184,138,59,.1) 17px 18px);z-index:-1}
.hero-section:before{top:-130px;left:-130px}.hero-section:after{right:-140px;bottom:-130px}
.ganesha-mark{width:110px;margin-bottom:1rem;color:var(--maroon)}
.ganesha-mark svg{fill:none;stroke:currentColor;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.gujarati-blessing{margin-bottom:.35rem;color:var(--gold);font-family:"Noto Serif Gujarati","Nirmala UI",serif;font-size:1.28rem;font-weight:600;line-height:1.6;letter-spacing:0}
.hero-section h2{max-width:780px;color:var(--maroon)}
.hero-message{max-width:610px;color:var(--muted);font-size:1.08rem}
.event-date-line{font-family:var(--display);font-size:1.3rem;color:var(--ink)}
.scroll-cue{display:flex;flex-direction:column;align-items:center;gap:.4rem;margin-top:1.8rem;text-decoration:none;color:var(--green);font-size:.78rem;text-transform:uppercase;letter-spacing:.14em}
.scroll-cue span{width:1px;height:36px;background:linear-gradient(var(--gold),transparent);animation:scroll-cue 1.9s ease-in-out infinite}

/* Couple */
.couple-section{display:grid;grid-template-columns:minmax(280px,.95fr) minmax(300px,1fr);gap:clamp(2.5rem,7vw,7rem);align-items:center;background:#f2e3c5}
.couple-section:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 12px 12px,rgba(104,31,43,.12) 1.5px,transparent 2px);background-size:34px 34px;z-index:-1;opacity:.45}
.arch-panel{position:relative;min-height:580px;display:flex;align-items:flex-end;justify-content:center;padding:5rem 2rem 0;border:3px solid var(--gold);border-bottom:0;background:linear-gradient(#fff9e9,#e3d0a8);clip-path:polygon(15% 0,85% 0,100% 15%,100% 100%,0 100%,0 15%)}
.arch-panel:before{content:"";position:absolute;inset:16px 16px 0;border:2px solid rgba(104,31,43,.5);clip-path:inherit}
.arch-pattern{position:absolute;inset:auto 0 0;height:22%;background:repeating-linear-gradient(45deg,rgba(117,134,107,.25) 0 5px,transparent 5px 17px),repeating-linear-gradient(-45deg,rgba(184,138,59,.2) 0 5px,transparent 5px 17px)}
.couple-main{position:relative;z-index:2;width:min(100%,520px);height:500px;display:flex;align-items:flex-end;justify-content:center}
.couple-main svg,.couple-main img{max-height:100%}
.couple-copy{max-width:560px}.couple-copy h2{display:flex;flex-direction:column;color:var(--maroon)}.couple-copy h2 b{color:var(--gold);font-size:.65em}
.couple-copy>p:last-of-type{color:var(--muted)}
.family-names{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:2rem;padding-top:1.3rem;border-top:1px solid rgba(104,31,43,.24)}
.family-names small{display:block;color:var(--green);text-transform:uppercase;letter-spacing:.12em;font-size:.68rem}.family-names strong{display:block;margin-top:.25rem;font-family:var(--display);font-weight:400;font-size:1.15rem}
.petal{position:absolute;width:12px;height:19px;border-radius:90% 0 90% 0;background:var(--rose);opacity:.7;animation:petal-drift 5s ease-in-out infinite}.p1{top:25%;left:8%}.p2{top:34%;right:11%;animation-delay:-1.8s}.p3{top:54%;left:14%;animation-delay:-3s}

/* Ceremonies */
.ceremonies{background:var(--paper)}
.ceremony-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;max-width:940px;margin:auto;background:var(--gold);border:1px solid var(--gold);box-shadow:var(--shadow)}
.ceremony{position:relative;min-height:420px;padding:clamp(2rem,6vw,4rem);text-align:center;background:var(--ivory);overflow:hidden}
.ceremony:after{content:"";position:absolute;inset:14px;border:1px solid rgba(184,138,59,.42);pointer-events:none}
.ceremony-ring{background:#f5e5dd}
.ceremony p{color:var(--muted)}.ceremony-time{color:var(--green)!important;text-transform:uppercase;letter-spacing:.16em;font-size:.78rem}.ceremony h3{color:var(--maroon)}
.ceremony-symbol{height:86px;position:relative;margin:0 auto 1.4rem;width:100px}.jaggery{position:absolute;left:17px;bottom:5px;width:47px;height:40px;background:#a96c28;border:3px solid #754615;border-radius:45% 55% 48% 52%}.dhana{position:absolute;right:7px;top:2px;width:42px;height:70px;border:4px solid var(--green);border-radius:50% 0 50% 0;transform:rotate(22deg)}.dhana:after{content:"";position:absolute;inset:7px;border:2px dashed #526348;border-radius:inherit}
.ring-symbol{position:relative;width:98px;height:86px;margin:0 auto 1.4rem}.ring-symbol i{position:absolute;top:23px;width:48px;height:48px;border:8px solid var(--gold);border-radius:50%}.ring-symbol i:first-child{left:8px}.ring-symbol i:last-child{right:8px}.ring-symbol i:last-child:before{content:"";position:absolute;top:-27px;left:8px;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:18px solid var(--rose)}

/* Scratch */
.scratch-section{background:linear-gradient(180deg,var(--ivory),#ead6ad);text-align:center;overflow:hidden}
.scratch-card{position:relative;width:min(92vw,620px);aspect-ratio:16/9;margin:0 auto 1rem;overflow:hidden;border:7px double var(--gold);background:var(--paper);box-shadow:var(--shadow);touch-action:none;user-select:none}
.scratch-reveal{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;background:radial-gradient(circle at center,#fff9ea,#ead7b4);background-image:radial-gradient(circle at 7px 7px,rgba(104,31,43,.1) 1.4px,transparent 1.5px);background-size:23px 23px}
.scratch-reveal small{text-transform:uppercase;letter-spacing:.2em;color:var(--green)}.scratch-reveal strong{font-family:var(--display);font-size:clamp(1.75rem,6vw,3.3rem);font-weight:400;color:var(--maroon)}.scratch-reveal span{color:var(--muted)}
#scratch-canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;transition:opacity .5s}
.scratch-card.revealed #scratch-canvas{opacity:0;pointer-events:none}
.scratch-instruction{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;color:#fff3c8;text-shadow:0 2px 4px rgba(59,29,12,.45)}.scratch-instruction span{font-family:var(--display);font-size:clamp(1.6rem,5vw,2.6rem)}.scratch-instruction i{position:absolute;bottom:18%;right:22%;font-style:normal;font-size:2rem;animation:scratch-hint 1.6s ease-in-out infinite}
.scratch-card.revealed .scratch-instruction{display:none}
.scratch-confetti{position:absolute;left:50%;top:60%;width:1px;height:1px;pointer-events:none}.confetti-piece{position:absolute;width:8px;height:14px;background:var(--rose);animation:confetti-pop 1.3s cubic-bezier(.15,.75,.25,1) forwards}.confetti-piece:nth-child(3n){background:var(--gold)}.confetti-piece:nth-child(3n+1){background:var(--green)}

/* Countdown */
.countdown-section{overflow:hidden;text-align:center;background:var(--maroon);color:#fff5dc}
.countdown-section:before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(circle at 70% 20%,rgba(215,183,111,.18),transparent 32%),linear-gradient(115deg,rgba(255,255,255,.04) 25%,transparent 25% 75%,rgba(255,255,255,.04) 75%)}
.section-heading.light .section-kicker{color:var(--gold-light)}.section-heading.light h2{color:#fff8e9}
.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(.55rem,2.5vw,1.2rem);max-width:850px;margin:auto}
.countdown div{position:relative;padding:1.7rem .6rem 1.3rem;border-top:1px solid var(--gold-light);border-bottom:1px solid var(--gold-light)}
.countdown strong{display:block;font-family:var(--display);font-size:clamp(2.2rem,8vw,5rem);font-weight:400;line-height:1;font-variant-numeric:tabular-nums}.countdown span{font-size:.72rem;text-transform:uppercase;letter-spacing:.16em;color:#e7cf9d}.countdown-status{margin:2rem 0 0;color:#e7cf9d}
.mandala{position:absolute;width:360px;height:360px;border:1px solid rgba(215,183,111,.25);border-radius:50%;background:repeating-conic-gradient(from 0deg,rgba(215,183,111,.09) 0 3deg,transparent 3deg 15deg);left:-180px;top:50%;transform:translateY(-50%);z-index:-1}

/* Story */
.story-section{background:#f2e3c5;overflow:hidden}
.story-rail{display:grid;grid-template-columns:repeat(3,1fr);gap:0;max-width:980px;margin:0 auto 3rem;border-top:1px solid var(--gold);border-bottom:1px solid var(--gold)}
.story-step{position:relative;padding:2.2rem 2rem;min-height:215px}.story-step+ .story-step{border-left:1px solid var(--gold)}.story-step:before{content:attr(data-step);display:block;margin-bottom:1rem;font-family:var(--display);font-size:2rem;color:var(--gold)}.story-step h3{color:var(--maroon);font-size:1.55rem}.story-step p{color:var(--muted);margin:0}
.ring-exchange{width:min(100%,720px);height:320px;margin:auto;display:grid;place-items:center}.ring-exchange svg{max-height:100%}
.ring-exchange.revealed svg circle[stroke]{animation:ring-glint 2.4s ease-in-out infinite}

/* Programme */
.timeline-section{background:var(--paper)}
.programme{list-style:none;margin:0 auto;padding:0;max-width:800px;counter-reset:programme}
.programme li{position:relative;display:grid;grid-template-columns:140px 1fr;gap:2rem;padding:0 0 2.5rem 2rem;counter-increment:programme}
.programme li:before{content:"";position:absolute;left:0;top:.42rem;width:13px;height:13px;background:var(--maroon);border:4px solid var(--paper);outline:2px solid var(--gold);transform:rotate(45deg)}
.programme li:not(:last-child):after{content:"";position:absolute;left:6px;top:28px;bottom:0;width:1px;background:var(--gold)}
.programme time{font-family:var(--display);color:var(--maroon);font-size:1.2rem}.programme h3{font-size:1.5rem;margin-bottom:.15rem}.programme p{margin:0;color:var(--muted)}

/* Venue */
.venue-section{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2rem,7vw,6rem);align-items:center;background:var(--ivory)}
.venue-illustration{position:relative;height:430px;border-bottom:8px double var(--gold);background:radial-gradient(circle at 50% 25%,#fff8e9,#e6d0a7);overflow:hidden}
.venue-illustration:before{content:"";position:absolute;left:50%;bottom:-120px;width:500px;height:500px;border:2px solid rgba(104,31,43,.18);border-radius:50%;transform:translateX(-50%)}
.palace{position:absolute;inset:auto 5% 0;height:76%;display:flex;align-items:flex-end;justify-content:center}
.palace i{position:relative;width:18%;height:64%;margin:-1px;border:3px solid var(--gold);background:#f7e7c7}.palace i:nth-child(3){height:100%;width:29%;border-radius:48% 48% 0 0/24% 24% 0 0}.palace i:nth-child(2),.palace i:nth-child(4){height:80%;border-radius:50% 50% 0 0/18% 18% 0 0}.palace i:before{content:"";position:absolute;left:25%;right:25%;bottom:0;height:55%;border:2px solid var(--maroon);border-bottom:0;border-radius:50% 50% 0 0/20% 20% 0 0;background:#e9d2aa}.palace i:nth-child(3):after{content:"";position:absolute;top:-26px;left:50%;width:4px;height:27px;background:var(--gold);transform:translateX(-50%)}
.venue-copy address{max-width:500px;margin-bottom:1.8rem;color:var(--muted)}.venue-copy .button-primary{margin-right:.5rem;margin-bottom:.6rem}.venue-copy .button-secondary{margin-bottom:.6rem}

/* Dress and contact */
.dress-section{background:#e9d5c9}
.dress-columns{display:grid;grid-template-columns:1fr 1fr;gap:1px;max-width:820px;margin:auto;background:rgba(104,31,43,.25);border:1px solid rgba(104,31,43,.25)}
.dress-columns>div{position:relative;padding:2.5rem;background:rgba(255,249,234,.62);text-align:center}.dress-columns h3{color:var(--maroon)}.dress-columns p{margin-bottom:0;color:var(--muted)}
.dress-swatch{display:block;width:68px;height:68px;margin:0 auto 1rem;border-radius:50%;border:5px double var(--gold);box-shadow:0 5px 13px rgba(63,36,25,.16)}.swatch-rose{background:var(--rose)}.swatch-green{background:var(--green)}
.contact-section{text-align:center;background:var(--paper)}
.contact-list{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem;margin:0 auto 2rem;max-width:760px}.contact-item{min-width:260px;padding:1rem 1.3rem;border-top:1px solid var(--gold);border-bottom:1px solid var(--gold)}.contact-item strong{display:block;font-family:var(--display);font-weight:400;font-size:1.25rem}.contact-item a{color:var(--maroon);text-underline-offset:3px}

/* Closing */
.closing-section{min-height:85svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#fff5dd;background:var(--maroon);overflow:hidden}
.closing-section:before,.closing-section:after{content:"";position:absolute;width:320px;height:320px;border:1px solid rgba(215,183,111,.25);border-radius:50%;background:repeating-conic-gradient(rgba(215,183,111,.08) 0 4deg,transparent 4deg 15deg);z-index:-1}.closing-section:before{left:-180px;top:-120px}.closing-section:after{right:-170px;bottom:-120px}
.closing-section .gujarati-blessing{color:var(--gold-light)}.closing-section h2{max-width:780px}.closing-section>p{max-width:610px}.closing-names{font-family:var(--display);font-size:clamp(1.65rem,5vw,2.55rem);color:var(--gold-light)}.closing-names b{font-weight:400;color:#fff}
.closing-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.85rem;margin-top:1rem}.closing-section .button-primary{border-color:var(--gold-light);background:var(--gold);color:#2f1b15}.closing-section .button-secondary{border-color:var(--gold-light);color:#fff3d2}.closing-section .button-secondary:hover{background:rgba(255,255,255,.08)}.made-note{margin-top:3rem!important;font-size:.72rem;color:#dcbf89;letter-spacing:.04em}
.lotus{position:relative;width:100px;height:72px;margin-bottom:1rem}.lotus i{position:absolute;left:38px;bottom:6px;width:28px;height:57px;border:3px solid var(--gold-light);border-radius:55% 0 55% 0;background:rgba(215,183,111,.16);transform-origin:bottom}.lotus i:nth-child(1){transform:rotate(-58deg)}.lotus i:nth-child(2){transform:rotate(-30deg)}.lotus i:nth-child(3){transform:rotate(0)}.lotus i:nth-child(4){transform:rotate(30deg)}.lotus i:nth-child(5){transform:rotate(58deg)}

/* Floating music and modal */
.floating-control{position:fixed;right:max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));z-index:700;width:52px;height:52px;display:grid;place-items:center;border:2px solid var(--gold-light);border-radius:50%;background:var(--maroon);color:#fff4d6;box-shadow:0 8px 22px rgba(50,22,17,.3);cursor:pointer}.floating-control svg{width:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.floating-control[aria-pressed="true"]:after{content:"";position:absolute;inset:-7px;border:1px solid var(--gold);border-radius:50%;animation:music-pulse 2s ease-out infinite}.floating-control.is-unavailable{opacity:.55}.floating-control[hidden]{display:none}
.rsvp-dialog{width:min(92vw,540px);max-height:90dvh;padding:0;border:0;background:transparent;color:var(--ink)}.rsvp-dialog::backdrop{background:rgba(38,20,17,.72);backdrop-filter:blur(4px)}.rsvp-dialog form{position:relative;overflow:auto;max-height:90dvh;padding:clamp(1.5rem,5vw,3rem);background:var(--paper);border:6px double var(--gold);box-shadow:var(--shadow)}.rsvp-dialog h2{font-size:2.4rem;color:var(--maroon)}.dialog-note{color:var(--muted);font-size:.9rem}.dialog-close{position:absolute;right:.65rem;top:.4rem;width:44px;height:44px;border:0;background:transparent;font-size:2rem;cursor:pointer}.rsvp-dialog label:not(.radio-row){display:block;margin-top:1rem;font-weight:600}.rsvp-dialog input[type="text"],.rsvp-dialog input[type="number"],.rsvp-dialog textarea{display:block;width:100%;margin-top:.35rem;padding:.75rem;border:1px solid #a88558;background:#fffdf5;color:var(--ink);border-radius:0}.rsvp-dialog fieldset{margin:1rem 0;padding:1rem;border:1px solid #a88558}.radio-row{display:block;margin:.45rem 0}.rsvp-dialog .button-primary{width:100%;margin-top:1.2rem}
.toast{position:fixed;z-index:2000;left:50%;bottom:1.2rem;max-width:min(92vw,520px);padding:.8rem 1.1rem;background:var(--ink);color:var(--paper);box-shadow:var(--shadow);opacity:0;visibility:hidden;transform:translate(-50%,150%);transition:transform .35s ease,opacity .25s ease,visibility 0s linear .35s}.toast:empty{display:none}.toast.show{opacity:1;visibility:visible;transform:translate(-50%,0);transition-delay:0s}

/* Animations */
@keyframes intro-settle{from{opacity:0;transform:translateY(35px) scale(.96)}to{opacity:1;transform:none}}
@keyframes toran-sway{0%,100%{transform:rotate(-.6deg)}50%{transform:rotate(.8deg)}}
@keyframes bell-swing{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(5deg)}}
@keyframes flame{0%,100%{transform:translateX(-50%) scale(.95) rotate(-2deg)}50%{transform:translateX(-50%) scale(1.08) rotate(3deg)}}
@keyframes reveal-copy{to{opacity:1;transform:none}}
@keyframes reveal-couple{from{opacity:0;transform:translateY(38px) scale(.97)}to{opacity:1;transform:none}}
@keyframes petal-fall{0%{transform:translate3d(0,-5vh,0) rotate(0)}50%{transform:translate3d(var(--drift,30px),50vh,0) rotate(230deg)}100%{transform:translate3d(calc(var(--drift,30px)*-.5),110vh,0) rotate(520deg)}}
@keyframes scroll-cue{0%,100%{transform:scaleY(.5);transform-origin:top;opacity:.4}50%{transform:scaleY(1);opacity:1}}
@keyframes petal-drift{0%,100%{transform:translate(0,0) rotate(0)}50%{transform:translate(15px,20px) rotate(100deg)}}
@keyframes scratch-hint{0%,100%{transform:translate(0,0)}50%{transform:translate(18px,-18px)}}
@keyframes confetti-pop{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(var(--x),var(--y)) rotate(var(--r))}}
@keyframes ring-glint{0%,100%{filter:drop-shadow(0 0 0 rgba(184,138,59,0))}50%{filter:drop-shadow(0 0 8px rgba(184,138,59,.75))}}
@keyframes music-pulse{0%{opacity:.8;transform:scale(.85)}100%{opacity:0;transform:scale(1.35)}}

/* Responsive */
@media (max-width:820px){
  body{font-size:17px}
  .section{padding-left:1.25rem;padding-right:1.25rem}
  .couple-section,.venue-section{grid-template-columns:1fr}
  .couple-copy,.venue-copy{text-align:center;margin:auto}
  .couple-copy h2{align-items:center}
  .arch-panel{width:min(100%,540px);margin:auto;min-height:530px}
  .venue-illustration{width:min(100%,650px);margin:auto}.venue-copy address{margin-left:auto;margin-right:auto}
  .story-rail{grid-template-columns:1fr}.story-step+.story-step{border-left:0;border-top:1px solid var(--gold)}
}

@media (max-width:600px){
  h2{font-size:2.55rem}.section-heading{margin-bottom:2.25rem}
  .jharokha{width:96vw;height:94dvh;min-height:545px}.door-frame{left:2%;right:2%}.jharokha-crown{left:1%;right:1%}.monogram-seal{width:104px;height:104px}.intro-reveal{padding-top:24%}.intro-couple{height:62%;width:92%}.diya{width:52px;height:22px}
  .hero-section{padding-top:7rem;padding-bottom:6rem}.ganesha-mark{width:92px}.hero-section h2{font-size:2.8rem}
  .couple-section{gap:2.4rem}.arch-panel{min-height:480px;padding-left:.5rem;padding-right:.5rem}.couple-main{height:430px}.family-names{grid-template-columns:1fr}.family-names>div+div{padding-top:1rem;border-top:1px solid rgba(104,31,43,.16)}
  .ceremony-grid{grid-template-columns:1fr}.ceremony{min-height:360px;padding:2.4rem 1.55rem}
  .scratch-card{width:100%;aspect-ratio:4/3}.scratch-reveal{padding:1rem}.scratch-reveal strong{font-size:1.9rem}
  .countdown{gap:.35rem}.countdown div{padding:1.2rem .2rem 1rem}.countdown strong{font-size:2.35rem}.countdown span{letter-spacing:.06em;font-size:.62rem}
  .ring-exchange{height:240px}
  .programme li{grid-template-columns:1fr;gap:.15rem;padding-left:1.55rem}.programme li:before{width:11px;height:11px}.programme li:not(:last-child):after{left:5px}
  .venue-illustration{height:330px}.venue-copy .button-primary,.venue-copy .button-secondary{width:100%;margin-right:0}
  .dress-columns{grid-template-columns:1fr}.dress-columns>div+div{border-top:1px solid rgba(104,31,43,.25)}
  .closing-actions{width:100%}.closing-actions button{width:100%}
}

@media (max-height:650px) and (orientation:landscape){.jharokha{height:96dvh;width:360px;min-height:0}.intro-reveal{padding-top:18%}.intro-couple{height:60%}.monogram-seal{width:82px;height:82px}.open-invitation{bottom:4%;padding:.45rem}.open-invitation span{font-size:1.1rem}.open-invitation small{display:none}}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .reveal-on-scroll{opacity:1;transform:none}
  .intro-reveal-copy,.intro-couple{opacity:1;transform:none}
  .intro-open .door-left{transform:translateX(-102%)}.intro-open .door-right{transform:translateX(102%)}
}

@media print{.intro,.floating-control,.scroll-cue,.closing-actions,.rsvp-open,#tap-reveal{display:none!important}.reveal-on-scroll{opacity:1;transform:none}.section{break-inside:avoid;padding:2rem}.countdown-section,.closing-section{color:var(--ink);background:var(--ivory)}}


