/* Hiệu ứng phụ của sticker Nhạn (lấp lánh, rơi, bay…) — chỉ áp trong .nhan-sticker. */
.nhan-sticker g[class]{transform-box:fill-box;transform-origin:center}
.nhan-sticker .pulse{animation:nh-pulse .9s cubic-bezier(.3,.6,.3,1) infinite}
@keyframes nh-pulse{0%,100%{transform:scale(1)}18%{transform:scale(1.2)}34%{transform:scale(.95)}48%{transform:scale(1.1)}66%{transform:scale(1)}}
.nhan-sticker .twinkle{animation:nh-twinkle 1.6s ease-in-out infinite}
@keyframes nh-twinkle{0%,100%{transform:scale(1) rotate(0)}50%{transform:scale(.35) rotate(60deg);opacity:.4}}
.nhan-sticker .twinkle-s{animation:nh-twinkles 1.3s ease-in-out infinite alternate}
@keyframes nh-twinkles{from{transform:scale(.92) rotate(-8deg)}to{transform:scale(1.14) rotate(14deg)}}
.nhan-sticker .float{animation:nh-float 2.6s ease-in-out infinite}
@keyframes nh-float{0%{transform:translate(0,8px) scale(.3);opacity:0}16%{transform:translate(0,0) scale(1);opacity:1}50%{transform:translate(-5px,-14px) scale(.95)}100%{transform:translate(5px,-34px) scale(.8);opacity:0}}
.nhan-sticker .drip{animation:nh-drip 1.7s infinite}
@keyframes nh-drip{0%{transform:translateY(-2px) scale(0);opacity:0;animation-timing-function:cubic-bezier(.3,1.4,.5,1)}25%{transform:translateY(0) scale(1);opacity:1;animation-timing-function:cubic-bezier(.5,0,.9,.5)}100%{transform:translateY(34px) scale(.8);opacity:0}}
.nhan-sticker .zz{animation:nh-zz 2.8s ease-in-out infinite}
@keyframes nh-zz{0%{transform:translate(0,0) scale(.4) rotate(-10deg);opacity:0}30%{opacity:1}60%{transform:translate(10px,-14px) scale(.95) rotate(8deg)}100%{transform:translate(14px,-26px) scale(1.1) rotate(-4deg);opacity:0}}
.nhan-sticker .pop{animation:nh-pop 2s infinite}
@keyframes nh-pop{0%{transform:scale(0);opacity:0}14%{transform:scale(1.25);opacity:1}24%{transform:scale(.88)}33%{transform:scale(1.06)}42%,86%{transform:scale(1);opacity:1}100%{transform:scale(0);opacity:0}}
.nhan-sticker .flip{animation:nh-flip 2.6s infinite}
@keyframes nh-flip{0%,38%{transform:rotate(0);animation-timing-function:cubic-bezier(.6,-.3,.3,1.4)}62%,100%{transform:rotate(180deg)}}
.nhan-sticker .spin{animation:nh-spin 2.4s linear infinite}
@keyframes nh-spin{to{transform:rotate(360deg)}}
.nhan-sticker .steam{animation:nh-steam 2.3s ease-out infinite}
@keyframes nh-steam{0%{transform:translate(0,6px) scaleX(1);opacity:0}35%{opacity:.9}100%{transform:translate(3px,-16px) scaleX(1.4);opacity:0}}
.nhan-sticker .fall{animation:nh-fall 2s linear infinite}
@keyframes nh-fall{0%{transform:translate(0,-24px) rotate(0);opacity:0}10%{opacity:1}50%{transform:translate(6px,20px) rotate(160deg)}100%{transform:translate(-4px,72px) rotate(330deg);opacity:0}}
.nhan-sticker .fly{animation:nh-fly 2.2s infinite}
@keyframes nh-fly{0%{transform:translate(-34px,32px) scale(.6) rotate(10deg);opacity:0;animation-timing-function:cubic-bezier(.2,.7,.3,1)}18%{opacity:1}60%{transform:translate(4px,-6px) scale(1) rotate(-6deg);animation-timing-function:ease-in}100%{transform:translate(22px,-26px) scale(.9) rotate(-14deg);opacity:0}}
.nhan-sticker .burst{animation:nh-burst 1.7s ease-out infinite}
@keyframes nh-burst{0%{transform:scale(.1);opacity:0}12%{opacity:1}60%{transform:scale(1.1);opacity:1}100%{transform:scale(1.3);opacity:0}}
.nhan-sticker .wag{animation:nh-wag 1.4s ease-in-out infinite alternate;transform-origin:50% 100%!important}
@keyframes nh-wag{from{transform:rotate(-7deg)}to{transform:rotate(9deg)}}
.nhan-sticker .drift{animation:nh-drift 2.2s ease-in-out infinite alternate;transform-origin:70% 100%!important}
@keyframes nh-drift{from{transform:rotate(-4deg) translateY(0)}to{transform:rotate(5deg) translateY(-4px)}}
.nhan-sticker .flicker{animation:nh-flicker .16s ease-in-out infinite alternate;transform-origin:50% 100%!important}
@keyframes nh-flicker{from{transform:scale(1,1) rotate(-3deg)}to{transform:scale(.86,1.14) rotate(3deg)}}
.nhan-sticker .glow{animation:nh-glow 2s ease-in-out infinite alternate}
@keyframes nh-glow{from{transform:scale(1);opacity:1}to{transform:scale(1.07);opacity:.55}}
.nhan-sticker .rain{animation:nh-rain .9s linear infinite}
@keyframes nh-rain{0%{transform:translateY(-22px);opacity:0}20%{opacity:.9}100%{transform:translateY(52px);opacity:0}}
@media (prefers-reduced-motion:reduce){.nhan-sticker *{animation:none!important}}
