:root{--paper:#faf7f1;--paper2:#eee7da;--ink:#35312e;--muted:#887f75;--accent:#c2b38d;--dark:#6f6252;--line:rgba(77,66,55,.25);--en:"Cormorant Garamond",serif;--accent-en:"Fraunces",serif;--heading-en:"Forum",serif;--jp:"Klee One",cursive;--speed:.85s;--width:430px}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:#ebe5dc}body{margin:0;color:var(--ink);font-family:var(--jp);font-weight:300}.stage{min-height:100vh;display:flex;justify-content:center;background:radial-gradient(circle at 20% 20%,rgba(100,80,60,.07) 0 1px,transparent 2px),#ebe5dc;background-size:28px 28px}.invite{position:relative;z-index:2;width:min(100%,var(--width));overflow:hidden;background:var(--paper);box-shadow:0 0 45px #594a3820}.section{padding:86px 30px;background:var(--paper)}.hero{height:100svh;min-height:620px;position:relative;overflow:hidden;color:#fff}.hero>img{width:100%;height:100%;object-fit:cover;animation:zoom 18s ease-out both}.shade{position:absolute;inset:0;background:linear-gradient(transparent 50%,rgba(20,18,16,.52))}.hero-copy{position:absolute;inset:auto 0 68px;text-align:center;text-shadow:0 2px 15px #0005}.hero-copy p,.hero-copy h1{margin:0;font:italic 400 44px/.88 var(--en);letter-spacing:.07em;opacity:0;animation:rise 1.2s .4s forwards}.hero-copy h1{animation-delay:.75s}.hero-copy span,.hero-copy time{display:block;margin-top:25px;font:italic 400 20px var(--en);letter-spacing:.08em;opacity:0;animation:rise 1.2s 1.1s forwards}.hero-copy time{margin-top:3px;font-size:14px;animation-delay:1.35s}.scroll{position:absolute;bottom:13px;left:50%;font:9px var(--en);letter-spacing:.25em;writing-mode:vertical-rl}.count{padding:55px 16px}.arch{height:300px;padding-top:55px;text-align:center;color:#fff;background:var(--accent);border-radius:155px 155px 0 0}.arch p{margin:0 0 20px;font:italic 20px/1.15 var(--en);letter-spacing:.05em}.arch p i{font-weight:400}.arch strong{font:italic 58px/1 var(--en)}.arch em{font:italic 24px var(--en)}.arch div{display:flex;justify-content:center;gap:28px;margin-top:16px;font:italic 25px var(--en)}.arch small{font:italic 15px var(--en);letter-spacing:.08em}.photo-strip{height:210px;overflow:hidden}.photo-strip img{width:100%;height:100%;object-fit:cover;clip-path:inset(0 50%);transition:clip-path 1.2s ease}.photo-strip.visible img{clip-path:inset(0)}.bouquet{height:245px}.heading{text-align:center}.heading h2{margin:0;font:400 25px var(--en);letter-spacing:.13em}.heading p{margin:8px 0 0;font-size:10px;color:var(--muted)}.heading i{display:block;width:0;height:1px;margin:18px auto 0;background:var(--dark);transition:width 1s}.heading.visible i{width:42px}.copy{margin-top:43px;text-align:center;font-size:10px;line-height:2.25}.copy p{margin:0 0 20px}.date{text-align:center;margin:36px 0 50px;font:italic 25px var(--en);letter-spacing:.08em}.timeline{position:relative;width:250px;margin:auto}.timeline:before{content:"";position:absolute;left:87px;top:13px;bottom:13px;width:1px;background:var(--line);transform:scaleY(0);transform-origin:top;transition:transform 1.3s}.timeline.visible:before{transform:scaleY(1)}.timeline article{height:78px;display:grid;grid-template-columns:68px 40px 1fr;align-items:start}.timeline article span{font-size:10px;text-align:right}.timeline article i{position:relative;width:9px;height:9px;margin:4px auto;border-radius:50%;background:var(--ink);z-index:1}.timeline time{font:22px var(--en);letter-spacing:.1em}.access{text-align:center}.access h3{margin:45px 0 12px;font:22px var(--en);letter-spacing:.1em}.access>p{font-size:10px;line-height:2}.map{height:240px;margin-top:30px;display:grid;place-content:center;background:linear-gradient(28deg,transparent 47%,#ffffff99 48% 52%,transparent 53%),#ded7cd;background-size:70px 60px}.map b{font-size:27px;font-weight:400}.map small{margin-top:8px;color:var(--muted)}.message{padding:85px 30px;background:var(--accent);color:#fff;text-align:center}.person{margin-top:45px}.person figure{width:145px;height:145px;margin:auto;border:1px solid #fff;border-radius:50%;background:url("assets/hero.png") center 28%/210px auto}.person:nth-of-type(3) figure{background-position:center 33%}.person h3{margin:18px 0 12px;font:italic 24px var(--en)}.person p{font-size:10px;line-height:2}.gallery{padding-inline:24px}.slider{position:relative;height:460px;margin-top:40px;overflow:hidden}.slider img{width:100%;height:100%;object-fit:cover}.slider button{position:absolute;top:50%;translate:0 -50%;width:38px;height:38px;border:0;border-radius:50%;background:#ffffffe0;color:var(--dark);font:30px var(--en)}#prev{left:12px}#next{right:12px}.dots{display:flex;justify-content:center;gap:7px;margin-top:15px}.dots i{width:5px;height:5px;border-radius:5px;background:#c9c0b4}.dots .active{width:18px;background:var(--dark)}.intro{text-align:center;font-size:10px;line-height:2;margin:38px 0 48px}form{display:grid;gap:23px}fieldset{padding:0;border:0;margin:0}form label,form legend{font-size:10px;display:grid;gap:8px}form b{font-size:8px;color:#9a6256}input,textarea,select{width:100%;padding:13px 11px;border:1px solid var(--line);background:#fff9;border-radius:2px;font:12px var(--jp);outline:0}.attendance{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.attendance label{display:block;padding:13px;text-align:center;border:1px solid var(--line)}.attendance label.selected{background:var(--dark);color:#fff}.attendance input{display:none}.two{display:grid;grid-template-columns:1fr 1fr;gap:9px}.relation{display:flex;gap:18px}.relation legend{width:100%;margin-bottom:9px}.relation label{display:block}.relation input{width:auto}.guest-head{display:grid;gap:12px;padding-top:21px;border-top:1px solid var(--line)}.guest-head span{font-size:10px}.guest-head button{padding:11px;border:1px solid var(--dark);background:transparent;color:var(--dark)}#attending-fields{display:grid;gap:23px}.guest-card{display:grid;gap:13px;padding:16px;background:var(--paper2)}.guest-card header{display:flex;justify-content:space-between;font-size:11px}.guest-card header button{border:0;background:transparent;color:#9a6256}.submit{padding:16px;border:0;background:var(--dark);color:#fff;letter-spacing:.1em}form>small{text-align:center;color:var(--muted);font-size:8px}footer{padding:58px 20px 92px;text-align:center;background:var(--dark);color:#fff}footer b{display:block;font:italic 38px var(--en)}footer span{font:8px var(--en);letter-spacing:.18em}.side{position:fixed;top:0;bottom:0;width:calc((100vw - var(--width))/2);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#78685426;font-family:var(--en)}.side.left{left:0}.side.right{right:0}.side span{font-size:clamp(18px,3vw,42px);letter-spacing:.16em;writing-mode:vertical-rl}.side b{margin-top:25px;font-size:clamp(45px,8vw,110px);font-weight:400}#bottom-nav{position:fixed;z-index:10;bottom:0;left:50%;translate:-50% 110%;width:min(100%,var(--width));display:grid;grid-template-columns:1fr 1.3fr;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:#faf7f1f2;box-shadow:0 -6px 20px #4b3d2e20;transition:translate .55s}#bottom-nav.visible{translate:-50% 0}#bottom-nav a{min-height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;color:var(--ink);font-size:8px}#bottom-nav a b{font:14px var(--en);letter-spacing:.12em}#bottom-nav .primary{background:var(--dark);color:#fff}.reveal{opacity:0;transform:translateY(20px);transition:opacity var(--speed),transform var(--speed)}.reveal.visible{opacity:1;transform:none}
@keyframes zoom{to{transform:scale(1.09)}}@keyframes rise{to{opacity:1;transform:none}}@media(max-width:430px){.side{display:none}.invite{box-shadow:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}.reveal{opacity:1;transform:none}.photo-strip img{clip-path:none}}

/* Premium motion and readability pass */
:root{
  --body-copy:clamp(14px,3.65vw,15px);
  --ease-lux:cubic-bezier(.22,1,.36,1);
  --ease-soft:cubic-bezier(.4,0,.2,1);
  --gold:#d8c9a4;
}

body{
  overflow-x:hidden;
}
body::before{
  content:"";
  position:fixed;
  z-index:100;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(circle at 50% 45%,rgba(216,201,164,.24),transparent 26%),
    var(--paper);
  transform-origin:top;
  animation:introCurtain 1.8s .25s var(--ease-lux) both;
}
.intro-monogram{
  position:fixed;
  z-index:101;
  top:50%;
  left:50%;
  pointer-events:none;
  color:var(--dark);
  font:italic 400 44px var(--en);
  letter-spacing:.08em;
  transform:translate(-50%,-50%);
  animation:introMonogram 1.7s .05s var(--ease-soft) both;
}
.intro-monogram i{
  font-family:var(--heading-en);
  font-style:normal;
}

.hero>img{
  transform:translate3d(0,var(--hero-y,0px),0) scale(1.08);
  animation:heroImageEnter 2.4s .35s var(--ease-lux) both;
  will-change:transform;
}
.shade{
  overflow:hidden;
  background:
    linear-gradient(180deg,rgba(18,16,14,.05),transparent 42%),
    linear-gradient(transparent 48%,rgba(20,18,16,.58));
}
.shade::before{
  content:"";
  position:absolute;
  inset:-20%;
  opacity:.48;
  background-image:
    radial-gradient(circle,rgba(255,246,214,.9) 0 1px,transparent 1.8px),
    radial-gradient(circle,rgba(255,246,214,.55) 0 1.2px,transparent 2px),
    radial-gradient(circle,rgba(255,255,255,.65) 0 .8px,transparent 1.6px);
  background-position:12% 20%,76% 55%,38% 82%;
  background-size:150px 180px,190px 220px,120px 160px;
  animation:lightDrift 13s linear infinite;
}
.shade::after{
  content:"";
  position:absolute;
  inset:14px;
  border:1px solid rgba(255,255,255,.5);
  opacity:0;
  transform:scale(.96);
  animation:frameEnter 1.4s 1.45s var(--ease-lux) forwards;
}
.hero-copy{
  z-index:2;
}
.hero-copy p,.hero-copy h1{
  animation-duration:1.35s;
  animation-timing-function:var(--ease-lux);
}
.hero-copy p{animation-delay:1.15s}
.hero-copy h1{animation-delay:1.42s}
.hero-copy span{
  animation-delay:1.75s;
  animation-timing-function:var(--ease-lux);
}
.hero-copy time{animation-delay:1.96s}
.scroll{
  z-index:2;
  bottom:22px;
}
.scroll::after{
  content:"";
  display:block;
  width:1px;
  height:34px;
  margin:9px auto 0;
  background:currentColor;
  transform-origin:top;
  animation:scrollLine 2s 2.2s var(--ease-soft) infinite;
}

.section{
  position:relative;
}
.heading h2{
  font-size:29px;
  letter-spacing:.16em;
}
.heading p{
  font-size:12px;
  line-height:1.8;
}
.heading i{
  height:1px;
  transition:width 1.2s .22s var(--ease-lux);
}

.copy{
  margin-top:46px;
  font-size:var(--body-copy);
  line-height:2.05;
  letter-spacing:.035em;
}
.copy p{
  margin:0 0 1.75em;
}
.access>p,.person p,.intro{
  font-size:var(--body-copy);
  line-height:2;
  letter-spacing:.025em;
}
.timeline article span{
  font-size:12px;
}
.timeline time{
  font-size:24px;
}
.access h3{
  font-size:24px;
}
.map small{
  font-size:11px;
}
.person h3{
  font-size:26px;
}

form{
  gap:26px;
}
form label,form legend{
  font-size:12px;
  line-height:1.7;
}
form b{
  font-size:9px;
}
input,textarea,select{
  padding:14px 12px;
  font-size:14px;
  line-height:1.6;
  transition:border-color .3s,box-shadow .3s,background-color .3s;
}
input:focus,textarea:focus,select:focus{
  border-color:var(--dark);
  background:#fff;
  box-shadow:0 0 0 3px rgba(111,98,82,.1);
}
.attendance label,.guest-head button,.submit{
  font-size:12px;
  transition:transform .3s var(--ease-lux),background-color .3s,color .3s,box-shadow .3s;
}
.attendance label:active,.guest-head button:active,.submit:active{
  transform:scale(.98);
}
.guest-head span{
  font-size:12px;
}
form>small{
  font-size:10px;
  line-height:1.7;
}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{
  outline:2px solid var(--gold);
  outline-offset:3px;
}

.reveal{
  opacity:0;
  filter:blur(5px);
  transform:translate3d(0,30px,0);
  transition:
    opacity 1s var(--reveal-delay,0s) var(--ease-lux),
    transform 1.15s var(--reveal-delay,0s) var(--ease-lux),
    filter .9s var(--reveal-delay,0s) var(--ease-soft);
}
.reveal.reveal-left{transform:translate3d(-30px,18px,0)}
.reveal.reveal-right{transform:translate3d(30px,18px,0)}
.reveal.reveal-scale{transform:scale(.94) translateY(15px)}
.reveal.visible{
  opacity:1;
  filter:none;
  transform:none;
}

.arch.reveal{
  opacity:1;
  filter:none;
  transform:none;
}
.motion-ready .arch>p,.motion-ready .arch>strong,.motion-ready .arch>em,
.motion-ready .arch>div,.motion-ready .arch>small{
  opacity:0;
  transform:translateY(15px);
}
.arch.visible>p{animation:detailRise .85s .42s var(--ease-lux) forwards}
.arch.visible>strong,.arch.visible>em{animation:detailRise .9s .6s var(--ease-lux) forwards}
.arch.visible>div{animation:detailRise .9s .76s var(--ease-lux) forwards}
.arch.visible>small{animation:detailRise .9s .92s var(--ease-lux) forwards}

.photo-strip.reveal{
  opacity:1;
  filter:none;
  transform:none;
}
.photo-strip img{
  clip-path:inset(0 0 100% 0);
  transform:scale(1.1);
  transition:clip-path 1.35s var(--ease-lux),transform 2s var(--ease-lux);
}
.photo-strip.visible img{
  clip-path:inset(0);
  transform:scale(1.02);
}
.greeting-photo img{
  object-position:50% 33%;
}
.bouquet img{
  clip-path:inset(100% 0 0);
}
.bouquet.visible img{
  clip-path:inset(0);
}

.copy.reveal{
  opacity:1;
  filter:none;
  transform:none;
}
.copy p{
  opacity:0;
  transform:translateY(18px);
}
.copy.visible p:nth-child(1){animation:detailRise .9s .05s var(--ease-lux) forwards}
.copy.visible p:nth-child(2){animation:detailRise .9s .2s var(--ease-lux) forwards}
.copy.visible p:nth-child(3){animation:detailRise .9s .35s var(--ease-lux) forwards}
.copy.visible p:nth-child(4){animation:detailRise .9s .5s var(--ease-lux) forwards}

.timeline.reveal{
  opacity:1;
  filter:none;
  transform:none;
}
.timeline article{
  opacity:0;
  transform:translateX(-16px);
  transition:opacity .8s var(--ease-lux),transform .8s var(--ease-lux);
}
.timeline.visible article:nth-child(1){opacity:1;transform:none;transition-delay:.2s}
.timeline.visible article:nth-child(2){opacity:1;transform:none;transition-delay:.42s}
.timeline.visible article:nth-child(3){opacity:1;transform:none;transition-delay:.64s}
.timeline article i{
  box-shadow:0 0 0 0 rgba(53,49,46,.22);
}
.timeline.visible article i{
  animation:markerPulse 1.2s var(--ease-soft) both;
}
.timeline.visible article:nth-child(2) i{animation-delay:.22s}
.timeline.visible article:nth-child(3) i{animation-delay:.44s}

.map{
  overflow:hidden;
  background-position:0 0;
}
.map.visible{
  animation:mapGrid 16s linear infinite;
}

.person figure{
  position:relative;
  opacity:0;
  transform:scale(.72);
  box-shadow:0 0 0 0 rgba(255,255,255,.28);
}
.person.visible figure{
  animation:portraitEnter 1.15s .18s var(--ease-lux) forwards;
}
.person h3,.person p{
  opacity:0;
  transform:translateY(12px);
}
.person.visible h3{animation:detailRise .8s .5s var(--ease-lux) forwards}
.person.visible p{animation:detailRise .8s .64s var(--ease-lux) forwards}
.person.groom figure{
  background-size:470px auto;
  background-position:31% 30%;
}
.person.bride figure,.person:nth-of-type(3) figure{
  background-size:470px auto;
  background-position:67% 30%;
}

.slider{
  box-shadow:0 20px 45px rgba(70,55,39,.12);
}
.slider img{
  transform:scale(1);
  opacity:1;
  transition:opacity .36s var(--ease-soft),transform .7s var(--ease-lux);
}
.slider img.changing{
  opacity:.2;
  transform:scale(1.04);
}
.slider button{
  cursor:pointer;
  transition:transform .3s var(--ease-lux),background-color .3s,box-shadow .3s;
}
.slider button:hover{
  transform:scale(1.08);
  box-shadow:0 6px 18px rgba(53,49,46,.16);
}
.dots i{
  transition:width .45s var(--ease-lux),background-color .3s;
}
.gallery-thumbs{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:9px;
  margin-top:20px;
}
.gallery-thumbs button{
  position:relative;
  aspect-ratio:4/5;
  padding:0;
  overflow:hidden;
  cursor:pointer;
  border:1px solid transparent;
  background:var(--paper2);
  opacity:.58;
  transition:opacity .35s,border-color .35s,transform .45s var(--ease-lux);
}
.gallery-thumbs button::after{
  content:"";
  position:absolute;
  inset:4px;
  border:1px solid rgba(255,255,255,.72);
  pointer-events:none;
}
.gallery-thumbs button.active{
  opacity:1;
  border-color:var(--dark);
  transform:translateY(-3px);
}
.gallery-thumbs img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
}
.gallery-thumbs button:nth-child(1) img{object-position:50% 32%}
.gallery-thumbs button:nth-child(2) img{object-position:50% 50%}
.gallery-thumbs button:nth-child(3) img{object-position:50% 28%}

