/* The invitation unfolds like a little safari storybook. */
.reading-progress{position:fixed;inset:0 0 auto;height:3px;background:#9bac77;z-index:30;transform:scaleX(var(--reading-progress,0));transform-origin:left;pointer-events:none}
.illustrated-section{position:relative;isolation:isolate}
.edge-visitor,.edge-sprig,.edge-balloons{position:absolute;z-index:-1;pointer-events:none;transform:translateY(var(--parallax-y,0px)) rotate(var(--visitor-angle,0deg));will-change:transform}
.edge-visitor{width:170px;height:195px;animation:animal-bob 8s ease-in-out infinite}
.edge-sprig{width:165px;height:240px;color:#8b9874;opacity:.6}
.visitor-giraffe{right:-30px;bottom:48px;--visitor-angle:-15deg}
.visitor-monkey{right:16px;top:28px;width:130px;--visitor-angle:-10deg;animation-delay:-3s}
.visitor-elephant{left:-65px;top:130px;--visitor-angle:19deg}
.visitor-zebra{right:-52px;bottom:30px;--visitor-angle:-16deg;animation-delay:-4s}
.sprig-left{left:-50px;top:70px;--visitor-angle:25deg}
.sprig-right{right:-50px;bottom:-38px;--visitor-angle:-145deg}
.family-section{padding:95px 0 100px}
.family-letter{max-width:660px;text-align:center}
.little-heart{display:inline-block;font:46px/1 var(--serif);color:#a18c60;margin-bottom:22px;animation:heart-float 5s ease-in-out infinite}
.family-letter .eyebrow{margin-bottom:18px}
.family-letter h2{font-size:clamp(35px,4vw,49px)}
.family-letter>p:not(.eyebrow){max-width:560px;margin:0 auto 21px;font-size:14px;line-height:1.95;color:var(--muted)}
.letter-signature{display:block;font:500 17px/1.5 var(--serif);color:var(--brown);margin-top:30px;transform:rotate(-2deg)}
.letter-signature span{display:inline-block;margin-left:8px}
.program-section{padding:90px 0 84px;background:#f7f3e8}
.section-intro{max-width:740px;margin:0 auto 47px;text-align:center}
.section-intro .eyebrow{margin-bottom:19px}
.section-intro h2{font-size:clamp(35px,4vw,50px)}
.section-intro>p:last-child{max-width:550px;margin:0 auto;font-size:13px;line-height:1.85;color:var(--muted)}
.party-trail{display:grid;grid-template-columns:1fr 1fr;column-gap:65px;row-gap:34px;max-width:925px;padding:0;list-style:none;margin:0 auto}
.party-trail li{display:flex;gap:21px;position:relative;padding:4px 0 16px}
.trail-number{display:flex;align-items:center;justify-content:center;flex:0 0 54px;height:57px;font:500 23px/1 var(--serif);color:var(--forest);border:1px dashed #adb791;background:#e5e9d8;border-radius:46% 54% 45% 55%;transform:rotate(-5deg)}
.party-trail li:nth-child(even) .trail-number{background:#eee2cb;border-color:#c5b28d;transform:rotate(6deg)}
.trail-kicker{display:block;font-size:7px;font-weight:600;letter-spacing:1.15px;color:var(--brown);margin:0 0 9px}
.party-trail h3{font:500 24px/1.2 var(--serif);letter-spacing:-.6px;color:var(--forest);margin:0 0 12px}
.party-trail p{font-size:12px;line-height:1.85;color:var(--muted);margin:0}
.party-trail li:nth-child(even){transition-delay:.12s}
.dress-section{padding:75px 0 80px;background:#e6eadc;border-block:1px solid #cbd3bc}
.dress-inner{display:grid;grid-template-columns:1.1fr 1fr;gap:90px;align-items:center;max-width:1010px}
.dress-inner .eyebrow{margin-bottom:16px}
.dress-inner h2{font-size:clamp(35px,3.5vw,47px)}
.dress-inner p:not(.eyebrow){font-size:13px;line-height:1.9;color:var(--muted);max-width:470px}
.dress-inner p.dress-footnote{font:500 16px/1.5 var(--serif);color:var(--brown);margin:25px 0 0}
.dress-palette{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:23px 20px;max-width:300px;width:100%;justify-self:center;padding-bottom:24px;transform:rotate(-4deg)}
.palette-circle{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1;border-radius:47% 53% 49% 51%/53% 45% 55% 47%;outline:1px dashed #9ba887;outline-offset:5px;box-shadow:0 4px 0 #61704b0d;animation:palette-float 9s ease-in-out infinite}
.palette-circle span{font:500 19px/1 var(--serif);transform:rotate(4deg)}
.swatch-sage{background:#aebd91;color:#30462d}.swatch-forest{background:#304e3c;color:#edf1df;animation-delay:-2s}.swatch-sand{background:#d2b389;color:#513e2a;animation-delay:-4s}.swatch-brown{background:#79563d;color:#fcf3df;animation-delay:-6s}
.palette-friend{position:absolute;right:-40px;bottom:-34px;width:100px;height:115px;transform:rotate(12deg)}
.edge-balloons{right:15px;top:42%;width:75px;height:150px;--visitor-angle:8deg;opacity:.7}
.edge-balloons span{position:absolute;width:45px;height:56px;border-radius:50%;background:#b5c49b;animation:balloon-drift 8s ease-in-out infinite}
.edge-balloons span:last-child{left:34px;top:26px;background:#d3b58a;animation-delay:-3s}
.edge-balloons span::after{content:'';position:absolute;left:50%;top:100%;height:80px;width:18px;border-left:1px solid #9a8867;border-radius:50%}
.site-footer{flex-wrap:wrap}
.site-footer>span:nth-of-type(2){font-size:8px;letter-spacing:1.3px}
.replay-welcome{border:0;background:none;color:var(--brown);font:400 10px/1.5 var(--sans);cursor:pointer;padding:7px 0;text-underline-offset:4px}
.replay-welcome:hover{text-decoration:underline}
.welcome-scene{position:fixed;inset:0;margin:0;padding:0;width:100vw;height:100dvh;max-width:none;max-height:none;border:0;background:transparent;color:var(--cream);overflow:hidden}
.welcome-scene::backdrop{background:transparent}
html.welcome-active{overflow:hidden}
.welcome-shade{position:absolute;inset:0;background:#2b4837;transition:opacity 1.2s ease .15s}
.welcome-curtain{position:absolute;top:-10%;height:120%;width:64%;background:#304e3c;transition:transform 1.55s cubic-bezier(.65,0,.2,1);will-change:transform;overflow:hidden}
.curtain-left{left:-10%;border-radius:0 40% 48% 0}
.curtain-right{right:-10%;border-radius:43% 0 0 48%}
.welcome-curtain svg{position:absolute;width:85%;height:95%;color:#59764f;opacity:.75;transform:rotate(28deg);left:-15%;top:-10%}
.welcome-curtain svg:nth-child(2){color:#91a06c;width:64%;height:68%;left:14%;top:37%;transform:rotate(-36deg);opacity:.6}
.welcome-curtain svg:nth-child(3){color:#3e6146;width:57%;height:70%;left:58%;top:2%;transform:rotate(145deg);opacity:.7}
.curtain-right svg{transform:scaleX(-1) rotate(28deg);left:auto;right:-15%}
.curtain-right svg:nth-child(2){left:auto;right:14%;transform:scaleX(-1) rotate(-36deg)}
.curtain-right svg:nth-child(3){left:auto;right:58%;transform:scaleX(-1) rotate(145deg)}
.welcome-copy{position:absolute;z-index:2;top:45%;left:50%;translate:-50% -50%;text-align:center;width:min(700px,calc(100% - 48px));transition:opacity .5s,transform .7s;animation:welcome-copy-in .8s}
.welcome-paw{width:30px;height:30px;margin:0 auto 24px;color:#d1c795;transform:rotate(-12deg)}
.welcome-copy .eyebrow{color:#dbe3c1;font-size:9px;margin-bottom:22px}
.welcome-copy h2{font-size:clamp(42px,6.2vw,80px);line-height:1.06;color:#fbf6e8;margin-bottom:24px;letter-spacing:-2px}
.welcome-copy h2 em{color:#d5ddb6}
.welcome-copy>p:not(.eyebrow){font-size:12px;color:#e3e8d5;margin:0 0 29px}
.welcome-copy button{border:0;cursor:pointer;font-family:var(--sans)}
.welcome-skip{position:absolute;right:32px;top:24px;z-index:3;border:1px solid #c9d1b477;border-radius:30px;background:#2b483755;color:#e2e8d0;font:400 11px/1.5 var(--sans);padding:10px 16px;cursor:pointer}
.welcome-skip:focus-visible,.welcome-copy button:focus-visible{outline-color:#e8d8ac}
.welcome-animals{position:absolute;bottom:3vh;left:50%;translate:-50% 0;display:flex;align-items:end;width:min(350px,60vw);transition:opacity .55s,transform .7s}
.welcome-animals svg{width:33.33%;height:auto;animation:animal-bob 5s ease-in-out infinite}
.welcome-animals svg:nth-child(2){animation-delay:-2s}
.welcome-scene.is-opening .curtain-left{transform:translateX(-102%) rotate(-8deg)}
.welcome-scene.is-opening .curtain-right{transform:translateX(102%) rotate(8deg)}
.welcome-scene.is-opening .welcome-shade{opacity:0}
.welcome-scene.is-opening .welcome-copy,.welcome-scene.is-opening .welcome-animals{opacity:0;transform:translateY(-20px);pointer-events:none}
.welcome-scene.is-opening .welcome-skip{opacity:0;pointer-events:none}
@keyframes welcome-copy-in{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}
@keyframes heart-float{50%{transform:translateY(-4px) rotate(7deg)}}
@keyframes palette-float{50%{translate:0 -4px;rotate:3deg}}
@media(min-width:1500px){.edge-visitor{width:210px;height:240px}.visitor-monkey{right:45px;width:155px}}
@media(max-width:1100px){.edge-visitor{width:130px;height:150px}.visitor-giraffe{right:-40px;bottom:20px}.visitor-elephant{left:-58px}.visitor-zebra{right:-65px}.visitor-monkey{right:0;top:45px;width:105px}.milestones-heading{padding-right:70px}.party-trail{column-gap:35px}.dress-inner{gap:50px}.edge-balloons{right:-26px;top:62%}}
@media(max-width:760px){.family-section{padding:58px 0 78px}.family-letter{max-width:520px}.family-letter h2{font-size:35px}.family-letter .eyebrow{font-size:8px;letter-spacing:1.5px}.family-letter>p:not(.eyebrow){font-size:12px;line-height:1.9}.little-heart{font-size:37px;margin-bottom:20px}.letter-signature{font-size:15px}.edge-sprig{width:100px;height:145px}.sprig-left{left:-46px;top:-24px;opacity:.38}.edge-visitor{width:100px;height:114px}.visitor-giraffe{right:-24px;bottom:-9px;width:83px;height:100px}.visitor-monkey{width:78px;height:90px;right:-13px;top:15px}.milestones-section{padding:57px 0 49px}.milestones-heading{padding-right:0;align-items:end;gap:10px}.milestones-heading h2{font-size:35px;letter-spacing:-1.6px}.milestones-heading .eyebrow{font-size:8px;letter-spacing:1.4px}.program-section{padding:62px 0 61px}.section-intro{margin-bottom:34px}.section-intro .eyebrow{font-size:8px;letter-spacing:1.4px}.section-intro h2{font-size:34px}.section-intro>p:last-child{font-size:12px;max-width:390px}.party-trail{grid-template-columns:1fr;max-width:420px;row-gap:0}.party-trail li{gap:20px;padding-bottom:27px}.party-trail li:not(:last-child)::before{content:'';position:absolute;left:25px;top:56px;bottom:0;border-left:1px dashed #bbc5a7}.trail-number{flex-basis:51px;height:53px;font-size:22px}.trail-kicker{font-size:7px}.party-trail h3{font-size:23px;margin-bottom:9px}.party-trail p{font-size:11px}.party-trail li:nth-child(even){transition-delay:0s}.visitor-elephant{top:auto;bottom:-9px;left:-19px;width:75px;height:86px}.visitor-zebra{bottom:6px;right:-24px;width:85px;height:97px}.edge-balloons{width:50px;right:-31px;top:30%;opacity:.4}.edge-balloons span{width:34px;height:44px}.edge-balloons span:last-child{left:22px}.dress-section{padding:56px 0 68px}.dress-inner{grid-template-columns:1fr;gap:46px;max-width:470px;text-align:center}.dress-inner h2{font-size:35px}.dress-inner .eyebrow{font-size:8px;letter-spacing:1.3px}.dress-inner p:not(.eyebrow){font-size:12px}.dress-inner p.dress-footnote{font-size:15px;margin-top:19px}.dress-palette{max-width:235px;gap:20px;padding-bottom:0}.palette-circle span{font-size:17px}.palette-friend{width:80px;height:92px;right:-34px;bottom:-33px}.sprig-right{right:-37px;bottom:-20px}.welcome-copy{top:44%;width:calc(100% - 48px)}.welcome-copy h2{font-size:47px;letter-spacing:-1.8px}.welcome-copy .eyebrow{font-size:8px;letter-spacing:1.4px}.welcome-copy>p:not(.eyebrow){font-size:11px;max-width:240px;margin-inline:auto}.welcome-paw{width:25px;height:25px;margin-bottom:23px}.welcome-skip{right:17px;top:17px;font-size:10px;padding:9px 13px}.welcome-animals{bottom:5vh;width:220px;max-width:64vw}.welcome-curtain{width:72%}.curtain-left{left:-18%}.curtain-right{right:-18%}.welcome-curtain svg{width:155%;left:-48%;height:70%;top:0}.curtain-right svg{left:auto;right:-48%}.welcome-curtain svg:nth-child(2){top:55%;width:125%;left:5%}.curtain-right svg:nth-child(2){left:auto;right:5%}.welcome-curtain svg:nth-child(3){display:none}}
@media(max-width:380px){.family-letter h2,.milestones-heading h2,.dress-inner h2{font-size:31px}.section-intro h2{font-size:29px}.welcome-copy h2{font-size:40px}.welcome-copy .eyebrow{font-size:7px}.welcome-animals{width:190px}}
@media(max-height:600px){.welcome-copy{top:48%}.welcome-paw,.welcome-animals{display:none}.welcome-copy h2{font-size:40px}.welcome-copy .eyebrow{margin-bottom:10px}.welcome-copy>p:not(.eyebrow){margin-bottom:15px}}
html[data-motion="off"] [data-parallax]{transform:rotate(var(--visitor-angle,0deg));will-change:auto}
html[data-motion="off"] .reading-progress{display:none}
@media(prefers-reduced-motion:reduce){[data-parallax]{transform:rotate(var(--visitor-angle,0deg));will-change:auto}.reading-progress{display:none}}
@media print{.welcome-scene,.reading-progress,.edge-visitor,.edge-sprig,.edge-balloons,.replay-welcome{display:none!important}.family-section,.program-section,.dress-section,.milestones-section{padding:25px 0}.family-letter{max-width:80%}.party-trail li{break-inside:avoid}.dress-palette{max-width:160px}}
