:root{--ivory:#f5f0e9;--paper:#fbf8f2;--ink:#502438;--wine:#5b102a;--wine-dark:#430e22;--rose:#ad9791;--muted:#8d7379;--lace:#e8ded4;--sans:'Jost',Arial,sans-serif;--serif:'Cormorant Garamond',Georgia,serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--serif);-webkit-font-smoothing:antialiased;overflow-x:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit}button:focus-visible,a:focus-visible{outline:2px solid #b98571;outline-offset:5px}.skip-link{position:absolute;top:-100px;left:1rem;background:white;padding:.6rem 1rem;z-index:100}.skip-link:focus{top:1rem}.eyebrow{font:500 .67rem/1.7 var(--sans);letter-spacing:.25em;text-transform:uppercase;color:var(--muted)}.eyebrow.light{color:#eedcda}.section-inner{width:min(100% - 48px,600px);margin:auto;text-align:center;position:relative;z-index:2}.parchment{background:radial-gradient(ellipse at 50% 10%,rgba(255,255,255,.95),transparent 65%),repeating-linear-gradient(95deg,rgba(107,67,57,.018) 0 1px,transparent 1px 6px),var(--paper)}h1,h2,h3,p{margin-top:0}h2{font:500 clamp(3.3rem,12vw,5.4rem)/.95 var(--serif);margin:0 0 1.1rem;letter-spacing:-.035em}h3{font:500 1.8rem/1.1 var(--serif);margin-bottom:.55rem}.section-lead{font:400 1.34rem/1.5 var(--serif);max-width:340px;margin:0 auto 2rem}.outline-button,.solid-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.83rem 1.6rem;border:1px solid #a88b8a;border-radius:100px;background:transparent;color:var(--ink);font:500 .66rem/1.3 var(--sans);letter-spacing:.15em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:background .25s,color .25s,transform .25s;gap:1.2rem}.outline-button:not(:disabled):hover{background:var(--wine);color:white;transform:translateY(-2px)}.outline-button:disabled,.disabled-link{opacity:.52;cursor:not-allowed}.solid-button{color:#fff;background:var(--wine);border-color:var(--wine);min-width:235px}.solid-button:not(.disabled-link):hover{background:#7e2442;transform:translateY(-2px)}.action-note{font:400 .66rem/1.65 var(--sans);letter-spacing:.025em;color:#937e81;margin:1rem auto 0;max-width:280px}.cover-section{min-height:100vh;min-height:100svh;position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:100px 36px 95px;overflow:hidden;text-align:center;color:#f8eee7;background:radial-gradient(ellipse at 50% 40%,#792744 0%,#611832 45%,#430e24 100%)}.cover-section:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(45deg,transparent 0 32px,rgba(255,236,222,.025) 32px 33px,transparent 33px 64px),repeating-linear-gradient(-45deg,transparent 0 32px,rgba(255,236,222,.022) 32px 33px,transparent 33px 64px);pointer-events:none;z-index:-1}.cover-frame{position:absolute;inset:20px 17px;border:1px solid rgba(239,209,200,.45);border-radius:140px 140px 12px 12px;pointer-events:none}.cover-frame:after{content:"";position:absolute;inset:8px;border:1px dotted rgba(239,209,200,.22);border-radius:133px 133px 8px 8px}.cover-lace{position:absolute;left:0;width:100%;height:75px;background:url('assets/images/lace-divider.svg') center top/auto 78px repeat-x;opacity:.5;filter:brightness(1.95) sepia(.25);pointer-events:none}.cover-lace-top{top:0}.cover-lace-bottom{bottom:0;transform:rotate(180deg)}.cover-content{position:relative;z-index:1;width:min(100%,500px);margin:auto}.cover-eyebrow{font:400 .64rem/1.6 var(--sans);letter-spacing:.23em;text-transform:uppercase;color:#e8d0d4;margin:0 auto 2rem}.cover-ornament{width:145px;height:auto;opacity:.8;filter:brightness(0) invert(.93) sepia(.12);margin:0 auto 1rem}.cover-pretitle{font:italic 1.55rem/1.35 var(--serif);margin:0 0 1.25rem;color:#f1dce0}.cover-names{font:500 clamp(3.4rem,13vw,6.4rem)/.87 var(--serif);letter-spacing:-.055em;overflow-wrap:anywhere;text-wrap:balance}.cover-names span{display:block}.cover-names em{display:block;font:italic 400 .46em/1.2 var(--serif);letter-spacing:0;padding:.3em 0}.cover-rule{display:flex;align-items:center;gap:13px;width:145px;margin:2.1rem auto 1.3rem;color:#dabbc1}.cover-rule:before,.cover-rule:after{content:"";height:1px;flex:1;background:#b98e9e}.cover-date{font:400 .74rem/1.7 var(--sans);letter-spacing:.19em;text-transform:uppercase;margin:0;color:#f9ebeb}.cover-message{font:italic 1.35rem var(--serif);color:#e6cbd1;margin:1.15rem 0 0}.cover-scroll{position:relative;z-index:2;display:inline-flex;flex-direction:column;align-items:center;gap:5px;text-decoration:none;text-transform:uppercase;letter-spacing:.17em;font:400 .58rem/1.5 var(--sans);color:#f0d9dc;padding:16px 18px;min-height:52px;margin-top:2.25rem}.cover-scroll span{font:1.3rem var(--serif)}.cover-scroll:hover{color:white}@media(max-height:700px){.cover-section{padding-top:80px;padding-bottom:65px}.cover-eyebrow{margin-bottom:1rem}.cover-ornament{width:110px}.cover-rule{margin:1.3rem auto .9rem}.cover-scroll{margin-top:1rem}}.invitation-section{padding:105px 0 115px;position:relative}.lace-top{position:absolute;top:0;left:0;width:100%;height:68px;background:url('assets/images/lace-divider.svg') center top/auto 75px repeat-x;opacity:.7;pointer-events:none}.hero-inner .eyebrow{margin:0 0 2.3rem}.rings-icon{display:block;margin:0 auto 1.4rem;opacity:.77}.invitation-phrase{font:italic 1.35rem/1.35 var(--serif);margin-bottom:2rem;color:#795765}.names{font:500 clamp(3.6rem,14vw,6.7rem)/.88 var(--serif);letter-spacing:-.065em;margin:0 auto 1.9rem;overflow-wrap:anywhere}.names span{display:block}.names em{display:block;font:italic 400 .48em/1.2 var(--serif);padding:.22em 0;letter-spacing:0}.short-rule{width:52px;height:1px;background:#a18a82;margin:1rem auto 1.7rem}.invitation-date{font:500 .77rem/1.7 var(--sans);letter-spacing:.19em;text-transform:uppercase;margin:0}.invitation-time{font:400 1.4rem var(--serif);margin:.55rem 0 1.2rem}.ornament{display:block;max-width:65%;margin:1rem auto 0;opacity:.67}.fine-italic{font:italic 1.35rem var(--serif);margin:0}.burgundy-section{background:radial-gradient(ellipse at 48% 35%,#751b3c 0,#5b102a 58%,#410b20 100%);color:#f9eee9;position:relative;overflow:hidden}.burgundy-section:before,.burgundy-section:after{content:'❧';font:17rem var(--serif);color:#aa5d75;position:absolute;opacity:.12;line-height:1}.burgundy-section:before{top:4%;left:-70px}.burgundy-section:after{bottom:0;right:-70px;transform:rotate(180deg)}.lace-on-dark{position:absolute;height:76px;left:0;right:0;top:-1px;background:url('assets/images/lace-divider.svg') center top/auto 82px repeat-x;filter:brightness(2);opacity:.5}.countdown-section{padding:118px 0 104px}.bow-icon{display:block;width:130px;height:75px;margin:0 auto 1.5rem;opacity:.73}.countdown-section h2{font-size:clamp(3.1rem,12vw,5rem)}.countdown-grid{display:grid;grid-template-columns:repeat(4,1fr);max-width:440px;margin:2.5rem auto 1.2rem;gap:6px}.countdown-grid div{display:flex;flex-direction:column;gap:.25rem}.countdown-grid strong{font:400 clamp(2rem,9vw,4.2rem)/1 var(--serif);font-variant-numeric:tabular-nums}.countdown-grid span{font:400 .56rem var(--sans);letter-spacing:.16em;text-transform:uppercase;color:#ead5da}.dark-note{font:italic 1.25rem var(--serif);color:#f0dce3;margin:1.8rem 0 0}.detail-section{padding:110px 0 105px}.schedule{position:relative;text-align:left;width:min(100%,380px);margin:2.7rem auto}.schedule:before{content:'';position:absolute;left:27px;top:25px;bottom:25px;width:1px;background:#d9c7c0}.schedule-item{display:flex;gap:30px;align-items:flex-start;position:relative;margin:0 0 2.4rem}.schedule-number{flex:0 0 55px;height:55px;display:grid;place-items:center;border:1px solid #d7bbb6;border-radius:50%;background:var(--paper);font:italic 1.35rem var(--serif);color:#957a7b}.schedule-item h3{margin:0 0 .5rem}.schedule-item p{font:400 1.12rem/1.45 var(--serif);margin:.1rem 0;color:#715861}.button-row{margin-top:.3rem}.venue-section{padding:85px 0 120px}.venue-drawing{display:block;width:min(69%,280px);height:auto;margin:1.7rem auto 0;opacity:.87}.venue-name{font:italic 500 2.6rem/1.1 var(--serif);margin:0 0 .7rem}.venue-address{font:400 1.12rem/1.45 var(--serif);margin:0 0 1.5rem}.venue-lead{font-size:1.18rem}.information-section{padding:117px 0 115px}.information-section h2{margin-bottom:3rem}.info-block{max-width:365px;margin:0 auto}.info-block h3{font:italic 500 2.25rem var(--serif);margin:0 0 .7rem}.info-block p{font:400 1.16rem/1.55 var(--serif);margin:.35rem auto;color:#f6e3e7}.small-divider{display:block;font:1.5rem var(--serif);margin:1.7rem auto;color:#e2bcc9}.rsvp-section{padding:125px 0 90px}.rsvp-section h2{font-size:5.7rem}.rsvp-by{font:italic 1.33rem var(--serif);margin:1rem 0 1.6rem}.end-ornament{margin-top:3rem}.closing{font:italic 1.4rem/1.4 var(--serif);margin:0}.closing span{font-size:1.7rem}.footer{text-align:center;padding:24px 20px 34px;background:#f0e8df;display:flex;flex-direction:column;align-items:center;gap:7px;color:#8d7078}.footer p,.footer a{margin:0;font:400 .65rem var(--sans);letter-spacing:.08em}.footer a{text-decoration:none}.reveal{opacity:1;transform:none}@media(prefers-reduced-motion:no-preference){.js .reveal{opacity:0;transform:translateY(24px);transition:opacity .85s ease,transform .85s ease}.js .reveal.is-visible{opacity:1;transform:translateY(0)}}@media(min-width:700px){.cover-section{min-height:850px}.invitation-section{padding:138px 0 165px}.detail-section,.venue-section,.information-section,.rsvp-section{padding-top:150px;padding-bottom:150px}.countdown-section{padding:165px 0 145px}.section-inner{width:min(100% - 60px,600px)}.names{font-size:6.8rem}.venue-drawing{width:310px}}@media(max-width:370px){.section-inner{width:calc(100% - 36px)}.names{font-size:3.4rem}.countdown-grid strong{font-size:2rem}.cover-section{padding:76px 27px 65px}.cover-frame{inset:15px 12px}.cover-names{font-size:3.2rem}.cover-eyebrow{letter-spacing:.14em}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
/* Inline RSVP form: inherits the invitation's lace-and-parchment design. */
.rsvp-form{width:min(100%,400px);margin:2rem auto 0;text-align:left;display:grid;gap:1.45rem}.rsvp-field{display:grid;gap:.5rem}.rsvp-field label,.rsvp-choices legend{font:500 .69rem/1.5 var(--sans);color:#633848;letter-spacing:.12em;text-transform:uppercase}.rsvp-field input,.rsvp-field select{font:400 1.14rem/1.4 var(--serif);padding:12px 15px;width:100%;min-height:51px;border:1px solid #c7afa7;border-radius:2px;background:#fffdfa;color:#4b2735}.rsvp-field input:focus,.rsvp-field select:focus{outline:2px solid #8b4660;outline-offset:2px}.rsvp-choices{margin:0;padding:0;border:none;display:grid;gap:11px}.rsvp-choices legend{margin-bottom:12px}.rsvp-choice{display:flex;align-items:center;gap:10px;padding:12px 15px;border:1px solid #dbc5bd;cursor:pointer;min-height:52px;font:italic 1.4rem/1 var(--serif);background:#fffaf4;color:var(--ink)}.rsvp-choice:has(input:checked){border-color:#812e4a;background:#f5e9e7}.rsvp-choice input{width:18px;height:18px;accent-color:#812e4a}.rsvp-form .solid-button{width:100%;margin-top:.4rem}.rsvp-status{text-align:center;font:400 .77rem/1.5 var(--sans);color:#856c71;margin:-.5rem 0 0}.rsvp-status[data-state="error"]{color:#952b32}.rsvp-success{width:min(100%,400px);margin:2rem auto;text-align:center;padding:1.5rem 1rem;border:1px solid #d9bab4}.rsvp-success img{width:110px;height:auto}.rsvp-success h3{font:italic 2.5rem var(--serif);margin:.5rem 0}.rsvp-success p{font:1.23rem/1.4 var(--serif)}.rsvp-success button{margin-top:1rem}.rsvp-trap{position:absolute!important;left:-10000px!important;top:auto!important;width:1px!important;height:1px!important;overflow:hidden!important}[hidden]{display:none!important}

/* Original-style envelope cover: progressive opening via --open (0 to 1). */
html.invitation-locked{overflow:hidden;overscroll-behavior:none}
.invitation-locked body{position:fixed;inset:0;width:100%;overflow:hidden}
.invitation-locked .envelope-stage{min-height:0;height:100vh;height:100dvh}
.envelope-cover{height:185vh;height:185svh;position:relative;background:var(--wine-dark)}
.envelope-stage{--open:0;position:sticky;top:0;height:100vh;height:100svh;min-height:480px;overflow:hidden;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:clamp(46px,8svh,84px) 22px clamp(22px,4svh,44px);background:radial-gradient(ellipse at 50% 47%,#842a48 0%,#601830 53%,#3e0d23 100%);color:#f5e7df;text-align:center}
.envelope-stage:before{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(45deg,transparent 0 32px,rgba(255,236,222,.027) 32px 33px,transparent 33px 64px),repeating-linear-gradient(-45deg,transparent 0 32px,rgba(255,236,222,.023) 32px 33px,transparent 33px 64px)}
.envelope-background-lace{position:absolute;left:0;right:0;height:72px;pointer-events:none;background:url('assets/images/lace-divider.svg') center top/auto 75px repeat-x;filter:brightness(2);opacity:.58}
.envelope-background-lace--top{top:0}.envelope-background-lace--bottom{bottom:0;transform:rotate(180deg)}
.envelope-frame{position:absolute;inset:17px 14px;border:1px solid rgba(246,217,207,.32);border-radius:115px 115px 10px 10px;pointer-events:none}
.envelope-heading{position:relative;z-index:2;flex:0 0 auto}.envelope-heading-kicker{font:500 .6rem/1.6 var(--sans);text-transform:uppercase;letter-spacing:.24em;color:#f4dfdf;margin:0 0 4px}.envelope-heading img{display:block;width:100px;height:auto;margin:0 auto;filter:brightness(0) invert(.9);opacity:.8}.envelope-heading-subtitle{font:italic clamp(1.15rem,4vw,1.5rem)/1.1 var(--serif);margin:0;color:#f8e8e5}
.envelope-art{position:relative;z-index:2;flex:0 1 auto;width:min(83vw,410px);aspect-ratio:1.22;max-height:43svh;filter:drop-shadow(0 16px 25px rgba(24,5,13,.25));perspective:900px;transform:translateY(calc(var(--open) * 11px));will-change:transform}
.envelope-back{position:absolute;left:0;right:0;bottom:0;height:70%;border:1px solid #d5b9ad;border-radius:3px;background:linear-gradient(135deg,#f0e5d9,#d9c2b8 54%,#e9d8ce);box-shadow:0 12px 26px rgba(23,3,12,.2)}
.envelope-back:before{content:"";position:absolute;inset:4px;border:1px solid rgba(137,88,91,.24)}
.envelope-flap{position:absolute;left:0;right:0;top:30%;height:43%;z-index:5;transform-origin:top center;transform:rotateX(calc(var(--open) * -179deg));backface-visibility:visible;clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(180deg,#f6ede5,#ddc5bb);filter:drop-shadow(0 3px 2px rgba(75,31,42,.14))}
.envelope-art.flap-lifted .envelope-flap{z-index:1}
/* Keep the closed card within the envelope body (30%–100% of the artwork). */
.envelope-letter{position:absolute;z-index:2;left:8%;width:84%;height:64%;top:33%;background:radial-gradient(ellipse at top,#fffcf7,#f1e7da);border:1px solid #d6bdb1;box-shadow:0 0 0 6px rgba(255,255,255,.3) inset;transform:translateY(calc(var(--open) * -80%));will-change:transform;overflow:hidden}
.envelope-letter-inner{position:absolute;inset:7px;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:8px 9px;border:1px solid rgba(147,104,97,.25);color:#653246}
.envelope-letter-kicker{font:400 .59rem/1.4 var(--sans);text-transform:uppercase;letter-spacing:.16em;margin-bottom:7px}.envelope-letter-name{font:500 clamp(1.35rem,5.7vw,2.55rem)/.9 var(--serif);letter-spacing:-.04em;max-width:100%;overflow-wrap:anywhere}.envelope-letter-amp{font:italic 1.35rem/1 var(--serif);margin:2px}.envelope-letter-rule{color:#ae7684;margin:4px}.envelope-letter-date{font:500 .53rem/1.5 var(--sans);letter-spacing:.08em;text-transform:uppercase;overflow-wrap:anywhere}
.envelope-pocket{position:absolute;z-index:4;left:0;right:0;bottom:0;height:70%;background:linear-gradient(145deg,#f0e0d5 0%,#dbc2ba 56%,#e3cec3 100%);clip-path:polygon(0 0,50% 62%,100% 0,100% 100%,0 100%)}
.envelope-pocket:after{content:"";position:absolute;inset:9px;border-bottom:1px solid rgba(133,80,84,.25)}
.envelope-seal{position:absolute;z-index:6;left:50%;top:67%;width:54px;height:54px;display:grid;place-items:center;transform:translate(-50%,-50%) scale(calc(1 - var(--open) * .25));opacity:calc(1 - var(--open) * 2);background:radial-gradient(circle at 32% 25%,#a24458,#6a152f 68%,#51142a);border:5px double #bc7080;border-radius:48% 52% 50% 48%;box-shadow:0 4px 12px rgba(78,21,41,.3);color:#edd2c9;font:1.15rem var(--serif);pointer-events:none}
.envelope-actions{position:relative;z-index:7;display:grid;justify-items:center;gap:12px;margin-top:4px;flex:0 0 auto}.envelope-open-button{display:inline-flex;align-items:center;justify-content:center;gap:20px;min-height:51px;min-width:215px;padding:12px 22px;border:1px solid #f0d3cf;border-radius:100px;background:#f3e8df;color:#5b2136;text-decoration:none;font:500 .66rem/1.5 var(--sans);letter-spacing:.17em;text-transform:uppercase;transition:background .2s,transform .2s}.envelope-open-button:hover{background:#fff8f3;transform:translateY(-2px)}.envelope-scroll-hint{font:400 .57rem/1.4 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:#eed4d7;margin:0}.envelope-scroll-hint span{font-size:.95rem;margin-left:6px}
@media(min-width:700px){.envelope-art{width:min(40vw,410px);max-height:48svh}.envelope-stage{padding-top:clamp(55px,9svh,95px);padding-bottom:clamp(32px,6svh,70px)}}
@media(max-height:620px){.envelope-stage{padding-top:27px;padding-bottom:18px}.envelope-heading img{width:72px}.envelope-art{max-height:45svh;width:min(72vw,320px)}.envelope-heading-subtitle{font-size:1.15rem}.envelope-actions{gap:6px}.envelope-open-button{min-height:44px}}
@media(prefers-reduced-motion:reduce){.envelope-art,.envelope-flap,.envelope-letter,.envelope-seal{will-change:auto}.envelope-open-button{transition:none}}