@keyframes introCurtain{
  0%,30%{transform:scaleY(1)}
  100%{transform:scaleY(0)}
}
@keyframes introMonogram{
  0%{opacity:0;transform:translate(-50%,-45%)}
  28%,62%{opacity:1;transform:translate(-50%,-50%)}
  100%{opacity:0;transform:translate(-50%,-60%)}
}
@keyframes heroImageEnter{
  from{opacity:0;filter:blur(9px) saturate(.7)}
  to{opacity:1;filter:none}
}
@keyframes frameEnter{
  to{opacity:1;transform:scale(1)}
}
@keyframes lightDrift{
  to{transform:translate3d(4%,-9%,0) rotate(2deg)}
}
@keyframes scrollLine{
  0%{transform:scaleY(0);opacity:0}
  35%{transform:scaleY(1);opacity:1}
  75%,100%{transform:translateY(12px) scaleY(.25);opacity:0}
}
@keyframes detailRise{
  to{opacity:1;transform:none}
}
@keyframes markerPulse{
  0%{box-shadow:0 0 0 0 rgba(53,49,46,.25)}
  60%{box-shadow:0 0 0 9px rgba(53,49,46,0)}
  100%{box-shadow:0 0 0 0 rgba(53,49,46,0)}
}
@keyframes mapGrid{
  to{background-position:70px 60px}
}
@keyframes portraitEnter{
  0%{opacity:0;transform:scale(.72);box-shadow:0 0 0 0 rgba(255,255,255,.2)}
  70%{opacity:1;transform:scale(1.04);box-shadow:0 0 0 13px rgba(255,255,255,.08)}
  100%{opacity:1;transform:scale(1);box-shadow:0 0 0 7px rgba(255,255,255,.06)}
}

