:root {
 --paper:#faf7f2; --wine:#702b40; --ink:#392f31; --muted:#705f62;
 --line:#d8c9c4; --blush:#f0e6e1; --white:#fffdf9; --gold:#a08348;
 --sage:#8c9b85; --sage-wash:#e9ede4;
 font-family:Arial,Helvetica,sans-serif; color:var(--ink); background:var(--paper); font-synthesis:none;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:32px; }
body { margin:0; font-size:1rem; line-height:1.75; }
a { color:var(--wine); text-underline-offset:5px; }
button { font:inherit; cursor:pointer; }
a,button,summary { touch-action:manipulation; }
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible { outline:3px solid var(--wine); outline-offset:5px; }
h1,h2,h3,p,figure { margin:0; }
h1,h2,h3,.wordmark,.footer-names { font-family:Georgia,'Times New Roman',serif; font-weight:400; }
h2 { color:var(--wine); font-size:clamp(2rem,3.3vw,3.25rem); line-height:1.15; letter-spacing:-.025em; }
h3 { color:var(--wine); font-size:1.45rem; line-height:1.35; }
p+p { margin-top:1rem; }
.eyebrow { color:var(--wine); font-size:.75rem; letter-spacing:.13em; text-transform:uppercase; font-weight:600; margin-bottom:22px; }
.skip-link { position:fixed; top:-100px; left:20px; padding:12px 20px; background:var(--white); z-index:10; }
.skip-link:focus { top:10px; }
/* Navigation is independent of the name and photograph reflow. */
.site-header { display:flex; justify-content:space-between; align-items:center; gap:24px; min-height:80px; max-width:1328px; margin:auto; padding:14px 40px; border-bottom:1px solid var(--line); }
.wordmark { min-height:44px; min-width:44px; display:flex; align-items:center; text-decoration:none; font-size:1.5rem; letter-spacing:.06em; }
.wordmark span { font-size:.85rem; padding-inline:8px; color:var(--muted); }
.site-header nav { display:flex; gap:34px; align-items:center; }
.site-header nav a { display:flex; min-height:44px; min-width:44px; align-items:center; text-decoration:none; font-size:.85rem; }
.menu-toggle { display:none; color:var(--wine); min-height:44px; min-width:44px; border:1px solid var(--line); background:transparent; padding:9px 15px; }
.menu-toggle[hidden] { display:none; }
/* One invitation masthead, then the unoverlaid landscape photograph. */
.invitation { max-width:1328px; margin:auto; padding-inline:40px; }
.invitation-copy { text-align:center; padding:40px 0 28px; }
.invitation-kicker { display:flex; align-items:center; justify-content:center; gap:16px; margin:0 auto 18px; }
.wedding-rings { display:block; width:48px; max-width:100%; height:auto; margin:0; overflow:hidden; }
.invitation-kicker .eyebrow { margin:0; font-size:.7rem; }
.invitation h1 { font-size:clamp(4rem,9.6vw,9rem); line-height:1.05; letter-spacing:-.04em; color:var(--wine); }
.ampersand { display:inline-block; font-size:.53em; font-style:italic; vertical-align:12%; margin:0 .22em; color:#9a7276; }
.intro { font-family:Georgia,serif; font-size:1.05rem; line-height:1.6; margin:16px auto 20px; color:var(--muted); }
.intro br { display:none; }
.wedding-date { font-family:Georgia,serif; font-size:1.5rem; letter-spacing:.04em; }
.arrival-note { font-size:.88rem; color:var(--muted); margin-top:5px; }
.invitation-photo { min-width:0; margin:0; }
.invitation-photo img { display:block; width:100%; height:auto; aspect-ratio:16 / 9; object-fit:contain; object-position:center; background:var(--paper); }
.invitation-photo figcaption { display:flex; align-items:center; justify-content:space-between; gap:16px; padding-top:4px; font-size:.7rem; color:var(--muted); }
.text-link { display:inline-flex; align-items:center; min-height:48px; max-width:100%; gap:20px; margin-top:16px; font-size:.9rem; }
.invitation-link { margin:0; font-size:.85rem; min-height:44px; }
.countdown { color:var(--muted); font-size:.8rem; margin:0; min-height:1.75em; }
/* Shared paper, with distinct compositions for each part of the invitation. */
.section { margin:auto; padding:100px 50px; scroll-margin-top:24px; }
.section-body { min-width:0; }
.section-heading>p:not(.eyebrow) { font-size:.9rem; color:var(--muted); margin-top:25px; }
.lead { font-family:Georgia,serif; font-size:1.6rem; line-height:1.5; color:var(--wine); }
.day { max-width:1280px; padding-inline:48px; }
.day>.section-heading { display:block; margin-bottom:40px; }
.day>.section-heading .eyebrow { margin:0 0 18px; }
.day>.section-body { display:grid; grid-template-columns:minmax(0,1.8fr) minmax(240px,.8fr); column-gap:64px; }
.programme-content { min-width:0; }
.programme-content>.lead { max-width:620px; }
.programme-content>p:not(.lead) { font-size:.95rem; max-width:65ch; }
.programme { list-style:none; padding:0; margin:35px 0; }
.programme li { display:grid; grid-template-columns:88px minmax(0,1fr); gap:24px; border-top:1px solid var(--line); padding:24px 0; }
.programme li:last-child { border-bottom:1px solid var(--line); }
.programme h3 { font-size:1.3rem; }
.programme-time { font-family:Georgia,serif; font-size:1.65rem; color:var(--wine); line-height:1.3; font-variant-numeric:tabular-nums; }
.programme p { color:var(--muted); margin-top:5px; font-size:.88rem; }
.calendar-note,.map-note { color:var(--muted); font-size:.82rem; }
.location-note { border-left:1px solid var(--line); margin:0; padding-left:32px; }
.location-note .eyebrow { margin-bottom:12px; }
.location-note h3 { font-size:2rem; }
.location-note p { margin-top:12px; font-size:.95rem; }
.location-note .map-note { margin-top:8px; font-size:.82rem; }
/* Practical spread: title + parking opposite accommodation + children. */
.practical { display:grid; grid-template-columns:1fr 1fr; gap:80px; background:var(--sage-wash); padding-block:96px; padding-inline:max(50px,calc((100vw - 1050px)/2)); }
.practical-opening { min-width:0; }
.practical-opening>article { margin-top:40px; max-width:430px; }
.practical-opening h3,.practical-list h3 { margin-bottom:12px; }
.practical-opening p:not(.eyebrow),.practical-list p { font-size:.95rem; }
.practical-list article+article { border-top:1px solid #c2cbbd; margin-top:32px; padding-top:32px; }
/* The same restrained gold line connects the existing ornaments. */
.decoration { color:var(--gold); pointer-events:none; user-select:none; }
.ring-glint { opacity:.65; }
.ornament { display:flex; align-items:center; justify-content:center; gap:18px; padding:32px 26px 0; max-width:520px; margin:auto; }
.ornament::before,.ornament::after { content:''; height:1px; flex:1; background:var(--line); }
.ornament svg { display:block; flex:0 1 180px; width:min(180px,64%); max-width:100%; height:auto; overflow:hidden; }
.ornament-small { padding:0 26px 32px; max-width:460px; }
.gifts { max-width:1040px; display:grid; grid-template-columns:1fr 1fr; column-gap:80px; row-gap:30px; text-align:left; padding:80px 48px; margin:auto; }
.gifts .eyebrow { grid-column:1/-1; margin:0; }
.gifts h2 { margin:0; font-size:2.2rem; text-align:left; }
.verse { font-family:Georgia,serif; font-style:italic; font-size:1.12rem; line-height:1.9; margin:0; color:var(--wine); }
.gift-note { grid-column:1/-1; margin:10px 0 0; max-width:65ch; font-size:.9rem; color:var(--muted); }
/* Two recommended colour families; the optional gold detail stays separate. */
.dresscode { max-width:1100px; border-top:1px solid var(--line); }
.dresscode .section-heading { text-align:center; max-width:640px; margin:auto; }
.dresscode .section-body { max-width:800px; margin:36px auto 0; }
.dresscode .section-body>p:not(.gold-note) { text-align:center; max-width:640px; margin-inline:auto; }
.dress-palette { list-style:none; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:64px; margin:36px 0; }
.dress-palette li { display:flex; flex-direction:column; align-items:center; gap:20px; text-align:center; padding:12px 0; }
.dress-palette h3 { font-size:1.35rem; }
.dress-palette p { color:var(--muted); font-size:.9rem; margin-top:4px; }
.colour-swatch { width:108px; height:108px; flex:0 0 108px; border-radius:50%; border:1px solid #392f3120; }
.swatch-wine { background:var(--wine); }
.swatch-sage { background:var(--sage); }
.gold-note { max-width:680px; margin:auto; text-align:center; padding:24px 0 0; border-top:1px solid var(--line); font-size:.9rem; color:var(--muted); }
.gold-note strong { color:var(--ink); }
.questions { max-width:960px; }
.questions .section-heading { display:flex; align-items:baseline; justify-content:space-between; gap:32px; margin-bottom:36px; }
.questions .eyebrow { margin:0; }
.faq details { border-bottom:1px solid var(--line); }
.faq details:first-child { border-top:1px solid var(--line); }
summary { min-height:68px; padding:22px 4px; cursor:pointer; font-family:Georgia,serif; font-size:1.25rem; color:var(--wine); }
summary::marker { color:var(--gold); font-size:.85em; }
.faq details p { max-width:65ch; font-size:1rem; line-height:1.75; padding:0 4px 24px; }
.site-footer { background:var(--wine); color:var(--paper); text-align:center; padding:55px 24px 30px; }
.footer-names { font-size:2.7rem; }
.footer-names i { font-size:.65em; color:#e5c9c5; }
.site-footer>p:not(.footer-names) { font-size:.85rem; letter-spacing:.04em; }
.site-footer a:focus-visible { outline-color:var(--paper); }
.site-footer a { display:inline-flex; align-items:center; min-height:44px; min-width:44px; color:var(--paper); font-size:.85rem; margin-top:16px; }
@media (min-width:1200px) {
 .programme { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 32px; }
 .programme li { grid-template-columns:76px minmax(0,1fr); gap:16px; padding-block:28px; }
 .programme li:last-child { border-bottom:0; }
}
@media (max-width:1100px) {
 .practical { gap:48px; }
 .day>.section-body { column-gap:40px; }
}
@media (min-width:761px) and (max-width:1100px) {
 .section { padding:76px 40px; }
 .day { padding-inline:48px; }
 .practical { padding-block:96px; }
 .section h2 { font-size:2.5rem; }
 .site-header nav { gap:24px; }
}
@media (max-width:900px) {
 .day>.section-body { grid-template-columns:1fr; }
 .location-note { border-left:0; border-top:1px solid var(--line); margin-top:36px; padding:28px 0 0; }
 .gifts { column-gap:40px; }
}
@media (max-width:760px) {
 .site-header { padding:12px 24px; min-height:76px; flex-wrap:wrap; }
 .site-header nav { width:100%; gap:0; flex-wrap:wrap; }
 .site-header nav a { flex:1 0 50%; padding-block:6px; }
 .site-header nav[hidden] { display:none; }
 .menu-toggle:not([hidden]) { display:block; }
 .invitation { padding-inline:24px; }
 .invitation-copy { padding-top:28px; }
 .invitation h1 { font-size:clamp(3.75rem,13vw,5.5rem); line-height:1.06; letter-spacing:-.035em; }
 .ampersand { margin:0 0 0 .1em; vertical-align:10%; }
 .intro { max-width:310px; margin-top:16px; font-size:1rem; }
 .intro br { display:initial; }
 .wedding-date { font-size:1.3rem; }
 .invitation-photo img { aspect-ratio:16 / 9; object-position:center; }
 .section { padding:65px 26px; }
 .section h2 { font-size:2.5rem; }
 .day>.section-heading,.questions .section-heading { display:block; margin-bottom:30px; }
 .day>.section-heading .eyebrow,.questions .eyebrow { margin-bottom:18px; }
 .programme li { grid-template-columns:76px minmax(0,1fr); gap:18px; }
 .programme-time { font-size:1.5rem; }
 .practical { grid-template-columns:1fr; gap:30px; }
 .practical-opening>article { margin-top:30px; max-width:none; }
 .practical-list { border-top:1px solid #c2cbbd; padding-top:28px; }
 .ornament { gap:10px; }
 .gifts { display:block; padding:64px 26px; }
 .gifts h2 { margin-top:22px; }
 .verse,.gift-note { margin-top:28px; }
 .dress-palette { gap:24px; }
 .colour-swatch { width:84px; height:84px; flex-basis:84px; }
 .dress-palette h3 { font-size:1.2rem; }
 .dress-palette p { font-size:.85rem; }
 .map-search { gap:10px; line-height:1.6; }
}
@media (max-width:440px) {
 .last-name { display:block; }
 .invitation { padding-inline:20px; }
 .invitation-photo figcaption { flex-direction:column; align-items:flex-start; gap:0; }
 .countdown { max-width:100%; text-align:left; padding:0 0 8px; }
}
/* Hover motion never runs on touch or under reduced-motion. */
@media (prefers-reduced-motion:no-preference) {
 .text-link [aria-hidden] { display:inline-block; transition:transform 160ms ease; }
 .invitation-photo img { transition:filter 240ms ease; }
}
@media (hover:hover) and (pointer:fine) {
 .site-header nav a:hover { text-decoration:underline; }
}
@media (prefers-reduced-motion:no-preference) and (hover:hover) and (pointer:fine) {
 .text-link:hover [aria-hidden] { transform:translateX(2px); }
 .invitation-link:hover [aria-hidden] { transform:translateY(2px); }
 .invitation-photo:hover img { filter:brightness(1.025); }
}
@media (prefers-reduced-motion:reduce) {
 html { scroll-behavior:auto; }
 *,*::before,*::after { animation:none!important; transition:none!important; }
 [data-reveal],.invitation-photo img { transform:none!important; filter:none!important; }
 [data-ring-stroke] { stroke-dasharray:none!important; stroke-dashoffset:0!important; }
}
