/* Learner feedback never captures input or changes question/answer geometry. */
#celebration {
  position: fixed;
  inset: 50% auto auto 50%;
  transform: translate(-50%, -50%);
  width: clamp(8rem, 34vmin, 12rem);
  line-height: 0;
  opacity: 0;
  pointer-events: none;
  user-select: none;
  z-index: 15;
}
#celebration img {
  display: block;
  width: 100%;
  height: auto;
  pointer-events: none;
}
#celebration[data-milestone="true"] { width: clamp(10rem, 42vmin, 15rem); }
#celebration.play { animation: geary-affirmation var(--feedback-duration, 750ms) ease-in-out both; }
@keyframes geary-affirmation {
  0%, 100% { opacity: 0; }
  18%, 65% { opacity: 1; }
}
/* The brief Race/timed-Test policy supplies zero blur and 150ms; ordinary practice uses a subtle 2px/750ms envelope. */
#practice-content.question-enter { animation: learner-content-feedback var(--feedback-duration, 750ms) ease-in-out both; }
@keyframes learner-content-feedback {
  0%, 100% { filter: blur(0); opacity: 1; }
  20% { filter: blur(var(--feedback-blur, 2px)); opacity: .88; }
  55% { filter: blur(var(--feedback-blur, 2px)); opacity: .94; }
}
#geary-status { margin: .25rem 0 1rem; font-weight: 600; }
@media (prefers-reduced-motion: reduce) {
  #celebration.play { animation: none; opacity: 0; }
  #practice-content.question-enter { animation: none; filter: none; }
}
body[data-motion="reduced"] #celebration.play { animation: none; opacity: 0; }
body[data-motion="reduced"] #practice-content.question-enter { animation: none; filter: none; }
