:root{--cream:#f7f3eb;--paper:#fbf9f4;--ink:#332b2a;--muted:#786d66;--wine:#722f3a;--wine-dark:#54232d;--line:#d9cfc2;--serif:"Cormorant Garamond",Georgia,serif;--sans:"Manrope",Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--cream);color:var(--ink);font:16px/1.65 var(--sans);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='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.10'/%3E%3C/svg%3E");background-size:180px}a{color:inherit}.demo-ribbon{position:relative;z-index:2;background:#f2e7d8;color:#694f40;text-align:center;padding:8px 16px;font-size:12px;letter-spacing:.06em}.hero{background:var(--wine-dark);color:#fff8ee;padding:clamp(22px,5vw,64px) 20px 30px;overflow:hidden}.hero-frame{max-width:1180px;min-height:min(680px,77vw);margin:auto;border:1px solid #bc9290;position:relative;display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:clamp(30px,7vw,92px)}.hero-copy{position:relative;z-index:1;padding-left:4%}.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:11px;font-weight:700;color:var(--wine);margin:0 0 19px}.eyebrow.light{color:#e3c7b7}.hero h1{font:500 clamp(66px,9vw,118px)/.8 var(--serif);letter-spacing:-.045em;margin:0 0 24px}.hero h1 span{font-size:.58em;color:#dfb8a8;font-style:italic}.hero-date{font:500 24px var(--serif);letter-spacing:.04em;margin:0 0 15px}.hero-intro{color:#eadbd3;font-size:14px;margin:0 0 29px}.button{display:inline-flex;justify-content:center;align-items:center;gap:18px;min-height:52px;padding:13px 23px;text-decoration:none;border:1px solid transparent;font:600 12px var(--sans);letter-spacing:.03em;cursor:pointer;transition:background .2s,color .2s,transform .2s}.button:hover{transform:translateY(-2px)}.button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #c99774;outline-offset:3px}.button-light{background:#f7f1e8;color:var(--wine-dark)}.button-light:hover{background:#e8d8c7}.portrait-wrap{width:min(100%,410px);justify-self:end;position:relative;margin-right:2%}.portrait{padding:10px;border:1px solid #bc9290;background:#64313a;box-shadow:15px 15px 0 rgba(35,17,22,.18)}.portrait svg{display:block;width:100%;height:auto}.portrait-caption{display:block;text-align:right;margin-top:13px;color:#e0c6b8;font:italic 16px var(--serif)}.hero-ornament{position:absolute;color:#d9b7a4;font-size:42px;left:49%;bottom:6%;opacity:.8}.countdown{max-width:1120px;margin:26px auto 0;display:flex;justify-content:center;gap:clamp(18px,5vw,64px);text-align:center;color:#f5e8de}.countdown-item strong{display:block;font:500 32px var(--serif)}.countdown-item span{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:#d8bdb1}.countdown-message{font:italic 21px var(--serif)}.section{padding:clamp(76px,10vw,130px) 24px}.welcome,.dress-section,.thanks{text-align:center}.welcome{max-width:830px;margin:auto;position:relative}.section h2{font:500 clamp(43px,6vw,70px)/.98 var(--serif);letter-spacing:-.025em;margin:0 0 23px}.section h2 em{color:var(--wine);font-weight:400}.body-copy{max-width:590px;margin:0 auto;color:#625952;font-size:15px}.signature{font:italic 25px var(--serif);color:var(--wine);margin:25px 0 0}.flourish{display:block;color:#a67b70;font:42px var(--serif);margin-top:28px}.schedule-section,.places-section{max-width:1080px;margin:0 auto}.section-heading{text-align:center;margin-bottom:52px}.section-heading .subnote,.subnote{font-size:12px;color:var(--muted);margin-top:9px}.timeline{max-width:710px;margin:auto}.timeline-item{display:grid;grid-template-columns:86px 20px 1fr;gap:20px;position:relative;padding:0 0 36px}.timeline-item:not(:last-child):after{content:"";position:absolute;left:95px;top:16px;bottom:-2px;border-left:1px solid #cdbbb0}.timeline-item time{font:500 22px var(--serif);color:var(--wine);text-align:right}.timeline-dot{width:9px;height:9px;background:var(--wine);border:2px solid var(--cream);box-shadow:0 0 0 1px var(--wine);border-radius:50%;margin:9px auto 0;z-index:1}.timeline-item h3,.place-card h3{font:500 27px/1.1 var(--serif);margin:0 0 6px}.timeline-item p,.place-card p{margin:0;color:#716760;font-size:13px}.places-section{padding-top:52px}.place-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.place-card{min-height:260px;border:1px solid var(--line);padding:32px;background:rgba(255,255,255,.25);position:relative}.place-number{display:block;color:var(--wine);font-size:10px;letter-spacing:.15em;font-weight:700;margin-bottom:30px}.place-time{margin-top:18px!important;color:var(--ink)!important;font-weight:600!important}.no-link{display:block;margin-top:21px;color:#857b73;font-size:11px;border-top:1px solid var(--line);padding-top:12px}.dress-section{padding-top:50px}.dress-section .body-copy{margin-bottom:30px}.palette{display:flex;justify-content:center;gap:clamp(18px,4vw,44px);flex-wrap:wrap}.palette div{display:flex;align-items:center;gap:10px;font-size:12px}.palette i{display:inline-block;width:30px;height:30px;border-radius:50%;background:var(--swatch);border:1px solid rgba(40,30,20,.12)}.rsvp-section{background:var(--wine-dark);color:#fff8ee;padding-top:86px;padding-bottom:94px}.rsvp-section .section-heading{margin-bottom:40px}.rsvp-section .section-heading p:last-child{color:#e3d3c9;font-size:13px}.rsvp-section h2{margin-bottom:12px}.rsvp-section form{max-width:730px;margin:auto}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:23px 20px}.field{min-width:0;border:0;padding:0;margin:0}.field.full{grid-column:1/-1}.field>label,.field legend{display:block;font-size:12px;font-weight:600;margin:0 0 9px}.field label span,.field legend span{color:#e7baa4}.field .optional{color:#d3b9ae;font-size:10px;font-weight:400;margin-left:6px}.field input:not([type=radio]),.field select,.field textarea{width:100%;min-height:49px;border:1px solid #a77a79;background:#fffaf3;color:#342729;padding:12px 14px;border-radius:0;font:14px var(--sans)}.field textarea{resize:vertical}.radio-row{display:flex;gap:12px}.radio-card{flex:1;position:relative;cursor:pointer}.radio-card input{position:absolute;opacity:0}.radio-card span{display:flex;align-items:center;min-height:50px;padding:10px 14px;border:1px solid #a77a79;color:#fff5ea;font-size:12px}.radio-card input:checked+span{background:#f7eee3;color:var(--wine-dark);border-color:#f7eee3}.radio-card input:focus-visible+span{outline:3px solid #c99774;outline-offset:3px}.error{display:block;min-height:18px;color:#ffd7c2;font-size:11px;padding-top:3px}.field.invalid input,.field.invalid select{border-color:#ffc4a5}.submit-button{margin-top:14px;min-width:210px}.form-note{font-size:11px;color:#d6c0b7;margin-top:13px}.success-message{padding:15px 18px;border:1px solid #cfb49e;background:#67404a;color:#fff7ed;font-size:13px;margin-top:22px}.success-message[hidden]{display:none}.thanks{padding-top:86px}.thanks .flourish{margin:0 0 17px}.top-link{display:inline-block;margin-top:34px;color:var(--wine);text-decoration:none;font-size:12px;border-bottom:1px solid #b7978c;padding-bottom:4px}footer{text-align:center;border-top:1px solid var(--line);padding:19px 12px;color:#81766d;font-size:10px;letter-spacing:.06em}footer span{color:var(--wine)}
@media(max-width:720px){.hero{padding:15px 13px 24px}.hero-frame{min-height:0;padding:35px 20px 28px;grid-template-columns:1fr;text-align:center}.hero-copy{padding:0}.hero h1{font-size:clamp(66px,18vw,100px)}.hero-intro{font-size:13px}.portrait-wrap{width:min(76%,310px);justify-self:center;margin:34px 0 0}.portrait-caption{text-align:center}.hero-ornament{display:none}.countdown{gap:18px}.countdown-item strong{font-size:26px}.countdown-item span{font-size:8px}.section{padding:76px 21px}.section-heading{margin-bottom:38px}.section h2{font-size:clamp(43px,12vw,60px)}.timeline-item{grid-template-columns:59px 16px 1fr;gap:13px;padding-bottom:29px}.timeline-item time{font-size:19px}.timeline-item:not(:last-child):after{left:66px}.timeline-item h3{font-size:24px}.timeline-item p{font-size:12px}.place-grid{grid-template-columns:1fr;gap:12px}.place-card{min-height:0;padding:25px}.place-number{margin-bottom:20px}.places-section,.dress-section{padding-top:28px}.form-grid{grid-template-columns:1fr;gap:14px}.field.full{grid-column:auto}.radio-row{flex-direction:column;gap:8px}.radio-card span{min-height:46px}.submit-button{width:100%}.rsvp-section{padding-left:20px;padding-right:20px}.desktop-only{display:none}.palette{gap:14px 20px}.palette div{min-width:42%}}
@media(max-width:360px){.hero-frame{padding-left:14px;padding-right:14px}.hero h1{font-size:64px}.portrait-wrap{width:86%}.countdown{gap:12px}.countdown-item strong{font-size:23px}.section{padding-left:16px;padding-right:16px}.timeline-item{grid-template-columns:50px 14px 1fr;gap:10px}.timeline-item:not(:last-child):after{left:57px}.timeline-item h3{font-size:22px}.palette{gap:12px}.palette div{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
.hero h1 span[data-bind]{font-size:inherit;color:inherit;font-style:normal}
.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s ease}.reveal.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}
.portrait img{display:block;width:100%;aspect-ratio:560/690;object-fit:cover;object-position:center 43%}
.portrait-caption a{color:inherit;text-underline-offset:3px}
.photo-story{max-width:1140px;margin:0 auto;padding-top:60px}
.photo-grid{display:grid;grid-template-columns:1.1fr 1fr 1fr;grid-template-rows:250px 250px;gap:16px}
.photo-card{position:relative;min-width:0;margin:0;overflow:hidden;background:#e2d5c7}
.photo-card-tall{grid-row:span 2}
.photo-card img{display:block;width:100%;height:100%;min-height:0;object-fit:cover;transition:transform .6s ease}
.photo-card:hover img{transform:scale(1.035)}
.photo-card figcaption{position:absolute;inset:auto 0 0;padding:38px 20px 15px;background:linear-gradient(transparent,rgba(34,23,25,.72));color:#fff;font:italic 22px/1.1 var(--serif)}
.photo-card figcaption a{display:block;width:max-content;margin-top:7px;color:#f4e6db;font:500 10px var(--sans);letter-spacing:.08em;text-decoration:none;text-transform:uppercase}
.photo-card figcaption a:hover{text-decoration:underline;text-underline-offset:3px}
.photo-disclaimer{margin:16px 0 0;color:var(--muted);font-size:11px;text-align:right}
@media(max-width:720px){.photo-story{padding-top:36px}.photo-grid{grid-template-columns:1fr 1fr;grid-template-rows:260px 220px;gap:10px}.photo-card-tall{grid-row:auto;grid-column:1/-1}.photo-card-tall img{object-position:center 42%}.photo-card figcaption{padding:33px 12px 12px;font-size:18px}.photo-card figcaption a{font-size:9px}.photo-disclaimer{text-align:left}}
