:root {
  color-scheme: light;
  --paper: #f5f0e7;
  --paper-deep: #ebe2d3;
  --ink: #454740;
  --muted: #77786e;
  --red: #77816f;
  --red-soft: #929685;
  --blue: #a9bfce;
  --blue-deep: #8099a9;
  --sage: #8c997f;
  --line: rgba(74, 77, 67, .2);
  --serif: "Cormorant Garamond", Georgia, serif;
  --script: "Italianno", "Brush Script MT", cursive;
  --sans: "Manrope", "Trebuchet MS", sans-serif;
  --nav-height: 58px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--nav-height) + 18px); }
html.invitation-locked, html.invitation-locked body { height: 100%; overflow: hidden; overscroll-behavior: none; }
html.invitation-locked body { touch-action: none; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--serif); font-size: 18px; }
button, a { -webkit-tap-highlight-color: transparent; }
button { font: inherit; }
a { color: inherit; }
img { display: block; max-width: 100%; }
::selection { color: #fff; background: var(--red); }
.motion-ready [data-reveal] { opacity: 0; transform: translate3d(0,22px,0); transition: opacity .8s cubic-bezier(.22,.61,.36,1) var(--reveal-delay,0ms), transform .8s cubic-bezier(.22,.61,.36,1) var(--reveal-delay,0ms); }
.motion-ready [data-reveal].is-visible { opacity: 1; transform: translate3d(0,0,0); }
.motion-ready .hero-monogram[data-reveal] { transform: translate(-50%,calc(-50% + 22px)); }
.motion-ready .hero-monogram[data-reveal].is-visible { transform: translate(-50%,-50%); }
.motion-parallax { will-change: transform; transform: translate3d(0,var(--parallax-offset,0px),0) scale(1.045); }
.timeline-track, .timeline-progress { position: absolute; z-index: 0; top: 10px; bottom: 10px; left: 50%; width: 1px; transform: translateX(-50%); pointer-events: none; }
.timeline-track { background: #e8e2d9; }
.timeline-progress { top: 10px; bottom: auto; height: var(--timeline-fill-height,0px); background: #b7ad98; transform: translateX(-50%); }
.timeline-node { transition: background-color .45s ease, box-shadow .45s ease, transform .45s ease; }
.timeline-node.is-lit { background: #ad9672; box-shadow: 0 0 0 4px rgba(173,150,114,.18); transform: scale(1.18); }
.skip-link { position: fixed; z-index: 20; top: 10px; left: 10px; padding: 10px 14px; color: white; background: #677260; transform: translateY(-160%); }
.skip-link:focus { transform: translateY(0); }
.eyebrow { margin: 0 0 12px; color: var(--red-soft); font: 600 10px/1.5 var(--sans); text-transform: uppercase; }
.script-heading { margin: 0; color: var(--red); font: 400 clamp(46px, 6vw, 78px)/.9 var(--script); }
.script-subheading { margin: 14px 0 8px; color: var(--red); font: 400 39px/.95 var(--script); }
.paper-section { position: relative; background-color: var(--paper); background-image: radial-gradient(ellipse at 12% 18%, rgba(147,111,73,.055) 0 1px, transparent 2px), radial-gradient(ellipse at 82% 72%, rgba(117,83,58,.045) 0 1px, transparent 2px), linear-gradient(110deg, rgba(255,255,255,.2), transparent 44%, rgba(141,109,75,.035)); background-size: 7px 9px, 11px 13px, auto; }
.section-dark, .section-blue, .section-paper { color: var(--ink); background: var(--paper); }
.cover-page { min-height: 100svh; overflow: hidden; background: #f2efea; }
.hero-photo { position: relative; height: min(760px,86svh); min-height: 580px; overflow: hidden; color: #fffdf6; background: #788273; }
.hero-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 48%; }
.hero-shade { position: absolute; inset: 0; background: linear-gradient(180deg,rgba(37,43,38,.06) 10%,rgba(37,43,38,.15) 47%,rgba(37,43,38,.48) 100%); }
.hero-monogram { position: absolute; top: 48%; left: 50%; z-index: 1; margin: 0; color: rgba(255,253,246,.94); font: 400 112px/.85 var(--serif); text-shadow: 0 2px 24px rgba(37,42,35,.18); white-space: nowrap; transform: translate(-50%,-50%); }
.hero-monogram i { font-size: .64em; }
.hero-copy { position: absolute; inset: auto 20px 58px; display: flex; flex-direction: column; align-items: center; text-align: center; }
.hero-copy .eyebrow { margin-bottom: 12px; color: rgba(255,253,246,.86); }
.hero-copy h1 { margin: 0; color: #fffdf6; font: 400 82px/.9 var(--serif); }
.hero-copy h1 i { font-style: italic; font-size: .72em; }
.hero-date { margin: 18px 0 0; color: #fffdf6; font: 500 15px/1.4 var(--sans); }
.hero-divider { width: 34px; height: 1px; margin: 15px 0 12px; background: rgba(255,253,246,.76); }
.hero-place { margin: 0; color: #fffdf6; font: 400 18px/1.25 var(--serif); }
.beginning { display: grid; min-height: 660px; grid-template-columns: 1fr 1fr; align-items: stretch; }
.beginning-photo { min-height: 590px; overflow: hidden; background: #d7d4ca; }
.beginning-photo img { width: 100%; height: 100%; object-fit: cover; }
.beginning-copy { display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 70px clamp(42px,8vw,120px); text-align: center; }
.beginning-copy .eyebrow { color: #828b78; }
.beginning-copy .script-heading { max-width: 470px; color: #697462; font-size: 64px; line-height: .96; }
.beginning-copy p:not(.eyebrow) { max-width: 440px; margin: 20px 0 0; color: #6f7067; font-size: 19px; line-height: 1.48; text-align: center; }
.countdown { display: flex; min-height: 380px; flex-direction: column; align-items: center; justify-content: center; padding: 65px 24px; text-align: center; }
.countdown .eyebrow { color: #858b7d; }
.countdown .script-heading { color: #6f7868; font-size: 57px; }
.countdown-clock { display: flex; align-items: flex-start; gap: 18px; margin: 32px 0 24px; color: #62685d; font-family: var(--sans); }
.countdown-clock > div { display: flex; min-width: 62px; flex-direction: column; align-items: center; gap: 7px; }
.countdown-number { font: 400 40px/1 var(--serif); font-variant-numeric: tabular-nums; }
.countdown-label { color: #88887d; font: 500 8px/1 var(--sans); text-transform: uppercase; }
.countdown-separator { padding-top: 5px; color: #b0aa9c; font: 400 28px/1 var(--serif); }
.countdown-date { color: #77786e; font: 500 12px/1.5 var(--sans); }
.love-gallery { position: relative; width: 100%; height: min(760px,72vw); min-height: 590px; overflow: hidden; background: var(--paper); background-image: radial-gradient(ellipse at 12% 18%,rgba(147,111,73,.055) 0 1px,transparent 2px),radial-gradient(ellipse at 82% 72%,rgba(117,83,58,.045) 0 1px,transparent 2px); background-size: 7px 9px,11px 13px; }
.love-photo { position: absolute; margin: 0; overflow: hidden; background: #d7d4ca; }
.love-photo img { width: 100%; height: 100%; object-fit: cover; }
.love-photo--back { top: 5%; left: 16%; width: min(48%,590px); height: 77%; }
.love-photo--front { top: 15%; left: 42%; z-index: 1; width: min(39%,470px); height: 80%; box-shadow: 0 12px 30px rgba(49,50,45,.18); }
.love-gallery-note { position: absolute; bottom: 7%; left: 20%; z-index: 2; margin: 0; color: #77786e; font: 400 58px/.9 var(--script); }
.reception { display: grid; min-height: 580px; grid-template-columns: 1.08fr .92fr; align-items: stretch; }
.reception-image { min-height: 520px; overflow: hidden; background: #d9d4c8; }
.reception-image img { width: 100%; height: 100%; object-fit: cover; }
.reception-copy { display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 64px clamp(38px,7vw,100px); text-align: center; }
.reception-copy .eyebrow { color: #858b7d; }
.reception-copy .script-heading { color: #697462; font-size: 64px; }
.reception-copy p:not(.eyebrow) { max-width: 440px; margin: 20px 0 0; color: #6f7067; font-size: 18px; line-height: 1.48; }
.reception-time { font: 500 10px/1.6 var(--sans) !important; text-transform: uppercase; }
.dress-photo { min-height: 450px; overflow: hidden; background: #e2dfd5; }
.dress-photo img { width: 100%; height: 100%; object-fit: cover; }
.dress-copy .eyebrow { color: #858b7d; }
.dress-copy .script-heading { color: #697462; font-size: 60px; }
.dress-copy h3 { margin: 12px 0 15px; color: #575b51; font: 500 22px/1.1 var(--serif); }
.closing-photo { position: relative; height: min(720px,82svh); min-height: 500px; overflow: hidden; background: #647462; }
.closing-photo > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 48%; }
.closing-shade { position: absolute; inset: 0; background: rgba(35,42,36,.24); }
.closing-monogram { position: absolute; top: 50%; left: 50%; margin: 0; color: #fffdf6; font: 400 118px/.9 var(--script); text-shadow: 0 2px 22px rgba(37,42,35,.18); white-space: nowrap; transform: translate(-50%,-50%); }
.closing-monogram i { font-size: .65em; }
.cover { position: relative; display: grid; width: 100%; height: 100svh; min-height: 0; grid-template-rows: auto auto auto auto auto; align-content: start; justify-items: center; overflow: hidden; padding: clamp(50px,9vh,70px) 24px 36px; color: var(--ink); background: #f2efea; }
.cover-invitation { align-self: end; margin: 0; color: #675f58; font: 500 9px/1.4 var(--sans); text-transform: uppercase; }
.cover-from { margin: 22px 0 10px; color: #485968; font: 400 20px/.9 var(--script); }
.cover-names { display: flex; flex-direction: column; margin: 0; color: #343331; font: 400 clamp(38px,7.5vw,56px)/.88 var(--serif); text-align: center; text-transform: uppercase; }
.cover-names span:last-child { margin-top: 2px; }
.monogram, .nav-brand { font: 500 17px/1 var(--serif); }
.monogram i, .nav-brand i, .footer-names i { font: italic 400 13px var(--serif); }
.envelope { position: relative; z-index: 1; width: clamp(250px,56vw,350px); aspect-ratio: 1.48; align-self: center; margin: 38px 0 18px; padding: 0; border: 0; background: transparent; cursor: pointer; perspective: 1000px; }
.envelope:focus-visible { outline: 2px solid #9aafbd; outline-offset: 9px; }
.envelope-shadow { position: absolute; inset: 15% 2% -11%; border-radius: 6px; background: rgba(56,65,68,.22); filter: blur(23px); transition: transform .6s ease, opacity .6s ease; }
.envelope-letter { position: absolute; z-index: 1; display: flex; width: 82%; height: 86%; top: -5%; left: 9%; flex-direction: column; align-items: center; justify-content: flex-start; gap: 7px; padding-top: 13px; color: var(--red); background: linear-gradient(145deg,#fffdf7,#eee8dc); box-shadow: 0 2px 10px rgba(44,44,44,.16); transform: translateY(13%); transition: transform .75s cubic-bezier(.2,.8,.2,1); }
.letter-kicker, .letter-date { color: #796d60; font: 500 8px/1.3 var(--sans); text-transform: uppercase; }
.letter-names { font: 400 clamp(39px,5.2vw,61px)/.83 var(--script); white-space: nowrap; }
.letter-names i { font-size: .55em; }
.envelope-back { position: absolute; z-index: 2; inset: 0; overflow: hidden; border: 1px solid #8099a9; border-radius: 3px; background-color: #a9bfce; background-image: repeating-linear-gradient(35deg,rgba(255,255,255,.11) 0 1px,transparent 1px 5px),repeating-linear-gradient(125deg,rgba(61,89,108,.07) 0 1px,transparent 1px 6px),linear-gradient(145deg,#ced9df,#a6bdcc 54%,#8ca8ba); box-shadow: 0 23px 42px rgba(53,61,65,.2),inset 0 0 0 3px rgba(242,246,245,.22),inset 0 0 24px rgba(50,77,95,.12); }
.envelope-back::before { position: absolute; inset: 7px; border: 1px solid rgba(249,249,241,.27); content: ""; }
.envelope-fold { position: absolute; z-index: 3; inset: 0; pointer-events: none; }
.envelope-fold-left { clip-path: polygon(0 0,51% 52%,0 100%); background: linear-gradient(110deg,rgba(105,135,154,.4),rgba(213,225,231,.48)); }
.envelope-fold-right { clip-path: polygon(100% 0,49% 52%,100% 100%); background: linear-gradient(250deg,rgba(103,132,151,.37),rgba(221,230,232,.44)); }
.envelope-fold-bottom { clip-path: polygon(0 100%,50% 48%,100% 100%); background: linear-gradient(0deg,#91aabd,#c3d1d8); }
.envelope-front { position: absolute; z-index: 4; inset: 0; overflow: hidden; clip-path: polygon(0 0,50% 55%,100% 0,100% 100%,0 100%); background: linear-gradient(145deg,rgba(206,219,225,.92),rgba(155,180,195,.94) 56%,rgba(128,157,175,.96)); }
.envelope-front::before { position: absolute; inset: 0; background: repeating-linear-gradient(38deg,rgba(255,255,255,.09) 0 1px,transparent 1px 5px); clip-path: polygon(0 100%,50% 48%,100% 100%); content: ""; }
.envelope-front::after { position: absolute; inset: 7px; border: 1px solid rgba(245,248,243,.33); clip-path: polygon(0 0,50% 55%,100% 0,100% 100%,0 100%); content: ""; }
.envelope-flap { position: absolute; z-index: 5; inset: 0 0 auto; height: 62%; clip-path: polygon(0 0,100% 0,50% 100%); background: repeating-linear-gradient(35deg,rgba(255,255,255,.12) 0 1px,transparent 1px 5px),linear-gradient(155deg,#d8e2e6,#b5c8d2 55%,#9fb8c7); filter: drop-shadow(0 7px 6px rgba(46,66,79,.32)); transform-origin: 50% 0; transition: transform .68s cubic-bezier(.4,0,.2,1),z-index 0s .25s; backface-visibility: hidden; }
.envelope-flap::after { position: absolute; inset: 7px 7px 3px; border: 1px solid rgba(247,248,240,.3); clip-path: polygon(0 0,100% 0,50% 100%); content: ""; }
.wax-seal { position: absolute; z-index: 6; top: 55%; left: 50%; display: grid; width: 47px; aspect-ratio: 1; place-items: center; border: 1px solid #806436; border-radius: 50%; color: #70552d; background: radial-gradient(circle,#ead7a4 0 34%,#b89556 37% 43%,#dfc787 48% 65%,#92713e 70% 76%,#c7ab70 80%); box-shadow: 0 3px 7px rgba(42,45,44,.34),inset 0 0 0 2px rgba(255,245,206,.38); transform: translate(-50%,-50%); transition: opacity .25s ease,transform .3s ease; }
.wax-seal::before { position: absolute; inset: 7px; border: 1px solid rgba(111,82,42,.48); border-radius: 50%; box-shadow: inset 0 0 0 2px rgba(255,245,206,.18); content: ""; }
.seal-mark { display: grid; width: 31px; aspect-ratio: 1; place-content: center; border: 1px solid rgba(105,77,37,.58); border-radius: 50%; font: 600 10px/1 var(--serif); }
.seal-mark span { font-size: 7px; }
.envelope:hover .envelope-shadow { transform: translateY(6px) scale(.97); opacity: .8; }
.envelope:hover .wax-seal { transform: translate(-50%,-50%) scale(1.07); }
.envelope.is-opening .envelope-flap { z-index: 1; transform: rotateX(180deg); }
.envelope.is-opening .envelope-letter { transform: translateY(-43%) scale(1.015); }
.envelope.is-opening .envelope-front, .envelope.is-opening .envelope-fold { opacity: 0; transition: opacity .3s ease .18s; }
.envelope.is-opening .wax-seal { opacity: 0; transform: translate(-50%,-50%) scale(.48) rotate(-28deg); }
.cover-page .cover-invitation, .cover-page .cover-from, .cover-page .cover-names, .cover-page .open-hint { transition: opacity .4s ease,transform .4s ease; }
body.is-transitioning .cover-invitation, body.is-transitioning .cover-from, body.is-transitioning .cover-names, body.is-transitioning .open-hint { opacity: 0; transform: translateY(-8px); }
body.is-transitioning .envelope { animation: envelope-depart .92s cubic-bezier(.22,.61,.36,1) .34s forwards; }
@keyframes envelope-depart { 0% { opacity: 1; transform: translateY(0) scale(1); } 52% { opacity: 1; transform: translateY(-17vh) scale(1.07); } 100% { opacity: 0; transform: translateY(-45vh) scale(1.13); } }
.open-hint { align-self: start; margin: 26px 0 0; color: #71685f; font: 500 9px/1.4 var(--sans); text-transform: uppercase; }
.section-nav { position: fixed; z-index: 20; top: 0; right: 0; left: 0; height: var(--nav-height); border-bottom: 1px solid rgba(74,77,67,.16); background: rgba(246,245,239,.96); backdrop-filter: blur(14px); transition: background-color .25s ease,border-color .25s ease; }
.section-nav.is-over-hero { border-bottom-color: transparent; background: transparent; backdrop-filter: none; }
.nav-inner { display: flex; max-width: 1200px; height: 100%; align-items: center; justify-content: space-between; gap: 22px; margin: auto; padding: 0 28px; }
.nav-brand { flex: 0 0 auto; color: var(--red); text-decoration: none; }
.nav-links { display: flex; height: 100%; align-items: center; gap: clamp(12px,2vw,27px); overflow-x: auto; scrollbar-width: none; }
.nav-links { scroll-behavior: smooth; overscroll-behavior-x: contain; }
.nav-links::-webkit-scrollbar { display: none; }
.nav-links a { position: relative; display: flex; height: 100%; align-items: center; flex: 0 0 auto; color: #686b62; font: 600 9px/1 var(--sans); text-decoration: none; text-transform: uppercase; transition: color .2s ease; }
.nav-links a::after { position: absolute; right: 0; bottom: 0; left: 0; height: 2px; background: var(--sage); content: ""; transform: scaleX(0); transform-origin: left; transition: transform .2s ease; }
.nav-links a:hover, .nav-links a[aria-current="location"] { color: var(--red); }
.nav-links a[aria-current="location"]::after { transform: scaleX(1); }
.section-nav.is-over-hero .nav-brand, .section-nav.is-over-hero .nav-links a { color: #fffdf6; text-shadow: 0 1px 5px rgba(30,37,32,.42); }
.section-nav.is-over-hero .nav-links a::after { background: #fffdf6; }
.about { padding: clamp(70px,9vw,112px) 24px clamp(54px,7vw,86px); }
.section-heading { margin-bottom: clamp(34px,5vw,60px); text-align: center; }
.section-heading .eyebrow { margin-bottom: 6px; }
.heading-rule { display: block; width: 46px; height: 1px; margin: 20px auto 0; background: var(--red-soft); }
.about-grid { display: grid; width: min(100%,1030px); grid-template-columns: repeat(3,1fr); gap: clamp(26px,6vw,84px); margin: 0 auto; }
.about-item { display: flex; flex-direction: column; align-items: center; text-align: center; }
.flower-frame { position: relative; width: clamp(62px,7vw,82px); aspect-ratio: 1; overflow: hidden; border: 4px solid rgba(255,255,255,.64); border-radius: 50%; background: #dfd6c6; box-shadow: 0 3px 12px rgba(78,56,42,.15); }
.flower-frame::after { position: absolute; inset: 2px; border: 1px solid rgba(255,255,255,.58); border-radius: 50%; content: ""; }
.flower-frame img { width: 100%; height: 100%; object-fit: cover; }
.flower-two img { object-position: 55% 52%; }
.flower-three img { object-position: 45% 45%; }
.about-item p { max-width: 260px; margin: 2px 0 0; color: #6f7067; font-size: 15px; line-height: 1.4; }
.section-signoff { margin: 48px 0 0; color: #866c60; font: 400 32px/.9 var(--script); text-align: center; }
.details { display: grid; min-height: 650px; grid-template-columns: 1.05fr .95fr; }
.details-photo { min-height: 540px; overflow: hidden; background: #d7d4ca; }
.details-photo img { width: 100%; height: 100%; object-fit: cover; }
.details-copy { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; padding: clamp(50px,8vw,115px); background: var(--paper); }
.details-copy .eyebrow { color: var(--red-soft); }
.details-copy .script-heading { color: var(--red); font-size: clamp(54px,6.5vw,82px); }
.details-date { margin: 30px 0 0; color: #746961; font: 400 14px/1.6 var(--sans); }
.details-date strong { color: var(--ink); font: 500 22px/1.3 var(--serif); }
.thin-rule { width: 48px; height: 1px; margin: 24px 0; background: var(--line); }
.venue-name { margin: 0; color: var(--ink); font: 500 30px/1.1 var(--serif); }
.venue-address { margin: 10px 0 16px; color: #746961; font: 400 12px/1.7 var(--sans); }
.text-link { padding-bottom: 5px; border-bottom: 1px solid rgba(119,129,111,.5); color: var(--red); font: 600 10px/1.4 var(--sans); text-decoration: none; text-transform: uppercase; }
.text-link span { margin-left: 8px; }
.details-footnote { margin: 32px 0 0; color: #83786b; font: italic 13px/1.5 var(--serif); }
.story { display: grid; min-height: 680px; grid-template-columns: 1fr 1fr; align-items: stretch; padding: 70px 0; background-color: var(--paper); background-image: radial-gradient(ellipse at 12% 18%,rgba(147,111,73,.055) 0 1px,transparent 2px),radial-gradient(ellipse at 82% 72%,rgba(117,83,58,.045) 0 1px,transparent 2px); background-size: 7px 9px,11px 13px; }
.story-photo { min-height: 540px; overflow: hidden; background: #d7d4ca; }
.story-photo img { width: 100%; height: 100%; object-fit: cover; }
.story-copy-column { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 40px clamp(35px,7vw,100px); text-align: center; }
.story-mark { display: grid; width: 48px; aspect-ratio: 1; place-items: center; margin-bottom: 25px; border: 1px solid rgba(119,129,111,.5); border-radius: 50%; color: var(--red); font: 500 12px var(--serif); }
.story-mark i { font-size: 8px; }
.story .eyebrow { margin-bottom: 5px; }
.story-copy { max-width: 610px; margin-top: 20px; color: #66695f; font-size: 20px; line-height: 1.5; text-align: center; }
.story-copy p { margin: 0 0 15px; }
.story-signoff { margin: 10px 0 0; color: var(--red-soft); font: 400 34px/.9 var(--script); }
.schedule { display: flex; min-height: 100svh; flex-direction: column; justify-content: center; padding: 46px 24px 24px; color: var(--ink); background: #fff; }
.schedule-heading { margin: 0 auto 9px; text-align: center; }
.schedule-heading .eyebrow { margin-bottom: 5px; color: #8d8171; }
.schedule-heading .script-heading { color: var(--red); font-size: clamp(42px,5vw,58px); }
.schedule-timeline { position: relative; display: grid; width: min(100%,620px); min-height: 620px; grid-template-columns: minmax(0,1fr) 22px minmax(0,1fr); grid-template-rows: repeat(6,minmax(96px,1fr)); flex: 1; margin: auto; }
.schedule-timeline::before { content: none; }
.timeline-event { position: relative; display: grid; grid-column: 1 / -1; grid-template-columns: minmax(0,1fr) 22px minmax(0,1fr); min-width: 0; }
.timeline-side { display: grid; min-width: 0; align-items: start; gap: 9px; }
.timeline-event--left .timeline-side { grid-column: 1; grid-template-columns: 42px minmax(0,1fr); padding-right: 11px; text-align: right; }
.timeline-event--right .timeline-side { grid-column: 3; grid-template-columns: minmax(0,1fr) 42px; padding-left: 11px; text-align: left; }
.timeline-side img { width: 38px; height: 38px; margin-top: 13px; opacity: .38; filter: grayscale(1) sepia(.45) saturate(.55); }
.timeline-event--left .timeline-side img { grid-column: 1; grid-row: 1; }
.timeline-event--right .timeline-side img { grid-column: 2; grid-row: 1; }
.timeline-copy { min-width: 0; }
.timeline-event--left .timeline-copy { grid-column: 2; grid-row: 1; }
.timeline-event--right .timeline-copy { grid-column: 1; grid-row: 1; }
.timeline-copy time { display: block; margin: 0 0 3px; color: #8c8377; font: 500 9px/1.2 var(--sans); }
.timeline-copy h3 { margin: 0 0 4px; color: #585147; font: 400 20px/1 var(--serif); text-transform: uppercase; }
.timeline-copy p { max-width: 220px; margin: 0; color: #8a8379; font: 400 11px/1.28 var(--sans); }
.timeline-event--left .timeline-copy p { margin-left: auto; }
.timeline-node { z-index: 1; grid-column: 2; grid-row: 1; justify-self: center; width: 7px; height: 7px; margin-top: 9px; border-radius: 50%; background: #d7c8b0; box-shadow: 0 0 0 2px #fff; }
.schedule-note { margin: 14px auto 0; color: #8a8379; font-size: 12px; font-style: italic; text-align: center; }
.dress { padding: clamp(70px,10vw,125px) 28px; }
.dress-layout { display: grid; width: min(100%,930px); grid-template-columns: .9fr 1.1fr; align-items: center; gap: clamp(30px,8vw,100px); margin: auto; }
.dress-layout .script-heading { max-width: 360px; }
.dress-copy { color: #685e55; font-size: 18px; line-height: 1.45; text-align: center; }
.dress-copy p { margin: 0 0 14px; }
.colour-notes { display: flex; justify-content: center; gap: 9px; margin-top: 22px; }
.colour-notes span { width: 28px; aspect-ratio: 1; border: 1px solid rgba(64,55,47,.2); border-radius: 50%; background: var(--swatch); }
.gifts { display: flex; min-height: 370px; flex-direction: column; align-items: center; justify-content: center; padding: 65px 24px; text-align: center; background-image: radial-gradient(ellipse at 50% 100%,rgba(212,190,145,.2),transparent 48%); }
.gifts .eyebrow { color: var(--red-soft); }
.gifts .script-heading { max-width: 740px; color: var(--red); }
.gifts > p:not(.eyebrow) { max-width: 530px; margin: 20px 0 0; color: #746961; font-size: 17px; line-height: 1.45; }
.gift-mark { margin-top: 25px; color: var(--red-soft); font: 400 32px/.9 var(--script); }
.travel { padding: clamp(70px,9vw,108px) 26px 62px; }
.travel-header { max-width: 650px; margin: 0 auto 44px; text-align: center; }
.travel-header > p:last-child { margin: 15px 0 0; color: #746961; font-size: 16px; }
.stay-grid { display: grid; width: min(100%,1050px); grid-template-columns: repeat(2,1fr); margin: auto; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.stay-item { padding: 0 0 26px; border-right: 1px solid var(--line); }
.stay-item:first-child { border-left: 1px solid var(--line); }
.stay-photo { height: 245px; overflow: hidden; background: #e2dfd5; }
.stay-photo img { width: 100%; height: 100%; object-fit: cover; }
.stay-copy { padding: 22px clamp(16px,3vw,38px) 0; text-align: center; }
.stay-number { color: var(--red-soft); font: 400 30px/.9 var(--script); }
.stay-item h3 { margin: 15px 0 8px; color: #493f38; font: 500 24px/1 var(--serif); }
.stay-item p { min-height: 60px; margin: 0; color: #71665e; font-size: 15px; line-height: 1.4; }
.stay-distance { display: block; margin-top: 17px; color: #7f6d5f; font: 600 9px/1.4 var(--sans); text-transform: uppercase; }
.travel-note { margin: 22px auto 0; color: #877c70; font-size: 13px; font-style: italic; text-align: center; }
.directions { padding: clamp(70px,9vw,110px) 28px 54px; background-image: linear-gradient(115deg,rgba(255,255,255,.025),transparent 45%,rgba(255,255,255,.04)); }
.directions-heading { margin: 0 auto 40px; text-align: center; }
.directions-heading .eyebrow { color: var(--red-soft); }
.directions-heading .script-heading { color: var(--red); }
.directions-grid { display: grid; width: min(100%,1000px); grid-template-columns: repeat(2,1fr); margin: auto; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.directions-grid article { padding: 26px clamp(14px,3vw,34px); border-right: 1px solid var(--line); text-align: center; }
.directions-grid article:first-child { border-left: 1px solid var(--line); }
.direction-icon { color: var(--red-soft); font: 400 29px/.9 var(--script); }
.directions-grid h3 { margin: 13px 0 8px; color: #4a403a; font: 500 23px/1 var(--serif); }
.directions-grid p { margin: 0; color: #746961; font-size: 14px; line-height: 1.42; }
.directions-note { margin: 22px auto 0; color: #877c70; font-size: 14px; font-style: italic; text-align: center; }
.faq { padding: clamp(70px,8vw,100px) 24px 95px; text-align: center; }
.faq-list { width: min(100%,720px); margin: 34px auto 0; border-top: 1px solid var(--line); text-align: center; }
.faq-list details { border-bottom: 1px solid var(--line); }
.faq-list summary { position: relative; padding: 18px 34px 18px 2px; color: #4a403a; font: 500 20px/1.2 var(--serif); cursor: pointer; list-style: none; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::after { position: absolute; top: 50%; right: 6px; color: var(--red); font: 400 22px/1 var(--serif); content: "+"; transform: translateY(-50%); }
.faq-list details[open] summary::after { content: "−"; }
.faq-list details p { max-width: 620px; margin: -4px auto 20px; color: #70665e; font-size: 16px; line-height: 1.4; text-align: center; }
.footer { display: flex; min-height: 300px; flex-direction: column; align-items: center; justify-content: center; padding: 54px 24px 48px; text-align: center; background-image: linear-gradient(130deg,rgba(255,255,255,.04),transparent 55%); }
.footer-kicker { margin: 0; color: #746961; font: italic 400 15px/1.4 var(--serif); }
.footer-names { margin: 12px 0 0; color: var(--red); font: 400 69px/.75 var(--script); }
.footer-date { margin: 16px 0 0; color: #877c70; font: 500 9px/1.4 var(--sans); }
.back-to-top { margin-top: 25px; color: var(--red); font: 500 9px/1.4 var(--sans); text-decoration: none; text-transform: uppercase; }
.back-to-top:hover { color: var(--red-soft); }
@media (min-width: 1400px) { .cover { min-height: min(920px,100svh); } }
@media (max-width: 760px) {
  :root { --nav-height: 52px; }
  body { font-size: 17px; }
  .hero-photo { height: max(540px,82svh); min-height: 0; }
  .hero-copy { inset: auto 16px 38px; }
  .hero-copy h1 { font-size: 56px; }
  .hero-date { font-size: 12px; }
  .beginning { min-height: 0; grid-template-columns: 1fr; }
  .beginning-photo { height: 58svh; min-height: 380px; max-height: 540px; }
  .beginning-copy { padding: 48px 28px 60px; }
  .beginning-copy .script-heading { font-size: 51px; }
  .beginning-copy p:not(.eyebrow) { font-size: 17px; }
  .countdown { min-height: 320px; padding: 54px 18px; }
  .countdown .script-heading { max-width: 430px; font-size: 45px; }
  .countdown-clock { gap: 9px; margin: 25px 0 20px; }
  .countdown-clock > div { min-width: 48px; }
  .countdown-number { font-size: 31px; }
  .love-gallery { height: clamp(590px,160vw,760px); min-height: 0; }
  .love-photo--back { top: 5%; left: 4%; width: 72%; height: 68%; }
  .love-photo--front { top: 18%; left: 32%; width: 63%; height: 68%; }
  .love-gallery-note { bottom: 3%; left: 9%; font-size: 50px; }
  .reception { min-height: 0; grid-template-columns: 1fr; }
  .reception-image { height: 54svh; min-height: 350px; max-height: 510px; }
  .reception-copy { padding: 45px 28px 58px; }
  .reception-copy .script-heading { font-size: 52px; }
  .reception-copy p:not(.eyebrow) { font-size: 17px; }
  .dress-photo { height: 54svh; min-height: 350px; max-height: 500px; }
  .dress-copy .script-heading { font-size: 49px; }
  .closing-photo { height: 72svh; min-height: 430px; }
  .closing-monogram { font-size: 88px; }
  .cover { height: 100svh; min-height: 0; padding: clamp(54px,9vh,70px) 20px 34px; }
  .cover-invitation { font-size: 8px; }
  .cover-names { font-size: clamp(34px,9vw,44px); }
  .envelope { width: clamp(230px,56vw,300px); }
  .letter-names { font-size: clamp(42px,11vw,56px); }
  .nav-inner { gap: 18px; padding: 0 18px; }
  .nav-links { flex: 1; gap: 21px; margin-right: -18px; padding-right: 18px; scroll-padding-inline: 18px; }
  .nav-links a { font-size: 8px; }
  .about { padding: 65px 23px 56px; }
  .about-grid { gap: 25px; }
  .about-item p { font-size: 14px; }
  .details { min-height: initial; grid-template-columns: 1fr; }
  .details-photo { min-height: 48svh; max-height: 500px; }
  .details-copy { min-height: 490px; padding: 58px clamp(28px,10vw,70px); }
  .story { min-height: 520px; padding: 75px 25px; }
  .story { grid-template-columns: 1fr; min-height: 0; padding: 0 0 48px; }
  .story-photo { height: 58svh; min-height: 360px; max-height: 520px; }
  .story-copy-column { padding: 48px 25px 0; }
  .schedule { min-height: 100svh; padding: 20px; }
  .schedule-heading { margin-bottom: 14px; }
  .schedule-timeline { min-height: 0; grid-template-rows: repeat(6,minmax(88px,1fr)); }
  .timeline-copy h3 { font-size: 18px; }
  .timeline-copy p { font-size: 10px; }
  .dress-layout { grid-template-columns: 1fr; gap: 25px; }
  .stay-grid { grid-template-columns: 1fr; }
  .stay-item, .stay-item:first-child { padding: 0 0 20px; border-right: 0; border-left: 0; border-bottom: 1px solid var(--line); }
  .stay-item:last-child { border-bottom: 0; }
  .stay-photo { height: 48svh; min-height: 250px; max-height: 390px; }
  .stay-copy { padding: 18px 10px 0; }
  .stay-item h3 { margin: 10px 0 6px; }
  .stay-item p { min-height: auto; }
  .stay-distance { margin-top: 10px; }
  .directions-grid { grid-template-columns: 1fr; }
  .directions-grid article, .directions-grid article:first-child { display: grid; grid-template-columns: 38px 1fr; column-gap: 10px; padding: 20px 10px; border-right: 0; border-left: 0; border-bottom: 1px solid var(--line); }
  .directions-grid article:last-child { border-bottom: 0; }
  .direction-icon { grid-row: span 4; }
  .directions-grid h3 { margin: 0 0 6px; }
  .directions-grid .text-link { justify-self: start; margin-top: 10px; }
}
@media (max-width: 520px) {
  .hero-copy h1 { font-size: 49px; }
  .hero-copy .eyebrow { font-size: 8px; }
  .hero-place { font-size: 16px; }
  .beginning-copy .script-heading { font-size: 45px; }
  .countdown .script-heading { font-size: 40px; }
  .countdown-clock { gap: 5px; }
  .countdown-clock > div { min-width: 42px; }
  .countdown-number { font-size: 27px; }
  .countdown-label { font-size: 7px; }
  .reception-copy .script-heading { font-size: 46px; }
  .about-grid { grid-template-columns: 1fr; gap: 34px; }
  .about-item p { max-width: 290px; font-size: 15px; }
  .script-subheading { margin-top: 10px; }
  .section-signoff { margin-top: 35px; }
  .details-photo { min-height: 42svh; }
  .details-copy { min-height: 450px; }
  .schedule { min-height: calc(100svh - var(--nav-height) - 18px); padding: 6px 12px; }
  .schedule-heading, .schedule-note { display: none; }
  .schedule-timeline { grid-template-columns: minmax(0,1fr) 18px minmax(0,1fr); grid-template-rows: repeat(6,minmax(0,1fr)); }
  .timeline-event { grid-template-columns: minmax(0,1fr) 18px minmax(0,1fr); }
  .timeline-event--left .timeline-side { grid-template-columns: 30px minmax(0,1fr); gap: 5px; padding-right: 7px; }
  .timeline-event--right .timeline-side { grid-template-columns: minmax(0,1fr) 30px; gap: 5px; padding-left: 7px; }
  .timeline-side img { width: 22px; height: 22px; margin-top: 8px; }
  .timeline-copy time { margin-bottom: 1px; font-size: 7px; }
  .timeline-copy h3 { margin-bottom: 2px; font-size: 12px; }
  .timeline-copy p { font-size: 7px; line-height: 1.1; }
  .timeline-node { width: 6px; height: 6px; margin-top: 6px; }
  .schedule-timeline::before { top: 6px; bottom: 6px; }
  .story-copy { font-size: 18px; }
  .faq-list summary { font-size: 18px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}