/* Restrained motion language: entrance, sequence and feedback. */
@keyframes view-rise {
  from {
    opacity: 0;
    transform: translate3d(0, 12px, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

@keyframes feedback-settle {
  0% {
    opacity: 0;
    transform: translate3d(0, 8px, 0) scale(0.985);
  }
  62% {
    opacity: 1;
    transform: translate3d(0, -2px, 0) scale(1);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
  }
}

.motion-ready .motion-item {
  animation: view-rise 480ms cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: calc(var(--motion-order, 0) * 55ms);
}

.feedback-reveal {
  animation: feedback-settle 420ms cubic-bezier(0.16, 1, 0.3, 1) both;
  transform-origin: 50% 0;
}

.primary-nav button,
.dashboard-actions button,
.question-actions button,
.exam-navigation button,
.preset-grid article button,
.practice-panel button {
  transition-property: color, background-color, border-color, box-shadow, transform;
  transition-duration: 260ms;
  transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
}

.primary-nav button:active,
.dashboard-actions button:active,
.question-actions button:active,
.exam-navigation button:active,
.preset-grid article button:active,
.practice-panel button:active {
  transform: translate3d(0, 1px, 0) scale(0.98);
}

@media (prefers-reduced-motion: reduce) {
  .motion-ready .motion-item,
  .feedback-reveal {
    animation: none !important;
    transform: none !important;
  }
}

@media print {
  .motion-ready .motion-item,
  .feedback-reveal {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}
