:root{--ink:#2d2a26;--muted:#756f68;--paper:#fbfaf7;--soft:#f0ece5;--line:#ddd4ca;--sage:#637463;--sage-dark:#3f523f;--rose:#a66d69;--white:#ffffff;--shadow:0 24px 70px rgba(45,42,38,0.12)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--paper);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{color:inherit}button,input,textarea{font:inherit}.hero{position:relative;min-height:88vh;display:grid;align-items:end;overflow:hidden;background:var(--ink)}.hero-media{position:absolute;inset:0;background:linear-gradient(90deg,rgba(45,42,38,.86),rgba(45,42,38,.28)),url(/images/hero.png) 50% /cover;transform:scale(1.01)}.hero-content{position:relative;width:min(1120px,calc(100% - 40px));margin:0 auto;padding:120px 0 96px;color:var(--white)}.hero-content h1{max-width:760px;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(4rem,10vw,8rem);font-weight:400;line-height:.95}.hero-content p:not(.eyebrow){max-width:620px;margin:24px 0 0;color:rgba(255,255,255,.86);font-size:1.08rem;line-height:1.7}.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px}.eyebrow{margin:0 0 14px;color:var(--rose);font-size:.76rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.guest-type-section{background:var(--paper);border-bottom:1px solid var(--line)}.guest-type-inner{display:grid;grid-template-columns:minmax(0,.8fr) minmax(320px,.8fr);grid-gap:36px;gap:36px;align-items:center;width:min(1120px,calc(100% - 40px));margin:0 auto;padding:34px 0}.guest-type-inner h2{margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(2rem,4vw,3.2rem);font-weight:400;line-height:1.05}.guest-type-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px;gap:14px}.guest-type-actions a{display:flex;align-items:center;justify-content:center;min-height:76px;border:1px solid var(--line);border-radius:8px;padding:18px;color:var(--sage-dark);background:var(--white);box-shadow:0 16px 44px rgba(45,42,38,.08);font-size:1.08rem;font-weight:800;text-decoration:none;transition:transform .16s ease,border-color .16s ease,background .16s ease}.guest-type-actions a:hover{transform:translateY(-2px);border-color:var(--sage);background:#f7faf4}.section{width:min(1120px,calc(100% - 40px));margin:0 auto;padding:86px 0}.section h2{margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.2rem,5vw,4rem);font-weight:400;line-height:1.05}.section-copy{max-width:650px;margin:22px 0 0;color:var(--muted);font-size:1rem;line-height:1.75}.rsvp-section{display:grid;grid-template-columns:minmax(0,.92fr) minmax(320px,.68fr);grid-gap:56px;gap:56px;align-items:start}.details-list{display:grid;grid-gap:14px;gap:14px}.detail-item,.rsvp-form{border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.72);box-shadow:var(--shadow)}.detail-item{padding:22px}.detail-item span{display:block;color:var(--sage-dark);font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.detail-item p{margin:10px 0 0;color:var(--muted);line-height:1.65}.text-link{display:inline-block;margin-top:24px;color:var(--sage-dark);font-weight:700;text-decoration-thickness:1px;text-underline-offset:5px}.timeline-section{width:100%;max-width:none;padding:96px max(20px,calc((100vw - 1120px) / 2));background:linear-gradient(180deg,rgba(251,250,247,.62),rgba(240,236,229,1)),var(--soft)}.section-heading{width:min(1120px,100%);margin:0 auto 34px}.section-heading.compact{width:100%}.timeline-controls{display:flex;width:min(1120px,100%);margin:0 auto 22px;gap:10px}.timeline-controls button{min-height:44px;border:1px solid var(--line);border-radius:999px;padding:0 18px;color:var(--sage-dark);background:rgba(255,255,255,.72);font-weight:800;cursor:pointer}.timeline-controls button.active{color:var(--white);border-color:var(--sage-dark);background:var(--sage-dark)}.timeline-intro{width:min(1120px,100%);margin:0 auto 28px;color:var(--muted);line-height:1.65}.timeline{width:min(1120px,100%);margin:0 auto;padding:0;list-style:none;border-top:1px solid rgba(99,116,99,.22)}.timeline li{display:grid;grid-template-columns:96px minmax(0,1fr);grid-gap:30px;gap:30px;position:relative;padding:30px 0 30px 28px;border-bottom:1px solid rgba(99,116,99,.22);opacity:0;transform:translateY(18px);transition:opacity .52s ease,transform .52s ease;transition-delay:var(--item-delay,0s)}.timeline li:before{content:"";position:absolute;top:38px;left:0;width:10px;height:10px;border:2px solid var(--sage-dark);border-radius:999px;background:var(--soft)}.timeline li.is-visible{opacity:1;transform:translateY(0)}.timeline time{color:var(--sage-dark);font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.timeline h3{margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.35rem,3vw,2rem);font-weight:400}.timeline p{margin:8px 0 0;color:var(--muted);line-height:1.65}.timeline-item-body{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:18px;gap:18px;align-items:start}.map-button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;border:1px solid var(--sage);border-radius:999px;padding:0 15px;color:var(--sage-dark);background:rgba(255,255,255,.68);font-size:.88rem;font-weight:800;text-decoration:none;white-space:nowrap}.map-button:hover{background:var(--white)}.interest-section{padding-top:78px}.interest-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:16px;gap:16px}.interest-item{min-height:180px;border:1px solid var(--line);border-radius:8px;padding:24px;background:rgba(255,255,255,.74);box-shadow:0 18px 52px rgba(45,42,38,.08)}.interest-item h3{margin:0;color:var(--sage-dark);font-size:1rem}.interest-item p{margin:14px 0 0;color:var(--muted);line-height:1.7}.rsvp-form{display:grid;grid-gap:18px;gap:18px;padding:26px}.form-row{display:grid;grid-gap:8px;gap:8px}.attendance-group legend,.form-row label{color:var(--ink);font-size:.9rem;font-weight:700}.form-row input,.form-row textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:13px 14px;color:var(--ink);background:var(--white);outline:none}.form-row textarea{resize:vertical}.form-row input:focus,.form-row textarea:focus{border-color:var(--sage);box-shadow:0 0 0 3px rgba(99,116,99,.18)}.attendance-group{display:grid;grid-gap:10px;gap:10px;margin:0;padding:0;border:0}.attendance-group label{display:flex;align-items:center;gap:10px;min-height:44px;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--white)}.attendance-group input{width:18px;height:18px;accent-color:var(--sage)}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;border-radius:999px;padding:0 22px;font-weight:800;text-decoration:none;transition:transform .16s ease,opacity .16s ease,background .16s ease}.primary-button{border:0;color:var(--white);background:var(--sage-dark);cursor:pointer}.secondary-button{border:1px solid rgba(255,255,255,.58);color:var(--white);background:rgba(255,255,255,.08)}.primary-button:hover,.secondary-button:hover{transform:translateY(-1px)}.primary-button:disabled{cursor:not-allowed;opacity:.68}.form-status{margin:0;border-radius:8px;padding:13px 14px;line-height:1.45}.form-status.success{color:#24442c;background:#e8f2e8}.form-status.error{color:#74312f;background:#f6e4e2}@media (max-width:780px){.hero{min-height:82vh}.hero-media{background:linear-gradient(180deg,rgba(45,42,38,.22),rgba(45,42,38,.9)),url(/images/hero.jpg) 50% /cover}.hero-content{padding:96px 0 58px}.hero-content,.section{width:min(100% - 28px,620px)}.section{padding:62px 0}.guest-type-inner{width:min(100% - 28px,620px);gap:24px}.guest-type-actions,.guest-type-inner,.rsvp-section{grid-template-columns:1fr}.rsvp-section{gap:32px}.timeline-section{padding:62px 14px}.timeline li{grid-template-columns:70px minmax(0,1fr);gap:18px;padding-left:22px}.timeline-item-body{grid-template-columns:1fr}.map-button{width:-moz-fit-content;width:fit-content}.interest-grid{grid-template-columns:1fr}.interest-item{min-height:auto}.rsvp-form{padding:18px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.timeline li{opacity:1;transform:none;transition:none}}