﻿/* ── Keyframes ──────────────────────────────────────────────────────────────── */

@keyframes reaction-breathe {
  0%, 100% { transform: scale(1);    border-color: rgba(255,255,255,0.08); }
  50%       { transform: scale(1.05); border-color: rgba(255,255,255,0.16); }
}

@keyframes countdown-beat {
  0%   { transform: scale(1.15); opacity: 0.6; }
  50%  { transform: scale(1);    opacity: 1; }
  100% { transform: scale(1.15); opacity: 0.6; }
}

@keyframes result-flash {
  0%   { opacity: 0; transform: scale(0.82); }
  18%  { opacity: 1; transform: scale(1.04); }
  80%  { opacity: 1; transform: scale(1); }
  100% { opacity: 0; }
}

@keyframes round-enter {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes slide-up {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes timer-urgent {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.45; }
}

@keyframes blink-search {
  0%, 60%   { opacity: 1; }
  61%, 100% { opacity: 0.12; }
}

/* ── Animation utility classes ──────────────────────────────────────────────── */

.anim-round-enter  { animation: round-enter  200ms ease-out both; }
.anim-result-flash { animation: result-flash 700ms ease-out both; }
.anim-fade-in      { animation: fade-in      200ms ease-out both; }
.anim-countdown    { animation: countdown-beat 900ms ease-out; }
.anim-slide-up     { animation: slide-up     300ms ease-out both; }

.anim-stagger > *                 { animation: slide-up 300ms ease-out both; }
.anim-stagger > *:nth-child(1)    { animation-delay: 0ms; }
.anim-stagger > *:nth-child(2)    { animation-delay: 55ms; }
.anim-stagger > *:nth-child(3)    { animation-delay: 110ms; }
.anim-stagger > *:nth-child(4)    { animation-delay: 165ms; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}