:root{--ivory:#FBF8F3;--sand:#F3EEE6;--taupe:#B9A68E;--ink:#2F2A26;--muted:#6E645B;--gold:#A8865A}
*{box-sizing:border-box}
body{margin:0;background:var(--sand);color:var(--ink);font:400 16px/1.65 "Manrope",system-ui,sans-serif}
h1,h2,h3,.kicker,.names,.quote p:first-child,.big{font-family:"Cormorant Garamond",Georgia,serif;font-weight:400}
h2{margin:0 0 20px;font-size:clamp(2rem,6vw,2.6rem);text-align:center;color:var(--ink)}
a{color:var(--gold)}
.hero{min-height:88vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:48px 20px;text-align:center;background:radial-gradient(ellipse at 50% 30%,#fff 0,var(--sand) 70%)}
.ornament{width:180px;fill:none;stroke:var(--gold);stroke-width:1.5}
.ornament circle{fill:var(--gold)}
.kicker{margin:0;font-style:italic;font-size:1.5rem;color:var(--muted)}
h1{margin:0;font-size:clamp(3.6rem,16vw,7rem);line-height:1;letter-spacing:.01em}
h1 span{color:var(--gold);font-style:italic}
.date{margin:6px 0 18px;letter-spacing:.3em;text-transform:uppercase;font-size:.8rem;font-weight:600;color:var(--muted)}
.countdown{display:flex;gap:12px;margin-bottom:24px}
.countdown div{min-width:78px;padding:12px 8px;border:1px solid var(--taupe);border-radius:4px;background:#ffffffa0}
.countdown b{display:block;font:600 2rem/1 "Cormorant Garamond",serif}
.countdown span{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.btn{display:inline-block;min-height:48px;padding:13px 30px;border:0;border-radius:2px;background:var(--ink);color:var(--ivory);font:600 .85rem/1.6 "Manrope",sans-serif;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;cursor:pointer}
.btn:hover{background:var(--gold)}
main{max-width:860px;margin:auto;padding:0 20px}
.block{padding:64px 0;border-top:1px solid #e3d9cb}
.quote{text-align:center}
.quote p:first-child{font-size:clamp(1.6rem,5vw,2.2rem);font-style:italic;line-height:1.3;margin:0}
.sub{color:var(--muted);max-width:520px;margin:16px auto 0}
.cards{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.card{padding:28px;background:var(--ivory);border:1px solid #e3d9cb;text-align:center}
.label{margin:0;font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);font-weight:800}
.card h3{margin:6px 0;font-size:2rem}
.card p{margin:0 0 12px}
small{color:var(--muted)}
.link{font-weight:600;letter-spacing:.06em}
.timeline{list-style:none;padding:0;margin:0 auto;max-width:420px}
.timeline li{display:grid;grid-template-columns:70px 1fr;gap:16px;padding:14px 0;border-bottom:1px dashed var(--taupe)}
.timeline time{font:600 1.3rem "Cormorant Garamond",serif;color:var(--gold)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:40px;text-align:center}
.big{font-size:2.2rem;margin:0}
.swatches{display:block;height:36px;margin:14px auto 0}
.err{display:block;color:#8a3630;font-size:.85rem;font-weight:600}
.err:empty{display:none}
.status.error{border-color:#8a3630;color:#8a3630}
.gift{padding:12px;background:var(--ivory);border:1px solid #e3d9cb;margin:10px 0}
.rsvp{text-align:center}
form{display:grid;gap:16px;max-width:460px;margin:24px auto 0;text-align:left}
label,legend{font-weight:600;font-size:.9rem}
input:not([type=radio]),select,textarea{display:block;width:100%;min-height:48px;margin-top:6px;padding:10px 12px;border:1px solid var(--taupe);border-radius:2px;background:#fff;font:inherit}
fieldset{border:0;padding:0;margin:0}
.opt{display:flex;gap:10px;align-items:center;font-weight:400;padding:8px 0}
.opt input{accent-color:var(--ink);width:18px;height:18px}
.status:empty{display:none}
.status{margin-top:18px;padding:16px;background:var(--ivory);border:1px solid var(--taupe)}
.foot{padding:48px 20px;text-align:center;background:var(--ink);color:#d9cfc3;font-size:.85rem}
.foot a{color:#E5CFA9}
.names{font-size:2.6rem;margin:0 0 6px;color:var(--ivory)}
.js .reveal{opacity:0;transform:translateY(16px);transition:opacity .7s,transform .7s}
.js .reveal.shown{opacity:1;transform:none}
@media (max-width:640px){.cards,.two{grid-template-columns:1fr}.countdown div{min-width:70px}}
@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none;transition:none}}
