@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400&family=Manrope:wght@400;500;600&display=swap');
:root{--paper:#f5f2e9;--green:#253c28;--wine:#782e31;--ink:#594b3f;--line:#d5cec0}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif;font-size:14px}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.13;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath filter='url(%23n)' opacity='.25' d='M0 0h160v160H0z'/%3E%3C/svg%3E");z-index:5}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}a{color:inherit}button{cursor:pointer}header{max-width:1440px;margin:auto;padding:25px 5%;display:flex;align-items:center;justify-content:space-between}.monogram{font:32px 'Cormorant Garamond',Georgia,serif;text-decoration:none;color:var(--wine)}.monogram span{font-size:22px;font-style:italic;margin:0 3px}nav{display:flex;gap:10px;align-items:center;color:#a29787}.language{padding:10px 3px;background:none;border:0;color:var(--ink);font-size:11px;letter-spacing:.12em}.language.active{color:var(--wine);text-decoration:underline;text-underline-offset:6px}.hero{text-align:center;overflow:hidden;padding:32px 20px 58px;min-height:850px}.eyebrow{font-size:10px;letter-spacing:.25em;font-weight:600}.hero h1{font:500 clamp(50px,6.8vw,92px)/1.05 'Cormorant Garamond',Georgia,serif;color:var(--wine);margin:25px 0 13px}.hero h1 i{font-weight:400;font-size:.7em;margin:0 8px}.intro{font-size:13px;margin:0;color:#7d7365}.stage{height:350px;width:min(760px,100%);position:relative;margin:12px auto 0;--sprite-size:340px}.sprite{height:var(--sprite-size);width:var(--sprite-size);background-image:url('assets/characters.png');background-size:300% 100%;background-repeat:no-repeat}.pose-boy{background-position:0 50%}.pose-girl{background-position:50% 50%}.pose-couple{background-position:100% 50%}.runner{position:absolute;bottom:0;left:calc(50% - var(--sprite-size)/2);z-index:2;opacity:0}.boy{animation:boy-run 3.8s linear both}.girl{animation:girl-run 3.8s linear both}.runner .sprite{animation:bounce .23s ease-in-out 13 alternate}.embrace{position:absolute;bottom:0;left:calc(50% - var(--sprite-size)/2);z-index:3;animation:catch 6s both}.ground{position:absolute;bottom:5px;left:25%;width:50%;height:8px;filter:blur(8px);background:#69523c1c;border-radius:50%}.hearts{position:absolute;left:50%;top:10px;color:var(--wine);z-index:4;animation:heartshow 6s both}.hearts span{position:absolute;font:28px Georgia}.hearts span:nth-child(1){left:-70px;top:0;transform:rotate(-20deg)}.hearts span:nth-child(2){left:5px;top:-14px;font-size:20px}.hearts span:nth-child(3){left:75px;top:14px;transform:rotate(20deg)}.reveal{animation:reveal 6s both}.marrying{font-size:10px;letter-spacing:.22em;margin:14px 0 23px}.event{display:flex;justify-content:center;align-items:center;gap:45px;margin-bottom:28px}.event>div{min-width:150px}.event strong{font:500 32px 'Cormorant Garamond',Georgia,serif;color:var(--wine)}.event span:not(.event-flower){display:block;font-size:8px;letter-spacing:.19em;margin-top:7px}.event-flower{font-size:31px;color:var(--wine)}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:40px;background:var(--green);color:var(--paper);border:1px solid var(--green);padding:17px 26px;text-decoration:none;font-size:12px;letter-spacing:.025em;min-width:210px;transition:background .2s,transform .2s}.button:hover{background:#38533b;transform:translateY(-2px)}.button:disabled{opacity:.6;cursor:wait}.replay{display:block;margin:18px auto 0;border:0;background:transparent;font-size:10px;color:#85796c;padding:8px}.rsvp{border-top:1px solid var(--line);max-width:1060px;margin:0 auto;padding:85px 30px 90px;display:grid;grid-template-columns:1fr 1.12fr;gap:110px}.rsvp-copy h2{font:500 76px/.95 'Cormorant Garamond',Georgia,serif;color:var(--wine);margin:25px 0}.rsvp-copy p{font-size:13px;line-height:1.9;max-width:280px}.little-flower{font-size:70px;color:var(--wine);margin:35px 0 25px}.rsvp-copy .small{font-size:11px;max-width:230px;color:#85796c}form{padding-top:2px}.field{margin-bottom:25px}label,legend{font-size:12px;font-weight:600;display:block;margin-bottom:10px}input:not([type=radio]):not([type=checkbox]),select,textarea{display:block;width:100%;color:var(--green);border:1px solid #c8c0b1;border-radius:0;background:#fffdf738;padding:13px 14px;min-height:47px}textarea{resize:vertical;line-height:1.6}input:focus,textarea:focus,select:focus{outline:2px solid var(--green);outline-offset:2px}.hint,.optional{font-size:10px;font-weight:400;color:#85796c}.hint{display:block;margin-top:8px;line-height:1.5}fieldset{border:0;padding:0;margin:0 0 25px;min-width:0}legend{padding:0;line-height:1.5}.guest-field{margin-top:14px}.guest-field label{font-weight:400;color:#85796c;font-size:11px}.choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.choices label{border:1px solid #c8c0b1;padding:15px 10px;display:flex;align-items:center;gap:8px;font-weight:400;margin:0;cursor:pointer}.choices label:has(:checked){background:#e4e9df;border-color:var(--green)}input[type=radio]{accent-color:var(--green);margin:0}.submit{width:100%}.privacy{font-size:10px;line-height:1.6;color:#85796c;text-align:center;margin-top:14px}#status{font-size:12px;line-height:1.6;color:var(--wine)}.trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.success{align-self:center}.success>span{font-size:70px;color:var(--wine)}.success h2{font:48px 'Cormorant Garamond',Georgia,serif;color:var(--wine)}.success p{line-height:1.8}footer{border-top:1px solid var(--line);margin:0 5%;padding:28px 0;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:9px;letter-spacing:.08em}footer span:first-child{font:24px 'Cormorant Garamond',Georgia,serif;color:var(--wine)}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--wine);outline-offset:5px}
@keyframes boy-run{0%{opacity:0;transform:translateX(-90%)}8%{opacity:1}75%{opacity:1;transform:translateX(-12%)}94%{opacity:1;transform:translateX(-7%) rotate(-4deg)}100%{opacity:0;transform:translateX(-7%)}}
@keyframes girl-run{0%{opacity:0;transform:translateX(90%)}8%{opacity:1}72%{opacity:1;transform:translateX(15%)}86%{opacity:1;transform:translateX(4%) translateY(-85px) rotate(-24deg)}95%{opacity:1;transform:translateX(0) translateY(-35px) rotate(-40deg)}100%{opacity:0;transform:translateX(-5%) translateY(-20px) rotate(-45deg)}}
@keyframes bounce{from{transform:translateY(0) rotate(-2deg)}to{transform:translateY(-11px) rotate(2deg)}}@keyframes catch{0%,59%{opacity:0;transform:translateY(-12px) scale(.98)}64%{opacity:1;transform:translateY(8px) rotate(3deg)}70%{transform:translateY(-3px) rotate(-2deg)}78%,100%{opacity:1;transform:translateY(0) rotate(0)}}@keyframes reveal{0%,72%{opacity:0;transform:translateY(12px)}100%{opacity:1;transform:translateY(0)}}@keyframes heartshow{0%,62%{opacity:0;transform:translateY(25px) scale(.6)}80%,100%{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:650px){header{padding:16px 7%}.hero{padding-top:28px;min-height:755px}.hero h1{font-size:51px}.hero h1 i{margin:0 2px}.intro{font-size:11px}.stage{height:300px;--sprite-size:285px;margin-top:24px}.event{gap:15px}.event>div{min-width:120px}.event strong{font-size:29px}.event-flower{font-size:24px}.rsvp{grid-template-columns:1fr;gap:30px;padding:55px 25px 65px;margin:0 15px}.rsvp-copy h2{font-size:62px}.rsvp-copy h2 br{display:none}.rsvp-copy p{max-width:none}.little-flower{display:none}.rsvp-copy .small{max-width:none}.choices label{font-size:11px}footer{flex-direction:column;gap:14px;padding:30px 0}.hearts{top:4px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.runner{display:none}.embrace,.reveal,.hearts{opacity:1}.replay{display:none}}
.sprite.original-groom{background-image:none}.original-groom svg{display:block;width:100%;height:100%;overflow:visible}
.family-note{margin:0 0 26px;padding:15px 18px;border-left:2px solid var(--green);background:#e4e9df66;font-size:12px;line-height:1.8;color:var(--ink)}
.calendar-menu{max-width:310px;margin:18px auto 0;text-align:center;color:var(--green)}.calendar-menu summary{list-style:none;cursor:pointer;display:flex;justify-content:center;align-items:center;gap:10px;border:1px solid var(--line);padding:14px 18px;min-height:46px;font-size:12px}.calendar-menu summary::-webkit-details-marker{display:none}.calendar-menu summary:hover{border-color:var(--green)}.calendar-menu summary svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round}.calendar-options{border:1px solid var(--line);border-top:0;background:var(--paper);padding:8px 14px}.calendar-options a{display:block;padding:13px 4px;font-size:12px;text-underline-offset:4px}.calendar-options p{font-size:10px;line-height:1.6;color:#85796c;margin:8px 0 12px}

/* Fixed vector icons avoid platform emoji fonts, including iOS. */
.button::after,.replay::before,.event-flower::before,.little-flower::before,.hearts span::before,.success>span::before{content:"";display:inline-block;background:currentColor;-webkit-mask:var(--icon) center/contain no-repeat;mask:var(--icon) center/contain no-repeat;width:1em;height:1em;vertical-align:middle;flex-shrink:0}
.button::after{--icon:url('assets/icon-arrow.svg');width:14px;height:14px}
.replay::before{--icon:url('assets/icon-replay.svg');margin-right:5px}
.event-flower::before,.little-flower::before{--icon:url('assets/icon-flower.svg')}
.hearts span::before,.success>span::before{--icon:url('assets/icon-heart.svg')}
select{appearance:none;-webkit-appearance:none;background-image:url('assets/icon-chevron.svg');background-repeat:no-repeat;background-position:right 14px center;background-size:16px;padding-right:42px}

.guest-field{padding:16px 0;border-bottom:1px solid var(--line)}.guest-field .guest-stay{display:flex;align-items:center;gap:10px;min-height:44px;margin:8px 0 0;color:var(--green);font-size:12px;cursor:pointer}.guest-stay input[type=checkbox]{appearance:auto;-webkit-appearance:checkbox;width:18px;height:18px;margin:0;accent-color:var(--green);flex-shrink:0}
