/* 默契问答 · Motion */
@keyframes ringLeft{0%{transform:translateX(-16px) scale(.9);opacity:.6}60%{transform:translateX(2px) scale(1.02)}to{transform:translateX(0) scale(1);opacity:1}}
@keyframes ringRight{0%{transform:translateX(16px) scale(.9);opacity:.6}60%{transform:translateX(-2px) scale(1.02)}to{transform:translateX(0) scale(1);opacity:1}}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes popIn{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}
@keyframes dashReveal{from{stroke-dashoffset:var(--d)}to{stroke-dashoffset:var(--e)}}
@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}

.ring-a{animation:ringLeft .7s cubic-bezier(.2,0,0,1) both}
.ring-b{animation:ringRight .7s cubic-bezier(.2,0,0,1) both}
.fade-up{animation:fadeUp .45s ease both}
.fade-up-1{animation-delay:.05s}.fade-up-2{animation-delay:.12s}
.fade-up-3{animation-delay:.19s}.fade-up-4{animation-delay:.26s}
.pop-in{animation:popIn .3s cubic-bezier(.2,0,0,1) both}
.float{animation:float 3s ease-in-out infinite}
.pulse{animation:pulse 2s ease-in-out infinite}
.score-ring-progress{animation:dashReveal 1s cubic-bezier(.2,0,0,1) both .15s}
.page-enter{animation:fadeUp .4s ease both}
.celebrate{animation:popIn .5s cubic-bezier(.2,0,0,1) both}

.stagger>*{animation:fadeUp .4s ease both}
.stagger>:nth-child(1){animation-delay:.05s}.stagger>:nth-child(2){animation-delay:.1s}
.stagger>:nth-child(3){animation-delay:.15s}.stagger>:nth-child(4){animation-delay:.2s}
.stagger>:nth-child(5){animation-delay:.25s}.stagger>:nth-child(6){animation-delay:.3s}
.stagger>:nth-child(7){animation-delay:.35s}.stagger>:nth-child(8){animation-delay:.4s}

@media(prefers-reduced-motion:reduce){.ring-a,.ring-b,.fade-up,.pop-in,.score-ring-progress,.float,.pulse,.celebrate,.page-enter,.stagger>*{animation:none!important}}
