/* ---------------------------------------------------------------------------
   Yash & Khushi — PDF-faithful sections (KhushiYash2)

   The three pages of Yash_Khushi_Invitation.pdf are reproduced as live
   sections: the artwork (text stripped out by tools/pdf2_clean.py) is a plain
   <img>, and every line of copy sits on top of it as real HTML, positioned in
   percentages of the artwork and sized in container-query units so the layout
   tracks the art exactly at any width.

   The cover is the same deal — no text anywhere on this page is baked into an
   image. It is the quote artwork, which the invitation now opens on rather
   than closes with. Order: cover (quote), invitation, details, [rsvp].
   --------------------------------------------------------------------------- */

@font-face {
  font-family: 'KY2Cinzel';
  src: url('../assets/fonts/pdf2/cinzel.woff2') format('woff2');
  font-weight: 400 700;
  font-display: swap;
}
@font-face {
  font-family: 'KY2Cormorant';
  src: url('../assets/fonts/pdf2/cormorant.woff2') format('woff2');
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'KY2Cormorant';
  src: url('../assets/fonts/pdf2/cormorant-italic.woff2') format('woff2');
  font-weight: 300 700;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: 'KY2Pinyon';
  src: url('../assets/fonts/pdf2/pinyon.woff2') format('woff2');
  font-weight: 400;
  font-display: swap;
}

.ky2 {
  --navy: #07163a;
  --navy-deep: #040d24;
  --ink: #f3f6ff;
  --silver: #cfdcf4;
  --cream: #f6efe2;
  --page: 520px; /* the invitation column; the PDF pages are 414pt wide */
  position: relative;
  z-index: 1;
  /* the invitation column is 520px wide at most; on wider screens this deep
     navy field (sampled from the artwork) carries the rest of the viewport */
  background: linear-gradient(180deg, #050f28 0%, #071634 45%, #040d24 100%);
  font-kerning: normal;
}

.ky2::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(70% 40% at 50% 10%, rgba(30, 60, 122, 0.3), transparent 72%);
  pointer-events: none;
}

.ky2 * {
  box-sizing: border-box;
}

/* --- one PDF page -------------------------------------------------------
   The box must be exactly the artwork: a site-wide `section` rule gives every
   section 100vh of min-height and 28px of vertical padding, which would push
   the art down inside its own page and throw every percentage below off. */
.ky2-page {
  position: relative;
  min-height: 0;
  padding: 0;
  margin: 0 auto;
  width: 100%;
  max-width: var(--page);
  container-type: inline-size;
  overflow: hidden;
}

.ky2-art {
  display: block;
  width: 100%;
  height: auto;
}

/* the pages read as separate leaves of the invitation, not one long image */
.ky2-page + .ky2-page,
.ky2-details,
.ky2-details + .ky2-page,
#eventory-rsvp + .ky2-page {
  margin-top: 30px;
}