@media(max-width:430px){
  .section{padding-inline:27px}
  .copy{letter-spacing:.02em}
}
@media(hover:hover){
  .guest-head button:hover{
    color:#fff;
    background:var(--dark);
  }
  .submit:hover{
    transform:translateY(-2px);
    box-shadow:0 10px 24px rgba(70,55,39,.2);
  }
}
@media(prefers-reduced-motion:reduce){
  body::before,.intro-monogram{display:none}
  .hero>img{transform:scale(1.03)}
  .shade::before,.scroll::after{animation:none}
  .copy p,.timeline article,.arch>p,.arch>strong,.arch>em,.arch>div,.arch>small,
  .person figure,.person h3,.person p{
    opacity:1;
    transform:none;
    animation:none!important;
  }
  .arch.reveal,.photo-strip img,.bouquet img{
    clip-path:none;
  }
  .map.visible{
    animation:none;
  }
}

/* Typography specified in the reference PDF */
body{
  font-weight:400;
}
.hero-copy span,.hero-copy time,
.arch p,.arch small,
.date,.person h3{
  font-family:var(--accent-en);
}
.heading h2{
  font-family:var(--heading-en);
}

/* Browser review refinements */
.hero-copy{
  inset:auto 0 112px;
}
.hero-copy span{
  margin-top:30px;
  font-size:23px;
}
.hero-copy time{
  margin-top:9px;
  font-size:18px;
  letter-spacing:.12em;
}
.scroll{
  bottom:18px;
}
.greeting-photo img{
  object-position:50% 27%;
}
.copy .closing{
  margin-top:-.75em;
  margin-bottom:0;
}
.copy.visible p:nth-child(5){
  animation:detailRise .9s .65s var(--ease-lux) forwards;
}
.timeline::before{
  top:39px;
  bottom:39px;
}
.timeline article{
  align-items:center;
}
.timeline article span{
  line-height:1.4;
}
.timeline article i{
  margin:0 auto;
}
.timeline time{
  line-height:1;
}
.person.groom figure{
  background-size:520px auto;
  background-position:29% 30%;
}
.person.bride figure,.person:nth-of-type(3) figure{
  background-size:520px auto;
  background-position:71% 37%;
}
.rsvp-photo{
  aspect-ratio:3/4;
  margin:42px 0 0;
  overflow:hidden;
  box-shadow:0 20px 45px rgba(70,55,39,.12);
}
.rsvp-photo img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:50% 36%;
  transform:scale(1.04);
  transition:transform 1.5s var(--ease-lux);
}
.rsvp-photo.visible img{
  transform:scale(1);
}
.reply-deadline{
  display:inline-block;
  margin:5px 0 3px;
  color:var(--dark);
  font-size:clamp(18px,4.9vw,21px);
  font-weight:600;
  line-height:1.55;
  letter-spacing:.04em;
}
footer b{
  font-family:var(--heading-en);
  font-style:normal;
  font-weight:400;
  letter-spacing:.08em;
}

