@font-face{font-family:Caveat;src:url("../assets/Caveat.ttf") format("truetype");font-weight:400 700;font-display:swap}@font-face{font-family:Comfortaa;src:url("../assets/Comfortaa.ttf") format("truetype");font-weight:300 700;font-display:swap}
:root{--paper:#f8f3e8;--wine:#850b22;--ink:#342a28;--cream:#fffaf0;--script:Caveat,cursive;--sans:Comfortaa,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--paper);font:15px/1.75 var(--sans);overflow-x:hidden}body:before{content:"";position:fixed;inset:0;z-index:20;pointer-events:none;opacity:.06;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='4'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E")}img{display:block;width:100%;max-width:100%}.paper,.wine{position:relative;padding:94px 22px}.paper{background:var(--paper)}.wine{background:var(--wine);color:var(--cream)}.paper:after,.wine:after{content:"";position:absolute;bottom:-1px;left:0;width:100%;height:20px;z-index:1;background:inherit;clip-path:polygon(0 30%,4% 60%,10% 35%,18% 68%,28% 35%,36% 62%,47% 25%,58% 70%,67% 38%,78% 64%,88% 32%,100% 62%,100% 100%,0 100%)}.wrap,.narrow{width:min(100%,1000px);margin:auto}.narrow{max-width:640px}.center{text-align:center}.eyebrow{margin:0 0 9px;text-transform:uppercase;letter-spacing:.15em;font-size:10px;font-weight:700;color:var(--wine)}.light{color:#ffd8d5}h1,h2,h3,p{margin-top:0}h2,h3,.script,time,.hero-title,.hero-ribbon,.hero-date,.calendar-heading,.hand-calendar p,.venue-time,.polaroid figcaption{font-family:var(--script);line-height:.9}h2{font-size:clamp(54px,10vw,90px);font-weight:700;color:var(--wine);margin:0 0 22px}.wine h2{color:var(--cream)}
.hero{min-height:100svh;display:grid;place-items:center;padding:38px 20px 55px;text-align:center;overflow:hidden}.hero-inner{position:relative;width:min(100%,500px);padding:14px 0}.hero-kicker{font-size:10px;text-transform:uppercase;letter-spacing:.15em;color:var(--wine);font-weight:700}.hero-title{position:relative;z-index:2;margin:10px 0 12px;font-size:clamp(72px,22vw,132px);line-height:.72;font-weight:700;color:var(--wine);transform:rotate(-4deg)}.hero-title span{padding-left:22%;display:block}.hero-photo-wrap{position:relative;z-index:1;width:min(79vw,300px);margin:auto}.hero-cutout{position:relative;z-index:1;filter:drop-shadow(5px 8px 0 #850b2220);transform:rotate(1.5deg)}.kid-label{position:absolute;z-index:4;margin:0;font:700 clamp(27px,8vw,44px)/1 var(--script);color:var(--wine);pointer-events:none;text-shadow:0 0 12px var(--paper)}.groom{left:-4%;top:4%;transform:rotate(-14deg)}.bride{right:-6%;top:-1%;transform:rotate(12deg)}.hero-hearts{position:absolute;inset:-8% -14% -4%;z-index:3;pointer-events:none}.doodle-heart{display:block;width:auto;height:auto;max-width:none}.hero-hearts .doodle-heart{position:absolute;width:clamp(28px,9vw,48px);animation-name:float;animation-duration:4.2s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}.hero-hearts .h1{left:2%;top:18%;width:clamp(34px,10vw,52px);rotate:-18deg}.hero-hearts .h2{right:4%;top:12%;width:clamp(30px,9vw,46px);rotate:14deg;animation-delay:-.8s}.hero-hearts .h3{left:-6%;top:42%;width:clamp(26px,8vw,40px);rotate:8deg;animation-delay:-1.6s}.hero-hearts .h4{right:-8%;top:38%;width:clamp(36px,11vw,54px);rotate:-10deg;animation-delay:-2.2s}.hero-hearts .h5{left:8%;bottom:22%;width:clamp(24px,7vw,36px);rotate:22deg;animation-delay:-.4s}.hero-hearts .h6{right:10%;bottom:18%;width:clamp(28px,8vw,42px);rotate:-16deg;animation-delay:-2.8s}.hero-hearts .h7{left:42%;top:-2%;width:clamp(22px,6vw,32px);rotate:6deg;animation-delay:-1.1s}.hero-hearts .h8{right:28%;bottom:8%;width:clamp(20px,6vw,30px);rotate:18deg;animation-delay:-3.1s}.hero-ribbon{position:relative;z-index:4;max-width:320px;margin:-18px auto 8px;padding:10px 21px 13px;background:var(--wine);color:var(--cream);font-size:clamp(36px,10vw,54px);font-weight:700;transform:rotate(-2deg);clip-path:polygon(3% 13%,96% 0,100% 85%,4% 100%,0 56%)}.hero-squiggle{display:block;width:min(48%,160px);margin:-2px auto 14px;overflow:visible}.hero-squiggle path{fill:none;stroke:var(--wine);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:220;stroke-dashoffset:0}.hero-date{margin:0;color:var(--wine);font-size:30px;font-weight:700}@keyframes float{50%{translate:0 -8px}}@keyframes pulse-soft{50%{scale:1.08}}@keyframes stamp-in{from{opacity:0;transform:scale(.86) rotate(var(--stamp-rot,-4deg))}to{opacity:1;transform:scale(1) rotate(var(--stamp-rot,-4deg))}}@keyframes ring-pop{0%{transform:translate(-50%,-50%) rotate(var(--ring-rot,0deg)) scale(.55);opacity:0}70%{transform:translate(-50%,-50%) rotate(var(--ring-rot,0deg)) scale(1.08);opacity:1}100%{transform:translate(-50%,-50%) rotate(var(--ring-rot,0deg)) scale(1);opacity:1}}@keyframes label-settle{from{opacity:0;transform:translateY(-14px) rotate(var(--label-rot,0deg)) scale(.92)}to{opacity:1;transform:translateY(0) rotate(var(--label-rot,0deg)) scale(1)}}
.note-section,.gift-section{padding-block:80px}.note{position:relative;max-width:510px;margin:auto;padding:50px 38px 42px;background:#fffaf0;box-shadow:12px 14px 0 #850b2115;text-align:center;transform:rotate(-1.5deg)}.note:before{content:"";position:absolute;inset:8px;border:1px solid #850b2244;pointer-events:none}.note p:not(.script){max-width:400px;margin:auto}.script{position:relative;z-index:1;font-size:clamp(52px,12vw,76px);font-weight:700;color:var(--wine);margin-bottom:18px}.doodle-under:after{content:"";position:absolute;left:8%;right:8%;bottom:-5px;height:7px;background:var(--wine);clip-path:polygon(0 56%,12% 8%,26% 59%,41% 10%,56% 57%,72% 12%,85% 63%,100% 24%,100% 70%,0 100%)}.tape{position:absolute;width:92px;height:27px;background:#d9b9a980;top:-10px;transform:rotate(-8deg)}.tape-a{left:10%}.tape-b{right:10%;transform:rotate(8deg)}.note-heart{position:absolute;right:7%;bottom:5%;width:52px;height:auto;transform:rotate(16deg);z-index:1}
.couple-grid,.invite-grid{display:grid;gap:45px;align-items:center}.couple-copy{max-width:485px}.couple-copy p:last-child{max-width:420px}.couple-photo{max-width:380px;margin:auto}.polaroid{margin:0;padding:10px 10px 36px;background:var(--cream);box-shadow:9px 12px 0 #1e000622;transform:rotate(-3deg)}.polaroid figcaption{padding-top:9px;font-size:25px;color:var(--wine);text-align:center}.couple-photo img{aspect-ratio:3/4;object-fit:cover}.invite-grid>div:first-child{max-width:540px}.hand-calendar{padding:28px 20px 20px;border:2px solid var(--wine);max-width:420px;margin:auto;box-shadow:7px 8px 0 #850b2217;transform:rotate(1.5deg)}.calendar-heading{display:flex;justify-content:space-between;padding:0 5px 8px;border-bottom:2px solid var(--wine);font-size:40px;color:var(--wine)}.calendar-heading em{font-style:normal;font-size:.8em}.calendar-week,.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);text-align:center}.calendar-week{padding:10px 0 5px;font:700 11px var(--script);font-size:17px}.calendar-days{gap:3px;font:600 18px var(--script)}.calendar-days span{height:33px;display:grid;place-items:center}.calendar-days .wedding-day{position:relative;color:var(--wine);font-size:24px;font-weight:700;isolation:isolate}.wedding-day:before,.wedding-day:after{content:"";position:absolute;left:50%;top:50%;width:24px;height:22px;border:2px solid var(--wine);border-radius:50% 50% 42% 42%;transform:translate(-50%,-50%) rotate(-18deg);--ring-rot:-18deg;z-index:-1}.wedding-day:after{transform:translate(-50%,-50%) rotate(18deg);--ring-rot:18deg}.hand-calendar p{margin:13px 0 0;text-align:center;color:var(--wine);font-size:24px}
.section-header{text-align:center;margin-bottom:45px}.venues{display:grid;gap:55px}.venue-card{display:grid;gap:27px;align-items:center}.venue-card .polaroid{width:min(100%,410px);justify-self:center}.venue-card img{aspect-ratio:1.1/1;object-fit:cover;filter:grayscale(1)}.venue-copy{text-align:center}.venue-time{margin:0 0 7px;color:#ffd4d1;font-size:48px;font-weight:700}.venue-copy h3{margin:0 0 13px;font-size:42px;font-weight:700}.venue-copy p:not(.venue-time){margin-bottom:20px}.btn{display:inline-block;border:1px solid var(--wine);padding:13px 17px;background:transparent;color:var(--wine);font:700 10px var(--sans);letter-spacing:.1em;text-decoration:none;text-transform:uppercase;cursor:pointer;transition:transform .2s,background .2s,color .2s}.btn:hover,.btn:focus-visible{background:var(--wine);color:var(--cream);transform:translateY(-3px);outline:0}.venue-card .btn{border-color:var(--cream);color:var(--cream)}.venue-card .btn:hover,.venue-card .btn:focus-visible{background:var(--cream);color:var(--wine)}
.schedule{position:relative;display:grid;gap:24px}.schedule-path{position:absolute;left:50%;top:14px;width:2px;height:calc(100% - 28px);overflow:visible;transform:translateX(-50%)}.schedule-path path{fill:none;stroke:var(--wine);stroke-width:2.1;stroke-linecap:round;stroke-dasharray:680;stroke-dashoffset:680}.schedule[data-drawn] .schedule-path path{stroke-dashoffset:calc(680 - 680 * var(--draw-progress,1));transition:stroke-dashoffset .1s linear}.schedule article{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;min-height:110px;align-items:center;gap:0}.schedule article>:first-child{padding-right:33px;text-align:right}.schedule article>:last-child{padding-left:33px;text-align:left}.schedule article:after{content:"";position:absolute;left:calc(50% - 7px);width:11px;height:11px;border:2px solid var(--paper);border-radius:50%;background:var(--wine)}.schedule time{display:block;font-size:48px;font-weight:700;color:var(--wine)}.schedule h3{margin:0;font-size:28px;color:var(--wine)}.schedule p{margin:2px 0 0;font-size:11px;line-height:1.4}.schedule-doodle{width:clamp(64px,18vw,88px);height:auto;object-fit:contain;justify-self:center}.schedule article>:first-child.schedule-doodle{justify-self:end;margin-right:4px}.schedule article>:last-child.schedule-doodle{justify-self:start;margin-left:4px}.rings{--stamp-rot:-6deg}.glasses{--stamp-rot:5deg}.plate{--stamp-rot:-3deg}.heart-doodle{--stamp-rot:8deg;width:clamp(56px,15vw,76px)}
.dress-section p{max-width:560px;margin-inline:auto}.palette{display:flex;flex-wrap:wrap;justify-content:center;gap:11px;margin:30px auto}.palette i{width:34px;height:34px;border:2px solid #fff;border-radius:50%;box-shadow:1px 2px 0 #0003;transition:transform .2s}.palette i:hover{transform:scale(1.17) rotate(-8deg)}.palette i:nth-child(1){background:#40271f}.palette i:nth-child(2){background:#987454}.palette i:nth-child(3){background:#786b62}.palette i:nth-child(4){background:#d8c1a0}.palette i:nth-child(5){background:#f5ead6}.palette i:nth-child(6){background:#899778}.palette i:nth-child(7){background:#253e65}.palette i:nth-child(8){background:#a4c2cd}.palette i:nth-child(9){background:#a392b7}.palette i:nth-child(10){background:#d9a8aa}.palette i:nth-child(11){background:#efb894}.palette i:nth-child(12){background:#850b22}.lookbook{display:grid;grid-template-columns:1.1fr .8fr;gap:17px;align-items:start;max-width:500px;margin:15px auto 0;text-align:left}.second-look{margin-top:35px;transform:rotate(4deg)}.lookbook img{aspect-ratio:3/4;object-fit:cover}.lookbook .polaroid:first-child img{object-position:50% 0}
.rsvp-section form{display:grid;gap:11px;width:min(100%,370px);margin:26px auto 0;text-align:left}.rsvp-section label{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.rsvp-section input{border:0;border-bottom:2px solid #ffffff99;padding:13px 5px;background:transparent;color:var(--cream);font:15px var(--sans)}.rsvp-section input::placeholder{color:#ffffff99}.btn-light{border-color:var(--cream);color:var(--cream);justify-self:start}.btn-light:hover,.btn-light:focus-visible{background:var(--cream);color:var(--wine)}#rsvp-status{margin:0;min-height:24px;font-size:12px}.foot{margin:44px 0 0;color:#ffd4d1;font:700 27px var(--script)}
@media (min-width:720px){.paper,.wine{padding-block:118px}.couple-grid{grid-template-columns:1.12fr .88fr;gap:85px}.invite-grid{grid-template-columns:1.1fr .9fr;gap:85px}.venues{grid-template-columns:1fr 1fr;gap:48px}.venue-card{grid-template-rows:auto 1fr}.restaurant-card{transform:translateY(55px)}}
@media (prefers-reduced-motion:no-preference){.motion-ready .reveal,.motion-ready .reveal-step{opacity:0;transform:translateY(26px) rotate(var(--tilt,0deg));transition:opacity .75s ease,transform .75s cubic-bezier(.2,.7,.2,1)}.motion-ready .reveal.is-visible,.motion-ready .reveal-step.is-visible{opacity:1;transform:translateY(0) rotate(var(--tilt,0deg))}.motion-ready .reveal-step:nth-child(2){transition-delay:.18s}.motion-ready .reveal-step:nth-child(3){transition-delay:.38s}.motion-ready .reveal-step:nth-child(4){transition-delay:.58s}.motion-ready .reveal-step:nth-child(5){transition-delay:.72s}.motion-ready .reveal-step:nth-child(6){transition-delay:.86s}.motion-ready [data-parallax]{transform:translateY(var(--parallax-y,0px))}.motion-ready [data-parallax].is-visible{transform:translateY(var(--parallax-y,0px))}.motion-ready .hero-hearts .doodle-heart{opacity:0;animation-play-state:paused}.motion-ready .hero.is-visible .hero-hearts .doodle-heart{opacity:1;animation-name:float,pulse-soft;animation-duration:4.2s,3.6s;animation-timing-function:ease-in-out,ease-in-out;animation-iteration-count:infinite,infinite;animation-play-state:running;transition:opacity .55s .7s}.motion-ready .kid-label{opacity:0}.motion-ready .hero.is-visible .groom{--label-rot:-14deg;animation:label-settle .7s .55s cubic-bezier(.2,.7,.2,1) forwards}.motion-ready .hero.is-visible .bride{--label-rot:12deg;animation:label-settle .7s .72s cubic-bezier(.2,.7,.2,1) forwards}.motion-ready .hand-calendar .wedding-day:before,.motion-ready .hand-calendar .wedding-day:after{opacity:0}.motion-ready .hand-calendar.is-visible .wedding-day:before,.motion-ready .hand-calendar.is-visible .wedding-day:after{animation:ring-pop .65s .35s cubic-bezier(.2,.8,.2,1) forwards}.motion-ready .hand-calendar.is-visible .wedding-day:after{animation-delay:.48s}.motion-ready .schedule-doodle{opacity:0;transform:scale(.86) rotate(var(--stamp-rot,-4deg))}.motion-ready .schedule.is-visible .schedule-doodle{animation:stamp-in .55s cubic-bezier(.2,.8,.2,1) forwards}.motion-ready .schedule.is-visible article:nth-child(2) .schedule-doodle{animation-delay:.15s}.motion-ready .schedule.is-visible article:nth-child(3) .schedule-doodle{animation-delay:.32s}.motion-ready .schedule.is-visible article:nth-child(4) .schedule-doodle{animation-delay:.48s}.motion-ready .schedule.is-visible article:nth-child(5) .schedule-doodle{animation-delay:.64s}.motion-ready .hero-squiggle path{stroke-dashoffset:220}.motion-ready .hero.is-visible .hero-squiggle path{stroke-dashoffset:0;transition:stroke-dashoffset 1s .9s ease}}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
@media (max-width:380px){.paper,.wine{padding-inline:17px}.hero-title{font-size:71px}.hero-photo-wrap{width:75vw}.kid-label{font-size:26px}.groom{left:0}.bride{right:-2%}.note{padding-inline:25px}.schedule article>:first-child{padding-right:26px}.schedule article>:last-child{padding-left:26px}}
