:root{--ivory:#fbf8f2;--pearl:#f3eee5;--line:#d9ccb4;--gold:#9a7a4a;--gold-d:#7a5c32;--gold-l:#c9ab74;--ink:#4a3d2c;--muted:#7c6d58;--gold-grad:linear-gradient(135deg,#7a5c32 0%,#b8955c 30%,#e2cc96 50%,#b08a50 70%,#7a5c32 100%)}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--ivory);color:var(--ink);font-family:"Cormorant Garamond",Georgia,serif;font-size:19px;line-height:1.6;overflow-x:hidden}
a{color:inherit}
.satin{background:radial-gradient(120% 60% at 10% 10%,rgba(255,255,255,.95),transparent 60%),radial-gradient(80% 50% at 90% 30%,rgba(235,226,212,.8),transparent 70%),linear-gradient(115deg,#f7f3ec 0%,#fffdf9 18%,#ece5d9 32%,#fbf8f2 46%,#e8e0d2 60%,#fffefb 76%,#efe8dc 100%)}
.gold-text{background:var(--gold-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.script{font-family:"Pinyon Script",cursive;font-weight:400}
.gold-text.script,h1.gold-text,h2.gold-text{padding:0 .28em}
.caps{font-family:Cinzel,serif;letter-spacing:.28em;text-transform:uppercase}
.he{font-family:"Frank Ruhl Libre",serif;direction:rtl}
.sparkles{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.sparkles i{position:absolute;border-radius:50%;background:#fff;box-shadow:0 0 6px 2px rgba(255,255,255,.9),0 0 12px 3px rgba(226,204,150,.5);animation:tw 3.5s infinite ease-in-out}
@keyframes tw{0%,100%{opacity:0;transform:scale(.4)}50%{opacity:1;transform:scale(1)}}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.corner{position:absolute;width:min(300px,46vw);height:auto;pointer-events:none;opacity:.9}
.corner.tl{top:-10px;left:-14px}
.corner.br{bottom:-10px;right:-14px;transform:rotate(180deg)}
.bsd{position:absolute;top:18px;right:22px;font-size:16px;color:var(--gold);z-index:3}
.mono{display:block;height:auto;filter:drop-shadow(0 2px 3px rgba(122,92,50,.25))}
.divider{display:block;width:220px;max-width:70%;height:auto;margin:16px auto 30px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:14px 28px;font-family:Cinzel,serif;font-size:12px;letter-spacing:.22em;text-transform:uppercase;text-decoration:none;color:#fff;background:var(--gold-grad);background-size:200% 100%;border:0;cursor:pointer;transition:background-position .5s;box-shadow:0 8px 18px -10px rgba(122,92,50,.8)}
.btn:hover{background-position:100% 0}
.btn svg{width:18px;height:18px;fill:#fff}
.btn.ghost{background:transparent;color:var(--gold-d);border:1px solid var(--gold-l);box-shadow:none}
.btns{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.frame{background:rgba(255,255,255,.62);border:1px solid rgba(201,171,116,.55);position:relative;box-shadow:0 18px 40px -28px rgba(122,92,50,.45)}
.frame::before{content:"";position:absolute;inset:7px;border:1px solid rgba(201,171,116,.3);pointer-events:none}

/* splash */
.splash{position:relative;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;overflow:hidden;text-align:center}
.splash .mono{width:min(300px,62vw);opacity:0;animation:rise 1.8s .2s forwards}
.enter{margin-top:44px;padding:30px 34px 32px;min-width:min(340px,86vw);opacity:0;animation:rise 1.4s 1s forwards}
.enter .script{font-size:clamp(34px,7vw,44px);line-height:1.2}
.enter .caps{font-size:12px;color:var(--muted);margin:4px 0 22px}

/* inner pages */
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:center;gap:clamp(14px,3vw,30px);padding:12px 16px;background:rgba(251,248,242,.9);backdrop-filter:blur(8px);border-bottom:1px solid rgba(201,171,116,.35);flex-wrap:wrap}
.top .home{position:absolute;left:18px;top:50%;transform:translateY(-50%)}
.top .home svg{width:40px;height:auto;display:block}
.top a.l{font-family:Cinzel,serif;font-size:12px;letter-spacing:.18em;text-decoration:none;color:var(--gold-d);text-transform:uppercase;padding:4px 0;border-bottom:1px solid transparent}
.top a.l:hover,.top a.l.on{border-color:var(--gold-l)}
.hero{position:relative;padding:80px 20px 70px;text-align:center;overflow:hidden}
.hero .kicker{font-size:13px;color:var(--gold-d)}
.names{display:flex;align-items:flex-start;justify-content:center;gap:clamp(8px,3vw,30px);margin-top:10px}
.name{display:flex;flex-direction:column;align-items:center}
.name .script{font-size:clamp(46px,10vw,100px);line-height:1.1}
.name .he{font-size:clamp(20px,4vw,28px);color:var(--gold-d);margin-top:-4px}
.amp{font-size:clamp(40px,8vw,78px);line-height:1.35}
.date{margin-top:18px;font-size:clamp(26px,5vw,38px);letter-spacing:.32em}
.date-sub{font-size:13px;color:var(--muted);margin-top:4px}
.countdown{display:flex;gap:clamp(8px,3vw,22px);justify-content:center;margin-top:30px}
.cd{min-width:74px;padding:12px 8px 10px;border:1px solid rgba(201,171,116,.55);background:rgba(255,255,255,.55)}
.cd b{display:block;font-weight:500;font-size:clamp(28px,6vw,42px);line-height:1}
.cd span{display:block;font-family:Cinzel,serif;font-size:10px;letter-spacing:.2em;color:var(--muted);margin-top:6px;text-transform:uppercase}
h1{font-family:"Pinyon Script",cursive;font-weight:400;font-size:clamp(52px,10vw,86px);line-height:1.15}
h2{font-family:"Pinyon Script",cursive;font-weight:400;font-size:clamp(44px,8vw,64px);line-height:1.15}
section{position:relative;padding:84px 20px}
.wrap{max-width:860px;margin:0 auto;text-align:center}
.eyebrow{font-size:12px;color:var(--gold);margin-bottom:10px}
p.lead{max-width:640px;margin:0 auto;font-size:21px}
p.lead em{color:var(--gold-d)}
.families{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:44px}
.fam{padding:30px 22px}
.fam h3{font-family:Cinzel,serif;font-weight:500;font-size:15px;letter-spacing:.24em;color:var(--gold-d)}
.fam .role{font-style:italic;color:var(--muted);font-size:16px;margin-top:18px}
.fam .who{font-size:21px}
.memory{background:linear-gradient(180deg,var(--pearl),var(--ivory))}
.memory .list{display:grid;gap:6px;font-size:22px;margin-top:8px}
.zl{font-family:"Frank Ruhl Libre",serif;font-size:15px;color:var(--gold);margin-inline-start:6px}
.candle{width:34px;height:auto;margin:0 auto 6px;display:block}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:10px}
.card{display:block;text-decoration:none;padding:34px 18px 28px;transition:transform .3s}
.card:hover{transform:translateY(-4px)}
.card .num{font-family:Cinzel,serif;font-size:11px;letter-spacing:.3em;color:var(--gold)}
.card .script{font-size:38px;line-height:1.25;display:block;margin:4px 0}
.card .meta{font-size:17px;color:var(--muted)}
.card .go{display:inline-block;margin-top:14px;font-family:Cinzel,serif;font-size:11px;letter-spacing:.22em;color:var(--gold-d);border-bottom:1px solid var(--gold-l)}
.event{max-width:620px;margin:0 auto;padding:44px 26px 36px;text-align:center}
.event .place{font-family:Cinzel,serif;font-size:16px;letter-spacing:.14em}
.event dl{margin:24px 0 28px;display:grid;gap:14px}
.event dt{font-family:Cinzel,serif;font-size:10.5px;letter-spacing:.26em;color:var(--muted);text-transform:uppercase}
.event dd{font-size:21px}
.tbc{display:inline-block;font-size:15px;font-style:italic;color:var(--gold-d)}
.map{display:block;width:100%;max-width:620px;height:300px;margin:28px auto 0;border:1px solid rgba(201,171,116,.5);filter:sepia(.25) saturate(.8)}
.next{margin-top:40px}
.rsvp-card{max-width:620px;margin:0 auto;padding:44px clamp(20px,5vw,48px);text-align:left;background:#fff}
.field{margin-bottom:24px}
.field>label,.field legend{display:block;font-family:Cinzel,serif;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-d);margin-bottom:8px}
.req{color:var(--gold-l)}
.field fieldset{border:0}
.field input[type=text],.field input[type=email],.field input[type=tel],.field input[type=url],.field input[type=number],.field input[type=date],.field textarea,.field select{width:100%;padding:12px 14px;font:inherit;font-size:19px;color:var(--ink);background:var(--ivory);border:1px solid var(--line);border-radius:0;outline:none}
.field textarea{min-height:130px;resize:vertical}
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--gold-l);box-shadow:0 0 0 3px rgba(201,171,116,.18)}
.field [aria-invalid=true]{border-color:#b5675a}
.choices{display:flex;gap:12px;flex-wrap:wrap}
.choice{position:relative}
.choice input{position:absolute;opacity:0;inset:0;cursor:pointer}
.choice span{display:inline-block;min-width:110px;padding:10px 22px;text-align:center;border:1px solid var(--line);background:var(--ivory);font-size:18px;transition:all .2s}
.choice input:checked+span{background:var(--gold-grad);color:#fff;border-color:transparent}
.choice input:focus-visible+span{box-shadow:0 0 0 3px rgba(201,171,116,.35)}
.err{color:#a5574a;font-size:15px;margin-top:6px}
.help{color:var(--muted);font-size:15px;margin-top:4px}
.form-err{color:#a5574a;text-align:center;margin-bottom:14px}
.submit-row{text-align:center;margin-top:10px}
.thanks{text-align:center;padding:20px 0}
.thanks .script{font-size:54px;line-height:1.2}
.thanks p{font-size:21px;margin-top:8px}
.skel{height:52px;background:linear-gradient(90deg,var(--pearl),#fff,var(--pearl));background-size:200% 100%;animation:sh 1.4s infinite;margin-bottom:18px}
@keyframes sh{to{background-position:-200% 0}}
footer{padding:56px 20px 40px;text-align:center}
footer .mono{width:80px;margin:0 auto}
footer .script{font-size:34px;margin-top:6px}
footer .caps{font-size:11px;color:var(--muted)}
.reveal{opacity:0;transform:translateY(22px);transition:opacity 1s,transform 1s}
.reveal.in{opacity:1;transform:none}
@media (max-width:760px){
  body{font-size:18px}
  section{padding:64px 16px}
  .families,.cards{grid-template-columns:1fr}
  .top{justify-content:flex-end;padding-left:64px;gap:10px 14px}
  .top a.l{font-size:10px;letter-spacing:.12em}
  .cd{min-width:64px}
  .hero{padding:56px 16px 54px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.splash .mono,.enter,.reveal{opacity:1;transform:none}}