@charset "UTF-8";
@font-face{font-family:"Satoshi";src:url("fonts/Satoshi-Variable.woff2") format("woff2");font-style:normal;font-weight:300 900;font-display:swap}
@font-face{font-family:"Great Vibes";src:url("fonts/GreatVibes-Regular.ttf") format("truetype");font-style:normal;font-weight:400;font-display:swap}
:root{--paper:#f8f7f3;--cream:#e4e2e5;--sand:#d2bfb1;--rose:#6b6c4c;--ink:#434132;--olive:#6b6c4c;--muted:#6b6c4c;--line:rgba(67,65,50,.24);--serif:"Great Vibes",cursive;--sans:"Satoshi",Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:78px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;overflow-x:hidden}body.no-scroll{overflow:hidden}button,input{font:inherit}button{cursor:pointer}a{color:inherit}img{display:block;max-width:100%}::selection{background:#b4baa8;color:#223022}:focus-visible{outline:2px solid var(--rose);outline-offset:4px}em{font-weight:400}section{position:relative}.section-pad{padding:clamp(86px,11vw,175px) clamp(25px,7vw,120px)}.eyebrow,.section-index{font-size:11px;letter-spacing:.24em;font-weight:600}.section-index{color:var(--muted)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--serif);font-weight:400}.js-ready .reveal{opacity:0;transform:translateY(35px);transition:opacity .85s ease,transform 1s cubic-bezier(.2,.7,.2,1)}.js-ready .reveal.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.js-ready .reveal{opacity:1;transform:none}}
/* Envelope: independent theatrical entry, then the actual page appears. */
.gate{position:fixed;z-index:100;inset:0;display:grid;grid-template-rows:auto 1fr auto;min-height:100dvh;background:#eee6d9;background-image:radial-gradient(circle at 50% 40%,#f8f3ea 0,#eee5d8 75%);overflow:hidden;transition:opacity .72s ease,visibility .72s ease;color:#393a34}.gate::before{content:"";position:absolute;inset:12px;border:1px solid rgba(62,67,57,.12);pointer-events:none}.gate.hidden{opacity:0;visibility:hidden;pointer-events:none}.gate-head,.gate-foot{z-index:1;display:flex;justify-content:space-between;align-items:center;padding:34px clamp(24px,5vw,76px);font-size:10px;letter-spacing:.21em}.gate-foot{padding-bottom:35px;color:#77766f}.gate-center{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;z-index:1;min-height:0;padding:0 18px}.gate-eyebrow{font:italic clamp(30px,3.6vw,50px)/1.1 var(--serif);margin:0 0 30px;text-align:center}.envelope-button{border:0;background:none;padding:0;filter:drop-shadow(0 24px 24px rgba(82,58,49,.15));transition:transform .4s ease,filter .4s ease;touch-action:manipulation}.envelope-button:hover{transform:translateY(-5px);filter:drop-shadow(0 30px 28px rgba(82,58,49,.2))}.envelope-button:active{transform:scale(.985)}.envelope{display:block;position:relative;width:min(500px,84vw);height:min(325px,54.6vw);min-height:200px;perspective:1200px}.envelope-back{position:absolute;inset:0;background:#d9c2ab;border:1px solid #c8a88f;box-shadow:inset 0 0 38px rgba(255,255,255,.23);z-index:1}.envelope-letter{position:absolute;z-index:2;bottom:9%;left:10%;width:80%;height:75%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:13px;background:#fffaf1;border:1px solid #e8dcd0;box-shadow:0 3px 8px rgba(74,47,32,.12);transform:translateY(8%);transition:transform .85s cubic-bezier(.18,.78,.28,1) .35s;text-align:center}.envelope-letter>*{opacity:0;transition:opacity .35s ease .65s}.gate.opening .envelope-letter>*{opacity:1}.letter-tiny{font:500 clamp(7px,1vw,10px)/1.5 var(--sans);letter-spacing:.15em}.letter-sign{font:italic clamp(27px,4.5vw,47px)/1 var(--serif)}.letter-rule{height:1px;width:48px;background:var(--rose)}.envelope-side{position:absolute;inset:0;z-index:3;background:#d1b39b}.envelope-side-left{clip-path:polygon(0 0,50% 52%,0 100%)}.envelope-side-right{clip-path:polygon(100% 0,50% 52%,100% 100%);background:#d5b9a3}.envelope-front{position:absolute;inset:0;z-index:4;background:#e7d0ba;clip-path:polygon(0 45%,50% 77%,100% 45%,100% 100%,0 100%);box-shadow:inset 0 -20px 35px rgba(182,136,111,.12)}.envelope-flap{position:absolute;inset:0;z-index:5;background:#e3c8ae;clip-path:polygon(0 0,100% 0,50% 58%);transform-origin:50% 0;transition:transform .65s cubic-bezier(.17,.73,.32,1);backface-visibility:hidden}.envelope-seal{position:absolute;z-index:6;top:51%;left:50%;transform:translate(-50%,-50%);width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:#9c584b;color:#f8efe4;font:18px var(--serif);box-shadow:0 3px 6px rgba(92,47,39,.2);transition:opacity .25s ease}.gate.opening .envelope-flap{transform:rotateX(177deg);z-index:1}.gate.opening .envelope-seal{opacity:0}.gate.opening .envelope-letter{transform:translateY(-55%)}.gate.opening .envelope-button{transform:translateY(12px)}.gate-open{background:none;border:0;border-bottom:1px solid currentColor;padding:7px 1px 12px;font-size:12px;letter-spacing:.1em;margin-top:25px}.gate-open span{margin-left:16px}.gate-sub{font:italic 20px var(--serif);opacity:.65;margin:2px 0 0}.gate.opening .gate-open,.gate.opening .gate-sub{opacity:0;pointer-events:none}
/* Header and menu */
.site-header{height:92px;padding:0 clamp(25px,5vw,76px);position:relative;z-index:50;background:var(--cream);display:flex;align-items:center;justify-content:space-between}.monogram{text-decoration:none;font:500 38px/1 var(--serif);letter-spacing:-.09em}.monogram-amp{font-style:italic;font-size:.8em;padding:0 2px;color:var(--rose)}.header-note{font-size:10px;letter-spacing:.3em;margin-left:8vw}.header-actions{display:flex;gap:34px;align-items:center}.header-rsvp{text-decoration:none;border:1px solid var(--ink);border-radius:50px;padding:14px 22px;min-height:44px;display:inline-flex;align-items:center;font-size:10px;letter-spacing:.11em;transition:background .25s,color .25s}.header-rsvp:hover{background:var(--ink);color:#fff}.header-rsvp span{margin-left:12px}.menu-toggle{display:grid;align-content:center;gap:8px;width:48px;height:48px;background:none;border:0;padding:6px;position:relative;z-index:53}.menu-toggle span{display:block;height:1px;width:100%;background:var(--ink);transition:transform .3s}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(4.5px) rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-4.5px) rotate(-45deg)}.site-menu{position:fixed;z-index:45;inset:0;display:flex;flex-direction:column;justify-content:center;padding:clamp(86px,10vh,130px) clamp(28px,10vw,170px) 45px;background:#eee5d8;opacity:0;visibility:hidden;transform:translateY(-12px);transition:opacity .35s,visibility .35s,transform .35s}.site-menu.open{opacity:1;visibility:visible;transform:none}.menu-kicker{letter-spacing:.22em;font-size:11px;margin-bottom:24px}.site-menu>a{font:400 clamp(34px,5.5vw,80px)/1.1 var(--serif);text-decoration:none;border-bottom:1px solid var(--line);padding:7px 0;transition:padding-left .25s,color .25s}.site-menu>a:hover{padding-left:15px;color:var(--rose)}.site-menu>a span{font:10px var(--sans);vertical-align:middle;margin-right:25px;letter-spacing:.2em}.site-menu p{font:italic 27px var(--serif);margin:30px 0 0;color:var(--muted)}
/* Hero and narrative sections */
.hero{height:clamp(650px,calc(100svh - 92px),1040px);min-height:640px;overflow:hidden;color:#fffaf2;background:#766d61}.hero-image,.hero-shade{position:absolute;inset:0;width:100%;height:100%}.hero-image{object-fit:cover;object-position:center 43%}.hero-shade{background:linear-gradient(90deg,rgba(19,24,18,.5),rgba(22,22,18,.05) 82%),linear-gradient(0deg,rgba(18,20,16,.47),transparent 30%)}.hero-overline,.hero-bottom{position:absolute;left:clamp(25px,6vw,100px);right:clamp(25px,6vw,100px);display:flex;justify-content:space-between;align-items:center;font-size:10px;letter-spacing:.19em}.hero-overline{top:40px}.hero-bottom{bottom:30px}.hero-content{position:absolute;left:clamp(25px,9vw,145px);bottom:clamp(105px,17vh,180px);max-width:930px}.hero-kicker{font-size:12px;letter-spacing:.18em;margin-bottom:17px;text-transform:uppercase}.hero h1{font-size:clamp(84px,10vw,160px);line-height:.78;letter-spacing:-.055em;margin:0 0 34px;text-wrap:balance}.hero h1:focus{outline:none}.hero h1 em{font-weight:400}.hero-names{border-top:1px solid rgba(255,255,255,.8);display:inline-block;padding-top:15px;letter-spacing:.15em;font-size:12px}.scroll-cue{text-decoration:none;letter-spacing:.16em}.scroll-cue span{font-size:21px;margin-left:14px;vertical-align:-2px}.welcome{display:grid;grid-template-columns:30% 1fr;gap:6vw;background:var(--paper)}.welcome-aside{display:flex;flex-direction:column;justify-content:space-between}.asterisk{font:140px/.8 var(--serif);color:#c2b49d}.welcome-main{max-width:800px}.welcome h2{font-size:clamp(60px,6.3vw,106px);line-height:.92;letter-spacing:-.04em;margin:35px 0}.welcome h2 em{color:var(--rose)}.welcome-copy{max-width:475px;line-height:1.95;color:#5f615a}.text-link{display:inline-block;margin-top:35px;border-bottom:1px solid var(--ink);padding-bottom:10px;text-decoration:none;font-size:10px;font-weight:600;letter-spacing:.15em}.text-link span{padding-left:16px}.event{background:#dfd3c5}.event-intro{display:grid;grid-template-columns:1fr 1fr;align-items:end;gap:30px;margin-bottom:90px}.event-intro .eyebrow{grid-column:1/-1}.event h2{font-size:clamp(80px,10vw,158px);line-height:.7;letter-spacing:-.06em;margin:0}.event-intro>p:last-child{max-width:360px;line-height:1.85;margin:0 0 5px}.event-list{border-top:1px solid var(--line)}.event-row{display:grid;grid-template-columns:8% 42% 1fr 35px;gap:15px;align-items:center;padding:34px 0;border-bottom:1px solid var(--line)}.event-number,.event-label{font-size:10px;letter-spacing:.16em}.event h3{font-size:clamp(46px,5vw,72px);line-height:1;margin:7px 0}.event-detail{font-size:14px;line-height:1.8}.event-detail p{margin:0}.event-star{font:30px var(--serif);color:var(--rose)}.story{display:grid;grid-template-columns:1fr 1fr;min-height:780px;background:var(--paper)}.story-photo{min-height:700px;overflow:hidden}.story-photo img{width:100%;height:100%;object-fit:cover;object-position:center 55%}.story-text{padding:clamp(80px,11vw,170px) clamp(45px,7vw,120px);display:flex;flex-direction:column;align-items:flex-start;justify-content:center}.story-text .eyebrow{margin-top:70px}.story h2{font-size:clamp(70px,7vw,115px);line-height:.85;letter-spacing:-.05em;margin:24px 0 35px}.story h2 em{color:var(--rose)}.story-text>p:not(.eyebrow){max-width:390px;line-height:1.9;color:#5f615a}.story-sign{font:italic 34px var(--serif);color:var(--rose);margin-top:28px}.quote-section{text-align:center;background:var(--olive);color:#f9f2e8;min-height:570px;display:flex;flex-direction:column;align-items:center;justify-content:center}.quote-decoration{font:120px/.7 var(--serif);color:#c1a79b}.quote-section blockquote{font:400 clamp(48px,6vw,90px)/.97 var(--serif);letter-spacing:-.04em;margin:20px 0 38px}.quote-section>p{letter-spacing:.22em;font-size:10px}.practical{display:grid;grid-template-columns:1fr 46%;background:#efe5d7}.practical-content{padding:clamp(85px,10vw,140px) clamp(32px,8vw,125px)}.practical-content .eyebrow{margin-top:62px}.practical h2{font-size:clamp(75px,8vw,122px);line-height:.81;letter-spacing:-.04em;margin:28px 0 60px}.practical h2 em{color:var(--rose)}.practical-item{display:grid;grid-template-columns:36px 1fr;gap:8px;border-top:1px solid var(--line);padding:24px 0}.practical-item>span{font-size:10px;letter-spacing:.1em}.practical-item h3{font-size:32px;margin:0 0 5px}.practical-item p{font-size:13px;color:var(--muted);margin:0}.practical-photo{min-height:790px;overflow:hidden}.practical-photo img{width:100%;height:100%;object-fit:cover;object-position:center}.rsvp{background:var(--paper);display:grid;grid-template-columns:1fr 1fr;gap:clamp(35px,7vw,110px)}.rsvp h2{font-size:clamp(65px,7vw,113px);line-height:.86;letter-spacing:-.05em;margin:30px 0}.rsvp h2 em{color:var(--rose)}.rsvp-heading>p:last-child{max-width:405px;line-height:1.85;color:var(--muted)}.rsvp-form{padding-top:70px}.form-line{border-bottom:1px solid var(--ink);padding:13px 0 18px;margin-bottom:29px}.form-line label,.attendance legend{font-size:10px;font-weight:600;letter-spacing:.19em}.form-line input{display:block;border:0;outline:0;background:transparent;color:var(--ink);font:34px/1.2 var(--serif);width:100%;padding:12px 0 0}.form-line input:focus-visible{outline:0;border-bottom:2px solid var(--rose)}.form-line input::placeholder{color:#97968e}.attendance{border:0;padding:18px 0 30px;margin:0}.attendance legend{margin-bottom:18px}.attendance label{display:inline-flex;align-items:center;gap:9px;margin-right:25px;font-size:14px;min-height:44px}.attendance input{accent-color:var(--olive);width:19px;height:19px}.submit-btn{width:100%;height:65px;display:flex;align-items:center;justify-content:space-between;padding:0 27px;border:0;background:var(--olive);color:#fff;letter-spacing:.13em;font-size:11px;transition:background .25s,transform .25s}.submit-btn:hover{background:#52634f;transform:translateY(-2px)}.submit-btn span{font-size:21px}.form-status{font-size:11px;line-height:1.6;color:var(--muted);margin:16px 0}.footer{background:var(--ink);color:#e9e0d4;padding:80px clamp(25px,7vw,120px) 35px;display:grid;grid-template-columns:1fr 1fr;gap:30px}.footer-mark{font:100px/.8 var(--serif);letter-spacing:-.12em}.footer-mark span{font-style:italic;color:#c68b76}.footer>p{font:italic clamp(30px,3vw,46px)/1.1 var(--serif);justify-self:end;max-width:340px}.footer-links{display:flex;gap:45px;align-items:center}.footer-links a,.footer-links button{font-size:10px;letter-spacing:.15em;text-decoration:none;background:none;border:0;padding:0;color:#e9e0d4}.footer small{text-align:right;letter-spacing:.1em;font-size:9px;color:#a8a59d}
@media(max-width:850px){.header-note{display:none}.hero{min-height:700px}.hero h1{font-size:clamp(74px,11vw,110px)}.welcome{grid-template-columns:1fr;gap:20px}.welcome-aside{flex-direction:row}.asterisk{font-size:50px}.event-intro{display:block}.event-intro .eyebrow{margin-bottom:40px}.event-intro>p:last-child{margin-top:32px}.event-row{grid-template-columns:42px 1fr;gap:14px}.event-detail{grid-column:2}.event-star{display:none}.story{min-height:0}.story-photo{min-height:570px}.story-text{padding:75px 40px}.practical{grid-template-columns:1fr 43%}.practical-photo{min-height:660px}.rsvp{gap:40px}.site-menu{padding-top:120px}}
@media(max-width:600px){html{scroll-padding-top:68px}.site-header{height:70px;padding:0 22px}.monogram{font-size:31px}.header-actions{gap:10px}.header-rsvp{font-size:9px;padding:12px 12px;letter-spacing:0}.header-rsvp span{display:none}.menu-toggle{width:48px}.site-menu{padding:85px 25px 50px}.site-menu>a{font-size:clamp(40px,10vw,57px);padding:11px 0}.site-menu>a span{margin-right:10px}.gate-head,.gate-foot{padding:25px 24px;font-size:9px}.gate-counter,.gate-foot span:last-child{display:none}.gate-eyebrow{max-width:285px;font-size:36px;margin:0 0 32px}.envelope{width:min(87vw,400px);height:57vw;min-height:195px;max-height:260px}.envelope-seal{height:39px;width:39px;font-size:14px}.letter-tiny{font-size:7px}.letter-sign{font-size:25px}.gate-open{font-size:10px;margin-top:18px}.gate-sub{font-size:18px}.hero{height:calc(100svh - 70px);min-height:610px;max-height:860px}.hero-image{object-position:51% center}.hero-shade{background:linear-gradient(0deg,rgba(23,25,21,.7),rgba(31,31,26,.05) 75%)}.hero-overline{top:24px;left:24px;right:24px;font-size:9px}.hero-overline span:last-child{display:none}.hero-content{left:25px;right:25px;bottom:115px}.hero-kicker{font-size:10px;line-height:1.7;letter-spacing:.12em}.hero h1{font-size:clamp(65px,13.5vw,94px);line-height:.86;margin-bottom:26px}.hero-names{font-size:10px}.hero-bottom{left:25px;right:25px;bottom:28px;font-size:9px;letter-spacing:.07em;gap:10px}.scroll-cue{white-space:nowrap}.scroll-cue span{margin-left:4px}.section-pad{padding:92px 25px}.welcome h2{font-size:clamp(55px,13vw,78px);margin:35px 0}.welcome-copy{font-size:14px;line-height:1.8}.event-intro{margin-bottom:56px}.event h2{font-size:clamp(90px,21vw,120px)}.event-intro>p:last-child{font-size:14px}.event-row{padding:26px 0;grid-template-columns:24px 1fr}.event h3{font-size:57px}.event-detail{font-size:13px}.story{display:flex;flex-direction:column}.story-photo{height:500px;min-height:0}.story-photo img{object-position:center 50%}.story-text{padding:90px 25px 100px}.story-text .eyebrow{margin-top:50px}.story h2{font-size:80px}.quote-section{min-height:440px}.quote-section blockquote{font-size:clamp(44px,11vw,65px)}.practical{display:flex;flex-direction:column}.practical-content{padding:90px 25px}.practical-content .eyebrow{margin-top:55px}.practical h2{font-size:90px}.practical-photo{height:440px;min-height:0}.practical-photo img{object-position:center 58%}.rsvp{display:block}.rsvp h2{font-size:clamp(68px,15vw,95px)}.rsvp-form{padding-top:60px}.form-line input{font-size:30px}.attendance label{margin-right:12px}.footer{display:block;padding:68px 25px 30px}.footer-mark{font-size:80px}.footer>p{margin:35px 0 60px;max-width:260px}.footer-links{justify-content:space-between;gap:10px;margin-bottom:90px}.footer small{display:block;text-align:left}}
@media(max-height:680px){.gate-head,.gate-foot{padding-top:18px;padding-bottom:18px}.gate-eyebrow{font-size:30px;margin-bottom:10px}.envelope{width:min(390px,75vw);height:min(252px,49vw)}.gate-open{margin-top:4px}.gate-sub{display:none}}
/* Personalized invitation: long names, family list, place links and direct RSVP. */
.hero-image{object-position:center 50%}.hero-shade{background:linear-gradient(90deg,rgba(11,30,30,.66),rgba(13,30,30,.18) 82%),linear-gradient(0deg,rgba(10,25,24,.56),transparent 32%)}.hero h1{font-size:clamp(70px,8.4vw,132px);line-height:.82}.hero-names{max-width:90%;line-height:1.6}.event-detail strong{font-weight:600}.event-detail p{overflow-wrap:anywhere}
.story-text{padding-top:70px;padding-bottom:70px}.story-text .eyebrow{margin-top:32px}.story h2{font-size:clamp(60px,6.2vw,95px);margin:16px 0 24px}.story-text>p:not(.eyebrow){font-size:13px;line-height:1.7}.story-text strong{font-weight:600;color:var(--ink)}.family-groups{margin-top:15px;width:100%;max-width:470px}.family-groups>div{border-top:1px solid var(--line);padding:14px 0 8px}.family-groups p{font:500 12px/1.5 var(--sans);color:#545650;margin:0 0 8px;overflow-wrap:anywhere}
.quote-section blockquote{font-size:clamp(38px,4.6vw,67px);line-height:1.08;max-width:1050px}.quote-section>p{line-height:1.8}.practical-item p{line-height:1.7}.place-links{display:flex;flex-wrap:wrap;column-gap:20px;row-gap:10px;margin-top:15px}.place-links a{font-size:11px;text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:4px}.practical-photo{position:relative}.photo-caption{position:absolute;left:20px;bottom:20px;padding:10px 13px;background:rgba(246,241,232,.89);color:var(--ink);font:600 9px/1.4 var(--sans);letter-spacing:.08em;max-width:calc(100% - 40px)}
.contact-list{display:flex;flex-direction:column;align-self:center;gap:18px}.contact-card{position:relative;display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--line);padding:25px 45px 26px 0;text-decoration:none;min-height:124px}.contact-card:last-of-type{border-bottom:1px solid var(--line)}.contact-label{font:600 10px var(--sans);letter-spacing:.2em}.contact-card strong{font:400 clamp(37px,4vw,60px)/1 var(--serif);white-space:nowrap}.contact-arrow{position:absolute;right:4px;top:46%;font-size:23px;transition:transform .25s}.contact-card:hover .contact-arrow{transform:translate(4px,-4px)}.contact-note{font-size:12px;line-height:1.7;color:var(--muted);margin:8px 0 0}
@media(max-width:850px){.hero h1{font-size:clamp(59px,9.2vw,89px)}.story-text{padding:65px 36px}.story h2{font-size:clamp(52px,7vw,80px)}.family-groups p{font-size:11px}.contact-card strong{font-size:clamp(34px,5vw,47px)}}
@media(max-width:600px){.gate-eyebrow{font-size:clamp(30px,8vw,36px)}.hero-image{object-position:center 47%}.hero h1{font-size:clamp(49px,11.3vw,68px);line-height:.92}.hero-names{font-size:9px;letter-spacing:.06em;max-width:100%}.hero-bottom{flex-wrap:wrap}.story-text{padding:78px 25px 86px}.story h2{font-size:clamp(55px,13vw,75px)}.family-groups p{font-size:12px}.quote-section blockquote{font-size:clamp(38px,9vw,55px)}.contact-list{gap:12px}.contact-card strong{font-size:clamp(40px,10vw,58px)}.photo-caption{font-size:8px}}

