:root, body.is-public {
  --motion-duration: 420ms;
  --motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --motion-distance: 14px;
}
@keyframes motion-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes motion-rise {
  from { opacity: 0; transform: translateY(var(--motion-distance)); }
  to { opacity: 1; transform: none; }
}
@keyframes motion-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.45; }
}

body.motion-page-fade .dash-main main > *,
body.motion-page-fade .pack-wrap > * {
  animation: motion-fade var(--motion-duration) var(--motion-ease) backwards;
}
body.motion-page-rise .dash-main main > *,
body.motion-page-rise .pack-wrap > * {
  animation: motion-rise var(--motion-duration) var(--motion-ease) backwards;
}
body.motion-page-fade .pack-wrap > *:nth-child(2),
body.motion-page-rise .pack-wrap > *:nth-child(2) { animation-delay: 80ms; }
body.motion-hero-fade .hero-inner,
body.motion-hero-fade .paper-lead {
  animation: motion-fade var(--motion-duration) var(--motion-ease) backwards;
}
body.motion-hero-rise .hero-inner,
body.motion-hero-rise .paper-lead {
  animation: motion-rise var(--motion-duration) var(--motion-ease) backwards;
}
body.motion-cards-lift .desk-block,
body.motion-cards-lift .front-rail li,
body.motion-cards-lift .story-card,
body.motion-cards-lift .module,
body.motion-cards-lift .show {
  animation: motion-rise var(--motion-duration) var(--motion-ease) backwards;
}
body.motion-cards-lift .paper-desks > :nth-child(2),
body.motion-cards-lift .front-rail > :nth-child(2),
body.motion-cards-lift .story-grid > :nth-child(2),
body.motion-cards-lift .show-grid > :nth-child(2) { animation-delay: 50ms; }
body.motion-cards-lift .paper-desks > :nth-child(3),
body.motion-cards-lift .front-rail > :nth-child(3),
body.motion-cards-lift .story-grid > :nth-child(3),
body.motion-cards-lift .show-grid > :nth-child(3) { animation-delay: 100ms; }
body.motion-cards-lift .paper-desks > :nth-child(4),
body.motion-cards-lift .front-rail > :nth-child(4),
body.motion-cards-lift .story-grid > :nth-child(4),
body.motion-cards-lift .show-grid > :nth-child(4) { animation-delay: 150ms; }
body.motion-cards-lift .paper-desks > :nth-child(5),
body.motion-cards-lift .front-rail > :nth-child(5) { animation-delay: 200ms; }
body.motion-cards-lift .lead,
body.motion-cards-lift .paper-lead,
body.motion-cards-lift .desk-block,
body.motion-cards-lift .front-rail li,
body.motion-cards-lift .story-card,
body.motion-cards-lift .module,
body.motion-cards-lift .show,
body.motion-cards-lift .hero-inner,
body.motion-hover-lift .lead,
body.motion-hover-lift .paper-lead,
body.motion-hover-lift .desk-block,
body.motion-hover-lift .front-rail li,
body.motion-hover-lift .story-card,
body.motion-hover-lift .module,
body.motion-hover-lift .show,
body.motion-hover-lift .hero-inner,
body.motion-hover-glow .lead,
body.motion-hover-glow .paper-lead,
body.motion-hover-glow .desk-block,
body.motion-hover-glow .front-rail li,
body.motion-hover-glow .story-card,
body.motion-hover-glow .module,
body.motion-hover-glow .show,
body.motion-hover-glow .hero-inner {
  transition: transform var(--motion-duration) var(--motion-ease), box-shadow var(--motion-duration) var(--motion-ease), background-color 160ms ease, color 160ms ease;
}
body.motion-hover-lift .lead:hover,
body.motion-hover-lift .desk-block:hover,
body.motion-hover-lift .front-rail li:hover,
body.motion-hover-lift .story-card:hover,
body.motion-hover-lift .module:hover,
body.motion-hover-lift .show:hover,
body.motion-hover-lift .hero-inner:hover {
  transform: translateY(-4px);
}
body.motion-hover-glow .lead:hover,
body.motion-hover-glow .desk-block:hover,
body.motion-hover-glow .front-rail li:hover,
body.motion-hover-glow .story-card:hover,
body.motion-hover-glow .module:hover,
body.motion-hover-glow .show:hover,
body.motion-hover-glow .hero-inner:hover {
  box-shadow: 0 0 0 1px var(--accent), 0 14px 32px color-mix(in srgb, var(--accent) 28%, transparent);
}
body.motion-ticker .chyron-label,
body.motion-ticker .breaking-bar .ticker-label {
  animation: motion-pulse 1.6s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) {
  body.is-public *,
  body.is-public *::before,
  body.is-public *::after {
    animation: none !important;
    transition: none !important;
  }
}

