/* Seasonal overlays — Noël snow, Valentine hearts, NYE sparkles */
.season-fx {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9998;
  overflow: hidden;
}
.season-fx .flake,
.season-fx .heart,
.season-fx .spark {
  position: absolute;
  top: -12px;
  left: calc(var(--x) * 1%);
  opacity: 0.75;
  animation: seasonFall calc(var(--d) * 1s) linear infinite;
  animation-delay: calc(var(--i) * -0.45s);
}

/* Snow */
.season-fx-snow .flake {
  width: calc(4px * var(--s, 1));
  height: calc(4px * var(--s, 1));
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 4px rgba(255, 255, 255, 0.8);
}
.season-fx-snow .flake:nth-child(3n) {
  width: calc(6px * var(--s, 1));
  height: calc(6px * var(--s, 1));
  opacity: 0.55;
}
.season-fx-snow .flake:nth-child(4n) {
  filter: blur(0.4px);
}

/* Hearts */
.season-fx-hearts .heart {
  width: 10px;
  height: 10px;
  background: #e06080;
  transform: rotate(45deg);
  opacity: 0.55;
}
.season-fx-hearts .heart::before,
.season-fx-hearts .heart::after {
  content: "";
  position: absolute;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #e06080;
}
.season-fx-hearts .heart::before { left: -5px; top: 0; }
.season-fx-hearts .heart::after { left: 0; top: -5px; }

/* Sparkles */
.season-fx-sparkle .spark {
  width: 3px;
  height: 3px;
  background: #f0e0b0;
  border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(240, 224, 176, 0.7);
  opacity: 0.85;
}

@keyframes seasonFall {
  0% {
    transform: translate3d(0, -10vh, 0);
    opacity: 0;
  }
  10% { opacity: 0.8; }
  100% {
    transform: translate3d(calc(var(--i) * 0.4px), 110vh, 0);
    opacity: 0.15;
  }
}

@media (prefers-reduced-motion: reduce) {
  .season-fx { display: none; }
}

/* Don't cover admin */
body.wp-admin .season-fx { display: none !important; }
