:root{--ink:#414042;--muted:#6d6a66;--gold:#b8955a;--sage:#7d8a63;--paper:#fffdf9;--line:#e8e1d5}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:Lato,system-ui,sans-serif;font-weight:300;font-size:17px;line-height:1.7}
h1,h2,h3,h4{font-family:"Abhaya Libre",Georgia,serif;font-weight:400;color:var(--ink);margin:0;line-height:1.15}
a{color:inherit}
img{max-width:100%;display:block}
.top{position:relative;text-align:center;padding:150px 20px 0;overflow:hidden}
.top .art{position:absolute;inset:0 0 auto 0;height:100%;max-height:520px;background:url(/img/theme2.png) top center/1440px auto no-repeat;pointer-events:none}
.top .art{opacity:.55}
.top .names{position:relative;display:inline-block;padding:18px 44px 10px;background:radial-gradient(ellipse at center,rgba(255,253,249,.95) 0%,rgba(255,253,249,.85) 55%,rgba(255,253,249,0) 78%)}
.top h1 a{color:#2f2e30}
.top h1{font-size:clamp(44px,7vw,68px)}
.top h1 a{text-decoration:none}
.when{margin:.4em 0 0;letter-spacing:.08em;text-transform:uppercase;font-size:14px;color:var(--muted)}
.countdown{margin:.3em 0 0;font-family:"Abhaya Libre",serif;font-size:22px;color:var(--gold);min-height:1.4em}
nav{position:relative;display:flex;justify-content:center;flex-wrap:wrap;gap:6px 34px;margin:34px auto 0;padding:16px 10px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);max-width:860px}
nav a{text-decoration:none;text-transform:uppercase;letter-spacing:.14em;font-size:13px;font-weight:400;padding:4px 0;border-bottom:1px solid transparent}
nav a:hover,nav a[aria-current]{border-color:var(--gold);color:#000}
main{max-width:980px;margin:0 auto;padding:56px 20px 80px}
.page-title{text-align:center;font-size:40px;margin-bottom:36px}
.mono{font-family:"Abhaya Libre",serif;font-size:34px;color:var(--gold);margin:0}
.hero img{width:100%;aspect-ratio:2/1;object-fit:cover}
.event{text-align:center;margin:56px auto 0;max-width:560px}
.event .date{font-family:"Abhaya Libre",serif;font-size:30px}
.event .place{text-transform:uppercase;letter-spacing:.14em;font-size:14px;color:var(--muted)}
.btn{display:inline-block;background:var(--ink);color:#fff;text-decoration:none;text-transform:uppercase;letter-spacing:.16em;font-size:13px;font-weight:400;padding:14px 38px;border:0;cursor:pointer;font-family:inherit;margin-top:24px}
.btn:hover{background:#000}
.card{border-top:1px solid var(--line);margin-top:56px;padding-top:48px;text-align:center}
.card h4{font-size:32px;margin-bottom:12px}
.card p{margin:.2em 0}
.card .label{font-weight:700;font-size:13px;letter-spacing:.12em;text-transform:uppercase;margin-top:1em}
.story img{width:100%;margin-bottom:40px}
.story p{max-width:720px;margin:0 auto;font-size:18px}
.timeline{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:40px 28px}
.timeline figure{margin:0}
.timeline img{width:100%;aspect-ratio:3/4;object-fit:cover}
.timeline h3{font-size:22px;margin-top:14px}
.timeline figcaption p{margin:0;color:var(--muted);font-size:15px}
.gallery{columns:3 260px;column-gap:14px;margin-top:64px}
.gallery a{display:block;margin-bottom:14px;break-inside:avoid}
.invite img{margin:0 auto;max-width:720px;width:100%;box-shadow:0 10px 40px rgba(0,0,0,.08)}
form.rsvp{max-width:520px;margin:0 auto;display:grid;gap:20px}
form.rsvp .intro{text-align:center;color:var(--muted);margin:0}
form.rsvp label{display:grid;gap:6px;font-size:13px;letter-spacing:.1em;text-transform:uppercase;font-weight:400}
form.rsvp input,form.rsvp textarea,form.rsvp select{font:inherit;font-size:17px;padding:12px 14px;border:1px solid #cfc7ba;background:#fff;color:var(--ink);text-transform:none;letter-spacing:0}
form.rsvp fieldset{border:0;padding:0;margin:0;display:flex;gap:28px;justify-content:center}
form.rsvp legend{font-size:13px;letter-spacing:.1em;text-transform:uppercase;width:100%;text-align:center;margin-bottom:10px}
form.rsvp fieldset label{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-size:17px;font-weight:300}
form.rsvp .btn{justify-self:center}
.notice{max-width:520px;margin:0 auto 28px;padding:16px 20px;text-align:center;border:1px solid var(--line);background:#fff}
.notice.error{border-color:#d9a3a3;color:#8a3b3b}
footer{text-align:center;padding:40px 20px 56px;border-top:1px solid var(--line);color:var(--muted)}
footer p{margin:0}
@media (max-width:640px){.top{padding-top:110px}.top .art{background-size:900px auto}nav{gap:4px 20px}main{padding-top:40px}}
