:root{--parch:#efe3cf;--wine:#7a2424;--wine-soft:#8f3a33;--leaf:#3d6a32;--ink:#5a3a2c;--gold:#d9b56a;--w:min(100vw, 460px);--ease-door:cubic-bezier(.62, .02, .3, 1);--ease-out:cubic-bezier(.2, .7, .2, 1)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body{overscroll-behavior:none;height:100%;overflow:hidden}body{background:var(--parch);color:var(--ink);margin:0;font-family:Jost,system-ui,sans-serif}.phone{width:var(--w);background:var(--parch);touch-action:none;height:100dvh;margin:0 auto;position:relative;overflow:hidden}@media (width>=600px){body{background:radial-gradient(90% 90% at 50% 30%,#eadcc4 0%,#dccab0 60%,#cdb99c 100%)}.phone{box-shadow:0 0 0 1px #7a24241f,0 30px 80px #50321e47}}.book-wrap{position:absolute;inset:0}.book{width:100%;height:100%}.page{background:var(--parch);position:relative;overflow:hidden}.page-bg{background:var(--parch) center / cover no-repeat;transition:transform 6s var(--ease-out);position:absolute;inset:0;transform:scale(1.06)}.page.in .page-bg{transform:none}.columns .page-bg{background-image:url(/assets/columns-CCQV1K64.webp)}.frame .page-bg{background-image:url(/assets/frame-DRZ9xbYr.webp)}.fountain .page-bg{background-image:url(/assets/fountain-By64UqiP.webp);background-position:bottom}.page-in{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:90px 64px;display:flex;position:absolute;inset:0}.frame .page-in{padding:80px 13% 80px 24%}.fountain .page-in{justify-content:flex-start;padding:20dvh 15% 0}.page h1{flex-direction:column;align-items:center;margin:0;font-weight:500;line-height:1;display:flex}.page .line{color:var(--wine);font-family:Playfair Display,Georgia,serif;font-size:clamp(44px,13vw,60px)}.page .script{color:var(--leaf);margin:4px 0 6px;padding:0 10px;font-family:Great Vibes,cursive;font-size:clamp(52px,15vw,70px);font-weight:400}.orn{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 150 14'%3E%3Cg fill='none' stroke='%237a2424' stroke-linecap='round'%3E%3Cpath d='M4 7h50M96 7h50' stroke-width='.9'/%3E%3Cpath d='M54 7c5-6 11-6 14-1 2 3-1 5-3 4M96 7c-5-6-11-6-14-1-2 3 1 5 3 4M54 7c5 6 11 6 14 1M96 7c-5 6-11 6-14 1' stroke-width='1.1'/%3E%3C/g%3E%3Cpath d='M75 2.5c2.6 2 2.6 7 0 9-2.6-2-2.6-7 0-9z' fill='%237a2424'/%3E%3C/svg%3E") 50%/contain no-repeat;width:150px;height:14px;margin:26px 0;display:block}.orn.small{width:110px;margin:14px 0 20px}.page h2{color:var(--leaf);margin:0;font:400 46px/1.15 Great Vibes,cursive}.page p{max-width:28ch;color:var(--wine-soft);margin:0;font-size:18px;line-height:1.65}.close-line{color:var(--wine)!important;max-width:16ch!important;font:700 26px/1.35 Playfair Display,Georgia,serif!important}.sign{color:var(--leaf)!important;margin-top:8px!important;font:400 54px/1.2 Great Vibes,cursive!important}.page .orn{transition:transform 1.1s var(--ease-out);transform:scaleX(0)}.page.in .orn{transition-delay:.5s;transform:none}.page.in h1+.orn{transition-delay:1.6s}.page .line{opacity:0;transition:opacity 1s ease, transform 1.1s var(--ease-out);transform:translateY(20px)}.page.in .l1{opacity:1;transition-delay:.7s;transform:none}.page.in .l3{opacity:1;transition-delay:1.3s;transform:none}.script>span,.page h2>span,.sign>span{clip-path:inset(-20% 100% -30% 0);padding:0 .25em;transition:clip-path 1.6s cubic-bezier(.45,.05,.3,1);display:inline-block}.page.in .script>span{clip-path:inset(-20% 0 -30%);transition-delay:1s}.page.in h2>span{clip-path:inset(-20% 0 -30%);transition-delay:.35s}.page.in .sign>span{clip-path:inset(-20% 0 -30%);transition-delay:1.8s}.w{opacity:0;filter:blur(3px);transition:opacity .6s ease, transform .7s var(--ease-out), filter .6s ease;display:inline-block;transform:translateY(8px)}.page.in .w{opacity:1;filter:none;transition-delay:calc(.8s + var(--i) * 45ms);transform:none}.page.in .close-line .w{transition-delay:calc(.6s + var(--i) * .14s)}.glints{pointer-events:none;position:absolute;inset:0}.glints i{width:var(--s);height:var(--s);background:radial-gradient(circle, #fff 0 12%, var(--gold) 30%, transparent 70%);clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);opacity:0;animation:twinkle var(--d) ease-in-out var(--delay) infinite;position:absolute}@keyframes twinkle{0%,70%,to{opacity:0;transform:scale(.3)rotate(0)}80%{opacity:1;transform:scale(1)rotate(45deg)}}.heart{cursor:pointer;letter-spacing:.2em;text-transform:uppercase;color:var(--wine);opacity:0;pointer-events:none;-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex-direction:column;align-items:center;gap:4px;margin-top:28px;padding:6px;font:500 12px/1 Jost,sans-serif;transition:opacity .8s,transform .9s cubic-bezier(.3,1.6,.5,1);display:flex;transform:scale(.4)}.heart svg{fill:#9b2632;filter:drop-shadow(0 4px 8px #7a242466);width:42px;height:40px}.heart.ready{opacity:1;pointer-events:auto;transform:none}.heart.ready svg{animation:1.3s ease-in-out infinite beat}.heart.pop svg{animation:.6s cubic-bezier(.3,1.8,.5,1) pop,1.3s ease-in-out .6s infinite beat}@keyframes beat{0%,to{transform:scale(1)}15%{transform:scale(1.18)}30%{transform:scale(1)}45%{transform:scale(1.12)}}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.6)}to{transform:scale(1)}}.dots{z-index:6;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));pointer-events:none;opacity:0;gap:8px;transition:opacity 1s 2.5s;display:flex;position:absolute;transform:translate(-50%)}body.opened .dots{opacity:1}.dots i{background:#7a242440;border-radius:50%;width:6px;height:6px;transition:background .4s,transform .4s}.dots i.on{background:var(--wine);transform:scale(1.35)}.hint{z-index:6;left:50%;bottom:calc(42px + env(safe-area-inset-bottom));letter-spacing:.06em;color:var(--wine);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .8s ease, transform .8s var(--ease-out);background:#faf3e6e6;border:1px solid #7a24244d;border-radius:999px;margin:0;padding:10px 18px;font:500 13px/1 Jost,sans-serif;position:absolute;transform:translate(-50%,10px);box-shadow:0 4px 14px #50321e24}body.opened .hint{opacity:1;transition-delay:3.2s;transform:translate(-50%)}body.opened .hint.done{opacity:0;transition-delay:0s}.hand{font-size:16px;animation:1.8s ease-in-out infinite swipe;display:inline-block}@keyframes swipe{0%,to{transform:translate(6px)}50%{transform:translate(-6px)}}.sky{z-index:12;pointer-events:none;perspective:600px;position:absolute;inset:0;overflow:hidden}.bloom{width:var(--s);height:var(--s);margin-left:calc(var(--s) / -2);animation:fall var(--d) linear forwards;will-change:transform;position:absolute}.bloom svg{filter:drop-shadow(0 3px 3px #501e1440);width:100%;height:100%;animation:tumble calc(var(--d) * .45) ease-in-out infinite alternate;display:block;overflow:visible}@keyframes fall{0%{transform:translate3d(0, 0, 0) rotate(var(--r0));opacity:0}6%{opacity:1}50%{transform:translate3d(var(--drift), 55dvh, 0) rotate(calc(var(--r0) + var(--spin) * .5))}92%{opacity:1}to{transform:translate3d(calc(var(--drift) * -.5), calc(100dvh + 80px), 0) rotate(calc(var(--r0) + var(--spin)));opacity:0}}@keyframes tumble{0%{transform:rotateX(0)rotateY(0)}to{transform:rotateX(var(--tilt)) rotateY(calc(var(--tilt) * -.6))}}.bloom.burst{animation:burst var(--d) cubic-bezier(.15, .6, .4, 1) forwards}@keyframes burst{0%{transform:translate3d(0, 0, 0) scale(.2) rotate(var(--r0));opacity:0}8%{opacity:1}28%{transform:translate3d(var(--bx), var(--by), 0) scale(1) rotate(calc(var(--r0) + var(--spin) * .3))}to{transform:translate3d(calc(var(--bx) * 1.25), calc(var(--by) + 100dvh), 0) scale(1) rotate(calc(var(--r0) + var(--spin)));opacity:.9}}.doors{z-index:10;perspective:700px;perspective-origin:50%;position:absolute;inset:0}.door{width:50%;transform-style:preserve-3d;transition:transform 1.6s var(--ease-door), opacity .5s ease 1.25s;background:var(--parch) center / cover no-repeat;will-change:transform;position:absolute;top:0;bottom:0}.door.left{transform-origin:0;background-image:url(/assets/door-l-BXzMe95y.webp);background-position:100%;left:0}.door.right{transform-origin:100%;background-image:url(/assets/door-r-B7phaX10.webp);background-position:0;right:0}.door:after{content:"";pointer-events:none;opacity:0;transition:opacity 1.4s var(--ease-door);background:linear-gradient(90deg,#3c1e1400 40%,#3c1e1480);position:absolute;inset:0}.door.right:after{background:linear-gradient(270deg,#3c1e1400 40%,#3c1e1480)}.edge{background:linear-gradient(90deg,#d8c6a8,#f3e9d8 60%,#e2d2b6);width:6px;position:absolute;top:0;bottom:0}.left .edge{transform-origin:0;left:100%;transform:rotateY(90deg)}.right .edge{transform-origin:100%;right:100%;transform:rotateY(-90deg)}.seal{z-index:3;aspect-ratio:768/225;cursor:pointer;filter:drop-shadow(0 8px 10px #46231459)drop-shadow(0 2px 2px #4623144d);-webkit-tap-highlight-color:transparent;background:0 0;border:0;width:100%;padding:0;transition:transform .25s;animation:3s ease-in-out infinite breathe;position:absolute;top:47%;left:0;transform:translateY(-50%)}.seal .half{width:100%;height:100%;transition:transform 1.1s cubic-bezier(.5,0,.3,1),opacity .9s .3s;position:absolute;inset:0}.seal .half.l{clip-path:polygon(0 0,50% 0,47% 30%,52% 52%,48% 72%,51% 100%,0 100%)}.seal .half.r{clip-path:polygon(50% 0,100% 0,100% 100%,51% 100%,48% 72%,52% 52%,47% 30%)}.seal:after{content:"";aspect-ratio:.82;pointer-events:none;border:1px solid #7a242473;border-radius:50%;width:34%;animation:2.6s ease-out infinite halo;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.seal:before{content:"";aspect-ratio:1;opacity:0;pointer-events:none;z-index:2;background:radial-gradient(circle,#ffecc8f2,#ffc8a000 65%);border-radius:50%;width:40%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}@keyframes breathe{50%{transform:translateY(-50%)scale(1.015)}}.open{z-index:3;left:50%;bottom:calc(46px + env(safe-area-inset-bottom));letter-spacing:.28em;text-transform:uppercase;color:#fbf3e6;white-space:nowrap;cursor:pointer;background:linear-gradient(#8a2c2a,#6a1d1d);border:1px solid #5a1616;border-radius:999px;min-width:230px;padding:16px 30px;font:500 13px/1 Jost,sans-serif;transition:opacity .4s,transform .2s;position:absolute;transform:translate(-50%);box-shadow:inset 0 1px #ffffff40,0 8px 22px #461e144d}.open:active{transform:translate(-50%)translateY(1px)}.open:focus-visible,.seal:focus-visible,.heart:focus-visible{outline:2px solid var(--wine);outline-offset:4px}.doors.pressed .seal{animation:none;transform:translateY(-50%)scale(.96)}.doors.pressed .seal:after{opacity:0;animation:none}.doors.broken .seal:before{animation:.7s ease-out forwards flash}.doors.broken .half.l{opacity:0;transform:translate(-62%)translateY(14px)rotate(-9deg)}.doors.broken .half.r{opacity:0;transform:translate(62%)translateY(14px)rotate(9deg)}.doors.broken .open{opacity:0}@keyframes flash{30%{opacity:1;transform:translate(-50%,-50%)scale(1.4)}to{opacity:0;transform:translate(-50%,-50%)scale(2.4)}}.doors.opening{pointer-events:none}.doors.opening .door.left{opacity:0;transform:rotateY(-105deg)}.doors.opening .door.right{opacity:0;transform:rotateY(105deg)}.doors.opening .door:after{opacity:1}.doors.gone{display:none}@keyframes halo{0%{opacity:.8;transform:translate(-50%,-50%)scale(.96)}to{opacity:0;transform:translate(-50%,-50%)scale(1.2)}}@media (prefers-reduced-motion:reduce){.door,.door:after{transition:opacity .6s}.doors.opening .door.left,.doors.opening .door.right{transform:none}.seal,.seal:after,.hand,.glints i,.heart.ready svg{animation:none}.page-bg{transform:none}.page .line,.w{filter:none!important;transform:none!important}.w,.page.in .w{transition-delay:.3s!important}}
