/* A portrait in the garden, followed by photographs and an open invitation.
   Scope stays inside the six closing chapters; their live content owns its height. */
#invitation-page [data-finale]{--finale-ink:#244e6b;--finale-muted:#557063;--finale-paper:#faf4e8;--finale-sage:#e7eee2;--finale-gold:#ac915b;--finale-progress:1;--finale-parallax:0;position:relative;color:var(--finale-ink);scroll-margin-top:24px}
#invitation-page [data-finale] [hidden]{display:none!important}
#invitation-page [data-finale] h2{font-family:var(--font-display);font-size:clamp(36px,4.6vw,58px);font-weight:400;line-height:1.12;text-wrap:balance;overflow-wrap:anywhere;color:var(--finale-ink)}
#invitation-page [data-finale] .chapter-heading{max-width:680px;margin:0 auto;padding:0 24px 35px}
#invitation-page [data-finale] .chapter-heading::after{content:none}
#invitation-page [data-finale] .chapter-heading p{max-width:460px;margin:15px auto 0;font-size:18px;line-height:1.55;color:var(--finale-muted)}

/* The couple lake scene is styled separately in couple-lake.css. */

/* One continuous, native photograph rail. No decorative frame covers an image. */
#gallery[data-finale]{padding:52px 0 80px;background:var(--finale-paper);overflow:clip}
#gallery[data-finale] .album-stage{position:relative;width:100%;max-width:1260px;margin:auto;overflow:visible;transform:none;opacity:1;filter:none;transition:none}
#gallery[data-finale] #gallery-list{--memory-gap:24px;display:flex;align-items:flex-start;gap:24px;width:100%;padding:16px max(32px,calc((100% - 1040px)/2)) 25px;scroll-padding-inline:max(32px,calc((100% - 1040px)/2));overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain}
#gallery[data-finale] .memory{flex:0 0 min(42vw,430px);min-width:0;padding:0;border:0;background:none;box-shadow:none;transform:none;cursor:zoom-in;scroll-snap-align:center;color:var(--finale-ink)}
#gallery[data-finale] .memory::before{content:none}
#gallery[data-finale] .memory img{display:block;width:100%;height:clamp(340px,45vw,560px);aspect-ratio:auto;object-fit:contain;object-position:center;border:0;border-radius:0;background:transparent;box-shadow:none}
#gallery[data-finale] .memory-caption{font-size:17px;line-height:1.45;margin:18px 0 0;padding:0 14px;color:var(--finale-muted)}
#gallery[data-finale] .memory:focus-visible{outline:2px solid var(--finale-ink);outline-offset:7px}
#gallery[data-finale] .gallery-thumbnails{max-width:calc(100% - 74px);gap:10px;margin:7px auto 14px;padding:5px}
#gallery[data-finale] .gallery-thumbnail{width:47px;height:58px;flex-basis:47px;border-color:transparent;opacity:.6;transition:opacity 150ms ease}
#gallery[data-finale] .gallery-thumbnail[aria-current="true"]{border-color:var(--finale-ink);opacity:1}
#gallery[data-finale] .gallery-controls{max-width:none;gap:20px;margin:auto;padding:0 28px;flex-wrap:wrap;color:var(--finale-ink)}
#gallery[data-finale] .gallery-controls button{color:inherit}
#gallery[data-finale] .gallery-controls #gallery-autoplay{font-size:14px;text-decoration-color:#8d9d86}
#gallery[data-finale] #gallery-count{font-size:16px;font-variant-numeric:tabular-nums}

