@font-face{
  font-family:KNR;
  src:local('Georgia')}
*{
  box-sizing:border-box}
html{
  scroll-behavior:smooth}
body{
  margin:0;
  color:#392c32;
  background:#fffaf8;
  font:16px/1.75 Arial,sans-serif}
a{
  color:inherit;
  text-decoration:none}
button,input,textarea,select{
  font:inherit}
button,a,input,select,textarea{
  -webkit-tap-highlight-color:transparent}
button{
  cursor:pointer}
button:focus-visible,a:focus-visible{
  outline:3px solid #ca2767;
  outline-offset:5px}
img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover}
h1,h2,h3{
  font-family:Georgia,serif;
  font-weight:400;
  line-height:1.14;
  letter-spacing:0;
  margin:0 0 24px}
h1{
  font-size:clamp(42px,5.7vw,86px)}
h2{
  font-size:clamp(35px,4vw,61px)}
h3{
  font-size:clamp(25px,2.5vw,36px)}
em{
  color:#cf276c;
  font-weight:400}
p{
  margin:0 0 22px}
header{
  position:absolute;
  z-index:20;
  top:0;
  left:0;
  right:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:22px 5%;
  gap:30px}
header .logo{
  width:77px;
  flex-shrink:0}
header .logo img{
  object-fit:contain}
nav{
  display:flex;
  align-items:center;
  gap:24px;
  font-size:12px}
nav a{
  padding:8px 0}
