.fx-btn{background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:7px 10px;font-size:.95rem;cursor:pointer;flex-shrink:0;line-height:1}
.fx-conf{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:60}
.fx-conf i{position:absolute;top:-14px;width:9px;height:14px;border-radius:2px;opacity:0;animation:fxFall 2s ease-in forwards}
@keyframes fxFall{0%{opacity:1;translate:0 0}100%{opacity:0;translate:var(--dx,0) 105vh}}
.lx-fb.ok .lx-fbmsg b{display:inline-block;animation:fxPop .35s ease-out}
.lx-fb.ko .lx-fbmsg b{display:inline-block;animation:fxShake .4s ease-in-out}
.lx-done .lx-stars span.on{display:inline-block;animation:fxPop .5s ease-out both}
.lx-done .lx-stars span.on:nth-child(2){animation-delay:.15s}
.lx-done .lx-stars span.on:nth-child(3){animation-delay:.3s}
.lx-done .lx-trophy{animation:fxPop .6s ease-out}
@keyframes fxPop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.15);opacity:1}100%{transform:scale(1)}}
@keyframes fxShake{0%,100%{transform:translateX(0)}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}
@media (prefers-reduced-motion:reduce){.lx-fb .lx-fbmsg b,.lx-done .lx-stars span,.lx-done .lx-trophy{animation:none!important}}
.lx-hearts{font-weight:700;color:var(--err);white-space:nowrap;margin-left:10px;flex-shrink:0}
.lx-hearts.hit{animation:fxShake .4s ease-in-out}
.g-hearts{position:fixed;right:12px;bottom:calc(14px + env(safe-area-inset-bottom,0px));z-index:40;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:6px 12px;font-weight:700;color:var(--err);box-shadow:0 2px 8px rgba(0,0,0,.12)}
.g-hearts.hit{animation:fxShake .4s ease-in-out}
