@font-face{font-family:Garden Serif;src:url('./assets/garden-serif.woff') format('woff');font-display:swap}
@font-face{font-family:Garden Italic;src:url('./assets/garden-italic.woff') format('woff');font-display:swap}
@font-face{font-family:Garden Script;src:url('./assets/garden-script.woff') format('woff');font-display:swap}
:root{--paper:#f8f5ee;--cream:#eeebe2;--ink:#2e4a52;--blue:#7097a4;--deep:#496f7e;--muted:#526c72;--line:#b8c7c7;--gold:#997b52;--serif:'Garden Serif',Georgia,serif;--italic:'Garden Italic',Georgia,serif;--script:'Garden Script','Palatino Linotype',serif;--sans:Arial,Helvetica,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:105px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:19px;-webkit-font-smoothing:antialiased}body.sealed{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:default}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--deep);outline-offset:6px}h1,h2,h3,p{margin:0}ul{list-style:none;padding:0;margin:0}img{display:block;max-width:100%}button{color:inherit}svg{display:block;flex-shrink:0}[hidden]{display:none!important}::selection{background:#c2d4d8;color:var(--ink)}.site{visibility:visible}.sealed .site{visibility:hidden}.eyebrow{font:10px/1.6 var(--sans);letter-spacing:3px;text-transform:uppercase}.label{font:10px/1.6 var(--sans);letter-spacing:2px;text-transform:uppercase;color:var(--muted)}.italic{font-family:var(--italic);font-style:italic}.script{font-family:var(--script);font-weight:400}.section{padding:95px 28px;max-width:1040px;margin:auto}.section-heading{text-align:center;margin:0 auto 50px;max-width:600px}.section-heading h2{font-weight:400;font-size:clamp(36px,4.5vw,52px);line-height:1.13;letter-spacing:-1px;margin:18px 0}.section-heading p:last-child{font-family:var(--italic);font-size:20px;line-height:1.5;color:var(--muted)}.sprig-divider{width:104px;height:51px;object-fit:contain;margin:28px auto}.fine-line{width:42px;height:1px;background:var(--gold);margin:24px auto}.button{display:inline-flex;align-items:center;justify-content:center;gap:15px;border:1px solid var(--deep);background:var(--deep);color:#fffdf8;border-radius:0;padding:18px 26px;font:10px/1.4 var(--sans);letter-spacing:2px;text-transform:uppercase;min-height:50px;transition:background .2s,transform .2s}.button:hover{background:#355765;transform:translateY(-2px)}.button svg{width:18px;height:18px}.text-link{display:inline-flex;align-items:center;gap:12px;font:10px/1.5 var(--sans);letter-spacing:1.8px;text-transform:uppercase;border-bottom:1px solid var(--line);padding-bottom:8px}.text-link svg{width:16px;height:16px}.opening{position:fixed;z-index:100;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:auto;background-color:var(--paper);background-image:radial-gradient(ellipse at 30% 40%,#ffffff9c,transparent 58%),repeating-linear-gradient(92deg,#69818803 0 1px,transparent 1px 6px);text-align:center;padding:35px 24px;gap:24px}.opening:before,.opening:after{content:'';position:absolute;width:320px;height:600px;background:url('./assets/botanical-side.svg') center/contain no-repeat;opacity:.17;pointer-events:none;z-index:-1}.opening:before{left:-165px;bottom:-90px;transform:rotate(20deg)}.opening:after{right:-150px;top:-135px;transform:rotate(185deg)}.opening-heading{font-size:clamp(35px,4.5vw,49px);font-weight:400;line-height:1.13;margin-top:10px}.opening-heading em{font-family:var(--italic);font-weight:400}.opening-copy{max-width:510px}.opening-copy .eyebrow{color:var(--muted)}.envelope-scene{position:relative;perspective:1600px;width:min(440px,81vw);height:284px;margin:45px 0 3px;flex-shrink:0;transform:rotate(-2deg);isolation:isolate}.envelope-shadow{position:absolute;inset:auto -2% -16px 2%;height:45px;background:#263f4b35;filter:blur(18px);border-radius:50%;transform:rotate(-1deg);z-index:-1}.envelope-back{position:absolute;inset:0;background:#6d94a3;border:1px solid #628493;border-radius:3px;box-shadow:0 14px 22px #23394317;overflow:hidden}.liner{position:absolute;width:90%;height:90%;left:5%;top:5%;background-color:#e3e9e5;background-image:url('./assets/liner.svg');background-size:125px}.envelope-letter{position:absolute;inset:8% 8% 5%;z-index:1;background:#fffcf4;border:1px solid #d0d6cd;box-shadow:0 5px 15px #39576a25;display:flex;flex-direction:column;justify-content:center;align-items:center;opacity:0;transform:translateY(0);padding:20px}.envelope-letter:before{content:'';position:absolute;inset:10px;border:1px solid #b4c5be}.letter-names{font-family:var(--script);font-size:40px;line-height:1.1;margin:12px 0;color:var(--deep)}.letter-names span{font-family:var(--italic);font-size:21px;margin:0 6px}.envelope-letter .eyebrow{font-size:8px;letter-spacing:2px}.letter-sprig{width:86px;height:35px}.fold{position:absolute;inset:0;pointer-events:none;z-index:3}.fold-left{background:linear-gradient(115deg,#7a9da9,#648a9a);clip-path:polygon(0 0,54% 55%,0 100%)}.fold-right{background:linear-gradient(255deg,#7d9fab,#688f9f);clip-path:polygon(100% 0,46% 55%,100% 100%)}.fold-bottom{background:linear-gradient(0deg,#7197a7,#80a4af);clip-path:polygon(0 100%,50% 43%,100% 100%)}.fold-bottom:after{content:'';position:absolute;inset:1px;background:linear-gradient(0deg,#ffffff0a,transparent);clip-path:inherit}.envelope-flap{position:absolute;left:0;right:0;top:0;height:61%;z-index:4;transform-origin:50% 0;transform:rotateX(0);background:linear-gradient(175deg,#81a4b0,#6a93a2);clip-path:polygon(0 0,100% 0,50% 100%);backface-visibility:hidden;filter:drop-shadow(0 2px 1px #304b5b40)}.envelope-flap-inner{position:absolute;left:0;right:0;top:0;height:61%;z-index:0;transform-origin:50% 0;transform:rotateX(0);opacity:0;background:#e3e9e5 url('./assets/liner.svg') center/125px;clip-path:polygon(0 0,100% 0,50% 100%);backface-visibility:visible}.wax-seal{position:absolute;left:calc(50% - 36px);top:calc(52% - 19px);z-index:6;width:72px;height:72px;border-radius:47% 50% 44% 49%;border:1px solid #816a54;background:radial-gradient(ellipse at 27% 20%,#d6c8aa,#ac9679 54%,#87755d 87%);box-shadow:3px 6px 8px #293f4845,inset 1px 2px 2px #fff5dba8,inset -2px -2px 2px #736451;font-family:var(--italic);font-size:28px;text-shadow:0 1px 1px #e8dccb;color:#67584a;transition:transform .2s}.wax-seal:before{content:'';position:absolute;inset:8px;border:1px solid #8e795d;border-radius:50%;box-shadow:0 1px 1px #e6d5ba,inset 1px 1px 3px #85735966}.wax-seal:after{content:'';position:absolute;inset:11px;border:1px solid #ddd0b067;border-radius:50%}.wax-seal span{position:relative;z-index:1;letter-spacing:-4px;padding-right:5px}.wax-seal:hover{transform:scale(1.06)}.opening-actions{display:flex;flex-direction:column;align-items:center;gap:14px}.music-preference{display:flex;align-items:center;justify-content:center;gap:8px;border:0;background:transparent;padding:10px 15px;font:11px/1.4 var(--sans);color:var(--muted);min-height:40px}.music-preference svg{height:14px;width:14px}.music-preference[aria-pressed=false] .music-note{opacity:.45}.opening-foot{font-family:var(--italic);font-size:18px;color:var(--muted);margin-top:2px}.is-opening .wax-seal{animation:seal-break .35s forwards;pointer-events:none}.is-opening .envelope-flap{animation:flap-open .75s .2s ease-in-out forwards}.is-opening .envelope-flap-inner{animation:liner-open .75s .2s ease-in-out forwards}.is-opening .envelope-letter{animation:letter-rise 1.15s .55s cubic-bezier(.22,.7,.2,1) forwards}.is-opening .envelope-scene{animation:envelope-away .75s 1.15s ease forwards}.opening.is-opening{animation:gate-fade .45s 1.45s ease forwards;pointer-events:none}.is-opening .opening-actions,.is-opening .opening-copy,.is-opening .opening-foot{transition:opacity .3s;opacity:0}@keyframes seal-break{to{opacity:0;transform:translateY(12px) scale(.92)}}@keyframes flap-open{50%{transform:rotateX(90deg)}100%{transform:rotateX(180deg);z-index:0}}@keyframes liner-open{0%{transform:rotateX(0);opacity:0}49%{opacity:0}51%{opacity:1}100%{transform:rotateX(180deg);opacity:1}}@keyframes letter-rise{0%{opacity:0;transform:translateY(0)}15%{opacity:1}100%{opacity:1;transform:translateY(-148px)}}@keyframes envelope-away{to{transform:rotate(0deg) translateY(40px) scale(1.05)}}@keyframes gate-fade{to{opacity:0}}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:25px;padding:19px 5vw;background:#f8f5eeef;border-bottom:1px solid #8ca5ac30}.brand{font-family:var(--italic);font-size:22px;letter-spacing:3px;white-space:nowrap}.brand span{font-size:15px;letter-spacing:1px;color:var(--gold)}.nav-links{display:flex;gap:28px;font:10px/1.5 var(--sans);letter-spacing:1.4px;text-transform:uppercase}.nav-links a{padding:7px 0;border-bottom:1px solid transparent}.nav-links a:hover{border-color:var(--gold)}.replay{border:0;background:transparent;font:10px/1.5 var(--sans);text-transform:uppercase;letter-spacing:1px;display:flex;align-items:center;gap:8px;padding:8px 0}.replay svg{width:19px;height:19px}.hero{position:relative;text-align:center;padding:65px 25px 70px;overflow:hidden;isolation:isolate}.hero:before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 60%,#dce5e337,transparent 60%);z-index:-2}.hero-botanical{position:absolute;top:145px;height:650px;width:280px;left:calc(50% - 545px);opacity:.67;pointer-events:none;transform:rotate(-8deg);z-index:-1}.hero-botanical.right{left:auto;right:calc(50% - 545px);transform:scaleX(-1) rotate(-8deg)}.hero-paper{position:relative;background:#fffdf780;border:1px solid #b8c7c7;border-radius:48% 48% 1px 1px / 37% 37% 0 0;max-width:620px;min-height:640px;margin:0 auto;padding:84px 38px 45px;box-shadow:0 16px 35px #31546206}.hero-paper:before{content:'';position:absolute;inset:10px;border:1px solid #b8c7c75c;border-radius:inherit;pointer-events:none}.hero-paper .eyebrow{font-size:9px;letter-spacing:2.6px}.hero-sprig{width:135px;height:62px;margin:0 auto 20px;opacity:.9}.couple-heading{font-family:var(--script);font-weight:400;font-size:clamp(62px,7.9vw,99px);line-height:1;letter-spacing:-1px;outline:none;margin:23px 0 16px}.couple-heading .couple-name{display:block}.couple-heading .ampersand{display:block;font-family:var(--italic);font-size:38px;line-height:1.12;color:var(--gold);padding:7px 0 12px}.full-names{font-size:16px;line-height:1.65;letter-spacing:.5px}.full-names span{display:block}.full-names span+span:before{content:'& ';color:var(--gold)}.hero-message{font-family:var(--italic);font-size:19px;line-height:1.5;max-width:350px;margin:22px auto 25px}.date-note{font:9px/1.5 var(--sans);letter-spacing:2px;text-transform:uppercase;color:var(--muted)}.hero-scroll{margin:32px auto 0;color:var(--muted);display:flex;flex-direction:column;gap:14px;align-items:center;font:9px/1.4 var(--sans);letter-spacing:2px;text-transform:uppercase}.hero-scroll svg{height:24px;width:24px}.families{padding-top:55px}.family-grid{display:grid;grid-template-columns:1fr 1fr;max-width:770px;margin:auto;gap:60px;text-align:center}.family-grid article+article{border-left:1px solid var(--line);padding-left:60px}.family-name{font-family:var(--script);font-size:40px;font-weight:400;margin:12px 0 25px}.family-grid ul{font-size:23px;line-height:1.65}.families .section-heading{margin-bottom:40px}.blue-band{position:relative;background:var(--deep);color:var(--paper);overflow:hidden;isolation:isolate}.blue-band:before{content:'';position:absolute;inset:0;background:url('./assets/liner.svg') center/240px;opacity:.06;z-index:-1}.blue-band .label,.blue-band .section-heading p:last-child{color:#e4eae5}.blue-band .section{max-width:920px;padding-top:80px;padding-bottom:87px}.sponsor-grid{display:grid;grid-template-columns:1fr 1fr;gap:65px;margin:auto;max-width:750px}.sponsor-grid ul{display:flex;flex-direction:column;gap:18px;text-align:center;font-size:24px;line-height:1.25}.sponsor-grid ul+ul{border-left:1px solid #dbe5e142;padding-left:65px}.sponsor-caption{font-family:var(--italic);font-size:17px;text-align:center;opacity:.85;margin-top:46px}.party-grid{display:grid;grid-template-columns:1fr 1fr;max-width:850px;margin:auto;column-gap:90px;row-gap:46px;text-align:center}.role{padding:20px 10px 35px;border-top:1px solid var(--line)}.role h3{font:10px/1.5 var(--sans);letter-spacing:2.3px;text-transform:uppercase;color:var(--deep);margin:0 0 25px}.role ul{font-size:25px;line-height:1.7}.party-grid .role:nth-child(-n+2) ul{font-size:26px}.role-mark{height:30px;width:75px;margin:0 auto 16px;opacity:.65}.little-ones{background:#e9ede6;border-top:1px solid #c1cec540;border-bottom:1px solid #c1cec540}.flower-layout{max-width:970px;margin:auto;padding:75px 30px;display:grid;grid-template-columns:210px 1fr;align-items:center;gap:48px}.flower-art{width:185px;height:340px;object-fit:contain;opacity:.85;transform:rotate(-10deg)}.flower-content .section-heading{text-align:left;margin:0 0 30px}.flower-content .section-heading h2{font-size:45px}.flower-list{display:grid;grid-template-columns:1fr 1fr;gap:15px 30px;font-size:24px;line-height:1.45}.bearer-section{padding-top:65px;padding-bottom:65px}.bearers-grid{display:grid;grid-template-columns:1fr 1fr 1fr;text-align:center;gap:35px;max-width:890px;margin:auto}.bearer{padding:28px 8px}.bearer+.bearer{border-left:1px solid var(--line)}.bearer svg{width:48px;height:48px;margin:0 auto 21px;stroke:var(--gold);stroke-width:1.2}.bearer h3{font:10px/1.5 var(--sans);letter-spacing:2px;text-transform:uppercase;margin-bottom:13px;color:var(--muted)}.bearer p{font-size:23px;line-height:1.4}.details{padding-top:75px;border-top:1px solid #bac7c770}.details-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:34px 0;gap:20px;text-align:center}.detail+.detail{border-left:1px solid var(--line)}.detail h3{font-family:var(--italic);font-size:28px;font-weight:400;margin-bottom:13px}.detail p{font-size:19px;color:var(--muted);line-height:1.5}.details-note{font-family:var(--italic);text-align:center;font-size:18px;line-height:1.65;margin:28px auto 0;max-width:480px;color:var(--muted)}.footer{background:#dce5e3;text-align:center;padding:75px 25px 30px;position:relative;overflow:hidden}.footer:before{content:'';position:absolute;inset:0;background:url('./assets/liner.svg') center/180px;opacity:.07;pointer-events:none}.footer>*{position:relative}.footer-monogram{font-family:var(--italic);font-size:49px;letter-spacing:5px}.footer-monogram span{font-size:32px;color:var(--gold)}.footer h2{font-family:var(--italic);font-weight:400;font-size:clamp(32px,4vw,45px);line-height:1.15;margin:20px 0}.footer .full-names{font-size:14px}.footer-credit{font:9px/1.5 var(--sans);letter-spacing:1.5px;text-transform:uppercase;border-top:1px solid #809aa535;max-width:930px;margin:55px auto 0;padding-top:25px;color:var(--muted)}.music-control{position:fixed;right:22px;bottom:22px;z-index:25;display:flex;align-items:center;gap:11px;border:1px solid #bccbcc;background:#fffdf5f7;border-radius:50px;box-shadow:0 4px 15px #2d4b5420;padding:13px 18px;min-height:48px;font:10px/1.3 var(--sans);letter-spacing:1px}.equalizer{height:17px;display:flex;align-items:center;gap:3px;width:19px}.equalizer i{display:block;width:2px;height:6px;background:var(--deep);border-radius:3px}.equalizer i:nth-child(2){height:14px}.equalizer i:nth-child(3){height:10px}.equalizer i:nth-child(4){height:8px}.playing .equalizer i{animation:sound .9s ease-in-out infinite alternate}.playing .equalizer i:nth-child(2){animation-delay:-.35s}.playing .equalizer i:nth-child(3){animation-delay:-.65s}.playing .equalizer i:nth-child(4){animation-delay:-.2s}@keyframes sound{from{transform:scaleY(.45)}to{transform:scaleY(1)}}.motion-ready .reveal{opacity:0;transform:translateY(15px);transition:opacity .75s,transform .75s}.motion-ready .reveal.visible{opacity:1;transform:translateY(0)}.no-script-note{max-width:700px;margin:30px auto;text-align:center;padding:15px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
@media(min-width:1500px){.hero{padding-top:90px;padding-bottom:90px}.hero-paper{min-height:680px;padding-top:98px}}
@media(max-width:760px){.topbar{gap:15px;padding:16px 22px;flex-wrap:wrap;justify-content:space-between}.nav-links{order:3;justify-content:space-between;width:100%;gap:12px;font-size:9px;letter-spacing:.8px}.brand{font-size:20px}.replay{font-size:9px}.hero{padding-top:44px;padding-bottom:52px}.hero-paper{padding:69px 23px 36px;min-height:585px;max-width:460px}.couple-heading{font-size:80px}.hero-botanical{width:175px;height:495px;left:-100px;top:160px;opacity:.55}.hero-botanical.right{right:-100px}.hero-paper .eyebrow{font-size:8px;letter-spacing:1.7px}.hero-message{font-size:18px}.section{padding:70px 24px}.families{padding-top:42px}.section-heading{margin-bottom:36px}.section-heading h2{font-size:38px}.section-heading p:last-child{font-size:18px}.family-grid{gap:25px}.family-grid article+article{padding-left:25px}.family-name{font-size:32px}.family-grid ul{font-size:21px}.label{font-size:9px;letter-spacing:1.5px}.sponsor-grid{gap:28px}.sponsor-grid ul+ul{padding-left:28px}.sponsor-grid ul{font-size:21px;gap:18px}.blue-band .section{padding:62px 24px}.party-grid{column-gap:35px;row-gap:28px}.role ul,.party-grid .role:nth-child(-n+2) ul{font-size:22px;line-height:1.75}.role h3{font-size:9px;letter-spacing:1.5px}.flower-layout{grid-template-columns:1fr;padding:62px 26px;gap:20px}.flower-art{height:100px;width:150px;transform:rotate(65deg);margin:-35px auto -3px}.flower-content .section-heading{text-align:center}.flower-content .section-heading h2{font-size:37px}.flower-list{font-size:23px;text-align:center;gap:20px 25px}.bearers-grid{gap:15px}.bearer{padding:24px 4px}.bearer p{font-size:19px}.bearer h3{font-size:9px;letter-spacing:1px}.detail h3{font-size:25px}.detail p{font-size:16px}.details-grid{gap:15px}.footer{padding-bottom:85px}.footer-credit{margin-top:40px}.music-control{right:14px;bottom:14px;padding:12px 15px;font-size:9px}}
@media(max-width:480px){.opening{padding:24px 20px;gap:20px}.opening-heading{font-size:36px}.opening-copy .eyebrow{font-size:8px;letter-spacing:2px}.envelope-scene{height:218px;width:min(360px,84vw);margin:44px 0 0}.envelope-letter{padding:10px}.letter-names{font-size:33px}.wax-seal{width:62px;height:62px;left:calc(50% - 31px);top:calc(52% - 17px);font-size:25px}.letter-sprig{width:70px;height:27px}.opening-foot{font-size:16px}.button{padding:16px 24px}.hero{padding-left:21px;padding-right:21px}.hero-paper{min-height:575px;padding:65px 18px 36px}.couple-heading{font-size:73px}.full-names{font-size:15px}.hero-scroll{font-size:8px}.family-grid{display:block}.family-grid article+article{margin-top:35px;padding:35px 0 0;border-left:0;border-top:1px solid var(--line)}.family-name{font-size:38px;margin-bottom:17px}.family-grid ul{font-size:23px}.sponsor-grid{gap:16px}.sponsor-grid ul+ul{padding-left:16px}.sponsor-grid ul{font-size:19px;line-height:1.35;gap:19px}.sponsor-caption{font-size:16px;margin-top:35px}.party-grid{display:block}.role{padding-top:25px;padding-bottom:32px}.role ul,.party-grid .role:nth-child(-n+2) ul{font-size:24px;line-height:1.7}.role h3{font-size:10px;letter-spacing:2px}.flower-list{display:block;font-size:25px}.flower-list li+li{margin-top:15px}.bearers-grid{display:block;max-width:310px}.bearer+.bearer{border-left:0;border-top:1px solid var(--line)}.bearer{padding:30px 5px}.bearer p{font-size:25px}.bearer h3{font-size:10px;letter-spacing:1.8px}.bearer svg{margin-bottom:15px}.details-grid{display:block;padding:10px 0}.detail{padding:25px 10px}.detail+.detail{border-left:0;border-top:1px solid var(--line)}.detail h3{font-size:29px}.detail p{font-size:19px}.details-note{font-size:17px}.topbar{padding:14px 18px}.nav-links{gap:7px;font-size:8px;letter-spacing:.4px}.hero-paper .eyebrow{max-width:210px;margin:auto}.hero-botanical{left:-120px}.hero-botanical.right{right:-120px}}
@media(max-height:710px){.opening{gap:14px}.opening-heading{font-size:32px}.envelope-scene{margin-top:30px;height:220px;width:350px;max-width:81vw}.opening-foot{display:none}.opening-copy .eyebrow{font-size:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.motion-ready .reveal{opacity:1;transform:none}.button:hover{transform:none}.wax-seal:hover{transform:none}}
