@font-face{font-family:Script;src:url('/assets/script.woff')}@font-face{font-family:Brush;src:url('/assets/brush.woff')}@font-face{font-family:Heading;src:url('/assets/heading.woff')}@font-face{font-family:Invitation;src:url('/assets/serif.woff')}@font-face{font-family:Invitation;src:url('/assets/serif-bold.woff');font-weight:bold}@font-face{font-family:Slab;src:url('/assets/slab-bold.woff')}@font-face{font-family:Map;src:url('/assets/maps.woff2')}@font-face{font-family:Time;src:url('/assets/time.woff2')}*{box-sizing:border-box}body{margin:0;background:#e7e6e1;color:#53565a;font-family:Invitation,Georgia,serif}img{display:block;max-width:100%}button{cursor:pointer}a{color:inherit}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.skip-link{position:absolute;top:-100px}.skip-link:focus{top:10px;z-index:99}.botanical-background{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}.motion-toggle{position:absolute;right:14px;bottom:12px;z-index:9;border:0;border-radius:20px;background:#e7e6e1e8;padding:7px 12px;font:11px Arial}
.cover-page{min-height:100svh;background:url('/assets/eucalyptus.jpg') center/cover}.cover{min-height:100svh;display:grid;place-items:center;overflow:hidden}.closed-envelope{position:relative;display:block;width:min(77vw,680px);aspect-ratio:1600/1086;transform:rotate(-14deg);color:#dfc48b;filter:drop-shadow(0 12px 15px #0003)}.closed-paper{width:100%;height:100%}.invited{position:absolute;top:13%;width:100%;text-align:center;font-family:Script,cursive;font-size:clamp(28px,7.2vw,66px);text-decoration:underline}.closed-flowers{position:absolute;width:31%;top:37%;left:37%}.closed-seal{position:absolute;width:18%;left:44%;top:60%}.tap{position:absolute;bottom:9%;width:100%;text-align:center;font:clamp(10px,2.2vw,18px) Slab,Georgia;letter-spacing:.2em;text-decoration:underline}
.invitation-page main{container-type:inline-size;width:100%;margin:auto;overflow:hidden;background:#e7e6e1}.invitation-page h1,.invitation-page h2,.invitation-page h3,.invitation-page p{margin:0}.invitation-hero{position:relative;height:108cqw;overflow:hidden;background:url('/assets/eucalyptus.jpg') center/cover}.back-link{position:absolute;z-index:4;top:16px;left:20px;font:26px Georgia;text-decoration:none}.open-envelope{position:absolute;width:66.2%;aspect-ratio:1416/1599;left:12.85%;top:13.5%;transform:rotate(-19deg)}.envelope-back,.envelope-front{position:absolute;inset:0;width:100%;height:100%}.invitation-card{position:absolute;width:70.23%;left:14%;top:-1.5%}.envelope-front{z-index:2}.open-flowers{position:absolute;width:31.77%;left:-7%;top:72%;z-index:3}.second-sprig{top:81%;transform:rotate(18deg)}.open-seal{position:absolute;width:20.36%;left:5%;top:94%;z-index:4}
.date-section{height:124cqw;position:relative;text-align:center}.date-section h1{position:absolute;top:3cqw;width:100%;color:#000;font:5.57cqw Script,cursive}.countdown{position:absolute;top:10.5cqw;width:100%;display:flex;justify-content:center;gap:2cqw;color:#000}.countdown div{display:flex;flex-direction:column;align-items:center}.countdown b,.countdown i{font:14.8cqw/1 Invitation,Georgia;letter-spacing:-.7cqw}.countdown i{font-size:12cqw}.countdown span{font:3cqw Arial;margin-top:1.8cqw}.calendar{position:absolute;top:36.5cqw;width:100%;height:78cqw;padding:3cqw 17%;background:#626b4f;color:#e9e6e3}.calendar h2{color:#f0dfaa;font:bold 6.3cqw Invitation,Georgia;white-space:nowrap;margin:0 -10% 2cqw}.calendar table{width:100%;border-collapse:collapse;table-layout:fixed;font:4.3cqw Time,Arial}.calendar th{color:#b88f49;font:bold 6.2cqw Invitation,Georgia;height:8cqw}.calendar td{height:10cqw;position:relative}.calendar td span{display:inline-grid;place-items:center;width:7cqw;height:8cqw;position:relative}.calendar .wedding-day:before{content:'♡';position:absolute;font:13cqw Georgia;color:#f5f0de}
.stripes{height:10cqw;background:repeating-linear-gradient(#5a6c57 0 3cqw,transparent 3cqw 4.8cqw),url('/assets/eucalyptus.jpg') center/cover}.botanical-stripes{height:6cqw;background:repeating-linear-gradient(#e7e6e1 0 1.8cqw,transparent 1.8cqw 3.7cqw),url('/assets/eucalyptus.jpg') center/cover}.decorative{position:relative;isolation:isolate;overflow:hidden;text-align:center}.details{height:147cqw}.details h2{position:absolute;top:3cqw;width:100%;font:10.9cqw Heading,Georgia;color:#000}.details:before{content:'';position:absolute;top:25cqw;width:100%;height:7cqw;background:url('/assets/eucalyptus.jpg') center/cover;z-index:-1}.location-mark{position:absolute;top:36cqw;left:calc(50% - 1.9cqw);width:4.5cqw;height:6cqw;border:2px solid #000;border-radius:50% 50% 50% 0;transform:rotate(-45deg)}.location-mark:after{content:'';position:absolute;inset:1cqw;border:1px solid;border-radius:50%}.location-label{position:absolute;top:45cqw;width:100%;font-size:3cqw;color:#000}.venue{position:absolute;top:52cqw;width:100%;z-index:2}.venue+.venue{top:94cqw}.venue h3{font:4.1cqw Slab,Georgia;color:#3b6255}.venue p{position:absolute;top:7.3cqw;width:100%;color:#d38f65;font-size:5.5cqw;white-space:nowrap}.venue .time{top:17.5cqw;color:#3b6255;font:2.9cqw Time,Arial}.map-button{position:absolute;top:25cqw;left:35%;width:30%;height:7cqw;display:grid;place-items:center;border-radius:50%;background:#bd894c;color:#e9e6e3;font:2.55cqw Map,Arial}.venue+.venue p{top:10cqw}.venue+.venue .time{top:20cqw}.venue+.venue .map-button{top:30cqw}.bouquet,.vase,.palm{position:absolute;z-index:-1}.corner-left{width:25.5%;top:-10cqw;left:0}.bouquet-right{width:25.5%;right:-2%;top:10cqw}.vase-left{width:11.64%;left:0;top:51cqw}.corner-right{width:11.64%;right:1%;bottom:5cqw}.palm-left{width:42%;left:-24%;bottom:-12cqw}.palm-right{width:42%;right:-27%;top:40cqw}
.dress{height:100cqw}.dress h2{position:absolute;top:1cqw;width:100%;font:8.1cqw Brush,cursive}.sunset-art{position:absolute;top:17cqw;width:100%;height:44cqw;overflow:hidden}.sunset-art img{position:absolute;width:48.36%;max-width:none;left:18.8%;top:-30cqw;transform:rotate(90deg)}.clothes{position:absolute;width:21.1%;left:39.75%;top:35.6cqw}.sunset{position:absolute;top:71.5cqw;width:100%;font:6.5cqw Brush,cursive;background:linear-gradient(110deg,#f8ad00,#e13333,#3992ff);background-clip:text;color:transparent}.dress p{position:absolute;top:83cqw;width:100%;font-size:2.48cqw;color:#000}.dress+.stripes{height:12.5cqw}.gift{height:57cqw}.gift h2{position:absolute;top:4cqw;width:100%;font:8.1cqw Heading,Georgia}.gift p{position:absolute;top:21cqw;left:22.7%;width:55.6%;font-size:2.8cqw;line-height:1.4;color:#000}.gift-envelope,.gift-box{position:absolute;color:#dfae4c;z-index:-1}.gift-envelope{right:4%;top:7cqw;width:14%}.gift-box{left:6%;bottom:2cqw;width:17%}.gift .palm-left{top:-4cqw;bottom:auto}.gift .vase{width:14.4%;bottom:0;right:0}.gift+.stripes{height:6cqw}.rsvp-section{text-align:center;height:24cqw;padding-top:2cqw}.rsvp-section p{color:#000;font-size:2.8cqw}.rsvp-section strong{font-weight:400}.rsvp-link{border:0;background:none;font:bold 7.1cqw Invitation,Georgia;color:#53565a;text-decoration:underline}
.rsvp-section{height:auto;min-height:82cqw;padding:5cqw 18% 7cqw;background:#e7e6e1}.rsvp-section h2{margin-top:2cqw;font:7cqw Script,cursive;color:#3b6255}.rsvp-section .rsvp-intro{margin:1cqw 0 3cqw}.rsvp-form{text-align:left}.rsvp-form label,.rsvp-form input,.rsvp-form select,.rsvp-form textarea{display:block;width:100%}.rsvp-form label{margin-top:2.5cqw;font-size:2.8cqw;color:#3b6255}.rsvp-form label span{color:#6d716c}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{margin-top:1cqw;padding:2cqw;border:1px solid #939783;background:#fffdf7;color:#283c35;font:inherit}.rsvp-form textarea{resize:vertical}.submit-rsvp{width:100%;border:0;background:#626b4f;color:#fff;padding:2.5cqw;margin-top:3cqw;font:3cqw Invitation,Georgia}.submit-rsvp:disabled{opacity:.65;cursor:wait}#rsvp-status{min-height:2.5em;margin-top:2cqw;color:#3b6255}.rsvp-form #rsvp-status.error{color:#9a423c}@media(max-width:480px){.map-button{font-size:12px}.gift{min-height:245px}.gift p{left:18%;width:64%;font-size:13px}.dress p,.rsvp-section p,.location-label{font-size:13px}.rsvp-section{padding:28px 32px 40px}.rsvp-section h2{font-size:34px}.rsvp-form label{font-size:14px}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{padding:10px}.submit-rsvp{padding:12px;font-size:16px}}@media(min-width:901px){.invitation-page{background:#d7d9cd}.invitation-page main{max-width:900px;box-shadow:0 0 80px #0002}}

@keyframes envelope-arrival{from{opacity:0;transform:rotate(-19deg) translateY(10cqw) scale(.88)}to{opacity:1;transform:rotate(-19deg) translateY(0) scale(1)}}@keyframes card-rise{from{transform:translateY(18cqw)}to{transform:translateY(0)}}@keyframes seal-settle{0%{opacity:0;transform:scale(.45) rotate(-25deg)}75%{opacity:1;transform:scale(1.12) rotate(8deg)}100%{opacity:1;transform:scale(1) rotate(8deg)}}@keyframes botanical-sway{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}@keyframes fade-up{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}
.open-envelope{animation:envelope-arrival 1s cubic-bezier(.2,.9,.3,1) both}.invitation-card{animation:card-rise 1.15s .35s cubic-bezier(.2,.8,.3,1) both}.open-seal{animation:seal-settle .7s 1.15s cubic-bezier(.2,.9,.3,1) both}.open-flowers{animation:botanical-sway 5s 1.8s ease-in-out infinite}.cover-page .closed-envelope{animation:fade-up .9s cubic-bezier(.2,.8,.3,1) both}.reveal{opacity:0;transform:translateY(28px)}.reveal.is-visible{animation:fade-up .7s cubic-bezier(.2,.8,.3,1) both}.details .bouquet,.details .vase,.details .palm,.gift .palm,.gift .vase{animation:botanical-sway 6s ease-in-out infinite}.details .vase,.gift .vase{animation-delay:-2s}.motion-toggle{transition:background .2s,transform .2s}.motion-toggle:hover{background:#fff;transform:translateY(-2px)}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}

/* Mercy and Jackson's dress code palette. */
.sunset-art,.sunset{display:none}.dress-colors-title{position:absolute;top:64cqw;width:100%;font:normal 4.1cqw/1.3 Invitation,Georgia;color:#3b6255}.dress-palette{position:absolute;top:72cqw;left:18%;width:64%;display:flex;justify-content:center;gap:1.5cqw}.dress-palette span{display:grid;place-items:center;min-height:13cqw;flex:1;padding:1cqw;color:#fff;font:1.8cqw/1.2 Arial;text-align:center;text-transform:uppercase}.dress-palette .charcoal{background:#36454f}.dress-palette .champagne{background:#c9ad7a;color:#263d36}.dress-palette .mint{background:#a8d5ba;color:#263d36}.dress p{top:89cqw}

@keyframes card-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.1cqw)}}@keyframes petal-sway{0%,100%{transform:rotate(-3deg) translateY(0)}50%{transform:rotate(3deg) translateY(-.8cqw)}}@keyframes reveal-up{from{opacity:0;transform:translate3d(0,20px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
.invitation-card{animation:card-rise 1.15s .35s cubic-bezier(.2,.8,.3,1) both;filter:drop-shadow(0 1cqw 1.5cqw #0002)}.open-flowers{animation:petal-sway 5.5s 1.8s ease-in-out infinite;transform-origin:bottom center}.second-sprig{animation-delay:-1.5s}.reveal.is-visible{animation:reveal-up .65s cubic-bezier(.2,.8,.3,1) both}.details .bouquet,.details .vase,.details .palm,.gift .palm,.gift .vase{animation:petal-sway 6s ease-in-out infinite;transform-origin:bottom center}
@media(max-width:480px){.dress-colors-title{font-size:14px}.dress-palette span{font-size:8px}.dress p{top:89cqw}}

/* Page two uses a single staged opening sequence so its illustrated layers never compete. */
@keyframes envelope-settle{from{opacity:0;transform:rotate(-19deg) translateY(8cqw) scale(.9)}to{opacity:1;transform:rotate(-19deg) translateY(0) scale(1)}}@keyframes invitation-emerge{from{opacity:0;transform:translateY(24cqw) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes flap-arrive{from{opacity:0;transform:translateY(2cqw)}to{opacity:1;transform:translateY(0)}}@keyframes seal-arrive{0%{opacity:0;transform:scale(.5) rotate(-18deg)}70%{opacity:1;transform:scale(1.08) rotate(5deg)}100%{opacity:1;transform:scale(1) rotate(0)}}
.invitation-page .open-envelope{animation:none;opacity:0;transform:rotate(-19deg) translateY(8cqw) scale(.9);will-change:opacity,transform}.invitation-page .invitation-card{animation:none;opacity:0;will-change:opacity,transform}.invitation-page .envelope-front{opacity:0;will-change:opacity,transform}.invitation-page .open-seal{animation:none;opacity:0;will-change:opacity,transform}.invitation-page .open-flowers{animation:none;opacity:0;will-change:opacity,transform}.hero-ready .open-envelope{animation:envelope-settle .8s cubic-bezier(.22,.8,.3,1) both}.hero-ready .invitation-card{animation:invitation-emerge .85s .42s cubic-bezier(.18,.85,.32,1) both}.hero-ready .envelope-front{animation:flap-arrive .45s .92s ease-out both}.hero-ready .open-seal{animation:seal-arrive .5s 1.1s cubic-bezier(.2,.9,.3,1) both}.hero-ready .open-flowers{animation:flap-arrive .5s 1s ease-out both,petal-sway 5.5s 1.5s ease-in-out infinite}.hero-ready .second-sprig{animation-delay:1.08s,-1s}
@media(prefers-reduced-motion:reduce){.invitation-page .open-envelope,.invitation-page .invitation-card,.invitation-page .envelope-front,.invitation-page .open-seal,.invitation-page .open-flowers{opacity:1}.invitation-page .open-envelope{transform:rotate(-19deg)!important}}

/* RSVP is a quiet continuation of the invitation rather than a utility form. */
.rsvp-section{position:relative;isolation:isolate;min-height:108cqw;padding:7cqw 16% 9cqw;background:linear-gradient(#e7e6e1e8,#e7e6e1e8),url('/assets/eucalyptus.jpg') center/cover}.rsvp-section:before,.rsvp-section:after{content:'✦';position:absolute;color:#bd894c;font:7cqw Georgia;opacity:.7}.rsvp-section:before{left:11%;top:14cqw}.rsvp-section:after{right:11%;bottom:11cqw}.rsvp-section h2{margin-top:1.5cqw;color:#3b6255;letter-spacing:.03em}.rsvp-section .rsvp-intro{font-style:italic;color:#5b665e}.rsvp-form{position:relative;z-index:1;margin:4cqw auto 0;padding:4cqw 6%;border:1px solid #bd894c;border-radius:1cqw;background:#fffdf7e8;box-shadow:0 1.5cqw 3cqw #2630201c}.rsvp-form:before{content:'Please respond with joy';display:block;margin-bottom:2.5cqw;color:#bd894c;font:3.6cqw Script,cursive;text-align:center}.rsvp-form label{font:2.5cqw/1.2 Invitation,Georgia;color:#3b6255}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{border:0;border-bottom:1px solid #a9aa9d;border-radius:0;background:transparent;padding:1.6cqw .5cqw;color:#263d36}.rsvp-form input:focus,.rsvp-form select:focus,.rsvp-form textarea:focus{outline:2px solid #bd894c;outline-offset:2px}.submit-rsvp{border:1px solid #bd894c;border-radius:99px;background:#3b6255;letter-spacing:.08em;text-transform:uppercase}.submit-rsvp:hover{background:#284a40}@media(max-width:480px){.rsvp-section{min-height:0;padding:42px 26px 52px}.rsvp-form{margin-top:22px;padding:24px 22px;border-radius:5px}.rsvp-form:before{margin-bottom:15px;font-size:25px}.rsvp-form label{font-size:15px}.rsvp-section:before{left:7%;top:70px;font-size:28px}.rsvp-section:after{right:7%;bottom:35px;font-size:28px}}
