.festival-layer {
  pointer-events: none;
  position: relative;
  z-index: 5;
}
.festival-particles {
  pointer-events: none;
  position: fixed;
  inset: 0;
  z-index: 4;
  overflow: hidden;
}
.festival-banner {
  pointer-events: auto;
  position: relative;
  z-index: 6;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 8px 14px;
  color: #fff;
  text-align: center;
  font-weight: 700;
  letter-spacing: .02em;
}
.festival-banner small {
  display: block;
  font-weight: 500;
  opacity: .92;
  font-size: 12px;
}
.festival-banner img {
  height: 36px;
  object-fit: contain;
  border-radius: 4px;
}
.festival-diwali .festival-banner {
  background: linear-gradient(90deg, #4a148c, #ff6f00, #b71c1c);
}
.festival-big_billion .festival-banner {
  background: linear-gradient(90deg, #0d47a1, #1565c0, #ffd54f);
  color: #111;
}
.festival-new_year .festival-banner {
  background: linear-gradient(90deg, #111827, #7c3aed, #c9a227);
}
.festival-custom .festival-banner {
  background: linear-gradient(90deg, #2874f0, #111827);
}
.festival-countdown {
  font-variant-numeric: tabular-nums;
  margin-left: 8px;
}
.festival-spark,
.festival-diya,
.festival-badge,
.festival-confetti {
  position: absolute;
  pointer-events: none;
}
.festival-diya {
  width: 10px;
  height: 14px;
  border-radius: 50% 50% 40% 40%;
  background: radial-gradient(circle at 50% 30%, #fff59d, #ff9800 55%, #e65100);
  box-shadow: 0 0 10px #ffeb3b, 0 0 18px #ff9800;
  animation: diyaGlow 1.6s ease-in-out infinite alternate;
}
.festival-spark {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: #fff59d;
  box-shadow: 0 0 8px currentColor;
  animation: sparkRise 2.8s linear infinite;
}
.festival-badge {
  position: fixed;
  top: 128px;
  right: 12px;
  z-index: 6;
  background: #ef4444;
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  padding: 4px 8px;
  border-radius: 999px;
  animation: badgePulse 1.2s ease-in-out infinite;
}
.festival-sale-word {
  display: inline-block;
  animation: salePop 1.4s ease-in-out infinite;
}
.festival-confetti {
  width: 6px;
  height: 10px;
  animation: confettiFall 3.4s linear infinite;
}
@keyframes diyaGlow {
  from { transform: scale(.9); opacity: .75; }
  to { transform: scale(1.15); opacity: 1; }
}
@keyframes sparkRise {
  0% { transform: translateY(20px) scale(.6); opacity: 0; }
  20% { opacity: 1; }
  100% { transform: translateY(-70vh) scale(1.2); opacity: 0; }
}
@keyframes badgePulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.08); }
}
@keyframes salePop {
  0%, 100% { transform: scale(1) rotate(-1deg); }
  50% { transform: scale(1.08) rotate(1deg); }
}
@keyframes confettiFall {
  0% { transform: translateY(-10px) rotate(0deg); opacity: 1; }
  100% { transform: translateY(100vh) rotate(240deg); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .festival-layer .festival-spark,
  .festival-layer .festival-diya,
  .festival-layer .festival-confetti,
  .festival-layer .festival-badge,
  .festival-sale-word {
    animation: none !important;
  }
}
@media (max-width: 640px) {
  .festival-banner { font-size: 13px; padding: 8px; }
  .festival-banner img { display: none; }
}
