.festival-news-item {
  background: #fff8e8;
  padding: 6px 10px;
  margin-bottom: 6px;
  list-style: none;
}

.festival-news-badge {
  display: inline-block;
  margin-right: 6px;
  transform-origin: center;
  animation: festival-bob 2.2s ease-in-out infinite;
}

.festival-fu-sticker {
  width: 1em;
  height: 1em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #c91515;
  color: #ffd66b;
  border: 1px solid #ffd66b;
  border-radius: 2px;
  transform: rotate(45deg);
  box-shadow: 0 0 0 1px rgba(201, 21, 21, 0.2);
}

.festival-fu-char {
  display: inline-block;
  font-size: 0.72em;
  line-height: 1;
  font-weight: 700;
  transform: rotate(-45deg);
}

.festival-icon-image {
  width: 1.45em;
  height: 1.45em;
  display: inline-block;
  vertical-align: -0.24em;
  object-fit: contain;
  mix-blend-mode: multiply;
}

.festival-news-badge.has-image {
  margin-right: 8px;
}

@keyframes festival-bob {
  0%,
  100% {
    transform: translateY(0);
    opacity: 0.9;
  }
  50% {
    transform: translateY(-1px);
    opacity: 1;
  }
}

.festival-news-badge.motion-sparkle {
  animation: festival-sparkle 1.6s ease-in-out infinite;
}

.festival-news-badge.motion-float {
  animation: festival-float 2.1s ease-in-out infinite;
}

.festival-news-badge.motion-wobble {
  animation: festival-wobble 1.8s ease-in-out infinite;
}

.festival-news-badge.motion-swing {
  animation: festival-swing 2.2s ease-in-out infinite;
}

.festival-news-badge.motion-pop {
  animation: festival-pop 1.6s ease-in-out infinite;
}

.festival-news-badge.motion-wave {
  animation: festival-wave 1.8s ease-in-out infinite;
}

.festival-news-badge.motion-glow {
  animation: festival-glow 2s ease-in-out infinite;
}

@keyframes festival-sparkle {
  0%,
  100% {
    transform: scale(1) rotate(0deg);
    filter: brightness(1);
  }
  50% {
    transform: scale(1.18) rotate(12deg);
    filter: brightness(1.22);
  }
}

@keyframes festival-float {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-3px);
  }
}

@keyframes festival-wobble {
  0%,
  100% {
    transform: rotate(0deg);
  }
  25% {
    transform: rotate(8deg);
  }
  75% {
    transform: rotate(-8deg);
  }
}

@keyframes festival-swing {
  0%,
  100% {
    transform: rotate(0deg);
  }
  50% {
    transform: rotate(10deg);
  }
}

@keyframes festival-pop {
  0%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.2);
  }
}

@keyframes festival-wave {
  0%,
  100% {
    transform: rotate(0deg) translateY(0);
  }
  25% {
    transform: rotate(8deg) translateY(-1px);
  }
  75% {
    transform: rotate(-8deg) translateY(1px);
  }
}

@keyframes festival-glow {
  0%,
  100% {
    transform: scale(1);
    filter: drop-shadow(0 0 0 rgba(255, 215, 80, 0));
  }
  50% {
    transform: scale(1.12);
    filter: drop-shadow(0 0 6px rgba(255, 215, 80, 0.65));
  }
}
