.tt-seasonal-active {
  --season-accent: var(--turquoise);
}

.tt-seasonal-layer {
  position: fixed;
  inset: 0;
  z-index: 80;
  overflow: hidden;
  pointer-events: none;
}

.tt-seasonal-particle {
  position: absolute;
  top: -48px;
  left: var(--particle-left);
  color: var(--particle-color, var(--season-accent));
  font-size: var(--particle-size);
  line-height: 1;
  opacity: 0;
  filter: drop-shadow(0 3px 4px rgba(23, 42, 51, .12));
  animation: tt-season-fall var(--particle-duration) linear var(--particle-delay) infinite;
  will-change: transform, opacity;
}

@keyframes tt-season-fall {
  0% { opacity: 0; transform: translate3d(0, -50px, 0) rotate(0deg); }
  10% { opacity: .82; }
  90% { opacity: .7; }
  100% { opacity: 0; transform: translate3d(var(--particle-drift), calc(100vh + 90px), 0) rotate(330deg); }
}

body[data-season="halloween"] {
  --season-accent: #7b35b4;
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cpath fill='%23172a33' d='M2 9l7 3 6-7 6 7 7-3-3 9-6-2-4 8-4-8-6 2z'/%3E%3Ccircle cx='12' cy='13' r='1' fill='%23f36b16'/%3E%3Ccircle cx='18' cy='13' r='1' fill='%23f36b16'/%3E%3C/svg%3E") 15 14, auto;
}

body[data-season="navidad"] {
  --season-accent: #16865c;
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cpath fill='%2316885c' d='M15 2L7 12h5L5 21h8v7h4v-7h8l-7-9h5z'/%3E%3Ccircle cx='12' cy='14' r='1.5' fill='%23f36b16'/%3E%3Ccircle cx='18' cy='18' r='1.5' fill='%23ffd44d'/%3E%3C/svg%3E") 15 10, auto;
}

body[data-season="amor"] {
  --season-accent: #e73f72;
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cpath fill='%23e73f72' d='M15 27S3 20 3 10c0-7 9-9 12-3 3-6 12-4 12 3 0 10-12 17-12 17z'/%3E%3Cpath fill='%23fff' opacity='.65' d='M8 8c2-2 4-1 5 1-2-1-3 0-4 2z'/%3E%3C/svg%3E") 15 13, auto;
}

body[data-season="carnavales"] {
  --season-accent: #7653e8;
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cpath fill='%2308a19e' stroke='%23fff' stroke-width='1' d='M4 2l19 17-9 1-4 8z'/%3E%3Ccircle cx='22' cy='5' r='3' fill='%23f36b16'/%3E%3Ccircle cx='26' cy='13' r='2' fill='%23e73f72'/%3E%3Cpath d='M17 4l4-3M25 21l3 3' stroke='%237653e8' stroke-width='2'/%3E%3C/svg%3E") 6 4, auto;
}

body[data-season] a,
body[data-season] button,
body[data-season] input,
body[data-season] select,
body[data-season] textarea {
  cursor: inherit;
}

@media (prefers-reduced-motion: reduce) {
  .tt-seasonal-layer { display: none; }
}

@media (max-width: 720px), (pointer: coarse) {
  body[data-season] { cursor: auto; }
  .tt-seasonal-particle:nth-child(n+7) { display: none; }
}
