/* STYLE DNA — sample styling; no separate reference was supplied.
   Mood: romantic, luminous, heirloom, floral, intimate.
   Palette: #f7efe8 page; #fffaf5 cards; #ead6d3 blush; #704c47 headings;
   #4d413d body; #b58b54 gold accent; #d7b8a8 borders; #fff3d4 glow.
   Cormorant Garamond display, Great Vibes script accents, DM Sans labels/body.
   Mobile-first, centered 760px content, generous vertical spacing, soft oval corners.
   Cream paper feel, fine gold rules, floral line ornaments, editorial portrait frames.
   Motion: seal opens the invitation; sections fade in; restrained floating petals.
   Recreated with CSS and inline SVG; supplied photos only appear in the album. */
:root{--paper:#f7efe8;--cream:#fffaf5;--blush:#ead6d3;--rose:#b98d8a;--ink:#4d413d;--wine:#704c47;--gold:#b58b54;--line:#d7b8a8;--glow:#fff3d4;--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',Arial,sans-serif;--script:'Great Vibes',cursive;--safe-b:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:clip;background:var(--paper)}body{margin:0;overflow-x:clip;background:var(--paper);color:var(--ink);font:16px/1.65 var(--sans);-webkit-font-smoothing:antialiased}body.locked{height:100svh;overflow:hidden}button,a{font:inherit}button{cursor:pointer}a{color:inherit}img{display:block;max-width:100%}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:4px}.wrap{width:min(100% - 36px,760px);margin-inline:auto}.section{position:relative;padding:78px 0}.section-title{text-align:center;margin:0 auto 32px}.eyebrow{display:block;color:var(--gold);font-size:13px;letter-spacing:.2em;text-transform:uppercase}.section-title h2{font:500 clamp(38px,10vw,57px)/1 var(--serif);color:var(--wine);margin:9px 0 12px}.section-title p{margin:0;color:#776a64}.ornament{width:120px;height:20px;display:block;margin:14px auto;color:var(--gold)}.sample-ribbon{position:fixed;z-index:15;top:12px;right:12px;background:#704c47;color:white;border-radius:30px;padding:7px 12px;font-size:12px;letter-spacing:.06em;box-shadow:0 4px 16px #4d413d22}.reveal{opacity:0;transform:translateY(18px);transition:opacity .75s ease,transform .75s ease}.reveal.visible{opacity:1;transform:translateY(0)}
/* Opening invitation */
.opening{position:fixed;inset:0;z-index:30;display:grid;place-items:center;background:radial-gradient(ellipse at center,#fffaf5 0%,#f4e7dd 70%,#ead6d3 100%);transition:opacity .8s ease,visibility .8s;overflow:hidden}.opening:before,.opening:after{content:"";position:absolute;width:min(90vw,550px);aspect-ratio:1;border:1px solid #b58b544d;border-radius:50%;pointer-events:none}.opening:after{width:min(78vw,470px);border-style:dashed;opacity:.6}.opening.opened{opacity:0;visibility:hidden;pointer-events:none}.open-card{text-align:center;position:relative;z-index:1;padding:32px 20px}.open-card .small{font-size:13px;letter-spacing:.22em;color:var(--gold);text-transform:uppercase}.seal-button{width:96px;height:96px;border:0;border-radius:50%;margin:28px auto 18px;color:#fff9ef;background:radial-gradient(circle at 35% 30%,#ccaa70,#9b7144 72%);box-shadow:0 0 0 8px #b58b5420,0 0 32px #b58b5460;transition:transform .35s,box-shadow .35s;display:grid;place-items:center;font:500 23px var(--serif)}.seal-button:hover{transform:scale(1.06);box-shadow:0 0 0 12px #b58b5420,0 0 48px #b58b5480}.open-card h1{font:400 clamp(38px,9vw,60px)/1 var(--script);color:var(--wine);margin:8px 0}.open-card p{margin:0;color:#806c62}.opening.opening-run .seal-button{animation:seal .55s ease forwards}.opening.opening-run:after{animation:ring 1.1s ease-out forwards}.spark{position:absolute;z-index:2;width:5px;height:5px;background:#fff5cf;border-radius:50%;box-shadow:0 0 12px 4px #e2b96b;animation:spark 1.1s ease-out forwards;pointer-events:none}@keyframes seal{50%{transform:scale(1.12);box-shadow:0 0 0 20px #b58b541c,0 0 65px #efcd7c}100%{transform:scale(.96)}}@keyframes ring{to{transform:scale(1.45);opacity:0}}@keyframes spark{to{transform:translate(var(--dx),var(--dy)) scale(.1);opacity:0}}
.opening-atmosphere{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}.opening-petal{position:absolute;left:var(--x);top:-12%;width:14px;height:24px;border-radius:88% 8% 78% 12%;background:linear-gradient(145deg,#ef9aad,#ce5876 72%,#b64462);opacity:0;transform:rotate(var(--tilt));animation:opening-drift var(--duration) linear var(--delay) infinite}.opening-petal.soft{width:25px;height:35px;opacity:0;filter:blur(5px)}.opening-glow{position:absolute;width:90px;height:90px;left:var(--x);top:var(--y);border-radius:50%;background:radial-gradient(circle,#e88ca266 0,#ef9baa30 42%,transparent 72%);filter:blur(8px);animation:glow-breathe 7s ease-in-out var(--delay) infinite alternate}.opening-petal:nth-child(3n){width:9px;height:16px}.opening-petal:nth-child(4n){border-radius:70% 10% 80% 20%}.@keyframes opening-drift{0%{transform:translate3d(0,-4vh,0) rotate(var(--tilt));opacity:0}12%{opacity:.72}80%{opacity:.5}100%{transform:translate3d(var(--sway),112vh,0) rotate(calc(var(--tilt) + 390deg));opacity:0}}@keyframes glow-breathe{from{transform:translate3d(-12px,8px,0) scale(.8);opacity:.35}to{transform:translate3d(16px,-18px,0) scale(1.2);opacity:.75}}
.opening-petal{top:0;opacity:.45;animation-name:opening-drift;animation-duration:var(--duration,20s);animation-timing-function:linear;animation-delay:var(--delay,0s);animation-iteration-count:infinite}.opening-petal.soft{opacity:.28;filter:blur(3px)}@keyframes opening-drift{0%{transform:translate3d(0,-5vh,0) rotate(var(--tilt));opacity:.45}12%{opacity:.8}80%{opacity:.55}100%{transform:translate3d(var(--sway),105vh,0) rotate(calc(var(--tilt) + 390deg));opacity:0}}
/* Hero */
.hero{min-height:100svh;position:relative;display:grid;place-items:center;text-align:center;padding:90px 18px 52px;overflow:hidden;background:radial-gradient(ellipse at 50% 35%,#fffdf9 0%,#fbf4ee 40%,#f2e5dd 100%)}.hero:before{content:"";position:absolute;inset:20px;border:1px solid #b58b5470;pointer-events:none}.hero:after{content:"";position:absolute;inset:28px;border:1px solid #b58b5428;pointer-events:none}.hero-content{position:relative;z-index:1;transform:translateY(var(--parallax,0px))}.blessing{font:500 16px var(--serif);letter-spacing:.12em;color:var(--gold)}.hero-names{font:500 clamp(44px,5vw,72px)/.9 var(--script);color:var(--wine);margin:28px 0 15px;text-shadow:0 2px 0 #fff}.hero-amp{font:400 .45em var(--serif);color:var(--gold);vertical-align:middle}.hero-sub{font:500 14px var(--sans);text-transform:uppercase;letter-spacing:.24em;color:#89746b}.hero-date{font:500 24px var(--serif);margin:22px 0 8px;color:var(--ink)}.cta{min-height:48px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:1px solid var(--gold);border-radius:999px;padding:10px 24px;color:var(--wine);background:#fffaf5d9;letter-spacing:.07em;font-size:14px;transition:background .2s,transform .2s}.cta:hover{background:#f3e2d6;transform:translateY(-2px)}.scroll-hint{position:absolute;bottom:24px;z-index:1;color:#9a8277;text-transform:uppercase;letter-spacing:.2em;font-size:12px}.scroll-hint:after{content:"";display:block;width:1px;height:28px;background:var(--gold);margin:7px auto 0}
/* Shared decoration and botanical motifs */
.floral{position:absolute;width:110px;height:110px;color:#c5a278;opacity:.6;pointer-events:none}.floral.left{left:-17px;top:30px}.floral.right{right:-17px;bottom:14px;transform:rotate(180deg)}.divider{height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);width:min(100%,360px);margin:0 auto}
/* Couple */
.couple-grid{display:grid;gap:22px}.person-card{position:relative;background:var(--cream);border:1px solid var(--line);border-radius:180px 180px 24px 24px;padding:18px 18px 25px;text-align:center;box-shadow:0 12px 36px #704c4710;overflow:hidden}.person-card:before{content:"";position:absolute;inset:8px;border:1px solid #b58b5448;border-radius:inherit;pointer-events:none}.person-art{display:block;width:100%;height:clamp(220px,30vw,270px);object-fit:contain;object-position:center;position:relative;margin:0 auto 10px}.person-label{font-size:12px;text-transform:uppercase;letter-spacing:.2em;color:var(--gold)}.person-name{font:500 44px/1.05 var(--script);color:var(--wine);margin:6px 0 0}
/* Countdown */
.countdown{background:#f0e0d9}.timer{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;max-width:520px;margin:auto}.time-box{background:#fffaf5b8;border:1px solid #c9aa96;border-radius:16px;padding:13px 4px;text-align:center}.time-box strong{display:block;font:500 clamp(28px,7vw,42px)/1 var(--serif);color:var(--wine)}.time-box span{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#806b61}.married{font:500 34px var(--script);text-align:center;color:var(--wine)}
/* Event timeline */
.timeline{position:relative;max-width:620px;margin:0 auto;padding-left:49px}.timeline:before{content:"";position:absolute;left:17px;top:8px;bottom:12px;width:1px;background:linear-gradient(var(--gold),#d7b8a855)}.event{position:relative;margin:0 0 18px;background:var(--cream);border:1px solid var(--line);border-radius:18px;padding:20px 170px 20px 19px;box-shadow:0 8px 24px #704c4709}.marker{position:absolute;left:-49px;top:19px;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--gold);color:#fff;font:500 16px var(--serif);box-shadow:0 0 0 5px var(--paper)}.event h3{font:600 30px/1.05 var(--serif);color:var(--wine);margin:0 0 8px}.event p{margin:4px 0;color:#675952}.event strong{font-weight:600;color:#84614b}.event a{display:inline-flex;min-height:44px;align-items:center;color:var(--wine);font-size:14px;text-underline-offset:3px}.event .cta{position:absolute;right:20px;top:50%;margin:0;white-space:nowrap;text-decoration:none;transform:translateY(-50%)}.event .cta:hover{transform:translateY(calc(-50% - 2px))}.home-icon{position:absolute;right:25px;top:50%;width:42px;height:42px;color:var(--gold);transform:translateY(-50%)}
/* Venue */
.details-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.detail{min-height:100px;background:var(--cream);border:1px solid var(--line);border-radius:16px;padding:17px 13px;text-align:center;display:flex;flex-direction:column;justify-content:center}.detail span{font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:var(--gold)}.detail strong{font:500 22px/1.2 var(--serif);color:var(--wine);margin-top:5px}.venue-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:22px}.map-card{display:block;margin:24px auto 0;max-width:620px;background:#f3e8df;border:1px solid var(--line);border-radius:20px;overflow:hidden;text-decoration:none}.map-card svg{display:block;width:100%;height:auto}.map-card figcaption{text-align:center;padding:12px;font:500 20px var(--serif);color:var(--wine)}
/* Album and accessible lightbox */
.album{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.photo-button{padding:0;border:1px solid var(--gold);border-radius:100px 100px 15px 15px;background:var(--cream);overflow:hidden;aspect-ratio: .78;box-shadow:0 7px 22px #704c4714}.photo-button:nth-child(3n){border-radius:15px 100px 15px 100px}.photo-button img{width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .5s}.photo-button:hover img{transform:scale(1.035)}.photo-button:last-child{grid-column:auto;aspect-ratio:.78;max-height:none}.lightbox{position:fixed;inset:0;z-index:45;background:#211917ed;display:none;place-items:center;padding:18px}.lightbox.active{display:grid}.lightbox img{max-width:min(88vw,1000px);max-height:78vh;object-fit:contain;border:1px solid #d7b878;border-radius:10px}.light-count{position:absolute;top:max(18px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);color:white}.lb-close,.lb-prev,.lb-next{position:absolute;width:48px;height:48px;border-radius:50%;border:1px solid #fff9;background:#352d2acc;color:#fff;font-size:24px}.lb-close{right:18px;top:max(18px,env(safe-area-inset-top))}.lb-prev{left:14px;top:50%}.lb-next{right:14px;top:50%}
/* Footer and love reaction */
footer{position:relative;text-align:center;padding:65px 18px calc(50px + var(--safe-b));background:linear-gradient(#f7efe8,#ead6d3)}.footer-names{font:500 clamp(42px,11vw,64px)/1 var(--script);color:var(--wine);margin:8px}.footer-date,.footer-venue{margin:4px;color:#776860}.footer-art{display:block;width:min(320px,78vw);height:auto;aspect-ratio:1;object-fit:contain;margin:0 auto 14px}.lantern-button{margin-top:18px}.reaction-heart{position:fixed;z-index:50;left:var(--x);top:var(--y);margin-left:-.5em;color:var(--heart-color);font:700 var(--heart-size)/1 Georgia,serif;pointer-events:none;text-shadow:0 2px 8px #9c294033;animation:heart-rise var(--heart-duration) cubic-bezier(.18,.68,.25,1) var(--heart-delay) forwards}@keyframes heart-rise{0%{opacity:0;transform:scale(.25) rotate(-12deg)}12%{opacity:1;transform:scale(1) rotate(0)}100%{opacity:0;transform:translate(var(--heart-drift),var(--heart-rise-distance)) scale(.72) rotate(var(--heart-turn))}}
/* Ambient layers: non-interactive */
.moving-mark{pointer-events:none;mix-blend-mode:darken}.hero .floral{color:#6f8c60;opacity:.9}
#ambient,#flight{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:8}#ambient{z-index:9}.petal{position:fixed;z-index:7;top:-20px;width:11px;height:17px;border-radius:80% 0 80% 0;background:#c98786a8;pointer-events:none;animation:fall var(--dur) linear var(--delay) infinite;left:var(--x)}@keyframes fall{to{transform:translate3d(var(--sway),110vh,0) rotate(430deg)}}.wish-plane{fill:#b58b54;stroke:#fff5e8;stroke-width:1.3}.trail-heart{fill:#c78381}.twinkle{position:fixed;z-index:7;width:8px;height:8px;background:#fff3d4;clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%);opacity:0;pointer-events:none;animation:twinkle var(--dur) ease-in-out var(--delay) infinite}@keyframes twinkle{0%,100%{opacity:.12;transform:scale(.65)}50%{opacity:.8;transform:scale(1.2)}}
@media(min-width:650px){.section{padding:100px 0}.couple-grid{grid-template-columns:repeat(2,1fr);gap:24px}.person-art{height:270px}.album{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.details-grid{gap:16px}.hero:before{inset:34px}.hero:after{inset:42px}}
@media(max-width:600px){.event{padding:18px 16px 72px}.event .cta{top:auto;right:16px;bottom:14px;transform:none}.event .cta:hover{transform:translateY(-2px)}.home-icon{right:18px;top:50%}}@media(max-width:380px){.wrap{width:calc(100% - 28px)}.section{padding:65px 0}.hero-names{font-size:56px}.person-art{height:220px}.details-grid{gap:8px}.detail{padding:14px 8px}.detail strong{font-size:20px}.sample-ribbon{font-size:11px;padding:6px 9px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}.petal,#ambient{display:none}.hero-content{transform:none!important}}
@media(prefers-reduced-motion:reduce){.opening-petal,.opening-glow{display:none}}
.open-card .seal-button{margin-top:12px}.seal-arrow{display:block;height:27px;margin:6px auto 0;color:var(--gold);font:400 25px/1 var(--serif);animation:arrow-nudge 1.6s ease-in-out infinite}@keyframes arrow-nudge{0%,100%{transform:translateY(0);opacity:.55}50%{transform:translateY(7px);opacity:1}}
@media(max-width:600px){.opening:before{width:94vw;height:min(150vw,560px);aspect-ratio:auto}.opening:after{width:86vw;height:min(138vw,520px);aspect-ratio:auto}.open-card{padding-inline:16px}.open-card>img{width:min(74vw,340px)!important}.open-card .small{font-size:12px;letter-spacing:.18em}}
@media(max-width:600px){.couple-grid .person-card:first-child{order:2}.couple-grid .person-card:last-child{order:1}.person-name{font-size:40px}.hero-names{font-size:clamp(44px,5vw,72px)}}
.parents-line{font-size:16px;font-weight:500;line-height:1.45;color:#806b61;margin:8px 0 0}
.couple-grid .person-card:first-child{order:2}.couple-grid .person-card:last-child{order:1}
@media(min-width:601px){.hero-names{font-size:clamp(44px,5vw,72px)}}
@media(min-width:650px){.details-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:649px){.details-grid .detail:last-child{grid-column:1/-1}}
.opening-glow.glow-1{--x:8%;--y:18%;--delay:-2s}
.opening-glow.glow-2{--x:72%;--y:55%;--delay:-5s}
.opening-glow.glow-3{--x:38%;--y:78%;--delay:-3s}
.opening-petal.petal-1{--x:12%;--delay:-7s;--duration:19s;--sway:72px;--tilt:38deg}
.opening-petal.petal-2{--x:27%;--delay:-13s;--duration:23s;--sway:-58px;--tilt:72deg}
.opening-petal.petal-3{--x:43%;--delay:-4s;--duration:17s;--sway:46px;--tilt:24deg}
.opening-petal.petal-4{--x:59%;--delay:-15s;--duration:22s;--sway:65px;--tilt:62deg}
.opening-petal.petal-5{--x:76%;--delay:-10s;--duration:20s;--sway:-76px;--tilt:12deg}
.opening-petal.petal-6{--x:91%;--delay:-2s;--duration:18s;--sway:-45px;--tilt:48deg}
.opening-petal.petal-7{--x:34%;--delay:-17s;--duration:24s;--sway:82px;--tilt:28deg}
.opening-petal.petal-8{--x:68%;--delay:-8s;--duration:21s;--sway:-62px;--tilt:84deg}
.bismillah-art{display:block;width:min(78vw,360px);height:auto;margin:0 auto 6px;mix-blend-mode:multiply}.opening-initial{display:inline-block;width:1.08em;height:1.08em;object-fit:contain;vertical-align:-.16em;margin-right:-.07em}.seal-monogram{display:block;width:68px;height:68px;object-fit:contain;border-radius:50%;mix-blend-mode:multiply}.married{grid-column:1/-1}

.glow-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:10;pointer-events:none;opacity:0;transition:opacity .5s}.touch-ripple{position:fixed;z-index:10;pointer-events:none;width:10px;height:10px;border:1px solid #b58b54;border-radius:50%;transform:translate(-50%,-50%);animation:ripple .8s ease-out forwards}@keyframes ripple{to{width:90px;height:90px;opacity:0}}
