/* Expressive motion without blocking the next input. */
.q-scene{animation-duration:.52s;animation-timing-function:cubic-bezier(.16,.85,.25,1);isolation:isolate}
.q-scene.forward{animation-name:motion-forward}.q-scene.backward{animation-name:motion-back}
.q-scene>h1{animation:motion-rise .55s .07s both}.q-sub{animation:motion-rise .55s .13s both}
.q-content{animation:motion-rise .55s .19s both}
.q-buddy.q-art{width:150px;height:121px;margin:-5px 0 12px;animation:motion-art .7s cubic-bezier(.18,.9,.3,1.25) both}
.q-buddy.q-art svg{width:150px;height:121px;overflow:visible}
.art-object{transform-origin:90px 85px;animation:art-float 2.6s .7s ease-in-out 2}
.art-shadow{transform-origin:90px 134px;animation:art-shadow 2.6s .7s ease-in-out 2}
.art-hop{transform-origin:center;animation:art-hop 1.5s .3s ease-in-out 3}
.art-heart{transform-origin:center;transform-box:fill-box;animation:heart-beat 1.4s .5s ease-in-out 3}
.art-spark{transform-origin:90px 70px;animation:art-spark 1.4s .2s ease-in-out 3}
.art-flames{transform-origin:center bottom;transform-box:fill-box;animation:candle-dance .8s ease-in-out 6 alternate}
.art-steam{animation:steam-rise 1.7s ease-in-out 3}
.q-track{height:4px;overflow:visible}.q-track i{position:relative;box-shadow:0 0 12px #9aaf8266;transition:width .5s cubic-bezier(.16,1,.3,1)}
.q-track i:after{content:'';position:absolute;right:-3px;top:-2px;width:8px;height:8px;border-radius:50%;background:#9aad83;animation:progress-ping .7s ease-out both}
.q-option{position:relative;overflow:hidden;transition:background .15s,border-color .15s,transform .15s,box-shadow .2s}
.q-option:active{transform:scale(.96)}.q-option.selected{box-shadow:0 6px 20px #70885418;animation:selection-spring .38s both}
.q-option.selected:after{content:'';position:absolute;width:180px;height:180px;right:-25px;top:50%;border-radius:50%;background:#b6c99830;pointer-events:none;animation:selection-wave .42s ease-out both}
.q-option.selected i{animation:check-stamp .3s cubic-bezier(.15,.85,.3,1.4) both}
.q-chip.selected{animation:selection-spring .38s both;box-shadow:0 3px 12px #6b805b18}
.q-next{position:relative;overflow:hidden;box-shadow:0 7px 20px #6b805b20;transition:transform .2s,background .2s,box-shadow .2s}
.q-next:not(:disabled):after{content:'';position:absolute;inset:-100% auto -100% -80%;width:35%;background:linear-gradient(90deg,transparent,#ffffff38,transparent);transform:rotate(22deg);animation:button-sheen 1.4s .3s ease-out 1;pointer-events:none}
.q-next:disabled{box-shadow:none}.q-next:active:not(:disabled){transform:scale(.955);box-shadow:none}.q-next>span{animation:arrow-nudge .8s .4s 2}
.q-photo{animation:motion-art .5s both}.q-pending .q-art{margin-top:20px}.q-wait{animation:motion-rise .6s .25s both}
.q-confetti{position:absolute;inset:0 0 auto;height:300px;pointer-events:none;overflow:hidden;z-index:-1}
.q-confetti i{position:absolute;left:calc(5% + var(--i)*6.8%);top:0;width:7px;height:12px;border-radius:2px;background:#c5d4aa;animation:confetti-fall 1.8s calc(var(--i)*45ms) both}
.q-confetti i:nth-child(3n){background:#efb99e}.q-confetti i:nth-child(3n + 1){background:#d9c6e9;border-radius:50%}
@keyframes motion-forward{from{opacity:0;transform:translateX(52px) scale(.965)}to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes motion-back{from{opacity:0;transform:translateX(-45px) scale(.97)}to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes motion-rise{from{opacity:0;transform:translateY(19px)}to{opacity:1;transform:translateY(0)}}
@keyframes motion-art{0%{opacity:0;transform:translateY(16px) scale(.7) rotate(-9deg)}65%{opacity:1;transform:translateY(-5px) scale(1.06) rotate(3deg)}100%{opacity:1;transform:none}}
@keyframes art-float{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-7px) rotate(2deg)}}
@keyframes art-shadow{0%,100%{transform:scaleX(1);opacity:.65}50%{transform:scaleX(.78);opacity:.35}}
@keyframes art-hop{0%,65%,100%{transform:translateY(0)}30%{transform:translateY(-11px)}45%{transform:translateY(2px)}}
@keyframes heart-beat{0%,55%,100%{transform:scale(1)}20%{transform:scale(1.16)}35%{transform:scale(.95)}}
@keyframes art-spark{0%,100%{opacity:.45;transform:scale(.9)}50%{opacity:1;transform:scale(1.1) rotate(5deg)}}
@keyframes candle-dance{from{transform:scaleY(.86) rotate(-5deg)}to{transform:scaleY(1.1) rotate(5deg)}}
@keyframes steam-rise{0%{opacity:0;transform:translateY(6px)}45%{opacity:.8}100%{opacity:0;transform:translateY(-10px)}}
@keyframes selection-spring{0%{transform:scale(.96)}60%{transform:scale(1.025)}100%{transform:scale(1)}}
@keyframes check-stamp{from{transform:scale(.3) rotate(-35deg)}to{transform:scale(1) rotate(0)}}
@keyframes selection-wave{from{opacity:.8;transform:translateY(-50%) scale(.1)}to{opacity:0;transform:translateY(-50%) scale(2.3)}}
@keyframes progress-ping{from{box-shadow:0 0 0 0 #a4b48c99}to{box-shadow:0 0 0 12px #a4b48c00}}
@keyframes button-sheen{from{left:-60%}to{left:150%}}
@keyframes arrow-nudge{0%,100%{transform:translateX(0)}50%{transform:translateX(5px)}}
@keyframes confetti-fall{0%{opacity:0;transform:translateY(-15px) rotate(0)}15%{opacity:1}100%{opacity:0;transform:translate(var(--drift),290px) rotate(300deg)}}
@media(max-height:740px){.q-buddy.q-art,.q-buddy.q-art svg{width:115px;height:93px}.q-buddy.q-art{margin-bottom:7px}}
@media(prefers-reduced-motion:reduce){#momo-join *,#momo-join *:before,#momo-join *:after{animation:none!important;transition:none!important}.q-confetti{display:none}}
