:root{color-scheme:light;--ink:#472f24;--accent:#81512f;--cream:#f6f3e9;--line:#d6c7b5}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font:17px/1.7 'Noto Sans Ethiopic','Nyala',Georgia,serif}header{max-width:1120px;margin:auto;padding:22px 28px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}a{color:var(--accent);text-underline-offset:5px}header a{text-decoration:none;font-size:15px}.monogram{font-size:26px;letter-spacing:4px}.monogram span{font-style:italic;font-size:20px}main{max-width:1120px;margin:auto;padding:0 28px}.intro{text-align:center;padding:52px 18px 48px;border-bottom:1px solid var(--line)}.eyebrow{font:14px/1.7 Arial,sans-serif;letter-spacing:2px;color:var(--accent)}h1{font-size:clamp(2.1rem,5vw,4rem);line-height:1.4;margin:18px 0;color:var(--accent);font-weight:400}h1 span{font-style:italic;font-size:.75em;padding:0 8px}.names{font-size:clamp(1.25rem,3vw,1.8rem);margin:0 0 20px}.intro p{margin:12px 0}.intro .date{font-size:24px;margin-top:24px}.button,button{display:inline-block;background:var(--accent);color:white;border:1px solid var(--accent);border-radius:3px;padding:13px 23px;text-decoration:none;font:inherit;cursor:pointer}.intro .button{margin-top:18px}.layout{display:grid;grid-template-columns:1fr 1fr;gap:64px;padding:48px 0}h2{font-size:26px;line-height:1.5;margin:10px 0 22px;font-weight:400}h3{font-size:23px;font-weight:400;margin-top:30px}.times{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:32px 0;padding:24px 0;border-block:1px solid var(--line)}.times strong{display:block;font-size:27px;font-weight:400}.times span{display:block;margin-top:8px}.notice{font-size:17px}blockquote{margin:35px 0 0;padding:24px 0;border-top:1px solid var(--line);line-height:1.9}cite{display:block;font-style:normal;font-size:15px;margin-top:15px}.rsvp{padding:28px;background:#fffdf7;border:1px solid var(--line);border-top:4px solid var(--accent);scroll-margin-top:20px}.rsvp .eyebrow{letter-spacing:1px}form{margin-top:26px}label,legend{font-size:16px}form>label{display:block;margin:18px 0 7px}input:not([type=radio]),textarea,select{width:100%;font:inherit;padding:11px;border:1px solid #ad9681;border-radius:3px;background:white;color:var(--ink)}fieldset{border:0;padding:0;margin:24px 0}.radio{display:flex;align-items:center;gap:10px;margin:12px 0}.radio input{accent-color:var(--accent);width:19px;height:19px;flex-shrink:0}button{width:100%;margin-top:22px}.help{font-size:14px;line-height:1.6;color:#6b5647}.contacts{text-align:center;font-size:16px}.secondary{background:transparent;color:var(--accent)}:focus-visible{outline:3px solid #9b7043;outline-offset:4px}#status{font-size:15px}.original{border-top:1px solid var(--line);padding:25px 0}summary{cursor:pointer;font-size:17px;padding:12px 0}.original img{display:block;max-width:100%;width:620px;height:auto;margin:20px auto}footer{text-align:center;padding:25px;font-size:15px;border-top:1px solid var(--line)}@media(max-width:750px){main{padding:0 20px}header{padding:18px 20px}.intro{padding:32px 0}.layout{grid-template-columns:1fr;gap:20px;padding:28px 0}.rsvp{padding:22px}.details{padding:0 4px}.eyebrow{letter-spacing:1px}.times{margin:24px 0}.intro .date{font-size:21px}}


.monogram{display:inline-flex;align-items:center;justify-content:center;gap:3px;width:78px;height:78px;border:1px solid var(--accent);outline:1px solid var(--line);outline-offset:5px;border-radius:50%;font-family:Georgia,serif;font-size:29px;letter-spacing:0;line-height:1;background:#fffdf7}.monogram span{font-size:23px;font-style:italic;color:#a07853}.intro h1{font-size:clamp(2rem,4.3vw,3.3rem)}
/* Keep each full-name pair together across screen sizes. */
.intro h1,.intro .names{white-space:nowrap;max-width:100%;overflow-x:auto;overflow-y:hidden}
.intro h1{font-size:clamp(1rem,4vw,3.3rem)}
.intro .names{font-size:clamp(.875rem,3.5vw,1.8rem)}
@media(max-width:750px){.intro h1 span{padding:0 2px}.intro{padding-left:0;padding-right:0}}
/* A restrained, classic invitation palette and typography. */
:root{--ink:#3e3028;--accent:#70492e;--cream:#faf7f0;--line:#d5c8b7}
body{font-family:'Noto Serif Ethiopic','Nyala',Georgia,'Times New Roman',serif}
header{padding-top:28px;padding-bottom:28px}
.eyebrow{font-family:Georgia,'Times New Roman',serif;letter-spacing:1.4px}
.intro{padding-top:55px;padding-bottom:55px}
.intro .names{letter-spacing:-.25px}
.rsvp{background:#fffdf9;border-top:1px solid var(--line);padding:32px}
.button,button,input:not([type=radio]),textarea,select{border-radius:0}
.button,button{background:#70492e}
.times strong{font-family:Georgia,'Times New Roman',serif}
blockquote{font-style:normal}
.monogram{background:#fffdf9}
footer{font-family:Georgia,'Times New Roman',serif;letter-spacing:.5px}
@media(max-width:750px){.intro{padding-top:36px;padding-bottom:36px}.rsvp{padding:22px}header{padding-top:23px;padding-bottom:23px}}

.invitation-title{text-align:center;font-size:clamp(1.5rem,4vw,2rem);line-height:1.6;margin:26px 20px 0;color:var(--accent)}.intro .invitation-line{margin-top:24px;font-size:18px}.intro .invitation-line+.date{margin-top:10px}

#event-choice label{display:block;margin:18px 0 7px}#event-choice select{font-size:16px}

#rsvp form>label:not(.radio),#rsvp form legend,#fallback>label{font-weight:700}

.intro .invitation-title{font-size:clamp(1.5rem,4vw,2rem);line-height:1.6;margin:0 0 18px;color:var(--accent)}

.intro .names{white-space:normal;overflow:visible;font-size:clamp(1.4rem,4vw,1.8rem)}.names>span{display:block}.names .name-ampersand{font-style:italic;font-size:.85em;line-height:1.4;margin:5px 0;color:var(--accent)}
@font-face{font-family:'Wedding Names';src:url('fonts/wedding-names.otf') format('opentype');font-style:italic;font-weight:400;font-display:swap}
header{padding-top:14px;padding-bottom:14px}
.monogram{width:52px;height:52px;font-size:22px;outline-offset:3px}
.monogram span{font-size:17px}
header>a:last-child{font-size:14px}
.intro .invitation-title{font-size:clamp(1.25rem,3.4vw,1.6rem);margin-bottom:12px}
.intro h1{font-family:'Noto Sans Ethiopic','Nyala',sans-serif;font-weight:400}
.intro .names{font-family:'Wedding Names','Palatino Linotype',Palatino,Georgia,serif;font-style:italic;font-size:clamp(1.65rem,5vw,2.25rem);line-height:1.5;letter-spacing:0}
.names .name-ampersand{font-family:'Wedding Names',Georgia,serif;font-size:.75em;line-height:1.2;margin:3px 0}
@media(max-width:750px){header{padding-top:12px;padding-bottom:12px}.intro{padding-top:26px}}
/* Lace frame uses the exact outer edges of the supplied invitation. */
.intro{margin-top:24px;background:#f3f0e6;border-style:solid;border-width:54px 42px 28px;border-image-source:url('invitation.png');border-image-slice:130 140 40 140;border-image-repeat:stretch;padding:30px 18px 36px}
@media(max-width:750px){main{padding-left:12px;padding-right:12px}.intro{margin-top:18px;border-width:30px 18px 16px;padding:24px 5px 28px}.intro h1{font-size:clamp(.9rem,3.7vw,1.7rem)}.intro .names{font-size:clamp(1.65rem,5vw,2.25rem)}}
.intro{border-image-source:url('lace-frame.webp');border-image-slice:12%;border-image-repeat:stretch}

.intro h1{font-size:clamp(1rem,3.1vw,2.65rem)}@media(max-width:750px){.intro h1{font-size:clamp(.8rem,2.85vw,1.45rem)}}
.intro h1{font-size:clamp(1.15rem,3.4vw,2.9rem)}@media(max-width:750px){.intro h1{font-size:clamp(.95rem,3.2vw,1.6rem)}}

.contacts{margin-top:26px}.contacts p{margin:16px 0;line-height:1.7}
.contacts{display:grid;grid-template-columns:1fr 1fr;gap:12px;text-align:center}.contacts p{margin:8px 0}.contacts a{white-space:nowrap}@media(max-width:350px){.contacts{gap:6px;font-size:14px}}

#event-choice .radio{display:flex;margin:12px 0}.radio{padding:8px 0;cursor:pointer}.radio span{min-width:0}

.contacts{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 24px}.contacts p{white-space:nowrap}
.times>div+div{border-left:1px solid var(--line);padding-left:20px}@media(max-width:750px){.times>div+div{padding-left:16px}}

.top-rsvp{text-align:center;padding:20px 0 0}.top-rsvp .button{font-size:16px;padding:11px 20px}

header{justify-content:center}
header .monogram{font-size:22px}

.intro .top-rsvp{padding:0 0 20px}.intro .top-rsvp .button{margin-top:0;font-size:inherit;padding:13px 23px}

.more-information{text-align:center;padding:28px 0 35px;border-top:1px solid var(--line)}.more-information h2{font-size:22px;margin-bottom:18px}.information-contacts{display:flex;flex-wrap:wrap;justify-content:center;gap:20px 65px}.information-contacts p{margin:0}.information-contacts strong{font-weight:400}.information-contacts a{white-space:nowrap}

/* A slow-load overlay reuses the invitation's T&E monogram. */
.page-loader[hidden]{display:none!important}.page-loader{position:fixed;inset:0;z-index:10000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:19px;background:rgba(250,247,240,.98);color:var(--ink);opacity:1;transition:opacity .24s ease}.page-loader.is-leaving{opacity:0;pointer-events:none}.loader-logo{display:flex;align-items:center;justify-content:center;gap:3px;width:82px;height:82px;border:1px solid var(--accent);outline:1px solid var(--line);outline-offset:5px;border-radius:50%;background:#fffdf9;font:29px/1 Georgia,serif;letter-spacing:0;color:var(--ink)}.loader-logo span{font-size:23px;font-style:italic;color:#a07853}.loader-ring{width:25px;height:25px;border:2px solid #d5c8b7;border-top-color:var(--accent);border-radius:50%;animation:invitation-spin .8s linear infinite}.loader-copy{margin:0;color:#6b5647;font:14px/1.6 Arial,'Noto Sans Ethiopic',sans-serif;text-align:center}.page-loader[aria-busy=true]{cursor:progress}@keyframes invitation-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.loader-ring{animation-duration:2.4s}.page-loader{transition:none}}
