:root{--ivory:#f7f2e8;--paper:#fffdf8;--gold:#b99757;--gold2:#d6bf86;--ink:#2f2a24;--muted:#7f7569;--shadow:0 24px 70px rgba(56,43,25,.14)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Montserrat,Arial,sans-serif;font-weight:300}.site.is-locked{height:100vh;overflow:hidden}.intro{position:fixed;inset:0;z-index:1000;background:linear-gradient(145deg,#fff,#f7f1e6);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;transition:opacity 1.1s ease,visibility 1.1s}.intro.hide{opacity:0;visibility:hidden}.intro-seq{text-align:center}.intro-xv,.intro-name,.intro-date{opacity:0;transform:translateY(14px);animation:appear 1.4s forwards}.intro-xv{font-family:"Cormorant Garamond",serif;font-size:72px;color:var(--gold);letter-spacing:.14em;animation-delay:.3s}.intro-name{font-family:Parisienne,cursive;font-size:64px;margin-top:-16px;animation-delay:1.3s}.intro-date{font-size:12px;letter-spacing:.42em;margin-top:14px;animation-delay:2.3s}.spark{position:absolute;width:8px;height:8px;border-radius:50%;background:var(--gold2);box-shadow:0 0 25px 8px rgba(214,191,134,.5);animation:spark 2.6s infinite}.intro .gold-btn{opacity:0;animation:appear 1s 3.2s forwards}.gold-btn,.outline-btn{border:0;border-radius:999px;padding:14px 22px;font:500 13px Montserrat,sans-serif;letter-spacing:.04em;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;transition:.25s}.gold-btn{background:linear-gradient(135deg,#a88648,#d8c18a);color:#fff;box-shadow:0 10px 30px rgba(185,151,87,.28)}.gold-btn:hover{transform:translateY(-2px)}.outline-btn{border:1px solid rgba(185,151,87,.7);background:transparent;color:var(--gold)}.floating-btn{position:fixed;right:16px;bottom:18px;z-index:90;width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.8);background:rgba(40,35,29,.65);color:white;backdrop-filter:blur(9px);font-size:19px}.hero,.finale{min-height:100svh;position:relative;display:grid;place-items:center;overflow:hidden}.hero-bg,.finale-bg{position:absolute;inset:-4%;background:url('assets/hero.jpeg') center 40%/cover no-repeat;transform:scale(1.04);animation:kenburns 18s ease-in-out infinite alternate}.hero-shade,.finale-shade{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(20,16,12,.10),rgba(20,16,12,.24) 55%,rgba(20,16,12,.48))}.hero-copy,.finale-copy{position:relative;z-index:3;text-align:center;color:white;padding:24px}.hero-copy h1{font:400 clamp(72px,22vw,150px) Parisienne,cursive;margin:0;text-shadow:0 6px 28px rgba(0,0,0,.2)}.hero-copy p{letter-spacing:.1em;font-size:14px}.eyebrow{font-size:11px;letter-spacing:.42em;font-weight:500}.gold{color:var(--gold)}.scroll-cue{position:absolute;bottom:28px;z-index:3;color:#fff;font-size:11px;letter-spacing:.1em;opacity:.88}.gold-particles{position:absolute;inset:0;background-image:radial-gradient(circle at 20% 30%,rgba(255,220,145,.8) 0 1px,transparent 2px),radial-gradient(circle at 77% 38%,rgba(255,220,145,.7) 0 1px,transparent 2px),radial-gradient(circle at 52% 76%,rgba(255,220,145,.6) 0 1px,transparent 2px);background-size:170px 170px,220px 220px,260px 260px;animation:drift 15s linear infinite;opacity:.7}.section-pad{padding:96px 22px}.ivory{background:var(--ivory)}.narrow{max-width:720px;margin:auto}.center{text-align:center}.quote-section{padding:110px 24px}.ornament{display:block;text-align:center;color:var(--gold);margin-bottom:24px}.lead-quote{font:500 clamp(28px,6vw,46px)/1.25 "Cormorant Garamond",serif;text-align:center;margin:0}.signature{font:46px Parisienne,cursive;color:var(--gold);text-align:center;margin-top:22px}.signature.light{color:white}.narrow h2,.event-card h2{font:500 clamp(40px,9vw,66px)/1.03 "Cormorant Garamond",serif;margin:12px 0 18px}.narrow p{line-height:1.8}.muted{color:var(--muted);font-size:13px}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:34px}.countdown div{padding:22px 7px;border-top:1px solid var(--gold2);border-bottom:1px solid var(--gold2);text-align:center}.countdown strong{display:block;font:500 38px "Cormorant Garamond",serif}.countdown span{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.timeline{max-width:880px;margin:70px auto 0}.moment{display:grid;grid-template-columns:1.1fr 1fr;gap:28px;align-items:center;margin:0 0 72px}.moment.reverse{grid-template-columns:1fr 1.1fr}.moment.reverse img{order:2}.moment img{width:100%;height:420px;object-fit:cover;border-radius:180px 180px 18px 18px;box-shadow:var(--shadow)}.moment span{color:var(--gold);font-size:11px;letter-spacing:.2em}.moment h3{font:500 36px "Cormorant Garamond",serif;margin:7px 0}.mini-gallery{max-width:900px;margin:20px auto 0;display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.mini-gallery img{width:100%;height:320px;object-fit:cover}.event{background:linear-gradient(145deg,#2c2823,#171512);color:white}.event-card{max-width:680px;margin:auto;text-align:center;padding:54px 28px;border:1px solid rgba(214,191,134,.55);box-shadow:inset 0 0 0 8px rgba(255,255,255,.02)}.big-time{font-size:18px;letter-spacing:.18em}.divider{width:90px;height:1px;background:var(--gold);margin:28px auto}.event-card h3{font:500 32px "Cormorant Garamond",serif;margin:0}.actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:28px}.gold-frame{padding:42px 24px;border:1px solid var(--gold2);position:relative}.gold-frame:after{content:"";position:absolute;inset:8px;border:1px solid rgba(185,151,87,.35);pointer-events:none}.form-card{margin-top:28px;display:grid;gap:16px;padding:28px;background:#fff;border:1px solid rgba(185,151,87,.28);box-shadow:0 14px 45px rgba(61,46,25,.07)}.form-card label{display:grid;gap:8px;font-size:12px;letter-spacing:.03em}.form-card input,.form-card textarea,.form-card select{width:100%;border:0;border-bottom:1px solid #d8cfbf;padding:12px 4px;background:transparent;font:400 15px Montserrat,sans-serif;outline:none}.form-card input:focus,.form-card textarea:focus,.form-card select:focus{border-color:var(--gold)}.form-note{margin:0!important;font-size:12px;color:var(--gold)}.gift-data{margin-top:22px;padding:16px;border-top:1px solid var(--gold2)}.finale-bg{background-image:url('assets/final.jpeg');background-position:center}.finale-shade{background:linear-gradient(to bottom,rgba(12,10,8,.25),rgba(12,10,8,.72))}.finale-copy{max-width:760px}.finale-copy p{font:500 clamp(28px,6vw,46px)/1.22 "Cormorant Garamond",serif}.finale-copy h2{font:500 clamp(34px,7vw,58px) "Cormorant Garamond",serif}.final-xv{font:400 74px "Cormorant Garamond",serif;color:var(--gold2);letter-spacing:.2em;margin-top:32px}.after-party{background:var(--ivory)}.reveal{opacity:0;transform:translateY(22px);transition:opacity .9s ease,transform .9s ease}.reveal.show{opacity:1;transform:none}.toast{position:fixed;left:50%;bottom:84px;transform:translate(-50%,20px);background:#27231e;color:#fff;padding:12px 18px;border-radius:999px;font-size:12px;opacity:0;pointer-events:none;z-index:999;transition:.3s}.toast.show{opacity:1;transform:translate(-50%,0)}
@keyframes appear{to{opacity:1;transform:none}}@keyframes spark{0%,100%{transform:scale(.7);opacity:.4}50%{transform:scale(1.5);opacity:1}}@keyframes kenburns{to{transform:scale(1.11) translateY(-1.5%)}}@keyframes drift{to{background-position:0 160px,40px 220px,-30px 260px}}
@media(max-width:700px){.section-pad{padding:78px 18px}.moment,.moment.reverse{grid-template-columns:1fr}.moment.reverse img{order:0}.moment img{height:420px}.mini-gallery{grid-template-columns:1fr 1fr}.mini-gallery img{height:220px}.mini-gallery img:last-child{grid-column:1/-1;height:300px}.countdown strong{font-size:29px}.intro-name{font-size:56px}.hero-copy p{font-size:12px}.event-card{padding:44px 18px}}