/* Second browser review refinements */
.scroll{
  font-size:12px;
  font-weight:500;
  letter-spacing:.2em;
  text-shadow:0 1px 8px rgba(0,0,0,.45);
}
.arch p{
  margin-bottom:24px;
  font-size:25px;
  line-height:1.05;
}
.arch p i{
  font-size:18px;
  line-height:1.2;
}
.arch .countdown-units{
  width:224px;
  margin:18px auto 0;
  display:grid;
  grid-template-columns:1fr auto 1fr auto 1fr;
  align-items:end;
  gap:8px;
}
.countdown-units .unit{
  min-width:48px;
  display:grid;
  justify-items:center;
  gap:7px;
}
.countdown-units .unit b{
  font:italic 400 24px/1 var(--en);
}
.countdown-units .unit small{
  font:italic 400 14px/1 var(--accent-en);
  letter-spacing:.06em;
}
.countdown-units .unit-divider{
  align-self:end;
  padding-bottom:1px;
  font:italic 400 14px/1 var(--accent-en);
}
.timeline article>span{
  font-size:14px;
}
.timeline time{
  display:flex;
  align-items:baseline;
  gap:.12em;
}
.timeline time span{
  font:inherit;
  text-align:inherit;
}
.timeline time b{
  position:relative;
  top:-.08em;
  font:400 .68em/1 var(--en);
}
.person.groom figure{
  background-position:35% 29%;
}
.person.bride figure,.person:nth-of-type(3) figure{
  background-size:520px auto;
  background-position:65.6% 37.2%;
}

