:root {
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in: cubic-bezier(0.7, 0, 0.84, 0);
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --dur-fast: 160ms;
  --dur: 340ms;
  --dur-slow: 520ms;
}

@keyframes view-in { from { opacity: 0; translate: 0 14px; } }
@keyframes fade-in { from { opacity: 0; } }
@keyframes fade-out { to { opacity: 0; } }
@keyframes dialog-in { from { opacity: 0; scale: 0.92; translate: 0 24px; } }
@keyframes dialog-out { to { opacity: 0; scale: 0.96; translate: 0 12px; } }
@keyframes check-pop { 40% { scale: 0.86; } }
@keyframes check-pulse { 50% { box-shadow: 0 0 0 5px rgb(var(--fg-rgb) / 0.12); } }
@keyframes link-in { from { opacity: 0; scale: 0.5; } }

.view.is-entering { animation: view-in var(--dur-slow) var(--ease-out) both; }

[data-motion="reduced"] .wordmark span { animation: none; }
[data-motion="reduced"] *, [data-motion="reduced"] *::before, [data-motion="reduced"] *::after {
  animation-duration: 0.01ms !important;
  transition-duration: 0.01ms !important;
}

@media (prefers-reduced-motion: reduce) {
  .wordmark span { animation: none; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}
