@font-face{font-family:Cormorant;src:url('./fonts/cormorant-regular.woff2') format('woff2');font-style:normal;font-display:swap}
@font-face{font-family:Cormorant;src:url('./fonts/cormorant-italic.woff2') format('woff2');font-style:italic;font-display:swap}
@font-face{font-family:Montserrat;src:url('./fonts/montserrat-regular.woff2') format('woff2');font-style:normal;font-display:swap}
:root{--paper:#f5efe7;--paper-light:#fcf9f4;--white:#fffdf9;--ink:#352b29;--wine:#64202e;--wine-deep:#3e1821;--olive:#686336;--blush:#e6bbb4;--line:#ded2c5}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper-light);color:var(--ink);font-family:Montserrat,Arial,sans-serif;font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}
button,input,textarea{font:inherit}
a{color:inherit;text-decoration:none}
button{cursor:pointer}
::selection{background:var(--blush);color:var(--wine-deep)}
.site-header{height:82px;position:relative;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:2rem;padding:0 clamp(1.4rem,5.5vw,6rem);background:var(--white);border-bottom:1px solid var(--line)}
.monogram{font-family:Cormorant,Georgia,serif;font-size:2rem;letter-spacing:-.11em;color:var(--wine);white-space:nowrap;line-height:1}
.monogram span{font-style:italic;font-size:.7em;color:var(--olive);margin:0 .14em 0 .06em}
.site-header nav{display:flex;align-items:center;gap:clamp(1rem,2.8vw,2.8rem);font-size:.73rem;letter-spacing:.12em;text-transform:uppercase;color:#63444a}
.site-header nav a:not(.nav-rsvp):hover,.text-link:hover{color:var(--olive)}
.nav-rsvp{border:1px solid var(--wine);padding:.68rem 1rem;color:var(--wine);transition:background .2s,color .2s}
.nav-rsvp:hover{background:var(--wine);color:#fff}
.mobile-menu{display:none}
.watercolor{position:absolute;z-index:0;pointer-events:none;background-image:url('./art/watercolor-clouds.png');background-repeat:no-repeat}
.hero{position:relative;isolation:isolate;overflow:hidden;background:var(--paper-light);min-height:min(790px,calc(100svh - 82px));display:grid;align-items:center}
.watercolor-hero{top:0;left:0;width:min(68vw,850px);height:750px;background-size:1055px auto;background-position:left top;opacity:.55;mask-image:radial-gradient(ellipse 90% 85% at 0 0,#000 12%,rgba(0,0,0,.82) 40%,transparent 83%)}
.hero-inner{position:relative;z-index:1;width:min(100%,1320px);margin:auto;padding:clamp(4rem,7vw,7rem) clamp(1.4rem,5.5vw,6rem);display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);align-items:center;gap:clamp(1rem,3vw,4rem)}
.hero-copy{width:min(100%,560px);justify-self:center;text-align:center;animation:rise-in 1s .1s ease both}
.eyebrow{margin:0 0 1.25rem;color:var(--olive);font-size:.7rem;font-weight:600;letter-spacing:.23em;text-transform:uppercase;line-height:1.6}
.hero-eyebrow{color:var(--olive);letter-spacing:.19em}
.hero h1{margin:0;font-family:Cormorant,Georgia,serif;font-size:clamp(5.5rem,8.3vw,8.7rem);font-weight:400;line-height:.75;letter-spacing:-.065em;color:var(--wine-deep)}
.hero-name{display:block}
.hero-name-last{color:var(--olive)}
.hero-join{display:block;width:max-content;margin:.35rem auto .45rem;font-family:Cormorant,Georgia,serif;font-size:clamp(2.8rem,3.5vw,3.8rem);font-style:italic;font-weight:400;line-height:.72;letter-spacing:-.08em;color:var(--olive)}
.hero-lead{max-width:470px;margin:2rem auto 0;font-family:Cormorant,Georgia,serif;font-size:clamp(1.45rem,2.3vw,2rem);line-height:1.24;color:#594943}
.hero-place{margin:1.1rem 0 0;color:#765e55;font-size:.78rem;letter-spacing:.04em}
.hero-place span{padding:0 .4em;color:var(--wine)}
.hero-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:1.8rem;margin-top:2.5rem}
.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.9rem 1.35rem;border:1px solid transparent;font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;line-height:1.4;text-align:center;transition:background .25s,color .25s,transform .25s}
.button:hover{transform:translateY(-2px)}
.button-wine{background:var(--wine);color:#fff;border-color:var(--wine)}
.button-wine:hover{background:var(--wine-deep);border-color:var(--wine-deep)}
.text-link{font-size:.74rem;letter-spacing:.09em;text-transform:uppercase;border-bottom:1px solid currentColor;padding:0 0 .36rem;transition:color .2s}
.hero-link{color:var(--wine)}
.hero-art{justify-self:center;position:relative;width:min(100%,555px);height:640px;animation:rise-in 1.2s .25s ease both}
.hero-photo{position:absolute;right:8%;top:0;width:84%;height:590px;margin:0}
.hero-photo:before{content:"";position:absolute;inset:-13px -13px 13px 13px;border:1px solid #c6ae9a;border-radius:230px 230px 2px 2px;pointer-events:none}
.hero-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 62%;border-radius:230px 230px 2px 2px;filter:saturate(.78)}
.hero-photo figcaption,.place-photo figcaption{font-size:.65rem;letter-spacing:.13em;text-transform:uppercase;color:#8c7166;text-align:right;padding-top:.55rem}
.paper-section{position:relative;background-color:var(--white)}
.section-shell{width:min(100% - 2.8rem,1180px);margin-inline:auto}
.intro{padding:clamp(5rem,8vw,7.5rem) 0 clamp(4rem,7vw,6.5rem);text-align:center}
.intro h2,.section-heading h2,.place-copy h2,.rsvp-copy h2{margin:0;font-family:Cormorant,Georgia,serif;font-weight:400;font-size:clamp(3.2rem,5.4vw,5.5rem);line-height:.96;letter-spacing:-.05em}
h2 em{font-weight:400;color:var(--wine)}
.intro h2{max-width:850px;margin-inline:auto}
.section-intro{max-width:620px;margin:2rem auto 0;color:#725f57;font-size:.96rem;line-height:1.9}
.detail-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));max-width:1060px;margin:3.5rem auto 0;border-top:1px solid #cbb9a8;border-bottom:1px solid #cbb9a8}
.detail-point{min-height:190px;display:grid;grid-template-rows:auto 1fr auto;align-items:center;justify-items:center;gap:.8rem;padding:1.7rem 1rem;text-align:center}
.detail-point+ .detail-point{border-left:1px solid #d9c8b9}
.detail-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.16em;color:var(--olive)}
.detail-point strong{font-family:Cormorant,Georgia,serif;font-size:clamp(2.4rem,3.5vw,3.4rem);font-weight:400;line-height:.88;letter-spacing:-.045em;color:var(--wine)}
.detail-note{font-size:.78rem;color:#716158;line-height:1.35}
.gallery-section{padding:clamp(4.5rem,7vw,7rem) 0;background:#f5efe7;border-top:1px solid #e7dcd1}
.gallery-heading{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.7fr);align-items:end;gap:4rem;margin:0 0 2.6rem}
.gallery-heading h2{margin:0;font-family:Cormorant,Georgia,serif;font-weight:400;font-size:clamp(3.3rem,5.8vw,5.8rem);line-height:.94;letter-spacing:-.05em}
.gallery-heading p:last-child{max-width:420px;margin:0 0 .3rem;color:#6c5a52;font-size:.88rem;line-height:1.9}
.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(.75rem,1.3vw,1.25rem)}
.gallery-item{position:relative;aspect-ratio:4/5;margin:0;overflow:hidden;background:#e5dacf}
.gallery-item img{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.78);transition:transform .5s ease,filter .5s ease}
.gallery-item:hover img{transform:scale(1.035);filter:saturate(.9)}
.gallery-item figcaption{position:absolute;bottom:0;left:0;padding:.55rem .8rem;background:#fffdf9e8;color:var(--wine);font-size:.64rem;letter-spacing:.18em}
.gallery-caption{margin:1.15rem 0 0;font-size:.63rem;letter-spacing:.15em;text-transform:uppercase;color:#8c7166;text-align:right}
.schedule-section{position:relative;overflow:hidden;background:#fcf9f4;padding:clamp(5rem,7vw,7rem) 0 clamp(5rem,7vw,7rem);border-top:1px solid #e7dcd1;border-bottom:1px solid #e7dcd1}
.schedule-shell{position:relative;z-index:1}
.section-heading{text-align:center;max-width:730px;margin:0 auto 3.5rem}
.section-heading h2 em{display:inline}
.section-heading>p:last-child{max-width:550px;margin:1.5rem auto 0;color:#716057;line-height:1.9;font-size:.91rem}
.timeline{position:relative;list-style:none;width:min(100%,400px);margin:0 auto;padding:0}
.timeline::before{content:"";position:absolute;z-index:0;top:38px;bottom:38px;left:120.5px;width:1px;background:#a3a07c}
.timeline-item{position:relative;z-index:1;display:grid;grid-template-columns:92px 18px 34px minmax(0,1fr);column-gap:20px;align-items:center;min-height:76px}
.timeline-time{display:block;text-align:right;font-family:Cormorant,Georgia,serif;font-size:1.85rem;font-weight:400;line-height:1;color:var(--wine);font-variant-numeric:lining-nums}
.timeline-dot{display:block;justify-self:center;width:12px;height:12px;border:2px solid var(--olive);border-radius:50%;background:#fcf9f4}
.timeline-icon{display:block;width:34px;height:34px;object-fit:contain}
.timeline-title{display:block;font-family:Montserrat,Arial,sans-serif;font-size:.72rem;font-weight:600;letter-spacing:.11em;line-height:1.45;text-transform:uppercase;color:#4f3e38}
.place-section{padding:clamp(5.5rem,8vw,8.5rem) 0;background-color:#f3ece3}
.place-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:clamp(3rem,8vw,9rem)}
.place-photo{position:relative;width:100%;max-width:520px;margin:0;justify-self:center}
.place-photo:before{content:"";position:absolute;inset:-14px 14px 35px -14px;border:1px solid #c9b4a2;border-radius:260px 260px 2px 2px;pointer-events:none}
.place-photo img{display:block;width:100%;height:600px;object-fit:cover;object-position:center 54%;border-radius:260px 260px 2px 2px;filter:saturate(.82)}
.place-copy{justify-self:center;width:min(100%,475px)}
.place-copy h2 em{display:block}
.place-copy>p:not(.eyebrow){margin:1.6rem 0 2rem;color:#6c5a52;max-width:450px;line-height:1.95;font-size:.94rem}
.address-detail{border-top:1px solid #cbb9a8;border-bottom:1px solid #cbb9a8;padding:1.15rem 0 1.35rem;margin:1.9rem 0 2rem}
.address-detail>span{display:block;color:var(--olive);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase}
.address-detail strong{display:block;margin:.4rem 0 .2rem;font-family:Cormorant,Georgia,serif;font-size:2rem;font-weight:400;color:var(--wine)}
.address-detail p{margin:0;color:#6c5a52;font-size:.82rem;line-height:1.75}
.place-actions{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap}
.venue-link{color:var(--wine)}
.rsvp-section{background:#fbf7f2;color:var(--ink);padding:clamp(5.5rem,8vw,8.5rem) 0;position:relative;overflow:hidden}
.watercolor-rsvp{top:-1rem;left:-1rem;width:min(30vw,330px);height:280px;background-size:850px auto;background-position:left top;opacity:.24;mask-image:linear-gradient(135deg,#000 5%,transparent 74%)}
.rsvp-grid{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:clamp(3rem,8vw,9rem)}
.rsvp-copy{position:sticky;top:5rem;padding-top:3.5rem}
.rsvp-copy .eyebrow{color:var(--olive)}
.rsvp-copy h2 em{color:var(--wine);display:block}
.rsvp-copy>p:not(.eyebrow){max-width:400px;color:#6c5a52;line-height:1.9;font-size:.95rem;margin-top:1.6rem}
.rsvp-script{margin-top:3rem;font-family:Cormorant,Georgia,serif;font-style:italic;font-size:2.5rem;color:#a78279}
.rsvp-card{width:100%;background:var(--white);color:var(--ink);padding:clamp(2rem,4vw,3rem);border:1px solid var(--line);box-shadow:0 18px 45px #6a453012}
.form-kicker{font-size:.69rem;color:var(--olive);letter-spacing:.18em;text-transform:uppercase}
.rsvp-card h3{font-family:Cormorant,Georgia,serif;font-size:3rem;font-weight:400;line-height:1;margin:.45rem 0 1.9rem;color:var(--wine)}
.form-field{display:flex;flex-direction:column;gap:.5rem;margin-top:1.35rem}
.form-field label,.attendance-field legend{font-size:.75rem;letter-spacing:.035em;color:#4b3834}
.form-field label span{color:#9a887f}
.form-field input,.form-field textarea{width:100%;border:1px solid #cbbdb1;border-radius:0;background:#fffdfa;color:var(--ink);padding:.85rem 1rem;font-size:.88rem;outline:0;transition:border-color .2s,box-shadow .2s}
.form-field input:focus,.form-field textarea:focus{border-color:var(--olive);box-shadow:0 0 0 3px #68633624}
.form-field input::placeholder,.form-field textarea::placeholder{color:#a18e82}
.form-field textarea{resize:vertical;min-height:92px}
.attendance-field{border:0;padding:0;margin:1.45rem 0 0;min-width:0}
.attendance-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;margin-top:.6rem}
.attendance-options label{display:flex;align-items:center;gap:.45rem;border:1px solid #cbbdb1;padding:.77rem .8rem;cursor:pointer;font-size:.72rem;line-height:1.35;min-height:52px;transition:border-color .2s,background .2s}
.attendance-options label.selected{border-color:var(--wine);background:#f7eae4}
.attendance-options input{accent-color:var(--wine);margin:0;flex:none}
.honeypot{position:absolute!important;left:-10000px!important;width:1px;height:1px;overflow:hidden}
.form-error{color:#962d3a;background:#fff0ec;border:1px solid #e5ada4;padding:.65rem .8rem;font-size:.8rem;margin:1.2rem 0 0}
.submit-button{width:100%;margin-top:1.7rem}
.submit-button:disabled{opacity:.62;cursor:wait;transform:none}
.success-card{min-height:370px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start}
.success-card h3{line-height:1.04}
.success-card p{color:#6c5a52}
.success-card .text-link{border:0;background:none;color:var(--wine);padding:0 0 .35rem;margin-top:1.4rem;border-bottom:1px solid currentColor}
.footer{padding:3.2rem 1.4rem;text-align:center;background:#efe4d8;border-top:1px solid #d5c3b3;color:#705c54}
.footer-names{font-family:Cormorant,Georgia,serif;font-size:2.3rem;line-height:1;color:var(--wine);margin:0}
.footer-names i{font-size:.8em;color:var(--olive)}
.footer>p:nth-child(2){font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;margin:.9rem 0 1.3rem}
.footer a{font-size:.69rem;letter-spacing:.12em;text-transform:uppercase;border-bottom:1px solid currentColor;padding-bottom:.24rem}
@keyframes rise-in{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:980px){
  .site-header>nav{display:none}
  .mobile-menu{display:block;position:relative;color:var(--wine)}
  .mobile-menu summary{display:flex;align-items:center;gap:.65rem;list-style:none;cursor:pointer;font-size:.69rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase}
  .mobile-menu summary::-webkit-details-marker{display:none}
  .mobile-menu summary span{display:inline-block;width:18px;height:10px;border-top:1px solid currentColor;border-bottom:1px solid currentColor}
  .mobile-menu nav{position:absolute;top:calc(100% + 1.1rem);right:-.6rem;display:grid;gap:0;width:230px;padding:.5rem 1.1rem;background:var(--white);border:1px solid var(--line);box-shadow:0 12px 30px #352b291a;font-size:.68rem}
  .mobile-menu nav a{display:block;padding:.75rem .2rem;border-bottom:1px solid var(--line)}
  .mobile-menu nav a:last-child{border-bottom:0;color:var(--wine)}
  .hero{min-height:auto}
  .hero-inner{gap:1rem}
  .hero h1{font-size:clamp(4.6rem,10vw,7rem)}
  .hero-art{height:540px}
  .hero-photo{height:500px}
}
@media(max-width:760px){
  .site-header{height:68px;padding:0 1.3rem}
  .hero-inner{grid-template-columns:1fr;padding:5rem 1.5rem 4.5rem;gap:4rem}
  .hero-copy{text-align:center}
  .hero h1{font-size:clamp(5.6rem,16vw,8rem)}
  .hero-lead{margin-inline:auto}
  .hero-actions{justify-content:center}
  .hero-art{width:min(100%,500px);height:590px}
  .hero-photo{height:550px}
  .watercolor-hero{width:65vw}
  .intro{padding-top:5rem}
  .intro h2,.section-heading h2,.place-copy h2,.rsvp-copy h2{font-size:clamp(3.3rem,11vw,5rem)}
  .detail-strip{margin-top:3rem}
  .detail-point{min-height:175px;padding:1.4rem .55rem}
  .detail-point strong{font-size:clamp(1.75rem,4.8vw,2.7rem)}
  .detail-note{font-size:.72rem}
  .gallery-heading{grid-template-columns:1fr;gap:.9rem;margin-bottom:2rem}
  .gallery-heading p:last-child{max-width:560px}
  .gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .place-grid,.rsvp-grid{grid-template-columns:1fr;gap:3.7rem}
  .place-copy{justify-self:start}
  .place-photo img{height:530px}
  .rsvp-copy{position:static;padding-top:0}
  .rsvp-script{margin-top:1.5rem}
}
@media(max-width:480px){
  .section-shell{width:min(100% - 2.3rem,1180px)}
  .hero-inner{padding-inline:1.25rem}
  .hero h1{font-size:clamp(5rem,18vw,6.2rem)}
  .hero-place{line-height:1.7}
  .hero-actions{gap:1.2rem}
  .hero-art{height:430px;width:min(100%,400px)}
  .hero-photo{height:390px;width:90%;right:5%}
  .hero-photo img{object-position:center bottom}
  .hero-photo:before{inset:-9px -9px 9px 9px}
  .detail-point{min-height:155px;gap:.45rem;padding:1rem .28rem}
  .detail-point strong{font-size:clamp(1.35rem,5.8vw,1.7rem)}
  .detail-label{font-size:.62rem;letter-spacing:.06em}
  .detail-note{font-size:.64rem}
  .gallery-section{padding:4.5rem 0}
  .gallery-grid{gap:.6rem}
  .gallery-caption{font-size:.59rem;line-height:1.5}
  .timeline{width:min(100%,330px)}
  .timeline::before{left:84.5px}
  .timeline-item{grid-template-columns:65px 16px 30px minmax(0,1fr);column-gap:12px}
  .timeline-icon{width:30px;height:30px}
  .timeline-title{font-size:.7rem;letter-spacing:.08em}
  .timeline-time{font-size:1.65rem}
  .place-photo img{height:430px}
  .attendance-options{grid-template-columns:1fr}
  .rsvp-card{padding:1.5rem}
  .rsvp-card h3{font-size:2.7rem}
}
@media(max-width:360px){.detail-label{font-size:.59rem;letter-spacing:.02em}.detail-note{font-size:.6rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-copy,.hero-art{animation:none}.button{transition:none}}