/* Third browser review refinements */
.hero-copy{
  text-shadow:0 4px 22px rgba(0,0,0,.72);
}
.hero-copy p,.hero-copy h1{
  font-size:50px;
}
.hero-copy span{
  font-size:26px;
}
.hero-copy .hero-ampersand{
  display:inline;
  margin:0;
  font-family:var(--heading-en);
  font-size:1em;
  font-style:normal;
  font-weight:400;
}
.hero-copy time{
  font-size:20px;
}
.arch{
  height:340px;
  padding-top:58px;
}
.arch p{
  margin-bottom:26px;
  font-size:31px;
}
.arch p i{
  font-size:20px;
}
.arch strong{
  font-size:82px;
}
.arch em{
  font-size:28px;
}
.arch .countdown-units{
  margin-top:20px;
}
.gallery{
  padding-bottom:40px;
}
.rsvp{
  padding-top:48px;
}

/* Fourth browser review refinements */
.arch{
  border-radius:50% 50% 0 0 / 50% 50% 0 0;
}
.arch strong{
  font-style:normal;
  font-variant-numeric:lining-nums tabular-nums;
  font-feature-settings:"lnum" 1,"tnum" 1;
}
.arch em{
  font-family:var(--accent-en);
}
.countdown-units .unit b,
.countdown-units .unit small,
.countdown-units .unit-divider{
  font-family:var(--accent-en);
  font-variant-numeric:lining-nums tabular-nums;
  font-feature-settings:"lnum" 1,"tnum" 1;
}
.timeline{
  width:212px;
}
.timeline::before{
  left:100px;
  transition:transform 1.15s .08s var(--ease-lux);
}
.timeline article{
  grid-template-columns:80px 40px 92px;
  opacity:0;
  transform:translateY(-14px);
  transition:opacity .7s var(--ease-lux),transform .7s var(--ease-lux);
}
.timeline.visible article:nth-child(1){
  opacity:1;
  transform:none;
  transition-delay:.22s;
}
.timeline.visible article:nth-child(2){
  opacity:1;
  transform:none;
  transition-delay:.52s;
}
.timeline.visible article:nth-child(3){
  opacity:1;
  transform:none;
  transition-delay:.82s;
}
.timeline article>span{
  font-size:16px;
  font-weight:600;
  letter-spacing:.06em;
}
.timeline time,
.timeline time span,
.timeline time b{
  font-family:var(--accent-en);
  font-variant-numeric:lining-nums tabular-nums;
  font-feature-settings:"lnum" 1,"tnum" 1;
}
.timeline time{
  font-size:24px;
}
.timeline time b{
  font-size:.68em;
}
.rsvp-guidance{
  margin:34px 0 0;
  text-align:center;
  font-size:14px;
  line-height:2;
  letter-spacing:.025em;
}
.rsvp .intro{
  margin-top:27px;
}
form label,form legend{
  font-size:14px;
}
form b{
  font-size:10px;
}
input,textarea,select{
  font-size:15px;
}
.attendance label,.guest-head button,.submit{
  font-size:14px;
}
.guest-head span,
.guest-card header{
  font-size:14px;
}
form>small{
  font-size:11px;
}
@media(prefers-reduced-motion:reduce){
  .timeline::before{
    transform:scaleY(1);
    transition:none;
  }
  .timeline article{
    opacity:1;
    transform:none;
    transition:none;
  }
}

