/* Local scenery stays on the paper; only the butterfly follows the reader. */
svg.line-arrow{display:inline-block;width:1em;height:1em;vertical-align:-.16em;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.confirm-seal i svg.line-arrow{position:static;width:1em;height:1em;margin:0;transform:none;opacity:1;fill:none}
#companion .butterfly-model{transform:rotateX(10deg);filter:none}
#companion .wing-left{animation-name:companion-wing-left}
#companion .wing-right{animation-name:companion-wing-right}
#companion.flying .wing{animation-duration:.28s}
#companion.resting .wing{animation-duration:.85s}
@keyframes companion-wing-left{from{transform:rotateY(-8deg)}to{transform:rotateY(-58deg)}}
@keyframes companion-wing-right{from{transform:rotateY(8deg)}to{transform:rotateY(58deg)}}
.cover,.scene,.journey-stage,footer{isolation:isolate;position:relative}.scene-ambient{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.background-flower{position:absolute;color:#c3808b;opacity:.09;animation:background-bloom 14s ease-in-out infinite alternate}.glint{position:absolute}.scene-butterfly,.journey-butterfly,.footer-butterfly,.cue-butterfly{display:none!important}#companion{position:fixed;left:0;top:0;z-index:65;pointer-events:none;will-change:transform;overflow:visible}#messenger{overflow:visible;isolation:isolate;transform-style:flat}.butterfly-model{overflow:visible}.wing{overflow:visible}#envelope-rig{transform-style:flat}#reading-flights{position:fixed;inset:0;z-index:83;pointer-events:none;overflow:hidden}.letter-fly{position:absolute;width:100px;height:100px}.letter.ready{cursor:pointer;animation:letter-sway 6s ease-in-out infinite}.letter.ready:hover{box-shadow:0 0 0 7px #fff9f0 inset,0 25px 70px #6b2d4030}.letter.ready:focus-visible{outline:2px solid #a96972;outline-offset:8px}.letter.ready .tap-guide{right:-12px;bottom:-10px}.tap-guide{position:absolute;width:48px;height:55px;right:0;bottom:0;pointer-events:none;z-index:12;opacity:.55;animation:tap-demo 2.6s ease-in-out infinite;filter:drop-shadow(0 2px 2px #71433e15)}.tap-guide svg{width:100%!important;height:100%!important;margin:0!important;overflow:visible}.tap-guide path{fill:#fff9ee;stroke:#9c626d;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tap-ring{fill:none;stroke:#ad7b73;stroke-width:1.5;transform-origin:25px 13px;animation:tap-ring 2.6s ease-out infinite}.confirm-seal .tap-guide{right:-20px;bottom:-12px;width:50px;height:60px}.confirm-seal{animation:seal-invite 4s ease-in-out infinite}.confirm-seal.departing{animation:none}.pass-caption{padding-top:5px}.scroll-cue{margin-top:40px}.party-steps{display:flex;align-items:center;justify-content:center;gap:10px;margin:24px auto 10px;font-size:11px;color:#967367}.party-steps i{width:22px;height:1px;background:#d4b8a0}.party-steps span{padding:5px 0;transition:color .3s}.party-steps .current{color:#a43862;font-weight:600;border-bottom:1px solid #ba6f88}.party-steps .done{color:#9f7950}.party-steps .done:before{content:'✓ ';font-size:10px}.party-stage{margin-top:10px}.party-tray{min-height:150px;max-width:500px;margin:15px auto 0;display:grid;place-items:center;position:relative}.party-tray:before{content:'';position:absolute;width:270px;height:100px;border-radius:50%;background:radial-gradient(ellipse,#dfb7aa30,transparent 70%);pointer-events:none;bottom:6px}#flower-tray{display:flex;gap:35px;align-items:center;min-height:145px}.flower-pick{background:none;border:0;padding:0;width:90px;height:100px;position:relative;filter:drop-shadow(0 9px 7px #90485522);color:#d282a0}.flower-pick:nth-child(2){color:#d9b078}.flower-pick:nth-child(3){color:#df99aa}.flower-prop{display:block;width:90px;height:90px}.flower-pick:disabled{opacity:1}.flower-pick .tap-guide{right:-12px;bottom:-12px}.party-flowers{gap:0}.party-flowers svg{width:84px;height:84px;transition:none}.party-flowers svg:nth-child(even){width:68px;height:68px}.party-flowers svg:nth-child(3){width:84px;height:84px}.party-action{position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;min-width:180px;min-height:145px;border:0;padding:0 25px;background:none;color:#8b3e56}.action-label{font:italic 21px 'Playfair Display';margin-top:14px}.action-label small{display:block;font:11px 'DM Sans';margin-top:7px;color:#875e55}.party-action .tap-guide{right:20px;bottom:35px}.balloon-prop{position:relative;display:block;width:65px;height:80px;border-radius:48% 48% 45% 45%;background:radial-gradient(ellipse at 25% 20%,#fff7e8b0,transparent 25%),linear-gradient(120deg,#e6a1b9,#c3668b);box-shadow:inset -8px -5px 12px #ab506e22;transform:scale(.8,.72)}.balloon-prop:after{content:'';position:absolute;left:calc(50% - 5px);bottom:-7px;width:10px;height:10px;background:#c77292;clip-path:polygon(50% 0,100% 100%,0 100%)}.lighter-tool{display:block;position:relative;width:44px;height:75px;background:linear-gradient(90deg,#b77853,#f3dab4 40%,#be8c63);border-radius:5px 5px 10px 10px;border:1px solid #b78663;box-shadow:0 8px 10px #956b4820}.lighter-tool:before{content:'E';position:absolute;inset:25px 0 0;font:27px 'Parisienne';color:#9e674b}.lighter-tool i{position:absolute;left:-1px;top:-15px;width:31px;height:17px;background:repeating-linear-gradient(90deg,#a48876 0 2px,#ddcbbb 2px 4px);border:1px solid #9d806a;border-radius:5px 5px 0 0}.lighter-tool b{position:absolute;right:0;top:-5px;width:11px;height:11px;border-radius:3px;background:#ac6a6f}.lighter-tool.lit:after{content:'';position:absolute;left:5px;top:-38px;width:15px;height:26px;border-radius:80% 20% 60% 30%;background:radial-gradient(ellipse at 50% 80%,#fffad8,#ffd181 55%,#c8844b);box-shadow:0 0 12px #f7c17e88}.blow-prop{width:100px;height:70px;stroke:#b17472;stroke-width:3;stroke-linecap:round;fill:none}.wind{position:absolute;left:calc(50% - 220px);top:75px;width:300px;height:100px;z-index:10;pointer-events:none;fill:none;stroke:#c1a78c;stroke-width:3;stroke-linecap:round;opacity:0;filter:drop-shadow(0 1px #fff)}.wind path{stroke-dasharray:400;stroke-dashoffset:0}.travelling-prop{overflow:visible;will-change:transform}.party-ready .candle:after{display:none}.party-ready .candle{outline-offset:8px}#wish-message{font:italic 20px/1.5 'Playfair Display';min-height:32px;margin-top:8px}#party-finish{font:italic 30px 'Playfair Display';color:#9f3f60;max-width:320px}#replay-party{margin-top:15px}.birthday-banner{top:85px}.party-done .flame{opacity:0!important}#rsvp-transition{position:fixed;inset:0;z-index:99;background:radial-gradient(ellipse,#fff8e9,#f4cfda);display:flex;flex-direction:column;gap:20px;align-items:center;justify-content:center;text-align:center;padding:30px;pointer-events:auto}#rsvp-transition p{font:italic 45px 'Playfair Display';color:#9a3a5e}#rsvp-transition>span{font-size:13px}#whatsapp-fallback{font-size:13px;color:#793e51;text-underline-offset:5px;margin-top:20px}
@keyframes letter-sway{0%,100%{rotate:-1.2deg;translate:0 0}50%{rotate:1.2deg;translate:0 -5px}}@keyframes tap-demo{0%,20%,100%{transform:translate(8px,9px) rotate(-8deg);opacity:.25}40%,55%{transform:translate(0,0) rotate(-8deg);opacity:.65}65%{transform:translate(3px,3px) rotate(-8deg);opacity:.5}}@keyframes tap-ring{0%,30%,100%{opacity:0;scale:.5}45%{opacity:.8;scale:.8}70%{opacity:0;scale:1.8}}@keyframes seal-invite{0%,80%,100%{filter:brightness(1)}87%{filter:brightness(1.1)}}@keyframes background-bloom{to{rotate:8deg;opacity:.13}}
@media(max-width:600px){.letter.ready .tap-guide{right:-8px;bottom:-18px;width:44px;height:53px}.party-steps{gap:8px;font-size:10px}.party-steps i{width:14px}.party-stage{height:330px}.party-tray{min-height:155px;margin-top:10px}#flower-tray{gap:22px}.flower-pick{width:75px;height:85px}.flower-prop{width:75px;height:75px}.flower-pick .tap-guide{width:42px;height:50px;right:-10px}.party-flowers svg{width:75px;height:75px}.party-flowers svg:nth-child(even){width:60px;height:60px}.party-flowers svg:nth-child(3){width:75px;height:75px}.wind{top:75px;width:250px;left:calc(50% - 190px)}#wish-message{font-size:19px;min-height:35px}.action-label{font-size:21px}.game-instruction{min-height:22px}#party-finish{font-size:27px}.confirm-seal .tap-guide{width:47px;height:55px}.pass-caption{font-size:11px!important}.birthday-banner{top:90px}.letter-fly{width:80px;height:80px}#rsvp-transition p{font-size:37px}}
#party-finish{max-width:380px;width:100%;text-align:center}#party-finish>p{font:italic 26px/1.3 'Playfair Display';margin:0 0 15px}#party-next{display:flex;flex-direction:column;align-items:center;gap:6px;color:#87364f;text-decoration:none;font:italic 23px 'Playfair Display';padding:8px 15px;min-height:100px}#party-next>span{font:12px 'DM Sans';color:#785448}#party-next>b{font:27px 'DM Sans';font-weight:400;animation:continue-down 1.8s ease-in-out infinite}.party-complete #wish-message{display:none}.party-complete #replay-party{font-size:11px;opacity:.7;margin-top:22px}.party-complete .party-tray{margin-top:20px}@keyframes continue-down{50%{transform:translateY(7px)}}
@media(prefers-reduced-motion:reduce){.tap-guide{opacity:.55}.letter.ready{rotate:0}.background-flower{opacity:.1}}
