:root {
  --cream:#f2eadb;
  --paper:#f8f1e4;
  --ink:#332a22;
  --rust:#ad5235;
  --olive:#626c57;
  --sage:#98a087;
  --line:rgba(51,42,34,.22);
}

* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--cream); font-family:"DM Sans",sans-serif; font-weight:300; }
body::before { content:""; position:fixed; inset:0; z-index:20; pointer-events:none; opacity:.16; background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.2'/%3E%3C/svg%3E"); mix-blend-mode:multiply; }
img { display:block; width:100%; height:100%; object-fit:cover; }
a { color:inherit; text-decoration:none; }
h1,h2,h3,blockquote { font-family:"Cormorant Garamond",serif; font-weight:400; }
.paper { background-color:var(--paper); background-image:linear-gradient(rgba(118,86,54,.025) 1px,transparent 1px); background-size:100% 5px; }
.section-label,.eyebrow { margin:0; font-size:10px; letter-spacing:.25em; text-transform:uppercase; }
.section-label.light { color:#ddd5c8; }
.handnote { font-family:"Kalam",cursive; color:var(--rust); }

.hero { position:relative; min-height:100svh; overflow:hidden; display:flex; align-items:flex-end; justify-content:center; padding:0 5vw 8vh; color:#fffaf0; text-align:center; }
.hero-image,.hero-shade { position:absolute; inset:0; }
.hero-image { object-position:center center; }
.hero-shade { background:linear-gradient(180deg,rgba(28,24,19,.34),rgba(28,24,19,.05) 42%,rgba(28,24,19,.7)); }
.monogram { position:absolute; z-index:2; top:28px; left:4vw; font-family:"Cormorant Garamond",serif; font-size:27px; letter-spacing:.1em; text-shadow:0 2px 12px rgba(0,0,0,.5); }
.monogram i { color:#e5ad8c; }
.hero-copy { position:relative; z-index:1; }
.hero h1 { margin:18px 0 24px; font-size:clamp(76px,11vw,168px); line-height:.72; letter-spacing:-.045em; text-shadow:0 3px 24px rgba(0,0,0,.28); }
.hero h1 i,.particulars h2 i,.rsvp h2 i,.welcome h2 i { color:#e4b094; }
.date-line { margin:0; font-size:11px; letter-spacing:.2em; text-transform:uppercase; }
.rsvp-jump { position:absolute; z-index:2; right:4vw; bottom:28px; font-size:9px; letter-spacing:.18em; text-transform:uppercase; }
.rsvp-jump span { margin-left:8px; font-size:15px; }

.welcome { position:relative; min-height:760px; padding:120px 7vw; display:grid; grid-template-columns:.65fr 1.35fr; gap:8vw; align-items:start; }
.welcome > div { max-width:720px; }
.welcome h2,.particulars h2,.rsvp h2 { margin:0 0 42px; font-size:clamp(62px,7vw,108px); line-height:.86; letter-spacing:-.04em; }
.welcome .lead { font-family:"Cormorant Garamond",serif; font-size:clamp(26px,3vw,42px); line-height:1.25; }
.welcome > div > p:last-child { max-width:580px; font-size:15px; line-height:1.8; }
.welcome > .handnote { position:absolute; left:12vw; bottom:80px; font-size:20px; transform:rotate(-3deg); }

.particulars { min-height:960px; padding:120px 7vw; background:var(--olive); color:#f6efe1; display:grid; grid-template-columns:.8fr 1.2fr; gap:9vw; }
.particulars h2 i { color:#dfaa87; }
.detail-list { border-top:1px solid rgba(255,255,255,.25); }
.detail-list article { padding:28px 0; border-bottom:1px solid rgba(255,255,255,.25); display:grid; grid-template-columns:110px 1fr; column-gap:24px; }
.detail-list span { grid-row:1 / 3; padding-top:8px; color:#d9cfc0; font-size:9px; letter-spacing:.2em; text-transform:uppercase; }
.detail-list h3 { margin:0; font-size:34px; }
.detail-list h3 a { border-bottom:1px solid rgba(255,255,255,.36); }
.detail-list p { margin:7px 0 0; color:#e1d9cc; font-size:13px; line-height:1.65; }

.rsvp { min-height:760px; padding:120px 7vw; display:grid; grid-template-columns:.9fr 1.1fr; gap:10vw; align-items:center; }
.rsvp-intro > p:last-child { max-width:450px; font-size:14px; line-height:1.8; }
.lookup-card { padding:52px; border:1px solid var(--line); background:rgba(255,255,255,.32); box-shadow:0 20px 60px rgba(54,42,31,.09); }
.lookup-card label { display:block; margin-bottom:12px; font-size:10px; letter-spacing:.2em; text-transform:uppercase; }
.lookup-row { display:grid; grid-template-columns:1fr auto; }
.lookup-row input { width:100%; min-width:0; padding:18px; border:1px solid var(--line); border-right:0; border-radius:0; background:#fffaf0; color:var(--ink); font:500 14px "DM Sans",sans-serif; letter-spacing:.16em; text-transform:uppercase; outline:none; }
.lookup-row input:focus { border-color:var(--rust); box-shadow:inset 0 0 0 1px var(--rust); }
.lookup-row button { border:0; padding:0 24px; background:var(--rust); color:#fff8ec; font:500 10px "DM Sans",sans-serif; letter-spacing:.12em; text-transform:uppercase; cursor:pointer; }
.lookup-row button:hover { background:#8e402b; }
.lookup-row button:focus-visible { outline:3px solid var(--ink); outline-offset:3px; }
.form-note { margin:16px 0 0; min-height:1.5em; color:#70655b; font-size:12px; line-height:1.55; }
.form-note.error { color:#923c2b; }
.deadline { margin-top:24px; color:var(--rust); font:400 17px "Cormorant Garamond",serif; }

.guest-note { position:relative; min-height:620px; padding:110px 7vw; display:grid; grid-template-columns:.65fr 1.35fr; gap:8vw; }
.guest-note > div { max-width:760px; }
.guest-note h2,.honeymoon h2 { margin:0 0 38px; font-size:clamp(62px,7vw,106px); line-height:.86; letter-spacing:-.04em; }
.guest-note h2 i { color:var(--rust); }
.guest-note p:not(.section-label) { max-width:650px; font-size:15px; line-height:1.85; }

.honeymoon { min-height:680px; padding:110px 7vw; display:grid; grid-template-columns:.9fr 1.1fr; gap:10vw; align-items:center; background:#7b6959; color:#f7efe2; }
.honeymoon h2 i { color:#e7b297; }
.honeymoon-copy { max-width:620px; }
.honeymoon-copy > p { font-size:15px; line-height:1.85; color:#eee4d7; }
.venmo-actions { margin-top:30px; display:grid; grid-template-columns:220px 1fr; gap:30px; align-items:center; }
.venmo-qr { display:block; padding:8px; background:#fff; box-shadow:0 14px 35px rgba(28,22,18,.22); transform:rotate(-1deg); }
.venmo-qr img { width:100%; height:auto; object-fit:contain; }
.venmo-qr:focus-visible { outline:3px solid #fff; outline-offset:5px; }
.venmo-button { display:inline-block; margin-top:22px; padding:17px 22px; border:1px solid rgba(255,255,255,.55); font-size:10px; font-weight:500; letter-spacing:.14em; text-transform:uppercase; }
.venmo-button:hover { background:#f7efe2; color:#4a3d33; }
.venmo-button:focus-visible { outline:3px solid #fff; outline-offset:4px; }
.venmo-note { max-width:440px; font-size:11px !important; color:#d8ccbf !important; }

.closing { min-height:720px; padding:100px 7vw; display:grid; grid-template-columns:1.2fr .8fr; gap:7vw; align-items:center; background:#cf9c89; }
.closing > img { height:auto; aspect-ratio:4/3; padding:12px; background:#eee3d1; box-shadow:0 18px 45px rgba(69,44,31,.22); transform:rotate(-1deg); }
.closing blockquote { margin:25px 0; font-size:clamp(45px,5vw,76px); line-height:1; letter-spacing:-.035em; }
.closing .handnote { margin-top:30px; color:#624434; font-size:18px; transform:rotate(-3deg); }

footer { min-height:250px; padding:70px 7vw; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:24px; background:#39372f; color:#ece4d5; }
footer p { margin:0; font-family:"Cormorant Garamond",serif; font-size:42px; }
footer nav { display:flex; flex-wrap:wrap; justify-content:center; gap:18px 30px; }
footer a { padding-bottom:4px; border-bottom:1px solid rgba(255,255,255,.38); font-size:9px; letter-spacing:.2em; text-transform:uppercase; }

@media (max-width:760px) {
  .hero { min-height:92svh; padding:0 22px 12vh; }
  .hero-image { object-position:52% center; }
  .monogram { left:22px; }
  .hero h1 { font-size:76px; line-height:.78; }
  .date-line { line-height:1.8; }
  .rsvp-jump { right:auto; left:22px; }
  .welcome { min-height:850px; display:block; padding:90px 22px; }
  .welcome h2,.particulars h2,.rsvp h2 { margin-top:25px; font-size:58px; }
  .welcome > .handnote { left:22px; bottom:55px; }
  .particulars { min-height:0; display:block; padding:90px 22px; }
  .detail-list { margin-top:55px; }
  .detail-list article { grid-template-columns:1fr; }
  .detail-list span { grid-row:auto; margin-bottom:8px; }
  .detail-list h3 { font-size:29px; }
  .rsvp { min-height:760px; display:block; padding:90px 22px; }
  .lookup-card { margin-top:50px; padding:28px 20px; }
  .lookup-row { grid-template-columns:1fr; gap:10px; }
  .lookup-row input { border-right:1px solid var(--line); }
  .lookup-row button { min-height:52px; }
  .guest-note { min-height:0; display:block; padding:90px 22px; }
  .guest-note h2,.honeymoon h2 { margin-top:25px; font-size:58px; }
  .honeymoon { min-height:0; display:block; padding:90px 22px; }
  .honeymoon-copy { margin-top:48px; }
  .venmo-actions { grid-template-columns:170px 1fr; gap:18px; }
  .venmo-button { line-height:1.5; }
  .closing { min-height:760px; display:flex; flex-direction:column; padding:70px 22px; }
  .closing blockquote { font-size:47px; }
}

@media (max-width:430px) {
  .venmo-actions { grid-template-columns:1fr; }
  .venmo-qr { width:min(230px,78vw); margin:0 auto; }
  .venmo-actions > div { text-align:center; }
}

@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }

.rsvp-page { background:var(--paper); }
.rsvp-header { min-height:110px; padding:24px 5vw; display:flex; align-items:center; justify-content:space-between; background:var(--olive); color:#f7efe2; }
.rsvp-header > p { margin:0; font-size:10px; letter-spacing:.18em; text-transform:uppercase; }
.rsvp-monogram { font:400 27px "Cormorant Garamond",serif; letter-spacing:.1em; }
.rsvp-monogram i { color:#e5ad8c; }
.response-shell { padding:90px 7vw 120px; display:grid; grid-template-columns:.8fr 1.2fr; gap:9vw; }
.response-intro { position:sticky; top:40px; align-self:start; }
.response-intro h1 { margin:25px 0 34px; font-size:clamp(62px,7vw,108px); line-height:.84; letter-spacing:-.045em; }
.response-intro h1 i { color:var(--rust); }
.response-intro > p:not(.section-label) { max-width:500px; line-height:1.75; }
.household-greeting { font:400 25px/1.35 "Cormorant Garamond",serif; }
.demo-banner { margin-top:30px; padding:14px 16px; border-left:3px solid var(--rust); background:#efe1cd; font-size:12px; }
.response-form { max-width:760px; }
.guest-response-card,.response-fieldset { margin:0 0 22px; padding:30px; border:1px solid var(--line); background:rgba(255,255,255,.4); }
.guest-response-card legend,.response-fieldset legend { padding:0 10px; font:400 29px "Cormorant Garamond",serif; }
.attendance-options { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.attendance-options label { cursor:pointer; }
.attendance-options input { position:absolute; opacity:0; }
.attendance-options span { display:block; padding:16px; border:1px solid var(--line); background:#fffaf0; text-align:center; font-size:11px; letter-spacing:.08em; text-transform:uppercase; }
.attendance-options input:checked + span { border-color:var(--rust); background:var(--rust); color:#fff; }
.attendance-options input:focus-visible + span { outline:3px solid var(--ink); outline-offset:3px; }
.response-fieldset > label { display:block; margin-bottom:12px; font-size:12px; }
.response-fieldset label span { color:#7a6e63; }
.response-fieldset textarea { width:100%; resize:vertical; padding:15px; border:1px solid var(--line); border-radius:0; background:#fffaf0; color:var(--ink); font:400 14px/1.6 "DM Sans",sans-serif; }
.response-fieldset textarea:focus { outline:2px solid var(--rust); outline-offset:2px; }
.response-submit { width:100%; min-height:58px; border:0; background:var(--rust); color:#fff; font:500 11px "DM Sans",sans-serif; letter-spacing:.15em; text-transform:uppercase; cursor:pointer; }
.response-submit:hover { background:#8e402b; }
.response-submit:focus-visible { outline:3px solid var(--ink); outline-offset:4px; }

@media (max-width:760px) {
  .rsvp-header { align-items:flex-start; gap:20px; }
  .rsvp-header > p { max-width:190px; text-align:right; line-height:1.7; }
  .response-shell { display:block; padding:70px 22px 90px; }
  .response-intro { position:static; }
  .response-intro h1 { font-size:62px; }
  .response-form { margin-top:60px; }
  .guest-response-card,.response-fieldset { padding:24px 18px; }
  .attendance-options { grid-template-columns:1fr; }
}