/* Fifth browser review refinements */
.hero>img{
  transform-origin:50% 50%;
  animation:heroZoomUp 2.2s 1.55s var(--ease-lux) both;
}
.hero-copy p,.hero-copy h1{
  opacity:1;
  transform:none;
  animation:none;
}
.hero-text-clip{
  overflow:hidden;
}
.hero-title,
.hero-copy span,
.hero-copy time,
.scroll{
  opacity:0;
  transform:translateY(115%);
}
.hero-title{
  animation:heroTextLift .85s 2.15s var(--ease-lux) forwards;
}
.hero-name-clip{
  margin-top:28px;
}
.hero-copy span{
  margin-top:0;
  animation:heroTextLift .78s 2.95s var(--ease-lux) forwards;
}
.hero-date-clip{
  margin-top:7px;
}
.hero-copy time{
  margin-top:0;
  animation:heroTextLift .72s 3.67s var(--ease-lux) forwards;
}
.scroll-clip{
  position:absolute;
  z-index:2;
  bottom:13px;
  left:50%;
  width:42px;
  height:92px;
  overflow:hidden;
  transform:translateX(-50%);
}
.scroll{
  position:static;
  display:block;
  margin:auto;
  animation:heroTextLift .72s 4.35s var(--ease-lux) forwards;
}
.scroll::after{
  animation:scrollLine 2s 4.97s var(--ease-soft) infinite;
}
.timeline::before{
  transition-duration:2.2s;
}
.timeline article{
  transition-duration:1.05s;
}
.timeline.visible article:nth-child(1){transition-delay:.35s}
.timeline.visible article:nth-child(2){transition-delay:1.15s}
.timeline.visible article:nth-child(3){transition-delay:1.95s}
.timeline.visible article:nth-child(1) i{animation-delay:.35s}
.timeline.visible article:nth-child(2) i{animation-delay:1.15s}
.timeline.visible article:nth-child(3) i{animation-delay:1.95s}
.venue-info{
  margin-top:45px;
  text-align:left;
}
.venue-info h3{
  margin:0;
  padding:0 0 18px;
  border-bottom:1px solid var(--line);
  font:400 24px/1.35 var(--en);
  letter-spacing:.1em;
}
.venue-info p{
  margin:18px 0 0;
  font-size:15px;
  line-height:2;
  letter-spacing:.035em;
}
.access .map{
  margin-top:34px;
}
@keyframes heroZoomUp{
  0%{
    opacity:.35;
    filter:blur(7px) saturate(.78);
    transform:translate3d(0,var(--hero-y,0px),0) scale(1.015);
  }
  18%{
    opacity:.7;
    filter:blur(5px) saturate(.84);
  }
  46%{
    opacity:.76;
    filter:blur(4px) saturate(.9);
  }
  72%{
    opacity:1;
    filter:none;
  }
  100%{
    opacity:1;
    filter:none;
    transform:translate3d(0,var(--hero-y,0px),0) scale(1.12);
  }
}
@keyframes heroTextLift{
  0%{opacity:0;transform:translateY(115%)}
  100%{opacity:1;transform:translateY(0)}
}
@media(prefers-reduced-motion:reduce){
  .hero>img{
    animation:none;
    transform:scale(1.05);
  }
  .hero-title,.hero-copy span,.hero-copy time,.scroll{
    opacity:1;
    transform:none;
    animation:none;
  }
}

/* Sixth browser review refinements */
.motion-ready .arch>.countdown-heading{
  opacity:1;
  transform:none;
}
.arch.visible>.countdown-heading{
  animation:none;
}
.countdown-heading .type-char{
  display:inline-block;
}
.motion-ready .countdown-heading .type-char{
  opacity:0;
  filter:blur(3px);
  transform:translateY(.42em);
}
.arch.visible .countdown-heading .type-char{
  animation:countdownCharIn .24s var(--ease-lux) forwards;
  animation-delay:calc(.36s + var(--type-order) * .085s);
}
.arch.visible>strong,.arch.visible>em{
  animation-delay:2.5s;
}
.arch.visible>.countdown-units{
  animation-delay:2.72s;
}
.venue-info{
  margin-top:45px;
}
.venue-card+.venue-card{
  margin-top:34px;
}
.venue-primary,.venue-row{
  display:grid;
  grid-template-columns:64px minmax(0,1fr);
  align-items:center;
  gap:16px;
}
.venue-info .venue-label{
  display:grid;
  place-items:center;
  min-height:30px;
  padding:5px 7px;
  background:var(--dark);
  color:#fff;
  font:600 12.5px/1.2 var(--jp);
  letter-spacing:.08em;
}
.copy .greeting-date{
  margin:10px 0 0;
}
.copy.visible p:nth-child(6){
  animation:detailRise .9s .8s var(--ease-lux) forwards;
}
.venue-info .venue-primary h3{
  margin:0;
  padding:0;
  border:0;
  font-size:22px;
}
.venue-details{
  display:grid;
  gap:14px;
  margin-top:22px;
  padding-top:22px;
  border-top:1px solid var(--line);
}
.venue-info .venue-row p{
  margin:0;
  font-size:14px;
  line-height:1.7;
  letter-spacing:.025em;
}
.venue-info .venue-row a{
  color:inherit;
  text-decoration:none;
}
.venue-map{
  width:100%;
  min-width:0;
  min-height:220px;
  aspect-ratio:4/3;
  margin-top:26px;
  overflow:hidden;
  background:#ded7cd;
}
.venue-map iframe{
  display:block;
  width:100%;
  height:100%;
  min-height:220px;
  border:0;
}
.venue-map-unavailable{
  display:grid;
  place-items:center;
  min-height:220px;
  margin:0!important;
  padding:20px;
  color:var(--muted);
  text-align:center;
}
@keyframes countdownCharIn{
  to{
    opacity:1;
    filter:none;
    transform:none;
  }
}
@media(prefers-reduced-motion:reduce){
  .motion-ready .countdown-heading .type-char{
    opacity:1;
    filter:none;
    transform:none;
    animation:none;
  }
}

