/* Seasonal cursor companions stay decorative and never intercept interaction. */
.seasonal-pumpkin {
  position: fixed;
  top: 0;
  left: 0;
  width: 32px;
  height: 32px;
  z-index: 2147483647;
  pointer-events: none;
  user-select: none;
  filter: drop-shadow(0 2px 2px #0008);
  contain: layout style;
}
.seasonal-pumpkin[hidden] { display: none; }
.seasonal-pumpkin svg { display: block; width: 100%; height: 100%; overflow: visible; }
.seasonal-pumpkin__pupils {
  transform: translate(var(--pumpkin-look-x, 0px), var(--pumpkin-look-y, 0px));
  transition: transform 220ms ease;
}
.seasonal-pumpkin__eyes {
  transform-box: fill-box;
  transform-origin: center;
  transition: transform 65ms ease;
}
.seasonal-pumpkin.is-blinking .seasonal-pumpkin__eyes { transform: scaleY(.08); }
.seasonal-pumpkin__mouth {
  transform-box: fill-box;
  transform-origin: center;
  transition: transform 160ms ease;
}
.seasonal-pumpkin__mouth-open { display: none; }
.seasonal-pumpkin.is-gaping .seasonal-pumpkin__mouth-open,
.seasonal-pumpkin.is-clacking .seasonal-pumpkin__mouth-open { display: block; }
.seasonal-pumpkin.is-gaping .seasonal-pumpkin__mouth-closed,
.seasonal-pumpkin.is-clacking .seasonal-pumpkin__mouth-closed { display: none; }
.seasonal-pumpkin.is-clacking .seasonal-pumpkin__upper-teeth { animation: pumpkin-clack-upper 200ms linear infinite; }
.seasonal-pumpkin.is-clacking .seasonal-pumpkin__lower-teeth { animation: pumpkin-clack-lower 200ms linear infinite; }
@keyframes pumpkin-clack-upper {
  0%, 100% { transform: translateY(0); }
  45%, 60% { transform: translateY(2px); }
}
@keyframes pumpkin-clack-lower {
  0%, 100% { transform: translateY(0); }
  45%, 60% { transform: translateY(-4px); }
}
.seasonal-pumpkin.is-gaping .seasonal-pumpkin__body { animation: pumpkin-shake 110ms linear infinite; }
@keyframes pumpkin-shake {
  0%, 100% { transform: translateX(-1.5px) rotate(-4deg) scale(1.08); }
  50% { transform: translateX(1.5px) rotate(4deg) scale(1.08); }
}
.seasonal-pumpkin__body { transform-origin: 24px 26px; }
.seasonal-pumpkin__drool { opacity: 0; transform-box: fill-box; transform-origin: top; }
.seasonal-pumpkin.is-drooling .seasonal-pumpkin__drool { animation: pumpkin-drool 2.3s ease-in both; }
@keyframes pumpkin-drool {
  0% { opacity: 0; transform: scaleY(0); }
  15% { opacity: 1; transform: scaleY(.3); }
  75% { opacity: 1; transform: scaleY(1); }
  100% { opacity: 0; transform: translateY(4px) scaleY(1); }
}
body.reduce-motion .seasonal-pumpkin__body { animation: none; }
body.reduce-motion .seasonal-pumpkin * { transition: none; }
@media (prefers-reduced-motion: reduce) {
  .seasonal-pumpkin * { transition: none; }
}
@media print { .seasonal-pumpkin { display: none; } }
.seasonal-background {
  position: fixed;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  user-select: none;
}
.seasonal-background[hidden], .seasonal-background__icon[hidden], .seasonal-background__web[hidden], .seasonal-background__haze[hidden] { display: none; }
.seasonal-background__haze {
  position: absolute;
  top: 0;
  bottom: 0;
  background: radial-gradient(ellipse at 45% 25%, #b8581929, transparent 65%),
    radial-gradient(ellipse at 65% 75%, #6d329c26, transparent 65%);
}
.seasonal-background__icon {
  position: absolute;
  width: 40px;
  height: 40px;
  color: #fff;
  opacity: .55;
  transform: rotate(-8deg);
}
.seasonal-background__icon[data-kind="1"] { color: #050507; --seasonal-opacity: .75; }
.seasonal-background__icon[data-kind="2"] { color: #ee942e; --seasonal-opacity: .65; }
.seasonal-background__icon[data-kind="3"] { color: #08090d; --seasonal-opacity: .7; }
.seasonal-background__icon[data-kind="4"] { color: #f1f2f4; --seasonal-opacity: .34; }
.seasonal-background__icon[data-kind="5"] { color: #e8e3d9; --seasonal-opacity: .55; }
.seasonal-background__icon[data-kind="6"] { color: #07090c; --seasonal-opacity: .75; }
.seasonal-background__icon[data-kind="7"] { color: #4d392e; --seasonal-opacity: .62; }
.seasonal-background__icon[data-kind="8"] { color: #7c8b61; --seasonal-opacity: .58; }
.seasonal-background__icon[data-kind="9"] { color: #cfc5a8; --seasonal-opacity: .53; }
.seasonal-background__icon[data-kind="10"] { color: #713748; --seasonal-opacity: .62; }
body.covers-collapsed.right-collapsed.feed-collapsed .seasonal-background { display: none; }
.seasonal-background__icon svg { width: 100%; height: 100%; fill: none; }
.seasonal-background__icon[data-pixelated] { opacity: 1; filter: none; background: none; }
.seasonal-background__icon[data-pixelated] svg { shape-rendering: crispEdges; }
.seasonal-background__web { position: absolute; --seasonal-opacity: .43; background: none; }
.seasonal-background__web svg { width: 100%; height: 100%; fill: none; shape-rendering: crispEdges; }
/* Mute only the painted pixels; silhouette masks keep the element's backing clear. */
.seasonal-background__icon[data-pixelated] rect,
.seasonal-background__web rect { fill-opacity: var(--seasonal-opacity, .55); }
.seasonal-background__icon svg, .seasonal-background__web svg { background: none; }
.seasonal-background__icon, .seasonal-background__web { mask-size: 100% 100%; mask-repeat: no-repeat; mask-mode: alpha; }
@media print { .seasonal-background { display: none; } }
.seasonal-event-notice {
  margin: 0 0 .9rem;
  padding: .6rem .8rem;
  border: 1px solid #6f5485;
  border-left: 3px solid #d58b48;
  border-radius: 7px;
  background: #191b2b;
  color: #d9d7e7;
  font-size: .85rem;
  line-height: 1.5;
}
.seasonal-event-notice strong { color: #f0b17e; font-weight: 600; }
.seasonal-event-loss { color: #f87171; font-weight: 600; }
.seasonal-event-sim-loss { color: #c47777; font-weight: 600; }
.seasonal-event-battle-death { color: #d97706; font-weight: 600; }
