/* Seasonal decorations only. halloween.js switches them off on 2 November 2026. */
.halloween-effects { display: none; }
@media screen {
  [data-theme="halloween"] .halloween-effects {
    display: block; position: fixed; inset: 0; z-index: 15;
    overflow: hidden; pointer-events: none; user-select: none;
  }
  .halloween-sprite {
    position: absolute; top: var(--top); width: clamp(38px, 4.5vw, 66px);
    height: auto; opacity: 0;
    filter: drop-shadow(0 3px 8px #000a);
    animation: halloween-visit var(--duration) ease-in-out infinite;
    animation-delay: var(--delay); will-change: transform, opacity;
  }
  .halloween-sprite[data-side="left"] { left: clamp(3px, 1vw, 18px); }
  .halloween-sprite[data-side="right"] { right: clamp(3px, 1vw, 18px); }
  .halloween-sprite--pumpkin { filter: drop-shadow(0 0 10px #f091354d) drop-shadow(0 3px 5px #0008); }
  .halloween-sprite--bat { width: clamp(42px, 5vw, 74px); }
  @keyframes halloween-visit {
    0%, 10% { opacity: 0; transform: translateY(12px) rotate(-7deg) scale(.9); }
    23% { opacity: .95; transform: translateY(0) rotate(3deg) scale(1); }
    38% { opacity: .95; transform: translateY(-12px) rotate(-3deg) scale(1); }
    53%, 100% { opacity: 0; transform: translateY(-24px) rotate(7deg) scale(.94); }
  }
  @media (max-width: 600px) {
    .halloween-sprite { width: 30px; }
    .halloween-sprite--bat { width: 34px; }
    .halloween-sprite[data-side="left"] { left: 1px; }
    .halloween-sprite[data-side="right"] { right: 1px; }
    .halloween-sprite:nth-child(n+13) { display: none; }
  }
  @media (prefers-reduced-motion: reduce) {
    .halloween-sprite { animation: none; opacity: .7; transform: none; will-change: auto; }
    .halloween-sprite:nth-child(n+9) { display: none; }
  }
}
@media print { .halloween-effects { display: none !important; } }
