:root{--ink:#173f32;--forest:#0e3027;--gold:#b48d35;--gold2:#ead18a;--cream:#f7f0df;--paper:#fffdf7;--muted:#5f675f;--serif:"Playfair Display",Georgia,serif;--sans:"Manrope",Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.55;overflow-x:hidden}body.intro-open{overflow:hidden}a{color:inherit}.envelope-intro{position:fixed;inset:0;z-index:1000;background:radial-gradient(circle at 50% 35%,#345d4e 0,#173f32 42%,#09271f 100%);display:grid;place-items:center;color:white;transition:opacity .8s ease,visibility .8s}.envelope-intro.dismissed{opacity:0;visibility:hidden;pointer-events:none}.intro-glow{position:absolute;width:min(80vw,720px);aspect-ratio:1;border:1px solid rgba(234,209,138,.18);border-radius:50%;box-shadow:0 0 0 60px rgba(234,209,138,.03),0 0 0 120px rgba(234,209,138,.025)}.envelope-stage{position:relative;text-align:center;width:min(92vw,650px);padding:35px 20px}.intro-overline{text-transform:uppercase;letter-spacing:.28em;color:var(--gold2);font-size:12px;margin-bottom:24px}.envelope{width:min(72vw,390px);height:245px;margin:0 auto 28px;position:relative;filter:drop-shadow(0 24px 25px rgba(0,0,0,.25));perspective:900px}.envelope-back{position:absolute;inset:22px 0 0;background:#e3c985;border-radius:5px}.envelope-left,.envelope-right,.envelope-bottom{position:absolute;inset:22px 0 0}.envelope-left{clip-path:polygon(0 0,55% 53%,0 100%);background:#f1dda2}.envelope-right{clip-path:polygon(100% 0,45% 53%,100% 100%);background:#ead394}.envelope-bottom{clip-path:polygon(0 100%,50% 45%,100% 100%);background:#f6e6b7;z-index:3}.envelope-flap{position:absolute;top:22px;left:0;width:100%;height:62%;background:#f8e8b8;clip-path:polygon(0 0,100% 0,50% 100%);z-index:4;transform-origin:top;transition:transform 1s cubic-bezier(.2,.75,.2,1),z-index .2s .45s}.letter{position:absolute;left:8%;right:8%;top:38px;height:185px;background:#fffdf7;color:var(--ink);z-index:2;padding-top:28px;border:1px solid #d8bd73;transition:transform 1s .45s cubic-bezier(.2,.8,.2,1)}.letter:before{content:"";position:absolute;inset:9px;border:1px solid #e4d4a7}.letter span{display:block;font:70px/.9 var(--serif);color:var(--gold)}.letter small{text-transform:uppercase;letter-spacing:.2em}.wax-seal{position:absolute;left:50%;top:118px;translate:-50% 0;z-index:5;width:66px;height:66px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#d6b85c,#9a7124 70%);display:grid;place-items:center;font:15px var(--serif);box-shadow:0 5px 10px #5e451f60,inset 0 0 0 3px #efd487;transition:.35s}.wax-seal b{font-size:9px}.envelope-stage h1{font:clamp(44px,8vw,72px)/1 var(--serif);margin:10px 0 5px}.envelope-stage h1 em{color:var(--gold2);font-weight:500}.envelope-stage>p:not(.intro-overline){color:#e9ecdf;margin:10px 0 22px}.intro-button{background:var(--gold2);color:#173f32;gap:12px}.envelope-intro.opening .envelope-flap{transform:rotateX(180deg);z-index:1}.envelope-intro.opening .wax-seal{opacity:0;transform:scale(.65)}.envelope-intro.opening .letter{transform:translateY(-100px)}.hero{min-height:100svh;background:radial-gradient(circle at 76% 35%,rgba(231,203,125,.25),transparent 27%),linear-gradient(135deg,#fdf9ed,#f5ecd8);padding:22px clamp(20px,5vw,72px) 36px;position:relative;display:flex;flex-direction:column}nav{display:flex;align-items:center;justify-content:space-between;max-width:1240px;width:100%;margin:0 auto;z-index:2}.monogram{text-decoration:none;font:600 30px var(--serif);letter-spacing:2px}.monogram span{font-size:15px;color:var(--gold);padding:0 3px}.navlinks{display:flex;gap:28px}.navlinks a{text-decoration:none;font-size:14px;font-weight:600}.hero-grid{max-width:1240px;width:100%;margin:auto;display:grid;grid-template-columns:.82fr 1.18fr;gap:7vw;align-items:center;padding:50px 0 34px}.eyebrow{text-transform:uppercase;letter-spacing:.22em;color:#7d601e;font-size:13px;font-weight:700}.kicker{font-family:var(--serif);font-size:clamp(18px,2vw,25px);font-weight:500;margin:36px 0 0}.hero h1{font:600 clamp(68px,9vw,142px)/.84 var(--serif);margin:23px 0 34px;letter-spacing:-.04em}.hero h1 em,.closing em{color:var(--gold);font-style:italic;font-weight:500}.intro{font:500 clamp(17px,1.5vw,21px)/1.7 var(--serif);max-width:530px;color:#384b41;margin-bottom:34px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:54px;padding:0 27px;border-radius:999px;text-decoration:none;border:0;font:700 15px var(--sans);cursor:pointer;transition:.25s}.primary{background:var(--ink);color:white;box-shadow:0 10px 30px rgba(23,63,50,.2)}.button:hover{transform:translateY(-2px)}.portrait{margin:0;position:relative}.portrait:before{content:"";position:absolute;inset:-22px 10% 11%;border:1px solid var(--gold2);border-radius:50% 50% 8px 8px}.portrait img{display:block;position:relative;width:100%;height:min(68vh,730px);object-fit:cover;object-position:center 32%;border-radius:48% 48% 10px 10px;filter:saturate(.9) sepia(.06);box-shadow:0 22px 60px rgba(42,45,30,.18)}.portrait figcaption{position:absolute;right:-20px;bottom:26px;background:rgba(255,253,247,.95);backdrop-filter:blur(10px);padding:15px 20px;border-radius:4px;font:500 16px var(--serif);box-shadow:0 8px 30px #173f3220}.anniversary{position:absolute;z-index:2;top:2%;left:-34px;background:var(--ink);color:white;width:110px;height:110px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;font:600 44px/1 var(--serif);border:1px solid #d5ba6b;box-shadow:0 9px 25px #173f3238}.anniversary small{font:700 11px var(--sans);text-transform:uppercase;letter-spacing:.22em}.scroll-cue{margin:auto auto 0;text-decoration:none;font-size:13px;font-weight:600;letter-spacing:.08em}.scroll-cue span{display:inline-block;animation:bob 1.8s infinite}.quote{padding:130px 24px;text-align:center;background:var(--forest);color:white}.quote>p{font:500 clamp(30px,5vw,65px)/1.25 var(--serif);max-width:1000px;margin:35px auto}.quote>span{color:#e4e5db}.rings{height:42px;display:flex;justify-content:center}.rings i{display:block;width:38px;height:38px;border:2px solid var(--gold);border-radius:50%;margin:0 -4px}.date-panel{text-align:center;padding:110px 20px;background:linear-gradient(#fffdf7,#f5eedf)}.date-lockup{display:flex;align-items:center;justify-content:center;gap:clamp(18px,4vw,60px);margin:30px 0}.date-lockup span{font:600 clamp(20px,3vw,34px) var(--serif);min-width:120px}.date-lockup strong{font:600 clamp(100px,17vw,210px)/.75 var(--serif);color:var(--gold)}.countdown{max-width:720px;margin:42px auto 20px;display:flex;justify-content:center;align-items:start;gap:clamp(8px,2vw,26px);padding:25px 28px;border-top:1px solid #cbb77d;border-bottom:1px solid #cbb77d}.countdown div{min-width:88px}.countdown strong{display:block;font:600 clamp(34px,5vw,58px)/1 var(--serif);color:var(--ink);font-variant-numeric:tabular-nums}.countdown span{display:block;margin-top:10px;text-transform:uppercase;letter-spacing:.15em;font-size:11px;font-weight:700;color:#735f2d}.countdown i{font:500 32px var(--serif);color:#c0a153}.countdown-note{font-size:14px;font-weight:600;color:#665a3d}.text-button{background:none;border:0;border-bottom:1px solid var(--ink);padding:8px 0;color:var(--ink);font:700 14px var(--sans);cursor:pointer}.agenda{padding:110px clamp(20px,7vw,100px);background:#ebe2cd}.section-heading{text-align:center;margin-bottom:52px}.section-heading h2,.rsvp h2{font:600 clamp(48px,6vw,80px)/1 var(--serif);margin:14px 0}.event-grid{max-width:1080px;margin:auto;display:grid;grid-template-columns:1fr 1fr;box-shadow:0 30px 70px rgba(35,50,39,.14)}.event-card{min-height:470px;background:var(--paper);padding:45px;position:relative;text-align:center;display:flex;flex-direction:column;align-items:center}.event-card.dark{background:var(--ink);color:white;transform:translateY(32px)}.number{position:absolute;left:30px;top:25px;font:600 26px var(--serif);color:var(--gold)}.icon{font-size:40px;color:var(--gold);margin:35px 0 20px}.event-card h3{font:600 40px var(--serif);margin:8px}.event-card p{line-height:1.7}.time{font-size:14px;text-transform:uppercase;letter-spacing:.16em;color:var(--gold);font-weight:700}.event-card .button{margin-top:auto}.outline{border:1px solid var(--ink)}.gold{background:var(--gold2);color:#173126}.rsvp{padding:130px clamp(20px,8vw,130px);display:grid;grid-template-columns:.75fr 1.25fr;gap:8vw;align-items:start;background:var(--paper)}.rsvp-copy>p:last-child{line-height:1.7;color:var(--muted)}.rsvp-form{display:grid;grid-template-columns:1fr 1fr;gap:22px}.rsvp-form label{display:grid;gap:9px;font-size:14px;font-weight:700}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{width:100%;border:0;border-bottom:1px solid #a69d87;background:#f7f2e6;padding:15px 14px;font:16px var(--sans);border-radius:4px;color:var(--ink)}.rsvp-form input:focus,.rsvp-form select:focus,.rsvp-form textarea:focus{outline:2px solid var(--gold);outline-offset:2px}.full{grid-column:1/-1}.form-note{font-size:13px;color:var(--muted);margin:0;text-align:center}.closing{text-align:center;color:white;background:linear-gradient(rgba(8,41,31,.94),rgba(8,41,31,.98)),url("assets/unsplash-portrait.jpg") center/cover;padding:110px 20px}.big-50{font:600 clamp(120px,22vw,260px)/.8 var(--serif);color:var(--gold2)}.closing p{font-size:18px}.closing h2{font:600 clamp(45px,7vw,88px) var(--serif);margin:30px 0}.closing>span:last-child{letter-spacing:.3em;color:var(--gold2)}footer{text-align:center;padding:24px;background:#08251d;color:#e4e5db;font-size:13px}.reveal{opacity:0;transform:translateY(28px);transition:opacity .8s,transform .8s}.reveal.visible{opacity:1;transform:none}.petal{position:fixed;top:-30px;z-index:10;color:var(--gold2);pointer-events:none;animation:fall linear forwards}@keyframes fall{to{transform:translate3d(var(--drift),110vh,0) rotate(540deg);opacity:0}}@keyframes bob{50%{transform:translateY(5px)}}@media(max-width:800px){.navlinks{display:none}.hero{padding:18px 20px 28px}.hero-grid{grid-template-columns:1fr;padding-top:36px;gap:50px}.hero-copy{text-align:center}.hero h1{font-size:clamp(68px,21vw,98px)}.intro{margin-left:auto;margin-right:auto}.portrait{width:90%;margin:auto}.portrait img{height:58vh;min-height:480px}.portrait figcaption{right:-10px;left:20px;text-align:center}.anniversary{left:-20px;width:92px;height:92px}.date-lockup{gap:10px}.date-lockup span{min-width:75px;font-size:18px}.countdown{gap:5px;padding:20px 4px}.countdown div{min-width:65px}.countdown i{font-size:24px}.event-grid{grid-template-columns:1fr}.event-card.dark{transform:none}.rsvp{grid-template-columns:1fr}.rsvp-form{grid-template-columns:1fr}.rsvp-form>*{grid-column:1}.quote{padding:90px 20px}.envelope{height:220px}.envelope-stage{padding-top:10px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.petal{display:none}.envelope-flap,.letter{transition:none}}
