/* Living materials at a reading pace. Independent properties preserve photo
   cropping and GSAP transforms. Never rotate a frame or a progress bar. */
:root { --vida-travel: 1.8px; --vida-photo-scale: 1.014; --vida-sway: .45deg; }
body[data-design-motion="subtle"] { --vida-travel: 1.1px; --vida-photo-scale: 1.009; --vida-sway: .3deg; }
body[data-design-layout="editorial"] { --vida-travel: .7px; --vida-photo-scale: 1.007; }
body[data-design-layout="nocturne"] { --vida-photo-scale: 1.018; }
@keyframes vida-respira {
  0%, 100% { scale: 1; }
  46% { scale: var(--vida-photo-scale); }
}
@keyframes vida-flota {
  0%, 100% { translate: 0 0; }
  42% { translate: 0 calc(-1 * var(--vida-travel)); }
  73% { translate: 0 calc(-.25 * var(--vida-travel)); }
}
@keyframes vida-vaiven {
  0%, 100% { rotate: 0deg; }
  34% { rotate: var(--vida-sway); }
  72% { rotate: calc(-.65 * var(--vida-sway)); }
}
@keyframes vida-brilla {
  0%, 100% { opacity: .9; }
  53% { opacity: 1; }
}
[data-vida] {
  animation-duration: var(--vida-dur, 14s);
  animation-delay: var(--vida-retardo, 0s);
  animation-iteration-count: infinite;
  animation-timing-function: cubic-bezier(.45, 0, .55, 1);
  animation-play-state: paused;
}
[data-vida="respira"] { animation-name: vida-respira; }
[data-vida="flota"] { animation-name: vida-flota; }
[data-vida="vaiven"] { animation-name: vida-vaiven; }
[data-vida="brilla"] { animation-name: vida-brilla; }
[data-vida-visible="true"] { animation-play-state: running; }
/* No permanent will-change layers on a phone. Offscreen artwork sleeps. */
body[data-catalog-motion="paused"] [data-vida],
body.lock-scroll [data-vida] { animation-play-state: paused; }
body[data-design-motion="none"] [data-vida] { animation: none !important; }
@media (max-width: 640px), (pointer: coarse) {
  body[data-design-motion], body { --vida-travel: 1px; --vida-photo-scale: 1.008; --vida-sway: .25deg; }
}
@media (prefers-reduced-motion: reduce) {
  [data-vida] { animation: none !important; }
}
@media print { [data-vida] { animation: none !important; } }
