:root{--ink:#173c39;--gold:#b89155;--cream:#fbf6ee;--rose:#e9b7ae;--white:#fff}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:#263532;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.65}.hero{min-height:100svh;position:relative;display:grid;place-items:center;overflow:hidden;color:#fff}.hero-photo{position:absolute;inset:0;background:linear-gradient(135deg,#234f4b,#d7a48e 55%,#f5dfbf);}.hero-photo:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 70% 35%,rgba(255,255,255,.42),transparent 25%),linear-gradient(145deg,rgba(10,45,43,.2),rgba(0,0,0,.45))}.hero-overlay{position:absolute;inset:0;background:linear-gradient(0deg,rgba(7,32,30,.75),transparent 55%)}.hero-content{position:relative;text-align:center;padding:28px;max-width:900px}.eyebrow{letter-spacing:.2em;font-size:.72rem;font-weight:800;color:var(--gold)}h1{font-family:Georgia,serif;font-size:clamp(3.4rem,10vw,7rem);line-height:1;margin:18px 0}h1 span{color:#efc9a0;font-weight:400}h2{font-family:Georgia,serif;font-size:clamp(2rem,4vw,3.2rem);line-height:1.15;color:var(--ink)}h3{color:var(--ink)}section{max-width:1050px;margin:auto;padding:90px 24px}.intro{text-align:center}.lead{max-width:760px;font-size:1.15rem}.countdown{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:30px 0}.countdown span{background:#fff;border:1px solid #eadfce;border-radius:18px;padding:14px 20px;min-width:95px;box-shadow:0 12px 30px #254b4410}.countdown b{display:block;font-size:1.7rem;color:var(--ink)}button,.btn{border:0;border-radius:999px;padding:13px 22px;background:var(--ink);color:#fff;text-decoration:none;cursor:pointer;font-weight:700;display:inline-flex;justify-content:center}.primary{background:var(--gold);box-shadow:0 10px 30px #0002}.sticky-nav{position:sticky;top:0;z-index:5;background:#fffddfdd;backdrop-filter:blur(10px);display:flex;gap:18px;justify-content:center;padding:12px;overflow:auto}.sticky-nav a{color:var(--ink);font-weight:700;text-decoration:none;white-space:nowrap}.timeline,.cards,.info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.timeline article,.cards article,.info-grid article{background:#fff;border:1px solid #eadfce;border-radius:24px;padding:26px;box-shadow:0 15px 40px #254b440b}.timeline span{display:block;margin-top:10px;color:#68736f}.events{background:#f4eadc}.cards .icon{font-size:2rem}.cards small{display:block;color:#66716e;margin:10px 0}.cards .btn{margin-top:14px}.schedule{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid #dccdb9}.schedule p{margin:0;padding:16px;border-bottom:1px solid #dccdb9}.schedule b{color:var(--gold);margin-right:20px}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.photo{aspect-ratio:1;border-radius:22px;padding:20px;display:flex;align-items:end;color:#fff;font-weight:800;background:linear-gradient(145deg,#244d49,#d5a189)}.p2{background:linear-gradient(145deg,#9e7560,#ead0a7)}.p3{background:linear-gradient(145deg,#315b62,#a6c3c4)}.p4{background:linear-gradient(145deg,#6b4c42,#d8b18f)}.p5{background:linear-gradient(145deg,#4b675b,#d6c4a2)}.p6{background:linear-gradient(145deg,#173c39,#c59a60)}.rsvp{background:#fff;border-radius:35px;box-shadow:0 20px 60px #254b4410}.rsvp form,#messageForm{display:grid;gap:14px;max-width:680px}.rsvp label{font-weight:700}.rsvp input,.rsvp textarea,.rsvp select,#messageForm input,#messageForm textarea{width:100%;padding:14px;border:1px solid #d8d0c5;border-radius:14px;background:#fff;font:inherit;margin-top:6px}.rsvp textarea,#messageForm textarea{min-height:110px}.actions{display:flex;flex-wrap:wrap;gap:10px}.locked{display:none}footer{text-align:center;padding:40px;background:var(--ink);color:#fff}footer a{color:#f3d6a5}.msg{background:#fff;border-left:4px solid var(--gold);padding:14px 18px;margin:12px 0;border-radius:12px}@media(max-width:700px){section{padding:60px 18px}.timeline,.cards,.info-grid,.gallery{grid-template-columns:1fr}.schedule{grid-template-columns:1fr}.hero{min-height:88svh}h1{font-size:3.2rem}.sticky-nav{justify-content:flex-start}}
