:root{--ink:#243547;--muted:#66717b;--paper:#fbfaf7;--warm:#f4efe7;--gold:#b18a52;--line:#ded7cb;--white:#fff;--shadow:0 18px 50px rgba(35,49,60,.10)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.7}a{color:inherit}.serif,h1,h2,h3,blockquote{font-family:"Cormorant Garamond",Georgia,serif}.site-header{position:sticky;top:0;z-index:20;background:rgba(251,250,247,.94);backdrop-filter:blur(12px);border-bottom:1px solid rgba(222,215,203,.7);display:flex;justify-content:space-between;align-items:center;padding:14px 5vw}.brand{font-family:"Cormorant Garamond",Georgia,serif;font-size:1.35rem;text-decoration:none;letter-spacing:.04em}.site-header nav{display:flex;gap:22px;align-items:center;font-size:.9rem}.site-header nav a{text-decoration:none}.nav-button,.primary-button{background:var(--ink);color:#fff!important;border:0;padding:11px 17px;border-radius:3px;text-decoration:none;letter-spacing:.06em;font-size:.8rem;text-transform:uppercase}.hero{position:relative;background:#182733}.hero-image{height:min(69vh,760px);min-height:460px;overflow:hidden}.hero-image img{width:100%;height:100%;object-fit:cover;object-position:center 30%;display:block;filter:saturate(.9)}.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(12,23,31,.03) 35%,rgba(12,23,31,.62) 100%);pointer-events:none}.hero-copy{position:absolute;z-index:2;bottom:8%;left:8%;right:8%;color:white;text-align:center;text-shadow:0 2px 18px rgba(0,0,0,.28)}.eyebrow{font-size:.72rem;text-transform:uppercase;letter-spacing:.22em;color:var(--gold);font-weight:600;margin:0 0 10px}.hero .eyebrow{color:#f1dfbd}.hero h1{font-size:clamp(3.4rem,7vw,6.5rem);font-weight:500;line-height:.95;margin:0}.dates{font-size:.82rem;letter-spacing:.26em;text-transform:uppercase;margin:20px 0 0}.section{padding:100px 7vw}.section-narrow{max-width:940px;margin:0 auto;padding:92px 7vw}.intro{text-align:center}.intro p{font-family:"Cormorant Garamond",Georgia,serif;font-size:1.34rem;line-height:1.55;margin:0 auto 20px}.intro .invitation{font-family:Inter,system-ui,sans-serif;color:var(--gold);font-size:.92rem;letter-spacing:.04em;margin-top:34px}.intro .closing-intro{font-family:Inter,system-ui,sans-serif;font-size:1rem;color:var(--muted);max-width:780px}.button-wrap{margin-top:30px}.primary-button{display:inline-flex;gap:14px;align-items:center}.early-cta{background:#182733;color:#fff;padding:54px 7vw;text-align:center}.early-cta-inner{max-width:760px;margin:0 auto}.early-cta .eyebrow{color:#f1dfbd}.early-cta h2{color:#fff;margin:0 0 8px}.early-cta p:not(.eyebrow){margin:0 0 24px;color:#d8dde0;font-family:"Cormorant Garamond",Georgia,serif;font-size:1.35rem}.early-cta .primary-button{background:#fff;color:#182733!important}.early-cta .primary-button:hover{opacity:.92}
.section-heading{text-align:center;max-width:780px;margin:0 auto 42px}.section-heading h2,h2{font-size:clamp(2.3rem,4vw,3.6rem);line-height:1.05;font-weight:500;margin:0 0 14px}.section-heading p{color:var(--muted);margin:0}.memories{background:var(--white)}.memory-feature{display:grid;grid-template-columns:1fr 1fr;gap:0;max-width:1120px;margin:0 auto;box-shadow:var(--shadow);background:var(--paper)}.memory-image{min-height:430px;background:var(--paper)}.memory-image img{width:100%;height:100%;object-fit:contain;display:block}.memory-copy{padding:58px}.memory-copy h3{font-size:2.5rem;font-weight:500;margin:0 0 15px}.memory-copy p{color:var(--muted)}.memory-copy .quote{font-family:"Cormorant Garamond",Georgia,serif;font-size:1.6rem;color:var(--ink);line-height:1.35}.story{display:grid;grid-template-columns:1fr 1fr;max-width:1200px;margin:0 auto;gap:70px;align-items:center}.story.reverse .story-image{order:2}.story-image{border-radius:2px;overflow:hidden;box-shadow:var(--shadow)}.story-image img{display:block;width:100%;height:520px;object-fit:contain;background:var(--paper)}.story-copy h2{margin-bottom:18px}.story-copy p{color:var(--muted)}.story-copy p.lead{font-family:"Cormorant Garamond",Georgia,serif;color:var(--ink);font-size:1.45rem;line-height:1.5}.pullquote{margin:28px 0;padding:20px 0 20px 24px;border-left:2px solid var(--gold);font-family:"Cormorant Garamond",Georgia,serif;font-size:1.65rem;line-height:1.35}.soft{background:var(--warm)}.gallery{background:var(--white)}.gallery-grid{max-width:1240px;margin:0 auto;columns:4 260px;column-gap:12px}.gallery-item{margin:0 0 12px;break-inside:avoid;background:var(--paper);overflow:hidden}.gallery-item[hidden]{display:none}.gallery-open{display:block;width:100%;padding:0;border:0;background:transparent;cursor:zoom-in}.gallery-item img{display:block;width:100%;height:auto;transition:transform .3s ease}.gallery-item:hover img{transform:scale(1.015)}.gallery-actions{text-align:center;margin-top:32px}.secondary-button{background:transparent;color:var(--ink);border:1px solid var(--ink);padding:11px 18px;border-radius:3px;letter-spacing:.06em;font-size:.8rem;text-transform:uppercase;cursor:pointer}.secondary-button:hover{background:var(--ink);color:#fff}.lightbox{position:fixed;inset:0;z-index:100;background:rgba(11,18,23,.94);display:flex;align-items:center;justify-content:center;padding:48px}.lightbox[hidden]{display:none}.lightbox img{max-width:94vw;max-height:90vh;width:auto;height:auto;object-fit:contain;box-shadow:0 18px 60px rgba(0,0,0,.35)}.lightbox-close{position:fixed;top:18px;right:24px;border:0;background:transparent;color:#fff;font-size:2.6rem;line-height:1;cursor:pointer}.no-scroll{overflow:hidden}.share{background:var(--warm)}.share-inner{max-width:900px;margin:auto}.share form{background:var(--white);padding:42px;box-shadow:var(--shadow)}label{display:block;font-size:.85rem;font-weight:600;margin-bottom:20px}input,textarea{display:block;width:100%;margin-top:8px;border:1px solid var(--line);background:#fff;padding:13px 14px;font:inherit;color:var(--ink);border-radius:2px}textarea{resize:vertical}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.consent{display:flex;gap:10px;align-items:flex-start;font-weight:400;color:var(--muted)}.consent input{width:auto;margin:3px 0 0}.upload-note,.form-note{font-size:.78rem;color:var(--muted)}.share-lead{text-align:center;color:var(--muted);margin:0 auto 32px}.share h2{text-align:center}.quote-block{max-width:900px;margin:0 auto;text-align:center}.quote-block blockquote{font-size:clamp(1.8rem,3vw,2.5rem);line-height:1.3;margin:25px 0;color:var(--ink)}.quote-block cite{font-style:normal;color:var(--muted);font-size:.8rem}.about-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin-top:40px}.fact{background:var(--paper);padding:28px}.fact strong{display:block;font-family:"Cormorant Garamond",Georgia,serif;font-size:1.6rem;font-weight:500;margin-bottom:5px}.fact span{color:var(--muted);font-size:.9rem}.closing{text-align:center;padding:110px 7vw 125px;background:var(--white)}.closing h2{font-size:3rem;margin-bottom:22px}.closing p{max-width:720px;margin:0 auto 8px;color:var(--muted)}.closing .ride{font-family:"Cormorant Garamond",Georgia,serif;font-size:1.8rem;color:var(--ink);margin-top:30px}.closing .godspeed{font-family:"Cormorant Garamond",Georgia,serif;font-size:2.4rem;color:var(--gold);margin-top:0}.heart{color:var(--gold);font-size:1.1rem;margin:0 0 16px}footer{background:#182733;color:#d8dde0;padding:28px 7vw;display:flex;justify-content:space-between;gap:20px;font-size:.78rem}footer a{color:#fff}.backtop{position:fixed;right:22px;bottom:22px;width:42px;height:42px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;text-decoration:none;box-shadow:var(--shadow);z-index:15}@media(max-width:800px){.site-header nav a:not(.nav-button){display:none}.hero-image{height:65vh;min-height:420px}.hero-copy{bottom:7%}.section,.section-narrow{padding:72px 6vw}.memory-feature,.story{grid-template-columns:1fr;gap:0}.memory-copy{padding:38px}.story.reverse .story-image{order:0}.story-image img{height:400px}.gallery-grid{columns:2 180px}.form-grid{grid-template-columns:1fr}.about-facts{grid-template-columns:1fr}.closing{padding:80px 6vw 95px}}
@media(max-width:500px){.hero h1{font-size:3.1rem}.dates{letter-spacing:.14em}.gallery-grid{columns:1}.lightbox{padding:24px 12px}.share form{padding:26px}.memory-image{min-height:320px}}

/* Final photo-curation pass */
.closing-photo{position:relative;overflow:hidden;background:linear-gradient(rgba(20,27,24,.76),rgba(20,27,24,.82)),url("images/thomas-nancy-waterfront.jpg") center 38%/cover no-repeat;color:#fff;padding:7rem 1.5rem;}
.closing-photo h2,.closing-photo .ride,.closing-photo .godspeed,.closing-photo p{color:#fff;}
.closing-photo .heart{opacity:.9;}

/* Minimal V3: Celebration of Life */
.celebration{padding-top:72px;padding-bottom:72px;background:var(--paper)}
.celebration-card{max-width:820px;margin:0 auto;text-align:center;padding:48px 32px;border:1px solid var(--line);background:var(--white);box-shadow:var(--shadow)}
.celebration-card h2{margin-bottom:14px}
.celebration-card>p:not(.eyebrow){font-family:"Cormorant Garamond",Georgia,serif;font-size:1.35rem;margin:0 0 8px}
.celebration-card .celebration-note{font-family:Inter,system-ui,sans-serif!important;font-size:.9rem!important;color:var(--muted);margin-top:12px!important}
@media(max-width:800px){.celebration{padding:56px 6vw}.celebration-card{padding:38px 24px}}

/* V4 streamlined story */
.compact-section,
.compact-story,
.children-section,
.celebration.compact-heading { padding-top: 54px; padding-bottom: 54px; }

.compact-heading { max-width: 760px; margin-left: auto; margin-right: auto; text-align: center; }
.compact-heading h2 { margin-bottom: 10px; }
.compact-heading p { margin-bottom: 0; }

.story-grid,
.memories.compact-section {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 0.82fr);
  gap: 44px;
  align-items: center;
}
.story-grid.reverse .story-copy { order: 2; }
.story-grid.reverse .story-media { order: 1; }
.story-copy p, .section-copy p { max-width: 620px; }
.story-media img,
.memories.compact-section .section-media img {
  width: 100%;
  max-height: 430px;
  object-fit: cover;
  border-radius: 18px;
  display: block;
}
.story-media.portrait-small { max-width: 420px; justify-self: center; }
.story-media.portrait-small img { max-height: 460px; object-position: center 28%; }
.quote-mini { font-style: italic; opacity: .82; margin-top: 14px; }

.children-section .section-heading { margin-bottom: 24px; }
.family-carousel {
  display: flex;
  gap: 16px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding: 4px max(20px, calc((100vw - 1120px)/2)) 16px;
  scrollbar-width: thin;
}
.family-carousel figure {
  flex: 0 0 min(340px, 78vw);
  margin: 0;
  scroll-snap-align: start;
}
.family-carousel img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 16px;
  display: block;
}
.family-carousel figcaption {
  padding-top: 9px;
  font-size: .9rem;
  opacity: .78;
}

@media (max-width: 760px) {
  .compact-section, .compact-story, .children-section, .celebration.compact-heading {
    padding-top: 38px; padding-bottom: 38px;
  }
  .story-grid, .memories.compact-section {
    grid-template-columns: 1fr;
    gap: 22px;
  }
  .story-grid.reverse .story-copy,
  .story-grid.reverse .story-media { order: initial; }
  .story-media img, .memories.compact-section .section-media img { max-height: 360px; }
}

/* Story-balanced children section */
.children-stories{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;max-width:1120px;margin:26px auto 0}.child-story{margin:0}.child-story img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:16px;display:block}.child-story h3{margin:14px 0 6px;font-size:1.15rem}.child-story p{margin:0;line-height:1.55;font-size:.96rem}.children-section{padding-top:54px;padding-bottom:54px}@media(max-width:760px){.children-stories{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:16px;padding:0 20px 12px}.child-story{flex:0 0 82vw;scroll-snap-align:start}.children-section{padding-top:40px;padding-bottom:40px}}

/* V5 typography + CTA refinements */
h2 {
  font-size: clamp(1.7rem, 3.15vw, 2.75rem);
  line-height: 1.08;
  text-wrap: balance;
}
h3 {
  font-size: clamp(1.18rem, 2vw, 1.55rem);
  line-height: 1.15;
  text-wrap: balance;
}
.section-heading h2,
.story-copy h2,
.early-cta h2,
.celebration h2,
.share h2 {
  max-width: 100%;
}
.early-cta {
  padding-top: 48px;
  padding-bottom: 48px;
}
.early-cta > p {
  max-width: 760px;
  margin-left: auto;
  margin-right: auto;
}
.early-cta .cta-lead {
  margin-bottom: 8px;
}
@media (max-width: 760px) {
  h2 { font-size: clamp(1.55rem, 7vw, 2.15rem); }
  h3 { font-size: clamp(1.12rem, 5vw, 1.4rem); }
  .early-cta { padding-top: 38px; padding-bottom: 38px; }
}

.couple-carousel{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 2px 10px;scrollbar-width:thin}
.couple-carousel figure{flex:0 0 min(280px,75vw);margin:0;scroll-snap-align:start}
.couple-carousel img{width:100%;height:320px;object-fit:cover;border-radius:16px;display:block}
.gallery-grid{columns:4 240px;column-gap:14px}
.gallery-item{break-inside:avoid;margin:0 0 14px}
.gallery-item img{width:100%;height:auto!important;max-height:none!important;object-fit:contain!important;display:block;border-radius:14px}
@media(max-width:760px){.couple-carousel img{height:280px}.gallery-grid{columns:2 150px}}

/* V7 final opening */
.intro-story {
  max-width: 860px;
}
.intro-story > p {
  margin-bottom: 1.15rem;
}
.miller-time-wrap {
  margin-top: 2.6rem;
  padding-top: 2rem;
  border-top: 1px solid var(--line);
}
.miller-time-kicker {
  max-width: 760px;
  margin: 0 auto .8rem;
  font-size: 1.15rem;
  line-height: 1.55;
}
.miller-time {
  margin: 0;
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: clamp(2.9rem, 6vw, 5.4rem);
  line-height: .95;
  font-weight: 600;
  letter-spacing: -.02em;
  text-wrap: balance;
}

/* V8 Tom & Nancy story */
.tom-nancy-section {
  padding-top: 58px;
  padding-bottom: 58px;
}
.tom-nancy-heading {
  max-width: 820px;
  margin: 0 auto 30px;
  text-align: center;
}
.tom-nancy-heading h2 {
  margin-bottom: 16px;
}
.tom-nancy-heading p {
  max-width: 760px;
  margin-left: auto;
  margin-right: auto;
}
.tom-nancy-heading .nancy-opener {
  font-size: 1.08rem;
}
.tom-nancy-heading .nancy-closing {
  margin-top: 20px;
  font-size: 1.06rem;
}
.nancy-feature {
  max-width: 780px;
  margin: 0 auto 34px;
}
.nancy-feature img {
  width: 100%;
  height: auto;
  max-height: 610px;
  object-fit: contain;
  display: block;
  border-radius: 18px;
}
.through-years {
  max-width: 1120px;
  margin: 0 auto;
}
.through-years-title {
  text-align: center;
  text-transform: uppercase;
  letter-spacing: .16em;
  font-size: .82rem;
  margin-bottom: 16px;
  opacity: .78;
}
.tom-nancy-section .couple-carousel {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding: 2px 2px 12px;
}
.tom-nancy-section .couple-carousel figure {
  flex: 0 0 min(250px, 72vw);
  margin: 0;
  scroll-snap-align: start;
}
.tom-nancy-section .couple-carousel img {
  width: 100%;
  height: 285px;
  object-fit: cover;
  object-position: center;
  border-radius: 15px;
  display: block;
}
@media (max-width: 760px) {
  .tom-nancy-section {
    padding-top: 40px;
    padding-bottom: 40px;
  }
  .tom-nancy-heading {
    text-align: left;
    margin-bottom: 24px;
  }
  .tom-nancy-heading p {
    margin-left: 0;
    margin-right: 0;
  }
  .nancy-feature {
    margin-bottom: 26px;
  }
  .tom-nancy-section .couple-carousel img {
    height: 255px;
  }
}

/* V8.2 Tyler image: preserve full heads/upper bodies */
.child-story img.tyler-photo { object-fit: contain; object-position: center top; background: #f2efe9; }

/* V8.3 Tyler image refinement */
.tyler-photo {
  width: 100% !important;
  height: 100% !important;
  min-height: 320px;
  object-fit: cover !important;
  object-position: 50% 18% !important;
  display: block;
}
@media (max-width: 760px) {
  .tyler-photo {
    min-height: 260px;
    object-position: 50% 12% !important;
  }
}

/* V8.4b — Chris retains original image + a true second photo */
.chris-second-photo {
  margin-top: 6px;
}
/* When Chris's card media has a fixed/limited height, split it evenly between
   the two photos while retaining the same total visual footprint. */
@media (min-width: 1px) {
  .chris-second-photo {
    object-fit: cover;
    object-position: center;
  }
}

/* V8.5 — balanced sibling cards */
.children-stories {
  align-items: stretch;
}
.child-story {
  display: flex;
  flex-direction: column;
  height: 100%;
}
.child-media {
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: 16px;
  background: #f2efe9;
}
.child-media > img {
  width: 100% !important;
  height: 100% !important;
  aspect-ratio: auto !important;
  object-fit: cover !important;
  display: block;
  border-radius: 0 !important;
}
.child-media .tyler-photo {
  min-height: 0 !important;
  object-position: 50% 18% !important;
}
.chris-media {
  display: grid;
  grid-template-rows: 1fr 1fr;
  gap: 5px;
}
.chris-media > img {
  min-height: 0 !important;
  object-position: center 35% !important;
}
.child-copy {
  flex: 1;
}
@media (max-width: 760px) {
  .child-media {
    aspect-ratio: 4 / 3;
  }
  .child-media .tyler-photo {
    min-height: 0 !important;
    object-position: 50% 12% !important;
  }
}

/* V8.6 — Chris restored to one original photo; all sibling media frames match */
.children-stories .child-media {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
}
.children-stories .child-media > img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}

/* Live memories */
.hp-field{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.optional{font-weight:400;opacity:.62;text-transform:none;letter-spacing:0}
.memories-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.memory-card{background:var(--white);border:1px solid var(--line);padding:24px;border-radius:16px;break-inside:avoid}
.memory-meta{font-size:.92rem;margin-bottom:12px}
.memory-meta span{color:var(--muted)}
.memory-story{font-family:"Cormorant Garamond",Georgia,serif;font-size:1.28rem;line-height:1.5;white-space:pre-wrap}
.memory-date{margin-top:14px;font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.memory-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:16px}
.memory-photos img{width:100%;height:220px;object-fit:cover;border-radius:10px}
.memories-loading,.memories-empty{color:var(--muted)}
button:disabled{opacity:.6;cursor:wait}
@media(max-width:760px){
  .memories-list{grid-template-columns:1fr}
  .memory-photos img{height:180px}
}
