:root{--bg:#171217;--cream:#f7efe7;--gold:#dcb469;--rose:#c0707d;--ink:#2a2328;--muted:#bcb0b6}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:#fff;font-family:"DM Sans",sans-serif}.progress{position:fixed;z-index:99;top:0;left:0;height:3px;background:var(--gold);width:0}.nav{position:absolute;z-index:10;top:0;left:0;width:100%;display:flex;justify-content:space-between;align-items:center;padding:28px 5vw}.brand{font-weight:800;letter-spacing:.14em;color:#fff;text-decoration:none}.brand span{color:var(--gold)}.navlinks{display:flex;gap:26px}.navlinks a{color:#fff;text-decoration:none;font-size:.86rem;opacity:.82}.hero{min-height:100svh;position:relative;display:flex;align-items:center;overflow:hidden}.hero-bg{position:absolute;inset:0;background:url("assets/hero.jpg") center/cover no-repeat;transform:scale(1.03)}.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(14,10,14,.92) 0%,rgba(14,10,14,.64) 46%,rgba(14,10,14,.15) 100%),linear-gradient(0deg,rgba(14,10,14,.65),transparent 50%)}.hero-content{position:relative;z-index:2;max-width:820px;margin-left:7vw;padding:120px 0}.eyebrow{font-size:.78rem;letter-spacing:.2em;font-weight:800;color:var(--gold);margin:0 0 18px}.hero h1,.section h2{font-family:"Playfair Display",serif}.hero h1{font-size:clamp(3.4rem,7vw,7.2rem);line-height:.92;margin:0}.hero h1 em,.choice em{color:var(--gold);font-style:italic}.lead{max-width:610px;font-size:1.25rem;line-height:1.7;color:var(--cream);margin:30px 0}.actions{display:flex;gap:12px;flex-wrap:wrap}.btn{padding:14px 20px;border-radius:999px;border:1px solid rgba(255,255,255,.35);font:inherit;font-weight:700;text-decoration:none;cursor:pointer}.primary{background:var(--gold);color:#201820;border-color:var(--gold)}.ghost{background:rgba(255,255,255,.08);color:#fff}.scroll{position:absolute;z-index:2;right:4vw;bottom:32px;color:#fff;text-decoration:none;font-size:.7rem;letter-spacing:.18em}.scroll span{color:var(--gold);font-size:1.2rem}.section{padding:110px 7vw}.section-head{max-width:800px;margin-bottom:55px}.section-head h2{font-size:clamp(2.7rem,5vw,5rem);margin:0 0 18px}.section-head p{font-size:1.08rem;line-height:1.8;color:var(--muted)}.split{display:grid;grid-template-columns:1.2fr .8fr;gap:30px;align-items:stretch}.split img{width:100%;height:650px;object-fit:cover;border-radius:22px}.quote{border:1px solid rgba(255,255,255,.13);border-radius:22px;padding:55px;display:flex;flex-direction:column;justify-content:center;background:#211a21}.quote span{font:6rem "Playfair Display";color:var(--gold);line-height:.5}.quote p{font:2.2rem/1.35 "Playfair Display";margin:25px 0}.wedding,.adventure{background:var(--cream);color:var(--ink)}.section-head.light p{color:#766a70}.wedding-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px}.wedding figure{margin:0}.wedding img{width:100%;height:650px;object-fit:cover;border-radius:20px}.wedding figcaption{padding:15px 4px;font-weight:700}.family-grid{display:grid;grid-template-columns:1.25fr .75fr;grid-template-rows:300px 300px;gap:18px}.family-grid img{width:100%;height:100%;object-fit:cover;border-radius:20px}.family-grid .tall{grid-row:1/3}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.card{background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 16px 40px rgba(38,26,31,.09)}.card img{width:100%;height:430px;object-fit:cover}.card div{padding:22px;display:flex;flex-direction:column;gap:5px}.card span{color:#776b70}.memory-screen{background:#262027;border:1px solid #4b4249;border-radius:26px;padding:18px;display:grid;grid-template-columns:repeat(4,1fr);gap:12px;box-shadow:0 40px 80px rgba(0,0,0,.35)}.memory-screen button{border:0;padding:0;background:none;cursor:pointer;overflow:hidden;border-radius:13px}.memory-screen img{width:100%;height:200px;object-fit:cover;display:block;transition:.35s}.memory-screen button:hover img{transform:scale(1.06);filter:brightness(1.1)}.letter{background:linear-gradient(135deg,#efe4d8,#faf5ef);color:var(--ink)}.letter-card{max-width:900px;margin:auto;background:#fff;padding:clamp(35px,6vw,80px);border-radius:24px;box-shadow:0 20px 60px rgba(70,45,55,.1)}.letter-card h2{font-size:4rem;margin:0 0 28px}.letter-card>p:not(.eyebrow){font:1.28rem/1.85 "Playfair Display";color:#4c4146}.signature{margin-top:40px;font-size:1.2rem;line-height:1.7;color:var(--rose)}.choice{min-height:85vh;display:grid;place-items:center;text-align:center}.choice-inner h2{font-size:clamp(2.6rem,5vw,5rem);line-height:1.12}.choice-buttons{display:flex;justify-content:center;gap:16px;margin:40px 0}.yes{min-width:190px;padding:18px 28px;border:0;border-radius:999px;background:var(--gold);font-weight:800;font-size:1rem;cursor:pointer}.yes:last-child{background:var(--rose);color:#fff}#answer{min-height:30px;color:var(--cream);font-weight:700}footer{display:flex;justify-content:space-between;padding:28px 7vw;border-top:1px solid rgba(255,255,255,.1);color:var(--muted);font-size:.8rem}dialog{padding:0;border:0;background:transparent;max-width:min(92vw,1000px)}dialog::backdrop{background:rgba(0,0,0,.88)}dialog img{max-width:100%;max-height:85vh;border-radius:18px;display:block}.close{position:absolute;right:10px;top:10px;width:42px;height:42px;border:0;border-radius:50%;font-size:1.6rem;cursor:pointer}.reveal{opacity:0;transform:translateY(25px);transition:opacity .8s ease,transform .8s ease}.reveal.visible{opacity:1;transform:none}@media(max-width:800px){.navlinks{display:none}.hero-shade{background:linear-gradient(0deg,rgba(14,10,14,.9),rgba(14,10,14,.25)),linear-gradient(90deg,rgba(14,10,14,.55),transparent)}.hero-content{margin:0 7vw;align-self:flex-end;padding-bottom:110px}.section{padding:80px 6vw}.split,.wedding-grid,.cards{grid-template-columns:1fr}.split img,.wedding img{height:500px}.family-grid{grid-template-columns:1fr;grid-template-rows:auto}.family-grid .tall{grid-row:auto}.family-grid img{height:360px}.memory-screen{grid-template-columns:repeat(2,1fr)}.memory-screen img{height:160px}.letter-card h2{font-size:3rem}.choice-buttons{flex-direction:column;align-items:center}footer{gap:15px;flex-direction:column}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.reveal{opacity:1;transform:none;transition:none}}