.ky2-lay {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.ky2-lay > * {
  position: absolute;
  left: 0;
  right: 0;
  margin: 0;
  text-align: center;
  color: var(--ink);
}

/* --- reveal ------------------------------------------------------------- */
.ky2-r {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 1.1s ease, transform 1.1s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.ky2-in .ky2-r {
  opacity: 1;
  transform: none;
}
.ky2-in .ky2-r:nth-child(2) { transition-delay: 0.18s; }
.ky2-in .ky2-r:nth-child(3) { transition-delay: 0.34s; }
.ky2-in .ky2-r:nth-child(4) { transition-delay: 0.5s; }
.ky2-in .ky2-r:nth-child(5) { transition-delay: 0.64s; }
.ky2-in .ky2-r:nth-child(6) { transition-delay: 0.78s; }
@media (prefers-reduced-motion: reduce) {
  .ky2-r { transition: none; opacity: 1; transform: none; }
}

/* --- page 1: the invitation ---------------------------------------------
   Tops are set so the *ink* lands where the PDF's own text sat, which is a
   little above the box top: see the ink measurements in the commit message. */
.ky2-lead {
  top: 40%;
  font-family: 'KY2Cinzel', serif;
  font-weight: 500;
  font-size: 2.8cqw;
  line-height: 1.78;
  letter-spacing: 0.04em;
  color: #eef3ff;
  text-shadow: 0 1px 10px rgba(4, 13, 36, 0.75);
}

.ky2-names {
  /* the band in the artwork runs 51.2%-59.7%; the name hangs half a line
     below its centre, which is where it sits best against the florals */
  top: 49.4%;
  height: 12.6%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'KY2Pinyon', serif;
  font-size: 8.4cqw;
  line-height: 1;
  color: #ffffff;
  text-shadow: 0 0 30px rgba(139, 178, 255, 0.4);
}
.ky2-names .amp {
  font-size: 0.8em;
  padding: 0 0.12em;
}

/* --- page 2: the details ----------------------------------------------- */
.ky2-date {
  top: 23.1%;
  font-family: 'KY2Cinzel', serif;
  font-weight: 400;
  font-size: 4.6cqw;
  letter-spacing: 0.1em;
  line-height: 1.2;
}
.ky2-date sup {
  font-size: 0.58em;
  letter-spacing: 0.05em;
  vertical-align: 0.72em;
}

.ky2-time {
  top: 26.4%;
  font-family: 'KY2Cormorant', serif;
  font-style: italic;
  font-weight: 500;
  font-size: 4.3cqw;
  line-height: 1.3;
}

.ky2-rule {
  top: 30.1%;
  height: 1.7%;
}
.ky2-rule img {
  display: block;
  width: 30.7%;
  margin: 0 auto;
  opacity: 0.92;
}
.ky2-rule-2 { top: 37.7%; }

.ky2-venue {
  top: 31.9%;
  font-family: 'KY2Cormorant', serif;
  font-weight: 500;
  font-size: 4.6cqw;
  line-height: 1.2;
  letter-spacing: 0.005em;
}

.ky2-dress {
  top: 40.2%;
  font-family: 'KY2Cinzel', serif;
  font-size: 2.75cqw;
  font-weight: 500;
  letter-spacing: 0.14em;
}

/* the artwork's mosaic border is dissolved into the panel below it */
.ky2-details .ky2-art { margin-bottom: -1px; }
.ky2-hem {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 15%;
  background: linear-gradient(to bottom, rgba(4, 13, 36, 0) 0%, rgba(4, 13, 36, 0.72) 48%, #040d24 100%);
  pointer-events: none;
}

/* --- the live panel that continues under page 3 ------------------------ */
.ky2-panel {
  position: relative;
  margin: 0 auto;
  padding: 0 24px 64px;
  width: 100%;
  max-width: var(--page);
  text-align: center;
  background: linear-gradient(180deg, #040d24 0%, #0a1c40 42%, #040d24 100%);
  container-type: inline-size;
}
.ky2-panel::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(80% 55% at 50% 55%, rgba(35, 70, 140, 0.35), transparent 72%);
  pointer-events: none;
}
.ky2-panel > * { position: relative; }

/* the CTA sits on the artwork itself, centred on the rose window's inner rings
   (55.8% of the page). Same top+height+flex trick as .ky2-names, so the button
   is centred on that line whatever its own height works out to. */
.ky2-cta-slot {
  top: 52.2%;
  height: 7.2%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ky2-cta-slot a.ky2-cta {
  margin: 0;
  pointer-events: auto; /* .ky2-lay turns them off for the type it carries */
}

a.ky2-cta {
  display: inline-block;
  padding: 13px 34px 12px;
  border: 1px solid rgba(255, 255, 255, 0.55);
  border-radius: 999px;
  background: linear-gradient(180deg, #fbf6ec 0%, #efe4cf 100%);
  color: #14284f;
  font-family: 'KY2Cinzel', serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-decoration: none;
  box-shadow: 0 10px 26px rgba(2, 8, 24, 0.5);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
a.ky2-cta:hover,
a.ky2-cta:focus {
  transform: translateY(-2px);
  color: #14284f;
  box-shadow: 0 14px 30px rgba(2, 8, 24, 0.6);
}


/* --- the cover ----------------------------------------------------------
   The invitation opens on what used to be its closing page: the framed quote
   artwork, with the quote itself and the OPEN INVITATION button live on top.

   `background-size:contain` and not `cover`: the frame IS the artwork here, so
   it has to stay closed on all four sides at every viewport aspect — phones
   letterbox it top and bottom, the desktop card pillarboxes it. The strips of
   navy either way are the artwork's own edge colour, so the seams don't read. */
body .elementor-5748 .elementor-element.elementor-element-6669fbd8:not(.elementor-motion-effects-element-type-background) {
  background-image: url('../assets/pdf/quote.jpg?v=ky16');
  background-position: center center;
  background-size: contain;
  background-repeat: no-repeat;
  background-color: #041232;
}

#section-cover {
  position: relative;
}
/* one centred column: [greeting] · quote · button */
#section-cover > .e-con-inner {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  container-type: inline-size;
}
/* Elementor's own container/widget rules let these grow and eat the column's
   free space, which would strand the quote at the top of the frame */
#section-cover > .e-con-inner > * {
  flex: 0 0 auto;
}

.ky2-cover-copy {
  width: 100%;
  text-align: center;
  pointer-events: none;
}
.ky2-cover-copy p {
  margin: 0;
}
/* same face and measure the quote had as the closing page, sized off the
   section width so it tracks the artwork it sits inside */
.ky2-cover-quote {
  font-family: 'KY2Pinyon', 'KY2Cormorant', serif;
  font-size: 6cqw;
  line-height: 1.62;
  letter-spacing: 0.005em;
  color: #ffffff;
  text-shadow: 0 0 18px rgba(120, 165, 255, 0.28);
  animation: ky2CoverFade 1.5s ease 0.1s both;
}
@keyframes ky2CoverFade {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .ky2-cover-quote { animation: none; }
}

/* --- eventory credit, closing the details page ------------------------- */
.ky2-credit {
  /* the only thing left in the panel now that the CTA is on the artwork */
  margin-top: 46px;
  text-align: center;
}
.ky2-credit-logo {
  display: block;
  width: 116px;
  height: auto;
  /* the wordmark is boxed symmetrically but its ink sits 3.3% of the width left
     of centre, so the file's own centre is not the optical one */
  margin: 0 auto;
  transform: translateX(3.5%);
}
.ky2-credit .yk-contact {
  margin-top: 1.1rem;
}

/* on anything wider than the invitation column, lift the pages off the field */
@media (min-width: 560px) {
  .ky2-page,
  .ky2-panel {
    box-shadow: 0 0 60px rgba(0, 0, 0, 0.5);
  }
}