/* Seventh browser review refinements */
.venue-info.reveal{
  opacity:1;
  filter:none;
  transform:none;
}
.motion-ready .venue-primary,
.motion-ready .venue-row{
  opacity:0;
  transform:translateX(-32px);
}
.venue-info.visible .venue-primary{
  animation:venueRowIn .8s .12s var(--ease-lux) forwards;
}
.venue-details{
  position:relative;
  border-top:0;
}
.venue-details::before{
  content:"";
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:1px;
  background:var(--line);
  transform:scaleX(0);
  transform-origin:left;
}
.venue-info.visible .venue-details::before{
  animation:venueRuleIn .72s .48s var(--ease-lux) forwards;
}
.venue-info.visible .venue-row:nth-child(1){
  animation:venueRowIn .8s .68s var(--ease-lux) forwards;
}
.venue-info.visible .venue-row:nth-child(2){
  animation:venueRowIn .8s 1.08s var(--ease-lux) forwards;
}
@keyframes venueRowIn{
  to{
    opacity:1;
    transform:none;
  }
}
@keyframes venueRuleIn{
  to{transform:scaleX(1)}
}
@media(prefers-reduced-motion:reduce){
  .motion-ready .venue-primary,
  .motion-ready .venue-row{
    opacity:1;
    transform:none;
    animation:none;
  }
  .venue-details::before{
    transform:none;
    animation:none;
  }
}

/* Eighth browser review refinements */
.venue-info.visible .venue-primary,
.venue-info.visible .venue-row:nth-child(1),
.venue-info.visible .venue-row:nth-child(2){
  animation:none;
}
.motion-ready .venue-primary,
.motion-ready .venue-row{
  transition:opacity .72s var(--ease-lux),transform .72s var(--ease-lux);
}
.motion-ready .venue-primary.scroll-visible,
.motion-ready .venue-row.scroll-visible{
  opacity:1;
  transform:none;
}
.venue-info.visible .venue-details::before{
  animation:none;
}
.venue-details::before{
  transition:transform .72s var(--ease-lux);
}
.venue-details.rule-visible::before{
  transform:scaleX(1);
}
@media(prefers-reduced-motion:reduce){
  .motion-ready .venue-primary,
  .motion-ready .venue-row{
    transition:none;
  }
}

/* RSVP dietary consideration controls */
.address-fields{
  display:grid;
  gap:23px;
}
.postal-code-field input{
  max-width:180px;
}
.field-help,
.postal-lookup-status{
  display:block;
  margin:0;
  color:var(--muted);
  font-size:10px;
  line-height:1.7;
}
.postal-lookup-status{
  color:var(--ink);
}
.postal-lookup-status.error{
  color:#854f45;
}
.postal-candidate-field select{
  background-color:var(--paper);
}
.dietary-block{
  display:grid;
  gap:12px;
}
.dietary-options{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
}
.dietary-options label{
  position:relative;
  display:block;
  padding:12px;
  border:1px solid var(--line);
  text-align:center;
  transition:background-color .25s,color .25s,border-color .25s;
}
.dietary-options label.selected{
  border-color:var(--dark);
  background:var(--dark);
  color:#fff;
}
.dietary-options input{
  position:absolute;
  width:1px;
  height:1px;
  margin:-1px;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap;
}
.dietary-options label:focus-within{
  outline:2px solid var(--dark);
  outline-offset:2px;
}
.dietary-details{
  display:grid;
  gap:8px;
}
.dietary-note{
  display:block;
  margin:0;
  color:var(--muted);
  font-size:11px;
  line-height:1.7;
}
.guest-dietary{
  padding-top:13px;
  border-top:1px solid var(--line);
}
.guest-dietary legend{
  margin-bottom:0;
  font-size:13px;
  line-height:1.7;
}
.guest-dietary .dietary-options label{
  padding:10px;
  font-size:13px;
}

