/* Movimiento pequeño, con preferencia por transiciones breves y funcionales. */
.w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .05em; }
.w > span { display: inline-block; opacity: 0; transform: translateY(104%); transition: opacity .58s var(--ease),transform .58s var(--ease); transition-delay: calc(var(--i) * 28ms); }
[data-split].in .w > span,[data-split]:not(.rv) .w > span { opacity: 1; transform: none; }
.rv { opacity: 1; transform: none; transition: opacity .55s var(--ease),transform .55s var(--ease); transition-delay: calc(var(--i,0) * 45ms); }
.js-reveal .rv { opacity: 0; transform: translateY(12px); }
.js-reveal .rv.in { opacity: 1; transform: none; }
.preview-frame { animation: preview-arrive .85s var(--ease) .1s both; }
.home-service { transition-delay: calc(var(--i,0) * 45ms); }
@keyframes preview-arrive { from { opacity: 0; transform: translateY(14px) rotate(1deg); } to { opacity: 1; transform: rotate(1deg); } }
.quote.out { opacity: 0; transform: translateY(5px); transition: opacity .24s ease,transform .24s ease; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *,*::before,*::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
  .w > span,.rv,.js-reveal .rv { opacity: 1 !important; transform: none !important; }
  .quote.out { opacity: 1; transform: none; }
}
