:root{--f:#ff008c;--m:#c1006b;--mar:#8f173f;--orange:#e97a3c;--ivory:#f5f1e8;--gold:#dca33d;--green:#445b33;--ink:#5c2837}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--ivory);color:var(--ink);font-family:'Plus Jakarta Sans',sans-serif;overflow-x:hidden}.welcome{position:fixed;inset:0;z-index:99;overflow:hidden;background:#f6eddf;display:grid;place-items:center;transition:opacity 1.1s ease,visibility 1.1s}.welcome.opened{opacity:0;visibility:hidden}.welcome-bg{position:absolute;inset:-3%;background:url('assets/welcome-garden-bg.webp') center/cover no-repeat;animation:bgBreath 9s ease-in-out infinite alternate}.welcome:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,248,238,.08),rgba(255,242,232,.03) 50%,rgba(79,25,35,.13));pointer-events:none}.tree{position:absolute;top:-3%;height:84%;width:auto;z-index:2;filter:drop-shadow(0 10px 22px rgba(74,34,27,.1));animation:sway 8s ease-in-out infinite;transform-origin:50% 0}.tree-l{left:-7%}.tree-r{right:-7%;animation-delay:-3s}.welcome-frame{position:absolute;z-index:3;width:min(88vw,600px);height:88vh;object-fit:contain;opacity:.55;filter:drop-shadow(0 10px 20px rgba(113,35,65,.08));animation:frameIn 1.4s cubic-bezier(.2,.8,.2,1) both}.welcome-copy{z-index:8;text-align:center;width:min(82%,470px);padding:35px 20px;animation:copyIn 1.35s .15s cubic-bezier(.2,.8,.2,1) both}.eyebrow{font-family:'Cormorant Garamond',serif;letter-spacing:.25em;font-size:12px;color:var(--mar)}.welcome h1,.hero h2,.closing h2{font-family:'Allura',cursive;font-weight:400;font-size:clamp(64px,12vw,108px);line-height:.78;margin:28px 0 20px;color:var(--mar);text-shadow:0 2px 0 rgba(255,255,255,.5)}.welcome h1 i{display:block;font-family:'Cormorant Garamond';font-size:.36em;margin:13px}.gold-rule{width:62px;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);margin:24px auto}.guest-label{font-family:'Cormorant Garamond';margin:0;font-size:14px}.guest-name{font-family:'Cormorant Garamond';font-size:20px;margin:4px 0 18px;font-weight:600}.welcome button,.form button{border:0;border-radius:999px;background:linear-gradient(135deg,var(--mar),var(--m));color:white;padding:14px 25px;font-family:'Plus Jakarta Sans';box-shadow:0 12px 30px rgba(143,23,63,.24);cursor:pointer;transition:.3s}.welcome button:hover{transform:translateY(-2px);box-shadow:0 16px 35px rgba(143,23,63,.3)}.bottom-garden{position:absolute;z-index:6;bottom:-4%;left:50%;transform:translateX(-50%);width:max(100%,900px);max-height:37vh;object-fit:contain;object-position:bottom;filter:drop-shadow(0 -8px 20px rgba(68,91,51,.08));animation:gardenIn 1.6s .2s both}.butterfly{position:absolute;z-index:9;width:70px;height:70px;object-fit:contain;left:67%;top:19%;filter:drop-shadow(0 8px 8px rgba(95,32,55,.18));animation:flyPath 9s ease-in-out infinite}.mist{position:absolute;z-index:4;width:55vw;height:20vh;border-radius:50%;background:rgba(255,245,231,.28);filter:blur(30px);animation:mist 9s ease-in-out infinite}.m1{left:-10%;top:45%}.m2{right:-10%;top:20%;animation-delay:-4s}.sparkles{position:absolute;z-index:7;inset:0;background-image:radial-gradient(circle,rgba(242,184,77,.7) 0 1px,transparent 1.5px);background-size:91px 91px;opacity:.35;animation:sparkle 5s linear infinite;pointer-events:none}main{position:relative}.section{min-height:100vh;position:relative;display:grid;place-items:center;text-align:center;padding:100px 7vw;overflow:hidden;background:url('assets/bg-watercolor.webp') center/cover}.paper{background:url('assets/bg-paper.webp') center/cover}.section h3{font:500 clamp(42px,6vw,70px)/1 'Cormorant Garamond';margin:12px 0 35px;color:var(--mar)}.hero h2,.closing h2{font-size:clamp(74px,11vw,125px)}.hero h2 span,.closing h2 span{display:block;font:400 .3em 'Cormorant Garamond';margin:10px}.date{font:500 21px 'Cormorant Garamond';letter-spacing:.2em}.intro,.narrow{max-width:620px}.corner{position:absolute;width:min(42vw,470px);z-index:1;animation:float 7s ease-in-out infinite}.tl{left:-9%;top:-8%}.tr{right:-9%;top:-8%}.bl{left:-9%;bottom:-8%}.br{right:-9%;bottom:-8%}.reveal{position:relative;z-index:3;opacity:0;transform:translateY(35px) scale(.98);transition:opacity 1s ease,transform 1s cubic-bezier(.2,.8,.2,1)}.reveal.visible{opacity:1;transform:none}.couple-grid,.event-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px;width:min(900px,100%)}.person h4{font:400 50px 'Allura';margin:18px 0 4px;color:var(--mar)}.photo{width:min(320px,75vw);aspect-ratio:4/5;margin:auto;border-radius:48% 48% 45% 45%;padding:9px;border:1px solid rgba(220,163,61,.7);box-shadow:0 18px 45px rgba(91,42,55,.1)}.photo-placeholder{width:100%;height:100%;display:grid;place-items:center;background:#ead8cf;border-radius:inherit;font-family:'Cormorant Garamond';color:#9b6c74}.leaf{position:absolute;width:430px;opacity:.28}.leaf-a{right:-150px;bottom:-100px;animation:sway 8s ease-in-out infinite}.timeline{display:grid;gap:0;text-align:left;margin-top:45px}.timeline div{border-left:1px solid var(--gold);padding:0 0 32px 24px}.timeline b{font:600 24px 'Cormorant Garamond';color:var(--mar)}.event-card{padding:45px 25px;border:1px solid rgba(193,0,107,.18);border-radius:120px 120px 24px 24px;background:rgba(255,252,246,.6);backdrop-filter:blur(5px);box-shadow:0 18px 40px rgba(91,42,55,.08)}.event-card small{letter-spacing:.2em}.event-card strong{display:block;font:500 40px 'Cormorant Garamond';margin:20px;color:var(--mar)}.gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;width:min(1000px,100%)}.gallery-grid div{aspect-ratio:4/5;background:#e7cbd0;display:grid;place-items:center;font-family:'Cormorant Garamond';border-radius:100px 100px 16px 16px}.form{display:grid;gap:12px;margin-top:30px}.form input,.form select{padding:15px;border:1px solid #dbc4c3;background:rgba(255,255,255,.65);border-radius:10px;font:inherit}.bank-card{margin:30px auto 0;padding:28px;border:1px solid rgba(220,163,61,.6);max-width:380px;border-radius:18px;background:rgba(255,255,255,.45)}.bank-card>*{display:block}.bank-card strong{font:500 25px 'Cormorant Garamond';margin:10px}.closing small{position:absolute;bottom:30px;left:50%;transform:translateX(-50%)}@keyframes bgBreath{to{transform:scale(1.035)}}@keyframes sway{0%,100%{transform:rotate(-1.4deg) translateY(0)}50%{transform:rotate(1.4deg) translateY(-4px)}}@keyframes frameIn{from{opacity:0;transform:scale(.92)}to{opacity:.55;transform:scale(1)}}@keyframes copyIn{from{opacity:0;transform:translateY(24px) scale(.97)}to{opacity:1;transform:none}}@keyframes gardenIn{from{opacity:0;transform:translate(-50%,45px) scale(1.04)}to{opacity:1;transform:translate(-50%,0) scale(1)}}@keyframes mist{50%{transform:translateX(60px) scale(1.15);opacity:.5}}@keyframes sparkle{50%{opacity:.15;transform:translateY(-4px)}}@keyframes flyPath{0%,100%{transform:translate(0,0) rotate(-8deg)}25%{transform:translate(18px,-20px) rotate(3deg)}55%{transform:translate(-18px,-35px) rotate(-5deg)}75%{transform:translate(-30px,-8px) rotate(4deg)}}@keyframes float{50%{transform:translateY(-8px) rotate(1deg)}}@media(max-width:680px){.tree{height:78%;opacity:.82}.tree-l{left:-38%}.tree-r{right:-38%}.welcome-frame{width:100vw;height:82vh;opacity:.42}.welcome-copy{padding-bottom:80px}.bottom-garden{bottom:-1%;width:900px;max-height:30vh}.butterfly{width:52px;height:52px;left:73%;top:16%}.section{padding:90px 24px}.couple-grid,.event-grid{grid-template-columns:1fr}.gallery-grid{grid-template-columns:repeat(2,1fr)}.corner{width:70vw}.tl,.bl{left:-30%}.tr,.br{right:-30%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* v3 — post-open invitation hero */
.hero-invite{min-height:100svh;padding:38px 18px 56px;background:linear-gradient(rgba(248,241,229,.72),rgba(248,241,229,.78)),url('assets/bg-paper.webp') center/cover;isolation:isolate}
.hero-invite:before{content:"";position:absolute;inset:0;background:url('assets/welcome-garden-bg.webp') center 38%/cover no-repeat;opacity:.16;z-index:-3;filter:saturate(.8)}
.hero-wash{position:absolute;inset:0;z-index:-2;background:radial-gradient(circle at 50% 42%,rgba(255,255,255,.7),transparent 38%),linear-gradient(180deg,transparent 60%,rgba(245,241,232,.92))}
.hero-content{width:min(100%,520px);display:flex;flex-direction:column;align-items:center;z-index:4}
.hero-monogram{font:500 clamp(48px,12vw,72px)/.8 'Cormorant Garamond',serif;color:var(--mar);letter-spacing:-.09em;margin-top:4px}.hero-monogram span{font-size:.48em;margin:0 .04em;color:#b66c45}
.hero-kicker{margin:15px 0 18px;color:#a85c3c;letter-spacing:.16em}
.hero-photo-stage{position:relative;width:min(82vw,365px);aspect-ratio:1100/1365;margin:50px auto 4px;filter:drop-shadow(0 18px 24px rgba(76,36,37,.13))}
.hero-photo-window{position:absolute;z-index:1;left:14.5%;right:14.5%;top:11.5%;bottom:11.5%;overflow:hidden;border-radius:48% 48% 4% 4%/25% 25% 3% 3%;background:#d9c8b7}
.hero-photo-placeholder{width:100%;height:100%;display:grid;place-content:center;gap:5px;background:linear-gradient(145deg,#d9c4b8,#efe2d2 55%,#cdb7a6);color:#8c5a62;font:500 23px 'Cormorant Garamond';text-align:center}.hero-photo-placeholder small{font:500 10px 'Plus Jakarta Sans';letter-spacing:.18em;text-transform:uppercase;opacity:.65}
.hero-frame-base{position:absolute;z-index:2;left:15%;right:15%;top:10%;bottom:10%;border:2px solid rgba(174,115,47,.72);border-radius:48% 48% 5% 5%/24% 24% 3% 3%;opacity:0;transform:scale(.96);transition:opacity .7s .15s,transform .9s .15s cubic-bezier(.2,.8,.2,1)}
.hero-photo-frame{position:absolute;z-index:3;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;clip-path:inset(100% 0 0 0);transform:scale(.985);transform-origin:50% 100%;opacity:0}
.hero-invite.hero-animate .hero-frame-base{opacity:1;transform:scale(1)}
.hero-invite.hero-animate .grow-frame{animation:frameGrow 2.35s .38s cubic-bezier(.16,.8,.2,1) forwards,frameBloom 1.2s 2.15s ease-out both}
.hero-invite.hero-animate .hero-photo-window{animation:photoReveal 1.15s .15s both}
.hero-names{font-size:clamp(58px,16vw,88px)!important;line-height:.7!important;margin:2px 0 8px!important;position:relative;z-index:5}.hero-names span{display:inline!important;font:400 .42em 'Cormorant Garamond'!important;margin:0 5px!important}
.hero-hashtag{font:500 14px 'Cormorant Garamond';letter-spacing:.08em;color:#a45e4b;margin:8px 0 0}
.hero-tree{position:absolute;z-index:-1;top:-3%;width:min(55vw,390px);opacity:.54;transform-origin:top center;filter:saturate(.7) sepia(.1)}.hero-tree-l{left:-18%;animation:sway 9s ease-in-out infinite}.hero-tree-r{right:-18%;animation:sway 10s -3s ease-in-out infinite}
.hero-floral{position:absolute;z-index:2;bottom:-7%;width:min(48vw,310px);opacity:.9;filter:drop-shadow(0 -8px 18px rgba(84,45,42,.08))}.hero-floral-l{left:-13%;transform-origin:bottom left}.hero-floral-r{right:-13%;transform-origin:bottom right}.hero-invite.hero-animate .hero-floral-l{animation:floralRise 1.5s .8s both}.hero-invite.hero-animate .hero-floral-r{animation:floralRiseR 1.5s 1s both}
.hero-butterfly{position:absolute;z-index:5;width:44px;right:-2%;top:23%;filter:drop-shadow(0 6px 7px rgba(85,36,54,.18));opacity:0}.hero-invite.hero-animate .hero-butterfly{animation:butterflyEnter 1.1s 2.35s both,floatButterfly 5s 3.4s ease-in-out infinite}
@keyframes frameGrow{0%{clip-path:inset(100% 0 0 0);opacity:0;transform:scale(.96)}8%{opacity:1}45%{clip-path:inset(48% 0 0 0)}78%{clip-path:inset(12% 0 0 0)}100%{clip-path:inset(0 0 0 0);opacity:1;transform:scale(1)}}
@keyframes frameBloom{0%{filter:saturate(.82) brightness(.96)}55%{filter:saturate(1.12) brightness(1.05);transform:scale(1.012)}100%{filter:none;transform:scale(1)}}
@keyframes photoReveal{from{opacity:0;transform:scale(1.045);filter:blur(5px)}to{opacity:1;transform:scale(1);filter:none}}
@keyframes floralRise{from{opacity:0;transform:translate(-28px,65px) scale(.82) rotate(-4deg)}to{opacity:.9;transform:translate(0,0) scale(1) rotate(0)}}
@keyframes floralRiseR{from{opacity:0;transform:translate(28px,65px) scale(.82) rotate(4deg)}to{opacity:.9;transform:translate(0,0) scale(1) rotate(0)}}
@keyframes butterflyEnter{from{opacity:0;transform:translate(28px,18px) scale(.7) rotate(12deg)}to{opacity:1;transform:none}}
@keyframes floatButterfly{0%,100%{transform:translate(0,0) rotate(-5deg)}50%{transform:translate(-12px,-11px) rotate(4deg)}}
@media(max-width:680px){.hero-invite{padding-top:28px}.hero-photo-stage{width:min(86vw,350px)}.hero-tree{width:78vw;top:-2%;opacity:.42}.hero-tree-l{left:-47%}.hero-tree-r{right:-47%}.hero-floral{width:55vw;bottom:-3%}.hero-floral-l{left:-24%}.hero-floral-r{right:-24%}}

/* v4 — Quran quote + layered ceremonial garden */
.quran-section{min-height:100svh;padding:64px 18px 0;align-content:space-between;background:linear-gradient(rgba(248,242,230,.32),rgba(248,242,230,.08)),url('assets/bg-paper.webp') center/cover;overflow:hidden}
.quran-copy{width:min(86vw,540px);margin:0 auto 26px;z-index:6;color:#934735}
.quran-text{font:500 clamp(20px,4.5vw,29px)/1.62 'Cormorant Garamond',serif;margin:0;text-wrap:balance}
.quran-ref{font:600 clamp(17px,3.8vw,23px)/1.3 'Cormorant Garamond',serif;margin:25px 0 0}
.quran-stage{position:relative;width:min(1180px,118vw);height:clamp(235px,38vw,460px);margin:0 auto -1px;align-self:end;z-index:4;pointer-events:none}
.quran-base{position:absolute;z-index:2;left:50%;bottom:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;opacity:0;transform:translate(-50%,38px) scale(.97);filter:drop-shadow(0 -8px 18px rgba(88,48,37,.1))}
.quran-flower-reveal{position:absolute;z-index:3;inset:0;overflow:hidden;clip-path:inset(100% 0 0 0)}
.quran-flowers{position:absolute;left:50%;bottom:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;transform:translateX(-50%);filter:drop-shadow(0 -7px 15px rgba(65,72,43,.12))}
.quran-section.quran-animate .quran-base{animation:quranBaseIn 1.15s cubic-bezier(.2,.8,.2,1) forwards}
.quran-section.quran-animate .quran-flower-reveal{animation:quranVineReveal 2.7s .75s cubic-bezier(.16,.8,.2,1) forwards}
.quran-section.quran-animate .quran-flowers{animation:quranBloom 3.2s .7s cubic-bezier(.16,.8,.2,1) both}
@keyframes quranBaseIn{from{opacity:0;transform:translate(-50%,38px) scale(.97)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes quranVineReveal{0%{clip-path:inset(100% 0 0 0)}28%{clip-path:inset(68% 0 0 0)}60%{clip-path:inset(32% 0 0 0)}100%{clip-path:inset(0 0 0 0)}}
@keyframes quranBloom{0%{transform:translateX(-50%) translateY(28px) scale(.9);filter:saturate(.72) brightness(.98)}55%{transform:translateX(-50%) translateY(4px) scale(.985);filter:saturate(.92)}82%{transform:translateX(-50%) translateY(0) scale(1.018);filter:saturate(1.08)}100%{transform:translateX(-50%) scale(1);filter:drop-shadow(0 -7px 15px rgba(65,72,43,.12))}}
@media(max-width:680px){.quran-section{padding-top:54px}.quran-copy{width:min(88vw,410px);margin-bottom:16px}.quran-text{font-size:20px;line-height:1.55}.quran-stage{width:135vw;height:265px;margin-left:-17.5vw}.quran-ref{margin-top:18px}}

/* v4.1 — Quran mobile alignment, tighter composition, slower ceremonial entrance */
.quran-section{
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:0;
  padding:56px 18px 0;
}
.quran-copy{flex:0 0 auto;margin:0 auto 0}
.quran-stage{
  flex:0 0 auto;
  width:min(1180px,112vw);
  height:clamp(235px,38vw,460px);
  margin:-2px auto -1px;
  left:auto;
  transform:none;
}
.quran-section.quran-animate .quran-base{animation:quranBaseInSlow 2.05s cubic-bezier(.16,.72,.2,1) forwards}
.quran-section.quran-animate .quran-flower-reveal{animation:quranVineRevealSlow 3.4s 1.65s cubic-bezier(.16,.8,.2,1) forwards}
.quran-section.quran-animate .quran-flowers{animation:quranBloomSlow 3.8s 1.55s cubic-bezier(.16,.8,.2,1) both}
@keyframes quranBaseInSlow{0%{opacity:0;transform:translate(-50%,52px) scale(.955)}35%{opacity:.72}100%{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes quranVineRevealSlow{0%{clip-path:inset(100% 0 0 0)}22%{clip-path:inset(82% 0 0 0)}48%{clip-path:inset(55% 0 0 0)}72%{clip-path:inset(25% 0 0 0)}100%{clip-path:inset(0 0 0 0)}}
@keyframes quranBloomSlow{0%{transform:translateX(-50%) translateY(34px) scale(.88);filter:saturate(.68) brightness(.97)}45%{transform:translateX(-50%) translateY(12px) scale(.95);filter:saturate(.82)}78%{transform:translateX(-50%) translateY(1px) scale(1.01);filter:saturate(1.04)}100%{transform:translateX(-50%) translateY(0) scale(1);filter:drop-shadow(0 -7px 15px rgba(65,72,43,.12))}}
@media(max-width:680px){
  .quran-section{min-height:100svh;padding:42px 0 0;justify-content:flex-start}
  .quran-copy{width:min(88vw,410px);margin:0 auto}
  .quran-text{font-size:19px;line-height:1.48}
  .quran-ref{margin-top:14px}
  .quran-stage{
    width:112vw;
    height:auto;
    aspect-ratio:1944/768;
    margin:-1px auto 0;
    left:50%;
    transform:translateX(-50%);
  }
  .quran-base,.quran-flowers{width:100%;height:100%;object-fit:contain;object-position:center bottom}
}
@media(max-width:390px){
  .quran-section{padding-top:34px}
  .quran-copy{width:90vw}
  .quran-text{font-size:18px;line-height:1.44}
  .quran-stage{width:116vw;margin-top:-2px}
}


/* v4.2 — Quran garden rebuilt as independent botanical layers */
.quran-section{
  min-height:100svh;
  padding:46px 18px 0;
  justify-content:flex-start;
  overflow:hidden;
}
.quran-copy{
  position:relative;
  z-index:10;
  width:min(86vw,540px);
  margin:0 auto;
}
.quran-stage{
  --stage-width:min(1120px,106vw);
  position:relative;
  flex:0 0 auto;
  width:var(--stage-width);
  height:clamp(280px,42vw,470px);
  margin:-10px auto 0;
  align-self:center;
  left:auto;
  transform:none;
  overflow:visible;
  isolation:isolate;
}
.quran-base,
.quran-foliage,
.quran-vine,
.quran-bloom{
  position:absolute;
  pointer-events:none;
  user-select:none;
}
.quran-base{
  z-index:2;
  left:50%;
  bottom:0;
  width:100%;
  height:auto;
  opacity:0;
  transform:translate(-50%,44px) scale(.965);
  transform-origin:50% 100%;
  filter:drop-shadow(0 -7px 16px rgba(88,48,37,.09));
}
.quran-foliage{
  z-index:3;
  left:50%;
  bottom:-1.5%;
  width:101%;
  height:auto;
  opacity:0;
  transform:translate(-50%,26px) scale(.96);
  transform-origin:50% 100%;
  filter:drop-shadow(0 -5px 12px rgba(65,72,43,.10));
}
.quran-vine-mask{
  position:absolute;
  z-index:4;
  bottom:5%;
  width:30%;
  height:78%;
  overflow:hidden;
  clip-path:inset(100% 0 0 0);
  will-change:clip-path;
}
.quran-vine-mask-left{left:2.5%}
.quran-vine-mask-right{right:2.5%}
.quran-vine{
  inset:auto 0 0;
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:center bottom;
  opacity:0;
  transform-origin:50% 100%;
}
.quran-vine-left{transform:translateY(18px) rotate(-1.2deg) scale(.98)}
.quran-vine-right{transform:translateY(18px) rotate(1.2deg) scale(.98)}
.quran-bloom{
  z-index:5;
  bottom:1.5%;
  width:34%;
  height:auto;
  opacity:0;
  transform-origin:50% 100%;
  filter:drop-shadow(0 -6px 14px rgba(91,42,55,.10));
}
.quran-bloom-left{left:4%;transform:translate(-12px,26px) scale(.84) rotate(-3deg)}
.quran-bloom-right{right:4%;transform:translate(12px,26px) scale(.84) rotate(3deg)}

.quran-section.quran-animate .quran-base{
  animation:quranBaseV42 2.05s cubic-bezier(.16,.72,.2,1) forwards;
}
.quran-section.quran-animate .quran-foliage{
  animation:quranFoliageV42 1.5s 1.48s cubic-bezier(.18,.75,.2,1) forwards,
            quranFoliageSwayV42 7.5s 4.9s ease-in-out infinite;
}
.quran-section.quran-animate .quran-vine-mask-left{
  animation:quranVineMaskV42 2.25s 2.28s cubic-bezier(.16,.78,.2,1) forwards;
}
.quran-section.quran-animate .quran-vine-mask-right{
  animation:quranVineMaskV42 2.25s 2.48s cubic-bezier(.16,.78,.2,1) forwards;
}
.quran-section.quran-animate .quran-vine-left{
  animation:quranVineLeftV42 2.25s 2.28s cubic-bezier(.16,.78,.2,1) forwards,
            quranVineSwayLeftV42 8.4s 5.2s ease-in-out infinite;
}
.quran-section.quran-animate .quran-vine-right{
  animation:quranVineRightV42 2.25s 2.48s cubic-bezier(.16,.78,.2,1) forwards,
            quranVineSwayRightV42 8.9s 5.35s ease-in-out infinite;
}
.quran-section.quran-animate .quran-bloom-left{
  animation:quranBloomLeftV42 1.35s 3.72s cubic-bezier(.18,.78,.18,1) forwards,
            quranBloomSwayLeftV42 8s 5.3s ease-in-out infinite;
}
.quran-section.quran-animate .quran-bloom-right{
  animation:quranBloomRightV42 1.35s 3.96s cubic-bezier(.18,.78,.18,1) forwards,
            quranBloomSwayRightV42 8.6s 5.45s ease-in-out infinite;
}

@keyframes quranBaseV42{
  0%{opacity:0;transform:translate(-50%,44px) scale(.965)}
  32%{opacity:.68}
  100%{opacity:1;transform:translate(-50%,0) scale(1)}
}
@keyframes quranFoliageV42{
  0%{opacity:0;transform:translate(-50%,26px) scale(.96)}
  100%{opacity:1;transform:translate(-50%,0) scale(1)}
}
@keyframes quranVineMaskV42{
  0%{clip-path:inset(100% 0 0 0)}
  30%{clip-path:inset(72% 0 0 0)}
  65%{clip-path:inset(31% 0 0 0)}
  100%{clip-path:inset(0 0 0 0)}
}
@keyframes quranVineLeftV42{
  0%{opacity:0;transform:translateY(18px) rotate(-1.2deg) scale(.98)}
  18%{opacity:.72}
  100%{opacity:1;transform:translateY(0) rotate(0) scale(1)}
}
@keyframes quranVineRightV42{
  0%{opacity:0;transform:translateY(18px) rotate(1.2deg) scale(.98)}
  18%{opacity:.72}
  100%{opacity:1;transform:translateY(0) rotate(0) scale(1)}
}
@keyframes quranBloomLeftV42{
  0%{opacity:0;transform:translate(-12px,26px) scale(.84) rotate(-3deg)}
  65%{opacity:1;transform:translate(-2px,2px) scale(1.018) rotate(.4deg)}
  100%{opacity:1;transform:translate(0,0) scale(1) rotate(0)}
}
@keyframes quranBloomRightV42{
  0%{opacity:0;transform:translate(12px,26px) scale(.84) rotate(3deg)}
  65%{opacity:1;transform:translate(2px,2px) scale(1.018) rotate(-.4deg)}
  100%{opacity:1;transform:translate(0,0) scale(1) rotate(0)}
}
@keyframes quranFoliageSwayV42{
  0%,100%{transform:translate(-50%,0) rotate(0)}
  50%{transform:translate(-50%,-1px) rotate(.18deg)}
}
@keyframes quranVineSwayLeftV42{
  0%,100%{transform:translateY(0) rotate(0)}
  50%{transform:translateY(-2px) rotate(1deg)}
}
@keyframes quranVineSwayRightV42{
  0%,100%{transform:translateY(0) rotate(0)}
  50%{transform:translateY(-2px) rotate(-1deg)}
}
@keyframes quranBloomSwayLeftV42{
  0%,100%{transform:translate(0,0) rotate(0)}
  50%{transform:translate(1px,-2px) rotate(.7deg)}
}
@keyframes quranBloomSwayRightV42{
  0%,100%{transform:translate(0,0) rotate(0)}
  50%{transform:translate(-1px,-2px) rotate(-.7deg)}
}

@media(max-width:680px){
  .quran-section{
    min-height:100svh;
    padding:26px 0 0;
    justify-content:center;
  }
  .quran-copy{
    width:min(88vw,410px);
    margin:0 auto;
  }
  .quran-text{font-size:19px;line-height:1.46}
  .quran-ref{margin-top:13px}
  .quran-stage{
    width:102vw;
    height:clamp(255px,68vw,315px);
    margin:-4px auto 0;
    align-self:center;
    left:auto;
    transform:none;
  }
  .quran-base{width:100%;height:auto;bottom:0;object-fit:unset}
  .quran-foliage{width:102%;bottom:-1%}
  .quran-vine-mask{width:31%;height:73%;bottom:5%}
  .quran-vine-mask-left{left:2%}
  .quran-vine-mask-right{right:2%}
  .quran-bloom{width:34%;bottom:1%}
  .quran-bloom-left{left:3%}
  .quran-bloom-right{right:3%}
}
@media(max-width:390px){
  .quran-section{padding-top:22px}
  .quran-copy{width:90vw}
  .quran-text{font-size:18px;line-height:1.43}
  .quran-stage{width:104vw;height:clamp(245px,70vw,285px);margin-top:-5px}
  .quran-vine-mask{height:71%}
  .quran-bloom{width:35%}
}

/* v4.3 — Jardin Fuchsia continuity after Quran: richer botanical staging with existing assets */
.mini-gold-rule{width:72px;height:1px;margin:18px auto 28px;background:linear-gradient(90deg,transparent,var(--gold),transparent)}
.section-heading{width:min(92vw,760px)}
.lush-section{isolation:isolate;background-position:center;background-size:cover}
.lush-section:before{content:"";position:absolute;inset:0;z-index:-3;pointer-events:none;background:radial-gradient(circle at 50% 36%,rgba(255,255,255,.6),transparent 34%),radial-gradient(circle at 15% 80%,rgba(227,138,188,.09),transparent 28%),radial-gradient(circle at 86% 16%,rgba(233,122,60,.07),transparent 26%)}
.lush-corner,.lush-leaf,.story-frame-ghost,.event-garden,.gift-garden,.closing-garden,.section-butterfly,.gallery-butterfly,.closing-butterfly{position:absolute;pointer-events:none;user-select:none;z-index:1}
.lush-corner{width:min(35vw,360px);filter:drop-shadow(0 10px 18px rgba(91,42,55,.08));opacity:0}
.lush-tl{left:-7%;top:-6%;transform-origin:0 0}
.lush-tr{right:-7%;top:-6%;transform-origin:100% 0}
.lush-bl{left:-7%;bottom:-6%;transform-origin:0 100%}
.lush-br{right:-7%;bottom:-6%;transform-origin:100% 100%}
.lush-leaf{width:min(31vw,330px);opacity:0;filter:drop-shadow(0 8px 14px rgba(61,77,45,.08))}
.decor-grow,.decor-rise,.decor-fade,.decor-float{opacity:0}
.lush-section.in-view .decor-grow{animation:decorGrow 1.45s cubic-bezier(.16,.78,.2,1) forwards}
.lush-section.in-view .decor-rise{animation:decorRise 1.65s .28s cubic-bezier(.16,.78,.2,1) forwards}
.lush-section.in-view .decor-fade{animation:decorFade 1.8s .15s ease forwards}
.lush-section.in-view .decor-float{animation:decorFloatIn 1.25s .75s ease forwards,decorFloat 7s 2s ease-in-out infinite}
.lush-section.in-view .decor-delay-1{animation-delay:.22s}
.lush-section.in-view .decor-delay-2{animation-delay:.42s}
@keyframes decorGrow{from{opacity:0;transform:translateY(26px) scale(.88) rotate(-2deg)}to{opacity:.92;transform:translateY(0) scale(1) rotate(0)}}
@keyframes decorRise{from{opacity:0;transform:translateY(42px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes decorFade{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
@keyframes decorFloatIn{from{opacity:0;transform:translate(14px,18px) scale(.72) rotate(8deg)}to{opacity:1;transform:translate(0,0) scale(1) rotate(0)}}
@keyframes decorFloat{0%,100%{transform:translate(0,0) rotate(-4deg)}50%{transform:translate(-9px,-11px) rotate(3deg)}}

/* Quran: keep the approved mood; only let the architecture read a little stronger than the flowers. */
.quran-base{width:108%}
@media(max-width:680px){.quran-base{width:112%;left:50%}}

/* Couple */
.couple-lush{padding-top:86px;padding-bottom:100px;background:linear-gradient(rgba(248,242,230,.36),rgba(248,242,230,.16)),url('assets/bg-paper.webp') center/cover}
.couple-lush .section-heading{position:relative;z-index:4}
.couple-leaf{right:-6%;top:38%;transform:rotate(14deg)}
.couple-grid-lush{position:relative;z-index:4;align-items:start;gap:56px;margin-top:6px}
.person{position:relative;z-index:3}
.portrait-stage{position:relative;width:min(300px,70vw);aspect-ratio:1122/1402;margin:0 auto;filter:drop-shadow(0 18px 30px rgba(87,42,48,.11))}
.portrait-photo{position:absolute;inset:12% 14% 11%;overflow:hidden;border-radius:47% 47% 7% 7%/28% 28% 5% 5%;background:#ead8cf}
.portrait-photo .photo-placeholder{border-radius:inherit}
.portrait-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:3}
.person h4{font-size:58px;margin:4px 0 2px}.person p{font-family:'Cormorant Garamond',serif;font-size:17px;margin:0 auto;max-width:310px}
.section-butterfly{width:58px;left:50%;top:34%;margin-left:-29px;z-index:5;filter:drop-shadow(0 7px 8px rgba(91,42,55,.16))}

/* Story */
.story-lush{padding-top:92px;padding-bottom:100px;background:linear-gradient(rgba(245,241,232,.56),rgba(245,241,232,.62)),url('assets/bg-watercolor.webp') center/cover}
.story-frame-ghost{width:min(480px,72vw);height:78%;object-fit:contain;left:50%;top:50%;transform:translate(-50%,-50%);opacity:0;z-index:0;filter:saturate(.78)}
.story-lush.in-view .story-frame-ghost{animation:storyFrameGhost 1.9s .12s ease forwards}
@keyframes storyFrameGhost{from{opacity:0;transform:translate(-50%,-50%) scale(.95)}to{opacity:.16;transform:translate(-50%,-50%) scale(1)}}
.story-leaf{right:-5%;bottom:8%;transform:rotate(18deg)}
.story-content{position:relative;z-index:4;width:min(88vw,620px)}
.timeline-lush{width:min(520px,100%);margin:38px auto 0;text-align:left;position:relative}
.timeline-lush:before{content:"";position:absolute;left:14px;top:9px;bottom:24px;width:1px;background:linear-gradient(var(--gold),rgba(220,163,61,.18))}
.timeline-lush .timeline-item{position:relative;border:0;padding:0 0 32px 48px}
.timeline-dot{position:absolute;left:7px;top:7px;width:15px;height:15px;border:1px solid var(--gold);border-radius:50%;background:#f7eadf;box-shadow:0 0 0 5px rgba(220,163,61,.08)}
.timeline-lush b{display:block;font-size:27px;margin-bottom:2px}.timeline-lush p{margin:0;font-family:'Cormorant Garamond',serif;font-size:20px;color:#7f4a54}

/* Event */
.event-lush{padding-bottom:150px;background:linear-gradient(rgba(248,242,230,.26),rgba(248,242,230,.08)),url('assets/bg-paper.webp') center/cover}
.event-grid-lush{position:relative;z-index:4;gap:28px}
.event-card{position:relative;overflow:hidden;padding:52px 26px 58px;border-color:rgba(193,0,107,.22);background:rgba(255,251,245,.72);box-shadow:0 18px 42px rgba(91,42,55,.09)}
.event-card:before{content:"";position:absolute;inset:10px;border:1px solid rgba(220,163,61,.28);border-radius:108px 108px 18px 18px;pointer-events:none}
.event-card:after{content:"✦";position:absolute;left:50%;bottom:21px;transform:translateX(-50%);font-family:'Cormorant Garamond',serif;color:var(--gold);font-size:16px}
.event-card p,.event-card span{font-family:'Cormorant Garamond',serif}.event-card p{font-size:18px;margin-bottom:8px}.event-card span{font-size:16px;color:#87515b}
.event-garden{left:50%;bottom:-4%;transform:translateX(-50%);width:min(900px,112vw);z-index:2;filter:drop-shadow(0 -8px 17px rgba(70,65,43,.08))}
.event-lush.in-view .event-garden{animation:eventGardenIn 1.7s .45s cubic-bezier(.16,.78,.2,1) forwards}
@keyframes eventGardenIn{from{opacity:0;transform:translate(-50%,45px) scale(.94)}to{opacity:1;transform:translate(-50%,0) scale(1)}}

/* Gallery */
.gallery-lush{padding-top:92px;padding-bottom:110px;background:linear-gradient(rgba(245,241,232,.3),rgba(245,241,232,.42)),url('assets/bg-watercolor.webp') center/cover}
.gallery-grid-lush{position:relative;z-index:4;gap:18px;align-items:start}
.gallery-item{position:relative;overflow:hidden;border:1px solid rgba(220,163,61,.42);box-shadow:0 16px 32px rgba(91,42,55,.08);background:linear-gradient(145deg,#e4c7cf,#f0d8d8);border-radius:44% 44% 18px 18px/18% 18% 18px 18px!important}
.gallery-item:before{content:"";position:absolute;inset:7px;border:1px solid rgba(255,255,255,.5);border-radius:inherit}
.gallery-item span{position:relative;z-index:2;font-family:'Cormorant Garamond',serif;color:#85525e}
.gallery-item:nth-child(even){margin-top:34px}
.gallery-leaf{left:-7%;top:46%;transform:rotate(-18deg)}
.gallery-butterfly{width:52px;right:9%;top:25%;z-index:5;filter:drop-shadow(0 7px 8px rgba(91,42,55,.15))}

/* RSVP */
.rsvp-lush{padding-top:70px;padding-bottom:70px;background:linear-gradient(rgba(248,242,230,.35),rgba(248,242,230,.12)),url('assets/bg-paper.webp') center/cover}
.rsvp-shell{position:relative;z-index:4;width:min(92vw,560px);min-height:690px;display:grid;place-items:center;padding:108px 76px 112px}
.ornate-shell-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 16px 30px rgba(93,42,50,.09));z-index:1}
.rsvp-content{position:relative;z-index:2;width:100%;max-width:390px}
.rsvp-content h3{margin-bottom:20px}.rsvp-content>p{font-family:'Cormorant Garamond',serif;font-size:18px;line-height:1.55;margin:0}
.rsvp-lush .form{margin-top:24px}.rsvp-lush .form input,.rsvp-lush .form select{border-color:rgba(193,0,107,.18);background:rgba(255,252,247,.76);box-shadow:0 6px 16px rgba(91,42,55,.04)}

/* Gift */
.gift-lush{padding-bottom:150px;background:linear-gradient(rgba(245,241,232,.38),rgba(245,241,232,.45)),url('assets/bg-watercolor.webp') center/cover}
.gift-content{position:relative;z-index:4;width:min(88vw,620px)}
.gift-content>p{font-family:'Cormorant Garamond',serif;font-size:18px;line-height:1.6}
.gift-leaf{right:-7%;top:43%;transform:rotate(20deg)}
.bank-card-lush{position:relative;overflow:hidden;padding:32px 28px;border-color:rgba(220,163,61,.62);background:rgba(255,252,247,.68);box-shadow:0 16px 34px rgba(91,42,55,.08)}
.bank-card-lush:before{content:"";position:absolute;inset:8px;border:1px solid rgba(193,0,107,.13);border-radius:12px;pointer-events:none}
.bank-card-lush small{letter-spacing:.18em;color:var(--mar)}
.gift-garden{left:50%;bottom:-4%;transform:translateX(-50%);width:min(900px,112vw);z-index:2}
.gift-lush.in-view .gift-garden{animation:eventGardenIn 1.7s .45s cubic-bezier(.16,.78,.2,1) forwards}

/* Closing */
.closing-lush{padding-bottom:180px;background:linear-gradient(rgba(248,242,230,.28),rgba(248,242,230,.08)),url('assets/bg-paper.webp') center/cover}
.closing-copy{position:relative;z-index:5}.closing-copy h2{margin-top:28px}.closing-copy>p{font-family:'Cormorant Garamond',serif;font-size:20px;margin-top:0}
.closing-garden{left:50%;bottom:-2%;transform:translateX(-50%);width:max(860px,100vw);z-index:2;filter:drop-shadow(0 -8px 18px rgba(62,76,45,.08))}
.closing-lush.in-view .closing-garden{animation:closingGardenIn 1.8s .28s cubic-bezier(.16,.78,.2,1) forwards}
@keyframes closingGardenIn{from{opacity:0;transform:translate(-50%,52px) scale(.96)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
.closing-butterfly{width:60px;right:17%;top:27%;z-index:6;filter:drop-shadow(0 7px 8px rgba(91,42,55,.16))}
.closing-credit{position:absolute;z-index:6;bottom:22px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:10px;letter-spacing:.1em;color:#794955}

@media(max-width:680px){
  .lush-corner{width:58vw;max-width:260px}
  .lush-tl{left:-22%;top:-4%}.lush-tr{right:-22%;top:-4%}.lush-bl{left:-22%;bottom:-3%}.lush-br{right:-22%;bottom:-3%}
  .lush-leaf{width:56vw;max-width:240px}
  .couple-lush{padding:72px 22px 94px}.couple-grid-lush{gap:42px}.portrait-stage{width:min(74vw,300px)}.person h4{font-size:54px}
  .section-butterfly{left:auto;right:8%;top:47%;width:48px;margin:0}
  .couple-leaf{right:-21%;top:45%}
  .story-lush{padding:76px 24px 90px}.story-frame-ghost{width:94vw;height:82%;opacity:0}.story-leaf{right:-20%;bottom:8%}
  .timeline-lush{width:90%}.timeline-lush p{font-size:18px}
  .event-lush{padding:76px 22px 132px}.event-grid-lush{gap:22px}.event-card{padding:46px 22px 54px}.event-garden{width:126vw;bottom:-1%}
  .gallery-lush{padding:76px 22px 100px}.gallery-grid-lush{grid-template-columns:repeat(2,1fr);gap:12px}.gallery-item:nth-child(even){margin-top:22px}.gallery-leaf{left:-23%;top:48%}.gallery-butterfly{right:5%;top:22%;width:46px}
  .rsvp-lush{padding:54px 12px}.rsvp-shell{width:min(96vw,500px);min-height:650px;padding:102px 54px 108px}.rsvp-content h3{font-size:42px}
  .gift-lush{padding:76px 22px 132px}.gift-leaf{right:-22%;top:47%}.gift-garden{width:126vw;bottom:-1%}
  .closing-lush{padding:92px 22px 165px}.closing-garden{width:920px;bottom:-1%}.closing-butterfly{right:9%;top:23%;width:48px}
}
@media(max-width:390px){
  .rsvp-shell{min-height:610px;padding:90px 42px 96px}.rsvp-content h3{font-size:39px}.rsvp-content>p{font-size:16px}.rsvp-lush .form{margin-top:18px}
  .portrait-stage{width:78vw}.gallery-grid-lush{gap:10px}.gallery-item:nth-child(even){margin-top:18px}
}

/* =========================================================
   v4.4 — Bride & Groom botanical composition
   Independent layers + per-element viewport motion.
   ========================================================= */

/* Welcome CTA: intentionally clean, no arrow/icon. */
#openInvite{min-width:156px;letter-spacing:.02em}

/* v4.4 per-element motion. Each decorative/content element starts only
   after that element itself intersects the viewport. */
[data-inview]{--motion-delay:0s}
.motion-grow,.motion-vine,.motion-bloom,.motion-photo,.motion-fade-up,.motion-fade{opacity:0}
.motion-grow.is-inview{animation:elementGrow 1.45s var(--motion-delay) cubic-bezier(.16,.78,.2,1) forwards}
.motion-vine.is-inview{animation:elementVine 1.75s var(--motion-delay) cubic-bezier(.16,.78,.2,1) forwards}
.motion-bloom.is-inview{animation:elementBloom 1.28s var(--motion-delay) cubic-bezier(.2,.82,.2,1) forwards}
.motion-photo.is-inview{animation:elementPhoto 1.45s var(--motion-delay) cubic-bezier(.16,.78,.2,1) forwards}
.motion-fade-up.is-inview{animation:elementFadeUp 1.05s var(--motion-delay) cubic-bezier(.2,.8,.2,1) forwards}
.motion-fade.is-inview{animation:elementFade 1.15s var(--motion-delay) ease forwards}
@keyframes elementGrow{from{opacity:0;transform:translateY(26px) scale(.88) rotate(-1.5deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}
@keyframes elementVine{from{opacity:0;clip-path:inset(0 0 100% 0);transform:translateY(-12px) scale(.97)}to{opacity:1;clip-path:inset(0 0 0 0);transform:none}}
@keyframes elementBloom{from{opacity:0;transform:translateY(18px) scale(.9)}to{opacity:1;transform:none}}
@keyframes elementPhoto{from{opacity:0;transform:translateY(24px) scale(.965)}to{opacity:1;transform:none}}
@keyframes elementFadeUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes elementFade{from{opacity:0}to{opacity:1}}

/* Existing post-Quran ornaments now obey the same per-element viewport rule,
   rather than a section-level trigger. */
.decor-grow.in-view{animation:decorGrow 1.45s cubic-bezier(.16,.78,.2,1) forwards}
.decor-rise.in-view{animation:decorRise 1.65s .18s cubic-bezier(.16,.78,.2,1) forwards}
.decor-fade.in-view{animation:decorFade 1.8s .08s ease forwards}
.decor-float.in-view{animation:decorFloatIn 1.25s .35s ease forwards,decorFloat 7s 1.65s ease-in-out infinite}
.decor-delay-1.in-view{animation-delay:.22s}
.decor-delay-2.in-view{animation-delay:.42s}

/* Couple section deliberately reads as two connected full compositions. */
.couple-lush{
  display:block;
  min-height:0;
  padding:0;
  overflow:hidden;
  background:linear-gradient(rgba(248,242,230,.22),rgba(248,242,230,.1)),url('assets/bg-paper.webp') center/cover;
}
.couple-profile{
  position:relative;
  isolation:isolate;
  min-height:100svh;
  padding:72px 22px 82px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  overflow:hidden;
}
.couple-profile:before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-3;
  background:
    radial-gradient(circle at 50% 34%,rgba(255,255,255,.5),transparent 35%),
    radial-gradient(circle at 13% 72%,rgba(227,138,188,.08),transparent 25%),
    radial-gradient(circle at 87% 20%,rgba(233,122,60,.055),transparent 26%);
  pointer-events:none;
}
.bride-profile{border-top:1px solid rgba(220,163,61,.12)}
.couple-intro{
  position:relative;
  z-index:8;
  width:min(88vw,500px);
  margin:0 auto 4px;
  text-align:center;
}
.couple-script-label{
  margin:0 0 14px;
  color:var(--mar);
  font:400 clamp(42px,11vw,62px)/.86 'Allura',cursive;
}
.couple-intro>p:last-child{
  margin:0;
  color:#9a583f;
  font:500 13px/1.65 'Cormorant Garamond',serif;
}
.couple-continuation{
  position:relative;
  z-index:7;
  margin:0 0 -4px;
  color:rgba(143,23,63,.72);
  font:400 48px/1 'Allura',cursive;
}
.couple-art-stage{
  position:relative;
  z-index:4;
  width:min(91vw,430px);
  aspect-ratio:1122/1402;
  margin:8px auto 0;
}
.couple-art-layer,.couple-photo-shell{
  position:absolute;
  left:50%;
  top:50%;
  pointer-events:none;
}
.couple-photo-shell{
  z-index:4;
  width:72%;
  aspect-ratio:1122/1402;
  transform:translate(-50%,-50%);
  filter:drop-shadow(0 16px 28px rgba(76,42,38,.14));
}
.couple-photo-window{
  position:absolute;
  inset:12.5% 14.5% 11.5%;
  z-index:1;
  overflow:hidden;
  display:grid;
  place-items:center;
  border-radius:47% 47% 5% 5%/22% 22% 4% 4%;
  background:
    radial-gradient(circle at 52% 35%,rgba(255,255,255,.5),transparent 24%),
    linear-gradient(150deg,#d9c3b7,#b88872);
  color:rgba(92,40,55,.72);
  font:500 14px 'Cormorant Garamond',serif;
  letter-spacing:.06em;
}
.couple-photo-frame{position:absolute;inset:0;z-index:2;width:100%;height:100%;object-fit:contain}
.couple-foliage{z-index:2;width:98%;height:98%;object-fit:contain;transform:translate(-50%,-50%)}
.couple-vine{z-index:3;width:71%;height:94%;object-fit:contain;transform:translate(-50%,-46%)}
.couple-bloom{z-index:5;width:99%;height:99%;object-fit:contain;transform:translate(-50%,-50%)}

/* Let each family keep its own naturally asymmetric composition. */
.groom-foliage{width:94%;transform:translate(-50%,-50%) scale(1.03)}
.groom-vine{width:63%;transform:translate(-32%,-40%) rotate(2deg);transform-origin:50% 0}
.groom-bloom{width:103%;transform:translate(-50%,-50%) scale(1.01)}
.bride-foliage{width:101%;transform:translate(-50%,-49%) scale(1.02)}
.bride-vine{width:65%;transform:translate(-65%,-39%) rotate(-2deg);transform-origin:50% 0}
.bride-bloom{width:103%;transform:translate(-50%,-50%) scale(1.01)}

/* Motion final states must preserve the authored positioning above. */
.groom-foliage.motion-grow.is-inview{animation:groomFoliageIn 1.5s cubic-bezier(.16,.78,.2,1) forwards}
.groom-vine.motion-vine.is-inview{animation:groomVineIn 1.8s .22s cubic-bezier(.16,.78,.2,1) forwards}
.groom-bloom.motion-bloom.is-inview{animation:groomBloomIn 1.32s .42s cubic-bezier(.2,.82,.2,1) forwards}
.bride-foliage.motion-grow.is-inview{animation:brideFoliageIn 1.5s cubic-bezier(.16,.78,.2,1) forwards}
.bride-vine.motion-vine.is-inview{animation:brideVineIn 1.8s .22s cubic-bezier(.16,.78,.2,1) forwards}
.bride-bloom.motion-bloom.is-inview{animation:brideBloomIn 1.32s .42s cubic-bezier(.2,.82,.2,1) forwards}
.couple-photo-shell.motion-photo.is-inview{animation:couplePhotoIn 1.42s .12s cubic-bezier(.16,.78,.2,1) forwards}
@keyframes groomFoliageIn{from{opacity:0;transform:translate(-50%,-45%) scale(.88) rotate(-2deg)}to{opacity:1;transform:translate(-50%,-50%) scale(1.03) rotate(0)}}
@keyframes groomVineIn{from{opacity:0;clip-path:inset(0 0 100% 0);transform:translate(-32%,-44%) rotate(2deg)}to{opacity:1;clip-path:inset(0 0 0 0);transform:translate(-32%,-40%) rotate(2deg)}}
@keyframes groomBloomIn{from{opacity:0;transform:translate(-50%,-47%) scale(.9)}to{opacity:1;transform:translate(-50%,-50%) scale(1.01)}}
@keyframes brideFoliageIn{from{opacity:0;transform:translate(-50%,-45%) scale(.88) rotate(2deg)}to{opacity:1;transform:translate(-50%,-49%) scale(1.02) rotate(0)}}
@keyframes brideVineIn{from{opacity:0;clip-path:inset(0 0 100% 0);transform:translate(-65%,-43%) rotate(-2deg)}to{opacity:1;clip-path:inset(0 0 0 0);transform:translate(-65%,-39%) rotate(-2deg)}}
@keyframes brideBloomIn{from{opacity:0;transform:translate(-50%,-47%) scale(.9)}to{opacity:1;transform:translate(-50%,-50%) scale(1.01)}}
@keyframes couplePhotoIn{from{opacity:0;transform:translate(-50%,-47%) scale(.94)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}

.couple-edge{
  position:absolute;
  z-index:2;
  width:min(67vw,360px);
  height:auto;
  pointer-events:none;
  user-select:none;
  filter:drop-shadow(0 10px 20px rgba(80,50,39,.08));
}
.couple-edge-groom{right:-30%;bottom:-3%;transform-origin:100% 100%}
.couple-edge-bride{left:-30%;bottom:0;transform-origin:0 100%}
.couple-edge-groom.motion-grow.is-inview{animation:edgeGroomIn 1.55s .2s cubic-bezier(.16,.78,.2,1) forwards}
.couple-edge-bride.motion-grow.is-inview{animation:edgeBrideIn 1.55s .2s cubic-bezier(.16,.78,.2,1) forwards}
@keyframes edgeGroomIn{from{opacity:0;transform:translate(22px,34px) scale(.9)}to{opacity:1;transform:none}}
@keyframes edgeBrideIn{from{opacity:0;transform:translate(-22px,34px) scale(.9)}to{opacity:1;transform:none}}

.couple-info{
  position:relative;
  z-index:8;
  width:min(78vw,390px);
  margin-top:-6px;
}
.groom-info{align-self:center;text-align:right;padding-right:4px}
.bride-info{align-self:center;text-align:left;padding-left:4px}
.couple-role{
  margin:0 0 5px;
  color:#a95540;
  font:500 12px/1.2 'Cormorant Garamond',serif;
}
.couple-info h3{
  margin:0 0 10px;
  color:var(--mar);
  font:400 clamp(46px,13vw,67px)/.94 'Allura',cursive;
}
.couple-info>p:last-child{
  margin:0;
  color:#a45e43;
  font:500 13px/1.6 'Cormorant Garamond',serif;
}

@media(min-width:681px){
  .couple-profile{padding:84px 8vw 92px}
  .couple-art-stage{width:min(58vw,520px)}
  .couple-intro{margin-bottom:10px}
  .couple-info{width:min(48vw,430px)}
  .groom-info{transform:translateX(120px)}
  .bride-info{transform:translateX(-120px)}
  .couple-edge{width:min(36vw,430px)}
  .couple-edge-groom{right:-8%;bottom:-7%}
  .couple-edge-bride{left:-8%;bottom:-7%}
}

@media(max-width:390px){
  .couple-profile{padding:60px 16px 72px}
  .couple-art-stage{width:95vw;margin-top:4px}
  .couple-photo-shell{width:70%}
  .couple-info{width:82vw;margin-top:-10px}
  .couple-intro>p:last-child{font-size:12.5px}
  .couple-edge{width:73vw}
  .couple-edge-groom{right:-36%}
  .couple-edge-bride{left:-36%}
}

@media(prefers-reduced-motion:reduce){
  [data-inview],.decor-grow,.decor-rise,.decor-fade,.decor-float{opacity:1!important;animation:none!important;transition:none!important}
}

/* =========================================================
   v4.5 — Couple portrait safe zone + Bride-first flow
   Botanical layers stay decorative around the portrait while
   the frame/photo remains visually protected above them.
   ========================================================= */

/* Bride is the opening profile; Groom becomes the continuation. */
.bride-profile{border-top:0}
.groom-profile{border-top:1px solid rgba(220,163,61,.12)}

/* Safe-zone hierarchy: botanical composition may frame the portrait,
   but it can no longer paint over the actual photo/frame opening. */
.couple-foliage{z-index:2}
.couple-vine{z-index:3}
.couple-bloom{z-index:4}
.couple-photo-shell{z-index:6;width:76%}

/* Pull the heaviest bloom mass slightly farther from the portrait center. */
.bride-foliage{width:98%;transform:translate(-50%,-49%) scale(.99)}
.bride-vine{width:62%;transform:translate(-69%,-39%) rotate(-2deg)}
.bride-bloom{width:97%;transform:translate(-52%,-50%) scale(.98)}
.groom-foliage{width:92%;transform:translate(-50%,-50%) scale(1)}
.groom-vine{width:61%;transform:translate(-29%,-40%) rotate(2deg)}
.groom-bloom{width:98%;transform:translate(-48%,-50%) scale(.98)}

/* Preserve the new authored positions at the end of viewport animations. */
@keyframes brideFoliageInV45{from{opacity:0;transform:translate(-50%,-45%) scale(.87) rotate(2deg)}to{opacity:1;transform:translate(-50%,-49%) scale(.99) rotate(0)}}
@keyframes brideVineInV45{from{opacity:0;clip-path:inset(0 0 100% 0);transform:translate(-69%,-43%) rotate(-2deg)}to{opacity:1;clip-path:inset(0 0 0 0);transform:translate(-69%,-39%) rotate(-2deg)}}
@keyframes brideBloomInV45{from{opacity:0;transform:translate(-52%,-47%) scale(.88)}to{opacity:1;transform:translate(-52%,-50%) scale(.98)}}
@keyframes groomFoliageInV45{from{opacity:0;transform:translate(-50%,-45%) scale(.86) rotate(-2deg)}to{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}}
@keyframes groomVineInV45{from{opacity:0;clip-path:inset(0 0 100% 0);transform:translate(-29%,-44%) rotate(2deg)}to{opacity:1;clip-path:inset(0 0 0 0);transform:translate(-29%,-40%) rotate(2deg)}}
@keyframes groomBloomInV45{from{opacity:0;transform:translate(-48%,-47%) scale(.88)}to{opacity:1;transform:translate(-48%,-50%) scale(.98)}}
.bride-foliage.motion-grow.is-inview{animation-name:brideFoliageInV45}
.bride-vine.motion-vine.is-inview{animation-name:brideVineInV45}
.bride-bloom.motion-bloom.is-inview{animation-name:brideBloomInV45}
.groom-foliage.motion-grow.is-inview{animation-name:groomFoliageInV45}
.groom-vine.motion-vine.is-inview{animation-name:groomVineInV45}
.groom-bloom.motion-bloom.is-inview{animation-name:groomBloomInV45}

@media(max-width:390px){
  .couple-photo-shell{width:75%}
  .bride-bloom{width:94%;transform:translate(-52%,-50%) scale(.96)}
  .groom-bloom{width:95%;transform:translate(-48%,-50%) scale(.96)}
  @keyframes brideBloomInV45{from{opacity:0;transform:translate(-52%,-47%) scale(.86)}to{opacity:1;transform:translate(-52%,-50%) scale(.96)}}
  @keyframes groomBloomInV45{from{opacity:0;transform:translate(-48%,-47%) scale(.86)}to{opacity:1;transform:translate(-48%,-50%) scale(.96)}}
}


/* =========================================================
   v4.6 — Quran boundary + Countdown/Wedding Day + 12 gallery slots
   ========================================================= */

/* Quran becomes a compact chapter. The architecture/garden is the visual
   bottom boundary and overlaps the Bride section only slightly. */
.quran-section{
  min-height:0;
  display:flex;
  flex-direction:column;
  justify-content:flex-start;
  align-items:center;
  padding:52px 0 0;
  overflow:visible;
  z-index:6;
}
.quran-bismillah{
  position:relative;
  z-index:12;
  display:block;
  width:min(270px,54vw);
  height:auto;
  margin:0 auto 10px;
  filter:drop-shadow(0 5px 10px rgba(126,72,37,.06));
}
.quran-copy{margin:0 auto 4px}
.quran-stage{
  z-index:8;
  margin:-8px auto -28px;
  height:clamp(285px,39vw,455px);
}
.quran-stage .quran-base{width:112%}
.quran-stage.is-inview .quran-base{
  animation:quranBaseV42 2.05s cubic-bezier(.16,.72,.2,1) forwards;
}
.quran-stage.is-inview .quran-foliage{
  animation:quranFoliageV42 1.5s 1.48s cubic-bezier(.18,.75,.2,1) forwards,
            quranFoliageSwayV42 7.5s 4.9s ease-in-out infinite;
}
.quran-stage.is-inview .quran-vine-mask-left{animation:quranVineMaskV42 2.25s 2.28s cubic-bezier(.16,.78,.2,1) forwards}
.quran-stage.is-inview .quran-vine-mask-right{animation:quranVineMaskV42 2.25s 2.48s cubic-bezier(.16,.78,.2,1) forwards}
.quran-stage.is-inview .quran-vine-left{
  animation:quranVineLeftV42 2.25s 2.28s cubic-bezier(.16,.78,.2,1) forwards,
            quranVineSwayLeftV42 8.4s 5.2s ease-in-out infinite;
}
.quran-stage.is-inview .quran-vine-right{
  animation:quranVineRightV42 2.25s 2.48s cubic-bezier(.16,.78,.2,1) forwards,
            quranVineSwayRightV42 8.9s 5.35s ease-in-out infinite;
}
.quran-stage.is-inview .quran-bloom-left{
  animation:quranBloomLeftV42 1.35s 3.72s cubic-bezier(.18,.78,.18,1) forwards,
            quranBloomSwayLeftV42 8s 5.3s ease-in-out infinite;
}
.quran-stage.is-inview .quran-bloom-right{
  animation:quranBloomRightV42 1.35s 3.96s cubic-bezier(.18,.78,.18,1) forwards,
            quranBloomSwayRightV42 8.6s 5.45s ease-in-out infinite;
}
/* Old section-level Quran animation is neutralized; v4.6 triggers the garden
   when the garden itself reaches the viewport. */
.quran-section.quran-animate .quran-base,
.quran-section.quran-animate .quran-foliage,
.quran-section.quran-animate .quran-vine-mask-left,
.quran-section.quran-animate .quran-vine-mask-right,
.quran-section.quran-animate .quran-vine-left,
.quran-section.quran-animate .quran-vine-right,
.quran-section.quran-animate .quran-bloom-left,
.quran-section.quran-animate .quran-bloom-right{animation:none}

/* Couple receives the small garden overlap without adding empty vertical gap. */
.couple-lush{position:relative;z-index:2}
.bride-profile{padding-top:96px}

/* Countdown / Wedding Day */
.countdown-section{
  min-height:100svh;
  display:block;
  padding:150px 20px 94px;
  overflow:hidden;
  isolation:isolate;
  background:
    radial-gradient(circle at 50% 31%,rgba(255,255,255,.4),transparent 32%),
    url('assets/bg-paper.webp') center/cover;
}
.countdown-section:before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-2;
  background:linear-gradient(180deg,rgba(255,248,238,.12),rgba(227,138,188,.035) 48%,rgba(255,248,238,.06));
  pointer-events:none;
}
.countdown-ornament,.countdown-foliage,.countdown-bloom{
  position:absolute;
  pointer-events:none;
  user-select:none;
}
.countdown-ornament{
  z-index:2;
  top:0;
  left:50%;
  width:min(96vw,760px);
  height:auto;
  transform:translateX(-50%);
  filter:drop-shadow(0 8px 15px rgba(107,69,32,.07));
}
.countdown-ornament.motion-fade.is-inview{animation:countOrnamentIn 1.45s ease forwards}
@keyframes countOrnamentIn{from{opacity:0;transform:translate(-50%,-16px) scale(.97)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
.countdown-foliage{
  z-index:1;
  top:108px;
  width:min(43vw,390px);
  opacity:0;
  filter:drop-shadow(0 12px 18px rgba(54,72,42,.08));
}
.countdown-foliage-left{left:-7%;transform-origin:0 100%;transform:translate(-20px,28px) scale(.9) rotate(-2deg)}
.countdown-foliage-right{right:-7%;transform-origin:100% 100%;transform:translate(20px,28px) scale(.9) rotate(2deg)}
.countdown-foliage-left.is-inview{animation:countFoliageLeftIn 1.75s .08s cubic-bezier(.16,.78,.2,1) forwards}
.countdown-foliage-right.is-inview{animation:countFoliageRightIn 1.75s .18s cubic-bezier(.16,.78,.2,1) forwards}
@keyframes countFoliageLeftIn{from{opacity:0;transform:translate(-28px,34px) scale(.86) rotate(-3deg)}to{opacity:1;transform:translate(0,0) scale(1) rotate(0)}}
@keyframes countFoliageRightIn{from{opacity:0;transform:translate(28px,34px) scale(.86) rotate(3deg)}to{opacity:1;transform:translate(0,0) scale(1) rotate(0)}}
.countdown-bloom{
  z-index:3;
  top:100px;
  width:min(44vw,400px);
  opacity:0;
  filter:drop-shadow(0 14px 20px rgba(91,42,55,.09));
}
.countdown-bloom-left{left:-7%;transform-origin:0 100%}
.countdown-bloom-right{right:-7%;transform-origin:100% 100%}
.countdown-bloom-left.is-inview{animation:countBloomLeftIn 1.35s .32s cubic-bezier(.2,.82,.2,1) forwards,countBloomLeftSway 8.5s 2.2s ease-in-out infinite}
.countdown-bloom-right.is-inview{animation:countBloomRightIn 1.35s .45s cubic-bezier(.2,.82,.2,1) forwards,countBloomRightSway 9s 2.35s ease-in-out infinite}
@keyframes countBloomLeftIn{from{opacity:0;transform:translate(-18px,28px) scale(.88) rotate(-2deg)}to{opacity:1;transform:translate(0,0) scale(1) rotate(0)}}
@keyframes countBloomRightIn{from{opacity:0;transform:translate(18px,28px) scale(.88) rotate(2deg)}to{opacity:1;transform:translate(0,0) scale(1) rotate(0)}}
@keyframes countBloomLeftSway{0%,100%{transform:translate(0,0) rotate(0)}50%{transform:translate(1px,-3px) rotate(.55deg)}}
@keyframes countBloomRightSway{0%,100%{transform:translate(0,0) rotate(0)}50%{transform:translate(-1px,-3px) rotate(-.55deg)}}
.countdown-content{
  position:relative;
  z-index:6;
  width:min(88vw,650px);
  margin:0 auto;
  text-align:center;
}
.countdown-heading{margin-top:18px}
.countdown-script{
  margin:0 0 28px;
  color:var(--mar);
  font:400 clamp(48px,10vw,68px)/.95 'Allura',cursive;
}
.countdown-grid{
  width:min(420px,76vw);
  margin:0 auto 26px;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:22px;
}
.countdown-unit{display:grid;gap:4px;place-items:center}
.countdown-unit strong{
  color:var(--mar);
  font:500 clamp(30px,5vw,42px)/1 'Cormorant Garamond',serif;
  font-variant-numeric:tabular-nums;
}
.countdown-unit span{color:#a15b47;font:500 12px/1.2 'Cormorant Garamond',serif}
.calendar-button{
  position:relative;
  z-index:8;
  border:0;
  border-radius:999px;
  padding:13px 22px;
  background:var(--mar);
  color:#fff7ed;
  font:600 12px 'Cormorant Garamond',serif;
  box-shadow:0 12px 24px rgba(143,23,63,.17);
  cursor:pointer;
  transition:transform .3s ease,box-shadow .3s ease,background .3s ease;
}
.calendar-button:hover{transform:translateY(-2px);background:#7d1537;box-shadow:0 16px 28px rgba(143,23,63,.22)}
.wedding-day-block{width:min(560px,86vw);margin:88px auto 0}
.wedding-day-divider{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:22px;color:var(--mar)}
.wedding-day-divider span{display:block;width:min(120px,24vw);height:1px;background:linear-gradient(90deg,transparent,currentColor)}
.wedding-day-divider span:last-child{transform:scaleX(-1)}
.wedding-day-divider i{font-style:normal;font-size:20px}
.wedding-day-script{margin:0 0 18px;color:var(--mar);font:400 clamp(48px,10vw,68px)/.95 'Allura',cursive}
.wedding-day-copy{width:min(500px,88%);margin:0 auto;color:#a65c40;font:500 13px/1.7 'Cormorant Garamond',serif}
.wedding-day-line{width:1px;height:20px;margin:44px auto 14px;background:rgba(143,23,63,.7)}
.wedding-day-date{margin:0;color:var(--mar);font:500 clamp(31px,6vw,46px)/1.15 'Cormorant Garamond',serif}
.wedding-day-date span{display:block;font-size:.72em;margin-bottom:4px}

/* Gallery can render up to 12 images without changing the section engine. */
.gallery-grid-lush{grid-template-columns:repeat(4,minmax(0,1fr));max-width:1040px}
.gallery-item:nth-child(4n+2),.gallery-item:nth-child(4n+4){margin-top:30px}
.gallery-item:nth-child(3n){aspect-ratio:1/1.18}

@media(max-width:680px){
  .quran-section{padding-top:34px}
  .quran-bismillah{width:min(230px,58vw);margin-bottom:4px}
  .quran-copy{width:min(88vw,410px);margin-bottom:0}
  .quran-stage{width:105vw;height:clamp(260px,67vw,315px);margin:-8px auto -24px}
  .quran-stage .quran-base{width:114%}
  .bride-profile{padding-top:84px}

  .countdown-section{padding:130px 18px 84px;min-height:1020px}
  .countdown-ornament{width:116vw;top:-4px}
  .countdown-foliage{top:116px;width:56vw}
  .countdown-foliage-left{left:-22%}
  .countdown-foliage-right{right:-22%}
  .countdown-bloom{top:112px;width:58vw}
  .countdown-bloom-left{left:-23%}
  .countdown-bloom-right{right:-23%}
  .countdown-content{width:100%;padding-top:8px}
  .countdown-heading{margin-top:4px}
  .countdown-script{font-size:48px;margin-bottom:26px}
  .countdown-grid{width:min(220px,64vw);grid-template-columns:repeat(2,1fr);gap:22px 44px;margin-bottom:24px}
  .countdown-unit strong{font-size:30px}
  .countdown-unit span{font-size:12px}
  .wedding-day-block{margin-top:92px}
  .wedding-day-script{font-size:47px}
  .wedding-day-copy{font-size:12.5px;line-height:1.7}

  .gallery-grid-lush{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .gallery-item:nth-child(n){margin-top:0}
  .gallery-item:nth-child(even){margin-top:20px}
}
@media(max-width:390px){
  .quran-bismillah{width:61vw}
  .quran-stage{width:107vw;height:clamp(248px,69vw,286px);margin-bottom:-20px}
  .countdown-section{min-height:980px;padding-top:122px}
  .countdown-ornament{width:122vw}
  .countdown-foliage{width:60vw}.countdown-bloom{width:62vw}
  .countdown-foliage-left,.countdown-bloom-left{left:-27%}
  .countdown-foliage-right,.countdown-bloom-right{right:-27%}
  .countdown-script{font-size:44px}
  .countdown-grid{gap:20px 38px}
  .wedding-day-block{margin-top:82px}
}
@media(prefers-reduced-motion:reduce){
  .countdown-foliage,.countdown-bloom,.countdown-ornament{opacity:1!important;animation:none!important}
}

/* =========================================================
   v4.7 — Adaptive Wedding Event + Two-mode Gallery (12 slots)
   ========================================================= */

/* Wedding Event engine ---------------------------------------------------- */
.event-engine{
  display:block;
  min-height:auto;
  padding:82px 0 0;
  overflow:hidden;
  isolation:isolate;
  background:
    radial-gradient(circle at 50% 18%,rgba(255,255,255,.55),transparent 28%),
    url('assets/bg-paper.webp') center/cover;
}
.event-section-heading{
  position:relative;
  z-index:20;
  width:min(88vw,620px);
  margin:0 auto 20px;
  text-align:center;
}
.event-section-heading h3{margin-bottom:20px}
.event-scenes{position:relative;z-index:5;width:100%;display:grid;gap:0}
.event-scene{
  position:relative;
  width:min(100%,760px);
  min-height:clamp(790px,118vw,1040px);
  margin:0 auto;
  overflow:hidden;
  isolation:isolate;
}
.event-scene + .event-scene{margin-top:-54px}
.event-scene:before{
  content:"";
  position:absolute;
  inset:3% 5% 4%;
  z-index:-2;
  border-radius:32px;
  background:radial-gradient(circle at 50% 48%,rgba(255,255,255,.55),rgba(255,250,241,.12) 44%,transparent 72%);
}
.event-layer{position:absolute;pointer-events:none;user-select:none;height:auto}
.event-arch{
  z-index:2;
  top:1.5%;left:50%;
  width:min(91%,690px);
  opacity:0;
  transform:translate(-50%,20px) scale(.97);
  filter:drop-shadow(0 16px 18px rgba(92,58,33,.12));
}
.event-arch.is-inview{animation:eventArchIn 1.7s cubic-bezier(.16,.78,.2,1) forwards}
.event-curtain{z-index:3;top:3.5%;width:min(50%,380px);opacity:0;filter:drop-shadow(0 10px 13px rgba(78,44,31,.09))}
.event-curtain-left{left:4%;transform-origin:0 12%;transform:translateX(-24px) scale(.98) rotate(-1deg)}
.event-curtain-right{right:4%;transform-origin:100% 12%;transform:translateX(24px) scale(.98) rotate(1deg)}
.event-curtain-left.is-inview{animation:eventCurtainLeftIn 1.65s .12s cubic-bezier(.16,.78,.2,1) forwards}
.event-curtain-right.is-inview{animation:eventCurtainRightIn 1.65s .2s cubic-bezier(.16,.78,.2,1) forwards}
.event-foliage{z-index:4;top:4%;width:min(48%,365px);opacity:0;filter:drop-shadow(0 12px 16px rgba(55,77,45,.08))}
.event-foliage-left{left:-5%;transform-origin:0 100%;transform:translate(-25px,32px) scale(.9) rotate(-2deg)}
.event-foliage-right{right:-5%;transform-origin:100% 100%;transform:translate(25px,32px) scale(.9) rotate(2deg)}
.event-foliage-left.is-inview{animation:eventFoliageLeftIn 1.8s .26s cubic-bezier(.16,.78,.2,1) forwards}
.event-foliage-right.is-inview{animation:eventFoliageRightIn 1.8s .36s cubic-bezier(.16,.78,.2,1) forwards}
.event-bloom{z-index:5;top:5%;width:min(47%,360px);opacity:0;filter:drop-shadow(0 14px 17px rgba(91,42,55,.09))}
.event-bloom-left{left:-8%;transform-origin:0 100%;transform:translate(-18px,28px) scale(.88) rotate(-2deg)}
.event-bloom-right{right:-8%;transform-origin:100% 100%;transform:translate(18px,28px) scale(.88) rotate(2deg)}
.event-bloom-left.is-inview{animation:eventBloomLeftIn 1.4s .52s cubic-bezier(.2,.82,.2,1) forwards,eventBloomLeftSway 9s 2.4s ease-in-out infinite}
.event-bloom-right.is-inview{animation:eventBloomRightIn 1.4s .66s cubic-bezier(.2,.82,.2,1) forwards,eventBloomRightSway 9.6s 2.55s ease-in-out infinite}
.event-content{
  position:relative;
  z-index:10;
  width:min(57%,430px);
  min-height:500px;
  margin:0 auto;
  padding-top:clamp(285px,44vw,355px);
  text-align:center;
}
.event-symbol{width:36px;height:36px;margin:0 auto 7px;color:var(--gold);opacity:.95}
.event-symbol svg{width:100%;height:100%;display:block}
.event-kicker{margin:0 0 8px;color:#a26448;font:500 11px/1.2 'Cormorant Garamond',serif;letter-spacing:.08em;text-transform:uppercase}
.event-schedules{display:grid;gap:14px;margin:0 auto 17px}
.event-schedule{display:grid;gap:4px}
.event-schedule-label{font:400 34px/.95 'Allura',cursive;color:var(--mar)}
.event-schedule-time{font:600 14px/1.2 'Cormorant Garamond',serif;color:var(--mar);letter-spacing:.05em}
.event-schedule-date{font:500 12px/1.4 'Cormorant Garamond',serif;color:#99604f}
.event-schedule-divider{width:54px;height:1px;margin:0 auto;background:linear-gradient(90deg,transparent,var(--gold),transparent)}
.event-venue{width:min(100%,370px);margin:0 auto 14px;padding-top:11px}
.event-venue strong{display:block;margin-bottom:6px;color:var(--mar);font:600 15px/1.35 'Cormorant Garamond',serif}
.event-venue address{margin:0;color:#a26448;font:500 11.5px/1.55 'Cormorant Garamond',serif;font-style:normal}
.event-location-button{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  margin-top:4px;padding:10px 15px;border-radius:999px;
  background:var(--mar);color:#fff7ee;text-decoration:none;
  font:600 11px/1 'Cormorant Garamond',serif;
  box-shadow:0 11px 23px rgba(143,23,63,.18);
  transition:transform .3s ease,box-shadow .3s ease,background .3s ease;
}
.event-location-button svg{width:13px;height:13px;display:block}
.event-location-button:hover{transform:translateY(-2px);background:#7d1537;box-shadow:0 15px 27px rgba(143,23,63,.23)}
.event-garden-bottom{
  z-index:8;left:50%;bottom:-1%;width:min(118%,850px);
  opacity:0;transform:translate(-50%,36px) scale(.98);
  filter:drop-shadow(0 -8px 13px rgba(54,73,43,.09));
}
.event-garden-bottom.is-inview{animation:eventGardenBottomIn 1.65s .16s cubic-bezier(.16,.78,.2,1) forwards}
.event-scene--single .event-content{padding-top:clamp(295px,46vw,370px)}
.event-scene--single .event-schedules{gap:9px}
.event-scene--single .event-schedule-label{font-size:38px}

@keyframes eventArchIn{from{opacity:0;transform:translate(-50%,22px) scale(.96)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes eventCurtainLeftIn{from{opacity:0;transform:translateX(-28px) scale(.96) rotate(-2deg)}to{opacity:1;transform:translateX(0) scale(1) rotate(0)}}
@keyframes eventCurtainRightIn{from{opacity:0;transform:translateX(28px) scale(.96) rotate(2deg)}to{opacity:1;transform:translateX(0) scale(1) rotate(0)}}
@keyframes eventFoliageLeftIn{from{opacity:0;transform:translate(-30px,35px) scale(.87) rotate(-3deg)}to{opacity:1;transform:translate(0,0) scale(1) rotate(0)}}
@keyframes eventFoliageRightIn{from{opacity:0;transform:translate(30px,35px) scale(.87) rotate(3deg)}to{opacity:1;transform:translate(0,0) scale(1) rotate(0)}}
@keyframes eventBloomLeftIn{from{opacity:0;transform:translate(-20px,30px) scale(.86) rotate(-3deg)}to{opacity:1;transform:translate(0,0) scale(1) rotate(0)}}
@keyframes eventBloomRightIn{from{opacity:0;transform:translate(20px,30px) scale(.86) rotate(3deg)}to{opacity:1;transform:translate(0,0) scale(1) rotate(0)}}
@keyframes eventBloomLeftSway{0%,100%{transform:translate(0,0) rotate(0)}50%{transform:translate(2px,-3px) rotate(.55deg)}}
@keyframes eventBloomRightSway{0%,100%{transform:translate(0,0) rotate(0)}50%{transform:translate(-2px,-3px) rotate(-.55deg)}}
@keyframes eventGardenBottomIn{from{opacity:0;transform:translate(-50%,38px) scale(.97)}to{opacity:1;transform:translate(-50%,0) scale(1)}}

/* Gallery mode 01: botanical mosaic -------------------------------------- */
.gallery-mosaic-section{min-height:auto;padding:90px 5vw 118px;overflow:hidden}
.gallery-frame-ghost{position:absolute;left:50%;top:49%;z-index:0;width:min(90vw,800px);height:auto;opacity:0;transform:translate(-50%,-50%) scale(.96);pointer-events:none;filter:sepia(.1) drop-shadow(0 12px 20px rgba(125,72,42,.05))}
.gallery-frame-ghost.motion-fade.is-inview{animation:galleryFrameGhostIn 1.8s ease forwards}
@keyframes galleryFrameGhostIn{to{opacity:.14;transform:translate(-50%,-50%) scale(1)}}
.gallery-mosaic{position:relative;z-index:5;width:min(100%,980px);margin:14px auto 0;display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:minmax(135px,15vw);gap:14px}
.gallery-mosaic-item{position:relative;margin:0;overflow:hidden;border:1px solid rgba(220,163,61,.44);background:rgba(255,250,244,.72);box-shadow:0 16px 34px rgba(91,42,55,.09);opacity:0;transform:translateY(28px) scale(.97)}
.gallery-mosaic-item:nth-child(1){grid-column:span 2;grid-row:span 3;border-radius:46% 46% 22px 22px/18% 18% 22px 22px}
.gallery-mosaic-item:nth-child(2){grid-column:span 1;grid-row:span 2;border-radius:22px 46% 22px 22px}
.gallery-mosaic-item:nth-child(3){grid-column:span 1;grid-row:span 2;border-radius:46% 22px 22px 22px}
.gallery-mosaic-item:nth-child(4){grid-column:span 2;grid-row:span 2;border-radius:22px}
.gallery-mosaic-item:nth-child(5){grid-column:span 1;grid-row:span 2;border-radius:22px 22px 22px 46%}
.gallery-mosaic-item:nth-child(6){grid-column:span 1;grid-row:span 3;border-radius:22px 22px 46% 46%/22px 22px 18% 18%}
.gallery-mosaic-item.is-inview{animation:galleryTileIn 1.05s cubic-bezier(.16,.78,.2,1) forwards}
.gallery-mosaic-item:nth-child(2).is-inview{animation-delay:.08s}.gallery-mosaic-item:nth-child(3).is-inview{animation-delay:.14s}.gallery-mosaic-item:nth-child(4).is-inview{animation-delay:.08s}.gallery-mosaic-item:nth-child(5).is-inview{animation-delay:.16s}.gallery-mosaic-item:nth-child(6).is-inview{animation-delay:.1s}
.gallery-photo-placeholder{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden;background:linear-gradient(145deg,#ead2d8 0%,#f3e0dc 46%,#dcb8c4 100%);color:#85525e;font:500 15px 'Cormorant Garamond',serif}
.gallery-photo-placeholder:after{content:"";position:absolute;inset:8px;border:1px solid rgba(255,255,255,.55);border-radius:inherit;pointer-events:none}
.gallery-photo-placeholder span{position:relative;z-index:2}
.gallery-mosaic-item img,.gallery-polaroid img{width:100%;height:100%;object-fit:cover;display:block}
@keyframes galleryTileIn{from{opacity:0;transform:translateY(30px) scale(.965)}to{opacity:1;transform:translateY(0) scale(1)}}

/* Gallery mode 02: swipeable vintage-polaroid film ----------------------- */
.gallery-story{display:block;min-height:auto;padding:96px 0 180px;overflow:hidden;isolation:isolate;background:linear-gradient(rgba(249,245,236,.42),rgba(245,238,226,.68)),url('assets/bg-paper.webp') center/cover}
.gallery-story:before{content:"";position:absolute;inset:0;z-index:-2;background:radial-gradient(circle at 50% 36%,rgba(255,255,255,.55),transparent 34%),radial-gradient(circle at 15% 62%,rgba(227,138,188,.08),transparent 25%)}
.gallery-story-heading{position:relative;z-index:6;margin:0 auto 32px;text-align:center;padding:0 22px}
.gallery-story-heading h3{margin-bottom:12px}
.gallery-story-copy{margin:0 auto 15px;color:#93604e;font:500 12px/1.5 'Cormorant Garamond',serif;font-style:italic}
.gallery-story-corner,.gallery-story-leaf,.gallery-story-garden,.gallery-story-butterfly{position:absolute;pointer-events:none;user-select:none}
.gallery-story-corner{z-index:2;width:min(42vw,390px);opacity:0}
.gallery-story-corner-left{left:-8%;top:3%;transform-origin:0 0}
.gallery-story-corner-right{right:-9%;top:16%;transform-origin:100% 100%}
.gallery-story-leaf{z-index:1;left:-11%;top:52%;width:min(38vw,360px);opacity:0;transform:rotate(-20deg);transform-origin:0 100%}
.gallery-story-garden{z-index:3;left:50%;bottom:-4%;width:min(920px,122vw);height:auto;opacity:0;transform:translate(-50%,38px) scale(.98);filter:drop-shadow(0 -10px 16px rgba(68,91,51,.07))}
.gallery-story-garden.motion-rise.is-inview{animation:galleryGardenIn 1.65s cubic-bezier(.16,.78,.2,1) forwards}
.gallery-story-butterfly{z-index:8;right:9%;top:33%;width:52px;height:52px;object-fit:contain;filter:drop-shadow(0 7px 8px rgba(91,42,55,.14))}
.gallery-film{position:relative;z-index:6;width:100%;display:flex;gap:18px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x mandatory;padding:12px max(7vw,24px) 34px;scroll-padding-inline:max(7vw,24px);-webkit-overflow-scrolling:touch;scrollbar-width:none}
.gallery-film::-webkit-scrollbar{display:none}
.gallery-polaroid{position:relative;flex:0 0 clamp(235px,64vw,330px);aspect-ratio:4/5.2;margin:0;scroll-snap-align:center;background:#fffaf0;padding:10px 10px 38px;border:1px solid rgba(220,163,61,.35);box-shadow:0 20px 36px rgba(86,47,55,.12);opacity:0;transform:translateY(30px) rotate(0deg) scale(.96)}
.gallery-polaroid:nth-child(odd){transform:translateY(30px) rotate(-1.6deg) scale(.96)}
.gallery-polaroid:nth-child(even){transform:translateY(30px) rotate(1.4deg) scale(.96)}
.gallery-polaroid .gallery-photo-placeholder{position:relative;inset:auto;width:100%;height:100%;border-radius:3px}
.gallery-polaroid figcaption{position:absolute;left:0;right:0;bottom:11px;text-align:center;color:#a06455;font:600 11px 'Cormorant Garamond',serif;letter-spacing:.2em}
.gallery-polaroid.is-inview{animation:galleryPolaroidIn 1.08s cubic-bezier(.16,.78,.2,1) forwards}
.gallery-polaroid:nth-child(odd).is-inview{animation-name:galleryPolaroidOddIn}.gallery-polaroid:nth-child(even).is-inview{animation-name:galleryPolaroidEvenIn}
@keyframes galleryPolaroidIn{to{opacity:1;transform:translateY(0) rotate(0) scale(1)}}
@keyframes galleryPolaroidOddIn{to{opacity:1;transform:translateY(0) rotate(-1.6deg) scale(1)}}
@keyframes galleryPolaroidEvenIn{to{opacity:1;transform:translateY(0) rotate(1.4deg) scale(1)}}
.gallery-swipe-hint{position:relative;z-index:7;display:flex;align-items:center;justify-content:center;gap:10px;margin:0 auto;color:#9e6858;font:500 10px 'Cormorant Garamond',serif;letter-spacing:.15em;text-transform:uppercase}
.gallery-swipe-hint span{width:28px;height:1px;background:linear-gradient(90deg,transparent,var(--gold))}.gallery-swipe-hint span:last-child{transform:scaleX(-1)}
@keyframes galleryGardenIn{to{opacity:1;transform:translate(-50%,0) scale(1)}}

/* Common v4.7 per-element motion aliases */
.motion-rise{opacity:0}
.motion-rise.is-inview{animation:decorRise 1.55s cubic-bezier(.16,.78,.2,1) forwards}
.motion-gallery{will-change:opacity,transform}

@media(max-width:680px){
  .event-engine{padding-top:66px}
  .event-section-heading{margin-bottom:0;padding:0 22px}
  .event-scene{width:100%;min-height:900px}
  .event-scene + .event-scene{margin-top:-86px}
  .event-arch{top:2%;width:112%;max-width:none}
  .event-curtain{top:3%;width:66%;max-width:none}
  .event-curtain-left{left:-12%}.event-curtain-right{right:-12%}
  .event-foliage{top:7%;width:67%;max-width:none}
  .event-foliage-left{left:-28%}.event-foliage-right{right:-28%}
  .event-bloom{top:7%;width:68%;max-width:none}
  .event-bloom-left{left:-31%}.event-bloom-right{right:-31%}
  .event-content{width:min(58vw,270px);min-height:500px;padding-top:330px}
  .event-scene--single .event-content{padding-top:335px}
  .event-schedule-label{font-size:33px}.event-scene--single .event-schedule-label{font-size:35px}
  .event-schedule-time{font-size:13px}.event-schedule-date{font-size:11.5px}
  .event-venue strong{font-size:14px}.event-venue address{font-size:10.8px;line-height:1.5}
  .event-garden-bottom{width:138%;bottom:0}

  .gallery-mosaic-section{padding:78px 14px 104px}
  .gallery-mosaic{width:100%;grid-template-columns:repeat(2,1fr);grid-auto-rows:minmax(118px,34vw);gap:10px}
  .gallery-mosaic-item:nth-child(1){grid-column:span 2;grid-row:span 2}
  .gallery-mosaic-item:nth-child(2),.gallery-mosaic-item:nth-child(3){grid-column:span 1;grid-row:span 2}
  .gallery-mosaic-item:nth-child(4){grid-column:span 2;grid-row:span 1;aspect-ratio:auto}
  .gallery-mosaic-item:nth-child(5),.gallery-mosaic-item:nth-child(6){grid-column:span 1;grid-row:span 2}
  .gallery-frame-ghost{width:142vw;top:52%}

  .gallery-story{padding:82px 0 158px}
  .gallery-story-corner{width:72vw}
  .gallery-story-corner-left{left:-34%;top:1%}.gallery-story-corner-right{right:-36%;top:23%}
  .gallery-story-leaf{width:72vw;left:-38%;top:55%}
  .gallery-film{gap:14px;padding-left:18vw;padding-right:18vw;scroll-padding-inline:18vw}
  .gallery-polaroid{flex-basis:64vw;max-width:285px}
  .gallery-story-garden{width:138vw;bottom:-1.5%}
  .gallery-story-butterfly{right:5%;top:29%;width:46px;height:46px}
}
@media(max-width:390px){
  .event-scene{min-height:865px}
  .event-arch{width:116%}.event-curtain{width:70%}
  .event-content{width:61vw;padding-top:320px}
  .event-scene--single .event-content{padding-top:325px}
  .event-garden-bottom{width:145%}
  .gallery-mosaic{grid-auto-rows:minmax(110px,33vw)}
  .gallery-polaroid{flex-basis:68vw}
}
@media(prefers-reduced-motion:reduce){
  .event-layer,.gallery-mosaic-item,.gallery-polaroid,.gallery-frame-ghost,.gallery-story-garden{opacity:1!important;animation:none!important;transform:none!important}
  .event-arch{transform:translateX(-50%)!important}.event-garden-bottom,.gallery-story-garden{transform:translateX(-50%)!important}
}


/* =========================================================
   v4.8 — Mobile refinement: tighter gallery transition,
   richer Our Story, refreshed RSVP experience.
   ========================================================= */

/* smoother event → gallery transition, especially on mobile */
.gallery-mosaic-section{
  position:relative;
  z-index:8;
  margin-top:-34px;
  padding-top:54px;
  border-radius:34px 34px 0 0;
}
.gallery-mosaic-section:before{
  content:"";
  position:absolute;
  left:0;right:0;top:0;
  height:150px;
  z-index:-1;
  background:linear-gradient(180deg,rgba(245,241,232,.88) 0%,rgba(245,241,232,.66) 38%,rgba(245,241,232,0) 100%);
  pointer-events:none;
}
.gallery-mosaic-section .section-heading{position:relative;z-index:7;margin-top:6px}
.gallery-mosaic{margin-top:22px}
.gallery-butterfly{top:20%}

/* richer Our Story */
.story-lush{
  padding-top:88px;
  padding-bottom:118px;
  overflow:hidden;
  background:
    radial-gradient(circle at 50% 18%,rgba(255,255,255,.56),transparent 28%),
    linear-gradient(rgba(245,241,232,.58),rgba(245,241,232,.62)),
    url('assets/bg-watercolor.webp') center/cover;
}
.story-content{width:min(94vw,920px);margin:0 auto;position:relative;z-index:5}
.story-content .section-heading{width:min(88vw,620px);margin:0 auto;text-align:center}
.story-lead{max-width:520px;margin:0 auto;color:#9f6956;font:500 14px/1.7 'Cormorant Garamond',serif}
.story-butterfly{position:absolute;right:10%;top:20%;z-index:6;width:52px;filter:drop-shadow(0 7px 8px rgba(91,42,55,.16))}
.story-frame-ghost{width:min(540px,70vw);top:41%;opacity:0}
.story-leaf{right:-7%;bottom:12%;transform:rotate(16deg)}
.story-chapters{
  position:relative;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:18px;
  margin-top:36px;
}
.story-chapter{
  position:relative;
  overflow:hidden;
  padding:28px 22px 26px;
  border-radius:28px 28px 18px 18px;
  background:rgba(255,250,245,.72);
  border:1px solid rgba(220,163,61,.34);
  box-shadow:0 16px 34px rgba(91,42,55,.08);
  text-align:left;
}
.story-chapter:before{
  content:"";
  position:absolute;
  inset:10px;
  border:1px solid rgba(193,0,107,.08);
  border-radius:22px 22px 12px 12px;
  pointer-events:none;
}
.story-chapter-year{display:inline-block;margin-bottom:12px;padding:5px 12px;border-radius:999px;background:rgba(193,0,107,.08);color:var(--mar);font:600 11px/1 'Plus Jakarta Sans',sans-serif;letter-spacing:.08em}
.story-chapter h4{margin:0 0 10px;color:var(--mar);font:500 24px/1 'Cormorant Garamond',serif}
.story-chapter p{margin:0;color:#915f50;font:500 14px/1.7 'Cormorant Garamond',serif}
.story-chapter:nth-child(2){margin-top:34px}
.story-chapter:nth-child(3){margin-top:12px}

/* refreshed RSVP concept */
.rsvp-lush{
  padding:88px 18px 176px;
  overflow:hidden;
  background:
    radial-gradient(circle at 50% 17%,rgba(255,255,255,.56),transparent 28%),
    linear-gradient(rgba(248,242,230,.34),rgba(248,242,230,.1)),
    url('assets/bg-paper.webp') center/cover;
}
.rsvp-heading{position:relative;z-index:6;text-align:center;width:min(92vw,620px);margin:0 auto 10px}
.rsvp-heading h3{margin-bottom:14px}
.rsvp-intro{max-width:520px;margin:0 auto;color:#a26448;font:500 14px/1.7 'Cormorant Garamond',serif}
.rsvp-stage{position:relative;z-index:6;width:min(92vw,760px);min-height:560px;margin:26px auto 0;display:grid;place-items:center}
.rsvp-stage-frame{position:absolute;left:50%;top:50%;width:min(92vw,610px);transform:translate(-50%,-50%);opacity:0;filter:drop-shadow(0 16px 28px rgba(93,42,50,.08));pointer-events:none}
.rsvp-card{
  position:relative;
  width:min(88vw,430px);
  padding:34px 24px 30px;
  border-radius:28px;
  background:rgba(255,251,245,.8);
  border:1px solid rgba(220,163,61,.32);
  box-shadow:0 18px 38px rgba(91,42,55,.09);
  text-align:center;
}
.rsvp-card:before{content:"";position:absolute;inset:10px;border:1px solid rgba(193,0,107,.08);border-radius:20px;pointer-events:none}
.rsvp-script{margin:0 0 8px;color:var(--mar);font:400 40px/.95 'Allura',cursive}
.rsvp-copy{margin:0 auto 18px;max-width:320px;color:#976450;font:500 14px/1.65 'Cormorant Garamond',serif}
.rsvp-lush .form{margin-top:0;position:relative;z-index:2}
.rsvp-lush .form input,.rsvp-lush .form select{border-color:rgba(193,0,107,.16);background:rgba(255,252,247,.9);box-shadow:0 8px 18px rgba(91,42,55,.04)}
.rsvp-lush .form button{box-shadow:0 12px 25px rgba(143,23,63,.16)}
.rsvp-leaf,.rsvp-garden,.rsvp-butterfly{position:absolute;pointer-events:none;user-select:none}
.rsvp-leaf{z-index:2;width:min(34vw,300px);opacity:0;filter:drop-shadow(0 10px 14px rgba(61,77,45,.08))}
.rsvp-leaf-left{left:-8%;top:24%;transform:rotate(-26deg)}
.rsvp-leaf-right{right:-8%;top:26%;transform:scaleX(-1) rotate(-24deg)}
.rsvp-garden{z-index:3;left:50%;bottom:-1.5%;width:min(980px,118vw);transform:translate(-50%,36px) scale(.98);opacity:0;filter:drop-shadow(0 -8px 16px rgba(62,76,45,.08))}
.rsvp-butterfly{z-index:8;right:10%;top:20%;width:54px;filter:drop-shadow(0 7px 8px rgba(91,42,55,.14))}
.rsvp-garden.motion-rise.is-inview{animation:rsvpGardenIn 1.6s cubic-bezier(.16,.78,.2,1) forwards}
@keyframes rsvpGardenIn{to{opacity:1;transform:translate(-50%,0) scale(1)}}

/* desktop kept similar to mobile: centered canvases, less dramatic spreading */
@media(min-width:681px){
  .gallery-mosaic-section{padding-left:24px;padding-right:24px}
  .gallery-story{padding-left:24px;padding-right:24px}
  .gallery-film{max-width:1100px;margin:0 auto 0}
  .rsvp-stage{max-width:760px}
}

@media(max-width:680px){
  .gallery-mosaic-section{margin-top:-54px;padding-top:40px;padding-bottom:98px;border-radius:28px 28px 0 0}
  .gallery-mosaic-section:before{height:124px}
  .gallery-mosaic-section .section-heading{margin-top:0}
  .gallery-butterfly{right:4%;top:23%;width:44px}

  .story-lush{padding:78px 16px 108px}
  .story-content{width:100%}
  .story-content .section-heading{width:100%}
  .story-lead{font-size:13px;max-width:88vw}
  .story-frame-ghost{width:122vw;top:50%}
  .story-leaf{right:-28%;bottom:8%;width:56vw}
  .story-butterfly{right:6%;top:18%;width:46px}
  .story-chapters{grid-template-columns:1fr;gap:14px;margin-top:28px}
  .story-chapter,.story-chapter:nth-child(2),.story-chapter:nth-child(3){margin-top:0}
  .story-chapter{padding:24px 18px 22px;border-radius:24px 24px 16px 16px}
  .story-chapter h4{font-size:22px}
  .story-chapter p{font-size:13.5px}

  .rsvp-lush{padding:78px 12px 148px}
  .rsvp-heading{margin-bottom:4px}
  .rsvp-intro{font-size:13px;max-width:90vw}
  .rsvp-stage{width:100%;min-height:480px;margin-top:16px}
  .rsvp-stage-frame{width:128vw;max-width:none}
  .rsvp-card{width:min(88vw,380px);padding:28px 18px 24px;border-radius:24px}
  .rsvp-script{font-size:36px}
  .rsvp-copy{font-size:13px;margin-bottom:16px}
  .rsvp-leaf{width:52vw}
  .rsvp-leaf-left{left:-26%;top:28%}
  .rsvp-leaf-right{right:-26%;top:30%}
  .rsvp-garden{width:140vw;bottom:-1%}
  .rsvp-butterfly{right:5%;top:16%;width:44px}
}
@media(max-width:390px){
  .gallery-mosaic-section{margin-top:-48px;padding-top:34px}
  .story-chapter h4{font-size:21px}
  .rsvp-stage-frame{width:136vw}
  .rsvp-card{width:89vw;padding:25px 16px 22px}
  .rsvp-script{font-size:34px}
}


/* =========================================================
   v4.9 — legibility + dual slider + Navy-style story motion
   ========================================================= */
html,body{width:100%;max-width:none;min-width:0}
body,main,#invitation{width:100%;max-width:none;margin:0}
.section{width:100%;max-width:none;margin-inline:0}

/* Our Story: ornament above, content in safe zone below. */
.story-lush{
  display:block;
  min-height:auto;
  padding:0 18px 108px;
  overflow:hidden;
  background:
    radial-gradient(circle at 50% 16%,rgba(255,255,255,.58),transparent 29%),
    linear-gradient(rgba(245,241,232,.54),rgba(245,241,232,.66)),
    url('assets/bg-watercolor.webp') center/cover;
}
.story-ornament-stage{position:relative;width:min(92vw,620px);height:clamp(280px,42vw,390px);margin:0 auto -44px;z-index:2}
.story-frame-ghost{position:absolute;left:50%;top:47%;width:min(500px,78vw);height:auto;transform:translate(-50%,-50%);opacity:0;z-index:1;filter:saturate(.86) drop-shadow(0 14px 24px rgba(96,53,45,.06))}
.story-frame-ghost.motion-fade.is-inview{animation:storyOrnamentFrameIn 1.65s ease forwards}
@keyframes storyOrnamentFrameIn{from{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:.82;transform:translate(-50%,-50%) scale(1)}}
.story-ornament-flower{position:absolute;z-index:2;width:min(42vw,270px);height:auto;opacity:0;filter:drop-shadow(0 10px 16px rgba(91,42,55,.08))}
.story-ornament-flower-left{left:-2%;top:8%;transform-origin:0 100%}
.story-ornament-flower-right{right:-4%;bottom:4%;transform-origin:100% 0}
.story-butterfly{position:absolute;z-index:4;right:12%;top:43%;width:48px;filter:drop-shadow(0 7px 8px rgba(91,42,55,.14))}
.story-content{position:relative;z-index:6;width:min(100%,760px);margin:0 auto}
.story-heading{width:min(92vw,620px);margin:0 auto 34px;text-align:center}
.story-heading h3{margin-top:10px;margin-bottom:14px}
.story-lead{max-width:500px;margin:0 auto;color:#93604e;font:500 14px/1.75 'Cormorant Garamond',serif}
.story-journey{position:relative;width:min(100%,650px);margin:0 auto;padding:6px 0}
.story-journey:before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:linear-gradient(transparent,rgba(220,163,61,.7) 8%,rgba(220,163,61,.7) 92%,transparent);transform:translateX(-50%)}
.story-step{position:relative;width:50%;padding:0 34px 42px;opacity:0}
.story-step-left{margin-right:auto;text-align:right;transform:translateX(-46px)}
.story-step-right{margin-left:auto;text-align:left;transform:translateX(46px)}
.story-step:after{content:"";position:absolute;top:17px;width:13px;height:13px;border-radius:50%;border:1px solid var(--gold);background:#f8efe3;box-shadow:0 0 0 6px rgba(220,163,61,.09)}
.story-step-left:after{right:-6.5px}.story-step-right:after{left:-6.5px}
.story-step-year{display:inline-block;margin-bottom:8px;color:var(--mar);font:600 11px/1 'Plus Jakarta Sans',sans-serif;letter-spacing:.13em}
.story-step-card{position:relative;padding:21px 20px 19px;border:1px solid rgba(220,163,61,.35);border-radius:22px;background:rgba(255,251,246,.78);box-shadow:0 14px 30px rgba(91,42,55,.07)}
.story-step-card:before{content:"";position:absolute;inset:7px;border:1px solid rgba(193,0,107,.07);border-radius:16px;pointer-events:none}
.story-step h4{margin:0 0 8px;color:var(--mar);font:500 23px/1 'Cormorant Garamond',serif}
.story-step p{margin:0;color:#895c50;font:500 13.5px/1.7 'Cormorant Garamond',serif}
.story-step.is-inview{animation:storyStepIn .95s cubic-bezier(.16,.78,.2,1) forwards}
.story-step-right.is-inview{animation-name:storyStepInRight}
@keyframes storyStepIn{to{opacity:1;transform:translateX(0)}}
@keyframes storyStepInRight{to{opacity:1;transform:translateX(0)}}
.story-bottom-leaf{position:absolute;right:-6%;bottom:-4%;z-index:1;width:min(32vw,300px);opacity:0;transform:rotate(16deg)}

/* Gallery 01 now a slider, visually different from the polaroid slider. */
.gallery-mosaic-section{display:block;min-height:auto;margin-top:-76px;padding:74px 0 104px;border-radius:0;overflow:hidden}
.gallery-mosaic-section:before{height:118px}
.gallery-mosaic-section .section-heading{width:min(90vw,620px);margin:0 auto 22px;padding:0 18px}
.gallery-mosaic{
  position:relative;z-index:6;width:100%;max-width:none;margin:0;
  display:flex;grid-template-columns:none;grid-auto-rows:auto;gap:14px;
  overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x mandatory;
  scroll-padding-inline:12vw;padding:8px 12vw 22px;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;
}
.gallery-mosaic::-webkit-scrollbar{display:none}
.gallery-mosaic-item,.gallery-mosaic-item:nth-child(n){
  flex:0 0 clamp(230px,64vw,340px);width:auto;height:auto;aspect-ratio:4/5.25;
  grid-column:auto;grid-row:auto;margin:0!important;scroll-snap-align:center;
  border-radius:48% 48% 24px 24px/18% 18% 24px 24px!important;
  transform:translateY(26px) scale(.97);
}
.gallery-mosaic-item:nth-child(even){aspect-ratio:4/5.05;border-radius:24px 48% 24px 24px!important}
.gallery-mosaic-item:nth-child(3n){aspect-ratio:4/5.4;border-radius:48% 24px 24px 24px!important}
.gallery-swipe-hint-one{margin-top:8px}

/* Gallery 02 captions become short love expressions. */
.gallery-polaroid figcaption{bottom:10px;padding:0 10px;color:#9c5f50;font:500 12px/1.2 'Cormorant Garamond',serif;letter-spacing:.02em;text-transform:none}

/* RSVP: ornament is a separate intro, content stays below it and always readable. */
.rsvp-lush{
  display:block;min-height:auto;padding:0 16px 168px;overflow:hidden;
  background:radial-gradient(circle at 50% 15%,rgba(255,255,255,.58),transparent 28%),linear-gradient(rgba(248,242,230,.34),rgba(248,242,230,.12)),url('assets/bg-paper.webp') center/cover;
}
.rsvp-ornament-stage{position:relative;width:min(92vw,620px);height:clamp(245px,36vw,340px);margin:0 auto -30px;z-index:2}
.rsvp-ornament-frame{position:absolute;left:50%;top:48%;width:min(480px,72vw);height:auto;transform:translate(-50%,-50%);opacity:0;z-index:1;filter:drop-shadow(0 12px 20px rgba(91,42,55,.06))}
.rsvp-ornament-frame.motion-fade.is-inview{animation:rsvpFrameIn 1.55s ease forwards}
@keyframes rsvpFrameIn{from{opacity:0;transform:translate(-50%,-46%) scale(.96)}to{opacity:.8;transform:translate(-50%,-50%) scale(1)}}
.rsvp-ornament-flower{position:absolute;z-index:2;width:min(40vw,245px);height:auto;opacity:0;filter:drop-shadow(0 10px 16px rgba(91,42,55,.08))}
.rsvp-ornament-left{left:-1%;top:11%;transform-origin:0 100%}
.rsvp-ornament-right{right:-1%;top:11%;transform-origin:100% 100%}
.rsvp-heading{position:relative;z-index:7;width:min(92vw,620px);margin:0 auto 24px;text-align:center}
.rsvp-heading h3{margin-top:10px;margin-bottom:14px}
.rsvp-intro{max-width:500px;margin:0 auto;color:#95604d;font:500 14px/1.72 'Cormorant Garamond',serif}
.rsvp-card{position:relative;z-index:8;width:min(90vw,420px);margin:0 auto;padding:34px 24px 30px;border-radius:28px;background:rgba(255,251,245,.94);border:1px solid rgba(220,163,61,.36);box-shadow:0 18px 38px rgba(91,42,55,.09)}
.rsvp-card:before{content:"";position:absolute;inset:9px;border:1px solid rgba(193,0,107,.08);border-radius:20px;pointer-events:none}
.rsvp-script{position:relative;z-index:2;margin:0 0 8px;color:var(--mar);font:400 39px/.95 'Allura',cursive}
.rsvp-copy{position:relative;z-index:2;margin:0 auto 18px;max-width:320px;color:#976450;font:500 14px/1.65 'Cormorant Garamond',serif}
.rsvp-lush .form{position:relative;z-index:2;margin-top:0}
.rsvp-leaf{position:absolute;z-index:2;width:min(32vw,280px);opacity:0;pointer-events:none}
.rsvp-leaf-left{left:-7%;top:48%;transform:rotate(-25deg)}
.rsvp-leaf-right{right:-7%;top:50%;transform:scaleX(-1) rotate(-24deg)}
.rsvp-garden{z-index:3;left:50%;bottom:-1%;width:min(980px,116vw);transform:translate(-50%,36px) scale(.98);opacity:0}
.rsvp-butterfly{z-index:9;right:10%;top:35%;width:48px}

/* Mobile: true edge-to-edge section canvas, no side or inter-section gap. */
@media(max-width:680px){
  html,body,main,#invitation{width:100%;max-width:100%;margin:0;padding:0;overflow-x:hidden}
  .section{width:100%;max-width:none;margin:0;border-radius:0}
  .event-engine{padding-bottom:0}
  .event-scene{min-height:810px}
  .event-garden-bottom{bottom:-1%;width:146%}
  .gallery-mosaic-section{margin-top:-102px;padding-top:60px;padding-bottom:94px}
  .gallery-mosaic-section:before{height:138px}
  .gallery-mosaic{gap:12px;padding-left:14vw;padding-right:14vw;scroll-padding-inline:14vw}
  .gallery-mosaic-item,.gallery-mosaic-item:nth-child(n){flex-basis:72vw;max-width:300px}

  .story-lush{padding:0 14px 96px}
  .story-ornament-stage{width:100%;height:280px;margin-bottom:-30px}
  .story-frame-ghost{width:118vw;max-width:none;top:48%;opacity:0}
  .story-ornament-flower{width:58vw;max-width:250px}
  .story-ornament-flower-left{left:-23%;top:6%}.story-ornament-flower-right{right:-24%;bottom:1%}
  .story-butterfly{right:5%;top:42%;width:43px}
  .story-heading{width:100%;margin-bottom:26px}
  .story-heading h3{font-size:44px;line-height:.98}
  .story-lead{font-size:13px;max-width:90vw}
  .story-journey{width:100%;max-width:430px;padding-left:0}
  .story-journey:before{left:18px;transform:none}
  .story-step,.story-step-left,.story-step-right{width:100%;margin:0;padding:0 0 24px 52px;text-align:left;transform:translateX(38px)}
  .story-step-left{transform:translateX(-38px)}
  .story-step:after,.story-step-left:after,.story-step-right:after{left:11.5px;right:auto;top:16px}
  .story-step-card{padding:19px 17px 18px}
  .story-step h4{font-size:22px}.story-step p{font-size:13px}
  .story-bottom-leaf{right:-25%;bottom:-2%;width:60vw}

  .rsvp-lush{padding:0 12px 142px}
  .rsvp-ornament-stage{width:100%;height:255px;margin-bottom:-18px}
  .rsvp-ornament-frame{width:116vw;max-width:none;top:49%}
  .rsvp-ornament-flower{width:56vw;max-width:240px}
  .rsvp-ornament-left{left:-23%;top:8%}.rsvp-ornament-right{right:-23%;top:8%}
  .rsvp-heading{width:100%;margin-bottom:20px}
  .rsvp-heading h3{font-size:44px;line-height:.98}
  .rsvp-intro{font-size:13px;max-width:90vw}
  .rsvp-card{width:min(91vw,380px);padding:28px 18px 24px}
  .rsvp-script{font-size:36px}.rsvp-copy{font-size:13px}
  .rsvp-leaf{width:52vw}.rsvp-leaf-left{left:-28%;top:55%}.rsvp-leaf-right{right:-28%;top:57%}
  .rsvp-garden{width:142vw;bottom:-1%}
  .rsvp-butterfly{right:5%;top:38%;width:43px}
}
@media(max-width:390px){
  .event-scene{min-height:785px}
  .gallery-mosaic-section{margin-top:-96px}
  .gallery-mosaic-item,.gallery-mosaic-item:nth-child(n){flex-basis:75vw}
  .story-heading h3,.rsvp-heading h3{font-size:41px}
  .story-ornament-stage{height:265px}.rsvp-ornament-stage{height:245px}
}
@media(prefers-reduced-motion:reduce){
  .story-step{opacity:1!important;transform:none!important;animation:none!important}
}


/* =========================================================
   v4.10 — calmer heading frames + clean botanical slider
   ========================================================= */

/* Gallery 01: keep horizontal slider, replace irregular arches with a clean photo frame. */
.gallery-mosaic{
  gap:16px;
  padding-top:10px;
  padding-bottom:24px;
}
.gallery-mosaic-item,.gallery-mosaic-item:nth-child(n){
  flex:0 0 clamp(228px,62vw,330px);
  aspect-ratio:4/5.15;
  border-radius:20px!important;
  border:1px solid rgba(220,163,61,.42);
  background:rgba(255,250,244,.76);
  box-shadow:0 16px 32px rgba(91,42,55,.08);
  padding:7px;
  overflow:hidden;
}
.gallery-mosaic-item:before{
  content:"";
  position:absolute;
  inset:7px;
  z-index:3;
  border:1px solid rgba(255,255,255,.62);
  border-radius:14px;
  pointer-events:none;
}
.gallery-mosaic-item .gallery-photo-placeholder{
  inset:7px;
  border-radius:14px;
}
.gallery-mosaic-item .gallery-photo-placeholder:after{display:none}

/* Our Story heading: frame is only a quiet centered background. */
.story-lush{padding-top:54px}
.story-heading-stage{
  position:relative;
  z-index:6;
  width:min(94vw,680px);
  min-height:clamp(330px,46vw,410px);
  margin:0 auto 18px;
  display:grid;
  place-items:center;
}
.story-heading-stage .story-frame-ghost{
  left:50%;top:50%;
  width:min(560px,84vw);
  max-height:100%;
  object-fit:contain;
  z-index:0;
  filter:saturate(.8);
}
.story-heading-stage .story-frame-ghost.motion-fade.is-inview{
  animation:storyFrameBackgroundIn 1.6s ease forwards;
}
@keyframes storyFrameBackgroundIn{
  from{opacity:0;transform:translate(-50%,-48%) scale(.98)}
  to{opacity:.18;transform:translate(-50%,-50%) scale(1)}
}
.story-heading{
  position:relative;
  z-index:3;
  width:min(86%,540px);
  margin:0 auto;
  padding:46px 26px 38px;
  text-align:center;
}
.story-heading h3{font-size:clamp(42px,7vw,68px);line-height:.96;margin:10px 0 14px}
.story-lead{max-width:430px}
.story-butterfly{right:8%;top:62%;z-index:5}
.story-content{margin-top:0}

/* RSVP heading follows the same calm frame treatment. */
.rsvp-lush{padding-top:48px}
.rsvp-heading-stage{
  position:relative;
  z-index:7;
  width:min(94vw,680px);
  min-height:clamp(310px,43vw,385px);
  margin:0 auto 18px;
  display:grid;
  place-items:center;
}
.rsvp-heading-stage .rsvp-ornament-frame{
  left:50%;top:50%;
  width:min(545px,82vw);
  max-height:100%;
  object-fit:contain;
  z-index:0;
  filter:saturate(.8);
}
.rsvp-heading-stage .rsvp-ornament-frame.motion-fade.is-inview{
  animation:rsvpFrameBackgroundIn 1.55s ease forwards;
}
@keyframes rsvpFrameBackgroundIn{
  from{opacity:0;transform:translate(-50%,-48%) scale(.98)}
  to{opacity:.18;transform:translate(-50%,-50%) scale(1)}
}
.rsvp-heading{
  position:relative;
  z-index:3;
  width:min(86%,540px);
  margin:0 auto;
  padding:42px 24px 34px;
  text-align:center;
}
.rsvp-heading h3{font-size:clamp(42px,7vw,66px);line-height:.96;margin:10px 0 14px}
.rsvp-intro{max-width:430px}
.rsvp-card{margin-top:0}

@media(max-width:680px){
  .gallery-mosaic{padding-left:14vw;padding-right:14vw;scroll-padding-inline:14vw}
  .gallery-mosaic-item,.gallery-mosaic-item:nth-child(n){flex-basis:70vw;max-width:292px;border-radius:18px!important;padding:6px}
  .gallery-mosaic-item:before{inset:6px;border-radius:13px}
  .gallery-mosaic-item .gallery-photo-placeholder{inset:6px;border-radius:13px}

  .story-lush{padding-top:28px}
  .story-heading-stage{width:100%;min-height:330px;margin-bottom:2px}
  .story-heading-stage .story-frame-ghost{width:108vw;max-width:none}
  .story-heading{width:86%;padding:50px 10px 40px}
  .story-heading h3{font-size:44px;line-height:.97}
  .story-lead{max-width:86vw;font-size:13px;line-height:1.65}
  .story-butterfly{right:5%;top:70%;width:42px}

  .rsvp-lush{padding-top:28px}
  .rsvp-heading-stage{width:100%;min-height:315px;margin-bottom:4px}
  .rsvp-heading-stage .rsvp-ornament-frame{width:108vw;max-width:none}
  .rsvp-heading{width:86%;padding:46px 10px 36px}
  .rsvp-heading h3{font-size:44px;line-height:.97}
  .rsvp-intro{max-width:86vw;font-size:13px;line-height:1.65}
}
@media(max-width:390px){
  .gallery-mosaic-item,.gallery-mosaic-item:nth-child(n){flex-basis:73vw}
  .story-heading-stage{min-height:312px}
  .rsvp-heading-stage{min-height:300px}
  .story-heading h3,.rsvp-heading h3{font-size:41px}
}


/* =========================================================
   v4.11 — Final closing garden + supplied monogram
   ========================================================= */

/* Supplied monogram is now the visual source of truth. */
.welcome-monogram{
  display:block;
  width:min(154px,38vw);
  height:auto;
  margin:0 auto 4px;
  opacity:.9;
  object-fit:contain;
  filter:drop-shadow(0 5px 9px rgba(105,67,35,.07));
}
.hero-monogram-image{
  display:block;
  width:min(150px,34vw);
  height:auto;
  margin:0 auto 2px;
  object-fit:contain;
  filter:drop-shadow(0 6px 10px rgba(105,67,35,.07));
}

/* Closing becomes a two-beat ending: thank-you, then final garden tableau. */
.closing-lush{
  display:block;
  min-height:auto;
  padding:0;
  overflow:hidden;
  isolation:isolate;
  background:url('assets/bg-paper.webp') center/cover;
}
.closing-thankyou{
  position:relative;
  z-index:8;
  width:100%;
  min-height:clamp(410px,58vw,560px);
  display:grid;
  place-items:center;
  padding:78px 22px 64px;
  overflow:hidden;
  background:
    radial-gradient(circle at 50% 46%,rgba(255,255,255,.54),transparent 31%),
    linear-gradient(rgba(248,243,233,.1),rgba(248,243,233,.18));
}
.closing-thank-copy{
  position:relative;
  z-index:8;
  width:min(82vw,540px);
  margin:0 auto;
  text-align:center;
}
.closing-thank-script{
  margin:0 0 14px;
  color:var(--mar);
  font:400 clamp(46px,8vw,66px)/.95 'Allura',cursive;
}
.closing-thank-copy>p:last-child{
  margin:0 auto;
  color:#98614f;
  font:500 15px/1.7 'Cormorant Garamond',serif;
}
.closing-thank-foliage,.closing-thank-bloom{
  position:absolute;
  pointer-events:none;
  user-select:none;
  height:auto;
}
.closing-thank-foliage{z-index:2;top:2%;width:min(31vw,285px);opacity:0}
.closing-thank-bloom{z-index:3;top:4%;width:min(31vw,290px);opacity:0}
.closing-thank-left,.closing-thank-bloom-left{left:-5%;transform-origin:0 50%}
.closing-thank-right,.closing-thank-bloom-right{right:-5%;transform-origin:100% 50%}

.closing-final-scene{
  position:relative;
  z-index:5;
  width:min(100%,760px);
  min-height:clamp(780px,126vw,1080px);
  margin:0 auto;
  overflow:hidden;
  isolation:isolate;
  background:
    linear-gradient(180deg,rgba(249,245,236,.03) 0%,rgba(249,245,236,.1) 52%,rgba(245,241,232,.28) 100%),
    url('assets/bg-watercolor.webp') center/cover;
}
.closing-final-scene:before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:radial-gradient(circle at 50% 27%,rgba(255,255,255,.58),transparent 30%);
  pointer-events:none;
}
.closing-tree,.closing-house,.closing-final-garden,.closing-flower,.closing-butterfly{
  position:absolute;
  pointer-events:none;
  user-select:none;
  height:auto;
}
.closing-tree{
  z-index:2;
  top:-2%;
  width:min(52%,410px);
  opacity:0;
  filter:drop-shadow(0 12px 20px rgba(54,70,42,.08));
}
.closing-tree-left{left:-7%;transform-origin:0 0}
.closing-tree-right{right:-7%;transform-origin:100% 0}
.closing-final-copy{
  position:relative;
  z-index:8;
  width:min(70%,480px);
  margin:0 auto;
  padding-top:74px;
  text-align:center;
}
.closing-monogram{
  display:block;
  width:min(170px,38vw);
  height:auto;
  margin:0 auto 2px;
  object-fit:contain;
  filter:drop-shadow(0 7px 10px rgba(99,63,34,.08));
}
.closing-final-copy .eyebrow{display:block;margin-top:-2px;font-size:11px;letter-spacing:.14em;color:#a8654d}
.closing-final-copy h2{
  margin:18px 0 8px;
  color:var(--mar);
  font:400 clamp(56px,9vw,86px)/.78 'Allura',cursive;
}
.closing-final-copy h2 span{display:block;margin:10px 0;font:400 .36em 'Cormorant Garamond',serif}
.closing-hashtag{margin:14px 0 0;color:#a1614c;font:500 12px/1.4 'Cormorant Garamond',serif;letter-spacing:.06em}
.closing-house{
  z-index:5;
  left:50%;
  bottom:18%;
  width:min(66%,510px);
  opacity:0;
  transform:translate(-50%,34px) scale(.96);
  filter:drop-shadow(0 18px 24px rgba(71,49,33,.12));
}
.closing-house.motion-rise.is-inview{animation:closingHouseIn 1.55s cubic-bezier(.16,.78,.2,1) forwards}
@keyframes closingHouseIn{to{opacity:1;transform:translate(-50%,0) scale(1)}}
.closing-final-garden{
  z-index:7;
  left:50%;
  bottom:-2%;
  width:min(128%,930px);
  opacity:0;
  transform:translate(-50%,42px) scale(.98);
  filter:drop-shadow(0 -8px 14px rgba(54,73,43,.08));
}
.closing-final-garden.motion-rise.is-inview{animation:closingFinalGardenIn 1.7s cubic-bezier(.16,.78,.2,1) forwards}
@keyframes closingFinalGardenIn{to{opacity:1;transform:translate(-50%,0) scale(1)}}
.closing-flower{
  z-index:6;
  bottom:3%;
  width:min(31%,245px);
  opacity:0;
  filter:drop-shadow(0 10px 15px rgba(91,42,55,.08));
}
.closing-flower-left{left:-3%;transform-origin:0 100%}
.closing-flower-right{right:-3%;transform-origin:100% 100%}
.closing-butterfly{z-index:10;right:12%;top:32%;width:50px;filter:drop-shadow(0 7px 8px rgba(91,42,55,.14))}
.closing-credit{
  position:absolute;
  z-index:20;
  left:50%;
  bottom:14px;
  transform:translateX(-50%);
  color:#754d4c;
  font-size:10px;
  letter-spacing:.08em;
  white-space:nowrap;
}

@media(max-width:680px){
  .welcome-monogram{width:34vw;max-width:138px;margin-bottom:2px}
  .hero-monogram-image{width:31vw;max-width:132px}

  .closing-thankyou{min-height:385px;padding:64px 18px 54px}
  .closing-thank-copy{width:76vw}
  .closing-thank-script{font-size:48px}
  .closing-thank-copy>p:last-child{font-size:13.5px;line-height:1.65}
  .closing-thank-foliage{top:0;width:51vw}
  .closing-thank-bloom{top:2%;width:52vw}
  .closing-thank-left,.closing-thank-bloom-left{left:-29%}
  .closing-thank-right,.closing-thank-bloom-right{right:-29%}

  .closing-final-scene{
    width:100%;
    min-height:900px;
    margin:0;
  }
  .closing-tree{top:-1%;width:72vw;max-width:none}
  .closing-tree-left{left:-29%}.closing-tree-right{right:-29%}
  .closing-final-copy{width:68%;padding-top:72px}
  .closing-monogram{width:36vw;max-width:145px}
  .closing-final-copy .eyebrow{font-size:10px}
  .closing-final-copy h2{font-size:58px;margin-top:15px}
  .closing-hashtag{font-size:11px;margin-top:10px}
  .closing-house{bottom:19%;width:86vw;max-width:430px}
  .closing-final-garden{bottom:-1%;width:148vw;max-width:none}
  .closing-flower{bottom:2%;width:49vw;max-width:220px}
  .closing-flower-left{left:-20%}.closing-flower-right{right:-20%}
  .closing-butterfly{right:7%;top:29%;width:45px}
  .closing-credit{bottom:11px}
}
@media(max-width:390px){
  .closing-thankyou{min-height:360px}
  .closing-thank-copy{width:78vw}
  .closing-thank-script{font-size:45px}
  .closing-final-scene{min-height:850px}
  .closing-tree{width:76vw}
  .closing-tree-left{left:-33%}.closing-tree-right{right:-33%}
  .closing-final-copy{width:70%;padding-top:62px}
  .closing-final-copy h2{font-size:54px}
  .closing-house{width:90vw;bottom:19%}
  .closing-final-garden{width:154vw}
}
@media(prefers-reduced-motion:reduce){
  .closing-tree,.closing-house,.closing-final-garden,.closing-flower,.closing-thank-foliage,.closing-thank-bloom{opacity:1!important;animation:none!important}
  .closing-house,.closing-final-garden{transform:translateX(-50%)!important}
}


/* =========================================================
   v4.12 — Story vine enrichment + music player
   ========================================================= */

.story-lush{padding-bottom:128px;overflow:hidden}
.story-ornaments{position:absolute;inset:280px 0 80px;pointer-events:none;z-index:2}
.story-vine,.story-bloom-accent{position:absolute;pointer-events:none;user-select:none}
.story-vine{width:min(25vw,220px);opacity:0;filter:drop-shadow(0 10px 14px rgba(86,51,56,.08))}
.story-vine-left{left:6%;top:8%;transform-origin:0 0}
.story-vine-right{right:6%;top:24%;transform-origin:100% 0}
.story-bloom-accent{width:min(18vw,140px);opacity:0;filter:drop-shadow(0 10px 12px rgba(91,42,55,.08))}
.story-bloom-accent-top{left:24%;top:18%}
.story-bloom-accent-mid{right:20%;top:46%}
.story-bloom-accent-bottom{left:26%;top:74%}
.story-content{position:relative;z-index:4}
.story-journey{position:relative;width:min(100%,700px);margin:0 auto;padding:6px 0}
.story-journey:before{left:50%;background:linear-gradient(transparent,rgba(220,163,61,.58) 8%,rgba(220,163,61,.58) 92%,transparent)}
.story-step-card{background:rgba(255,251,246,.84);box-shadow:0 16px 34px rgba(91,42,55,.08)}
.story-step-year{margin-bottom:10px}
.story-step-card h4{position:relative;z-index:2}
.story-step-card p{position:relative;z-index:2}
.story-step-card:after{content:"";position:absolute;left:18px;right:18px;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(220,163,61,.55),transparent);opacity:.8}
.story-step-left .story-step-card:before,.story-step-right .story-step-card:before{content:"";position:absolute;top:22px;width:22px;height:1px;background:linear-gradient(90deg,rgba(220,163,61,.55),transparent)}
.story-step-left .story-step-card:before{right:-22px}
.story-step-right .story-step-card:before{left:-22px;transform:scaleX(-1)}

/* Music player */
.music-player{position:fixed;left:14px;bottom:14px;z-index:120;display:block}
.music-toggle{position:relative;width:74px;height:74px;padding:0;border:0;background:transparent;cursor:pointer;border-radius:50%;display:grid;place-items:center;transition:transform .28s ease,filter .28s ease}
.music-toggle:hover{transform:translateY(-2px)}
.music-toggle:focus-visible{outline:2px solid rgba(143,23,63,.35);outline-offset:3px}
.music-floral-frame,.music-vinyl{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}
.music-floral-frame{filter:drop-shadow(0 8px 16px rgba(91,42,55,.15))}
.music-vinyl{inset:11px;width:52px;height:52px;margin:auto;filter:drop-shadow(0 6px 10px rgba(40,28,28,.18));animation:vinylSpin 4.6s linear infinite;animation-play-state:paused}
.music-player.is-playing .music-vinyl{animation-play-state:running}
.music-status-icon{position:absolute;z-index:3;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:rgba(255,248,238,.88);color:var(--mar);box-shadow:0 5px 12px rgba(91,42,55,.12);transition:opacity .22s ease,transform .22s ease}
.music-status-icon svg{width:12px;height:12px;display:block}
.music-icon-play{opacity:1;transform:scale(1)}
.music-icon-pause{opacity:0;transform:scale(.8)}
.music-player.is-playing .music-icon-play{opacity:0;transform:scale(.8)}
.music-player.is-playing .music-icon-pause{opacity:1;transform:scale(1)}
@keyframes vinylSpin{to{transform:rotate(360deg)}}

@media(max-width:680px){
  .story-ornaments{inset:252px 0 70px}
  .story-vine{width:34vw}
  .story-vine-left{left:-6%;top:8%}
  .story-vine-right{right:-8%;top:32%}
  .story-bloom-accent{width:24vw}
  .story-bloom-accent-top{left:10%;top:15%}
  .story-bloom-accent-mid{right:8%;top:48%}
  .story-bloom-accent-bottom{left:8%;top:80%}
  .story-journey{max-width:430px;padding-left:0}
  .story-step-card:after{left:14px;right:14px}
  .story-step-left .story-step-card:before,.story-step-right .story-step-card:before{display:none}

  .music-player{left:10px;bottom:10px}
  .music-toggle{width:66px;height:66px}
  .music-vinyl{inset:10px;width:46px;height:46px}
}
@media(max-width:390px){
  .story-ornaments{inset:240px 0 64px}
  .story-vine{width:37vw}
  .story-bloom-accent{width:26vw}
  .music-toggle{width:62px;height:62px}
  .music-vinyl{width:43px;height:43px}
}
@media(prefers-reduced-motion:reduce){
  .music-vinyl{animation:none!important}
}


/* =========================================================
   v4.13 — richer story/closing edges + reveal/autoplay music
   ========================================================= */

/* Our Story: richer side framing using existing floral assets. */
.story-edge-floral{
  position:absolute;z-index:1;pointer-events:none;user-select:none;
  width:min(28vw,250px);opacity:0;
  filter:drop-shadow(0 12px 18px rgba(91,42,55,.08));
}
.story-edge-floral-l1{left:-5%;top:28%;transform-origin:0 50%}
.story-edge-floral-r1{right:-5%;top:36%;transform-origin:100% 50%}
.story-edge-floral-l2{left:-8%;top:64%;transform-origin:0 50%}
.story-edge-floral-r2{right:-8%;top:72%;transform-origin:100% 50%}
.story-vine{z-index:2}
.story-bloom-accent{z-index:3}
.story-content{z-index:5}

/* Closing: fill the middle side-space without covering the central copy. */
.closing-side-foliage,.closing-side-bloom{
  position:absolute;pointer-events:none;user-select:none;height:auto;opacity:0;
}
.closing-side-foliage{
  z-index:3;top:29%;width:min(38%,290px);
  filter:drop-shadow(0 12px 17px rgba(55,77,45,.08));
}
.closing-side-bloom{
  z-index:4;top:34%;width:min(34%,260px);
  filter:drop-shadow(0 13px 18px rgba(91,42,55,.09));
}
.closing-side-foliage-left{left:-11%;transform-origin:0 70%}
.closing-side-foliage-right{right:-11%;transform-origin:100% 70%}
.closing-side-bloom-left{left:-10%;transform-origin:0 70%}
.closing-side-bloom-right{right:-10%;transform-origin:100% 70%}
.closing-final-copy{z-index:9}
.closing-house{z-index:6}
.closing-final-garden{z-index:8}
.closing-flower{z-index:7}

/* Player stays hidden on the welcome screen and appears after opening. */
.music-player{
  opacity:0;visibility:hidden;pointer-events:none;
  transform:translateY(14px) scale(.86);
  transition:opacity .55s ease,transform .55s cubic-bezier(.16,.78,.2,1),visibility .55s;
}
.music-player.is-visible{
  opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0) scale(1);
}

@media(max-width:680px){
  .story-edge-floral{width:52vw;max-width:240px}
  .story-edge-floral-l1{left:-28%;top:27%}
  .story-edge-floral-r1{right:-28%;top:37%}
  .story-edge-floral-l2{left:-32%;top:63%}
  .story-edge-floral-r2{right:-32%;top:73%}

  .closing-side-foliage{top:32%;width:58vw;max-width:none}
  .closing-side-bloom{top:37%;width:53vw;max-width:none}
  .closing-side-foliage-left{left:-31%}
  .closing-side-foliage-right{right:-31%}
  .closing-side-bloom-left{left:-30%}
  .closing-side-bloom-right{right:-30%}
}
@media(max-width:390px){
  .story-edge-floral{width:56vw}
  .closing-side-foliage{width:62vw}
  .closing-side-bloom{width:57vw}
}
@media(prefers-reduced-motion:reduce){
  .story-edge-floral,.closing-side-foliage,.closing-side-bloom{opacity:1!important;animation:none!important}
  .music-player{transition:none}
}


/* =========================================================
   v4.14 — new universal blooms + event/closing refinement
   ========================================================= */

/* universal section blooms used sparingly for a richer premium feel */
.section-bloom{
  position:absolute;pointer-events:none;user-select:none;z-index:3;
  width:min(23vw,210px);height:auto;opacity:0;
  filter:drop-shadow(0 12px 18px rgba(91,42,55,.10));
}

/* Story refinement */
.section-bloom-story-left{left:-3%;top:17%;transform-origin:0 50%}
.section-bloom-story-right{right:-4%;top:58%;transform-origin:100% 50%}
.story-edge-floral{z-index:2}
.story-heading-stage{z-index:7}
.story-ornaments{z-index:4}
.story-content{z-index:6}
.story-bottom-leaf{z-index:2}
.story-vine-left{left:4%;top:10%}
.story-vine-right{right:4%;top:26%}
.story-bloom-accent-top{left:20%;top:18%}
.story-bloom-accent-mid{right:16%;top:50%}
.story-bloom-accent-bottom{left:21%;top:77%}

/* Event refinement to better match arch set and reveal the fountain fully */
.event-section-heading{margin-bottom:8px}
.event-scene{width:min(100%,780px);min-height:clamp(820px,120vw,1060px)}
.event-arch{top:.8%;width:min(95%,720px);filter:drop-shadow(0 18px 20px rgba(92,58,33,.14))}
.event-curtain{top:2.8%;width:min(48.5%,374px)}
.event-curtain-left{left:3%}
.event-curtain-right{right:3%}
.event-foliage{top:4.8%;width:min(45%,350px)}
.event-foliage-left{left:-2%}
.event-foliage-right{right:-2%}
.event-bloom{top:5.2%;width:min(45%,345px)}
.event-bloom-left{left:-5%}
.event-bloom-right{right:-5%}
.event-content{width:min(56%,420px);padding-top:clamp(300px,45vw,372px)}
.event-scene--single .event-content{padding-top:clamp(308px,46vw,382px)}
.event-garden-bottom{bottom:2.3%;width:min(124%,920px);filter:drop-shadow(0 -8px 14px rgba(54,73,43,.1))}

/* Closing refinement with larger pendopo + center foliage bridge */
.section-bloom-closing-left{left:-1%;top:32%;transform-origin:0 70%}
.section-bloom-closing-right{right:-1%;top:31%;transform-origin:100% 70%}
.closing-mid-foliage{
  position:absolute;left:50%;top:32%;z-index:5;
  width:min(42%,360px);height:auto;opacity:0;
  transform:translate(-50%,20px) scale(.96);
  filter:drop-shadow(0 12px 18px rgba(61,77,45,.09));
  pointer-events:none;user-select:none;
}
.closing-mid-foliage.motion-grow.is-inview{animation:closingMidFoliageIn 1.35s cubic-bezier(.16,.78,.2,1) forwards}
@keyframes closingMidFoliageIn{to{opacity:1;transform:translate(-50%,0) scale(1)}}
.closing-final-copy{padding-top:84px}
.closing-house{bottom:16.5%;width:min(64vw,520px)}
.closing-final-garden{bottom:-1.2%;width:min(120%,920px)}

@media(max-width:680px){
  .section-bloom{width:46vw;max-width:none}
  .section-bloom-story-left{left:-22%;top:19%}
  .section-bloom-story-right{right:-24%;top:60%}
  .story-vine-left{left:-7%;top:12%}
  .story-vine-right{right:-10%;top:31%}
  .story-bloom-accent-top{left:8%;top:17%}
  .story-bloom-accent-mid{right:8%;top:50%}
  .story-bloom-accent-bottom{left:10%;top:80%}

  .event-section-heading{padding:0 20px}
  .event-scene{min-height:890px}
  .event-arch{top:1%;width:118%}
  .event-curtain{top:2.4%;width:68%}
  .event-curtain-left{left:-13%}
  .event-curtain-right{right:-13%}
  .event-foliage{top:6%;width:62%}
  .event-foliage-left{left:-23%}
  .event-foliage-right{right:-23%}
  .event-bloom{top:6.5%;width:63%}
  .event-bloom-left{left:-25%}
  .event-bloom-right{right:-25%}
  .event-content{width:min(60vw,280px);padding-top:338px}
  .event-scene--single .event-content{padding-top:344px}
  .event-garden-bottom{width:146%;bottom:2%}

  .section-bloom-closing-left{left:-16%;top:36%}
  .section-bloom-closing-right{right:-18%;top:35%}
  .closing-mid-foliage{width:78vw;top:37%}
  .closing-final-copy{padding-top:72px}
  .closing-house{bottom:14.5%;width:98vw;max-width:500px}
  .closing-final-garden{bottom:-1.6%;width:154vw}
}
@media(max-width:390px){
  .section-bloom{width:50vw}
  .event-scene{min-height:875px}
  .event-arch{width:121%}
  .event-curtain{width:71%}
  .event-garden-bottom{width:150%}
  .closing-mid-foliage{width:82vw}
  .closing-house{width:102vw}
}
@media(prefers-reduced-motion:reduce){
  .section-bloom,.closing-mid-foliage{opacity:1!important;animation:none!important}
  .closing-mid-foliage{transform:translateX(-50%)!important}
}


/* =========================================================
   v4.15 — richer transitions, IG buttons, footer watermark
   ========================================================= */

/* Bride & Groom Instagram buttons */
.couple-instagram{
  display:inline-flex;align-items:center;gap:8px;
  margin-top:14px;padding:10px 16px;border-radius:999px;
  background:rgba(143,23,63,.94);color:#fff8f0;text-decoration:none;
  font:600 12px/1 'Plus Jakarta Sans',sans-serif;letter-spacing:.01em;
  box-shadow:0 12px 24px rgba(143,23,63,.16);
  transition:transform .28s ease, box-shadow .28s ease, background .28s ease;
}
.couple-instagram svg{width:14px;height:14px;display:block;flex:0 0 14px}
.couple-instagram:hover{transform:translateY(-2px);background:#8b1a42;box-shadow:0 16px 28px rgba(143,23,63,.22)}

/* Countdown to Story transition */
.countdown-section{overflow:hidden}
.countdown-bridge-bloom{
  position:absolute;bottom:-10px;pointer-events:none;user-select:none;z-index:4;
  width:min(24vw,220px);opacity:0;
  filter:drop-shadow(0 14px 18px rgba(91,42,55,.1));
}
.countdown-bridge-left{left:-2%;transform-origin:0 100%}
.countdown-bridge-right{right:-2%;transform-origin:100% 100%}
.story-lush{margin-top:-34px;padding-top:62px}
.story-heading-stage{margin-top:10px}

/* Event scene: lift info upward and reveal more fountain */
.event-content{padding-top:clamp(276px,42vw,342px)}
.event-scene--single .event-content{padding-top:clamp(286px,43vw,352px)}
.event-venue{margin-bottom:12px}
.event-garden-bottom{bottom:-.6%;width:min(118%,880px)}
@media(max-width:680px){
  .event-content{padding-top:314px}
  .event-scene--single .event-content{padding-top:320px}
  .event-garden-bottom{bottom:-.5%;width:140%}
}
@media(max-width:390px){
  .event-content{padding-top:306px}
  .event-scene--single .event-content{padding-top:312px}
}

/* First gallery gets a stronger top-left floral accent */
.gallery-top-bloom{
  position:absolute;left:-3%;top:5%;z-index:6;width:min(24vw,210px);height:auto;opacity:0;
  filter:drop-shadow(0 12px 18px rgba(91,42,55,.1));pointer-events:none;user-select:none;
}
.gallery-mosaic-section .section-heading{position:relative;z-index:8}

/* RSVP gets left-right blooms */
.rsvp-lush{overflow:hidden}
.rsvp-side-bloom{
  position:absolute;z-index:4;width:min(22vw,200px);height:auto;opacity:0;
  filter:drop-shadow(0 12px 18px rgba(91,42,55,.1));pointer-events:none;user-select:none;
}
.rsvp-side-bloom-left{left:-3%;top:18%;transform-origin:0 50%}
.rsvp-side-bloom-right{right:-3%;top:20%;transform-origin:100% 50%}
.rsvp-heading-stage{z-index:7}
.rsvp-card{position:relative;z-index:7}

/* Footer-like watermark under closing */
.site-watermark{
  position:relative;padding:28px 18px 36px;margin-top:-1px;overflow:hidden;
  background:linear-gradient(rgba(247,241,232,.96),rgba(247,241,232,.98)),url('assets/bg-paper.webp') center/cover;
  text-align:center;border-top:1px solid rgba(220,163,61,.18);
}
.site-watermark-left,.site-watermark-right{
  position:absolute;bottom:-8px;width:min(22vw,180px);height:auto;pointer-events:none;user-select:none;opacity:.92;
}
.site-watermark-left{left:-1%}
.site-watermark-right{right:-1%}
.site-watermark-copy{position:relative;z-index:2;display:grid;gap:4px;color:#8f5662}
.site-watermark-copy span{font:500 11px/1.2 'Plus Jakarta Sans',sans-serif;letter-spacing:.18em;text-transform:uppercase;color:#b28265}
.site-watermark-copy strong{font:500 24px/1 'Cormorant Garamond',serif;color:var(--mar)}
.site-watermark-copy small{font:500 12px/1.55 'Cormorant Garamond',serif;color:#9e6a58}

@media(max-width:680px){
  .couple-instagram{padding:9px 14px;font-size:11.5px}
  .countdown-bridge-bloom{width:44vw;bottom:-2px}
  .countdown-bridge-left{left:-16%}
  .countdown-bridge-right{right:-16%}
  .story-lush{margin-top:-54px;padding-top:78px}
  .gallery-top-bloom{left:-18%;top:6%;width:46vw}
  .rsvp-side-bloom{width:40vw}
  .rsvp-side-bloom-left{left:-18%;top:18%}
  .rsvp-side-bloom-right{right:-18%;top:20%}
  .site-watermark{padding:24px 14px 28px}
  .site-watermark-left,.site-watermark-right{width:38vw;bottom:-6px}
  .site-watermark-left{left:-8%}
  .site-watermark-right{right:-8%}
}
@media(max-width:390px){
  .countdown-bridge-bloom{width:48vw}
  .gallery-top-bloom{width:50vw}
  .rsvp-side-bloom{width:44vw}
}
@media(prefers-reduced-motion:reduce){
  .countdown-bridge-bloom,.gallery-top-bloom,.rsvp-side-bloom{opacity:1!important;animation:none!important}
}


/* =========================================================
   v4.16 — longer floral bridges, richer thank you, simple watermark
   ========================================================= */

/* Countdown → Story bridge blooms stretch across both sections */
.countdown-bridge-bloom{
  width:min(28vw,290px);
  bottom:-52px;
  z-index:6;
}
.countdown-bridge-left{left:-3%}
.countdown-bridge-right{right:-3%}
.story-lush{margin-top:-82px;padding-top:102px}
.story-heading-stage{margin-top:0}

/* Event: content lifted and top arch/curtain retuned for better continuity */
.event-scene{min-height:clamp(800px,116vw,1030px)}
.event-arch{top:.9%;width:min(93%,705px)}
.event-curtain{top:2%;width:min(46%,352px)}
.event-curtain-left{left:5.5%}
.event-curtain-right{right:5.5%}
.event-foliage{top:5.8%}
.event-bloom{top:6.2%}
.event-content{padding-top:clamp(252px,39vw,314px);width:min(58%,430px)}
.event-scene--single .event-content{padding-top:clamp(262px,40vw,324px)}
.event-garden-bottom{bottom:-1.8%;width:min(120%,905px)}

/* Subtle floral ornament for instagram pills */
.couple-instagram{
  position:relative;overflow:hidden;padding-inline:18px;
}
.couple-instagram-ornament{
  display:inline-block;width:16px;height:16px;opacity:.65;flex:0 0 16px;
  background-repeat:no-repeat;background-size:contain;background-position:center;
  filter:drop-shadow(0 2px 4px rgba(255,255,255,.08));
}
.couple-instagram-ornament.ornament-left{background-image:url('assets/section-bloom-left.webp')}
.couple-instagram-ornament.ornament-right{background-image:url('assets/section-bloom-right.webp')}
.couple-instagram svg{position:relative;z-index:2}
.couple-instagram span:not(.couple-instagram-ornament){position:relative;z-index:2}

/* Thank you scene gets richer side accents and a softer frame ghost */
.closing-thankyou{min-height:420px;padding:76px 18px 62px;overflow:hidden}
.closing-thank-frame{
  position:absolute;left:50%;top:52%;z-index:1;width:min(92vw,560px);height:auto;
  opacity:0;transform:translate(-50%,-50%) scale(.96);
  filter:sepia(.08) drop-shadow(0 10px 16px rgba(91,42,55,.05));pointer-events:none;user-select:none;
}
.closing-thank-frame.motion-fade.is-inview{animation:closingThankFrameIn 1.7s ease forwards}
@keyframes closingThankFrameIn{to{opacity:.13;transform:translate(-50%,-50%) scale(1)}}
.closing-thank-copy{position:relative;z-index:5;width:min(74vw,560px)}
.closing-thank-accent{
  position:absolute;z-index:4;width:min(23vw,210px);height:auto;opacity:0;
  filter:drop-shadow(0 12px 18px rgba(91,42,55,.1));pointer-events:none;user-select:none;
}
.closing-thank-accent-left{left:-2%;bottom:6%;transform-origin:0 100%}
.closing-thank-accent-right{right:-2%;bottom:5%;transform-origin:100% 100%}
.closing-credit{display:none}

/* Simpler, seamless watermark footer */
.site-watermark{
  display:flex;align-items:center;justify-content:center;gap:14px;
  padding:18px 18px 28px;margin-top:-2px;overflow:hidden;
  background:linear-gradient(180deg,rgba(247,241,232,.98),rgba(247,241,232,1)),url('assets/bg-paper.webp') center/cover;
  border-top:0;
}
.site-watermark-line{width:min(18vw,140px);height:1px;background:linear-gradient(90deg,transparent,rgba(220,163,61,.9),transparent)}
.site-watermark-copy{margin:0;color:#9f6f5e;font:500 12px/1.4 'Cormorant Garamond',serif;letter-spacing:.04em;text-transform:none}
.site-watermark-copy span{color:var(--mar);font-weight:600}

@media(max-width:680px){
  .countdown-bridge-bloom{width:52vw;bottom:-58px}
  .countdown-bridge-left{left:-14%}
  .countdown-bridge-right{right:-14%}
  .story-lush{margin-top:-96px;padding-top:110px}

  .event-scene{min-height:870px}
  .event-arch{top:1.1%;width:116%}
  .event-curtain{top:1.8%;width:64%}
  .event-curtain-left{left:-9%}
  .event-curtain-right{right:-9%}
  .event-foliage{top:5.5%;width:60%}
  .event-foliage-left{left:-19%}
  .event-foliage-right{right:-19%}
  .event-bloom{top:6%;width:61%}
  .event-bloom-left{left:-21%}
  .event-bloom-right{right:-21%}
  .event-content{padding-top:286px;width:min(64vw,292px)}
  .event-scene--single .event-content{padding-top:296px}
  .event-garden-bottom{bottom:-2.3%;width:147%}

  .couple-instagram{padding-inline:16px}
  .couple-instagram-ornament{width:14px;height:14px}

  .closing-thankyou{min-height:438px;padding:72px 16px 68px}
  .closing-thank-frame{width:128vw}
  .closing-thank-copy{width:78vw}
  .closing-thank-accent{width:40vw}
  .closing-thank-accent-left{left:-18%;bottom:6%}
  .closing-thank-accent-right{right:-18%;bottom:6%}

  .site-watermark{gap:10px;padding:16px 14px 24px}
  .site-watermark-line{width:22vw}
  .site-watermark-copy{font-size:11.5px;text-align:center}
}
@media(max-width:390px){
  .countdown-bridge-bloom{width:56vw}
  .event-content{padding-top:278px}
  .event-scene--single .event-content{padding-top:288px}
  .closing-thank-accent{width:44vw}
}
@media(prefers-reduced-motion:reduce){
  .closing-thank-frame{opacity:.13!important;animation:none!important;transform:translate(-50%,-50%) scale(1)!important}
}


/* =========================================================
   v4.17 — richer section florals + event/gallery bridge tuning
   ========================================================= */

/* Subtle continuous sway for selected side florals */
@keyframes floralSwaySoft{
  0%,100%{transform:translate3d(0,0,0) rotate(0deg)}
  25%{transform:translate3d(1px,-1px,0) rotate(.8deg)}
  50%{transform:translate3d(0,1px,0) rotate(-.7deg)}
  75%{transform:translate3d(-1px,0,0) rotate(.6deg)}
}
.sway-floral{animation:floralSwaySoft 7.8s ease-in-out infinite}

/* Story top flowers pulled upward to bridge the section seam */
.story-edge-floral-l1{top:8%!important;left:-6%}
.story-edge-floral-r1{top:10%!important;right:-6%}
.story-edge-floral-l2{top:61%}
.story-edge-floral-r2{top:70%}
.section-bloom-story-left{top:10%;left:-4%}
.section-bloom-story-right{top:48%;right:-5%}
.story-lush{margin-top:-78px;padding-top:100px}

/* Couple portrait layering: florals sit lower so they never cover the face */
.couple-foliage{transform:translate(-50%,-38%)!important;width:100%}
.couple-vine{transform:translate(-50%,-29%)!important;width:70%}
.couple-bloom{transform:translate(-50%,-34%)!important;width:102%}
.groom-vine{transform:translate(-32%,-22%) rotate(2deg)!important}
.bride-vine{transform:translate(-65%,-23%) rotate(-2deg)!important}
.couple-photo-shell{z-index:7}

/* Instagram pill gets delicate florals around the outside, not inside */
.couple-instagram{position:relative;overflow:visible;padding-inline:16px}
.couple-instagram-ornament{display:none!important}
.couple-instagram::before,.couple-instagram::after{
  content:"";position:absolute;top:50%;width:26px;height:26px;pointer-events:none;user-select:none;
  background-repeat:no-repeat;background-size:contain;background-position:center;opacity:.95;
  transform:translateY(-50%);filter:drop-shadow(0 6px 8px rgba(91,42,55,.12));
}
.couple-instagram::before{left:-18px;background-image:url('assets/section-bloom-left.webp')}
.couple-instagram::after{right:-18px;background-image:url('assets/section-bloom-right.webp')}

/* Event heading florals to soften the arch mismatch */
.event-engine{overflow:hidden}
.event-heading-bloom{
  position:absolute;top:0;z-index:3;width:min(19vw,170px);height:auto;opacity:0;
  filter:drop-shadow(0 10px 16px rgba(91,42,55,.10));pointer-events:none;user-select:none;
}
.event-heading-bloom-left{left:-2%}
.event-heading-bloom-right{right:-2%}
.event-section-heading{position:relative;z-index:5;padding-top:38px}

/* Bring the arch-content relationship together and reveal more fountain */
.event-scene{min-height:clamp(820px,118vw,1040px)}
.event-arch{top:1.4%;width:min(92%,690px)}
.event-curtain{top:2.4%;width:min(44.5%,336px)}
.event-curtain-left{left:7%}
.event-curtain-right{right:7%}
.event-foliage{top:7.5%}
.event-bloom{top:8.1%}
.event-content{padding-top:clamp(268px,40vw,326px);width:min(58%,430px)}
.event-scene--single .event-content{padding-top:clamp(278px,41vw,336px)}
.event-garden-bottom{bottom:-5%;width:min(122%,920px)}
.gallery-mosaic-section{margin-top:-42px!important;padding-top:84px!important}
.gallery-mosaic-section:before{height:92px!important}

/* Gallery first section additional top-left floral */
.gallery-top-bloom{left:-2%;top:1%;width:min(26vw,230px)}

/* Gift gets left-side bloom */
.gift-lush{overflow:hidden}
.gift-side-bloom-left{position:absolute;left:-3%;top:25%;z-index:4;width:min(22vw,190px);height:auto;opacity:0;filter:drop-shadow(0 12px 18px rgba(91,42,55,.1));pointer-events:none;user-select:none}

/* RSVP top/side florals continue swaying lightly */
.rsvp-side-bloom-left,.rsvp-side-bloom-right{z-index:5}

/* Thank you richer top corners */
.closing-thank-top-flower{position:absolute;top:-1%;z-index:4;width:min(24vw,200px);height:auto;opacity:0;filter:drop-shadow(0 10px 16px rgba(91,42,55,.09));pointer-events:none;user-select:none}
.closing-thank-top-left{left:-4%}
.closing-thank-top-right{right:-4%}
.closing-thank-copy{z-index:6}

@media(max-width:680px){
  .story-edge-floral-l1{top:2%!important;left:-24%}
  .story-edge-floral-r1{top:4%!important;right:-24%}
  .section-bloom-story-left{top:8%;left:-18%}
  .section-bloom-story-right{top:46%;right:-18%}
  .story-lush{margin-top:-68px;padding-top:92px}

  .couple-foliage{transform:translate(-50%,-34%)!important}
  .couple-vine{transform:translate(-50%,-23%)!important}
  .couple-bloom{transform:translate(-50%,-30%)!important}
  .groom-vine{transform:translate(-32%,-16%) rotate(2deg)!important}
  .bride-vine{transform:translate(-65%,-17%) rotate(-2deg)!important}
  .couple-instagram::before,.couple-instagram::after{width:22px;height:22px}
  .couple-instagram::before{left:-14px}
  .couple-instagram::after{right:-14px}

  .event-heading-bloom{width:34vw;top:0}
  .event-heading-bloom-left{left:-12%}
  .event-heading-bloom-right{right:-12%}
  .event-section-heading{padding-top:30px}
  .event-scene{min-height:908px}
  .event-arch{top:2%;width:114%}
  .event-curtain{top:2.6%;width:60%}
  .event-curtain-left{left:-6%}
  .event-curtain-right{right:-6%}
  .event-foliage{top:8.5%;width:60%}
  .event-foliage-left{left:-18%}
  .event-foliage-right{right:-18%}
  .event-bloom{top:9%;width:61%}
  .event-bloom-left{left:-20%}
  .event-bloom-right{right:-20%}
  .event-content{padding-top:300px;width:min(64vw,292px)}
  .event-scene--single .event-content{padding-top:310px}
  .event-garden-bottom{bottom:-8%;width:145%}
  .gallery-mosaic-section{margin-top:-14px!important;padding-top:90px!important}
  .gallery-mosaic-section:before{height:70px!important}
  .gallery-top-bloom{left:-16%;top:2%;width:46vw}

  .gift-side-bloom-left{left:-18%;top:30%;width:40vw}

  .closing-thank-top-flower{width:38vw;top:-1%}
  .closing-thank-top-left{left:-16%}
  .closing-thank-top-right{right:-16%}
}
@media(max-width:390px){
  .event-content{padding-top:292px}
  .event-scene--single .event-content{padding-top:302px}
  .gallery-mosaic-section{padding-top:86px!important}
}
@media(prefers-reduced-motion:reduce){
  .sway-floral{animation:none!important}
}


/* =========================================================
   v4.18 — event florals and fountain visibility refinement
   ========================================================= */
.event-engine{position:relative;overflow:hidden}
.event-side-flower,.event-bottom-bloom{
  position:absolute;pointer-events:none;user-select:none;opacity:0;
  filter:drop-shadow(0 12px 18px rgba(91,42,55,.10));
}
.event-side-flower{z-index:4;width:min(22vw,200px);top:18%}
.event-side-flower-left{left:-4%}
.event-side-flower-right{right:-4%}
.event-bottom-bloom{z-index:7;width:min(22vw,210px);bottom:2%}
.event-bottom-bloom-left{left:-3%}
.event-bottom-bloom-right{right:-3%}
.event-section-heading{padding-top:46px}
.event-heading-bloom{top:2%}
.event-heading-bloom-left{left:-3%}
.event-heading-bloom-right{right:-3%}
.event-arch{top:3.2%!important;width:min(91%,682px)!important}
.event-curtain{top:4.1%!important;width:min(43.5%,328px)!important}
.event-curtain-left{left:7.8%!important}
.event-curtain-right{right:7.8%!important}
.event-foliage{top:9.2%!important}
.event-bloom{top:9.8%!important}
.event-content{padding-top:318px!important}
.event-scene--single .event-content{padding-top:328px!important}
.event-garden-bottom{bottom:-2.2%!important;width:min(118%,900px)!important}
.gallery-mosaic-section{margin-top:-6px!important;padding-top:92px!important}
.gallery-mosaic-section:before{height:58px!important}

@media(max-width:680px){
  .event-heading-bloom{width:30vw;top:1%}
  .event-heading-bloom-left{left:-12%}
  .event-heading-bloom-right{right:-12%}
  .event-side-flower{width:38vw;top:14%}
  .event-side-flower-left{left:-18%}
  .event-side-flower-right{right:-18%}
  .event-bottom-bloom{width:42vw;bottom:5%}
  .event-bottom-bloom-left{left:-16%}
  .event-bottom-bloom-right{right:-16%}
  .event-section-heading{padding-top:38px}
  .event-arch{top:5.8%!important;width:112%!important}
  .event-curtain{top:6.7%!important;width:59%!important}
  .event-curtain-left{left:-5%!important}
  .event-curtain-right{right:-5%!important}
  .event-foliage{top:12.8%!important;width:59%!important}
  .event-foliage-left{left:-17%!important}
  .event-foliage-right{right:-17%!important}
  .event-bloom{top:13.6%!important;width:60%!important}
  .event-bloom-left{left:-19%!important}
  .event-bloom-right{right:-19%!important}
  .event-content{padding-top:342px!important;width:min(64vw,292px)!important}
  .event-scene--single .event-content{padding-top:352px!important}
  .event-garden-bottom{bottom:-.4%!important;width:138%!important}
  .gallery-mosaic-section{margin-top:10px!important;padding-top:88px!important}
  .gallery-mosaic-section:before{height:36px!important}
}
@media(max-width:390px){
  .event-side-flower{width:42vw}
  .event-bottom-bloom{width:46vw}
  .event-content{padding-top:336px!important}
  .event-scene--single .event-content{padding-top:346px!important}
  .event-garden-bottom{width:142%!important}
}
@media(prefers-reduced-motion:reduce){
  .event-side-flower,.event-bottom-bloom{opacity:1!important;animation:none!important}
}


/* =========================================================
   v4.20 — Hero portrait section rebuilt with separate arch frame and delayed florals
   This applies ONLY to the opening hero after welcome; Bride & Groom stays on v4.18 composition.
   ========================================================= */
.hero-photo-stage{
  position:relative;
  width:min(86vw,388px);
  aspect-ratio:1122/1402;
  margin:2px auto 8px;
  filter:drop-shadow(0 18px 24px rgba(76,36,37,.13));
}
.hero-photo-window,
.hero-photo-frame,
.hero-stage-floral,
.hero-stage-accent,
.hero-butterfly{position:absolute;left:50%;top:50%;pointer-events:none;user-select:none}
.hero-photo-window{
  z-index:1;
  width:71%;
  height:83.8%;
  transform:translate(-50%,-50%);
  overflow:hidden;
  border-radius:42% 42% 4.4% 4.4% / 18% 18% 3.2% 3.2%;
  background:#d9c8b7;
}
.hero-photo-placeholder{
  width:100%;height:100%;display:grid;place-content:center;gap:5px;
  background:linear-gradient(145deg,#d9c4b8,#efe2d2 55%,#cdb7a6);
  color:#8c5a62;font:500 23px 'Cormorant Garamond';text-align:center
}
.hero-photo-placeholder small{font:500 10px 'Plus Jakarta Sans';letter-spacing:.18em;text-transform:uppercase;opacity:.65}
.hero-frame-base,.hero-floral{display:none!important}
.hero-photo-frame{z-index:3;width:100%;height:100%;object-fit:contain;opacity:0;transform:translate(-50%,-47%) scale(.95)}
.hero-stage-floral,.hero-stage-accent{
  width:100%;height:100%;object-fit:contain;opacity:0;transform:translate(-50%,-46%) scale(.9);
  filter:drop-shadow(0 10px 16px rgba(91,42,55,.10));
}
.hero-stage-floral{z-index:4}
.hero-stage-accent{z-index:5}
.hero-butterfly{z-index:6;width:44px;right:-1%;left:auto;top:23%;filter:drop-shadow(0 6px 7px rgba(85,36,54,.18));opacity:0}
.hero-invite.hero-animate .hero-photo-window{animation:heroPhotoRevealV20 1.05s .12s both}
.hero-invite.hero-animate .hero-frame-arch{animation:heroFrameRevealV20 1.08s .22s cubic-bezier(.16,.8,.2,1) forwards}
.hero-invite.hero-animate .hero-stage-floral-left{animation:heroFloralRevealV20 1.02s .58s cubic-bezier(.18,.82,.2,1) forwards}
.hero-invite.hero-animate .hero-stage-floral-right{animation:heroFloralRevealV20 1.02s .72s cubic-bezier(.18,.82,.2,1) forwards}
.hero-invite.hero-animate .hero-stage-accent-left{animation:heroFloralRevealV20 1.02s .9s cubic-bezier(.18,.82,.2,1) forwards}
.hero-invite.hero-animate .hero-stage-accent-right{animation:heroFloralRevealV20 1.02s 1.04s cubic-bezier(.18,.82,.2,1) forwards}
.hero-invite.hero-animate .hero-butterfly{animation:butterflyEnter 1.1s 1.4s both,floatButterfly 5s 2.5s ease-in-out infinite}

@keyframes heroPhotoRevealV20{from{opacity:0;transform:translate(-50%,-50%) scale(1.045);filter:blur(5px)}to{opacity:1;transform:translate(-50%,-50%) scale(1);filter:none}}
@keyframes heroFrameRevealV20{from{opacity:0;transform:translate(-50%,-46%) scale(.92)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes heroFloralRevealV20{from{opacity:0;transform:translate(-50%,-44%) scale(.88)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}

@media(max-width:680px){
  .hero-invite{padding-top:28px}
  .hero-photo-stage{width:min(88vw,372px)}
  .hero-tree{width:78vw;top:-2%;opacity:.42}.hero-tree-l{left:-47%}.hero-tree-r{right:-47%}
}
@media(max-width:390px){
  .hero-photo-stage{width:min(90vw,356px)}
}
@media(prefers-reduced-motion:reduce){
  .hero-photo-window,.hero-photo-frame,.hero-stage-floral,.hero-stage-accent,.hero-butterfly{animation:none!important;opacity:1!important;transform:translate(-50%,-50%) scale(1)!important}
  .hero-butterfly{left:auto;right:-1%;top:23%;transform:none!important}
}


/* =========================================================
   v4.21 — Hero opening simplified: left floral + right accent only
   Keeps photo readable while preserving premium asymmetrical composition.
   ========================================================= */
.hero-photo-stage{width:min(86vw,386px)}
.hero-photo-window{width:71.5%;height:84.2%;z-index:2}
.hero-photo-frame{z-index:3}
.hero-stage-floral-left{
  z-index:4;
  width:92%;
  left:43%;
  top:59%;
}
.hero-stage-accent-right{
  z-index:5;
  width:92%;
  left:55%;
  top:45%;
}
.hero-stage-floral-left,.hero-stage-accent-right{transform:translate(-50%,-46%) scale(.88)}
.hero-invite.hero-animate .hero-stage-floral-left{animation:heroFloralRevealV20 1.02s .6s cubic-bezier(.18,.82,.2,1) forwards}
.hero-invite.hero-animate .hero-stage-accent-right{animation:heroFloralRevealV20 1.02s .9s cubic-bezier(.18,.82,.2,1) forwards}

@media(max-width:680px){
  .hero-photo-stage{width:min(88vw,368px)}
  .hero-stage-floral-left{width:96%;left:42%;top:61%}
  .hero-stage-accent-right{width:96%;left:57%;top:43%}
}
@media(max-width:390px){
  .hero-stage-floral-left{width:98%;left:41%;top:62%}
  .hero-stage-accent-right{width:98%;left:58%;top:42%}
}
@media(prefers-reduced-motion:reduce){
  .hero-stage-floral-left,.hero-stage-accent-right{transform:translate(-50%,-50%) scale(1)!important}
}


/* =========================================================
   v4.22 — Hero opening refinement
   - confirm use of couple-frame-arch.webp
   - reduce/lower left bottom floral so it decorates the frame without covering the photo
   ========================================================= */
.hero-photo-window{z-index:2}
.hero-frame-arch{z-index:4!important;opacity:0;transform:translate(-50%,-47%) scale(.95)}
.hero-stage-floral-left{z-index:3;width:78%;left:38%;top:68%;transform:translate(-50%,-46%) scale(.84)}
.hero-stage-accent-right{z-index:5;width:88%;left:56%;top:43%;transform:translate(-50%,-46%) scale(.88)}
.hero-butterfly{z-index:6}

@media(max-width:680px){
  .hero-stage-floral-left{width:82%;left:36%;top:71%;transform:translate(-50%,-46%) scale(.82)}
  .hero-stage-accent-right{width:92%;left:57%;top:42%;transform:translate(-50%,-46%) scale(.86)}
}
@media(max-width:390px){
  .hero-stage-floral-left{width:84%;left:35%;top:72%}
  .hero-stage-accent-right{width:94%;left:58%;top:41%}
}
@media(prefers-reduced-motion:reduce){
  .hero-frame-arch{opacity:1!important;transform:translate(-50%,-50%) scale(1)!important}
  .hero-stage-floral-left{transform:translate(-50%,-50%) scale(1)!important}
  .hero-stage-accent-right{transform:translate(-50%,-50%) scale(1)!important}
}


/* =========================================================
   v4.23 — Hero opening frame visibility fix + lighter bottom-left floral
   ========================================================= */
.hero-photo-stage{overflow:visible}
.hero-frame-arch{
  position:absolute!important;
  inset:0!important;
  left:0!important;
  top:0!important;
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  clip-path:none!important;
  z-index:4!important;
  opacity:0;
  transform:none!important;
  filter:drop-shadow(0 10px 14px rgba(76,36,37,.10));
}
.hero-stage-floral-left{
  z-index:3;
  width:54%!important;
  left:29%!important;
  top:77%!important;
  transform:translate(-50%,-50%) scale(.96)!important;
}
.hero-stage-accent-right{
  z-index:5;
  width:86%!important;
  left:57%!important;
  top:43%!important;
  transform:translate(-50%,-50%) scale(.88)!important;
}
.hero-invite.hero-animate .hero-frame-arch{animation:heroFrameShowV23 1.02s .22s cubic-bezier(.16,.8,.2,1) forwards}
.hero-invite.hero-animate .hero-stage-floral-left{animation:heroFloralShowV23 .95s .62s cubic-bezier(.18,.82,.2,1) forwards}
.hero-invite.hero-animate .hero-stage-accent-right{animation:heroFloralShowV23 .98s .92s cubic-bezier(.18,.82,.2,1) forwards}
@keyframes heroFrameShowV23{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
@keyframes heroFloralShowV23{from{opacity:0;transform:translate(-50%,-46%) scale(.88)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}

@media(max-width:680px){
  .hero-stage-floral-left{width:58%!important;left:27%!important;top:79%!important}
  .hero-stage-accent-right{width:90%!important;left:58%!important;top:42%!important}
}
@media(max-width:390px){
  .hero-stage-floral-left{width:60%!important;left:26%!important;top:80%!important}
  .hero-stage-accent-right{width:92%!important;left:59%!important;top:41%!important}
}
@media(prefers-reduced-motion:reduce){
  .hero-frame-arch,.hero-stage-floral-left,.hero-stage-accent-right{animation:none!important;opacity:1!important}
}


/* =========================================================
   v4.24 — Hero opening polish
   - 4:5 photo window fits more safely inside the arch
   - couple names and hashtag moved down for better readability
   ========================================================= */
.hero-content{padding-bottom:18px}
.hero-photo-stage{margin:6px auto 18px}
.hero-photo-window{
  left:22.5%!important;
  right:22.5%!important;
  top:13.5%!important;
  bottom:16.5%!important;
  width:auto!important;
  height:auto!important;
  transform:none!important;
  border-radius:42% 42% 5.2% 5.2% / 18% 18% 3.8% 3.8%!important;
}
.hero-invite.hero-animate .hero-photo-window{animation:heroPhotoWindowFitV24 1.02s .12s both!important}
@keyframes heroPhotoWindowFitV24{
  from{opacity:0;transform:scale(1.03);filter:blur(4px)}
  to{opacity:1;transform:scale(1);filter:none}
}
.hero-frame-arch{transform:none!important}
.hero-stage-floral-left{
  width:50%!important;
  left:27.5%!important;
  top:79%!important;
}
.hero-stage-accent-right{
  width:84%!important;
  left:57.5%!important;
  top:42.5%!important;
}
.hero-names{
  margin:16px 0 12px!important;
  position:relative;
  z-index:8;
}
.hero-hashtag{
  margin:12px 0 0!important;
  position:relative;
  z-index:8;
}

@media(max-width:680px){
  .hero-content{padding-bottom:22px}
  .hero-photo-stage{margin:6px auto 22px}
  .hero-photo-window{
    left:22.8%!important;
    right:22.8%!important;
    top:13.8%!important;
    bottom:17.2%!important;
  }
  .hero-stage-floral-left{
    width:52%!important;
    left:25.5%!important;
    top:81%!important;
  }
  .hero-stage-accent-right{
    width:88%!important;
    left:58%!important;
    top:41.8%!important;
  }
  .hero-names{margin:18px 0 12px!important}
}
@media(max-width:390px){
  .hero-photo-window{
    left:23.5%!important;
    right:23.5%!important;
    top:14.2%!important;
    bottom:17.8%!important;
  }
  .hero-stage-floral-left{width:54%!important;left:24.5%!important;top:82%!important}
  .hero-stage-accent-right{width:90%!important;left:58.5%!important;top:41%!important}
  .hero-names{margin:20px 0 12px!important}
}
@media(prefers-reduced-motion:reduce){
  .hero-photo-window{transform:none!important}
}


/* =========================================================
   v4.25 — IG button asset integration + hero frame/photo refinement
   ========================================================= */

/* Hero opening: use new bottom-left accent and a frame-following polygonal photo mask */
.hero-photo-stage{overflow:visible}
.hero-photo-window{
  left:20.2%!important;
  right:20.2%!important;
  top:9.6%!important;
  bottom:10.6%!important;
  width:auto!important;
  height:auto!important;
  background:#dccbbe;
  clip-path:polygon(50% 1.2%, 74% 5%, 87% 19%, 90% 43%, 86% 73%, 73% 93%, 50% 98.4%, 27% 93%, 14% 73%, 10% 43%, 13% 19%, 26% 5%);
  border-radius:0!important;
}
.hero-photo-placeholder{
  background:linear-gradient(145deg,#e0cfc1,#efe3d5 50%,#ccb8aa)!important;
}
.hero-stage-floral-left{
  width:76%!important;
  left:31.5%!important;
  top:71.5%!important;
  transform:translate(-50%,-50%) scale(.9)!important;
  z-index:3!important;
}
.hero-stage-accent-right{
  width:88%!important;
  left:57.5%!important;
  top:42.5%!important;
  transform:translate(-50%,-50%) scale(.9)!important;
  z-index:5!important;
}
.hero-frame-arch{
  z-index:4!important;
}
.hero-names{margin:22px 0 12px!important}
.hero-hashtag{margin:14px 0 0!important}

@media(max-width:680px){
  .hero-photo-window{
    left:20.8%!important;right:20.8%!important;top:10.4%!important;bottom:11.4%!important;
  }
  .hero-stage-floral-left{width:80%!important;left:29%!important;top:73.5%!important}
  .hero-stage-accent-right{width:91%!important;left:58%!important;top:41.5%!important}
  .hero-names{margin:24px 0 12px!important}
}
@media(max-width:390px){
  .hero-photo-window{left:21.5%!important;right:21.5%!important;top:11%!important;bottom:12%!important}
  .hero-stage-floral-left{width:82%!important;left:28%!important;top:74.5%!important}
  .hero-stage-accent-right{width:93%!important;left:58.5%!important;top:40.8%!important}
}

/* Ornamental Instagram buttons for bride and groom */
.couple-instagram.ornate-ig{
  position:relative;
  display:block;
  width:min(94vw,332px);
  margin:16px auto 0;
  text-decoration:none;
  color:#f7ecd8;
  overflow:visible;
  background:none!important;
  box-shadow:none!important;
  border-radius:0!important;
  padding:0!important;
  transform:none!important;
}
.couple-instagram.ornate-ig:hover{background:none!important;box-shadow:none!important;transform:translateY(-2px)!important}
.couple-instagram.ornate-ig::before,
.couple-instagram.ornate-ig::after,
.couple-instagram.ornate-ig .couple-instagram-ornament{display:none!important;content:none!important}
.ig-btn-base,
.ig-btn-floral,
.ig-btn-content{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;user-select:none}
.ig-btn-base{z-index:1;width:100%;height:auto;display:block;filter:drop-shadow(0 12px 16px rgba(91,42,55,.14))}
.ig-btn-floral-left{z-index:2;width:50%;left:14%;top:50%}
.ig-btn-floral-right{z-index:2;width:44%;left:87%;top:50%}
.ig-btn-content{
  z-index:3;
  width:78%;
  display:flex;align-items:center;justify-content:center;gap:12px;
  color:#f2d38d;
  font:600 26px/1 'Cormorant Garamond',serif;
  letter-spacing:.01em;
}
.ig-btn-content::after{
  content:"";
  width:1px;height:34px;opacity:.9;
  background:linear-gradient(180deg,transparent,#e9c56d,transparent);
  position:absolute;left:26.4%;top:50%;transform:translate(-50%,-50%);
}
.ig-btn-content svg{width:34px;height:34px;display:block;flex:0 0 34px;color:#f2d38d;position:relative;left:-6px}
.ig-btn-content span{display:inline-block;position:relative;left:12px}
.couple-instagram.ornate-ig{aspect-ratio:2172/724}
.ornate-ig img{display:block}

@media(max-width:680px){
  .couple-instagram.ornate-ig{width:min(86vw,310px);margin-top:14px}
  .ig-btn-floral-left{width:50%;left:13.5%}
  .ig-btn-floral-right{width:45%;left:86.5%}
  .ig-btn-content{width:80%;gap:10px;font-size:23px}
  .ig-btn-content::after{height:28px;left:26%}
  .ig-btn-content svg{width:30px;height:30px;left:-4px}
  .ig-btn-content span{left:10px}
}
@media(max-width:390px){
  .couple-instagram.ornate-ig{width:min(88vw,300px)}
  .ig-btn-content{font-size:21px}
  .ig-btn-content::after{height:24px}
  .ig-btn-content svg{width:28px;height:28px}
}


/* =========================================================
   v4.26 — Hero photo enlargement + smaller IG buttons with left icon
   ========================================================= */

/* Hero opening: enlarge image area within the polygonal frame */
.hero-photo-window{
  left:17.8%!important;
  right:17.8%!important;
  top:7.8%!important;
  bottom:8.8%!important;
  clip-path:polygon(50% 1%, 74.5% 4.4%, 88.4% 18.2%, 91.5% 43%, 87.2% 73.8%, 73.6% 95.2%, 50% 99%, 26.4% 95.2%, 12.8% 73.8%, 8.5% 43%, 11.6% 18.2%, 25.5% 4.4%)!important;
}
.hero-photo-placeholder{font-size:24px!important}
.hero-photo-placeholder small{font-size:10.5px!important}
.hero-stage-floral-left{
  width:72%!important;
  left:30.5%!important;
  top:73.5%!important;
}
.hero-stage-accent-right{
  width:86%!important;
  left:57%!important;
  top:41.8%!important;
}
.hero-names{margin:24px 0 12px!important}
.hero-hashtag{margin:14px 0 0!important}

@media(max-width:680px){
  .hero-photo-window{
    left:18.6%!important;
    right:18.6%!important;
    top:8.5%!important;
    bottom:9.6%!important;
  }
  .hero-stage-floral-left{width:76%!important;left:28.5%!important;top:75.2%!important}
  .hero-stage-accent-right{width:89%!important;left:57.5%!important;top:40.9%!important}
}
@media(max-width:390px){
  .hero-photo-window{
    left:19.2%!important;
    right:19.2%!important;
    top:8.9%!important;
    bottom:10.2%!important;
  }
  .hero-stage-floral-left{width:78%!important;left:27.8%!important;top:76%!important}
  .hero-stage-accent-right{width:91%!important;left:58.2%!important;top:40.2%!important}
}

/* Instagram buttons: smaller like previous version, icon clearly on the left,
   floral just acts as a subtle accent. */
.couple-instagram.ornate-ig{
  width:min(62vw,238px)!important;
  aspect-ratio:2172/724;
  margin:14px auto 0!important;
}
.couple-instagram.ornate-ig:hover{transform:translateY(-1px)!important}
.ig-btn-base{filter:drop-shadow(0 9px 12px rgba(91,42,55,.12))!important}
.ig-btn-floral-left{
  width:24%!important;
  left:6.5%!important;
  top:50%!important;
  opacity:.98;
}
.ig-btn-floral-right{
  width:22%!important;
  left:93.5%!important;
  top:50%!important;
  opacity:.98;
}
.ig-btn-content{
  width:70%!important;
  justify-content:flex-start!important;
  gap:10px!important;
  font-size:17px!important;
  line-height:1!important;
  color:#f5d790!important;
}
.ig-btn-content::after{display:none!important;content:none!important}
.ig-btn-content svg{
  width:18px!important;
  height:18px!important;
  flex:0 0 18px!important;
  left:0!important;
}
.ig-btn-content span{
  left:0!important;
  font:600 18px/1 'Cormorant Garamond',serif!important;
  letter-spacing:.01em!important;
}

@media(max-width:680px){
  .couple-instagram.ornate-ig{width:min(60vw,214px)!important;margin-top:13px!important}
  .ig-btn-floral-left{width:24%!important;left:6%!important}
  .ig-btn-floral-right{width:22%!important;left:94%!important}
  .ig-btn-content{width:69%!important;font-size:16px!important;gap:8px!important}
  .ig-btn-content svg{width:17px!important;height:17px!important;flex-basis:17px!important}
  .ig-btn-content span{font-size:17px!important}
}
@media(max-width:390px){
  .couple-instagram.ornate-ig{width:min(62vw,206px)!important}
  .ig-btn-content{width:68%!important}
  .ig-btn-content span{font-size:16px!important}
}


/* =========================================================
   v4.27 — Larger hero photo + simplified IG buttons without long base
   ========================================================= */

/* Hero opening: enlarge photo area again while keeping it inside frame */
.hero-photo-window{
  left:15.2%!important;
  right:15.2%!important;
  top:5.4%!important;
  bottom:6.2%!important;
  clip-path:polygon(50% .8%, 74.8% 4%, 89.4% 18%, 92.6% 43%, 88.3% 74.6%, 73.9% 96%, 50% 99.4%, 26.1% 96%, 11.7% 74.6%, 7.4% 43%, 10.6% 18%, 25.2% 4%)!important;
}
.hero-photo-placeholder{font-size:25px!important}
.hero-photo-placeholder small{font-size:10.8px!important}
.hero-stage-floral-left{width:69%!important;left:29.5%!important;top:74.8%!important}
.hero-stage-accent-right{width:84%!important;left:57%!important;top:40.8%!important}
.hero-names{margin:26px 0 12px!important}
.hero-hashtag{margin:15px 0 0!important}

@media(max-width:680px){
  .hero-photo-window{
    left:15.9%!important;
    right:15.9%!important;
    top:6.1%!important;
    bottom:7%!important;
  }
  .hero-stage-floral-left{width:73%!important;left:27.5%!important;top:76.5%!important}
  .hero-stage-accent-right{width:87%!important;left:57.5%!important;top:39.9%!important}
}
@media(max-width:390px){
  .hero-photo-window{
    left:16.6%!important;
    right:16.6%!important;
    top:6.6%!important;
    bottom:7.5%!important;
  }
  .hero-stage-floral-left{width:75%!important;left:26.8%!important;top:77.2%!important}
  .hero-stage-accent-right{width:89%!important;left:58%!important;top:39.2%!important}
}

/* Instagram buttons: remove long ornamental base, keep only subtle floral accents */
.couple-instagram.ornate-ig{
  width:auto!important;
  aspect-ratio:auto!important;
  min-width:0!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  margin:14px auto 0!important;
  padding:10px 18px!important;
  border-radius:999px!important;
  background:rgba(143,23,63,.94)!important;
  color:#fff8f0!important;
  box-shadow:0 12px 24px rgba(143,23,63,.16)!important;
  overflow:visible!important;
  text-decoration:none!important;
}
.couple-instagram.ornate-ig:hover{
  transform:translateY(-2px)!important;
  background:#8b1a42!important;
  box-shadow:0 16px 28px rgba(143,23,63,.22)!important;
}
.ig-btn-base{display:none!important}
.ig-btn-content{
  position:relative!important;
  left:auto!important;top:auto!important;transform:none!important;
  width:auto!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:8px!important;
  color:#fff8f0!important;
  font:600 12px/1 'Plus Jakarta Sans',sans-serif!important;
  letter-spacing:.01em!important;
  z-index:3!important;
}
.ig-btn-content::after{display:none!important;content:none!important}
.ig-btn-content svg{
  width:14px!important;height:14px!important;flex:0 0 14px!important;
  color:#fff8f0!important;left:auto!important;position:relative!important;
}
.ig-btn-content span{
  left:auto!important;position:relative!important;
  font:600 12px/1 'Plus Jakarta Sans',sans-serif!important;
  letter-spacing:.01em!important;
}
.ig-btn-floral{
  position:absolute!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  pointer-events:none!important;
  user-select:none!important;
  z-index:1!important;
  opacity:.98!important;
  filter:drop-shadow(0 6px 8px rgba(91,42,55,.10))!important;
}
.ig-btn-floral-left{
  width:32px!important;
  left:-18px!important;
}
.ig-btn-floral-right{
  width:32px!important;
  right:-18px!important;
  left:auto!important;
}

@media(max-width:680px){
  .couple-instagram.ornate-ig{padding:9px 16px!important;margin-top:13px!important}
  .ig-btn-content{font-size:11.5px!important}
  .ig-btn-content svg{width:13px!important;height:13px!important;flex-basis:13px!important}
  .ig-btn-content span{font-size:11.5px!important}
  .ig-btn-floral-left,.ig-btn-floral-right{width:28px!important}
  .ig-btn-floral-left{left:-15px!important}
  .ig-btn-floral-right{right:-15px!important}
}
@media(max-width:390px){
  .couple-instagram.ornate-ig{padding:8.5px 15px!important}
  .ig-btn-content svg{width:12px!important;height:12px!important;flex-basis:12px!important}
  .ig-btn-content span{font-size:11px!important}
  .ig-btn-floral-left,.ig-btn-floral-right{width:26px!important}
}


/* =========================================================
   v4.28 — Hero photo uses fuller crop settings from reference
   + IG floral assets swapped and tucked closer to the pill
   ========================================================= */

/* Hero opening */
.hero-photo-window{
  left:8.5%!important;
  right:8.5%!important;
  top:7.5%!important;
  bottom:7.5%!important;
  clip-path:ellipse(51% 53% at 50% 50%)!important;
  border-radius:0!important;
  background:#dccbbe;
}
.hero-photo-window img,
.hero-photo-window picture img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:50% 27%;
}
.hero-photo-placeholder{font-size:25px!important}
.hero-stage-floral-left{
  width:67%!important;
  left:29%!important;
  top:75.2%!important;
}
.hero-stage-accent-right{
  width:83%!important;
  left:57%!important;
  top:40.5%!important;
}
@media(max-width:680px){
  .hero-photo-window{left:9.2%!important;right:9.2%!important;top:8%!important;bottom:8%!important}
  .hero-stage-floral-left{width:71%!important;left:27.2%!important;top:76.9%!important}
  .hero-stage-accent-right{width:86%!important;left:57.4%!important;top:39.7%!important}
}
@media(max-width:390px){
  .hero-photo-window{left:9.8%!important;right:9.8%!important;top:8.3%!important;bottom:8.3%!important}
  .hero-stage-floral-left{width:73%!important;left:26.5%!important;top:77.6%!important}
  .hero-stage-accent-right{width:88%!important;left:57.8%!important;top:39.1%!important}
}

/* Smaller IG pill with floral accents swapped and tucked in */
.couple-instagram.ornate-ig{
  padding:8px 16px!important;
}
.ig-btn-floral-left{
  width:26px!important;
  left:-9px!important;
  top:50%!important;
}
.ig-btn-floral-right{
  width:30px!important;
  right:-9px!important;
  left:auto!important;
  top:50%!important;
}
.ig-btn-content{gap:8px!important}
.ig-btn-content svg{width:13px!important;height:13px!important;flex:0 0 13px!important}
.ig-btn-content span{font-size:11.5px!important}
@media(max-width:680px){
  .couple-instagram.ornate-ig{padding:7.5px 15px!important}
  .ig-btn-floral-left{width:24px!important;left:-8px!important}
  .ig-btn-floral-right{width:28px!important;right:-8px!important}
  .ig-btn-content span{font-size:11px!important}
}
@media(max-width:390px){
  .ig-btn-floral-left{width:22px!important;left:-7px!important}
  .ig-btn-floral-right{width:26px!important;right:-7px!important}
}


/* =========================================================
   v4.29 — Bride/Groom portrait enlargement + bigger edge floral for IG pill
   ========================================================= */

/* Bride & Groom portrait stage: make the actual photo read larger inside the frame */
.couple-photo-shell{
  width:81%!important;
  z-index:6;
}
.couple-photo-window{
  inset:10.4% 12.6% 9.2%!important;
  border-radius:47% 47% 5.2% 5.2%/22% 22% 4.2% 4.2%!important;
}

@media(min-width:681px){
  .couple-art-stage{width:min(60vw,540px)!important}
  .couple-photo-shell{width:80%!important}
  .couple-photo-window{inset:10.8% 13% 9.5%!important}
}
@media(max-width:680px){
  .couple-art-stage{width:96vw!important}
  .couple-photo-shell{width:82%!important}
  .couple-photo-window{inset:10.2% 12.2% 8.9%!important}
}
@media(max-width:390px){
  .couple-photo-shell{width:83%!important}
  .couple-photo-window{inset:10% 12% 8.8%!important}
}

/* Instagram pill: floral accents slightly larger than the pill and pushed to the outer ends */
.couple-instagram.ornate-ig{
  padding:8.5px 16px!important;
}
.ig-btn-floral{
  top:50%!important;
  transform:translateY(-50%)!important;
}
.ig-btn-floral-left{
  width:42px!important;
  left:-24px!important;
}
.ig-btn-floral-right{
  width:42px!important;
  right:-24px!important;
  left:auto!important;
}

@media(max-width:680px){
  .ig-btn-floral-left,.ig-btn-floral-right{width:38px!important}
  .ig-btn-floral-left{left:-20px!important}
  .ig-btn-floral-right{right:-20px!important}
}
@media(max-width:390px){
  .ig-btn-floral-left,.ig-btn-floral-right{width:35px!important}
  .ig-btn-floral-left{left:-18px!important}
  .ig-btn-floral-right{right:-18px!important}
}


/* =========================================================
   v4.30 — Bride/Groom portrait polish
   - larger photo area
   - top accents left/right to soften the frame edge
   - text block spacing adjusted so the name clears the floral mass
   ========================================================= */

/* top accents for bride & groom portrait */
.couple-top-accent{
  position:absolute;
  top:13%;
  width:31%;
  height:auto;
  object-fit:contain;
  pointer-events:none;
  z-index:5;
  filter:drop-shadow(0 8px 10px rgba(91,42,55,.08));
}
.couple-top-accent-left{left:18%;transform:translate(-50%,-50%) scale(.9)}
.couple-top-accent-right{left:82%;transform:translate(-50%,-50%) scale(.9)}

/* make the photo slightly fuller inside the bride/groom frame */
.couple-photo-shell{
  width:84%!important;
}
.couple-photo-window{
  inset:9.2% 11.5% 8.1%!important;
}

/* keep botanical composition below/around frame while allowing the top accents to mask edges */
.couple-bloom{z-index:4}
.couple-photo-frame{z-index:6}
.couple-photo-shell{z-index:7}

/* move name/info down a bit so it does not get hit by the floral cluster */
.couple-info{
  margin-top:10px!important;
  position:relative;
  z-index:8;
}
.couple-role{margin-bottom:10px!important}
.couple-info h3{
  margin-top:0!important;
  margin-bottom:14px!important;
  line-height:1.02;
}
.couple-info > p:last-of-type{
  margin-top:12px!important;
}

@media(min-width:681px){
  .couple-art-stage{width:min(61vw,548px)!important}
  .couple-photo-shell{width:83%!important}
  .couple-photo-window{inset:9.5% 11.9% 8.3%!important}
  .couple-top-accent{width:28%;top:12.4%}
  .couple-info{margin-top:14px!important}
}
@media(max-width:680px){
  .couple-art-stage{width:98vw!important;margin-top:2px!important}
  .couple-photo-shell{width:85%!important}
  .couple-photo-window{inset:9% 11.2% 7.8%!important}
  .couple-top-accent{width:34%;top:13.8%}
  .couple-top-accent-left{left:17%}
  .couple-top-accent-right{left:83%}
  .couple-info{width:84vw!important;margin-top:16px!important}
  .couple-info h3{margin-bottom:12px!important}
}
@media(max-width:390px){
  .couple-photo-shell{width:86%!important}
  .couple-photo-window{inset:8.8% 11% 7.6%!important}
  .couple-top-accent{width:36%;top:14.2%}
  .couple-top-accent-left{left:16.5%}
  .couple-top-accent-right{left:83.5%}
  .couple-info{margin-top:18px!important}
}

/* =========================================================
   v4.32 — baseline v4.30 refinement
   - reduce overhanging couple floral tails
   - bottom info floral hugs the info block with no gap
   - improve readability of couple info
   - opening copy becomes more contrast while staying on-theme
   ========================================================= */

/* Opening / hero readability */
.hero-monogram{color:#8f173f!important}
.hero-subtitle{
  color:#7a4b3f!important;
  text-shadow:0 1px 0 rgba(255,255,255,.55);
}
.hero-names{
  color:#8f173f!important;
  text-shadow:0 2px 0 rgba(255,252,247,.85), 0 10px 22px rgba(92,40,55,.10);
}
.hero-hashtag{
  color:#9a6a53!important;
  text-shadow:0 1px 0 rgba(255,255,255,.5);
}

/* Keep top accents over the photo, but calmer than previous experiment */
.couple-top-accent{
  position:absolute;
  top:13.9%;
  width:30%;
  height:auto;
  object-fit:contain;
  pointer-events:none;
  z-index:8;
  filter:drop-shadow(0 8px 10px rgba(91,42,55,.08));
}
.couple-top-accent-left{left:18.6%;transform:translate(-50%,-50%) scale(.92)}
.couple-top-accent-right{left:81.4%;transform:translate(-50%,-50%) scale(.92)}
.couple-photo-shell{z-index:6}
.couple-photo-frame{z-index:7}
.couple-photo-window{z-index:5}

/* Reduce the sense of floral hanging too far down */
.bride-foliage{width:98%!important;transform:translate(-50%,-50%) scale(.99)!important}
.groom-foliage{width:92%!important;transform:translate(-50%,-50%) scale(1)!important}
.bride-bloom{width:100%!important;transform:translate(-50%,-49%) scale(.985)!important}
.groom-bloom{width:100%!important;transform:translate(-50%,-49%) scale(.985)!important}
.bride-vine{width:62%!important;transform:translate(-64%,-40%) rotate(-2deg)!important}
.groom-vine{width:60%!important;transform:translate(-33%,-40%) rotate(2deg)!important}

/* Safe photo fit inside frame */
.couple-photo-shell{width:80%!important}
.couple-photo-window{inset:10.8% 13.2% 9.4%!important}

/* Couple info readability */
.couple-info{
  position:relative;
  z-index:9;
  margin-top:18px!important;
  padding-bottom:72px!important;
}
.couple-role{
  color:#a15d47!important;
  position:relative;
  z-index:3;
}
.couple-info h3{
  color:#8f173f!important;
  position:relative;
  z-index:3;
  margin-bottom:14px!important;
  text-shadow:0 1px 0 rgba(255,248,240,.82);
}
.couple-info>p:last-child{
  color:#6f4038!important;
  position:relative;
  z-index:3;
  margin-bottom:0!important;
}
.groom-info{padding-right:6px!important}
.bride-info{padding-left:6px!important}

/* Bottom floral should touch the info area, like an attached decoration */
.couple-info-bottom-accent{
  position:absolute;
  bottom:-6px;
  width:154px;
  height:auto;
  pointer-events:none;
  user-select:none;
  z-index:1;
  filter:drop-shadow(0 8px 10px rgba(91,42,55,.06));
}
.bride-info-accent{right:-2px;transform:translate(0,0)}
.groom-info-accent{left:-2px;transform:translate(0,0)}

/* Make the ornamental accent feel attached by keeping content above it */
.bride-info > :not(.couple-info-bottom-accent),
.groom-info > :not(.couple-info-bottom-accent){position:relative;z-index:3}

@media(min-width:681px){
  .couple-art-stage{width:min(60vw,536px)!important}
  .couple-top-accent{width:24%!important;top:13.1%!important}
  .couple-top-accent-left{left:20%}
  .couple-top-accent-right{left:80%}
  .couple-photo-shell{width:79%!important}
  .couple-photo-window{inset:10.8% 13.4% 9.6%!important}
  .couple-info{margin-top:16px!important;padding-bottom:84px!important}
  .couple-info-bottom-accent{width:172px;bottom:-8px}
  .bride-info-accent{right:0}
  .groom-info-accent{left:0}
}
@media(max-width:680px){
  .couple-art-stage{width:96vw!important}
  .couple-top-accent{width:32%!important;top:14.4%!important}
  .couple-top-accent-left{left:18%}
  .couple-top-accent-right{left:82%}
  .couple-photo-shell{width:81%!important}
  .couple-photo-window{inset:10.6% 12.9% 9.1%!important}
  .couple-info{width:84vw!important;margin-top:20px!important;padding-bottom:74px!important}
  .couple-info-bottom-accent{width:148px;bottom:-6px}
  .bride-info-accent{right:-2px}
  .groom-info-accent{left:-2px}
}
@media(max-width:390px){
  .couple-top-accent{width:34%!important;top:14.7%!important}
  .couple-top-accent-left{left:17.4%}
  .couple-top-accent-right{left:82.6%}
  .couple-photo-shell{width:82%!important}
  .couple-photo-window{inset:10.3% 12.7% 8.9%!important}
  .couple-info{margin-top:18px!important;padding-bottom:68px!important}
  .couple-info-bottom-accent{width:138px;bottom:-4px}
}


/* =========================================================
   v4.34 — baseline v4.32 refinement bundle
   - Bride/Groom bottom floral moved to section/profile level
   - mobile event/story/gallery spacing adjustments from review
   ========================================================= */

/* Couple bottom ornament should be section-level, not attached to .couple-info */
.couple-info-bottom-accent,
.bride-info-accent,
.groom-info-accent{display:none!important}

.couple-profile{
  overflow:hidden;
}

.couple-info{
  padding-bottom:0!important;
}
.bride-info,
.groom-info{
  padding-bottom:0!important;
}

/* Keep info fully readable and above decorative section ornament */
.couple-info,
.couple-info > *{
  position:relative;
  z-index:8;
}

/* Re-purpose the profile-level corner floral as the larger lower accent */
.couple-edge{
  z-index:2!important;
  width:min(52vw,250px)!important;
  opacity:1!important;
}
/* Bride text sits left, so place accent at lower-right */
.couple-edge-bride{
  left:auto!important;
  right:-7%!important;
  bottom:1.2%!important;
  transform-origin:100% 100%!important;
}
/* Groom text sits right, so place accent at lower-left */
.couple-edge-groom{
  right:auto!important;
  left:-7%!important;
  bottom:1.2%!important;
  transform-origin:0 100%!important;
}
/* animation should still resolve to final resting position */
.couple-edge-bride.motion-grow.is-inview{animation:edgeBrideSectionIn 1.55s .2s cubic-bezier(.16,.78,.2,1) forwards!important}
.couple-edge-groom.motion-grow.is-inview{animation:edgeGroomSectionIn 1.55s .2s cubic-bezier(.16,.78,.2,1) forwards!important}
@keyframes edgeBrideSectionIn{from{opacity:0;transform:translate(24px,30px) scale(.9)}to{opacity:1;transform:none}}
@keyframes edgeGroomSectionIn{from{opacity:0;transform:translate(-24px,30px) scale(.9)}to{opacity:1;transform:none}}

@media(min-width:681px){
  .couple-edge{width:min(26vw,270px)!important}
  .couple-edge-bride{right:-1%!important;bottom:1.2%!important}
  .couple-edge-groom{left:-1%!important;bottom:1.2%!important}
}
@media(max-width:680px){
  .couple-edge{width:min(48vw,220px)!important}
  .couple-edge-bride{right:-1%!important;bottom:1.4%!important}
  .couple-edge-groom{left:-1%!important;bottom:1.4%!important}
}
@media(max-width:390px){
  .couple-edge{width:min(52vw,208px)!important}
  .couple-edge-bride{right:0!important;bottom:1.6%!important}
  .couple-edge-groom{left:0!important;bottom:1.6%!important}
}

/* Story mobile placement */
@media(max-width:680px){
  .story-edge-floral-l1{top:2%!important;left:-14%!important}
  .story-edge-floral-r1{top:0%!important;right:-2%!important}
  .section-bloom-story-left{top:15%!important;left:-20%!important}
}

/* Gallery mosaic mobile pull-up */
@media(max-width:680px){
  .gallery-mosaic-section{margin-top:-15px!important;padding-top:88px!important}
}

/* Wedding event mobile spacing */
@media(max-width:390px){
  .event-content{padding-top:260px!important}
  .event-scene--single .event-content{padding-top:270px!important}
  .event-garden-bottom{width:200%!important}
}


/* =========================================================
   v4.38 — welcome frame paper fill + visible music control
   Baseline: v4.34
   ========================================================= */
.welcome-frame-fill{
  position:absolute;
  z-index:2;
  width:min(88vw,600px);
  height:88vh;
  object-fit:contain;
  opacity:1;
  filter:drop-shadow(0 10px 24px rgba(93,58,43,.10));
  animation:framePanelIn 1.2s .05s cubic-bezier(.2,.8,.2,1) both;
  pointer-events:none;
}
@keyframes framePanelIn{from{opacity:0;transform:scale(.965)}to{opacity:1;transform:scale(1)}}
.welcome-frame{z-index:3!important;opacity:.96;filter:drop-shadow(0 10px 22px rgba(113,35,65,.12))!important}
.welcome-copy{
  z-index:8!important;
  width:min(74%,410px)!important;
  padding:38px 22px 46px!important;
}
.welcome .eyebrow{color:#7a3550!important;text-shadow:0 1px 0 rgba(255,250,244,.7)}
.welcome h1{color:#8f173f!important;text-shadow:0 1px 0 rgba(255,250,244,.92),0 5px 16px rgba(255,244,235,.82)!important}
.welcome .guest-label{color:#7a4d40!important;text-shadow:0 1px 0 rgba(255,250,244,.88)}
.welcome .guest-name{color:#5b2436!important;text-shadow:0 1px 0 rgba(255,250,244,.95),0 4px 14px rgba(255,244,235,.86);font-weight:700!important}
.music-player{opacity:1!important;visibility:visible!important;pointer-events:auto!important;transform:none!important}
@media(max-width:680px){
  .welcome-frame-fill,.welcome-frame{width:100vw;height:82vh}
  .welcome-copy{width:min(72%,340px)!important;padding:32px 18px 40px!important}
}
@media(prefers-reduced-motion:reduce){.welcome-frame-fill{animation:none!important;transform:none!important}}


/* =========================================================
   v4.41 — Guest QR section directly after welcome
   Baseline: v4.40
   ========================================================= */
.guest-qr-section{
  min-height:92svh;
  padding:78px 24px 86px;
  isolation:isolate;
  background:
    linear-gradient(rgba(248,241,229,.76),rgba(248,241,229,.82)),
    url('assets/bg-paper.webp') center/cover;
}
.guest-qr-section:before{
  content:"";
  position:absolute;
  inset:0;
  background:url('assets/welcome-garden-bg.webp') center 48%/cover no-repeat;
  opacity:.10;
  z-index:-2;
}
.guest-qr-card{
  position:relative;
  z-index:3;
  width:min(86vw,430px);
  margin:auto;
  padding:38px 28px 34px;
  text-align:center;
  border:1px solid rgba(220,163,61,.35);
  border-radius:38px 38px 24px 24px;
  background:rgba(250,246,237,.88);
  box-shadow:0 24px 55px rgba(88,42,55,.11);
  backdrop-filter:blur(4px);
}
.guest-qr-title{
  margin:0;
  color:var(--mar);
  font:600 clamp(24px,5vw,34px)/1.05 'Cormorant Garamond',serif;
  letter-spacing:.03em;
}
.guest-qr-name{
  margin:12px 0 24px;
  color:#5b2436;
  font:500 clamp(30px,7vw,46px)/1.08 'Allura',cursive;
}
.guest-qr-frame{
  width:min(64vw,260px);
  aspect-ratio:1;
  margin:0 auto;
  padding:14px;
  border-radius:24px;
  background:#faf5ec;
  border:1px solid rgba(220,163,61,.48);
  box-shadow:0 16px 38px rgba(76,42,48,.12);
}
.guest-qr-image{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  border-radius:14px;
}
.guest-qr-bloom{
  position:absolute;
  z-index:1;
  width:min(44vw,360px);
  opacity:.78;
  pointer-events:none;
  filter:drop-shadow(0 10px 24px rgba(86,44,50,.08));
}
.guest-qr-bloom-left{left:-10%;bottom:-4%;transform:rotate(-5deg)}
.guest-qr-bloom-right{right:-10%;top:-2%;transform:rotate(7deg)}
@media(max-width:680px){
  .guest-qr-section{min-height:88svh;padding:64px 20px 74px}
  .guest-qr-card{width:min(88vw,370px);padding:32px 22px 30px;border-radius:32px 32px 22px 22px}
  .guest-qr-name{margin-bottom:22px}
  .guest-qr-frame{width:min(68vw,245px);padding:12px;border-radius:22px}
  .guest-qr-bloom{width:58vw;opacity:.68}
  .guest-qr-bloom-left{left:-28%;bottom:-2%}
  .guest-qr-bloom-right{right:-28%;top:1%}
}
@media(max-width:390px){
  .guest-qr-card{width:90vw;padding:30px 18px 28px}
  .guest-qr-frame{width:min(70vw,230px)}
}


/* =========================================================
   v4.42 — remove event heading block + blend thank you scene
   Baseline: v4.41
   ========================================================= */
.event-section-heading{display:none!important}

/* The thank-you scene should feel connected, softer, and more on-brand. */
.closing-thankyou{
  background:
    radial-gradient(circle at 50% 38%, rgba(255,255,255,.72), transparent 33%),
    linear-gradient(180deg, rgba(250,246,240,.94) 0%, rgba(250,244,237,.82) 48%, rgba(247,241,232,.92) 100%),
    url('assets/bg-watercolor.webp') center/cover,
    url('assets/bg-paper.webp') center/cover;
}
.closing-thankyou::before,
.closing-thankyou::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
}
.closing-thankyou::before{
  z-index:0;
  background:
    radial-gradient(circle at 50% 84%, rgba(247,197,213,.24), transparent 29%),
    url('assets/section-bloom-left.webp') left -5% bottom -2% / min(23vw,220px) no-repeat,
    url('assets/section-bloom-right.webp') right -5% bottom -2% / min(23vw,220px) no-repeat;
  opacity:.24;
}
.closing-thankyou::after{
  inset:auto 0 -1px 0;
  height:126px;
  z-index:1;
  background:
    linear-gradient(180deg, rgba(247,241,232,0) 0%, rgba(247,241,232,.42) 34%, rgba(247,241,232,.95) 100%),
    url('assets/bg-watercolor.webp') center bottom/cover;
  opacity:.92;
}
.closing-thank-frame{
  width:min(98vw,600px);
  top:51%;
  opacity:0;
  filter:sepia(.06) saturate(.96) drop-shadow(0 10px 18px rgba(91,42,55,.045));
}
@keyframes closingThankFrameIn{to{opacity:.09;transform:translate(-50%,-50%) scale(1)}}
.closing-thank-copy{
  width:min(72vw,540px);
}
.closing-thank-script{
  text-shadow:0 1px 0 rgba(255,252,247,.65);
}
.closing-thank-copy>p:last-child{
  color:#8f6251;
}
.closing-thank-top-flower{
  width:min(22vw,184px);
  top:-2%;
}
.closing-thank-top-left{left:-2%}
.closing-thank-top-right{right:-2%}
.closing-thank-accent{
  width:min(27vw,232px);
  z-index:3;
}
.closing-thank-accent-left{left:-3%;bottom:0;transform-origin:0 100%}
.closing-thank-accent-right{right:-3%;bottom:0;transform-origin:100% 100%}

@media(max-width:680px){
  .closing-thankyou{
    min-height:450px;
    padding:74px 16px 86px;
  }
  .closing-thank-frame{width:132vw}
  .closing-thank-copy{width:79vw}
  .closing-thank-top-flower{width:36vw;top:-1%}
  .closing-thank-top-left{left:-10%}
  .closing-thank-top-right{right:-10%}
  .closing-thank-accent{width:46vw}
  .closing-thank-accent-left{left:-10%;bottom:-1%}
  .closing-thank-accent-right{right:-10%;bottom:-1%}
  .closing-thankyou::before{
    background:
      radial-gradient(circle at 50% 84%, rgba(247,197,213,.24), transparent 31%),
      url('assets/section-bloom-left.webp') left -11% bottom -1% / 40vw no-repeat,
      url('assets/section-bloom-right.webp') right -11% bottom -1% / 40vw no-repeat;
  }
  .closing-thankyou::after{height:138px}
}


/* =========================================================
   v4.43 — countdown order refinement + exact mobile Quran stage
   Source: v4.42 candidate, baseline remains v4.41
   ========================================================= */
.countdown-heading{display:none!important}
.wedding-day-block{
  width:min(560px,86vw);
  margin:0 auto 38px;
}
.wedding-day-script{margin:0 0 16px}
.wedding-day-copy{margin-bottom:26px}
.wedding-day-date{margin:0 0 34px}
.wedding-day-divider,.wedding-day-line{display:none!important}
.countdown-grid{margin-bottom:24px}

@media (max-width: 680px) {
  .quran-stage {
    width: 105vw;
    height: clamp(260px, 67vw, 315px);
    margin: -70px -4px;
  }

  .countdown-section{
    padding-top:122px;
    min-height:900px;
  }
  .countdown-content{padding-top:0}
  .wedding-day-block{margin:0 auto 34px}
  .wedding-day-script{font-size:47px;margin-bottom:16px}
  .wedding-day-copy{font-size:12.5px;line-height:1.7;margin-bottom:24px}
  .wedding-day-date{margin-bottom:32px}
  .countdown-grid{margin-bottom:24px}
}

/* =========================================================
   v4.44 — user-directed couple/countdown responsive tuning
   Baseline: v4.43
   ========================================================= */
.couple-script-label {
  margin: 70px 0 14px;
  color: var(--mar);
  font: 400 clamp(42px, 11vw, 62px) / .86 'Allura', cursive;
}

@media (max-width: 680px) {
  .countdown-section {
    padding-top: 162px;
    min-height: 900px;
  }

  .countdown-bridge-right {
    right: -4%;
  }

  .countdown-bridge-bloom {
    width: 52vw;
    bottom: -8px;
  }
}

@media (max-width: 390px) {
  .countdown-foliage-right,
  .countdown-bloom-right {
    right: -35%;
  }

  .countdown-bridge-bloom {
    width: 66vw;
  }
}


/* =========================================================
   v4.45 — thank-you section blend refinement + couple illustration
   Based on v4.44 baseline
   ========================================================= */
.closing-thankyou{
  min-height: 470px;
  padding: 92px 18px 88px;
  background:
    linear-gradient(180deg, rgba(249,244,238,.96) 0%, rgba(247,241,234,.93) 48%, rgba(246,239,231,.97) 100%),
    url('assets/bg-paper.webp') center/cover;
}
.closing-thankyou::before,
.closing-thankyou::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
}
.closing-thankyou::before{
  z-index:0;
  background:
    radial-gradient(circle at 50% 32%, rgba(255,255,255,.56), transparent 25%),
    url('assets/bg-watercolor.webp') center/cover;
  opacity:.76;
}
.closing-thankyou::after{
  z-index:1;
  background:
    url('assets/flower-top-left.webp') left -4% top -1% / min(24vw,180px) no-repeat,
    url('assets/flower-top-right.webp') right -4% top -1% / min(24vw,180px) no-repeat,
    url('assets/section-bloom-left.webp') left -5% bottom -2% / min(24vw,220px) no-repeat,
    url('assets/section-bloom-right.webp') right -5% bottom -2% / min(24vw,220px) no-repeat,
    linear-gradient(180deg, rgba(247,241,232,0) 0%, rgba(247,241,232,.18) 65%, rgba(247,241,232,.88) 100%);
  opacity:.76;
}
.closing-thank-frame{
  width:min(100vw,610px);
  top:50%;
  opacity:0;
  filter:sepia(.04) saturate(.96) drop-shadow(0 14px 20px rgba(91,42,55,.04));
}
@keyframes closingThankFrameIn{to{opacity:.08;transform:translate(-50%,-50%) scale(1)}}
.closing-thank-copy{
  position:relative;
  z-index:6;
  width:min(74vw,540px);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:0;
}
.closing-thank-illustration{
  width:min(44vw,210px);
  height:auto;
  display:block;
  margin:0 auto 10px;
  filter:drop-shadow(0 12px 18px rgba(91,42,55,.08));
}
.closing-thank-script{
  margin:0 0 10px;
  text-shadow:0 1px 0 rgba(255,252,247,.62);
}
.closing-thank-copy>p:last-child{
  margin:0;
  color:#8f6251;
  line-height:1.7;
}
.closing-thank-top-flower{
  width:min(21vw,172px);
  top:-1%;
}
.closing-thank-top-left{left:-1%;}
.closing-thank-top-right{right:-1%;}
.closing-thank-accent{
  width:min(26vw,220px);
  z-index:3;
}
.closing-thank-accent-left{left:-2%;bottom:0;transform-origin:0 100%}
.closing-thank-accent-right{right:-2%;bottom:0;transform-origin:100% 100%}

@media(max-width:680px){
  .closing-thankyou{
    min-height: 500px;
    padding: 88px 16px 90px;
  }
  .closing-thankyou::after{
    background:
      url('assets/flower-top-left.webp') left -11% top -1% / 33vw no-repeat,
      url('assets/flower-top-right.webp') right -11% top -1% / 33vw no-repeat,
      url('assets/section-bloom-left.webp') left -10% bottom -1% / 40vw no-repeat,
      url('assets/section-bloom-right.webp') right -10% bottom -1% / 40vw no-repeat,
      linear-gradient(180deg, rgba(247,241,232,0) 0%, rgba(247,241,232,.15) 63%, rgba(247,241,232,.90) 100%);
  }
  .closing-thank-frame{width:134vw;}
  .closing-thank-copy{width:80vw;}
  .closing-thank-illustration{width:min(54vw,220px);margin-bottom:8px;}
  .closing-thank-script{font-size:49px;}
  .closing-thank-copy>p:last-child{font-size:13.5px;}
  .closing-thank-top-flower{width:34vw;top:-1%;}
  .closing-thank-top-left{left:-9%;}
  .closing-thank-top-right{right:-9%;}
  .closing-thank-accent{width:44vw;}
  .closing-thank-accent-left{left:-8%;bottom:-1%;}
  .closing-thank-accent-right{right:-8%;bottom:-1%;}
}

@media(max-width:390px){
  .closing-thankyou{
    min-height: 485px;
    padding: 82px 14px 86px;
  }
  .closing-thank-illustration{width:58vw;max-width:212px;}
  .closing-thank-script{font-size:46px;}
}

/* =========================================================
   v4.46 — slower luxury reveal on welcome/hero opening
   Baseline: v4.45
   ========================================================= */
/* Let the botanical scenery breathe first, then reveal the invitation content. */
.welcome-frame-fill{
  opacity:0;
  animation:welcomeFrameFillLuxury 1.7s 1.25s cubic-bezier(.16,.78,.2,1) forwards!important;
}
.welcome-frame{
  opacity:0;
  animation:welcomeFrameLuxury 1.9s 1.45s cubic-bezier(.16,.78,.2,1) forwards!important;
}
.welcome-copy{
  animation:none!important;
}
.welcome-copy .eyebrow,
.welcome-copy h1,
.welcome-copy .gold-rule,
.welcome-copy .guest-label,
.welcome-copy .guest-name,
.welcome-copy #openInvite{
  opacity:0;
}
.welcome-copy .eyebrow{
  animation:welcomeCopyLuxury .95s 2.35s ease forwards;
}
.welcome-copy h1{
  animation:welcomeNamesLuxury 1.25s 2.75s cubic-bezier(.16,.78,.2,1) forwards;
}
.welcome-copy .gold-rule{
  animation:welcomeRuleLuxury .9s 3.35s ease forwards;
}
.welcome-copy .guest-label{
  animation:welcomeCopyLuxury .9s 3.55s ease forwards;
}
.welcome-copy .guest-name{
  animation:welcomeCopyLuxury 1s 3.8s ease forwards;
}
.welcome-copy #openInvite{
  animation:welcomeButtonLuxury 1s 4.25s cubic-bezier(.16,.78,.2,1) forwards;
}

@keyframes welcomeFrameFillLuxury{
  0%{opacity:0;transform:scale(.965)}
  100%{opacity:1;transform:scale(1)}
}
@keyframes welcomeFrameLuxury{
  0%{opacity:0;transform:scale(.94)}
  45%{opacity:.55}
  100%{opacity:.96;transform:scale(1)}
}
@keyframes welcomeCopyLuxury{
  0%{opacity:0;transform:translateY(16px)}
  100%{opacity:1;transform:translateY(0)}
}
@keyframes welcomeNamesLuxury{
  0%{opacity:0;transform:translateY(22px) scale(.97)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes welcomeRuleLuxury{
  0%{opacity:0;transform:scaleX(.2)}
  100%{opacity:1;transform:scaleX(1)}
}
@keyframes welcomeButtonLuxury{
  0%{opacity:0;transform:translateY(14px) scale(.96)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}

@media(prefers-reduced-motion:reduce){
  .welcome-frame-fill,.welcome-frame,
  .welcome-copy .eyebrow,.welcome-copy h1,.welcome-copy .gold-rule,
  .welcome-copy .guest-label,.welcome-copy .guest-name,.welcome-copy #openInvite{
    animation:none!important;
    opacity:1!important;
    transform:none!important;
  }
}


/* v4.47 — restore animated ornamental frame visibility */
.welcome .welcome-frame{
  opacity:0;
  animation:welcomeFrameLuxury 1.9s 1.45s cubic-bezier(.16,.78,.2,1) forwards!important;
}
@media(prefers-reduced-motion:reduce){
  .welcome .welcome-frame{opacity:.96!important;animation:none!important;transform:none!important}
}


/* =========================================================
   WordPress v1.4.x production extensions
   Only components absent from OFFLINE v4.47 are added here:
   Wedding Wall, RSVP status/pax, complete Wedding Gift controls.
   ========================================================= */
.rsvp-deadline{margin:10px 0 0;font:500 13px 'Cormorant Garamond',serif;color:#9a6571}
.alova-rsvp-form select[name="guests"]{transition:opacity .2s ease}
.form-status:empty{display:none}.form-status{margin:3px 0 0;font-size:12px;line-height:1.45;color:#8b5965}.form-status.is-success{color:#47653a}.form-status.is-error{color:#9f2f4b}
.wishes-lush{min-height:auto;padding-top:92px;padding-bottom:120px;background:linear-gradient(rgba(245,241,232,.3),rgba(245,241,232,.46)),url('assets/bg-watercolor.webp') center/cover;isolation:isolate}
.wishes-heading{position:relative!important;z-index:12!important;width:min(88vw,620px)!important;margin:0 auto 24px;padding-inline:14px}
.wishes-intro{max-width:560px;margin:0 auto;font:400 17px/1.65 'Cormorant Garamond',serif;color:#744958}
.wishes-card{position:relative;z-index:10!important;width:min(90vw,650px);margin:0 auto;padding:30px;border:1px solid rgba(220,163,61,.4);border-radius:28px;background:rgba(255,252,247,.82);box-shadow:0 18px 42px rgba(91,42,55,.08);backdrop-filter:blur(5px)}
.wishes-card:before{content:"";position:absolute;inset:9px;border:1px solid rgba(193,0,107,.08);border-radius:20px;pointer-events:none}
.wish-form{position:relative;z-index:2;display:grid;gap:12px}.wish-form input,.wish-form textarea{width:100%;padding:14px 15px;border:1px solid rgba(193,0,107,.17);border-radius:12px;background:rgba(255,255,255,.72);color:var(--ink);font:inherit;resize:vertical;outline:none}.wish-form input:focus,.wish-form textarea:focus{border-color:rgba(193,0,107,.48);box-shadow:0 0 0 3px rgba(193,0,107,.08)}.wish-form button{justify-self:center;border:0;border-radius:999px;padding:13px 24px;background:linear-gradient(135deg,var(--mar),var(--m));color:#fff;font:600 13px 'Plus Jakarta Sans',sans-serif;cursor:pointer;box-shadow:0 12px 28px rgba(143,23,63,.18)}
.wishes-login-note{position:relative;z-index:2;margin:0 0 20px;color:#8e6972;font:500 13px/1.5 'Plus Jakarta Sans',sans-serif}.wish-wall{position:relative;z-index:2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:24px;text-align:left}.wish-card{position:relative;padding:18px 18px 17px;border:1px solid rgba(220,163,61,.3);border-radius:18px;background:rgba(255,255,255,.64);box-shadow:0 10px 22px rgba(91,42,55,.06)}.wish-card__message{margin:0;color:#68414e;font:400 15px/1.55 'Cormorant Garamond',serif}.wish-card__author{margin:9px 0 0;color:var(--mar);font:600 11px/1.3 'Plus Jakarta Sans',sans-serif;letter-spacing:.05em}.wish-card.is-new{animation:wishJardinIn .7s cubic-bezier(.16,.78,.2,1) both}@keyframes wishJardinIn{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.wishes-corner{position:absolute;z-index:1!important;width:min(38vw,340px);pointer-events:none!important;opacity:.72}.wishes-corner-left{left:-18%!important;top:-7%!important}.wishes-corner-right{right:-10%!important;bottom:-8%!important;transform:rotate(180deg)}
.gift-cards{display:grid;gap:16px;margin-top:28px}.gift-cards .bank-card{margin:0 auto;width:min(100%,410px)}.gift-qr{display:block;width:min(190px,70%);aspect-ratio:1;margin:14px auto;object-fit:contain;border-radius:12px;background:#fff;padding:8px}.gift-copy-button{margin:14px auto 0;border:1px solid rgba(143,23,63,.18);border-radius:999px;background:#fff9f4;color:var(--mar);padding:9px 16px;font:600 11px 'Plus Jakarta Sans',sans-serif;cursor:pointer}.physical-gift-card span{margin-top:10px;font:400 14px/1.55 'Plus Jakarta Sans',sans-serif}.closing-credit a,.site-watermark-copy a{color:inherit;text-decoration:none}
@media(max-width:680px){.wish-wall{grid-template-columns:1fr}.wishes-card{width:min(91vw,390px);padding:24px 17px}.wishes-lush{padding:76px 20px 105px}.wishes-corner{width:62vw;opacity:.5}.wishes-heading{width:min(86vw,390px)!important;padding-inline:10px}.wishes-corner-left{left:-36%!important;top:-6%!important}.wishes-corner-right{right:-28%!important;bottom:-6%!important}}
@media(max-width:430px){.wishes-corner-left{left:-40%!important;top:-5%!important}}


/* =========================================================
   WP v1.4.1 — real-device Safari portrait fill compatibility
   Keep the authored frame/crop/focal/zoom; only make the image
   sizing chain explicit so WebKit cannot fall back to intrinsic
   image height inside an aspect-ratio + absolute-position shell.
   ========================================================= */
.couple-photo-shell{height:80%!important}
.couple-photo-window .couple-photo-image{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  min-width:100%!important;
  min-height:100%!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:cover!important;
  display:block!important;
}
@media(min-width:681px){.couple-photo-shell{height:79%!important}}
@media(max-width:680px){.couple-photo-shell{height:81%!important}}
@media(max-width:390px){.couple-photo-shell{height:82%!important}}


/* =========================================================
   v1.4.3 — Gallery polaroid media wrapper (Safari/iPhone fix)
   ========================================================= */
.gallery-polaroid{display:flex;flex-direction:column}
.gallery-polaroid-media{position:relative;flex:1 1 auto;min-height:0;overflow:hidden;border-radius:3px;background:rgba(255,250,244,.72)}
.gallery-polaroid .gallery-polaroid-media img{display:block;width:100%;height:100%!important;object-fit:cover}
.gallery-polaroid .gallery-polaroid-media .gallery-photo-placeholder{position:absolute;inset:0;width:auto;height:auto;border-radius:3px}


/* v1.5.5 copy-safe rendering: manual Enter in Copywriting Manager is respected. */
.welcome-kicker,.welcome-to,.guest-label,.hero-kicker,.quran-text,.quran-ref,
.couple-intro-label,.couple-intro p,.couple-role,.wedding-day-script,.wedding-day-copy,
.story-heading .eyebrow,.story-heading h3,.story-lead,.event-kicker,.event-schedule-label,
.event-venue strong,.event-venue address,.gallery-lush .eyebrow,.gallery-lush .section-heading h3,
.gallery-story-heading .eyebrow,.gallery-story-heading h3,.gallery-story-copy,
.rsvp-heading .eyebrow,.rsvp-heading h3,.rsvp-intro,.rsvp-title,.rsvp-copy,
.wishes-heading .eyebrow,.wishes-heading h3,.wishes-intro,
.gift-heading .eyebrow,.gift-heading h3,.gift-lush .section-heading p,
.closing-section .eyebrow,.closing-section h3,.closing-section p {
  overflow-wrap:break-word;
  word-break:normal;
}


/* =========================================================
   WP v1.6.0 — Theme-owned Loading Screen + countdown centering
   Visual baseline remains OFFLINE v4.47.
   ========================================================= */
.alova-loading-screen{
  position:fixed;inset:0;z-index:999999;display:grid;place-items:center;overflow:hidden;
  background:#f8f0e5;opacity:1;visibility:visible;pointer-events:auto;
  transition:opacity .42s ease,visibility .42s ease;
}
.alova-loading-screen.is-complete{opacity:0;visibility:hidden;pointer-events:none}
.alova-loading-paper{position:absolute;inset:0;background:url('assets/bg-paper.webp') center/cover no-repeat;opacity:.94}
.alova-loading-corner{position:absolute;z-index:2;width:min(52vw,270px);height:auto;pointer-events:none;filter:saturate(.96)}
.alova-loading-corner-left{left:-13%;top:-5%;transform:rotate(-3deg)}
.alova-loading-corner-right{right:-13%;bottom:-6%;transform:rotate(177deg)}
.alova-loading-butterfly{position:absolute;z-index:3;width:48px;height:48px;object-fit:contain;right:18%;top:20%;animation:alovaLoaderButterfly 2.6s ease-in-out infinite}
.alova-loading-content{position:relative;z-index:5;width:min(78vw,360px);display:flex;flex-direction:column;align-items:center;text-align:center}
.alova-loading-monogram{display:block;width:min(122px,31vw);height:auto;margin:0 auto 14px;filter:drop-shadow(0 10px 22px rgba(93,41,58,.08))}
.alova-loading-couple{margin:0;color:var(--mar,#8f173f);font:500 clamp(22px,6vw,31px)/1.05 'Cormorant Garamond',serif;text-wrap:balance}
.alova-loading-copy{margin:12px 0 0;color:#9b6257;font:500 12px/1.5 'Cormorant Garamond',serif;letter-spacing:.08em}
.alova-loading-line{position:relative;display:block;width:min(180px,48vw);height:1px;margin:18px auto 0;background:rgba(143,23,63,.16);overflow:hidden}
.alova-loading-line i{position:absolute;inset:0 auto 0 0;width:42%;background:linear-gradient(90deg,transparent,#c89547,transparent);animation:alovaLoaderLine 1.25s ease-in-out infinite}
@keyframes alovaLoaderLine{0%{transform:translateX(-120%)}100%{transform:translateX(340%)}}
@keyframes alovaLoaderButterfly{0%,100%{transform:translate(0,0) rotate(-7deg)}50%{transform:translate(-7px,-9px) rotate(4deg)}}
@media(max-width:680px){.alova-loading-corner{width:62vw}.alova-loading-corner-left{left:-23%;top:-3%}.alova-loading-corner-right{right:-24%;bottom:-4%}.alova-loading-butterfly{right:14%;top:19%;width:42px;height:42px}}
@media(prefers-reduced-motion:reduce){.alova-loading-butterfly,.alova-loading-line i{animation:none}}

/* Explicit optical centering for Wedding Day copy on real mobile devices. */
.wedding-day-block{display:flex;flex-direction:column;align-items:center;text-align:center}
.wedding-day-script,.wedding-day-copy,.wedding-day-date{box-sizing:border-box;width:100%;margin-left:auto;margin-right:auto;text-align:center;text-indent:0}
.wedding-day-copy{max-width:500px;text-wrap:balance;padding-left:0;padding-right:0}
.wedding-day-date{max-width:560px}
