/* Motion geometry/timing follows the supplied live source, not its styling. */
.ry-motion-root {
  --ry-motion-ease: cubic-bezier(.25, .46, .45, .94);
  --ry-motion-distance: 50px;
}
.ry-motion-legacy { opacity: 1 !important; transform: none !important; }
.ry-motion-template { transform: none !important; }
.ry-motion-reveal { opacity: 1; }
.ry-motion-root[data-motion-ready="true"] .ry-motion-reveal {
  transition: opacity .55s var(--ry-motion-ease) var(--reveal-delay, 0ms), translate .55s var(--ry-motion-ease) var(--reveal-delay, 0ms);
}
.ry-motion-root[data-motion-ready="true"] .ry-motion-reveal:not([data-visible="true"]) {
  opacity: 0 !important;
  translate: 0 var(--ry-motion-distance);
}
.ry-motion-root .ry-motion-reveal[data-visible="true"]:not(.ry-motion-hero-enter) { opacity: 1 !important; }
.page-wrapper.ry-motion-root .ry-motion-reveal:is([text-scroll], [paragraph-scroll], [cms-image]) { visibility: visible !important; }
.ry-motion-hero-enter {
  animation: ry-motion-hero-enter .55s var(--ry-motion-ease) var(--ry-motion-hero-delay, 0ms) both;
}
/* Individual translate preserves the phone wrapper's placement/rotation. */
@keyframes ry-motion-hero-enter {
  from { opacity: 0; translate: 0 var(--ry-motion-distance); }
  to { opacity: 1; translate: 0 0; }
}
.ry-motion-press-viewport {
  --ry-motion-press-gap: var(--spacing--48);
  display: block;
  overflow: hidden;
}
.ry-motion-press-rail { display: flex; width: max-content; animation: ry-motion-press 40s linear infinite; }
.ry-motion-press-group {
  display: flex;
  align-items: center;
  flex: none;
  gap: var(--ry-motion-press-gap);
  padding-right: var(--ry-motion-press-gap);
}
.ry-motion-press-group > .ry-cases-press-logo { width: var(--width--2-columns); flex: none; }
@keyframes ry-motion-press { to { transform: translateX(-50%); } }
.ry-motion-press-viewport[data-ry-motion-visible="false"] .ry-motion-press-rail,
.ry-motion-root[data-ry-motion-page-hidden="true"] .ry-motion-press-rail,
.ry-motion-root[data-ry-motion-page-hidden="true"] .ry-work-community-track { animation-play-state: paused; }
/* Use translate so legacy Webflow transforms cannot freeze these rows. */
.ry-motion-reviews { animation: ry-motion-reviews var(--ry-review-duration, 50s) linear infinite; }
.ry-motion-reviews-reverse { animation-direction: reverse; }
@keyframes ry-motion-reviews { to { translate: calc(-1 * var(--ry-review-distance, 0px)) 0; } }
[data-ry-motion-visible="false"] > .ry-motion-reviews,
.ry-motion-root[data-ry-motion-page-hidden="true"] .ry-motion-reviews { animation-play-state: paused; }
.ry-motion-reviews:focus-visible { outline: 2px solid currentColor; outline-offset: -2px; }
/* Restore the template's masked text roll using its existing text shadow. */
.ry-motion-root .cta_primary .button_text-mask > .text-button { display: block; transition: translate .3s var(--ry-motion-ease); }
.ry-motion-root .cta_primary .icon-wrap_button.right { transition: translate .3s var(--ry-motion-ease); }
.ry-motion-root .cta_primary:focus-visible .btn-bg { background-color: var(--color-tokens-button-primary-hover-background); }
.ry-motion-root .cta_primary.secondary:focus-visible .btn-bg { background-color: var(--color-tokens-button-secondary-hover-background); }
@media (hover: hover) and (pointer: fine) {
  .ry-motion-root .cta_primary:hover .btn-bg { background-color: var(--color-tokens-button-primary-hover-background); }
  .ry-motion-root .cta_primary.secondary:hover .btn-bg { background-color: var(--color-tokens-button-secondary-hover-background); }
  .ry-motion-root .cta_primary:hover .button_text-mask > .text-button { translate: 0 -1.5em; }
  .ry-motion-root .cta_primary:hover .icon-wrap_button.right { translate: 2px 0; }
}
@media (max-width: 767px) {
  .ry-motion-press-viewport { --ry-motion-press-gap: var(--spacing--32); }
  .ry-motion-press-group > .ry-cases-press-logo { width: var(--spacing--160); }
}
@media (prefers-reduced-motion: reduce) {
  .ry-motion-root .ry-motion-reveal {
    opacity: 1 !important;
    transform: none !important;
    translate: none !important;
    transition: none !important;
  }
  .ry-motion-hero-enter { animation: none; }
  .ry-motion-press-rail { animation: none; }
  .ry-motion-press-viewport { overflow-x: auto; }
  .ry-motion-press-group[aria-hidden="true"] { display: none; }
  .ry-motion-reviews { animation: none; translate: none; overflow-x: auto; }
  .ry-motion-reviews > [aria-hidden="true"] { display: none; }
  .ry-motion-root .cta_primary .button_text-mask > .text-button,
  .ry-motion-root .cta_primary .icon-wrap_button.right { translate: none !important; transition: none; }
}
