/* Presentation adapter for the unchanged MOE tag and native server form states. */
[hidden] { display:none !important; }
.reference-demo-label,.reference-preview-notice,.reference-pending {padding:.65rem 1rem;border:1px solid var(--line,#e5d8cc);background:var(--cream,#f1e8df);color:var(--ink,#2b211d);font:500 .875rem/1.5 var(--font-body,'DM Sans',sans-serif);}
.reference-preview-notice {text-align:center;}
.form-error,.errorlist {color:#9b241d;font-size:.9rem;overflow-wrap:anywhere;}
.image-missing {display:grid;place-items:center;min-height:10rem;background:var(--cream,#f1e8df);color:var(--muted,#6f6158);padding:1rem;text-align:center;}
.zi-image-shell {display:block;position:relative;width:100%;height:100%;overflow:hidden;}
.zi-responsive-picture {display:block;width:100%;height:100%;}
.zi-image-shell img {display:block;width:100%;height:100%;object-fit:cover;}
.zi-image-preview,.zi-image-shimmer,.zi-image-notice {display:none;}
.zi-image-shell[data-image-state=error] .zi-image-notice {display:grid;position:absolute;inset:0;place-items:center;background:var(--cream,#f1e8df);color:var(--ink,#2b211d);}
.hero-media>.zi-image-shell {position:absolute;inset:0;}
.card-media>.zi-image-shell {aspect-ratio:inherit;}
.partner-portrait>.zi-image-shell {border-radius:inherit;aspect-ratio:1;}
.partner>.zi-image-shell {width:var(--portrait-size,82%);aspect-ratio:1;height:auto;margin:auto;border-radius:50%;}
.partner-photo.image-missing {aspect-ratio:1;border-radius:50%;}
.book-image .zi-image-shell {height:100%;}
[data-book-copy] {white-space:pre-line;overflow-wrap:anywhere;}
.reference-lightbox {max-width:min(95vw,1100px);max-height:95dvh;padding:1rem;background:var(--paper,#fbf8f3);border:0;border-radius:var(--radius,14px);}
.reference-lightbox img {max-width:100%;max-height:75dvh;display:block;margin:1rem auto;object-fit:contain;}
.reference-lightbox::backdrop {background:rgba(43,33,29,.8);}
.filter-bar input[type=search] {min-width:0;}
.pagination {display:flex;justify-content:center;gap:1rem;align-items:center;flex-wrap:wrap;margin:1.5rem 0;}
.reference-service {overflow-wrap:anywhere;}
@media(max-width:700px) {.book-image {width:100%;height:100%;} .filter-bar {flex-wrap:wrap;} .filter-bar .search {width:100%;}}
.reference-trust-logos {min-width:0;}
@media(max-width:980px) {.trust-row>.reference-trust-logos {grid-column:1/-1;}}
/* Real names/identifiers must shrink inside the approved two-column welcome. */
[data-reference-preview="false"] .ws-welcome > div {min-width:0;overflow-wrap:anywhere;}
[data-reference-preview="false"] .ws-welcome .ws-btn {max-width:100%;white-space:normal;}


/* Premium home/couples/detail layout v2
   Scoped to the three public pages so generic reference grids keep their original geometry. */
body[data-page="index"],
body[data-page="couples"],
body[data-page="couple"]{overflow-x:clip}

/* Couple discovery cards — natural media proportions + masonry without forced blank rows. */
.couple-masonry{
  display:block!important;
  column-count:3;
  column-gap:clamp(14px,1.7vw,24px);
}
.couple-masonry>.card{
  display:inline-block;
  width:100%;
  margin:0 0 clamp(14px,1.7vw,24px);
  break-inside:avoid;
  page-break-inside:avoid;
  vertical-align:top;
  overflow:hidden;
  contain:layout paint;
}
.couple-masonry>.card .card-photo{
  height:auto!important;
  min-height:0;
  aspect-ratio:auto!important;
  overflow:hidden;
  background:var(--cream,#f1e8df);
}
.couple-masonry>.card .card-photo>a,
.couple-masonry>.card .card-photo>.zi-image-shell,
.couple-masonry>.card .card-photo>a>.zi-image-shell,
.couple-masonry>.card .card-photo .zi-responsive-picture{
  display:block;
  width:100%;
  height:auto!important;
  aspect-ratio:auto!important;
}
.couple-masonry>.card .card-photo img,
.couple-masonry>.card .card-photo .zi-image-shell img{
  display:block;
  width:100%;
  height:auto!important;
  max-height:none!important;
  aspect-ratio:auto!important;
  object-fit:contain!important;
  transform:none;
}
.couple-masonry>.card:hover .card-photo img{transform:scale(1.012)}
.couple-masonry>.card .card-body{min-width:0;overflow-wrap:anywhere}
.couple-masonry>.card .card-body h3{line-height:1.08}
.couple-masonry>.card .meta,
.couple-masonry>.card .row{min-width:0;flex-wrap:wrap;gap:8px 12px}
.couple-masonry>.card .text-link{margin-left:auto}

/* Couples feature: respect the uploaded photo instead of stretching it into a fixed crop. */
body[data-page="couples"] .feature-story>.zi-image-shell{
  width:100%;
  height:auto!important;
  aspect-ratio:auto!important;
  border-radius:8px;
}
body[data-page="couples"] .feature-story>.zi-image-shell img{
  width:100%;
  height:auto!important;
  max-height:min(62vh,620px);
  object-fit:contain!important;
  background:var(--cream,#f1e8df);
}

/* Couple detail hero — stronger image presence with distinct metadata and message. */
body[data-page="couple"] .couple-detail-hero{
  min-height:470px;
}
body[data-page="couple"] .couple-detail-hero .hero-media{left:32%}
body[data-page="couple"] .couple-detail-hero:before{
  background:linear-gradient(90deg,#30251d 0%,rgb(48 37 29/.96) 26%,rgb(48 37 29/.62) 48%,rgb(48 37 29/.12) 72%,transparent 84%);
}
body[data-page="couple"] .couple-detail-hero .hero-content{
  min-height:470px;
  max-width:min(650px,56vw);
  padding-block:58px;
}
body[data-page="couple"] .couple-detail-hero h1{
  max-width:13ch;
  text-wrap:balance;
  overflow-wrap:anywhere;
}
body[data-page="couple"] .couple-hero-meta{
  margin-top:14px!important;
  font-size:12px!important;
  font-weight:600;
  letter-spacing:.035em;
  color:#edcfab!important;
}
body[data-page="couple"] .couple-hero-message{
  margin-top:10px!important;
  max-width:52ch!important;
  font-family:var(--serif);
  font-size:clamp(17px,1.5vw,21px)!important;
  font-style:italic;
  line-height:1.42!important;
  color:#fff8ef!important;
}

/* Partners — editorial split on desktop, with photography filling the entire left pane. */
body[data-page="couple"] .partners{
  grid-template-columns:minmax(0,1fr) 118px minmax(0,1fr);
  gap:clamp(16px,2vw,30px);
  align-items:stretch;
}
body[data-page="couple"] .partner{
  grid-template-columns:minmax(210px,46%) minmax(0,54%);
  min-height:440px;
  align-items:stretch;
}
body[data-page="couple"] .partner>.zi-image-shell,
body[data-page="couple"] .partner>img.partner-photo,
body[data-page="couple"] .partner>.partner-photo.image-missing{
  width:100%!important;
  height:100%!important;
  min-height:440px;
  margin:0!important;
  aspect-ratio:auto!important;
  border-radius:0!important;
  align-self:stretch;
}
body[data-page="couple"] .partner>.zi-image-shell .zi-responsive-picture{height:100%!important}
body[data-page="couple"] .partner>.zi-image-shell img,
body[data-page="couple"] .partner>img.partner-photo{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  object-position:center 24%;
}
body[data-page="couple"] .partner-copy{
  min-width:0;
  padding:clamp(24px,2.5vw,38px) clamp(18px,2vw,30px);
  align-self:center;
  overflow-wrap:anywhere;
}
body[data-page="couple"] .partner blockquote{overflow-wrap:anywhere}

/* LOVE — one vertical letter after another, triggered when the divider enters view. */
body[data-page="couple"] .love-divider{
  overflow:hidden;
}
body[data-page="couple"] .love-divider b{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:.02em;
  padding:18px 14px;
  font-size:54px;
  line-height:.68;
  letter-spacing:0;
}
body[data-page="couple"] .love-divider .love-letter{
  display:block;
  opacity:.12;
  filter:blur(3px);
  transform:translateY(18px) scale(.9);
}
body[data-page="couple"] .love-divider.is-love-visible .love-letter{
  animation:zi-love-reveal .68s cubic-bezier(.16,.84,.25,1) forwards;
  animation-delay:calc(var(--love-index,0)*170ms);
}
body[data-page="couple"] .love-divider>.icon{
  transform-origin:center;
}
body[data-page="couple"] .love-divider.is-love-visible>.icon{
  animation:zi-heart-beat 1.3s ease-in-out .75s both;
}
@keyframes zi-love-reveal{
  0%{opacity:.12;filter:blur(3px);transform:translateY(18px) scale(.9)}
  62%{opacity:1;filter:blur(0);transform:translateY(-2px) scale(1.04)}
  100%{opacity:1;filter:blur(0);transform:translateY(0) scale(1)}
}
@keyframes zi-heart-beat{
  0%,100%{transform:scale(1)}
  28%{transform:scale(1.28)}
  48%{transform:scale(.94)}
  68%{transform:scale(1.16)}
}

/* Story book — the cover physically opens before revealing the spread. */
body[data-page="couple"] .book-closed{
  box-shadow:0 12px 30px rgba(43,33,29,.06);
}
body[data-page="couple"] .book-cover{
  transform-origin:left center;
  transition:transform .45s cubic-bezier(.16,.84,.25,1),box-shadow .45s ease;
}
body[data-page="couple"] .book-closed:hover .book-cover,
body[data-page="couple"] .book-closed:focus-within .book-cover{
  transform:perspective(500px) rotateY(-18deg);
  box-shadow:9px 5px 12px rgba(43,33,29,.17);
}
body[data-page="couple"] .book-dialog{
  width:min(96vw,1040px);
  max-width:1040px;
  perspective:1800px;
  overflow:visible;
}
body[data-page="couple"] .book-spread{
  position:relative;
  isolation:isolate;
  overflow:visible;
  border-radius:8px;
  box-shadow:0 28px 72px rgba(43,33,29,.22);
  transform-origin:center;
  animation:zi-book-settle .78s cubic-bezier(.16,.84,.25,1) both;
}
body[data-page="couple"] .book-spread:before{
  content:attr(data-book-cover);
  position:absolute;
  inset:-1px;
  z-index:5;
  border:1px solid #ad7c50;
  border-radius:5px 12px 12px 5px;
  background:
    linear-gradient(110deg,rgba(255,255,255,.08),transparent 22%),
    radial-gradient(circle at 72% 22%,rgba(237,207,171,.13),transparent 24%),
    var(--brand);
  box-shadow:10px 14px 32px rgba(43,33,29,.26),inset 12px 0 0 rgba(255,255,255,.045);
  transform-origin:left center;
  backface-visibility:hidden;
  animation:zi-book-cover-open 1.05s cubic-bezier(.2,.78,.18,1) .08s both;
  pointer-events:none;
  display:grid;
  place-items:center;
  padding:clamp(28px,5vw,72px);
  text-align:center;
  color:#edcfab;
  font-family:var(--serif);
  font-size:clamp(28px,4.2vw,52px);
  font-weight:500;
  font-style:italic;
  line-height:1.08;
  letter-spacing:.015em;
}
body[data-page="couple"] .book-spread:after{
  content:"";
  position:absolute;
  z-index:4;
  top:0;
  bottom:0;
  left:50%;
  width:2px;
  background:linear-gradient(to bottom,transparent,#baa18b 12%,#80664f 50%,#baa18b 88%,transparent);
  box-shadow:0 0 22px rgba(72,48,31,.3);
  pointer-events:none;
}
@keyframes zi-book-cover-open{
  0%{opacity:1;transform:perspective(1500px) rotateY(0deg)}
  72%{opacity:1;transform:perspective(1500px) rotateY(-104deg)}
  100%{opacity:0;transform:perspective(1500px) rotateY(-118deg)}
}
@keyframes zi-book-settle{
  0%{opacity:.45;transform:scale(.94) translateY(12px)}
  100%{opacity:1;transform:scale(1) translateY(0)}
}

/* Program — same editorial structure as the official reference, static images remain valid fallbacks. */
body[data-page="couple"] .program-grid .card{
  min-width:0;
  overflow:hidden;
}
body[data-page="couple"] .program-grid .card>.zi-image-shell,
body[data-page="couple"] .program-grid .card>img{
  width:34%;
  min-width:34%;
  min-height:148px;
  height:auto;
  border-radius:0;
}
body[data-page="couple"] .program-grid .card>.zi-image-shell .zi-responsive-picture{height:100%!important}
body[data-page="couple"] .program-grid .card>.zi-image-shell img,
body[data-page="couple"] .program-grid .card>img{
  width:100%;
  height:100%!important;
  object-fit:cover!important;
}

/* RSVP now focuses on confirmation and invitation content only — no repeated couple photo. */
body[data-page="couple"] .rsvp-callout{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
}

/* Gallery — preserve the reference mosaic while gracefully handling real image wrappers. */
body[data-page="couple"] .preview-gallery a{min-width:0;min-height:0}
body[data-page="couple"] .preview-gallery .zi-image-shell,
body[data-page="couple"] .preview-gallery .zi-responsive-picture{height:100%!important}
body[data-page="couple"] .preview-gallery img{
  width:100%;
  height:100%!important;
  min-height:180px;
  object-fit:cover!important;
}
body[data-page="couple"] .preview-gallery a:first-child:last-child{
  grid-column:1/-1;
  max-height:520px;
}

/* Tablet refinement */
@media(max-width:1080px) and (min-width:701px){
  .couple-masonry{column-count:2}
  body[data-page="couple"] .partners{grid-template-columns:1fr;gap:18px}
  body[data-page="couple"] .love-divider{min-height:170px}
  body[data-page="couple"] .partner{grid-template-columns:40% minmax(0,60%);min-height:350px}
  body[data-page="couple"] .partner>.zi-image-shell,
  body[data-page="couple"] .partner>img.partner-photo,
  body[data-page="couple"] .partner>.partner-photo.image-missing{min-height:350px}
}

/* Mobile: edge-to-edge discovery images, concise hero, near-screen circular portraits. */
@media(max-width:700px){
  .couple-masonry{column-count:1;column-gap:0}
  .couple-masonry>.card{
    width:100vw;
    max-width:none;
    margin-left:calc(50% - 50vw);
    margin-right:calc(50% - 50vw);
    margin-bottom:26px;
    border-left:0;
    border-right:0;
    border-radius:0;
    box-shadow:0 10px 28px rgba(43,33,29,.055);
    contain:layout paint;
  }
  .couple-masonry>.card .card-photo{width:100vw}
  .couple-masonry>.card .card-body{
    padding:18px max(20px,env(safe-area-inset-left)) 21px max(20px,env(safe-area-inset-right));
  }
  .couple-masonry>.card .text-link{margin-left:0}

  body[data-page="couples"] .feature-story{
    padding:0 0 18px;
    overflow:hidden;
  }
  body[data-page="couples"] .feature-story>.zi-image-shell,
  body[data-page="couples"] .feature-story>img{
    width:100vw;
    max-width:none;
    height:auto!important;
    max-height:none;
    margin-left:calc(50% - 50vw);
    border-radius:0;
    object-fit:contain!important;
  }
  body[data-page="couples"] .feature-story>div{padding:2px 20px 4px}

  body[data-page="couple"] .couple-detail-hero{
    min-height:min(760px,90svh);
    justify-content:flex-end;
  }
  body[data-page="couple"] .couple-detail-hero .hero-media{
    inset:0 0 37% 0;
  }
  body[data-page="couple"] .couple-detail-hero .hero-media img{
    object-position:center 22%;
  }
  body[data-page="couple"] .couple-detail-hero:before{
    background:linear-gradient(0deg,#30251d 0%,#30251d 34%,rgb(48 37 29/.78) 43%,rgb(48 37 29/.18) 68%,transparent 82%);
  }
  body[data-page="couple"] .couple-detail-hero .hero-content{
    min-height:0;
    max-width:none;
    padding:clamp(330px,55svh,450px) 0 26px;
  }
  body[data-page="couple"] .couple-detail-hero h1{
    max-width:11ch;
    font-size:clamp(38px,11.5vw,52px);
    line-height:.96;
  }
  body[data-page="couple"] .couple-hero-meta{
    font-size:11px!important;
    margin-top:11px!important;
  }
  body[data-page="couple"] .couple-hero-message{
    display:-webkit-box;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
    overflow:hidden;
    max-width:32ch!important;
    margin-top:7px!important;
    font-size:16px!important;
    line-height:1.35!important;
  }
  body[data-page="couple"] .couple-detail-hero .row{
    flex-wrap:wrap;
    margin-top:15px;
  }

  body[data-page="couple"] .partners{display:block}
  body[data-page="couple"] .partner{
    display:flex;
    flex-direction:column;
    min-height:0;
    margin-bottom:38px;
    border:0;
    border-radius:0;
    overflow:visible;
    background:transparent;
    box-shadow:none;
  }
  body[data-page="couple"] .partner>.zi-image-shell,
  body[data-page="couple"] .partner>img.partner-photo,
  body[data-page="couple"] .partner>.partner-photo.image-missing{
    width:min(88vw,520px)!important;
    height:min(88vw,520px)!important;
    min-height:0;
    aspect-ratio:1!important;
    margin:0 auto 20px!important;
    border-radius:50%!important;
    overflow:hidden;
    box-shadow:0 18px 44px rgba(43,33,29,.15);
  }
  body[data-page="couple"] .partner>.zi-image-shell img,
  body[data-page="couple"] .partner>img.partner-photo{
    width:100%!important;
    height:100%!important;
    object-fit:cover!important;
  }
  body[data-page="couple"] .partner-copy{
    padding:4px 14px 8px;
    text-align:center;
  }
  body[data-page="couple"] .partner-copy h2{font-size:38px}
  body[data-page="couple"] .partner blockquote{
    max-width:34ch;
    margin:14px auto;
    font-size:19px;
  }

  body[data-page="couple"] .love-divider{
    min-height:250px;
    margin:2px 0 34px;
    background-size:auto 230px;
  }
  body[data-page="couple"] .love-divider b{font-size:61px}

  body[data-page="couple"] .story-intro{
    grid-template-columns:1fr;
    gap:22px;
  }
  body[data-page="couple"] .timeline-cards{
    grid-template-columns:1fr;
  }

  body[data-page="couple"] .book-dialog{
    width:96vw;
    max-height:92dvh;
    padding:14px;
  }
  body[data-page="couple"] .book-spread{
    display:block;
    min-height:min(66dvh,610px);
  }
  body[data-page="couple"] .book-spread:after{display:none}
  body[data-page="couple"] .book-spread .book-image,
  body[data-page="couple"] .book-image{
    width:100%;
    height:min(66dvh,610px)!important;
  }
  body[data-page="couple"] .book-copy{
    height:min(66dvh,610px);
    padding:24px 20px;
    border-left:0;
    font-size:19px;
    line-height:1.55;
  }

  body[data-page="couple"] .program-grid{
    display:grid;
    grid-template-columns:1fr;
  }
  body[data-page="couple"] .program-grid .card{
    display:grid;
    grid-template-columns:minmax(126px,38%) minmax(0,62%);
  }
  body[data-page="couple"] .program-grid .card>.zi-image-shell,
  body[data-page="couple"] .program-grid .card>img{
    width:100%;
    min-width:0;
    height:100%;
    min-height:154px;
  }

  body[data-page="couple"] .rsvp-callout{
    grid-template-columns:1fr;
    gap:22px;
  }

  body[data-page="couple"] .preview-gallery{
    grid-template-columns:1fr 1fr;
    gap:9px;
  }
  body[data-page="couple"] .preview-gallery a:first-child{grid-column:1/-1}
  body[data-page="couple"] .preview-gallery img{min-height:150px}
  body[data-page="couple"] .preview-gallery a:first-child img{min-height:230px}
}

@media(prefers-reduced-motion:reduce){
  body[data-page="couple"] .love-divider .love-letter,
  body[data-page="couple"] .love-divider.is-love-visible .love-letter,
  body[data-page="couple"] .love-divider>.icon,
  body[data-page="couple"] .book-spread,
  body[data-page="couple"] .book-spread:before{
    animation:none!important;
    transition:none!important;
  }
  body[data-page="couple"] .love-divider .love-letter{opacity:1;filter:none;transform:none}
  body[data-page="couple"] .book-spread:before{display:none}
}
