/* Efectos de temporada compartidos por todas las páginas (lo usa /assets/seasonal.js).
   Día de Muertos, Halloween, Fiestas Patrias, Navidad, Año Nuevo y el Konami Code. */

#effects-container { position: fixed; inset: 0; pointer-events: none; z-index: 9999; overflow: hidden; }

.fx-particle,
.fx-confetti,
.fx-snow {
  position: fixed;
  top: -40px;
  pointer-events: none;
  z-index: 9999;
  animation-timing-function: linear;
  animation-fill-mode: forwards;
}

.fx-particle { animation-name: particleFall; }
.fx-confetti { top: -20px; border-radius: 2px; animation-name: confettiFall; }
.fx-snow { top: -20px; color: #fff; text-shadow: 0 0 4px rgba(255, 255, 255, 0.8); animation-name: snowFall; }

/* Cada partícula define --spin y --drift para que no caigan todas igual */
@keyframes particleFall {
  0% { transform: translateY(0) rotate(0deg); opacity: 1; }
  100% { transform: translateY(110vh) rotate(var(--spin, 540deg)); opacity: 0; }
}
@keyframes confettiFall {
  0% { transform: translateY(0) rotate(0deg) scale(1); opacity: 1; }
  50% { transform: translateY(50vh) rotate(calc(var(--spin, 720deg) / 2)) scale(0.8); opacity: 0.8; }
  100% { transform: translateY(110vh) rotate(var(--spin, 720deg)) scale(0.5); opacity: 0; }
}
@keyframes snowFall {
  0% { transform: translateY(0) translateX(0); opacity: 1; }
  25% { transform: translateY(25vh) translateX(var(--drift, 10px)); }
  50% { transform: translateY(50vh) translateX(calc(var(--drift, 10px) * -1)); }
  75% { transform: translateY(75vh) translateX(var(--drift, 10px)); }
  100% { transform: translateY(110vh) translateX(0); opacity: 0; }
}

/* Konami Code: modo retro */
.retro-mode { font-family: 'Courier New', monospace !important; image-rendering: pixelated; }
.retro-mode * { font-family: 'Courier New', monospace !important; border-radius: 0 !important; }
.retro-mode .card { border: 2px solid var(--accent) !important; box-shadow: 4px 4px 0 var(--accent) !important; }
.retro-mode .chip { border: 1px solid var(--accent) !important; }
.retro-mode img { image-rendering: pixelated; }
.retro-mode .photo-wrapper img { filter: contrast(1.5) saturate(0.5); }
