/* Fast entrance, long deceleration, a brief impact, then air. */
.quiz-battle{overflow:clip}
.answer-cheer{position:absolute;z-index:8;left:50%;top:-12px;width:max-content;max-width:calc(100vw - 48px);pointer-events:none;isolation:isolate;transform:translateX(-50%);--ink:#172452;--shine:#f9ffb9}
.cheer-arrival{position:relative;animation:cheer-arrive 900ms linear both;transform-origin:50% 75%;will-change:transform,filter,opacity}
.cheer-lock{position:relative;z-index:2;text-align:center;animation:cheer-lock 900ms linear both}
.cheer-word{position:relative;display:block;white-space:nowrap;font-family:"Arial Black","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;font-size:clamp(29px,8.2vw,43px);font-weight:950;letter-spacing:-.055em;line-height:1.35;color:#fffef0;-webkit-text-stroke:1.3px var(--ink);paint-order:stroke fill;text-shadow:0 3px 0 var(--ink),2px 5px 0 #8273c9,0 0 18px #f2e7aa99}
.cheer-word:after{content:attr(data-word);position:absolute;inset:0;color:transparent;-webkit-text-fill-color:transparent;text-shadow:none;-webkit-text-stroke:0;background:linear-gradient(110deg,transparent 35%,#ffffff 48%,transparent 60%) -240px 0/180px 100% no-repeat;background-clip:text;-webkit-background-clip:text;animation:cheer-glint 900ms linear both}
.cheer-echo{position:absolute;inset:0;z-index:-1;font-size:clamp(29px,8.2vw,43px);font-weight:950;white-space:nowrap;letter-spacing:-.055em;color:#8feaff;filter:blur(5px);animation:cheer-echo 900ms linear both}
.cheer-combo{display:inline-block;font-size:12px;line-height:1.2;font-weight:800;color:#ffeb97;text-shadow:0 2px 1px #172452,1px 0 #172452,-1px 0 #172452;letter-spacing:.03em;padding:0 9px;transform:rotate(2deg)}
.cheer-combo em{font-size:24px;font-style:italic;font-weight:950;margin-right:2px}
.cheer-burst{position:absolute;z-index:-1;inset:-12px -20px;background:radial-gradient(ellipse,#fff1aabb,transparent 67%);transform:scale(.2);opacity:0;animation:cheer-burst 900ms linear both}
.cheer-sparks{position:absolute;left:50%;top:90%;width:0;height:0;z-index:-1}
.cheer-sparks i{display:block;position:absolute;left:0;top:0;font-style:normal;opacity:0;animation:cheer-spark 690ms var(--delay) cubic-bezier(.1,.65,.18,1) both}
.spark-star{font-size:18px;color:#ffe979;text-shadow:0 0 8px #ffc55f}.spark-streak{width:3px;height:18px;border-radius:100%;background:linear-gradient(transparent,#d1faff);box-shadow:0 0 7px #8fddff}
.answer-cheer.tier-2{--shine:#ffe78b}.answer-cheer.tier-3 .cheer-word,.answer-cheer.tier-4 .cheer-word{color:#fff1a4;text-shadow:0 3px 0 #493067,2px 5px 0 #c671b6,0 0 24px #ffda9999}.answer-cheer.tier-4 .spark-star{font-size:24px}
@keyframes cheer-arrive{
 0%{opacity:0;transform:translate(var(--cheer-from),100px) rotate(calc(var(--cheer-angle) - 16deg)) scale(.55,1.5);filter:blur(12px)}
 9%{opacity:1;transform:translate(calc(var(--cheer-from)*.14),-13px) rotate(calc(var(--cheer-angle) + 4deg)) scale(calc(var(--cheer-size)*1.16),calc(var(--cheer-size)*.9));filter:blur(2px)}
 19%{opacity:1;transform:translate(0,-4px) rotate(var(--cheer-angle)) scale(var(--cheer-size));filter:blur(0)}
 37%{transform:translate(0,-7px) rotate(var(--cheer-angle)) scale(var(--cheer-size));filter:blur(0)}
 73%{opacity:1;transform:translate(0,-11px) rotate(calc(var(--cheer-angle) + 1deg)) scale(var(--cheer-size));filter:blur(0)}
 100%{opacity:0;transform:translate(calc(var(--cheer-from)*-.4),-54px) rotate(calc(var(--cheer-angle) + 5deg)) scale(.95);filter:blur(5px)}
}
@keyframes cheer-lock{0%,9%{transform:translate(0,0)}12%{transform:translate(var(--cheer-shake),calc(var(--cheer-shake)*-1))}16%{transform:translate(calc(var(--cheer-shake)*-1),var(--cheer-shake))}20%{transform:translate(var(--cheer-shake),0)}25%,100%{transform:translate(0,0)}}
@keyframes cheer-echo{0%{opacity:0;transform:translate(0,45px) scaleY(1.6)}9%{opacity:.55;transform:translate(0,15px) scaleY(1.2)}25%,100%{opacity:0;transform:translate(0,2px)}}
@keyframes cheer-burst{6%{opacity:0;transform:scale(.2)}13%{opacity:.7;transform:scale(1.15)}42%,100%{opacity:0;transform:scale(1.5)}}
@keyframes cheer-glint{0%,24%{background-position:-240px 0}62%,100%{background-position:360px 0}}
@keyframes cheer-spark{0%{opacity:0;transform:translate(0,45px) rotate(var(--spin)) scale(.3)}12%{opacity:1}65%{opacity:.9}100%{opacity:0;transform:translate(var(--sx),var(--sy)) rotate(calc(var(--spin) + 50deg)) scale(.1)}}
/* Reduced motion still gives a readable response, without flight or shake. */
body.motion-reduced .battle .cheer-arrival{animation:cheer-soft 750ms ease-out both!important;transform:rotate(var(--cheer-angle))}.motion-reduced .cheer-lock,.motion-reduced .cheer-word:after{animation:none}.motion-reduced .cheer-sparks,.motion-reduced .cheer-echo,.motion-reduced .cheer-burst{display:none}
@keyframes cheer-soft{0%{opacity:0}15%,70%{opacity:1}100%{opacity:0}}
