@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600&family=DM+Sans:wght@400;500;600;700&display=swap');
:root{font-family:"DM Sans",sans-serif;color:#f6efe3;background:#18372e;font-synthesis:none;scroll-behavior:smooth;--cream:#f4eddf;--pine:#19372e;--gold:#d3ba91}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:6px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-80px;left:1rem;z-index:50;background:white;color:#19372e;padding:.8rem 1.1rem}.skip-link:focus{top:1rem}.story{height:100vh;height:100dvh;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;overscroll-behavior-y:contain;scrollbar-width:none}.story::-webkit-scrollbar{display:none}.slide{height:100vh;height:100dvh;min-height:360px;scroll-snap-align:start;scroll-snap-stop:always;position:relative;isolation:isolate;display:grid;place-items:center;overflow:hidden;background:#1b342b}.slide__media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-3;transform:scale(1.035);transition:transform 1.8s ease}.slide.is-active .slide__media{transform:scale(1)}.slide--photo .slide__media{object-position:center}.slide__veil{position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,rgba(19,39,32,.3),rgba(19,39,32,.12) 45%,rgba(19,39,32,.38))}.slide--botanical{color:#243d31;background:#e8e4d6}.slide--botanical .botanical-image{object-fit:cover;object-position:center}.slide--botanical .slide__veil{background:rgba(247,245,231,.48)}.slide--green .slide__veil{background:linear-gradient(140deg,rgba(12,40,30,.76),rgba(16,43,33,.71))}.slide__content{position:relative;z-index:1;text-align:center;width:min(90%,1000px);opacity:.5;transform:translateY(24px);transition:opacity .9s ease,transform .9s ease}.slide.is-active .slide__content{opacity:1;transform:translateY(0)}.slide__content--botanical{display:flex;flex-direction:column;align-items:center;gap:clamp(12px,3.5vh,29px);padding-block:55px;text-shadow:0 1px 15px rgba(246,244,224,.55)}.eyebrow{text-transform:uppercase;letter-spacing:.3em;font-size:clamp(.64rem,.9vw,.79rem);font-weight:700;line-height:1.8;margin:0}.eyebrow--light{color:#ead5b3}.fine-print{letter-spacing:.19em;text-transform:uppercase;font-size:clamp(.7rem,.95vw,.85rem);margin:0}.fine-print--light{color:#e5d2b3}.ornamental-rule{display:block;background:#967c53;height:1px;width:56px;opacity:.8}.ornamental-rule--light{background:#e4ca9f}.names{font:400 clamp(5.4rem,13vw,12rem)/.82 "Cormorant Garamond",serif;letter-spacing:-.06em;margin:0;display:flex;align-items:center;gap:clamp(.15em,2vw,.4em)}.names__amp{font-size:.48em;font-style:italic;align-self:center;color:#937c5a}.statement{font:500 clamp(5rem,12vw,11rem)/.9 "Cormorant Garamond",serif;letter-spacing:-.055em;margin:0}.statement--save{display:flex;gap:.2em}.statement--date{display:flex;gap:.18em;font-variant-numeric:lining-nums}.statement--venue{display:flex;align-items:center;gap:.15em;font-size:clamp(4.3rem,10vw,10rem)}.statement__divider{font-size:.55em;color:#937c5a}.photo-number{position:absolute;bottom:clamp(24px,5vw,66px);left:clamp(22px,5vw,72px);font-size:.7rem;letter-spacing:.18em;color:white;text-shadow:0 2px 12px #000a;opacity:.85}.site-header{position:fixed;z-index:20;top:0;left:0;right:0;pointer-events:none;display:flex;justify-content:space-between;align-items:center;padding:clamp(16px,3vw,35px) clamp(20px,4.4vw,70px);color:#fbf3e7;mix-blend-mode:difference}.site-header a{pointer-events:auto;text-decoration:none}.monogram{font:500 1.4rem "Cormorant Garamond",serif;letter-spacing:-.06em}.monogram span{font-style:italic;font-size:.85em;padding-inline:.08em}.site-header__date{font-size:.65rem;letter-spacing:.25em;font-weight:600}.story-navigation{position:fixed;right:clamp(9px,2vw,24px);top:50%;transform:translateY(-50%);z-index:20}.story-navigation__dots{display:flex;flex-direction:column;gap:9px}.story-navigation__dots button{padding:6px;border:0;background:none;cursor:pointer;display:grid;place-items:center}.story-navigation__dots button::before{content:"";display:block;width:5px;height:5px;border-radius:50%;background:#fff;opacity:.5;transition:all .25s;box-shadow:0 1px 5px #0008}.story-navigation__dots button[aria-current="step"]::before{height:19px;border-radius:3px;opacity:1;background:#e5d4ac}.story-controls{position:fixed;z-index:20;right:clamp(20px,4.4vw,70px);bottom:clamp(21px,3.5vw,44px);display:flex;align-items:center;gap:11px;color:white;text-shadow:0 1px 8px #0008}.story-controls__button{color:inherit;border:1px solid #fffa;border-radius:50%;background:#19372e55;backdrop-filter:blur(8px);width:39px;height:39px;cursor:pointer;transition:background .2s}.story-controls__button:hover:not(:disabled){background:#19372eaa}.story-controls__button:disabled{opacity:.35;cursor:default}.story-controls__count{display:flex;align-items:center;gap:.5em;font-size:.7rem;letter-spacing:.1em;font-variant-numeric:tabular-nums}.story-controls__separator{opacity:.6}.progress-bar{height:2px;position:fixed;bottom:0;left:0;right:0;z-index:25;background:#fff2}.progress-bar__fill{height:100%;background:#dec6a3;width:7.14%;transition:width .3s ease}.slide--intro{background:radial-gradient(circle at 50% 46%,#45634c 0%,#224337 50%,#112b24 100%);color:#f5ecdf}.intro-orbit{position:absolute;aspect-ratio:1;border:1px solid #d9c9a226;border-radius:50%;width:min(80vw,75vh);pointer-events:none}.intro-orbit--two{width:min(110vw,105vh);border-color:#d9c9a217}.intro-content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;padding:30px;gap:clamp(24px,4.2vh,42px)}.eyebrow--intro{color:#e9d7b7;text-align:center}.envelope{position:relative;display:block;width:min(74vw,560px);aspect-ratio:1.55;background:transparent;border:0;padding:0;cursor:pointer;filter:drop-shadow(0 22px 35px #07180f77);transition:transform .5s}.envelope:hover{transform:translateY(-8px)}.envelope__art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:2;pointer-events:none}.envelope__seal{position:absolute;width:clamp(60px,19%,116px);height:auto;top:50%;left:50%;transform:translate(-50%,-30%);z-index:4;pointer-events:none;filter:drop-shadow(0 4px 6px #281b1755);transition:opacity .4s,transform .8s}.envelope__letter{position:absolute;top:25%;left:16%;right:16%;height:60%;border-radius:3px;background:#f3e8d4;color:#284138;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4em;box-shadow:0 6px 18px #0002;z-index:1;transition:transform 1.1s cubic-bezier(.2,.8,.2,1);font:500 clamp(1.8rem,4vw,3rem) "Cormorant Garamond",serif}.envelope__letter em{color:#a4885e}.envelope__letter small{font:600 .56rem "DM Sans",sans-serif;letter-spacing:.28em;text-transform:uppercase}.envelope__flap{position:absolute;z-index:3;left:8%;right:8%;top:15%;height:52%;background:linear-gradient(160deg,#e6d8bb,#c9b595);clip-path:polygon(0 0,100% 0,50% 84%);transform-origin:top center;backface-visibility:hidden;transition:transform .85s ease,opacity .85s}.envelope.is-open .envelope__flap{transform:rotateX(165deg);opacity:0}.envelope.is-open .envelope__seal{opacity:0;transform:translate(-50%,-100%) scale(.6)}.envelope.is-open .envelope__letter{transform:translateY(-36%) scale(1.13)}.intro-instruction{margin:0;letter-spacing:.18em;font-size:.72rem;text-transform:uppercase;text-align:center;color:#e3d2b5}.instruction-spark{padding-inline:.75em;font-size:.75em}.intro-bottom{position:absolute;bottom:clamp(25px,4vw,60px);left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;flex-direction:column;letter-spacing:.2em;text-transform:uppercase;font-size:.6rem;opacity:.65}.intro-bottom__line{height:28px;width:1px;background:currentColor}.slide__content--green{width:min(92%,1050px);padding:40px 0}.section-title{font:500 clamp(3.4rem,7.4vw,7.5rem)/.95 "Cormorant Garamond",serif;margin:clamp(22px,4vh,42px) 0;letter-spacing:-.035em}.section-title em{font-weight:400}.countdown{display:flex;justify-content:center;gap:clamp(10px,4vw,56px);margin:clamp(40px,8vh,90px) auto}.countdown__unit{min-width:clamp(58px,10vw,132px);display:flex;align-items:center;flex-direction:column;gap:13px}.countdown__value{font:400 clamp(2.7rem,7vw,6.8rem)/1 "Cormorant Garamond",serif;font-variant-numeric:tabular-nums}.countdown__label{text-transform:uppercase;font-size:clamp(.53rem,.85vw,.72rem);letter-spacing:.14em;color:#eedcbd}.slide__content--information{max-width:790px;padding:60px 18px}.slide__content--information .section-title{margin:17px 0 26px}.slide__content--information .ornamental-rule{margin:0 auto 32px}.slide__content--information p:not(.eyebrow,.form-note){max-width:680px;margin:0 auto 1.15em;font-size:clamp(.98rem,1.6vw,1.23rem);line-height:1.85;font-weight:400}.form-link{display:inline-flex;align-items:center;justify-content:center;margin-top:20px;border:1px solid #f3e6cb;padding:15px 27px;text-decoration:none;text-transform:uppercase;font-size:.72rem;letter-spacing:.15em;transition:background .2s,color .2s}.form-link:not(.form-link--disabled):hover{background:#f3e6cb;color:#19372e}.form-link--disabled{opacity:.55;cursor:not-allowed}.form-note{font-size:.78rem;color:#eddbbe;margin:12px 0}.slide--final .slide__veil{background:linear-gradient(90deg,rgba(13,31,25,.63),rgba(13,31,25,.42)),linear-gradient(180deg,#0002,#0005)}.slide__content--final{max-width:780px;padding:clamp(24px,5vw,60px);background:rgba(17,40,31,.3);border:1px solid #fff2;backdrop-filter:blur(12px);box-shadow:0 20px 80px #0b251b22}.final-heading{font:500 clamp(2.8rem,6vw,6.5rem)/1 "Cormorant Garamond",serif;letter-spacing:-.03em;margin:28px 0}.slide__content--final>p:not(.eyebrow,.final-signature){font-size:clamp(.9rem,1.4vw,1.1rem);line-height:1.7}.slide__content--final .ornamental-rule{margin:28px auto}.final-signature{font:500 clamp(2.5rem,5vw,4.3rem) "Cormorant Garamond",serif;margin:0}.final-signature em{color:var(--gold)}@media(max-width:700px){.site-header{padding:18px 19px}.site-header__date{font-size:.55rem}.story-navigation{display:none}.story-controls{right:17px;bottom:20px;gap:8px}.story-controls__button{width:35px;height:35px}.slide--botanical .slide__veil{background:rgba(247,245,231,.55)}.names{flex-direction:column;gap:0;font-size:clamp(6.8rem,26vw,11rem)}.names__amp{font-size:.45em;line-height:1.1}.statement--save,.statement--date,.statement--venue{flex-direction:column;gap:0}.statement--save{font-size:clamp(6rem,21vw,10rem)}.statement--date{font-size:clamp(6rem,23vw,10rem)}.statement--venue{font-size:clamp(4.5rem,16vw,7.5rem)}.statement__divider{line-height:.45;margin:.12em 0}.envelope{width:min(91vw,540px)}.intro-content{gap:23px}.intro-bottom{bottom:20px;left:24px;transform:none}.slide__content--information{padding:55px 10px}.slide__content--information p:not(.eyebrow,.form-note){font-size:clamp(.9rem,3.6vw,1.06rem);line-height:1.65}.slide__content--information .section-title{font-size:clamp(3.5rem,12vw,5.6rem)}.slide__content--final{width:90%;padding:28px 20px}.final-heading{font-size:clamp(2.8rem,11vw,4.8rem)}.countdown{gap:9px;margin:35px auto}.countdown__unit{min-width:0;flex:1;gap:8px}.countdown__value{font-size:clamp(2.2rem,10vw,4.5rem)}.countdown__label{font-size:.56rem;letter-spacing:.08em}.section-title{font-size:clamp(3.4rem,12vw,5rem)}.slide--green .slide__veil{background:rgba(12,39,30,.75)}}@media(max-height:640px){.intro-content{gap:12px}.envelope{width:min(56vw,340px)}.intro-bottom{display:none}.slide__content--information{padding:45px 5px}.slide__content--information .section-title{margin:8px 0 15px}.slide__content--information .ornamental-rule{margin-bottom:13px}.slide__content--information p:not(.eyebrow,.form-note){font-size:.85rem;line-height:1.45}.countdown{margin:18px auto}.slide__content--final{padding:16px}.final-heading{margin:12px 0}.slide__content--final .ornamental-rule{margin:12px auto}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}.slide__content{opacity:1;transform:none}.slide__media{transform:none}}


/*
 * Couple photos: preserve every pixel of the original photograph, regardless of
 * aspect ratio. Fill otherwise empty screen space with a soft, darkened copy.
 * The blurred image reuses the same URL, so the browser can reuse its cache.
 */
.slide--photo .photo-backdrop {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  filter: blur(32px) brightness(0.55);
  transform: scale(1.12);
  z-index: -3;
  pointer-events: none;
}

.slide--photo .slide__media,
.slide--photo.is-active .slide__media {
  object-fit: contain;
  object-position: center;
  z-index: -2;
  transform: none;
  transition: none;
}

/* The final note still sits on top of the sharp, fully visible sixth photo. */
.slide--final .slide__veil {
  z-index: -1;
}

/* Stationary presentation: real scroll-snap steps behind a sticky stage. */
.story--stacked { scroll-snap-type: y mandatory; scroll-behavior: smooth; }
.story--stacked .story-stage {
  position: sticky;
  top: 0;
  z-index: 1;
  width: 100%;
  height: 100vh;
  height: 100dvh;
  overflow: hidden;
  isolation: isolate;
  scroll-snap-align: start;
}
.story--stacked .story-track { height: auto; pointer-events: none; }
.story--stacked .story-track__step {
  height: 100vh;
  height: 100dvh;
  scroll-snap-align: start;
}
.story--stacked .slide {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  min-height: 0;
  scroll-snap-align: none;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform-origin: center center;
  transition: none;
}
.story--stacked .slide.is-rendered { visibility: visible; }
.story--stacked .slide.is-active { pointer-events: auto; }
.story--stacked .slide .slide__media,
.story--stacked .slide .slide__content {
  transform: none;
  transition: none;
}
.story--stacked .slide .slide__content { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
  .story--stacked { scroll-behavior: auto; }
  .story--stacked .slide { transform: none !important; }
}


/* Envelope: let the supplied artwork be the envelope.
   Synthetic flap and seal previously overlapped it on top of a visible
   letter, causing the broken collage shown on desktop. */
.slide--intro .envelope {
  width: min(85vw, 350px);
  height: min(46dvh, 420px);
  aspect-ratio: auto;
  max-height: none;
  padding: 0;
  background: transparent;
  border: 0;
  perspective: 900px;
  filter: none;
  transition: transform 400ms ease;
}
.slide--intro .envelope:hover { transform: translateY(-4px); }
.slide--intro .envelope__art {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  z-index: 2;
  pointer-events: none;
  filter: drop-shadow(0 15px 26px rgba(4, 19, 13, .46));
  transform: none;
  opacity: 1;
  transition: transform 1100ms cubic-bezier(.22,.75,.22,1), opacity 850ms ease;
}
.slide--intro .envelope__letter {
  position: absolute;
  z-index: 3;
  top: 21%;
  left: 11%;
  right: 11%;
  width: auto;
  height: 51%;
  padding: 1rem .6rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: .4rem;
  border: 1px solid rgba(132,107,69,.18);
  border-radius: 3px;
  background: #f5ebd9;
  color: #294437;
  box-shadow: 0 15px 30px rgba(7,25,16,.3);
  font: 500 clamp(1.9rem, 3vw, 2.6rem)/1 "Cormorant Garamond",serif;
  white-space: nowrap;
  opacity: 0;
  transform: translateY(22%) scale(.87);
  pointer-events: none;
  transition: opacity 650ms ease 120ms, transform 1000ms cubic-bezier(.2,.8,.2,1);
}
.slide--intro .envelope__letter small {
  font: 600 .55rem/1.4 "DM Sans", sans-serif;
  letter-spacing: .25em;
  text-transform: uppercase;
}
.slide--intro .envelope.is-open .envelope__art {
  opacity: .24;
  transform: translateY(22%) rotateX(-8deg) scale(.89);
}
.slide--intro .envelope.is-open .envelope__letter {
  opacity: 1;
  transform: translateY(-14%) scale(1);
}
@media (prefers-reduced-motion: reduce) {
  .slide--intro .envelope,
  .slide--intro .envelope__art,
  .slide--intro .envelope__letter {
    transition: none;
  }
}


/* Photo-specific composition: never crop fit photos; intentionally cover 2 & 3. */
.slide--photo[data-photo-mode="fill"] .slide__media,
.slide--photo[data-photo-mode="fill"].is-active .slide__media {object-fit:cover;}
.slide--photo[data-photo-mode="fit"] .slide__media,
.slide--photo[data-photo-mode="fit"].is-active .slide__media {object-fit:contain;}

/* A single coherent CSS envelope. Layer order is back, card, pocket, flap, seal. */
.slide--intro .envelope {
 position:relative;width:min(72vw,460px);height:auto;aspect-ratio:1.48;
 perspective:1100px;transform-style:preserve-3d;overflow:visible;
 border:0;padding:0;background:transparent;filter:drop-shadow(0 25px 28px #061d1560);
}
.slide--intro .envelope__back,.slide--intro .envelope__pocket,
.slide--intro .envelope__flap,.slide--intro .envelope__wax,
.slide--intro .envelope__invitation {position:absolute;display:block;}
.slide--intro .envelope__back {
 inset:10% 0 0;background:#b4a789;border-radius:5px;
 box-shadow:inset 0 0 0 1px #fff3;z-index:1;
}
.slide--intro .envelope__invitation {
 left:9%;width:82%;height:77%;bottom:8%;top:auto;right:auto;
 background:#f6eddd url("./assets/kalalily.png") center/cover;
 border:1px solid #bcae92;box-shadow:0 4px 16px #10271c44;
 display:flex;flex-direction:column;align-items:center;justify-content:center;
 gap:.7em;z-index:2;color:#2b4336;opacity:1;
 transform:translateY(0) scale(1);transition:transform 1150ms cubic-bezier(.2,.75,.15,1),opacity 500ms;
}
.slide--intro .envelope__invitation-names{font:500 clamp(2.1rem,5vw,3.2rem) "Cormorant Garamond",serif;white-space:nowrap;}
.slide--intro .envelope__invitation-names em{color:#947b50;}
.slide--intro .envelope__invitation-caption{font:600 .58rem "DM Sans",sans-serif;text-transform:uppercase;letter-spacing:.22em;}
.slide--intro .envelope__pocket {
 inset:10% 0 0;z-index:3;
 background:linear-gradient(152deg,#e4d8bb 0%,#c9b799 90%);
 clip-path:polygon(0 0,50% 53%,100% 0,100% 100%,0 100%);
 border-radius:4px;
}
.slide--intro .envelope__pocket::after{content:"";position:absolute;inset:0;background:#d6c7aa;clip-path:polygon(0 100%,50% 53%,100% 100%);}
.slide--intro .envelope__flap {
 left:0;right:0;top:10%;height:54%;z-index:5;
 background:linear-gradient(165deg,#eadfc6,#c7b492);
 clip-path:polygon(0 0,100% 0,50% 100%);
 transform-origin:top center;backface-visibility:hidden;
 transition:transform 750ms cubic-bezier(.18,.7,.2,1);
}
.slide--intro .envelope__wax {
 left:50%;top:53%;width:59px;height:59px;border-radius:50%;z-index:6;
 transform:translate(-50%,-50%);display:grid;place-items:center;
 background:radial-gradient(circle at 32% 22%,#b89978,#7c503d 75%);
 color:#ffedd1;border:3px double #d5b9a0;box-shadow:0 3px 8px #2a211a88;
 font:600 1.1rem "Cormorant Garamond",serif;
 transition:opacity 360ms ease,transform 360ms ease;
}
.slide--intro .envelope__wax span{font-size:.7em;margin:0 -7px;}
.slide--intro .envelope.is-open .envelope__wax{opacity:0;transform:translate(-50%,-80%) scale(.55);}
.slide--intro .envelope.is-open .envelope__flap{transform:rotateX(175deg);z-index:1;}
.slide--intro .envelope.is-open .envelope__invitation{transform:translateY(-68%) scale(1.09);}
.slide--intro .envelope.is-revealing .envelope__invitation{opacity:0;}
@media(max-width:700px){.slide--intro .envelope{width:min(86vw,420px);}.slide--intro .envelope__wax{width:48px;height:48px;}}

/* Card growing out of envelope toward the next botanical title slide. */
.invitation-reveal{
 position:fixed;z-index:30;overflow:hidden;isolation:isolate;
 background:#f5eddd;box-shadow:0 18px 60px #0b1e1677;
 border:1px solid #dbceb5;pointer-events:none;
 transition:top 850ms cubic-bezier(.17,.8,.19,1),left 850ms cubic-bezier(.17,.8,.19,1),
 width 850ms cubic-bezier(.17,.8,.19,1),height 850ms cubic-bezier(.17,.8,.19,1),
 opacity 240ms ease;
}
.invitation-reveal[hidden]{display:none;}
.invitation-reveal__image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.85;}
.invitation-reveal__copy{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;color:#2b4235;text-align:center;}
.invitation-reveal__eyebrow,.invitation-reveal__date{font:600 clamp(.55rem,1vw,.8rem) "DM Sans",sans-serif;letter-spacing:.2em;text-transform:uppercase;}
.invitation-reveal__names{font:500 clamp(2rem,11vw,11rem)/1 "Cormorant Garamond",serif;white-space:nowrap;}
.invitation-reveal__names em{color:#937c5a;}
.invitation-reveal.is-expanding{top:0!important;left:0!important;width:100vw!important;height:100dvh!important;}

/* Photo 6: the complete photograph is not covered by the closing note. */
.slide--final .final-layout{
 position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);
 align-items:center;width:min(94%,1500px);height:min(88dvh,850px);gap:clamp(18px,3vw,56px);
}
.slide--final .final-photo-frame{width:100%;height:100%;min-height:0;display:grid;place-items:center;}
.slide--final .final-photo{display:block;max-width:100%;max-height:100%;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 10px 22px #06150e55);}
.slide--final .final-message{min-width:0;display:grid;place-items:center;}
.slide--final .slide__content--final{width:100%;padding:clamp(20px,3vw,38px);}
.slide--final .final-heading{font-size:clamp(2.4rem,4.1vw,5.2rem);}
@media(max-width:700px){
 .slide--final .final-layout{width:94%;height:92dvh;grid-template-columns:1fr;grid-template-rows:minmax(0,53%) minmax(0,47%);gap:8px;}
 .slide--final .final-photo-frame{height:100%;}
 .slide--final .final-message{align-self:start;}
 .slide--final .slide__content--final{padding:12px 16px;}
 .slide--final .final-heading{font-size:clamp(1.9rem,7vw,3rem);margin:10px 0;}
 .slide--final .slide__content--final .ornamental-rule{margin:8px auto;}
 .slide--final .final-signature{font-size:clamp(1.7rem,7vw,2.5rem);}
 .slide--final .slide__content--final>p:not(.eyebrow,.final-signature){font-size:.83rem;margin:5px;}
}
@media(prefers-reduced-motion:reduce){.slide--intro .envelope__flap,.slide--intro .envelope__wax,.slide--intro .envelope__invitation,.invitation-reveal{transition:none!important;}}


/* One fully settled screen per gesture: eliminate fractional native snap states. */
html,body{overscroll-behavior:none;}
.story.story--discrete{
 overflow:hidden;
 scroll-snap-type:none;
 scroll-behavior:auto;
 touch-action:pan-x pinch-zoom;
}
.story--discrete .story-stage{position:relative;top:auto;}
.story--discrete .slide{touch-action:pan-x pinch-zoom;}
.story--discrete .slide.is-rendered{will-change:opacity,transform;}
.story--discrete .story-track{display:none;}

/* Match the invitation's opening page to the provided green background asset. */
.slide--intro{
 background:#1b3d31 url("./assets/green-background.jpg") center center/cover no-repeat;
}
.slide--intro::before{
 content:"";position:absolute;inset:0;z-index:-1;
 background:rgba(9,36,26,.23);
 pointer-events:none;
}


/* Custom seal from the supplied asset, not a CSS-generated monogram. */
.slide--intro .envelope__wax{
  display:block;object-fit:contain;width:clamp(54px,14%,82px);height:auto;
  aspect-ratio:1;left:50%;top:53%;border:0;border-radius:0;
  background:none;box-shadow:none;filter:drop-shadow(0 4px 5px rgba(35,25,18,.4));
  padding:0;
}

/* The envelope letter and the expanded page use the same floral treatment. */
.slide--intro .envelope__invitation{
  isolation:isolate;
  background:#e8e4d6 url("./assets/kalalily.png") center/cover no-repeat;
  color:#243d31;
  text-shadow:0 1px 10px rgba(246,244,224,.55);
  gap:.35em;
}
.slide--intro .envelope__invitation::before{
  content:"";position:absolute;inset:0;z-index:-1;background:rgba(247,245,231,.48);
}
.envelope__invitation-eyebrow{
  font:700 clamp(.47rem,.65vw,.65rem) "DM Sans",sans-serif;
  letter-spacing:.23em;text-transform:uppercase;
}
.slide--intro .envelope__invitation-caption{
  font-size:clamp(.45rem,.6vw,.6rem);letter-spacing:.14em;
}
.invitation-reveal.slide--botanical{
  display:grid;place-items:center;isolation:isolate;
  background:#e8e4d6;
  border:0;box-shadow:0 16px 50px rgba(12,35,24,.2);
  opacity:1;
}
.invitation-reveal.slide--botanical[hidden]{display:none;}
.invitation-reveal.slide--botanical .slide__media{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  z-index:-3;transform:none;transition:none;
}
.invitation-reveal.slide--botanical .slide__veil{
  position:absolute;inset:0;z-index:-2;background:rgba(247,245,231,.48);
}
.invitation-reveal.slide--botanical .slide__content{
  opacity:1;transform:none;transition:none;
  display:flex;flex-direction:column;align-items:center;
}
@media(max-width:700px){
  .invitation-reveal.slide--botanical .slide__veil{background:rgba(247,245,231,.55);}
}


/* Stronger edge definition and dimensional paper folds for the envelope. */
.slide--intro .envelope{filter:drop-shadow(0 15px 12px rgba(0,0,0,.42)) drop-shadow(0 26px 35px rgba(0,0,0,.3));}
.slide--intro .envelope__back{border:2px solid #877859;box-shadow:inset 0 0 0 2px #e9d9b5,0 0 0 1px rgba(19,35,22,.45);}
.slide--intro .envelope__pocket{filter:drop-shadow(0 0 1px #584f3b);background:linear-gradient(150deg,#f3e5c8 0%,#d5c4a1 55%,#ad9d7c 100%);}
.slide--intro .envelope__pocket::after{background:linear-gradient(0deg,#c1ad88,#e3d0aa);}
.slide--intro .envelope__flap{filter:drop-shadow(0 2px 2px #766b51);background:linear-gradient(165deg,#f2e4c5,#c2ab83);}
.slide--intro .envelope:not(.is-open) .envelope__flap{box-shadow:0 4px 12px #0003;}
/* The extraction uses one painted card above the envelope, never passing behind its pocket. */
.invitation-reveal.slide--botanical{z-index:70;visibility:visible;transform:none;transition:top 950ms cubic-bezier(.19,.73,.22,1),left 950ms cubic-bezier(.19,.73,.22,1),width 950ms cubic-bezier(.19,.73,.22,1),height 950ms cubic-bezier(.19,.73,.22,1),opacity 220ms ease;}
.invitation-reveal.slide--botanical.is-expanding{z-index:70;}
.slide--intro .envelope.is-revealing .envelope__invitation{opacity:0;transition:opacity 150ms linear;}
/* Calendar action stays visually secondary to the countdown numbers. */
.calendar-link{display:inline-flex;gap:.75rem;align-items:center;justify-content:center;padding:12px 20px;border:1px solid rgba(246,236,213,.65);border-radius:999px;color:#f6eddb;background:rgba(11,35,26,.24);text-decoration:none;font-size:clamp(.75rem,1.1vw,.9rem);letter-spacing:.08em;transition:background .2s,border-color .2s;}
.calendar-link:hover,.calendar-link:focus-visible{background:rgba(246,236,213,.16);border-color:#f6eddb;}
.calendar-link__icon{flex:none;}
@media(max-height:600px){.slide__content--green .section-title{margin:8px 0;}.slide__content--green .countdown{margin:12px auto;}.calendar-link{padding:8px 14px;}}


/* Citadel Script is selected if licensed and available on the visitor's system.
   Hungarian ő/ű fall back to the existing serif. Self-host only with web rights. */
:root{font-family:"Citadel Script Std","Cormorant Garamond",serif}
body,button,a,.eyebrow,.fine-print,.section-title,.statement,.names,.countdown__value,.countdown__label,.final-heading,.envelope__invitation-names,.envelope__invitation-caption,.envelope__invitation-eyebrow,.site-header,.story-controls{
  font-family:"Citadel Script Std","Cormorant Garamond",serif!important;
}
.eyebrow,.fine-print,.countdown__label,.calendar-link,.intro-instruction{letter-spacing:.04em!important;text-transform:none!important}
.monogram{display:grid;place-items:center;width:68px;height:72px;text-decoration:none}
.monogram img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 2px 7px rgba(0,0,0,.72))}
.slide--botanical~.site-header .monogram img{filter:drop-shadow(0 1px 2px #152b23)}
.pearl-decoration{position:absolute;z-index:-1;pointer-events:none;object-fit:contain;max-width:min(35vw,380px);max-height:35vh;filter:drop-shadow(0 7px 16px rgba(0,0,0,.2))}
.pearl-decoration--top{left:0;top:0;width:clamp(115px,25vw,370px);height:auto}
.pearl-decoration--bottom{right:0;bottom:0;width:clamp(120px,26vw,380px);height:auto}
.slide--green .slide__veil{z-index:-2}
.slide--green .pearl-decoration{z-index:0;opacity:.83}
.slide--green .slide__content{z-index:1}
.countdown-rings{display:block;width:clamp(120px,17vw,220px);height:auto;object-fit:contain;margin:clamp(4px,1.5vh,14px) auto;filter:drop-shadow(0 8px 13px rgba(0,0,0,.27))}
.slide--green .countdown{margin:clamp(8px,2.5vh,25px) auto}
.calendar-link{position:relative;z-index:2}
@media(max-width:700px){
 .monogram{width:53px;height:56px}
 .pearl-decoration--top{width:clamp(95px,31vw,170px)}
 .pearl-decoration--bottom{width:clamp(100px,33vw,180px)}
 .slide--green .countdown{margin:12px auto}
 .countdown-rings{width:clamp(115px,30vw,175px);margin:3px auto}
}
@media(max-height:620px){.pearl-decoration{max-height:23vh;opacity:.52}.countdown-rings{width:110px}.slide--green .countdown{margin:6px auto}}