/* RSVP confirmation, result, and validation states */
.rsvp [hidden]{
  display:none!important;
}
.rsvp-error,
.rsvp-status{
  margin:0;
  padding:13px 14px;
  border:1px solid #9a625666;
  background:#9a62560d;
  color:#854f45;
  font-size:13px;
  line-height:1.7;
}
input[aria-invalid="true"],
textarea[aria-invalid="true"],
select[aria-invalid="true"]{
  border-color:#9a6256;
  box-shadow:0 0 0 2px #9a625620;
}
.rsvp-state{
  scroll-margin-top:26px;
}
.rsvp-state-heading{
  margin-bottom:30px;
  text-align:center;
}
.rsvp-state-heading h3,
.rsvp-complete h3{
  margin:0;
  font:400 23px/1.5 var(--jp);
  letter-spacing:.08em;
}
.rsvp-state-heading p,
.rsvp-complete p{
  margin:12px 0 0;
  color:var(--muted);
  font-size:13px;
  line-height:1.9;
}
.confirmation-details{
  display:grid;
  margin:0;
  border-top:1px solid var(--line);
}
.confirmation-row{
  display:grid;
  grid-template-columns:118px minmax(0,1fr);
  gap:16px;
  padding:17px 0;
  border-bottom:1px solid var(--line);
}
.confirmation-row dt,
.confirmation-row dd{
  margin:0;
  font-size:13px;
  line-height:1.75;
  overflow-wrap:anywhere;
  white-space:pre-wrap;
}
.confirmation-row dt{
  color:var(--muted);
}
.confirmation-guests>dd{
  display:grid;
  gap:13px;
}
.confirmation-guests article{
  padding:15px;
  background:var(--paper2);
}
.confirmation-guests h4{
  margin:0 0 8px;
  font-size:13px;
  font-weight:400;
}
.confirmation-guests dl{
  margin:0;
}
.confirmation-guests .confirmation-row{
  grid-template-columns:82px minmax(0,1fr);
  gap:10px;
  padding:7px 0;
  border:0;
}
.confirmation-guests .confirmation-row dt,
.confirmation-guests .confirmation-row dd{
  font-size:12px;
}
.rsvp-status{
  margin-top:20px;
  border-color:var(--line);
  background:var(--paper2);
  color:var(--ink);
  text-align:center;
}
.rsvp-actions{
  display:grid;
  grid-template-columns:1fr 1.2fr;
  gap:10px;
  margin-top:28px;
}
.rsvp-secondary{
  padding:15px 10px;
  border:1px solid var(--dark);
  background:transparent;
  color:var(--dark);
  font:13px var(--jp);
  letter-spacing:.03em;
}
.rsvp-actions .submit{
  font:13px var(--jp);
}
.rsvp-actions button:disabled{
  cursor:wait;
  opacity:.55;
}
.rsvp-complete{
  padding:46px 20px;
  border-block:1px solid var(--line);
  text-align:center;
}
.rsvp-complete-mark{
  display:grid;
  place-items:center;
  width:58px;
  height:58px;
  margin:0 auto 22px;
  border:1px solid var(--dark);
  border-radius:50%;
  color:var(--dark);
  font-size:24px;
}
@media(max-width:380px){
  .confirmation-row{
    grid-template-columns:96px minmax(0,1fr);
    gap:12px;
  }
  .rsvp-actions{
    grid-template-columns:1fr;
  }
}
/* Phase 2C access gate and verification controls */
[hidden]{display:none!important}
.invitation-gate{min-height:100svh;display:grid;place-items:center;padding:32px 20px;background:var(--paper,#f7f2e9);color:var(--ink,#5d4938)}
.invitation-gate-card{width:min(100%,430px);padding:48px 34px;border:1px solid rgba(93,73,56,.25);background:rgba(255,255,255,.38);text-align:center;box-shadow:0 18px 50px rgba(74,59,46,.08)}
.invitation-gate-eyebrow{margin:0 0 15px;font:500 12px/1.4 "Cormorant Garamond",serif;letter-spacing:.28em}
.invitation-gate h1{margin:0;font:400 26px/1.5 "Klee One",serif;letter-spacing:.08em}
.invitation-gate-card>p:not(.invitation-gate-eyebrow){margin:18px 0 0;font:400 14px/2 "Klee One",serif;color:rgba(93,73,56,.72)}
.invitation-gate form{margin-top:30px;text-align:left}
.invitation-gate label{display:block;margin-bottom:8px;font:400 13px/1.6 "Klee One",serif}
.invitation-gate input{box-sizing:border-box;width:100%;min-height:50px;padding:12px 14px;border:1px solid rgba(93,73,56,.35);border-radius:0;background:#fff;color:inherit;font:16px/1.4 sans-serif}
.invitation-gate button{width:100%;min-height:50px;margin-top:18px;border:1px solid var(--ink,#5d4938);background:var(--ink,#5d4938);color:#fff;font:400 14px/1.5 "Klee One",serif;letter-spacing:.08em;cursor:pointer}
.invitation-gate button:disabled{cursor:wait;opacity:.55}
.invitation-gate-error{margin:12px 0 0!important;color:#9b3e39!important;font-size:13px!important;line-height:1.7!important}
.turnstile-slot{min-height:65px;margin-top:18px;overflow:hidden}
.rsvp-turnstile{display:flex;justify-content:center;margin:26px auto 8px}
.preview-banner{position:fixed;z-index:100;top:0;left:50%;transform:translateX(-50%);box-sizing:border-box;width:min(100%,440px);margin:0;padding:10px 18px;background:#675b4d;color:#fff;text-align:center;font:12px/1.6 "Klee One",serif;letter-spacing:.04em}
.rsvp-closed{padding:42px 24px;text-align:center;font:400 15px/2 "Klee One",serif}
.invitation-logout{display:block;margin:24px auto 0;border:0;border-bottom:1px solid currentColor;background:none;color:inherit;font:inherit;cursor:pointer}
@media(max-width:390px){.invitation-gate-card{padding:40px 24px}.turnstile-slot{transform-origin:left top}.turnstile-slot>div{max-width:100%}}