/* Useful guest details remain open, legible and naturally as tall as their copy. */
#travel[data-finale]{padding:76px 32px 88px;background:linear-gradient(#faf4e8,#edf1e7 65%,#faf4e8);overflow:clip}
#travel[data-finale] .visit-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);gap:60px;align-items:center;max-width:1120px;margin:20px auto 0}
#travel[data-finale] #guest-guide{width:100%;max-width:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:38px 28px;margin:0;align-self:center}
#travel[data-finale] .guest-note{display:block;min-height:0;padding:0;text-align:left;background:none;filter:none}
#travel[data-finale] .guest-note::before{content:none}
#travel[data-finale] .guest-note-number{display:none}
#travel[data-finale] .guest-note-copy h3{font:400 27px/1.18 var(--font-display);margin:0 0 12px;color:var(--finale-ink)}
#travel[data-finale] .guest-note-copy p{font:400 17px/1.6 var(--font-body);color:var(--finale-muted);white-space:pre-line}
#travel[data-finale] .venue-note{width:100%;max-width:540px;margin:0 auto;text-align:center;transform:none;opacity:1;filter:none;transition:none}
#travel[data-finale] .venue-art{margin:0 auto 24px;width:100%;border:0;border-radius:0;box-shadow:none;mask-image:radial-gradient(ellipse 75% 71%,#000 53%,#000d 68%,transparent 91%);transform:translateY(calc(var(--finale-parallax)*8px))}
#travel[data-finale] .venue-art img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;transform:none;transition:none}
#travel[data-finale] .venue-note h3{font:400 30px/1.2 var(--font-display);margin:0 0 10px;overflow-wrap:anywhere;color:var(--finale-ink)}
#travel[data-finale] .venue-note p{font-size:17px;line-height:1.5;max-width:390px;margin:0 auto 4px;overflow-wrap:anywhere;color:var(--finale-muted)}
#travel[data-finale] .venue-note a{font-size:16px;text-underline-offset:6px;text-decoration-color:var(--finale-gold);min-height:44px}
#travel[data-finale]>.neel-atmosphere,#closing[data-finale]>.neel-atmosphere{display:none}

#rsvp[data-finale]{position:relative;isolation:isolate;text-align:center;padding:105px 32px 86px;background:var(--finale-paper);overflow:clip}
#rsvp[data-finale] .reply-copy{position:relative;z-index:2;max-width:600px;margin:auto}
#rsvp[data-finale] .reply-copy h2{font-family:var(--font-script);font-size:clamp(53px,6.5vw,78px);line-height:1.13;margin:0 0 27px}
#rsvp[data-finale] .reply-copy>p[data-bind]{max-width:460px;font-size:19px;line-height:1.65;margin:0 auto 28px;color:var(--finale-muted);white-space:pre-line;overflow-wrap:anywhere}
#rsvp[data-finale] #rsvp-button{min-height:52px;padding:13px 34px;border:1px solid #355e68;border-radius:2px;background:#244e60;color:#fffaf0;box-shadow:none;font-size:18px;line-height:1.4;transition:background-color 180ms ease}
#rsvp[data-finale] #rsvp-button:hover{background:#356574}
#rsvp[data-finale] #rsvp-button:focus-visible{outline:2px solid #244e60;outline-offset:5px}
#rsvp[data-finale] #rsvp-note{max-width:390px;font-size:14px;line-height:1.5;color:#67766d;margin:18px auto 0}
#rsvp[data-finale] .calendar-actions,#countdown[data-finale] .calendar-actions{position:relative;z-index:2;justify-content:center;flex-wrap:wrap;gap:8px 30px;font-size:15px;margin:27px auto 0;max-width:600px;padding:0 12px}
#rsvp[data-finale] .reply-botanical{position:absolute;z-index:0;width:clamp(110px,19vw,250px);height:auto;top:-25px;left:calc(50% - 550px);opacity:.82;pointer-events:none;transform:translateY(calc(var(--finale-parallax)*18px)) rotate(-9deg);filter:drop-shadow(0 8px 8px #3c594516)}

#countdown[data-finale]{text-align:center;padding:52px 0 0;background:var(--finale-paper);overflow:clip}
#countdown[data-finale] h2{margin:0 24px 32px;font-size:clamp(34px,4vw,47px)}
#countdown[data-finale] .countdown-grid{width:calc(100% - 58px);max-width:590px;gap:15px;margin:0 auto 26px}
#countdown[data-finale] .countdown-grid strong{font:400 clamp(40px,6.5vw,72px)/1 var(--font-display);font-variant-numeric:lining-nums tabular-nums;color:var(--finale-ink);overflow-wrap:anywhere}
#countdown[data-finale] .countdown-grid span{font-size:16px;margin-top:10px;color:var(--finale-muted)}
#countdown[data-finale] .save-date{font-size:19px;color:var(--finale-muted);margin:0 24px 0}
#countdown[data-finale] .palace-panorama{width:100%;max-width:1600px;margin:0 auto;transform:none;opacity:1;transition:none}
#countdown[data-finale] .palace-panorama img{display:block;width:100%;height:clamp(270px,48vw,640px);object-fit:cover;object-position:center bottom;transform:scale(calc(1.018 + var(--finale-parallax)*.012));transform-origin:center bottom;mask-image:linear-gradient(transparent,#000 19%,#000 83%,transparent)}
#closing[data-finale]{position:relative;text-align:center;padding:20px 28px 118px;background:var(--finale-paper);overflow:clip}
#closing[data-finale] h2{font:400 clamp(43px,6vw,69px)/1.22 var(--font-script);max-width:780px;margin:0 auto 22px;color:var(--finale-ink)}
#closing[data-finale] h2 em{font-family:var(--font-display);font-size:.68em;padding:0 8px;color:var(--finale-gold)}
#closing[data-finale]>p{font-size:18px;line-height:1.6;max-width:470px;margin:0 auto 13px;color:var(--finale-muted);overflow-wrap:anywhere}
#closing[data-finale]>p[data-date]{font-size:17px;margin-bottom:20px}
#closing[data-finale] .quiet-link{font-size:15px;min-height:44px;color:var(--finale-ink);text-underline-offset:6px}
#closing[data-finale] footer{font-size:13px;margin-top:35px;color:#758173}

