.contacts{text-align:center;border-top:1px solid var(--line)}.contacts h2{margin:20px 0}.contacts>p:not(.eyebrow){font-size:16px}.contact-grid{display:grid;grid-template-columns:1fr 1fr;max-width:620px;margin:40px auto 0;gap:30px}.contact-grid article+article{border-left:1px solid var(--line)}.contact-grid h3{font-size:38px;margin-bottom:12px}.contact-grid p{letter-spacing:1px}.privacy-note{font-size:12px;margin-bottom:20px}.submit:not(:disabled){color:var(--paper);background:#46513f;cursor:pointer}.submit:not(:disabled):hover{background:#303c2a}.submit:disabled{cursor:wait}.child-row{padding:16px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 90px auto;align-items:end;gap:12px}.child-row button{font-size:12px;background:none;border:0;min-height:44px;color:var(--muted);padding:8px;cursor:pointer}#rsvp-status{font-size:14px;margin-top:18px;line-height:1.6}#rsvp-status:empty{display:none}#rsvp-status[data-state=error]{color:#92352b}#rsvp-status[data-state=success]{padding:20px;border:1px solid #9ba68e;background:#f6f7ef;color:#34412c}.text-button{width:fit-content}
@media(max-width:640px){.contact-grid{gap:15px}.contact-grid h3{font-size:31px}.contact-grid p{font-size:14px;letter-spacing:0}.child-row{grid-template-columns:1fr 75px}.child-row button{grid-column:1/-1;justify-self:end;min-height:32px}}
/* Each piece uses the same full-bleed photograph, revealing the live hero. */
.invitation-coastal{position:fixed;inset:0;z-index:1000;overflow:hidden;isolation:isolate}
.coastal-envelope{position:absolute;inset:0;display:block;width:100%;height:100%;padding:0;border:0;background:none;cursor:pointer;perspective:1800px;-webkit-tap-highlight-color:transparent}
.coastal-envelope:focus{outline:none}
.coastal-envelope:focus-visible{outline:2px solid #8c866b;outline-offset:-12px}
.coastal-panel{position:absolute;inset:-1px;display:block;pointer-events:none;transition:transform 1.8s cubic-bezier(.38,.04,.22,1),opacity .7s ease 1.25s;will-change:transform}
.coastal-panel img{display:block;width:100%;height:100%;object-fit:fill;user-select:none}



.coastal-flap{clip-path:polygon(0 0,100% 0,50% 55.8%);transform-origin:50% 0;backface-visibility:hidden}
.coastal-seal{clip-path:ellipse(7% 11% at 50% 55%);transition:opacity .35s ease,transform .6s ease}
.is-opening .coastal-seal{opacity:0;transform:scale(1.06)}
.is-opening .coastal-flap{transform:rotateX(100deg) translateY(-12%);opacity:0}



@media(prefers-reduced-motion:reduce){.coastal-panel{transition:none}}
.coastal-paper{position:absolute;left:50%;top:50%;width:max(100vw,150dvh);height:max(100dvh,66.667vw);transform:translate(-50%,-50%);perspective:1800px}.coastal-panel{background:#eeece2}
.is-opening .coastal-envelope:focus-visible{outline:none}
.coastal-base{clip-path:polygon(0 0,50% 55.8%,100% 0,100% 100%,0 100%);transition:transform 1.65s cubic-bezier(.4,0,.2,1) .55s}
.coastal-flap{transition:transform 1.25s cubic-bezier(.4,0,.2,1),opacity .4s ease .65s;mask-image:radial-gradient(ellipse 7% 11% at 50% 55%,transparent 98%,#000 100%)}
.coastal-seal{transition:transform 1.65s cubic-bezier(.4,0,.2,1) .55s}
.is-opening .coastal-flap{transform:rotateX(110deg);opacity:0}
.is-opening .coastal-base,.is-opening .coastal-seal{transform:translateY(105%);opacity:1}
.hero h1[tabindex="-1"]:focus{outline:none}
