:root{--sage:#838661;--ivory:#faf7ef;--champagne:#e9dfca;--olive:#343b29;--muted:#65694f;--line:#d5d2bd}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:95px}body{margin:0;background:var(--ivory);color:var(--olive);font:16px/1.7 Georgia,serif}a{color:inherit}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--olive);outline-offset:5px}.skip{position:fixed;top:-80px;z-index:10;background:white;padding:10px}.skip:focus{top:0}header{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;padding:15px 5%;background:#faf7eff5;border-bottom:1px solid var(--line)}.brand{text-decoration:none;font-size:27px;letter-spacing:4px}.brand i{font-size:19px;color:var(--muted)}nav{display:flex;gap:27px;align-items:center;font:11px/1.4 Arial,sans-serif;text-transform:uppercase;letter-spacing:1.4px}nav a{text-decoration:none}.nav-rsvp{border:1px solid var(--sage);padding:12px 22px}#menu{display:none}.hero{min-height:790px;position:relative;overflow:hidden;text-align:center;padding:100px 20px 35px;background:radial-gradient(ellipse at center,#faf7ef 30%,#e9e8d9 100%)}.eyebrow{font:11px/1.5 Arial,sans-serif;letter-spacing:3px;text-transform:uppercase;color:var(--muted)}h1{font-weight:400;font-size:clamp(65px,9.3vw,136px);line-height:1.1;letter-spacing:-5px;margin:30px 0 12px}h1 em{font-weight:400;font-size:.68em;color:var(--sage)}.full-names{font-size:13px;letter-spacing:2px}.rule{width:60px;border-top:1px solid var(--sage);margin:27px auto}.date{font-size:25px;letter-spacing:2px;margin-bottom:0}.location{margin-top:0;color:var(--muted)}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:35px;padding:15px 25px;background:var(--olive);color:var(--ivory);border:1px solid var(--olive);text-decoration:none;font:11px/1.6 Arial,sans-serif;letter-spacing:2px;text-transform:uppercase;cursor:pointer}.button:hover{background:#50573c}.button:disabled{opacity:.6;cursor:wait}.hero .button{margin-top:20px}.countdown{font:11px Arial,sans-serif;letter-spacing:1.5px;margin-top:25px}.scroll{display:block;margin-top:70px;text-decoration:none;font-style:italic;font-size:14px}.scroll span{display:block}.botanical{position:absolute;font-size:400px;line-height:1;color:var(--sage);opacity:.24;pointer-events:none}.botanical-left{left:-100px;top:240px;transform:rotate(-55deg)}.botanical-right{right:-100px;top:55px;transform:rotate(125deg)}.section{padding:100px max(6%,calc((100vw - 1120px)/2));scroll-margin-top:0}h2{font-weight:400;font-size:clamp(38px,4.8vw,62px);line-height:1.15;margin:18px 0 25px;letter-spacing:-1.5px}h2 em{color:var(--muted);font-weight:400}h3{font-size:23px;font-weight:400;margin:10px 0}.story{display:grid;grid-template-columns:1fr 1fr;gap:95px;align-items:center}.photo-placeholder{background:linear-gradient(135deg,#e5e4d4,#d5d8c3);display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;text-align:center;border:1px solid #c9cbb6;color:#555e43}.photo-placeholder span{font-size:65px}.photo-placeholder p{font-size:22px;font-style:italic;margin:5px}.photo-placeholder small,small,.tag{font:10px/1.7 Arial,sans-serif;letter-spacing:1.3px}.arch{border-radius:220px 220px 5px 5px;min-height:510px;outline:1px solid var(--line);outline-offset:12px}.placeholder{border-top:1px solid var(--line);padding-top:20px;margin-top:30px}.placeholder strong{font-size:17px;font-weight:400}.placeholder p{font:12px/1.8 Arial,sans-serif;color:var(--muted)}.details{text-align:center;background:var(--champagne)}.lead{color:var(--muted)}.schedule{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:55px}.schedule article{border-top:1px solid #b5b396;padding:25px 5px}.number{font-size:13px;color:var(--muted);font-style:italic}.schedule p{font-size:15px}.travel{display:grid;grid-template-columns:1fr 1fr;gap:100px}.travel-list article{border-bottom:1px solid var(--line);padding:10px 0 20px}.travel-list p{font-size:14px;color:var(--muted)}.party{text-align:center;padding-top:35px}.party-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;max-width:650px;margin:40px auto 0}.person .photo-placeholder{border-radius:180px 180px 0 0;min-height:310px}.person p{font-style:italic;color:var(--muted);margin-top:0}.registry{text-align:center;background:var(--sage);color:var(--ivory)}.registry .eyebrow,.registry h2 em{color:var(--ivory)}.registry .tag{margin-top:30px}.rsvp{display:grid;grid-template-columns:1fr 1fr;gap:90px}.privacy{font:12px/1.8 Arial,sans-serif;color:var(--muted);margin-top:35px}form{display:grid;gap:17px}label{display:grid;gap:7px;font:12px/1.6 Arial,sans-serif}label span{color:var(--muted)}input,select,textarea{border:1px solid #b9bea6;background:#fffdf7;border-radius:0;padding:12px;color:var(--olive);width:100%;font:16px/1.4 Arial,sans-serif}label small{letter-spacing:0;font-size:11px}#rsvp-status{margin:0;font:14px/1.6 Arial,sans-serif}footer{text-align:center;border-top:1px solid var(--line);padding:45px 20px;font-size:12px;letter-spacing:1px}.footer-names{font-size:35px;letter-spacing:-1px;margin:0}footer span{font-style:italic;color:var(--muted)}.admin{max-width:1100px;margin:auto;padding:35px 20px}.admin form{max-width:450px}.admin-tools{display:flex;flex-wrap:wrap;gap:15px;margin:25px 0}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;font:13px/1.5 Arial,sans-serif}td,th{text-align:left;padding:12px;border-bottom:1px solid var(--line);white-space:pre-wrap;min-width:110px}[hidden]{display:none!important}@media(max-width:800px){header{padding:12px 6%}#menu{display:block;background:transparent;border:1px solid var(--line);padding:8px 15px;color:var(--olive)}nav{display:none;position:absolute;top:70px;left:0;right:0;padding:25px 6%;background:var(--ivory);flex-direction:column;align-items:stretch;gap:22px;border-bottom:1px solid var(--line)}nav.open{display:flex}.hero{padding-top:80px;min-height:740px}h1{letter-spacing:-3px}.botanical{font-size:260px;opacity:.15}.botanical-left{left:-120px}.botanical-right{right:-120px}.section{padding:65px 7%}.story,.travel,.rsvp{grid-template-columns:1fr;gap:45px}.arch{min-height:390px;max-width:420px;width:90%;margin:auto}.schedule{grid-template-columns:1fr;gap:15px}.party-grid{gap:20px}.person .photo-placeholder{min-height:210px}.person h3{font-size:20px}.photo-placeholder small{font-size:8px}.scroll{margin-top:50px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.admin h1{font-size:48px;letter-spacing:-1px}
.hero .countdown{font-size:18px;line-height:1.6}
.hero .scroll{font-size:22px;line-height:1.6}

/* Photo visibility: lower --hero-wash for stronger photos; higher for softer photos. */
.hero{--hero-wash:.78;--photo-loop-duration:100s;isolation:isolate}
.hero-photos{position:absolute;inset:0;z-index:-3;overflow:hidden;pointer-events:none;background:var(--champagne)}
.hero-photo-track{display:flex;width:max-content;height:100%;animation:hero-drift var(--photo-loop-duration) linear infinite;will-change:transform}
.hero-photo-group{display:flex;flex-shrink:0;height:100%}
.hero-photo-frame{position:relative;width:clamp(300px,45vw,760px);height:100%;flex-shrink:0;overflow:hidden;background:linear-gradient(145deg,#b0b79a,#687250)}
.hero-photo-frame:nth-child(even){background:linear-gradient(35deg,#cab99a,#8b9375)}
.hero-photo-frame img{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center;filter:saturate(.75)}
.hero-photo-frame>span{position:absolute;top:72%;width:100%;text-align:center;color:var(--olive);font:11px/1.5 Arial,sans-serif;letter-spacing:2px}
.hero::after{content:'';position:absolute;inset:0;z-index:-2;background:rgba(250,247,239,var(--hero-wash));pointer-events:none}
.hero .botanical{z-index:-1;opacity:.13}
.hero-motion{position:absolute;right:20px;bottom:15px;background:var(--ivory);border:1px solid var(--line);color:var(--olive);padding:8px 12px;font:10px/1.5 Arial,sans-serif;letter-spacing:1px;cursor:pointer}
.photos-paused .hero-photo-track{animation-play-state:paused}
@keyframes hero-drift{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.hero-photo-track{animation:none;will-change:auto}.hero-motion{display:none}}