@media(max-width:900px){
  #travel[data-finale] .visit-layout{gap:32px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  #travel[data-finale] #guest-guide{grid-template-columns:1fr;gap:29px}
  #rsvp[data-finale] .reply-botanical{left:-48px;width:175px;opacity:.62}
}
@media(max-width:599px){
  #invitation-page [data-finale] .chapter-heading{padding-bottom:27px}
  #invitation-page [data-finale] .chapter-heading p{font-size:17px;max-width:300px}
  #gallery[data-finale]{padding:44px 0 57px}
  #gallery[data-finale] #gallery-list{gap:15px;padding:9px 32px 20px;scroll-padding-inline:32px}
  #gallery[data-finale] .memory{flex-basis:calc(100vw - 82px)}
  #gallery[data-finale] .memory img{height:clamp(320px,112vw,490px)}
  #gallery[data-finale] .memory-caption{font-size:16px;margin-top:15px}
  #gallery[data-finale] .gallery-controls{gap:13px}
  #travel[data-finale]{padding:57px 29px 57px}
  #travel[data-finale] .visit-layout{display:flex;flex-direction:column;gap:37px;margin-top:13px}
  #travel[data-finale] #guest-guide{grid-template-columns:1fr;gap:27px;max-width:410px}
  #travel[data-finale] .guest-note{text-align:center}
  #travel[data-finale] .guest-note-copy h3{font-size:26px;margin-bottom:8px}
  #travel[data-finale] .guest-note-copy p{font-size:17px;max-width:345px;margin:auto}
  #travel[data-finale] .venue-art{width:calc(100% + 28px);max-width:none;margin-left:-14px;margin-bottom:18px}
  #travel[data-finale] .venue-note h3{font-size:28px}
  #travel[data-finale] .venue-note p{font-size:16px}
  #rsvp[data-finale]{padding:88px 30px 61px}
  #rsvp[data-finale] .reply-copy h2{font-size:57px;margin-bottom:23px}
  #rsvp[data-finale] .reply-copy>p[data-bind]{font-size:18px;max-width:340px}
  #rsvp[data-finale] .reply-botanical{top:-18px;left:-43px;width:128px;opacity:.68}
  #rsvp[data-finale] #rsvp-note{font-size:13px;max-width:300px}
  #rsvp[data-finale] .calendar-actions,#countdown[data-finale] .calendar-actions{gap:4px 24px;font-size:14px}
  #countdown[data-finale]{padding-top:38px}
  #countdown[data-finale] h2{font-size:34px;margin-bottom:28px}
  #countdown[data-finale] .countdown-grid{gap:8px;width:calc(100% - 52px);margin-bottom:24px}
  #countdown[data-finale] .countdown-grid strong{font-size:46px}
  #countdown[data-finale] .countdown-grid span{font-size:14px;margin-top:7px}
  #countdown[data-finale] .save-date{font-size:18px}
  #countdown[data-finale] .palace-panorama img{height:310px;object-position:center bottom}
  #closing[data-finale]{padding:9px 28px 112px}
  #closing[data-finale] h2{font-size:47px;margin-bottom:20px}
  #closing[data-finale]>p{font-size:17px;max-width:330px}
}
@media(max-width:359px){
  #gallery[data-finale] .gallery-controls{gap:8px;padding-inline:20px}
  #travel[data-finale]{padding-inline:24px}
  #rsvp[data-finale] .reply-copy h2{font-size:50px}
  #countdown[data-finale] .countdown-grid strong{font-size:39px}
}
@media(prefers-reduced-motion:reduce){
  #invitation-page [data-finale]{--finale-progress:1!important;--finale-parallax:0!important}
  #invitation-page [data-finale] *,#invitation-page [data-finale] *::before,#invitation-page [data-finale] *::after{animation:none!important;transition:none!important}
}
