.campaign-badge {
  position: absolute;
  top: 5px;
  left: 5px;
  background: red;
  color: white;
  padding: 4px 8px;
  font-size: 12px;
  font-weight: bold;
  border-radius: 4px;
  z-index: 10;
  animation: shake 1.8s ease-in-out infinite;
}

@keyframes shake {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}

/* 画像が relative 指定されていないと位置が決まらない場合 */
.__item .photo {
  position: relative;
}