nav a[aria-current=page]{
  border-bottom:1px solid #cf276c}
.nav-cta,.button{
  display:inline-flex;
  justify-content:center;
  align-items:center;
  background:#d92972;
  color:white;
  padding:17px 25px;
  border:1px solid transparent;
  font-size:13px;
  letter-spacing:.02em}
.button.secondary{
  background:transparent;
  border-color:#d92972;
  color:#b9225e}
.toggle{
  display:none}
.eyebrow{
  font-size:10px;
  font-weight:600;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:#b72362}
.wrap{
  width:min(1240px,88%);
  margin:auto}
.section{
  padding:100px 0}
.intro-copy{
  max-width:700px}
.hero{
  min-height:760px;
  height:100svh;
  position:relative;
  display:grid;
  place-items:center;
  text-align:center;
  color:white}
.home-page{
  height:100svh;
  overflow:hidden}
.home-page .hero{
  min-height:0;
  height:100svh}
.hero>img,.hero-shade{
  position:absolute;
  inset:0;
  z-index:-1}
.hero-shade{
  background:linear-gradient(180deg,#1c142c40,#28152530 35%,#301b2d65)}
.hero-content{
  max-width:1000px;
  padding:100px 25px 40px}
.hero h1{
  font-size:clamp(47px,6.8vw,110px);
  line-height:1.08}
.hero em{
  color:#ffe4ed}
.hero p{
  max-width:520px;
  margin:0 auto 32px}
.hero .eyebrow{
  color:white}
.home-page header{
  color:white}
.hero-bottom{
  position:absolute;
  bottom:32px;
  left:5%;
  right:5%;
  display:flex;
  justify-content:space-between;
  font-size:10px;
  letter-spacing:.12em}
.page-hero{
  padding-top:150px;
  display:grid;
  grid-template-columns:1fr 1fr;
  min-height:740px;
  align-items:stretch}
.page-hero .hero-image{
  min-height:540px;
  overflow:hidden}
.page-hero .hero-image img{
  animation:slowzoom 15s ease both}
.page-hero .hero-copy{
  padding:65px 9% 65px 11%;
  align-self:center}
.hero-copy p:not(.eyebrow){
  max-width:520px}
.text-link{
  font-size:11px;
  letter-spacing:.16em;
  text-transform:uppercase;
  display:inline-block;
  border-bottom:1px solid #d92972;
  padding-bottom:7px;
  margin-top:20px}
.ribbon{
  padding:24px 5%;
  border-block:1px solid #ecd6df;
  font-size:11px;
  letter-spacing:.15em;
  text-align:center}
.story-spread{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10%;
  align-items:center;
  padding-block:100px}
.story-spread .photo{
  height:620px;
  border-radius:48% 48% 0 0;
  overflow:hidden}
.story-spread.reverse .photo{
  order:2}
.story-spread p{
  max-width:540px}
.pullquote{
  padding:90px 8%;
  background:#faeaf0;
  text-align:center}
.pullquote h2{
  max-width:850px;
  margin:auto}
.service{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8%;
  align-items:center;
  padding:70px 0}
.service:nth-child(even) .service-image{
  order:2}
.service-image{
  height:570px;
  position:relative}
.service-image:after{
  content:'';
  position:absolute;
  inset:22px -20px -22px 20px;
  border:1px solid #d5b786;
  z-index:-1}
.service:nth-child(even) .service-image{
  border-radius:180px 180px 0 0;
  overflow:hidden}
.service .detail{
  font-size:12px;
  letter-spacing:.08em;
  color:#a25171;
  border-top:1px solid #e8ced8;
  padding-top:20px}
.gallery{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:24px;
  align-items:start}
.gallery button{
  border:0;
  padding:0;
  background:transparent;
  text-align:left;
  color:inherit}
.gallery button:nth-child(3n+2){
  margin-top:70px}
.gallery .frame{
  height:390px;
  overflow:hidden}
.gallery button:nth-child(3n+2) .frame{
  height:480px}
.gallery img{
  transition:transform .9s}
.gallery button:hover img{
  transform:scale(1.04)}
.gallery .caption{
  display:block;
  padding:17px 0;
  font:22px Georgia}
.gallery small{
  font:10px Arial;
  letter-spacing:.12em;
  color:#ad3568}
.gallery-controls{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  margin:25px 0 45px}
.chip{
  border:1px solid #d9b7c4;
  padding:9px 19px;
  background:transparent;
  border-radius:30px;
  color:inherit}
.chip[aria-pressed=true]{
  background:#cf276c;
  border-color:#cf276c;
  color:white}
.gallery-more{
  margin:45px auto;
  display:block}
.photo-dialog{
  padding:20px;
  border:0;
  background:#fffaf8;
  width:min(1100px,95vw);
  max-height:95svh}
.photo-dialog::backdrop{
  background:#20151dcc}
.photo-dialog img{
  height:75svh;
  object-fit:contain}
.dialog-close{
  position:absolute;
  right:18px;
  top:15px;
  background:white;
  border:0;
  border-radius:50%;
  width:40px;
  height:40px;
  font-size:22px}
.destination-world{
  position:relative;
  overflow:hidden;
  padding:80px 6%;
  background:#eaf3f2;
  transition:background 1s}
.destination-world[data-mood=garden]{
  background:#edf2e5}
.destination-world[data-mood=grand]{
  background:#f6ecd9}
.mood-buttons{
  display:flex;
  justify-content:center;
  gap:20px;
  margin-bottom:55px}
.mood-buttons button{
  background:transparent;
  border:0;
  border-bottom:1px solid transparent;
  padding:15px;
  font:25px Georgia}
.mood-buttons button[aria-pressed=true]{
  border-color:currentColor}
.world-content{
  display:grid;
  grid-template-columns:1.25fr 1fr;
  align-items:center;
  gap:7%;
  position:relative;
  z-index:2}
.world-photo{
  height:560px;
  border-radius:250px 250px 0 0;
  overflow:hidden}
.world-art{
  position:absolute;
  inset:auto 0 0;
  height:180px;
  opacity:.4;
  pointer-events:none}
.world-art svg{
  width:100%;
  height:100%}
.world-art .wave{
  animation:wave 8s ease-in-out infinite alternate}
.world-art .vine{
  stroke-dasharray:800;
  stroke-dashoffset:800;
  animation:draw 2s forwards}
.venues{
  display:flex;
  flex-wrap:wrap;
  gap:15px 35px;
  margin-top:40px;
  color:#845b6c;
  font-family:Georgia;
  font-size:23px}
.chat{
  max-width:850px;
  margin:auto}
.bubble{
  padding:27px 33px;
  border-radius:25px;
  background:#f8e3ec;
  max-width:80%;
  margin:30px 0}
.bubble.couple{
  margin-left:auto;
  background:#f0ebe5;
  border-bottom-right-radius:0}
.bubble.planner{
  border-bottom-left-radius:0}
.bubble small{
  display:block;
  font-size:10px;
  letter-spacing:.15em;
  margin-bottom:12px;
  color:#a4275d}
.video-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:60px}
.video-grid video{
  width:100%;
  height:440px;
  object-fit:contain;
  background:#eee1e6}
.video-grid h3{
  margin-top:22px}
.video-grid p{
  font-size:14px}
.journal-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:35px}
.journal-grid img{
  height:320px;
  margin-bottom:24px}
.journal-grid h3{
  font-size:29px}
.article-body{
  max-width:760px;
  margin:70px auto 100px}
.article-body h2{
  font-size:37px;
  margin-top:55px}
.article-body p{
  line-height:1.95}
.article-cover{
  height:500px}
.contact-layout{
  display:grid;
  grid-template-columns:.8fr 1.2fr;
  gap:10%}
.contact-details a{
  color:#b32360}
.contact-details h3{
  font-size:24px;
  margin:25px 0 10px}
.enquiry{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:25px}
.enquiry label{
  font-size:12px}
.enquiry input,.enquiry select,.enquiry textarea{
  display:block;
  width:100%;
  border:0;
  border-bottom:1px solid #ccaeb9;
  background:transparent;
  padding:12px 0;
  border-radius:0;
  color:#392c32}
.enquiry .wide{
  grid-column:1/-1}
.enquiry .consent{
  display:flex;
  align-items:flex-start;
  gap:10px}
.enquiry .consent input{
  width:auto;
  margin-top:6px}
.form-status{
  grid-column:1/-1;
  font-size:13px}
.honeypot{
  position:absolute;
  left:-9999px}
.end-note{
  padding:110px 7%;
  text-align:center;
  background:#f9eaf0}
.end-note h2{
  max-width:800px;
  margin:0 auto 30px}
footer{
  padding:55px 6%;
  border-top:1px solid #ead8df;
  font-size:12px;
  display:flex;
  gap:25px;
  justify-content:space-between;
  flex-wrap:wrap}
.whatsapp{
  position:fixed;
  bottom:24px;
  right:24px;
  background:#b32360;
  color:#fff;
  padding:12px 19px;
  border-radius:40px;
  font-size:12px;
  z-index:30}
.home-page .whatsapp{
  bottom:80px}
.reveal{
  opacity:1;
  transform:none}
.motion .reveal{
  opacity:0;
  transform:translateY(35px);
  transition:opacity .9s,transform 1s}
.motion .reveal.visible{
  opacity:1;
  transform:none}
.journey-intro{
  position:fixed;
  inset:0;
  z-index:100;
  background:#fff3f7;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  transition:opacity .5s;
  pointer-events:none}
.journey-intro.leaving{
  opacity:0}
.journey-art{
  height:280px;
  width:350px;
  position:relative;
  display:grid;
  place-items:center}
.journey-art>img{
  object-fit:contain;
  height:230px;
  width:300px;
  animation:fly 2.2s both}
.journey-intro p{
  font:italic 27px Georgia;
  color:#b32360}
.jar-svg{
  width:200px;
  height:250px;
  overflow:visible}
.jar-lid{
  animation:lid 2s both}
.jar-spark{
  animation:spark 2s infinite;
  transform-origin:center}
.tree-svg{
  width:260px;
  height:260px}
.tree-path{
  stroke-dasharray:600;
  stroke-dashoffset:600;
  animation:draw 1.5s forwards}
.tree-leaf{
  transform-origin:50% 90%;
  animation:grow 1.8s both}
.cafe-art svg,.marriage-art svg{
  width:300px;
  height:240px}
.phone-art img{
  animation:ring .7s 3}
.letter{
  position:absolute;
  bottom:30px;
  width:85px;
  height:55px;
  background:#fff7e9;
  border:1px solid #c9a168;
  transform:rotate(-8deg);
  animation:letter 2.2s both}
.letter:after{
  content:'♡';
  display:block;
  text-align:center;
  font-size:24px;
  color:#b32360}
.cupid{
  position:absolute;
  left:0;
  top:30px;
  font:80px Georgia;
  color:#cf276c;
  animation:fly 2s both}
.arrow-art img{
  animation:arrow 1.7s both;
  width:270px}
.progress{
  position:fixed;
  left:0;
  top:0;
  height:2px;
  background:#cf276c;
  z-index:50;
  width:0}
.skip{
  position:absolute;
  top:-100px}
.skip:focus{
  top:5px;
  z-index:200;
  background:#fff;
  padding:10px}
@keyframes draw{
  to{
    stroke-dashoffset:0}
}
@keyframes slowzoom{
  from{
    transform:scale(1.04)}
  to{
    transform:scale(1)}
}
@keyframes fly{
  0%{
    opacity:0;
    transform:translate(-140px,40px) rotate(-6deg)}
  60%,100%{
    opacity:1;
    transform:translate(0) rotate(0)}
}
@keyframes arrow{
  0%,25%{
    transform:translateX(-190px);
    opacity:0}
  75%,100%{
    transform:translateX(80px);
    opacity:1}
}
@keyframes lid{
  0%,25%{
    transform:translate(0)}
  60%,100%{
    transform:translate(25px,-65px) rotate(15deg)}
}
@keyframes spark{
  0%{
    opacity:0;
    transform:translateY(20px) scale(.2)}
  60%{
    opacity:1}
  100%{
    opacity:0;
    transform:translateY(-90px) scale(1)}
}
@keyframes grow{
  0%,25%{
    opacity:0;
    transform:scale(.1)}
  100%{
    opacity:1;
    transform:scale(1)}
}
@keyframes ring{
  25%{
    transform:rotate(-8deg)}
  75%{
    transform:rotate(8deg)}
}
@keyframes wave{
  to{
    transform:translateX(80px)}
}
@keyframes letter{
  0%,40%{
    transform:translateY(40px) scale(.6);
    opacity:0}
  80%{
    opacity:1}
  100%{
    transform:scale(1.3);
    opacity:1}
}
@media(min-width:1600px){
  nav{
    font-size:14px;
    gap:30px}
}
@media(max-width:1100px){
  nav{
    gap:13px;
    font-size:11px}
  .page-hero{
    min-height:660px}
  .hero-copy h1{
    font-size:52px}
  .service-image{
    height:450px}
}
@media(max-width:800px){
  header{
    padding:16px 6%}
  .logo{
    width:62px!important}
  .toggle{
    display:block;
    background:transparent;
    border:1px solid currentColor;
    padding:8px 12px;
    color:inherit}
  .toggle[aria-expanded=true]{
    color:#392c32}
  nav{
    display:none;
    position:absolute;
    top:92px;
    left:5%;
    right:5%;
    background:#fffaf8;
    color:#392c32;
    padding:25px;
    box-shadow:0 20px 40px #54283f20;
    font-size:15px;
    max-height:78svh;
    overflow:auto}
  nav.open{
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:8px}
  .page-hero{
    padding-top:110px;
    grid-template-columns:1fr}
  .page-hero .hero-image{
    height:48svh;
    min-height:320px}
  .page-hero .hero-copy{
    padding:45px 7% 60px}
  .hero-copy h1{
    font-size:clamp(38px,9.5vw,65px)}
  .hero h1{
    font-size:clamp(43px,10vw,75px)}
  .hero-content{
    padding-top:110px}
  .hero-bottom{
    font-size:8px}
  .section{
    padding:65px 0}
  .story-spread,.service,.world-content,.contact-layout{
    grid-template-columns:1fr;
    gap:40px}
  .story-spread{
    padding-block:65px}
  .story-spread .photo{
    height:460px}
  .story-spread.reverse .photo,.service:nth-child(even) .service-image{
    order:0}
  .service{
    padding:45px 0}
  .service-image{
    height:440px}
  .gallery{
    grid-template-columns:repeat(2,1fr);
    gap:15px}
  .gallery .frame,.gallery button:nth-child(3n+2) .frame{
    height:280px}
  .gallery button:nth-child(3n+2){
    margin-top:0}
  .gallery .caption{
    font-size:18px}
  .world-photo{
    height:420px}
  .mood-buttons{
    gap:6px}
  .mood-buttons button{
    font-size:20px;
    padding:10px}
  .video-grid{
    gap:35px;
    grid-template-columns:1fr}
  .journal-grid{
    grid-template-columns:1fr}
  .journal-grid img{
    height:350px}
  .enquiry{
    gap:22px}
  .article-body{
    width:86%}
  .article-cover{
    height:320px}
  .bubble{
    max-width:93%;
    padding:23px}
  .whatsapp{
    bottom:15px;
    right:15px}
  .home-page .whatsapp{
    bottom:70px}
  .end-note{
    padding:70px 7%}
}
@media(max-width:450px){
  .enquiry{
    grid-template-columns:1fr}
  .gallery .frame,.gallery button:nth-child(3n+2) .frame{
    height:220px}
  .hero-bottom span{
    max-width:120px}
  .hero p{
    font-size:14px}
  .world-photo{
    height:350px}
}
@media(prefers-reduced-motion:reduce){
  html{
    scroll-behavior:auto}
  *,*:before,*:after{
    animation:none!important;
    transition:none!important}
  .motion .reveal{
    opacity:1;
    transform:none}
  .journey-intro{
    display:none}
}
[hidden]{
  display:none!important}
.letter:before{
  content:'';
  position:absolute;
  top:0;
  left:0;
  border-left:42px solid transparent;
  border-right:42px solid transparent;
  border-top:28px solid #e8cda2;
  transform-origin:top;
  animation:envelope 2.2s both}
@keyframes envelope{
  0%,65%{
    transform:rotateX(0)}
  100%{
    transform:rotateX(170deg)}
}
@media(max-height:600px) and (orientation:landscape){
  .home-page header{
    padding:10px 5%}
  .home-page .logo{
    width:48px!important}
  .home-page .hero-content{
    padding:65px 20px 35px}
  .home-page .hero h1{
    font-size:38px;
    margin-bottom:15px}
  .home-page .hero p{
    font-size:12px;
    margin-bottom:12px}
  .home-page .button{
    padding:10px 20px}
  .home-page .hero-bottom{
    bottom:12px}
  .home-page .whatsapp{
    bottom:20px;
    font-size:10px;
    padding:8px 12px}
}

/* Refined image sizing: keep people and décor fully visible. */
.page-hero { min-height: 0; align-items: center; }
.page-hero .hero-image { height: min(740px, calc(100svh - 150px)); min-height: 480px; width: 100%; background: #f8f0ed; }
.page-hero .hero-image img { width: 100%; height: 100%; object-fit: contain; animation: none; }
.page-hero .hero-copy { min-width: 0; padding-top: 35px; padding-bottom: 35px; }
.story-spread .photo { border-radius: 0; background: #f8f0ed; height: auto; min-height: 300px; }
.story-spread .photo img { height: auto; max-height: 620px; object-fit: contain; }
.service-image { height: 490px; background: #f8f0ed; }
.service-image img { object-fit: contain; }
.service:nth-child(even) .service-image { border-radius: 0; overflow: visible; }
.world-photo { height: auto; min-height: 280px; border-radius: 0; overflow: visible; background: #fffaf870; }
.world-photo img { height: auto; max-height: 560px; object-fit: contain; }
.gallery { align-items: start; }
.gallery .frame, .gallery button:nth-child(3n+2) .frame { height: auto; background: #f5eeea; }
.gallery .frame img { height: auto; object-fit: contain; }
.gallery button:hover img { transform: none; }
.article-cover img, .journal-grid img { object-fit: contain; background: #f8f0ed; }
.journey-art { overflow: visible; }
.journey-art > img.dove-with-letter { width: min(400px, 90vw); height: 280px; object-fit: contain; }
.journey-about .journey-art { display: flex; justify-content: center; align-items: center; }
.journey-about .cupid { position: static; font-size: initial; }
.journey-about .cupid svg { display: block; width: 180px; height: 200px; }
@media (max-width: 800px) {
  .page-hero .hero-image { height: min(440px, 52svh); min-height: 280px; }
  .page-hero .hero-copy { padding: 38px 7% 55px; }
  .service-image { height: auto; min-height: 260px; }
  .service-image img { height: auto; max-height: 460px; }
  .world-photo { height: auto; min-height: 0; }
  .world-photo img { max-height: 420px; }
  .gallery .frame, .gallery button:nth-child(3n+2) .frame { height: auto; }
}
