@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@300;400;500&family=Cormorant+Garamond:ital,wght@0,400;0,500;1,400&display=swap');
:root{--ivory:#f5f0e8;--paper:#fbf8f2;--ink:#292620;--soft:#756e65;--gold:#9a7956;--line:rgba(91,72,51,.2);--serif:'Cormorant Garamond',Georgia,serif;--sans:'Be Vietnam Pro',sans-serif;--ease:cubic-bezier(.22,1,.36,1)}
html.page-auto-active{scroll-behavior:auto}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0;background:var(--ivory);color:var(--ink);font:300 15px/1.8 var(--sans);overflow-x:hidden}body.invitation-locked{overflow:hidden}button,input,textarea,select{font:inherit}button,a{color:inherit}img{display:block;max-width:100%;object-fit:cover}a{text-decoration:none}button{cursor:pointer}.hp{position:absolute!important;left:-9999px!important}.loader{position:fixed;z-index:1000;inset:0;display:grid;place-items:center;background:var(--ivory);transition:opacity .7s,visibility .7s}.loader span{font:italic 2rem var(--serif);color:var(--gold);animation:breathe 1.3s infinite}.loaded .loader{opacity:0;visibility:hidden}.invitation{position:fixed;z-index:900;inset:0;display:grid;place-items:center;background:#eae2d7;transition:opacity .9s 1.5s,visibility .9s 1.5s}.invitation.opened{opacity:0;visibility:hidden}.invitation-bg{position:absolute;inset:0;background:radial-gradient(circle at 30% 20%,#fff9,transparent 35%),linear-gradient(135deg,#ded3c4,#f6f0e8)}.envelope{position:relative;width:min(82vw,500px);aspect-ratio:1.52;border:0;background:none;filter:drop-shadow(0 30px 30px #6d5c4530);perspective:1000px}.envelope-back{position:absolute;inset:0;background:#d8c5ad;clip-path:polygon(0 0,50% 44%,100% 0,100% 100%,0 100%)}.envelope-letter{position:absolute;z-index:1;left:7%;right:7%;bottom:5%;height:105%;padding:16% 8%;display:flex;flex-direction:column;align-items:center;background:var(--paper);border:1px solid #cdbca3;transition:transform 1.1s var(--ease) .45s;box-shadow:inset 0 0 50px #b59a7212}.envelope-letter small{font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}.envelope-letter b{font:500 clamp(1.4rem,5vw,2.5rem)/1 var(--serif)}.envelope-letter i{font:italic 1.4rem var(--serif);color:var(--gold)}.envelope-letter em{margin-top:1rem;font-style:normal;font-size:.7rem;letter-spacing:.18em}.envelope-flap{position:absolute;z-index:3;inset:0;background:#eadcca;clip-path:polygon(0 0,50% 58%,100% 0);transform-origin:top;transition:transform .8s var(--ease) .25s}.wax{position:absolute;z-index:4;left:50%;top:49%;width:72px;height:72px;translate:-50% -50%;display:grid;place-items:center;border-radius:50%;background:#8f5947;box-shadow:inset 0 0 0 4px #b87a6330,0 6px 10px #4b302633;transition:transform .4s,opacity .5s .2s}.wax strong{font:italic 1rem var(--serif);color:#ead7c0}.envelope:active .wax{transform:scale(.93)}.opened .envelope-flap{transform:rotateX(180deg);z-index:0}.opened .wax{transform:scale(.2);opacity:0}.opened .envelope-letter{transform:translateY(-55%)}.open-hint{position:absolute;bottom:7%;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase}.invite-guest{position:absolute;top:6%;display:flex;flex-direction:column;text-align:center;color:#695c4b}.invite-guest span{font-size:.65rem;letter-spacing:.18em;text-transform:uppercase}.invite-guest strong{font:italic 1.5rem var(--serif)}
.hero{min-height:100svh;position:relative;display:grid;align-items:end;background:linear-gradient(90deg,#1514118a,#15141113),var(--hero) center/cover;color:white}.hero:after,.ending:after{content:"";position:absolute;inset:auto 0 0;height:25%;background:linear-gradient(transparent,var(--ivory))}.hero-content{z-index:1;padding:0 7vw 15vh}.hero-content p,.kicker{text-transform:uppercase;letter-spacing:.26em;font-size:.64rem}.hero h1{margin:.4rem 0;font:400 clamp(3.7rem,10vw,8rem)/.68 var(--serif);display:flex;flex-direction:column}.hero h1 i{font-weight:400;margin-left:18%;color:#e7d3b8}.hero time{font-size:.72rem;letter-spacing:.35em}.scroll-cue{position:absolute;z-index:2;right:5vw;bottom:7vh;display:flex;flex-direction:column;align-items:center;font-size:.6rem;letter-spacing:.15em;text-transform:uppercase}.scroll-cue span{font-size:1.4rem}.paper-section{background-color:var(--paper);background-image:radial-gradient(#947b5f0d 1px,transparent 1px);background-size:4px 4px}.section-inner{width:min(1160px,88vw);margin:auto}.narrow{max-width:680px;text-align:center}.welcome{padding:14rem 0 10rem}.ornament{font:2rem var(--serif);color:var(--gold)}.welcome h2,.section-heading h2,.save-date h2,.form-intro h2,.modal h2{margin:.3rem 0 1.5rem;font:400 clamp(3rem,7vw,6rem)/.88 var(--serif)}.welcome p:last-child{font:italic clamp(1.15rem,2vw,1.45rem)/1.7 var(--serif);color:var(--soft)}.countdown-section{padding:7rem 4vw;text-align:center}.dark-section{background:#28271f;color:#f4eee5}.countdown{display:flex;justify-content:center;gap:clamp(1.3rem,8vw,7rem);margin-top:2rem}.countdown div{display:flex;flex-direction:column}.countdown b{font:400 clamp(2.7rem,8vw,6.5rem)/1 var(--serif)}.countdown span{text-transform:uppercase;letter-spacing:.18em;font-size:.58rem;color:#bcb3a6}.save-date{padding:10rem 0}.save-grid{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:3rem}.date-mark{border-left:1px solid var(--line);padding-left:12%;display:grid;width:max-content}.date-mark strong{font:400 clamp(7rem,18vw,14rem)/.55 var(--serif)}.date-mark span{font:italic 5rem var(--serif);color:var(--gold);justify-self:end}.date-mark em{font-style:normal;letter-spacing:.35em}.text-link{border:0;border-bottom:1px solid var(--ink);background:none;padding:.5rem 0;width:max-content;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase}.text-link span{margin-left:1rem}.couple-section,.story-section,.day-section{padding:10rem 6vw;background:var(--ivory)}.section-heading{text-align:center;margin-bottom:7rem}.section-heading .kicker{color:var(--gold)}.person{width:min(1080px,100%);margin:0 auto 10rem;display:grid;grid-template-columns:1.25fr .75fr;align-items:center;gap:8vw}.person img{width:100%;height:min(75vh,820px)}.person h3{font:400 clamp(3rem,7vw,6.5rem)/.9 var(--serif);margin:.3rem 0 1rem}.person small{letter-spacing:.2em;text-transform:uppercase;color:var(--gold)}.person p{color:var(--soft);max-width:380px}.person-bride{grid-template-columns:.75fr 1.25fr}.person-bride img{grid-column:2}.person-bride div{grid-row:1;grid-column:1;text-align:right}.person-bride p{margin-left:auto}.family{padding:10rem 0}.family-grid{display:grid;grid-template-columns:1fr 1fr}.family-side{text-align:center;padding:3rem 6vw}.family-side+article{border-left:1px solid var(--line)}.family-side h3{font:500 1.1rem var(--serif);letter-spacing:.2em}.family-side p{margin:.3rem}.family-side strong{font-weight:400}.family-side address{font-style:normal;color:var(--soft);margin:1.5rem 0}.story-line{position:relative;width:min(1050px,90vw);margin:auto}.story-line:before{content:"";position:absolute;left:50%;height:100%;border-left:1px solid var(--line)}.story-item{display:grid;grid-template-columns:1fr 1fr;gap:8vw;align-items:center;margin-bottom:11rem}.story-item:nth-child(even) .story-photo{grid-column:2}.story-item:nth-child(even) .story-copy{grid-column:1;grid-row:1;text-align:right}.story-photo{position:relative}.story-photo:after{content:"";position:absolute;inset:-15px 15px 15px -15px;border:1px solid var(--line);z-index:-1}.story-photo img{height:560px;width:100%}.story-copy span{font-size:.65rem;text-transform:uppercase;letter-spacing:.2em;color:var(--gold)}.story-copy h3{font:400 clamp(2.5rem,5vw,4.5rem)/1 var(--serif);margin:.5rem 0}.story-copy p{color:var(--soft)}.gallery-section{padding:10rem 0}.gallery{display:grid;grid-template-columns:1.2fr .8fr .8fr;grid-auto-rows:280px;gap:16px}.gallery-item{border:0;padding:0;background:none;overflow:hidden}.gallery-item img{width:100%;height:100%;transition:transform 1s var(--ease)}.gallery-item:hover img{transform:scale(1.03)}.gallery-item:nth-child(1),.gallery-item:nth-child(4){grid-row:span 2}.gallery-item:nth-child(5){grid-column:span 2}.day-section{background:#333129;color:#f7f0e7}.day-line{display:flex;justify-content:space-between;position:relative}.day-line:before{content:"";position:absolute;top:1rem;left:5%;right:5%;border-top:1px solid #f5eee32e}.day-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:.4rem}.day-item i{height:2rem;background:#333129;padding:0 .9rem;font-style:normal;color:#c9a783}.day-item time{font:italic 1.6rem var(--serif)}.day-item span{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase}.dress{text-align:center;border-top:1px solid #fff2;margin:8rem auto 0;padding-top:5rem;max-width:680px}.dress>div{display:flex;justify-content:center;gap:.8rem}.dress span{width:34px;height:34px;border-radius:50%;background:var(--swatch);border:1px solid #fff3}.venues{padding:10rem 0}.venue-list{display:grid;grid-template-columns:repeat(3,1fr)}.venue{padding:3rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.venue+.venue{border-left:1px solid var(--line)}.venue-number{font:italic 1.5rem var(--serif);color:var(--gold)}.venue h3{font:400 2.2rem/1 var(--serif)}.venue p{color:var(--soft);min-height:4rem}.venue time{font-size:.7rem;letter-spacing:.1em}.venue a{display:block;width:max-content;margin-top:2rem;border-bottom:1px solid}.rsvp-section{padding:10rem 0;background:#ded2c2}.form-layout{display:grid;grid-template-columns:.8fr 1.2fr;gap:10vw}.form-intro p:last-child{max-width:380px}.editorial-form{display:grid;gap:1.5rem}.editorial-form label,.editorial-form legend{display:grid;gap:.35rem;font-size:.63rem;letter-spacing:.12em;text-transform:uppercase}.editorial-form input,.editorial-form textarea,.editorial-form select{width:100%;padding:.65rem 0;border:0;border-bottom:1px solid #857865;background:transparent;color:var(--ink);outline:none;border-radius:0}.editorial-form input:focus,.editorial-form textarea:focus,.editorial-form select:focus{border-color:var(--ink);box-shadow:0 1px var(--ink)}.editorial-form fieldset{border:0;padding:0;margin:0;display:grid;gap:.5rem}.editorial-form .choice{display:flex;align-items:center;text-transform:none;letter-spacing:0;font-size:.82rem}.choice input{width:auto;margin-right:.6rem}.primary-btn,.outline-btn{border:1px solid var(--ink);background:var(--ink);color:var(--paper);padding:1rem 1.3rem;text-transform:uppercase;font-size:.68rem;letter-spacing:.15em;transition:.3s}.primary-btn:hover{background:transparent;color:var(--ink)}.primary-btn span{float:right}.form-status{min-height:1.8rem;margin:0;font-size:.75rem}.form-status.success{color:#3e6848}.form-status.error{color:#9b3d35}.wishes{padding:10rem 0}.wishes-wrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:10vw}.wish-list{display:grid;gap:1rem}.wish-note{padding:1.6rem 2rem;background:#f2eadf;transform:rotate(var(--tilt,-.4deg));box-shadow:0 8px 25px #5b4c3920}.wish-note h3{font:italic 1.5rem var(--serif);margin:0}.wish-note p{margin:.3rem 0;color:var(--soft)}.wish-note time{font-size:.58rem;text-transform:uppercase;letter-spacing:.1em}.load-wishes{margin-top:2rem}.gift-call{padding:8rem 6vw;text-align:center;background:#c9b49b}.gift-call>div{max-width:620px;margin:auto}.gift-call p{font:italic 1.6rem var(--serif)}.outline-btn{background:transparent;color:var(--ink)}.outline-btn:hover{background:var(--ink);color:white}.ending{min-height:90vh;display:grid;place-items:center;position:relative;text-align:center;color:white;background:linear-gradient(#18171270,#18171290),var(--ending) center/cover}.ending:after{background:linear-gradient(transparent,#18171288)}.ending>div{position:relative;z-index:1;max-width:760px;padding:3rem}.ending h2{font:italic clamp(2.5rem,7vw,5.5rem)/1 var(--serif)}.ending span{font:italic 2rem var(--serif)}.ending p{letter-spacing:.14em;text-transform:uppercase}.ending time{font-size:.7rem;letter-spacing:.25em}
.floating-trigger{position:fixed;z-index:300;right:22px;top:22px;width:48px;height:48px;border-radius:50%;border:1px solid #ffffff50;background:#292721db;display:grid;place-content:center;gap:6px}.floating-trigger span{display:block;width:18px;border-top:1px solid white}.floating-nav{position:fixed;z-index:290;right:22px;top:80px;width:220px;padding:1.4rem;background:#292721f3;color:white;display:flex;flex-direction:column;transform:translateX(calc(100% + 30px));transition:.5s var(--ease)}.floating-nav.open{transform:none}.floating-nav a,.floating-nav button{padding:.45rem;border:0;background:none;text-align:left;font-size:.72rem}.utility{position:fixed;z-index:280;right:18px;bottom:18px;display:flex;gap:.6rem}.utility button{border:1px solid #fff4;border-radius:999px;background:#292721e8;color:#fff;padding:.65rem .9rem;font-size:.62rem}.music-btn i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#aaa;margin-right:.4rem}.music-btn[aria-pressed=true] i{background:#d2b58f;animation:pulse 1s infinite}.modal,.lightbox{position:fixed;z-index:800;inset:0;background:#171510aa;display:grid;place-items:center;padding:20px}.modal[hidden],.lightbox[hidden]{display:none}.modal-panel{position:relative;background:var(--paper);width:min(720px,100%);max-height:92vh;overflow:auto;padding:clamp(2rem,6vw,4.5rem);box-shadow:0 30px 80px #0005}.modal-close,.lightbox-close{position:absolute;right:18px;top:12px;border:0;background:none;font:2rem var(--serif);z-index:2}.bank-tabs{display:flex;border-bottom:1px solid var(--line);margin:2rem 0}.bank-tabs button{flex:1;border:0;background:none;padding:1rem .3rem;font-size:.7rem}.bank-tabs button[aria-selected=true]{border-bottom:2px solid var(--gold)}.bank-panel{display:grid;grid-template-columns:260px 1fr;gap:2rem}.bank-panel div{display:grid;align-content:center}.bank-panel small{text-transform:uppercase;letter-spacing:.12em;color:var(--soft);font-size:.55rem;margin-top:.6rem}.copy-btn{margin-top:1.2rem;border:1px solid;padding:.7rem;background:none;font-size:.65rem}.gift-confirm{border-top:1px solid var(--line);margin-top:2rem;padding-top:1.5rem}.gift-confirm summary{cursor:pointer;font:italic 1.15rem var(--serif);margin-bottom:1.5rem}.lightbox{background:#111e}.lightbox img{max-width:88vw;max-height:88vh}.lightbox button{position:absolute;border:0;background:none;color:white;font-size:3rem}.lightbox-close{right:24px;top:12px}.lightbox-prev{left:20px}.lightbox-next{right:20px}.toast{position:fixed;z-index:1001;bottom:25px;left:50%;transform:translate(-50%,30px);background:#292721;color:white;padding:.7rem 1rem;opacity:0;transition:.3s;pointer-events:none;font-size:.75rem}.toast.show{opacity:1;transform:translate(-50%,0)}
.js .reveal{opacity:0;transform:translateY(16px);transition:opacity 1.15s var(--ease),transform 1.15s var(--ease)}.js .reveal.visible{opacity:1;transform:none}@keyframes breathe{50%{opacity:.4;transform:scale(.96)}}@keyframes pulse{50%{box-shadow:0 0 0 6px #d2b58f22}}
@media(max-width:800px){.hero{background-position:66% center}.hero-content{padding:0 7vw 18vh}.hero h1{font-size:4rem}.hero h1 i{margin-left:30%}.welcome{padding:10rem 0 7rem}.countdown{gap:1.1rem}.save-grid{grid-template-columns:1fr}.date-mark{margin-left:auto}.couple-section,.story-section,.day-section{padding:7rem 6vw}.section-heading{margin-bottom:4rem}.person,.person-bride{grid-template-columns:1fr;gap:2rem;margin-bottom:7rem}.person img,.person-bride img{grid:1/1;height:65vh}.person div,.person-bride div{grid:auto;text-align:left}.person-bride p{margin-left:0}.family-grid{grid-template-columns:1fr}.family-side+article{border-left:0;border-top:1px solid var(--line)}.story-line:before{left:10px}.story-item,.story-item:nth-child(even){grid-template-columns:1fr;gap:2rem;padding-left:35px;margin-bottom:7rem}.story-item .story-photo,.story-item:nth-child(even) .story-photo{grid-column:1;grid-row:auto}.story-item .story-copy,.story-item:nth-child(even) .story-copy{grid-column:1;grid-row:auto;text-align:left}.story-photo img{height:55vh}.gallery{grid-template-columns:1fr 1fr;grid-auto-rows:230px}.gallery-item:nth-child(1),.gallery-item:nth-child(4){grid-row:span 1}.gallery-item:nth-child(3){grid-row:span 2}.gallery-item:nth-child(5){grid-column:span 1}.day-line{flex-direction:column;align-items:flex-start;padding-left:2rem;gap:2.5rem}.day-line:before{top:0;bottom:0;left:2.95rem;height:auto;border-top:0;border-left:1px solid #fff2}.day-item{display:grid;grid-template-columns:2rem 4.5rem auto;align-items:center}.day-item i{padding:0;background:#333129}.venue-list{grid-template-columns:1fr}.venue+.venue{border-left:0;border-top:0}.form-layout,.wishes-wrap{grid-template-columns:1fr;gap:4rem}.rsvp-section,.wishes,.venues,.family,.gallery-section{padding:7rem 0}.bank-panel{grid-template-columns:1fr}.bank-panel img{margin:auto;width:min(260px,70vw)}.utility{right:12px;bottom:12px}.utility .auto-btn span{display:none}.invite-guest{top:9%}}
@media(max-width:430px){.envelope{width:92vw}.wax{width:62px;height:62px}.open-hint{bottom:12%}.hero h1{font-size:3.4rem}.countdown b{font-size:2.4rem}.countdown{gap:.75rem}.gallery{gap:8px;grid-auto-rows:190px}.venue{padding:2rem 1rem}.floating-nav{right:12px}.modal{padding:8px}.modal-panel{max-height:96vh;padding:2rem 1.2rem}.bank-tabs button{font-size:.6rem}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition-duration:.01ms!important}.js .reveal{opacity:1;transform:none}.invitation.opened{transition-delay:.1s}.opened .envelope-letter{transform:none}}

/* The author-level grid rule must never override the semantic hidden state. */
.bank-panel[hidden]{display:none}.bank-tabs [role="tab"]{min-height:44px}.bank-tabs [role="tab"]:focus-visible{outline:1px solid var(--gold);outline-offset:3px}.gift-receiver-note{margin:.25rem 0;font:italic 1rem var(--serif);color:var(--soft)}.gift-receiver-note strong{color:var(--ink);font-weight:500}
