:root{--cream: #fff9ee;--cream-deep: #fdf1d8;--cream-warm: #fff4de;--paper: #fffdf7;--ink: #3b2b10;--ink-soft: #5d4a25;--ink-mute: #7b673f;--gold: #e2a412;--gold-deep: #96600a;--gold-line: rgba(200, 150, 40, .22);--sun: #ffc531;--leaf-deep: #23421d;--gutter: clamp(1.15rem, 5vw, 2.5rem);--serif: "Cormorant Garamond", "Iowan Old Style", Georgia, serif;--sans: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;--sy: 0}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;overflow-x:clip;background:var(--cream);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body.is-locked{overflow:hidden}img{display:block;max-width:100%}h1,h2,p{margin:0}::selection{background:#ffc53166;color:#2e2107}:focus-visible{outline:3px solid var(--gold-deep);outline-offset:3px;border-radius:6px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.shared-defs{position:absolute;width:0;height:0;overflow:hidden}.bloom{opacity:0;transform-box:fill-box;transform-origin:50% 100%}.head{transform-box:fill-box;transform-origin:50% 50%}.sway{transform-box:fill-box;transform-origin:50% 100%}.is-open .bloom{animation:bloom 1.55s cubic-bezier(.2,1.05,.32,1) var(--d, 0s) both}.is-open .head{animation:headOpen 1.15s cubic-bezier(.2,1.1,.3,1) calc(var(--d, 0s) + .3s) both}.is-open .sway{animation:sway var(--sway, 8s) ease-in-out var(--d, 0s) infinite alternate}@keyframes bloom{0%{opacity:0;transform:translate3d(0,34px,0) scale(.26) rotate(-6deg)}55%{opacity:1}to{opacity:1;transform:translateZ(0) scale(1) rotate(0)}}@keyframes headOpen{0%{transform:scale(.34) rotate(-26deg)}to{transform:scale(1) rotate(0)}}@keyframes sway{0%{transform:rotate(calc(var(--amp, 1.4deg) * -1))}to{transform:rotate(var(--amp, 1.4deg))}}.memory .bloom,.closing .bloom,.memory .head,.closing .head,.memory .sway,.closing .sway{animation:none}.memory.is-in .bloom,.closing.is-in .bloom{animation:bloom 1.5s cubic-bezier(.2,1.05,.32,1) var(--d, 0s) both}.memory.is-in .head,.closing.is-in .head{animation:headOpen 1.15s cubic-bezier(.2,1.1,.3,1) calc(var(--d, 0s) + .3s) both}.memory.is-in .sway,.closing.is-in .sway{animation:sway var(--sway, 8s) ease-in-out var(--d, 0s) infinite alternate}.plane--far{opacity:.92}.reveal{opacity:0;transition:opacity 1s ease,transform 1.05s cubic-bezier(.2,.8,.25,1);transition-delay:var(--d, 0s)}.reveal--up{transform:translate3d(0,26px,0)}.reveal--grow{transform:translate3d(0,30px,0) scale(.965)}.reveal--soft{transform:scale(.97)}.reveal.is-in{opacity:1;transform:none}@keyframes riseIn{0%{opacity:0;transform:translate3d(0,22px,0)}to{opacity:1;transform:none}}.quiet{position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;min-height:52px;min-width:9.5rem;padding:0 1.9rem;border:0;background:none;cursor:pointer;font-family:var(--sans);font-size:.78rem;font-weight:600;letter-spacing:.28em;text-indent:.28em;text-transform:uppercase;color:var(--gold-deep);transition:color .4s ease,transform .5s cubic-bezier(.2,.8,.25,1)}.quiet:before{content:"";position:absolute;top:2px;right:0;bottom:2px;left:0;z-index:-1;border:1px solid var(--gold-line);border-radius:999px;background:linear-gradient(180deg,#fffdf4eb,#fff3d4c7);box-shadow:0 10px 24px -18px #8c5f0cb3;transition:border-color .4s ease}.quiet:hover{color:#7d4f06;transform:translateY(-1px)}.quiet:hover:before{border-color:#be871980}.quiet:active{transform:translateY(0) scale(.99)}.cover{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;padding:calc(env(safe-area-inset-top,0px) + 1.5rem) var(--gutter) calc(env(safe-area-inset-bottom,0px) + 1.5rem);background:radial-gradient(120% 80% at 50% 8%,#fffdf4,#fff6e2 44%,#fdecd0);transition:opacity .9s ease,transform 1.3s cubic-bezier(.2,.8,.2,1),visibility 0s linear .9s}.cover.is-gone{opacity:0;transform:scale(1.06);visibility:hidden;pointer-events:none}.cover__inner{width:min(100%,26rem);text-align:center;animation:coverIn 1.4s cubic-bezier(.2,.8,.25,1) both}@keyframes coverIn{0%{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:none}}.cover .bloom{animation:bloom 1.7s cubic-bezier(.2,1.05,.32,1) calc(var(--d, 0s) + .3s) both}.cover .head{animation:headOpen 1.2s cubic-bezier(.2,1.1,.3,1) calc(var(--d, 0s) + .65s) both}.cover .sway{animation:sway var(--sway, 8s) ease-in-out var(--d, 0s) infinite alternate}.cover__flower{display:block;width:min(42%,8.5rem);margin:0 auto clamp(1.7rem,6vw,2.5rem);-webkit-mask-image:linear-gradient(to bottom,#000 72%,transparent 100%);mask-image:linear-gradient(to bottom,#000 72%,transparent 100%)}.cover__line{white-space:pre-line;font-family:var(--serif);font-weight:400;font-size:clamp(1.75rem,7.4vw,2.6rem);line-height:1.3;color:var(--ink);margin-bottom:clamp(1.9rem,6.5vw,2.7rem);text-wrap:balance}.hero{position:relative;min-height:100vh;min-height:100svh;overflow:hidden;display:flex;flex-direction:column;background:linear-gradient(180deg,#fffdf6,#fff8e9 38%,#fdf2d9)}.hero__garden{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.garden{width:100%;height:100%;display:block}.hero__veil{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,#fffcf4f0,#fff9ebb8 22%,#fff6e22e 40%,#fff6e200 52%)}.hero__text{position:relative;z-index:3;padding:clamp(3.2rem,9vh,6rem) var(--gutter) 0;text-align:center;transform:translate3d(0,calc(var(--sy) * -.14px),0)}.hero__kicker{opacity:0;font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.34em;text-indent:.34em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:clamp(.7rem,2.4vw,1.1rem)}.hero__title{opacity:0;font-family:var(--serif);font-weight:500;font-size:clamp(2.3rem,8.4vw,4.4rem);line-height:1.04;letter-spacing:-.012em;color:var(--ink);max-width:18ch;margin-inline:auto;text-wrap:balance}.hero__title:focus,.hero__title:focus-visible{outline:none}.hero__title .name{display:inline-block;opacity:0;font-style:italic;color:var(--gold-deep)}.is-open .hero__kicker{animation:riseIn 1.2s cubic-bezier(.2,.8,.25,1) 1s both}.is-open .hero__title{animation:riseIn 1.3s cubic-bezier(.2,.8,.25,1) 1.25s both}.is-open .hero__title .name{animation:nameIn 1.15s cubic-bezier(.2,.8,.25,1) 2.1s both}.is-open .hero__hint{animation:riseIn 1.2s ease 3.1s both}@keyframes nameIn{0%{opacity:0;transform:translate3d(0,11px,0)}to{opacity:1;transform:none}}.hero__hint{opacity:0;position:relative;z-index:3;margin-top:auto;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 1.1rem);display:flex;flex-direction:column;align-items:center;gap:.55rem;font-size:.66rem;font-weight:600;letter-spacing:.3em;text-indent:.3em;text-transform:uppercase;color:#6c5116;text-shadow:0 0 10px rgba(255,250,233,.95),0 0 22px rgba(255,250,233,.9)}.hero__hint-line{width:1px;height:clamp(28px,5vh,46px);background:linear-gradient(180deg,#96600a00,#96600a8c);animation:hintPulse 2.8s ease-in-out infinite}@keyframes hintPulse{0%,to{opacity:.35;transform:scaleY(.6)}50%{opacity:1;transform:scaleY(1)}}.petals{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;overflow:hidden;pointer-events:none;transform:translate3d(0,calc(var(--sy) * .09px),0)}.petals__one{position:absolute;top:-14%;display:block;opacity:var(--op, .4);animation:fall var(--dur, 20s) linear var(--delay, 0s) infinite}.petals__one svg{width:100%;height:auto;display:block}@keyframes fall{0%{transform:translate3d(0,-10vh,0) rotate(0)}to{transform:translate3d(var(--drift, 0px),125vh,0) rotate(var(--spin, 200deg))}}.eyebrow{font-family:var(--sans);font-size:.7rem;font-weight:600;letter-spacing:.32em;text-indent:.32em;text-transform:uppercase;color:var(--gold-deep);text-align:center}.memory{position:relative;overflow:hidden;padding:clamp(4.5rem,14vh,8.5rem) var(--gutter) clamp(3.5rem,10vh,6rem);background:radial-gradient(90% 60% at 50% 12%,#ffe9b28c,#fff4de00 70%),linear-gradient(180deg,#fdf2d9,#fff8ea 36%,#fff8ea)}.memory__stage{position:relative;display:flex;justify-content:center;width:min(100%,720px,calc(var(--ar, .8) * min(70svh,600px)));margin-inline:auto;transition:width .6s cubic-bezier(.2,.8,.25,1)}.memory__foliage{position:absolute;bottom:-7%;width:clamp(112px,44%,240px);height:auto;z-index:0;pointer-events:none;opacity:0;transform:translate3d(0,16px,0);transition:opacity .95s ease,transform 1.05s cubic-bezier(.2,.8,.25,1);-webkit-mask-image:linear-gradient(to bottom,#000 72%,transparent 100%);mask-image:linear-gradient(to bottom,#000 72%,transparent 100%)}.memory__foliage--left{right:100%;margin-right:-14%}.memory__foliage--right{left:100%;margin-left:-14%;transition-delay:.12s}.memory.is-in .memory__foliage{opacity:1;transform:none}.frame{position:relative;z-index:1;width:100%;opacity:0;transform:translate3d(0,26px,0) scale(.965);transition:opacity 1s ease .32s,transform 1.1s cubic-bezier(.2,.8,.25,1) .32s}.memory.is-in .frame{opacity:1;transform:none}.frame__mat{padding:clamp(5px,1.3vw,9px);border-radius:34% 34% 8% 8%/22% 22% 5% 5%;background:linear-gradient(152deg,#fbe6a8,#eab846 42%,#c98c18);filter:drop-shadow(0 26px 34px rgba(120,82,12,.26))}.frame__window{overflow:hidden;border-radius:34% 34% 8% 8%/22% 22% 5% 5%;aspect-ratio:var(--ar, .8);transition:aspect-ratio .6s cubic-bezier(.2,.8,.25,1)}.frame__track{display:flex;height:100%;transition:transform .7s cubic-bezier(.2,.8,.25,1)}.frame__img{flex:0 0 100%;width:100%;height:100%;object-fit:cover;background:var(--cream-deep);opacity:0;transition:opacity 1.1s ease .86s;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.memory.is-in .frame__img{opacity:1}.frame__dots{display:flex;justify-content:center;gap:.15rem;margin-top:clamp(.7rem,3vw,1rem)}.frame__dot{width:30px;height:30px;display:grid;place-items:center;padding:0;border:0;background:none;cursor:pointer}.frame__dot:before{content:"";width:7px;height:7px;border-radius:50%;background:#96600a47;transition:background .35s ease,transform .35s ease}.frame__dot.is-on:before{background:var(--gold-deep);transform:scale(1.3)}.memory__caption{position:relative;z-index:1;margin:clamp(1.8rem,6vw,2.6rem) auto 0;max-width:30ch;text-align:center;font-family:var(--serif);font-style:italic;font-size:clamp(1.15rem,4.2vw,1.5rem);line-height:1.5;color:var(--ink-soft);text-wrap:balance;opacity:0;transform:translate3d(0,14px,0);transition:opacity 1s ease 1.3s,transform 1.1s cubic-bezier(.2,.8,.25,1) 1.3s}.memory.is-in .memory__caption{opacity:1;transform:none}.letter{padding:clamp(3rem,9vh,6rem) var(--gutter) clamp(4rem,12vh,7rem);background:linear-gradient(180deg,#fff8ea,#fdf0d2)}.letter__card,.letter__paper{max-width:40rem;margin-inline:auto;border-radius:30px 30px 34px 34px/40px 40px 34px 34px;background:linear-gradient(176deg,#fffdf7,#fff9ec 58%,#fff4e0);box-shadow:0 30px 70px -38px #6e4b0c73,0 0 0 1px var(--gold-line)}.letter__card{max-width:30rem;padding:clamp(2.4rem,8vw,3.4rem) clamp(1.4rem,5.6vw,2.6rem) clamp(2.1rem,7vw,2.9rem);text-align:center}.letter__card .ornament{margin:0 auto clamp(1.3rem,5vw,1.9rem);opacity:.85}.letter__teaser{font-family:var(--serif);font-size:clamp(1.5rem,6vw,2.1rem);line-height:1.32;color:var(--ink);margin-bottom:clamp(1.8rem,6vw,2.4rem);text-wrap:balance}.letter__paper{padding:clamp(2.1rem,7vw,3.6rem) clamp(1.4rem,5.6vw,3.2rem) clamp(2.4rem,7vw,3.4rem);animation:unfold 1.15s cubic-bezier(.2,.8,.25,1) both}@keyframes unfold{0%{opacity:0;clip-path:inset(0% 0% 100% 0% round 34px)}to{opacity:1;clip-path:inset(-9% -9% -9% -9% round 34px)}}.letter__paper .eyebrow{animation:riseIn .9s ease .42s both}.letter__ornament{display:flex;justify-content:center;margin:clamp(1rem,3.4vw,1.5rem) 0 clamp(1.4rem,4.4vw,2rem);animation:riseIn .9s ease .54s both}.ornament{width:min(70%,240px);height:auto}.letter__body p{font-size:clamp(1.02rem,3.5vw,1.14rem);line-height:1.92;color:var(--ink-soft);-webkit-hyphens:auto;hyphens:auto;animation:riseIn .95s cubic-bezier(.2,.8,.25,1) calc(.68s + var(--i, 0) * .14s) both}.letter__body p+p{margin-top:1.15em}.letter__sign{margin-top:clamp(1.8rem,5vw,2.4rem);text-align:right;font-family:var(--serif);font-style:italic;font-size:clamp(1.3rem,4.6vw,1.7rem);color:var(--gold-deep);animation:riseIn .95s cubic-bezier(.2,.8,.25,1) calc(.78s + var(--i, 0) * .14s) both}.closing{position:relative;overflow:hidden;text-align:center;padding:clamp(3.5rem,11vh,6.5rem) var(--gutter) calc(env(safe-area-inset-bottom,0px) + clamp(6rem,22vh,11rem));background:radial-gradient(78% 52% at 50% 36%,#ffe4a080,#fdf0d200 72%),linear-gradient(180deg,#fdf0d2,#fff7e6 58%,#fffaf0)}.closing__art{display:block;width:min(74vw,330px);height:auto;margin:0 auto;-webkit-mask-image:linear-gradient(to bottom,#000 84%,transparent 100%);mask-image:linear-gradient(to bottom,#000 84%,transparent 100%)}.closing__message{max-width:26ch;margin:clamp(1.5rem,5vw,2.1rem) auto 0;font-family:var(--serif);font-size:clamp(1.32rem,5.1vw,1.85rem);line-height:1.42;color:var(--ink);text-wrap:balance;opacity:0;transform:translate3d(0,16px,0);transition:opacity 1.1s ease 1.55s,transform 1.2s cubic-bezier(.2,.8,.25,1) 1.55s}.closing.is-in .closing__message{opacity:1;transform:none}.closing__date{margin-top:clamp(2.4rem,9vw,3.4rem);font-family:var(--serif);font-style:italic;font-size:1.04rem;color:var(--ink-mute);opacity:0;transform:translate3d(0,10px,0);transition:opacity 1.1s ease 2.4s,transform 1.2s ease 2.4s}.closing.is-in .closing__date{opacity:1;transform:none}.music{position:fixed;right:calc(env(safe-area-inset-right,0px) + .85rem);bottom:calc(env(safe-area-inset-bottom,0px) + .85rem);z-index:40;width:46px;height:46px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;cursor:pointer;background:linear-gradient(168deg,#fffdf4f0,#fff0c6e0);box-shadow:0 10px 22px -14px #825a0f80,inset 0 0 0 1px var(--gold-line);transition:transform .4s cubic-bezier(.2,.8,.25,1)}.music:hover{transform:translateY(-1px)}.music__bars{display:flex;align-items:flex-end;gap:3px;height:15px}.music__bars i{width:2.5px;height:40%;border-radius:2px;background:var(--gold-deep);transition:height .3s ease}.music.is-playing .music__bars i{animation:eq 1.05s ease-in-out infinite alternate}.music.is-playing .music__bars i:nth-child(2){animation-delay:.22s}.music.is-playing .music__bars i:nth-child(3){animation-delay:.44s}@keyframes eq{0%{height:28%}to{height:100%}}@media(min-width:900px){.hero__text{padding-top:clamp(3.5rem,10vh,6rem)}.memory__foliage{width:clamp(160px,40%,260px);bottom:-5%}}@media(max-width:720px){.is-open .plane--far .sway,.is-open .plane--grass .sway{animation:none}.memory__foliage{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;transition-delay:0s!important}.bloom,.head,.sway,.cover .bloom,.cover .head,.cover .sway,.memory.is-in .bloom,.memory.is-in .head,.memory.is-in .sway,.closing.is-in .bloom,.closing.is-in .head,.closing.is-in .sway{animation:none!important;opacity:1;transform:none}.reveal,.letter__paper,.letter__paper .eyebrow,.letter__ornament,.letter__body p,.letter__sign,.hero__kicker,.hero__title,.hero__title .name,.hero__hint,.cover__inner,.closing__message,.closing__date{animation:none!important;opacity:1;transform:none;clip-path:none}.hero__text,.petals{transform:none}.hero__hint-line{opacity:.6}.cover.is-gone{display:none}html{scroll-behavior:auto}}
