/* Живость маскота — чистый CSS, без генерации кадров и без внешних сервисов.

   Первая версия была слишком деликатной: подъём на 2,5 px и моргание раз в
   6,4 секунды глаз не ловил, персонаж читался как статичная картинка. Здесь амплитуды
   подняты и добавлено покачивание — движение видно, но не превращается в дрожь.

   Два независимых слоя движения:
     • корпус (обёртка .duck-body) — дыхание и раз в цикл лёгкий разворот;
     • верхний кадр (.duck-blink)  — моргание, мгновенными переключениями.

   Порядок важен: файл подключается ПОСЛЕ sidebar-duck.css, иначе его правила
   перебивает донорская анимация появления.

   Откат: снять <link> в index.html. */

/* ── корпус: дыхание и покачивание ───────────────────────────────────────── */
/* Один цикл на 8 с: три вдоха, потом персонаж качнулся вправо-влево.
   Точка опоры — низ карточки (её задаёт донорский transform-origin: 50% 92%),
   поэтому разворот выглядит как движение корпуса, а не вращение картинки. */
@keyframes mascot-alive {
  0%   { transform: translateY(0)    rotate(0deg)  scale(1);     }
  12%  { transform: translateY(-5px) rotate(0deg)  scale(1.025); }
  25%  { transform: translateY(0)    rotate(0deg)  scale(1);     }
  37%  { transform: translateY(-5px) rotate(0deg)  scale(1.025); }
  50%  { transform: translateY(0)    rotate(0deg)  scale(1);     }
  56%  { transform: translateY(-3px) rotate(-3.5deg) scale(1.02); }
  62%  { transform: translateY(-3px) rotate(3.5deg)  scale(1.02); }
  68%  { transform: translateY(-3px) rotate(-2deg)   scale(1.02); }
  74%  { transform: translateY(0)    rotate(0deg)  scale(1);     }
  87%  { transform: translateY(-5px) rotate(0deg)  scale(1.025); }
  100% { transform: translateY(0)    rotate(0deg)  scale(1);     }
}

#orq-duck .duck-body {
  position: relative;
  display: block;
  width: 132px;
  animation: mascot-alive 8s ease-in-out infinite;
  transition: transform .25s cubic-bezier(.2,.9,.3,1.2), filter .25s ease;
}

#orq-duck .duck-img {
  display: block;
  width: 100%;
  height: auto;
}

#orq-duck .duck-body:hover {
  /* На наведение — замирает, приподнимается и разворачивается к курсору. */
  animation-play-state: paused;
  transform: translateY(-6px) rotate(-2.5deg) scale(1.04);
  filter: drop-shadow(0 12px 22px rgba(120, 25, 25, 0.28));
}

/* ── моргание ────────────────────────────────────────────────────────────── */
/* Верхний кадр с прикрытыми глазами всплывает мгновенно: шаговая функция вместо
   плавной, иначе вместо моргания получается растворение. Цикл 4 с, в конце
   двойное моргание — так живее, чем ровно раз в N секунд. */
@keyframes mascot-blink {
  0%     { opacity: 0; }
  88%    { opacity: 1; }   /* прикрыл  ≈160 мс */
  92%    { opacity: 0; }   /* открыл   ≈80 мс  */
  94%    { opacity: 1; }   /* прикрыл  ≈120 мс */
  97%    { opacity: 0; }
  100%   { opacity: 0; }
}

#orq-duck .duck-blink {
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
  animation: mascot-blink 4s steps(1, end) infinite;
}

/* Тем, кому анимация мешает (системная настройка «уменьшить движение»), — покой. */
@media (prefers-reduced-motion: reduce) {
  #orq-duck .duck-body,
  #orq-duck .duck-blink { animation: none; }
}
