/**
 * Motion. Fast and mechanical: nothing bounces, nothing springs into view.
 * prefers-reduced-motion is a global kill switch at the bottom of this file.
 */
:root {
  --dur-instant: 100ms; /* @kind other */
  --dur-fast: 150ms; /* @kind other */
  --dur-normal: 250ms; /* @kind other */
  --dur-slow: 400ms; /* @kind other */
  --dur-deliberate: 600ms; /* @kind other */
  --dur-md: var(--dur-fast); /* @kind other */

  --ease-out: cubic-bezier(0.2, 0.9, 0.2, 1); /* @kind other */
  --ease-in: cubic-bezier(0.8, 0, 0.6, 0.2); /* @kind other */
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); /* @kind other */
  --ease-linear: linear; /* @kind other */
  --ease-spring: cubic-bezier(0.2, 1.1, 0.3, 1); /* @kind other */
  --ease-snap: var(--ease-out); /* @kind other */

  /* named presets: animation: var(--motion-fade) */
  --motion-fade: gw-fade var(--dur-fast) var(--ease-out) both; /* @kind other */
  --motion-scale-in: gw-scale-in var(--dur-fast) var(--ease-out) both; /* @kind other */
  --motion-slide-from-bottom: gw-slide-from-bottom var(--dur-normal) var(--ease-out) both; /* @kind other */
  --motion-collapse: gw-collapse var(--dur-normal) var(--ease-in-out) both; /* @kind other */
  --motion-tick: gw-tick var(--dur-deliberate) var(--ease-linear) infinite; /* @kind other */
}

@keyframes gw-fade { from { opacity: 0 } to { opacity: 1 } }
@keyframes gw-scale-in { from { opacity: 0; transform: scale(.98) } to { opacity: 1; transform: none } }
@keyframes gw-slide-from-bottom { from { opacity: 0; transform: translateY(8px) } to { opacity: 1; transform: none } }
@keyframes gw-collapse { from { grid-template-rows: 1fr } to { grid-template-rows: 0fr } }
@keyframes gw-drawer { from { opacity: .4; transform: scale(.995) } to { opacity: 1; transform: none } }
@keyframes gw-sweep { from { margin-left: 0 } to { margin-left: 65% } }
@keyframes gw-spin { to { transform: rotate(360deg) } }
@keyframes gw-tick { from { background-position: 0 0 } to { background-position: 20px 0 } }

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