/* A small correspondence note, anchored to the invitation; no page reflow. */
#contact-dialog{position:fixed;inset:auto;margin:0;width:min(380px,calc(100vw - 32px));max-width:none;max-height:calc(100dvh - 32px);overflow:auto;overscroll-behavior:contain;border:1px solid #bdcec5;border-radius:3px;box-shadow:0 12px 36px #20262914,0 2px 6px #20262908;background:var(--paper);color:var(--ink);transform-origin:top right}
#contact-dialog::backdrop{background:rgb(32 38 41 / .12);animation:contact-backdrop 160ms ease-out}
.contact-shell{padding:18px 22px 22px}
.contact-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px}
#contact-title{margin:0;font:500 27px/1.2 var(--serif);letter-spacing:-.5px}
#contact-title:focus{outline:none}
.contact-close{display:grid;place-items:center;flex:none;width:44px;height:44px;margin-right:-10px;border:0;background:none;padding:0;border-radius:2px;color:var(--secondary)}
.contact-close svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5}
.contact-close:hover{color:var(--ink);background:var(--tint)}
.contact-body{min-height:158px}
#contact-form label{display:block;font:600 14px/20px var(--sans);margin:0 0 7px}
#contact-email{display:block;box-sizing:border-box;width:100%;min-width:0;height:48px;padding:11px 12px;border:1px solid #9eafa6;border-radius:2px;background:var(--paper);color:var(--ink);font:400 16px/24px var(--sans);outline-offset:3px;transition:border-color 140ms}
#contact-email::placeholder{color:#78837d;opacity:1}
#contact-email:focus{border-color:var(--accent);outline:2px solid var(--accent)}
#contact-email[aria-invalid="true"]{border-color:#8c463c}
.contact-error{margin:10px 0 0;color:#813e34;font:400 14px/20px var(--sans)}
.contact-submit,.contact-done{display:flex;align-items:center;justify-content:center;width:100%;height:44px;margin-top:16px;padding:9px 16px;border:1px solid var(--accent);border-radius:2px;background:var(--accent);color:var(--paper);font:600 16px/24px var(--sans)}
.contact-submit:hover,.contact-done:hover{background:#1d5042;color:var(--paper)}
.contact-submit:disabled{cursor:wait;background:var(--accent);color:var(--paper);opacity:1}
.contact-progress{position:relative;height:2px;margin-top:8px;overflow:hidden;background:var(--rule);visibility:hidden}
.contact-progress::after{content:"";position:absolute;inset:0 auto 0 0;width:35%;background:var(--accent);transform:translateX(-100%)}
#contact-dialog[data-state="sending"] .contact-progress{visibility:visible}
#contact-dialog[data-state="sending"] .contact-progress::after{animation:contact-pending 1.15s cubic-bezier(.4,0,.2,1) infinite}
.contact-receipt p{margin:0 0 22px;color:var(--secondary);font:400 17px/26px var(--sans)}
.contact-receipt-actions{display:flex;align-items:center;gap:14px}
.contact-done{flex:1;width:auto;margin:0}
.contact-another{min-height:44px;flex:none;border:0;background:none;padding:8px 0;color:var(--secondary);font:400 14px/22px var(--sans);text-decoration:underline;text-underline-offset:4px}
#contact-dialog[data-state="received"] #contact-title{color:var(--accent)}
@keyframes contact-pending{to{transform:translateX(390%)}}
@keyframes contact-backdrop{from{background:rgb(32 38 41 / 0)}to{background:rgb(32 38 41 / .12)}}
@media(max-width:599px){.contact-shell{padding:16px 18px 20px}#contact-title{font-size:25px}.contact-receipt-actions{gap:12px}}
@media(prefers-reduced-motion:reduce){#contact-dialog::backdrop,.contact-progress::after{animation:none!important}#contact-dialog[data-state="sending"] .contact-progress::after{transform:translateX(90%)}}
